From 758b0237b4594ac0a3bc7052d37d8383c304c805 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 20 Jul 2023 21:26:55 +0200 Subject: [PATCH] Matter latency improvement for single attribute reads and single commands (#19158) --- CHANGELOG.md | 1 + .../berry_matter/src/be_matter_module.c | 2 + .../src/embedded/Matter_Commissioning.be | 10 +- .../src/embedded/Matter_Device.be | 53 +- .../src/embedded/Matter_Expirable.be | 4 +- .../src/embedded/Matter_Fabric.be | 2 +- .../src/embedded/Matter_HTTP_remote.be | 4 +- .../berry_matter/src/embedded/Matter_IM.be | 611 +- .../src/embedded/Matter_IM_Data.be | 234 + .../src/embedded/Matter_IM_Message.be | 23 +- .../src/embedded/Matter_Message.be | 91 +- .../src/embedded/Matter_MessageHandler.be | 57 +- .../berry_matter/src/embedded/Matter_Path.be | 10 +- .../src/embedded/Matter_Plugin.be | 33 +- .../src/embedded/Matter_Plugin_Aggregator.be | 6 +- .../src/embedded/Matter_Plugin_Bridge_HTTP.be | 20 +- .../embedded/Matter_Plugin_Bridge_Light0.be | 10 +- .../embedded/Matter_Plugin_Bridge_Light1.be | 22 +- .../embedded/Matter_Plugin_Bridge_Light2.be | 22 +- .../embedded/Matter_Plugin_Bridge_Light3.be | 28 +- .../Matter_Plugin_Bridge_Sensor_Contact.be | 12 +- .../Matter_Plugin_Bridge_Sensor_Humidity.be | 16 +- ...Matter_Plugin_Bridge_Sensor_Illuminance.be | 16 +- .../Matter_Plugin_Bridge_Sensor_Occupancy.be | 16 +- .../Matter_Plugin_Bridge_Sensor_Pressure.be | 16 +- .../Matter_Plugin_Bridge_Sensor_Temp.be | 16 +- .../src/embedded/Matter_Plugin_Device.be | 36 +- .../src/embedded/Matter_Plugin_Light0.be | 10 +- .../src/embedded/Matter_Plugin_Light1.be | 18 +- .../src/embedded/Matter_Plugin_Light2.be | 18 +- .../src/embedded/Matter_Plugin_Light3.be | 24 +- .../src/embedded/Matter_Plugin_OnOff.be | 10 +- .../src/embedded/Matter_Plugin_Root.be | 92 +- .../embedded/Matter_Plugin_Sensor_Contact.be | 12 +- .../embedded/Matter_Plugin_Sensor_Humidity.be | 16 +- .../Matter_Plugin_Sensor_Illuminance.be | 16 +- .../Matter_Plugin_Sensor_Occupancy.be | 16 +- .../embedded/Matter_Plugin_Sensor_OnOff.be | 10 +- .../embedded/Matter_Plugin_Sensor_Pressure.be | 16 +- .../src/embedded/Matter_Plugin_Sensor_Temp.be | 16 +- .../src/embedded/Matter_Plugin_Shutter.be | 24 +- .../src/embedded/Matter_Plugin_ShutterTilt.be | 16 +- .../src/embedded/Matter_Profiler.be | 37 +- .../src/embedded/Matter_Session.be | 2 +- .../berry_matter/src/embedded/Matter_TLV.be | 113 +- .../src/embedded/Matter_UDPServer.be | 24 +- .../solidified_Matter_Commissioning.h | 846 +- .../src/solidify/solidified_Matter_Device.h | 8024 +++++++++-------- .../solidify/solidified_Matter_Expirable.h | 24 +- .../src/solidify/solidified_Matter_Fabric.h | 66 +- .../solidify/solidified_Matter_HTTP_remote.h | 50 +- .../src/solidify/solidified_Matter_IM.h | 3939 +++++--- .../src/solidify/solidified_Matter_IM_Data.h | 463 + .../solidify/solidified_Matter_IM_Message.h | 478 +- .../src/solidify/solidified_Matter_Message.h | 697 +- .../solidified_Matter_MessageHandler.h | 1094 +-- .../src/solidify/solidified_Matter_Path.h | 101 +- .../src/solidify/solidified_Matter_Plugin.h | 1016 ++- .../solidified_Matter_Plugin_Aggregator.h | 108 +- .../solidified_Matter_Plugin_Bridge_HTTP.h | 230 +- .../solidified_Matter_Plugin_Bridge_Light0.h | 93 +- .../solidified_Matter_Plugin_Bridge_Light1.h | 189 +- .../solidified_Matter_Plugin_Bridge_Light2.h | 193 +- .../solidified_Matter_Plugin_Bridge_Light3.h | 239 +- ...fied_Matter_Plugin_Bridge_Sensor_Contact.h | 107 +- ...ied_Matter_Plugin_Bridge_Sensor_Humidity.h | 139 +- ..._Matter_Plugin_Bridge_Sensor_Illuminance.h | 139 +- ...ed_Matter_Plugin_Bridge_Sensor_Occupancy.h | 135 +- ...ied_Matter_Plugin_Bridge_Sensor_Pressure.h | 139 +- ...idified_Matter_Plugin_Bridge_Sensor_Temp.h | 135 +- .../solidified_Matter_Plugin_Device.h | 515 +- .../solidified_Matter_Plugin_Light0.h | 93 +- .../solidified_Matter_Plugin_Light1.h | 153 +- .../solidified_Matter_Plugin_Light2.h | 159 +- .../solidified_Matter_Plugin_Light3.h | 203 +- .../solidify/solidified_Matter_Plugin_OnOff.h | 93 +- .../solidify/solidified_Matter_Plugin_Root.h | 3120 +++---- .../solidified_Matter_Plugin_Sensor_Contact.h | 107 +- ...solidified_Matter_Plugin_Sensor_Humidity.h | 139 +- ...idified_Matter_Plugin_Sensor_Illuminance.h | 139 +- ...olidified_Matter_Plugin_Sensor_Occupancy.h | 135 +- .../solidified_Matter_Plugin_Sensor_OnOff.h | 93 +- ...solidified_Matter_Plugin_Sensor_Pressure.h | 139 +- .../solidified_Matter_Plugin_Sensor_Temp.h | 135 +- .../solidified_Matter_Plugin_Shutter.h | 285 +- .../solidified_Matter_Plugin_ShutterTilt.h | 223 +- .../src/solidify/solidified_Matter_Profiler.h | 307 +- .../src/solidify/solidified_Matter_Session.h | 12 +- .../src/solidify/solidified_Matter_TLV.h | 3309 +++---- .../solidify/solidified_Matter_UDPServer.h | 927 +- .../berry_tasmota/src/be_crypto_lib.c | 2 + .../xdrv_52_3_berry_crypto.ino | 20 +- 92 files changed, 16935 insertions(+), 13878 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9bed866bfd60..d159e8be47fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ All notable changes to this project will be documented in this file. - Configuration backup and restore now backup and restore ``.xdrvsetXXX`` files too (#18295) - Berry extend `range(lower, upper, incr)` to arbitrary increment - Berry updated syntax highlighting plugin for VSCode +- Matter latency improvement for single attribute reads and single commands ### Fixed diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index 92374140b484..9c28d4014e65 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -338,6 +338,7 @@ module matter (scope: global, strings: weak) { StatusIB, class(be_class_Matter_StatusIB) StatusResponseMessage, class(be_class_Matter_StatusResponseMessage) ReadRequestMessage, class(be_class_Matter_ReadRequestMessage) + ReadRequestMessage_solo, class(be_class_Matter_ReadRequestMessage_solo) ReportDataMessage, class(be_class_Matter_ReportDataMessage) SubscribeRequestMessage, class(be_class_Matter_SubscribeRequestMessage) SubscribeResponseMessage, class(be_class_Matter_SubscribeResponseMessage) @@ -345,6 +346,7 @@ module matter (scope: global, strings: weak) { WriteResponseMessage, class(be_class_Matter_WriteResponseMessage) TimedRequestMessage, class(be_class_Matter_TimedRequestMessage) InvokeRequestMessage, class(be_class_Matter_InvokeRequestMessage) + InvokeRequestMessage_solo, class(be_class_Matter_InvokeRequestMessage_solo) InvokeResponseMessage, class(be_class_Matter_InvokeResponseMessage) // Matter Commisioning messages diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be index 3202ce0e1779..0ccc062c3f94 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be @@ -235,7 +235,7 @@ class Matter_Commisioning_Context var raw = resp.encode_frame(pake2_raw) # log the fact that a new commissioning is starting - tasmota.log(format("MTR: New Commissioning (PASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port)) + tasmota.log(format("MTR: New Commissioning (PASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2) self.responder.send_response_frame(resp) return true @@ -265,7 +265,7 @@ class Matter_Commisioning_Context end # send PakeFinished and compute session key - var created = tasmota.rtc()['utc'] + var created = tasmota.rtc_utc() var session_keys = crypto.HKDF_SHA256().derive(session.__spake_Ke, bytes(), bytes().fromstring(self.SEKeys_Info), 48) var I2RKey = session_keys[0..15] var R2IKey = session_keys[16..31] @@ -406,7 +406,7 @@ class Matter_Commisioning_Context var i2r = session_keys[0..15] var r2i = session_keys[16..31] var ac = session_keys[32..47] - var created = tasmota.rtc()['utc'] + var created = tasmota.rtc_utc() # tasmota.log("MTR: ******************************", 4) # tasmota.log("MTR: I2RKey =" + i2r.tohex(), 4) @@ -538,7 +538,7 @@ class Matter_Commisioning_Context var raw = resp.encode_frame(sigma2_raw) # log the fact that a new connection is starting - tasmota.log(format("MTR: New Connection (CASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port)) + tasmota.log(format("MTR: New Connection (CASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2) self.responder.send_response_frame(resp) return true @@ -658,7 +658,7 @@ class Matter_Commisioning_Context var i2r = session_keys[0..15] var r2i = session_keys[16..31] var ac = session_keys[32..47] - var created = tasmota.rtc()['utc'] + var created = tasmota.rtc_utc() # tasmota.log("MTR: ******************************", 4) # tasmota.log("MTR: I2RKey =" + i2r.tohex(), 4) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be index 4a9664c46dd8..1a157549018e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be @@ -81,7 +81,7 @@ class Matter_Device return end # abort if SetOption 151 is not set - self.profiler = matter.Profiler() + matter.profiler = matter.Profiler() self.started = false self.tick = 0 self.plugins = [] @@ -514,18 +514,15 @@ class Matter_Device end var endpoint = ctx.endpoint - # var endpoint_mono = [ endpoint ] - var endpoint_found = false # did any endpoint match var cluster = ctx.cluster - # var cluster_mono = [ cluster ] - var cluster_found = false var attribute = ctx.attribute - # var attribute_mono = [ attribute ] + var endpoint_found = false # did any endpoint match + var cluster_found = false var attribute_found = false var direct = (ctx.endpoint != nil) && (ctx.cluster != nil) && (ctx.attribute != nil) # true if the target is a precise attribute, false if it results from an expansion and error are ignored - # tasmota.log(format("MTR: process_attribute_expansion %s", str(ctx)), 4) + # tasmota.log(f"MTR: process_attribute_expansion {str(ctx))}", 4) # build the list of candidates @@ -541,7 +538,7 @@ class Matter_Device endpoint_found = true # now explore the cluster list for 'ep' - var cluster_list = pi.get_cluster_list(ep) # cluster_list is the actual list of candidate cluster for this pluging and endpoint + var cluster_list = pi.get_cluster_list() # cluster_list is the actual list of candidate cluster for this pluging and endpoint # tasmota.log(format("MTR: pi=%s ep=%s cl_list=%s", str(pi), str(ep), str(cluster_list)), 4) for cl: cluster_list if cluster != nil && cl != cluster continue end # skip if specific cluster and no match @@ -550,7 +547,7 @@ class Matter_Device cluster_found = true # now filter on attributes - var attr_list = pi.get_attribute_list(ep, cl) + var attr_list = pi.get_attribute_list(cl) # tasmota.log(format("MTR: pi=%s ep=%s cl=%s at_list=%s", str(pi), str(ep), str(cl), str(attr_list)), 4) for at: attr_list if attribute != nil && at != attribute continue end # skip if specific attribute and no match @@ -595,6 +592,44 @@ class Matter_Device end end + ############################################################# + # Optimized version for a single endpoint/cluster/attribute + # + # Retrieve the plugin for a read + def process_attribute_read_solo(ctx) + var endpoint = ctx.endpoint + # var endpoint_found = false # did any endpoint match + var cluster = ctx.cluster + # var cluster_found = false + var attribute = ctx.attribute + # var attribute_found = false + + # all 3 elements must be non-nil + if endpoint == nil || cluster == nil || attribute == nil return nil end + + # look for plugin + var pi = self.find_plugin_by_endpoint(endpoint) + if pi == nil # endpoint not found + ctx.status = matter.UNSUPPORTED_ENDPOINT + return nil + end + + # check cluster + if !pi.contains_cluster(cluster) + ctx.status = matter.UNSUPPORTED_CLUSTER + return nil + end + + # attribute list + if !pi.contains_attribute(cluster, attribute) + ctx.status = matter.UNSUPPORTED_ATTRIBUTE + return nil + end + + # all good + return pi + end + ############################################################# # Return the list of endpoints from all plugins (distinct), exclud endpoint zero if `exclude_zero` is `true` def get_active_endpoints(exclude_zero) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Expirable.be b/lib/libesp32/berry_matter/src/embedded/Matter_Expirable.be index 391476982bc2..83da9d5d42bc 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Expirable.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Expirable.be @@ -96,7 +96,7 @@ class Matter_Expirable # set relative time in the future for expiration (in seconds) def set_expire_in_seconds(s, now) if s == nil return end - if now == nil now = tasmota.rtc()['utc'] end + if now == nil now = tasmota.rtc_utc() end self.set_expire_time(now + s) end @@ -104,7 +104,7 @@ class Matter_Expirable # set relative time in the future for expiration (in seconds) # returns `true` if expiration date has been reached def has_expired(now) - if now == nil now = tasmota.rtc()['utc'] end + if now == nil now = tasmota.rtc_utc() end if self._expiration != nil return now >= self._expiration end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be b/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be index fb149ff45f69..2681197f2402 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be @@ -75,7 +75,7 @@ class Matter_Fabric : Matter_Expirable self._store = store self._sessions = matter.Expirable_list() self.fabric_label = "" - self.created = tasmota.rtc()['utc'] + self.created = tasmota.rtc_utc() # init group counters self._counter_group_data_snd_impl = matter.Counter() self._counter_group_ctrl_snd_impl = matter.Counter() diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be b/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be index f56f5528ff26..b466dc83d2b2 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be @@ -189,7 +189,7 @@ class Matter_HTTP_remote : Matter_HTTP_async if alive # device is known to be reachable self.reachable = true - self.reachable_utc = tasmota.rtc()['utc'] + self.reachable_utc = tasmota.rtc_utc() else self.reachable = false end @@ -344,7 +344,7 @@ class Matter_HTTP_remote : Matter_HTTP_async var seconds = -1 # default if no known value if self.reachable_utc != nil - seconds = tasmota.rtc()['utc'] - self.reachable_utc + seconds = tasmota.rtc_utc() - self.reachable_utc end return matter.seconds_to_dhm(seconds) end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index 399f77c055bf..1f60e6b511ff 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -28,30 +28,53 @@ class Matter_IM var device var subs_shop # subscriptions shop - var send_queue # list of IM_Message queued for sending as part of exchange-id + var send_queue # list of IM_Message queued for sending as part of exchange-id + var read_request_solo # instance of ReadRequestMessage_solo to optimize single reads + var invoke_request_solo # instance of InvokeRequestMessage_solo to optimize single reads + var tlv_solo # instance of Matter_TLV_item for simple responses + def init(device) self.device = device self.send_queue = [] self.subs_shop = matter.IM_Subscription_Shop(self) + self.read_request_solo = matter.ReadRequestMessage_solo() + self.invoke_request_solo = matter.InvokeRequestMessage_solo() + self.tlv_solo = matter.TLV.Matter_TLV_item() end def process_incoming(msg) - # messages are always TLV, decode payload - # tasmota.log("MTR: received IM message " + matter.inspect(msg), 3) + var opcode = msg.opcode + + # Fast-Track processing + # first pass is optimized for simple frequent messages and avoids complete decoding of TLV + if opcode == 0x02 # Read Request + var read_request_solo = self.read_request_solo.from_raw(msg.raw, msg.app_payload_idx) + if read_request_solo != nil + # tasmota.log(f"MTR: process_incoming {read_request_solo=}") + return self.process_read_request_solo(msg, read_request_solo) + end + elif opcode == 0x08 # Invoke Request + var invoke_request_solo = self.invoke_request_solo.from_raw(msg.raw, msg.app_payload_idx) + # tasmota.log(f"MTR: {invoke_request_solo=} {msg.raw[msg.app_payload_idx .. ].tohex()} {msg.app_payload_idx=} {msg.raw.tohex()}") + if invoke_request_solo != nil + return self.process_invoke_request_solo(msg, invoke_request_solo) + end + end + + # tasmota.log("MTR: received IM message " + matter.inspect(msg), 3) var val = matter.TLV.parse(msg.raw, msg.app_payload_idx) # tasmota.log("MTR: IM TLV: " + str(val), 3) - var InteractionModelRevision = val.findsubval(0xFF) + # var InteractionModelRevision = val.findsubval(0xFF) # tasmota.log("MTR: InteractionModelRevision=" + (InteractionModelRevision != nil ? str(InteractionModelRevision) : "nil"), 4) - var opcode = msg.opcode if opcode == 0x01 # Status Response return self.process_status_response(msg, val) elif opcode == 0x02 # Read Request - self.send_ack_now(msg) + # self.send_ack_now(msg) # to improve latency, we don't automatically Ack on invoke request return self.process_read_request(msg, val) elif opcode == 0x03 # Subscribe Request self.send_ack_now(msg) @@ -216,48 +239,30 @@ class Matter_IM var TLV = matter.TLV var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) attr_name = attr_name ? " (" + attr_name + ")" : "" + # Special case to report unsupported item, if pi==nil - var res = (pi != nil) ? pi.read_attribute(session, ctx) : nil + var res = (pi != nil) ? pi.read_attribute(session, ctx, self.tlv_solo) : nil var found = true # stop expansion since we have a value var a1_raw # this is the bytes() block we need to add to response (or nil) if res != nil - var res_str = str(res) # get the value with anonymous tag before it is tagged, for logging - - var a1 = matter.AttributeReportIB() - a1.attribute_data = matter.AttributeDataIB() - a1.attribute_data.data_version = 1 - a1.attribute_data.path = matter.AttributePathIB() - a1.attribute_data.path.endpoint = ctx.endpoint - a1.attribute_data.path.cluster = ctx.cluster - a1.attribute_data.path.attribute = ctx.attribute - a1.attribute_data.data = res - - var a1_tlv = a1.to_TLV() - var a1_len = a1_tlv.encode_len() - var a1_bytes = bytes(a1_len) # pre-size bytes() to the actual size - a1_raw = a1_tlv.tlv2raw(a1_bytes) - # tasmota.log(format("MTR: guessed len=%i actual=%i '%s'", a1_len, size(a1_raw), a1_raw.tohex()), 2) + var res_str = res.to_str_val() # get the value with anonymous tag before it is tagged, for logging + + # encode directly raw bytes() + a1_raw = bytes(48) # pre-reserve 48 bytes + self.attributedata2raw(a1_raw, ctx, res) if !no_log tasmota.log(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 - var a1 = matter.AttributeReportIB() - a1.attribute_status = matter.AttributeStatusIB() - a1.attribute_status.path = matter.AttributePathIB() - a1.attribute_status.status = matter.StatusIB() - a1.attribute_status.path.endpoint = ctx.endpoint - a1.attribute_status.path.cluster = ctx.cluster - a1.attribute_status.path.attribute = ctx.attribute - a1.attribute_status.status.status = ctx.status - - var a1_tlv = a1.to_TLV() - var a1_len = a1_tlv.encode_len() - var a1_bytes = bytes(a1_len) # pre-size bytes() to the actual size - a1_raw = a1_tlv.tlv2raw(a1_bytes) - - tasmota.log(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) + # encode directly raw bytes() + a1_raw = bytes(48) # pre-reserve 48 bytes + self.attributestatus2raw(a1_raw, ctx, ctx.status) + + if tasmota.loglevel(3) + tasmota.log(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 end else tasmota.log(format("MTR: >Read_Attr (%6i) %s%s - IGNORED", session.local_session_id, str(ctx), attr_name), 3) @@ -323,6 +328,280 @@ class Matter_IM return ret end + ############################################################# + # path2raw + # + # Encodes endpoint/cluster/attribute as `AttributePathIB` elements + # Takes sub-tag + # + # 1 = AttributePathIB + # 0 = EnableTagCompression bool opt + # 1 = Node + # 2 = Endpoint + # 3 = Cluste + # 4 = Attribute + # 5 = ListIndex (opt) + # + # 3701 1 = LIST + # 2402 01 2 = 1U (U1) + # 2403 39 3 = 0x39U (U1) + # 2404 11 4 = 0x11U (U1) + # 18 + def path2raw(raw, ctx, sub_tag) + # open struct + raw.add(0x37, 1) # add 37 + raw.add(sub_tag, 1) # add sub_tag + # add endpoint + if ctx.endpoint <= 0xFF # endpoint is 16 bits max + raw.add(0x2402, -2) # add 2402 + raw.add(ctx.endpoint, 1) + else + raw.add(0x2502, -2) # add 2502 + raw.add(ctx.endpoint, 2) + end + # add cluster + if ctx.cluster <= 0xFF # cluster is 32 bits max + raw.add(0x2403, -2) # add 2403 + raw.add(ctx.cluster, 1) + elif ctx.cluster <= 0xFFFF + raw.add(0x2503, -2) # add 2503 + raw.add(ctx.cluster, 2) + else + raw.add(0x2603, -2) # add 2603 + raw.add(ctx.cluster, 4) + end + # add attribute + if ctx.attribute <= 0xFF # cluster is 32 bits max + raw.add(0x2404, -2) # add 2404 + raw.add(ctx.attribute, 1) + elif ctx.attribute <= 0xFFFF + raw.add(0x2504, -2) # add 2504 + raw.add(ctx.attribute, 2) + else + raw.add(0x2604, -2) # add 2604 + raw.add(ctx.attribute, 4) + end + raw.add(0x18, 1) # add 18 + end + + ############################################################# + # attributedata2raw + # + # generate a raw version of AttributeDataIB + # + # Typical answer + # + # AttributeReportIB + # 0 = AttributeStatusIB + # 1 = AttributeDataIB + # 0 = DataVersion U1 + # 1 = AttributePathIB + # 0 = EnableTagCompression bool opt + # 1 = Node + # 2 = Endpoint + # 3 = Cluste + # 4 = Attribute + # 5 = ListIndex (opt) + # 2 = Data + # + # 153601.15350124000137012402012403392404111829021818.1824FF0118 + # 15350124000137012402012403392404111829021818 + # 1535012400013701 + # 240201240339240411 + # 1829021818 + # + # 15 + # 3501 1 = {} + # 2400 01 0 = 1U (U1) + # 3701 1 = LIST + # 2402 01 2 = 1U (U1) + # 2403 39 3 = 0x39U (U1) + # 2404 11 4 = 0x11U (U1) + # 18 + # 2902 2 = True + # 18 + # 18 + def attributedata2raw(raw, ctx, val) + raw.add(0x15350124, -4) # add 15350124 + raw.add(0x0001, -2) # add 0001 + + self.path2raw(raw, ctx, 0x01) + + # add value with tag 2 + val.tag_sub = 2 + val.tlv2raw(raw) + # close 2 structs + raw.add(0x1818, -2) + end + + ############################################################# + # attributedata2raw + # + # generate a raw version of AttributeStatusIB + # + # + # Typical answer + # + # AttributeReportIB + # 0 = AttributeStatusIB + # 0 = AttributePathIB + # 0 = EnableTagCompression bool opt + # 1 = Node + # 2 = Endpoint + # 3 = Cluste + # 4 = Attribute + # 5 = ListIndex (opt) + # 1 = StatusIB + # 0 = Status (u1) + # 1 = ClusterStatus (u1) + # 1 = AttributeDataIB + # + # 15360115350037002402012403022404031835012400041818181824FF0118 + # 153601 1535003700 - 2402012403022404031835012400041818181824FF0118 + # + # 15 + # 3601 + # + # 15 + # 3500 0 = struct + # 3700 0 = list + # 240201 2 = 1U endpoint + # 240302 3 = 2U cluster + # 240403 4 = 3U attribute + # 18 + # 3501 1 = struct + # 240004 0 = 4U status + # 18 + # 18 + # 18 + # + # 18 + # 24FF01 + # 18 + def attributestatus2raw(raw, ctx, status) + raw.add(0x15, 1) # add 15 + raw.add(0x3500, -2) # add 3500 + + self.path2raw(raw, ctx, 0x00) + + raw.add(0x3501, -2) # add 3501 for status + # status + if ctx.status <= 255 + raw.add(0x2400, -2) # add 2400 + raw.add(ctx.status, 1) + else + raw.add(0x2500, -2) # add 2500 + raw.add(ctx.status, 2) + end + # close + raw.add(0x1818, -2) # add 1818 + raw.add(0x18, 1) # add 18 + end + + ############################################################# + # attributedata2raw + # + # generate a raw version of InvokeResponseIB() + # Typical answer + # + # 1535013700240011240122240244183501240000181818 + # + # 0 = CommandDataIB + # 0 = CommandPathIB + # 0 = endpoint u2 + # 1 = cluster u4 + # 2 = command u4 + # 1 = + # 1 = CommandStatusIB + # 0 = CommandPathIB + # 0 = endpoint u2 + # 1 = cluster u4 + # 2 = command u4 + # 1 = StatusIB + # 0 = status u1 + # 1 = ClusterStatus u1 + # + # 1535013700240011240122240244183501240000181818 + # 15 + # 3501 1 = struct + # 3700 0 = list + # 240011 0 = endpoint + # 240122 1 = cluster + # 240244 2 = command + # 18 + # 3501 1 = struct + # 240000 0 = 0 (status) + # 18 + # 18 + # 18 + # + # 1535003700240011240122240244182401031818 + # 15 + # 3500 0 = struct + # 3700 0 = list + # 240011 0 = endpoint + # 240122 1 = cluster + # 240244 2 = command + # 18 + # 240103 1 = + # 18 + # 18 + def invokeresponse2raw(raw, ctx, val) + raw.add(0x15, 1) # add 15 + if val == nil + raw.add(0x3501, -2) # add 3500 + else + raw.add(0x3500, -2) # add 3500 + end + raw.add(0x3700, -2) # add 3700 + # add endpoint + if ctx.endpoint <= 0xFF # endpoint is 16 bits max + raw.add(0x2400, -2) # add 2400 + raw.add(ctx.endpoint, 1) + else + raw.add(0x2500, -2) # add 2500 + raw.add(ctx.endpoint, 2) + end + # add cluster + if ctx.cluster <= 0xFF # cluster is 32 bits max + raw.add(0x2401, -2) # add 2401 + raw.add(ctx.cluster, 1) + elif ctx.cluster <= 0xFFFF + raw.add(0x2501, -2) # add 2501 + raw.add(ctx.cluster, 2) + else + raw.add(0x2601, -2) # add 2601 + raw.add(ctx.cluster, 4) + end + # add attribute + if ctx.command <= 0xFF # cluster is 32 bits max + raw.add(0x2402, -2) # add 2402 + raw.add(ctx.command, 1) + elif ctx.command <= 0xFFFF + raw.add(0x2502, -2) # add 2502 + raw.add(ctx.command, 2) + else + raw.add(0x2602, -2) # add 2602 + raw.add(ctx.command, 4) + end + raw.add(0x18, 1) # add 18 + + # either value or statuc + if val == nil + var status = ctx.status + if status == nil status = matter.SUCCESS end + raw.add(0x3501, -2) # add 3501 + raw.add(0x2400, -2) # add 2400 + raw.add(ctx.status, 1) # add status:1 + raw.add(0x18, 1) # add 18 + else + val.tag_sub = 1 # set sub_tag for reponse + val.tlv2raw(raw) + end + # close + raw.add(0x1818, -2) # add 1818 + end + ############################################################# # process IM 0x02 Read Request # @@ -330,8 +609,10 @@ class Matter_IM # returns `true` if processed, `false` if silently ignored, # or raises an exception def process_read_request(msg, val) - self.device.profiler.log("read_request_start") + matter.profiler.log("read_request_start") + # matter.profiler.log(str(val)) var query = matter.ReadRequestMessage().from_TLV(val) + # matter.profiler.log(str(query)) if query.attributes_requests != nil var ret = self._inner_process_read_request(msg.session, query) self.send_report_data(msg, ret) @@ -340,6 +621,133 @@ class Matter_IM return true end + ############################################################# + # process IM 0x02 Read Request + # + # val is the TLV structure + # returns `true` if processed, `false` if silently ignored, + # or raises an exception + def process_read_request_solo(msg, ctx) + # matter.profiler.log("read_request_solo start") + # matter.profiler.log(str(val)) + # var query = matter.ReadRequestMessage().from_TLV(val) + # matter.profiler.log("read_request_start-TLV") + + # prepare fallback error + ctx.status = matter.INVALID_ACTION + + # TODO + # find pi for this endpoint/cluster/attribute + var pi = self.device.process_attribute_read_solo(ctx) + var res = nil + # matter.profiler.log("read_request_solo pi ok") + # tasmota.log(f"MTR: process_read_request_solo {pi=}") + + var raw # this is the bytes() block we need to add to response (or nil) + if pi != nil + ctx.status = matter.UNSUPPORTED_ATTRIBUTE # new fallback error + res = pi.read_attribute(msg.session, ctx, self.tlv_solo) + end + matter.profiler.log("read_request_solo read done") + + if res != nil + + # encode directly raw bytes() + raw = bytes(48) # pre-reserve 48 bytes + + raw.add(0x15, 1) # add 15 + raw.add(0x3601, -2) # add 3601 + + self.attributedata2raw(raw, ctx, res) + + # add suffix 1824FF0118 + raw.add(0x1824FF01, -4) # add 1824FF01 + raw.add(0x18, 1) # add 18 + + # matter.profiler.log("read_request_solo raw done") + + elif ctx.status != nil + + # encode directly raw bytes() + raw = bytes(48) # pre-reserve 48 bytes + + raw.add(0x15, 1) # add 15 + raw.add(0x3601, -2) # add 3601 + + self.attributestatus2raw(raw, ctx, ctx.status) + + # add suffix 1824FF0118 + raw.add(0x1824FF01, -4) # add 1824FF01 + raw.add(0x18, 1) # add 18 + + else + tasmota.log(f"MTR: >Read_Attr ({msg.session.local_session_id:6i}) {ctx} - IGNORED", 3) + return false + end + + # matter.profiler.log("read_request_solo res ready") + # tasmota.log(f"MTR: process_read_request_solo {raw=}") + + # send packet + # self.send_report_data_solo(msg, ret) + # var report_solo = matter.IM_ReportData_solo(msg, ret) + var resp = msg.build_response(0x05 #-Report Data-#, true) + + # super(self).reset(msg, 0x05 #-Report Data-#, true) + # matter.profiler.log("read_request_solo report_solo") + + # send_im() + # report_solo.send_im(self.device.message_handler) + var responder = self.device.message_handler + # matter.profiler.log("read_request_solo send_im-1") + # if tasmota.loglevel(3) # TODO remove before flight + # tasmota.log(f">>>: data_raw={raw.tohex()}", 3) + # end + # matter.profiler.log("read_request_solo send_im-2") + var msg_raw = msg.raw + msg_raw.clear() + resp.encode_frame(raw, msg_raw) # payload in cleartext + # matter.profiler.log("read_request_solo send_im-3") + resp.encrypt() + # matter.profiler.log("read_request_solo send_im-encrypted") + if tasmota.loglevel(4) + tasmota.log(format("MTR: Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3) + end + # if matter.profiler.active && tasmota.loglevel(3) + # tasmota.log(f"MTR: {raw=}", 3) # TODO remove before flight + # end + elif ctx.status != nil + var unsupported_attribute = (ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : "") + if tasmota.loglevel(3) + tasmota.log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - STATUS: 0x{ctx.status:02X} {unsupported_attribute}", 3) + end + # if matter.profiler.active && tasmota.loglevel(3) + # tasmota.log(f"MTR: {raw=}", 3) # TODO remove before flight + # end + else + if tasmota.loglevel(3) + tasmota.log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - IGNORED", 3) + end + end + + # matter.profiler.log("read_request_solo end") + return true + end + ############################################################# # process IM 0x03 Subscribe Request # @@ -384,7 +792,7 @@ class Matter_IM # import debug # structure is `ReadRequestMessage` 10.6.2 p.558 # tasmota.log("MTR: IM:invoke_request processing start", 4) - self.device.profiler.log("invoke_request_start") + matter.profiler.log("invoke_request_start") var ctx = matter.Path() ctx.msg = msg @@ -404,44 +812,39 @@ class Matter_IM var cmd_name = matter.get_command_name(ctx.cluster, ctx.command) 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) + matter.profiler.log("COMMAND DONE") var params_log = (ctx.log != nil) ? "(" + str(ctx.log) + ") " : "" tasmota.log(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 -# ) # tasmota.log("MTR: Perf/Command = " + str(debug.counters()), 4) ctx.log = nil - var a1 = matter.InvokeResponseIB() + var raw = bytes(32) + # var a1 = matter.InvokeResponseIB() if res == true || ctx.status == matter.SUCCESS # special case, just respond ok - a1.status = matter.CommandStatusIB() - a1.status.command_path = matter.CommandPathIB() - a1.status.command_path.endpoint = ctx.endpoint - a1.status.command_path.cluster = ctx.cluster - a1.status.command_path.command = ctx.command - a1.status.status = matter.StatusIB() - a1.status.status.status = matter.SUCCESS - ret.invoke_responses.push(a1) - tasmota.log(format("MTR: Command1 (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), cmd_log_level) + end + # tasmota.log("MTR: Perf/Command = " + str(debug.counters()), 4) + ctx.log = nil + var raw = bytes(48) + + # prefix 1528003601 + raw.add(0x15280036, -4) # add 15280036 + raw.add(0x01, 1) # add 01 + if res == true || ctx.status == matter.SUCCESS # special case, just respond ok + ctx.status = matter.SUCCESS + self.invokeresponse2raw(raw, ctx, nil) + + if tasmota.loglevel(3) + tasmota.log(f"MTR: Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 3) + if tasmota.loglevel(3) + tasmota.log(format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 3) + end return super(self).status_ok_received(msg) end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be index d0c4e00667c3..70ff59835460 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be @@ -171,8 +171,12 @@ class Matter_Frame # # Header is built from attributes # `payload` is a bytes() buffer for the app payload - def encode_frame(payload) - var raw = bytes() + # + # you can pass a `raw` bytes() object to be used + def encode_frame(payload, raw) + if raw == nil + raw = bytes(16 + (payload ? size(payload) : 0)) + end # compute flags if self.flags == nil self.flags = 0x00 @@ -220,7 +224,7 @@ class Matter_Frame raw .. payload end - self.debug(raw) + # self.debug(raw) self.raw = raw return raw end @@ -343,11 +347,15 @@ class Matter_Frame ############################################################# # decrypt with I2S key # return cleartext or `nil` if failed + # + # frame.raw is decrypted in-place and the MIC is removed + # returns true if successful def decrypt() import crypto var session = self.session var raw = self.raw - var mic = raw[-16..] # take last 16 bytes as signature + var payload_idx = self.payload_idx + var tag_len = 16 # decrypt the message with `i2r` key var i2r = session.get_i2r() @@ -357,6 +365,7 @@ class Matter_Frame # compute privacy key, p.71 tasmota.log("MTR: >>>>>>>>>>>>>>>>>>>> Compute Privacy TODO", 2) var k = session.get_i2r_privacy() + var mic = raw[-16..] # take last 16 bytes as signature var n = bytes().add(self.local_session_id, -2) + mic[5..15] # session in Big Endian var m = self.raw[4 .. self.payload_idx-1] var m_clear = crypto.AES_CTR(k).decrypt(m, n, 2) @@ -364,11 +373,9 @@ class Matter_Frame self.raw = self.raw[0..3] + m_clear + m[self.payload_idx .. ] end - # use AES_CCM - var a = raw[0 .. self.payload_idx - 1] - var p = raw[self.payload_idx .. -17] # recompute nonce - var n = bytes() + var n = self.message_handler._n_bytes # use cached bytes() object to avoid allocation + n.clear() n.add(self.flags, 1) n.add(self.message_counter, 4) if self.source_node_id @@ -381,28 +388,26 @@ class Matter_Frame end # tasmota.log("MTR: ******************************", 4) + # tasmota.log("MTR: raw =" + raw.tohex(), 4) # tasmota.log("MTR: i2r =" + i2r.tohex(), 4) - # tasmota.log("MTR: p =" + p.tohex(), 4) - # tasmota.log("MTR: a =" + a.tohex(), 4) + # tasmota.log("MTR: p =" + raw[payload_idx .. -17].tohex(), 4) + # tasmota.log("MTR: a =" + raw[0 .. payload_idx - 1].tohex(), 4) # tasmota.log("MTR: n =" + n.tohex(), 4) - # tasmota.log("MTR: mic =" + mic.tohex(), 4) + # tasmota.log("MTR: mic =" + raw[-16..].tohex(), 4) # decrypt - var aes = crypto.AES_CCM(i2r, n, a, size(p), 16) - var cleartext = aes.decrypt(p) - var tag = aes.tag() - - # tasmota.log("MTR: ******************************", 4) - # tasmota.log("MTR: cleartext =" + cleartext.tohex(), 4) - # tasmota.log("MTR: tag =" + tag.tohex(), 4) - # tasmota.log("MTR: ******************************", 4) - - if tag != mic + var ret = crypto.AES_CCM.decrypt1(i2r, # secret key + n, 0, size(n), # nonce / IV + raw, 0, payload_idx, # aad + raw, payload_idx, size(raw) - payload_idx - tag_len, # encrypted - decrypted in-place + raw, size(raw) - tag_len, tag_len) # MIC + if ret + # succcess + raw.resize(size(raw) - tag_len) # remove MIC + else tasmota.log("MTR: rejected packet due to invalid MIC", 3) - return nil end - - return cleartext + return ret end ############################################################# @@ -413,15 +418,15 @@ class Matter_Frame import crypto var raw = self.raw var session = self.session + var payload_idx = self.payload_idx + var tag_len = 16 # encrypt the message with `i2r` key var r2i = session.get_r2i() - # use AES_CCM - var a = raw[0 .. self.payload_idx - 1] - var p = raw[self.payload_idx .. ] # recompute nonce - var n = bytes() + var n = self.message_handler._n_bytes # use cached bytes() object to avoid allocation + n.clear() n.add(self.flags, 1) n.add(self.message_counter, 4) if session.is_CASE() && session.get_device_id() @@ -429,30 +434,14 @@ class Matter_Frame end n.resize(13) # add zeros - # tasmota.log("MTR: cleartext: " + self.raw.tohex(), 4) - - # tasmota.log("MTR: ******************************", 4) - # tasmota.log("MTR: r2i =" + r2i.tohex(), 4) - # tasmota.log("MTR: p =" + p.tohex(), 4) - # tasmota.log("MTR: a =" + a.tohex(), 4) - # tasmota.log("MTR: n =" + n.tohex(), 4) - - # decrypt - var aes = crypto.AES_CCM(r2i, n, a, size(p), 16) - var ciphertext = aes.encrypt(p) - var tag = aes.tag() - - # tasmota.log("MTR: ******************************", 4) - # tasmota.log("MTR: ciphertext =" + ciphertext.tohex(), 4) - # tasmota.log("MTR: tag =" + tag.tohex(), 4) - # tasmota.log("MTR: ******************************", 4) - - # packet is good, put back content in raw - self.raw.resize(self.payload_idx) # remove cleartext payload - self.raw .. ciphertext # add ciphertext - self.raw .. tag # add MIC + # encrypt + raw.resize(size(raw) + tag_len) # make room for MIC + var ret = crypto.AES_CCM.encrypt1(r2i, # secret key + n, 0, size(n), # nonce / IV + raw, 0, payload_idx, # aad + raw, payload_idx, size(raw) - payload_idx - tag_len, # encrypted - decrypted in-place + raw, size(raw) - tag_len, tag_len) # MIC - # tasmota.log("MTR: encrypted: " + self.raw.tohex(), 4) end ############################################################# diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be index 6f64a86713c9..63336e4f75f4 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be @@ -30,12 +30,16 @@ class Matter_MessageHandler var im # Instance of `matter.IM` handling Interaction Model var control_message # Instance of `matter.Control_Message` for MCSP + # cache for decryption bytes + var _n_bytes # size 16 minimal, used by frame_buffer for decryption + ############################################################# def init(device) self.device = device self.commissioning = matter.Commisioning_Context(self) self.im = matter.IM(device) self.control_message = matter.Control_Message(self) + self._n_bytes = bytes(16) end ############################################################# @@ -47,7 +51,9 @@ 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(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) + if tasmota.loglevel(3) + tasmota.log(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) + end else - tasmota.log(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) + if tasmota.loglevel(4) + tasmota.log(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 end ret = self.commissioning.process_incoming(frame) # if ret is false, the implicit Ack was not sent @@ -124,14 +139,19 @@ class Matter_MessageHandler else ############################################################# # encrypted message - tasmota.log(format("MTR: decode header: local_session_id=%i message_counter=%i", frame.local_session_id, frame.message_counter), 4) + # matter.profiler.log("msg_received_header_encrypted_message_received") + if tasmota.loglevel(4) + tasmota.log(format("MTR: decode header: local_session_id=%i message_counter=%i", frame.local_session_id, frame.message_counter), 4) + end var session = self.device.sessions.get_session_by_local_session_id(frame.local_session_id) + # matter.profiler.log("msg_received_header_session_retrieved") if session == nil tasmota.log("MTR: unknown local_session_id="+str(frame.local_session_id), 3) # tasmota.log("MTR: frame="+matter.inspect(frame), 3) return false end + # matter.profiler.log("msg_received_session_found") if addr session._ip = addr end if port session._port = port end session._message_handler = self @@ -139,22 +159,26 @@ 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) + if tasmota.loglevel(3) + tasmota.log("MTR: . Duplicate encrypted message = " + str(frame.message_counter) + " counter=" + str(session.counter_rcv), 3) + end self.send_encrypted_ack(frame, false #-not reliable-#) return false end - var cleartext = frame.decrypt() - if !cleartext return false end + var decrypt_ok = frame.decrypt() + matter.profiler.log("msg_received_header_frame_decrypted") + if !decrypt_ok return false end - # packet is good, put back content in raw - frame.raw = frame.raw[0 .. frame.payload_idx - 1] # remove encrypted payload - frame.raw .. cleartext # add cleartext + # matter.profiler.log("msg_received_payload_undecoded") # continue decoding # tasmota.log(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), 4) + # matter.profiler.log("msg_received_payload_decoded") + if tasmota.loglevel(4) + tasmota.log("MTR: > Decrypted message: protocol_id:"+str(frame.protocol_id)+" opcode="+str(frame.opcode)+" exchange_id="+str(frame.exchange_id & 0xFFFF), 4) + end # tasmota.log(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) @@ -174,8 +198,9 @@ class Matter_MessageHandler ret = true elif protocol_id == 0x0001 # PROTOCOL_ID_INTERACTION_MODEL # dispatch to IM Protocol Messages + matter.profiler.log("process_IM_start") ret = self.im.process_incoming(frame) - self.device.profiler.log("process_IM_end") + matter.profiler.log("process_IM_end") # if `ret` is true, we have something to send if ret self.im.send_enqueued(self) @@ -222,7 +247,7 @@ class Matter_MessageHandler # msg.exchange_id: exchange id (int) # msg.local_session_id: local session (for logging) def send_response_frame(msg) - self.device.profiler.log("send_response_frame") + matter.profiler.log("send_response_frame") self.device.msg_send(msg) end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Path.be b/lib/libesp32/berry_matter/src/embedded/Matter_Path.be index e9fe1d130ba9..c22b87276087 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Path.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Path.be @@ -30,21 +30,23 @@ class Matter_Path var endpoint # endpoint or `nil` if expansion var cluster # cluster or `nil` if expansion var attribute # attribute or `nil` if expansion + var fabric_filtered # bool or nil var command # command var status # status to be returned (matter.SUCCESS or matter.) var log # any string that needs to be logged (used to show significant parameters for commands) var msg # reference of the original message - # clear the context, allows reuse of the same object - def clear() - var n = nil + # reset the object, allows reuse of the same object + def reset() + var n = nil # it's actually more compact code to load `nil` into a register and assign all members self.endpoint = n self.cluster = n self.attribute = n + self.fabric_filtered = n self.command = n self.status = n self.log = n - self.msh = n + self.msg = n end def tostring() diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be index 4babaaba85bd..cdc6076a7e9a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be @@ -147,16 +147,32 @@ class Matter_Plugin def get_endpoint() return self.endpoint end - def get_cluster_list(ep) + def get_cluster_list() var ret = [] for k: self.clusters.keys() ret.push(k) end return ret end - def get_attribute_list(ep, cluster) + def contains_cluster(cluster) + return self.clusters.contains(cluster) + end + def get_attribute_list(cluster) return self.clusters.find(cluster, []) end + def contains_attribute(cluster, attribute) + var attr_list = self.clusters.find(cluster) + if attr_list != nil + var idx = 0 + while idx < size(attr_list) + if attr_list[idx] == attribute + return true + end + idx += 1 + end + end + return false + end ############################################################# # Does it handle this endpoint and this cluster @@ -171,7 +187,10 @@ class Matter_Plugin ############################################################# ############################################################# # read attribute - def read_attribute(session, ctx) + # + # Arg: + # `tlv_solo` contains an instance of `Matter_TLV_item` to avoid allocating a new object with TLV.create_TLV + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -200,18 +219,18 @@ class Matter_Plugin var pl = TLV.Matter_TLV_array() return pl elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) # + return tlv_solo.set(TLV.U4, 0) # elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 1) # "Initial Release" + return tlv_solo.set(TLV.U4, 1) # "Initial Release" end # ==================================================================================================== elif cluster == 0x0039 # ========== Bridged Device Basic Information 9.13 p.485 ========== if attribute == 0x0011 # ---------- Reachable / bool ---------- - return TLV.create_TLV(TLV.BOOL, 1) # by default we are reachable + return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable else - return super(self).read_attribute(session, ctx) # rest is handled by 0x0028 + return super(self).read_attribute(session, ctx, tlv_solo) # rest is handled by 0x0028 end else return nil diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Aggregator.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Aggregator.be index e1ee424f6e04..690ea2ed187b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Aggregator.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Aggregator.be @@ -37,7 +37,7 @@ class Matter_Plugin_Aggregator : Matter_Plugin ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -55,11 +55,11 @@ class Matter_Plugin_Aggregator : Matter_Plugin end return pl else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end # no match found, return that the attribute is unsupported diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_HTTP.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_HTTP.be index 1335a8861fbf..b3df630813de 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_HTTP.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_HTTP.be @@ -175,7 +175,7 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device ############################################################# # read attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -187,35 +187,35 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device if attribute == 0x0003 # ---------- ProductName / string ---------- var name = self.http_remote.get_info().find("name") if name - return TLV.create_TLV(TLV.UTF1, name) + return tlv_solo.set(TLV.UTF1, name) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x000A # ---------- SoftwareVersionString / string ---------- var version_full = self.http_remote.get_info().find("version") if version_full var version_end = string.find(version_full, '(') if version_end > 0 version_full = version_full[0..version_end - 1] end - return TLV.create_TLV(TLV.UTF1, version_full) + return tlv_solo.set(TLV.UTF1, version_full) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x000F || attribute == 0x0012 # ---------- SerialNumber || UniqueID / string ---------- var mac = self.http_remote.get_info().find("mac") if mac - return TLV.create_TLV(TLV.UTF1, mac) + return tlv_solo.set(TLV.UTF1, mac) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0011 # ---------- Reachable / bool ---------- # self.is_reachable_lazy_sync() # Not needed anymore - return TLV.create_TLV(TLV.BOOL, self.http_remote.reachable) # TODO find a way to do a ping + return tlv_solo.set(TLV.BOOL, self.http_remote.reachable) # TODO find a way to do a ping else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light0.be index c65099cb9866..c92eff4db9fe 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light0.be @@ -90,7 +90,7 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -99,15 +99,15 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP if cluster == 0x0006 # ========== On/Off 1.5 p.48 ========== self.update_shadow_lazy() if attribute == 0x0000 # ---------- OnOff / bool ---------- - return TLV.create_TLV(TLV.BOOL, self.shadow_onoff) + return tlv_solo.set(TLV.BOOL, self.shadow_onoff) elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting + return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting + return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light1.be index bc0b66a998d4..da53e225ec99 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light1.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light1.be @@ -78,7 +78,7 @@ class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0 ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -88,30 +88,30 @@ class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0 self.update_shadow_lazy() if attribute == 0x0000 # ---------- CurrentLevel / u1 ---------- if self.shadow_bri != nil - return TLV.create_TLV(TLV.U1, self.shadow_bri) + return tlv_solo.set(TLV.U1, self.shadow_bri) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0002 # ---------- MinLevel / u1 ---------- - return TLV.create_TLV(TLV.U1, 0) + return tlv_solo.set(TLV.U1, 0) elif attribute == 0x0003 # ---------- MaxLevel / u1 ---------- - return TLV.create_TLV(TLV.U1, 254) + return tlv_solo.set(TLV.U1, 254) elif attribute == 0x000F # ---------- Options / map8 ---------- - return TLV.create_TLV(TLV.U1, 0) # + return tlv_solo.set(TLV.U1, 0) # elif attribute == 0x0011 # ---------- OnLevel / u1 ---------- if self.shadow_bri != nil - return TLV.create_TLV(TLV.U1, self.shadow_bri) + return tlv_solo.set(TLV.U1, self.shadow_bri) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0X01) # OnOff + return tlv_solo.set(TLV.U4, 0X01) # OnOff elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation" + return tlv_solo.set(TLV.U4, 5) # "new data model format and notation" end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light2.be index adf2f591c3b8..596790042e1d 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light2.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light2.be @@ -95,7 +95,7 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1 ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -105,29 +105,29 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1 self.update_shadow_lazy() if attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ---------- if self.shadow_ct != nil - return TLV.create_TLV(TLV.U1, self.shadow_ct) + return tlv_solo.set(TLV.U1, self.shadow_ct) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0008 # ---------- ColorMode / u1 ---------- - return TLV.create_TLV(TLV.U1, 2)# 2 = ColorTemperatureMireds + return tlv_solo.set(TLV.U1, 2)# 2 = ColorTemperatureMireds elif attribute == 0x000F # ---------- Options / u1 ---------- - return TLV.create_TLV(TLV.U1, 0) + return tlv_solo.set(TLV.U1, 0) elif attribute == 0x400B # ---------- ColorTempPhysicalMinMireds / u2 ---------- - return TLV.create_TLV(TLV.U1, self.ct_min) + return tlv_solo.set(TLV.U1, self.ct_min) elif attribute == 0x400C # ---------- ColorTempPhysicalMaxMireds / u2 ---------- - return TLV.create_TLV(TLV.U1, self.ct_max) + return tlv_solo.set(TLV.U1, self.ct_max) elif attribute == 0x400A # ---------- ColorCapabilities / map32 ---------- - return TLV.create_TLV(TLV.U4, 0x10) # CT + return tlv_solo.set(TLV.U4, 0x10) # CT elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0x10) # CT + return tlv_solo.set(TLV.U4, 0x10) # CT elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation, FeatureMap support" + return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support" end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light3.be index 6bff511ef31d..9898cfbb4dff 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light3.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light3.be @@ -95,7 +95,7 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1 ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -105,39 +105,39 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1 self.update_shadow_lazy() if attribute == 0x0000 # ---------- CurrentHue / u1 ---------- if self.shadow_hue != nil - return TLV.create_TLV(TLV.U1, self.shadow_hue) + return tlv_solo.set(TLV.U1, self.shadow_hue) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0001 # ---------- CurrentSaturation / u2 ---------- if self.shadow_sat != nil - return TLV.create_TLV(TLV.U1, self.shadow_sat) + return tlv_solo.set(TLV.U1, self.shadow_sat) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ---------- - return TLV.create_TLV(TLV.U1, 0) + return tlv_solo.set(TLV.U1, 0) elif attribute == 0x0008 # ---------- ColorMode / u1 ---------- - return TLV.create_TLV(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation + return tlv_solo.set(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation elif attribute == 0x000F # ---------- Options / u1 ---------- - return TLV.create_TLV(TLV.U1, 0) + return tlv_solo.set(TLV.U1, 0) elif attribute == 0x4001 # ---------- EnhancedColorMode / u1 ---------- - return TLV.create_TLV(TLV.U1, 0) + return tlv_solo.set(TLV.U1, 0) elif attribute == 0x400A # ---------- ColorCapabilities / map32 ---------- - return TLV.create_TLV(TLV.U4, 0x01) # HS + return tlv_solo.set(TLV.U4, 0x01) # HS # Defined Primaries Information Attribute Set elif attribute == 0x0010 # ---------- NumberOfPrimaries / u1 ---------- - return TLV.create_TLV(TLV.U1, 0) + return tlv_solo.set(TLV.U1, 0) elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0x01) # HS + return tlv_solo.set(TLV.U4, 0x01) # HS elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation, FeatureMap support" + return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support" end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Contact.be index c2793b6fb5ce..09411b809e23 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Contact.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Contact.be @@ -71,7 +71,7 @@ class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -80,18 +80,18 @@ class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP if cluster == 0x0045 # ========== Boolean State ========== if attribute == 0x0000 # ---------- StateValue / bool ---------- if self.shadow_contact != nil - return TLV.create_TLV(TLV.BOOL, self.shadow_contact) + return tlv_solo.set(TLV.BOOL, self.shadow_contact) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) + return tlv_solo.set(TLV.U4, 0) elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 1) # 1 = Initial release + return tlv_solo.set(TLV.U4, 1) # 1 = Initial release end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Humidity.be index 4d636ddcd150..ebd83502ab9c 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Humidity.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Humidity.be @@ -56,7 +56,7 @@ class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -65,22 +65,22 @@ class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor if cluster == 0x0405 # ========== Humidity Measurement 2.4 p.98 ========== if attribute == 0x0000 # ---------- Humidity / u16 ---------- if self.shadow_value != nil - return TLV.create_TLV(TLV.U2, int(self.shadow_value)) + return tlv_solo.set(TLV.U2, int(self.shadow_value)) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0001 # ---------- MinMeasuredValue / u16 ---------- - return TLV.create_TLV(TLV.U2, 500) # 0% + return tlv_solo.set(TLV.U2, 500) # 0% elif attribute == 0x0002 # ---------- MaxMeasuredValue / u16 ---------- - return TLV.create_TLV(TLV.U2, 10000) # 100% + return tlv_solo.set(TLV.U2, 10000) # 100% elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range + return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation + return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Illuminance.be index f552f7f9a7e7..b3904bda614c 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Illuminance.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Illuminance.be @@ -63,7 +63,7 @@ class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -72,22 +72,22 @@ class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor if cluster == 0x0400 # ========== Illuminance Measurement 2.2 p.95 ========== if attribute == 0x0000 # ---------- MeasuredValue / i16 ---------- if self.shadow_value != nil - return TLV.create_TLV(TLV.U2, int(self.shadow_value)) + return tlv_solo.set(TLV.U2, int(self.shadow_value)) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ---------- - return TLV.create_TLV(TLV.U2, 1) # 1 lux + return tlv_solo.set(TLV.U2, 1) # 1 lux elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ---------- - return TLV.create_TLV(TLV.U2, 0xFFFE) + return tlv_solo.set(TLV.U2, 0xFFFE) elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) + return tlv_solo.set(TLV.U4, 0) elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation + return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Occupancy.be index 416e0f7d48bc..3e312259fe0a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Occupancy.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Occupancy.be @@ -71,7 +71,7 @@ class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -80,22 +80,22 @@ class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP if cluster == 0x0406 # ========== Occupancy Sensing ========== if attribute == 0x0000 # ---------- Occupancy / U8 ---------- if self.shadow_occupancy != nil - return TLV.create_TLV(TLV.U1, self.shadow_occupancy) + return tlv_solo.set(TLV.U1, self.shadow_occupancy) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0001 # ---------- OccupancySensorType / enum8 ---------- - return TLV.create_TLV(TLV.U1, 3) # physical contact + return tlv_solo.set(TLV.U1, 3) # physical contact elif attribute == 0x0002 # ---------- OccupancySensorTypeBitmap / u8 ---------- - return TLV.create_TLV(TLV.U1, 0) # unknown + return tlv_solo.set(TLV.U1, 0) # unknown elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) + return tlv_solo.set(TLV.U4, 0) elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 3) # 4 = New data model format and notation + return tlv_solo.set(TLV.U4, 3) # 4 = New data model format and notation end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Pressure.be index 9fcff1e8515a..b519fed3d754 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Pressure.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Pressure.be @@ -56,7 +56,7 @@ class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -65,22 +65,22 @@ class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor if cluster == 0x0403 # ========== Pressure Measurement 2.4 p.98 ========== if attribute == 0x0000 # ---------- MeasuredValue / i16 ---------- if self.shadow_value != nil - return TLV.create_TLV(TLV.I2, int(self.shadow_value)) + return tlv_solo.set(TLV.I2, int(self.shadow_value)) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ---------- - return TLV.create_TLV(TLV.I2, 500) # 500 hPA + return tlv_solo.set(TLV.I2, 500) # 500 hPA elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ---------- - return TLV.create_TLV(TLV.I2, 1500) # 1500 hPA + return tlv_solo.set(TLV.I2, 1500) # 1500 hPA elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range + return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation + return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Temp.be index 3dbb0b771b95..7980044c3779 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Temp.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Temp.be @@ -59,7 +59,7 @@ class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -68,22 +68,22 @@ class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor if cluster == 0x0402 # ========== Temperature Measurement 2.3 p.97 ========== if attribute == 0x0000 # ---------- MeasuredValue / i16 (*100) ---------- if self.shadow_value != nil - return TLV.create_TLV(TLV.I2, self.shadow_value) + return tlv_solo.set(TLV.I2, self.shadow_value) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 (*100) ---------- - return TLV.create_TLV(TLV.I2, -5000) # -50 °C + return tlv_solo.set(TLV.I2, -5000) # -50 °C elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ---------- - return TLV.create_TLV(TLV.I2, 15000) # 150 °C + return tlv_solo.set(TLV.I2, 15000) # 150 °C elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) + return tlv_solo.set(TLV.U4, 0) elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 4) # 4 = New data model format and notation + return tlv_solo.set(TLV.U4, 4) # 4 = New data model format and notation end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be index cdf807d03e1b..654dbd347876 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be @@ -55,7 +55,7 @@ class Matter_Plugin_Device : Matter_Plugin ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -63,13 +63,13 @@ class Matter_Plugin_Device : Matter_Plugin # ==================================================================================================== if cluster == 0x0003 # ========== Identify 1.2 p.16 ========== if attribute == 0x0000 # ---------- IdentifyTime / u2 ---------- - return TLV.create_TLV(TLV.U2, 0) # no identification in progress + return tlv_solo.set(TLV.U2, 0) # no identification in progress elif attribute == 0x0001 # ---------- IdentifyType / enum8 ---------- - return TLV.create_TLV(TLV.U1, 0) # IdentifyType = 0x00 None + return tlv_solo.set(TLV.U1, 0) # IdentifyType = 0x00 None elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) # no features + return tlv_solo.set(TLV.U4, 0) # no features elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 4) # "new data model format and notation" + return tlv_solo.set(TLV.U4, 4) # "new data model format and notation" end # ==================================================================================================== @@ -77,17 +77,17 @@ class Matter_Plugin_Device : Matter_Plugin if attribute == 0x0000 # ---------- ---------- return nil # TODO elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0)# + return tlv_solo.set(TLV.U4, 0)# elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 4)# "new data model format and notation" + return tlv_solo.set(TLV.U4, 4)# "new data model format and notation" end # ==================================================================================================== elif cluster == 0x0005 # ========== Scenes 1.4 p.30 - no writable ========== if attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting + return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting + return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting end # ==================================================================================================== @@ -111,7 +111,7 @@ class Matter_Plugin_Device : Matter_Plugin end return dtl else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end # ==================================================================================================== @@ -119,26 +119,26 @@ class Matter_Plugin_Device : Matter_Plugin import string if attribute == 0x0003 # ---------- ProductName / string ---------- - return TLV.create_TLV(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName']) + return tlv_solo.set(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName']) elif attribute == 0x0005 # ---------- NodeLabel / string ---------- - return TLV.create_TLV(TLV.UTF1, self.get_name()) + return tlv_solo.set(TLV.UTF1, self.get_name()) elif attribute == 0x000A # ---------- SoftwareVersionString / string ---------- var version_full = tasmota.cmd("Status 2", true)['StatusFWR']['Version'] var version_end = string.find(version_full, '(') if version_end > 0 version_full = version_full[0..version_end - 1] end - return TLV.create_TLV(TLV.UTF1, version_full) + return tlv_solo.set(TLV.UTF1, version_full) elif attribute == 0x000F # ---------- SerialNumber / string ---------- - return TLV.create_TLV(TLV.UTF1, tasmota.wifi().find("mac", "")) + return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", "")) elif attribute == 0x0011 # ---------- Reachable / bool ---------- - return TLV.create_TLV(TLV.BOOL, 1) # by default we are reachable + return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable elif attribute == 0x0012 # ---------- UniqueID / string 32 max ---------- - return TLV.create_TLV(TLV.UTF1, tasmota.wifi().find("mac", "")) + return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", "")) else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light0.be index ae78cf0c3a59..ee6550cf0128 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light0.be @@ -64,7 +64,7 @@ class Matter_Plugin_Light0 : Matter_Plugin_Device ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -73,15 +73,15 @@ class Matter_Plugin_Light0 : Matter_Plugin_Device if cluster == 0x0006 # ========== On/Off 1.5 p.48 ========== self.update_shadow_lazy() if attribute == 0x0000 # ---------- OnOff / bool ---------- - return TLV.create_TLV(TLV.BOOL, self.shadow_onoff) + return tlv_solo.set(TLV.BOOL, self.shadow_onoff) elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting + return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting + return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light1.be index e69a84bf4bd6..d488f00fdce7 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light1.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light1.be @@ -71,7 +71,7 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0 ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -80,23 +80,23 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0 if cluster == 0x0008 # ========== Level Control 1.6 p.57 ========== self.update_shadow_lazy() if attribute == 0x0000 # ---------- CurrentLevel / u1 ---------- - return TLV.create_TLV(TLV.U1, self.shadow_bri) + return tlv_solo.set(TLV.U1, self.shadow_bri) elif attribute == 0x0002 # ---------- MinLevel / u1 ---------- - return TLV.create_TLV(TLV.U1, 0) + return tlv_solo.set(TLV.U1, 0) elif attribute == 0x0003 # ---------- MaxLevel / u1 ---------- - return TLV.create_TLV(TLV.U1, 254) + return tlv_solo.set(TLV.U1, 254) elif attribute == 0x000F # ---------- Options / map8 ---------- - return TLV.create_TLV(TLV.U1, 0) # + return tlv_solo.set(TLV.U1, 0) # elif attribute == 0x0011 # ---------- OnLevel / u1 ---------- - return TLV.create_TLV(TLV.U1, self.shadow_bri) + return tlv_solo.set(TLV.U1, self.shadow_bri) elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0X01) # OnOff + return tlv_solo.set(TLV.U4, 0X01) # OnOff elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation" + return tlv_solo.set(TLV.U4, 5) # "new data model format and notation" end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light2.be index b40c45bf3b36..27d9657d47a6 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light2.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light2.be @@ -78,7 +78,7 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -87,24 +87,24 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 if cluster == 0x0300 # ========== Color Control 3.2 p.111 ========== self.update_shadow_lazy() if attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ---------- - return TLV.create_TLV(TLV.U1, self.shadow_ct) + return tlv_solo.set(TLV.U1, self.shadow_ct) elif attribute == 0x0008 # ---------- ColorMode / u1 ---------- - return TLV.create_TLV(TLV.U1, 2)# 2 = ColorTemperatureMireds + return tlv_solo.set(TLV.U1, 2)# 2 = ColorTemperatureMireds elif attribute == 0x000F # ---------- Options / u1 ---------- - return TLV.create_TLV(TLV.U1, 0) + return tlv_solo.set(TLV.U1, 0) elif attribute == 0x400B # ---------- ColorTempPhysicalMinMireds / u2 ---------- - return TLV.create_TLV(TLV.U1, self.ct_min) + return tlv_solo.set(TLV.U1, self.ct_min) elif attribute == 0x400C # ---------- ColorTempPhysicalMaxMireds / u2 ---------- - return TLV.create_TLV(TLV.U1, self.ct_max) + return tlv_solo.set(TLV.U1, self.ct_max) elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0x10) # CT + return tlv_solo.set(TLV.U4, 0x10) # CT elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation, FeatureMap support" + return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support" end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be index 3e9871dbba46..41981fcbd7f2 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be @@ -70,7 +70,7 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1 ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -79,32 +79,32 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1 if cluster == 0x0300 # ========== Color Control 3.2 p.111 ========== self.update_shadow_lazy() if attribute == 0x0000 # ---------- CurrentHue / u1 ---------- - return TLV.create_TLV(TLV.U1, self.shadow_hue) + return tlv_solo.set(TLV.U1, self.shadow_hue) elif attribute == 0x0001 # ---------- CurrentSaturation / u2 ---------- - return TLV.create_TLV(TLV.U1, self.shadow_sat) + return tlv_solo.set(TLV.U1, self.shadow_sat) elif attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ---------- - return TLV.create_TLV(TLV.U1, 0) + return tlv_solo.set(TLV.U1, 0) elif attribute == 0x0008 # ---------- ColorMode / u1 ---------- - return TLV.create_TLV(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation + return tlv_solo.set(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation elif attribute == 0x000F # ---------- Options / u1 ---------- - return TLV.create_TLV(TLV.U1, 0) + return tlv_solo.set(TLV.U1, 0) elif attribute == 0x4001 # ---------- EnhancedColorMode / u1 ---------- - return TLV.create_TLV(TLV.U1, 0) + return tlv_solo.set(TLV.U1, 0) elif attribute == 0x400A # ---------- ColorCapabilities / map2 ---------- - return TLV.create_TLV(TLV.U1, 0x01) # HS + return tlv_solo.set(TLV.U1, 0x01) # HS # Defined Primaries Information Attribute Set elif attribute == 0x0010 # ---------- NumberOfPrimaries / u1 ---------- - return TLV.create_TLV(TLV.U1, 0) + return tlv_solo.set(TLV.U1, 0) elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0x01) # HS + return tlv_solo.set(TLV.U4, 0x01) # HS elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation, FeatureMap support" + return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support" end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be index b6b4c0bf5de0..7fad806cad30 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be @@ -86,7 +86,7 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -95,15 +95,15 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device if cluster == 0x0006 # ========== On/Off 1.5 p.48 ========== self.update_shadow_lazy() if attribute == 0x0000 # ---------- OnOff / bool ---------- - return TLV.create_TLV(TLV.BOOL, self.shadow_onoff) + return tlv_solo.set(TLV.BOOL, self.shadow_onoff) elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting + return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting + return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be index bd9d46a4b1e5..6ff7c7d80e44 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be @@ -57,7 +57,7 @@ class Matter_Plugin_Root : Matter_Plugin ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) import string var TLV = matter.TLV var cluster = ctx.cluster @@ -66,18 +66,18 @@ class Matter_Plugin_Root : Matter_Plugin if cluster == 0x0030 # ========== GeneralCommissioning cluster 11.9 p.627 ========== if attribute == 0x0000 # ---------- Breadcrumb ---------- - return TLV.create_TLV(TLV.U8, session._breadcrumb) + return tlv_solo.set(TLV.U8, session._breadcrumb) elif attribute == 0x0001 # ---------- BasicCommissioningInfo / BasicCommissioningInfo---------- var bci = TLV.Matter_TLV_struct() bci.add_TLV(0, TLV.U2, 60) # FailSafeExpiryLengthSeconds bci.add_TLV(1, TLV.U2, 900) # MaxCumulativeFailsafeSeconds return bci elif attribute == 0x0002 # ---------- RegulatoryConfig / RegulatoryLocationType ---------- - return TLV.create_TLV(TLV.U1, 2) # 2 = IndoorOutdoor | esp-matter = 0 + return tlv_solo.set(TLV.U1, 2) # 2 = IndoorOutdoor | esp-matter = 0 elif attribute == 0x0003 # ---------- LocationCapability / RegulatoryLocationType---------- - return TLV.create_TLV(TLV.U1, 2) # 2 = IndoorOutdoor + return tlv_solo.set(TLV.U1, 2) # 2 = IndoorOutdoor elif attribute == 0x0004 # ---------- SupportsConcurrentConnection / bool ---------- - return TLV.create_TLV(TLV.BOOL, false) # false - maybe can set to true + return tlv_solo.set(TLV.BOOL, false) # false - maybe can set to true end # ==================================================================================================== elif cluster == 0x0032 # ========== Diagnostic Logs Cluster 11.10 p.637 ========== @@ -124,12 +124,12 @@ class Matter_Plugin_Root : Matter_Plugin end return nwi elif attribute == 0x0001 # ---------- RebootCount u16 ---------- - return TLV.create_TLV(TLV.U2, tasmota.cmd("Status 1", true)['StatusPRM']['BootCount']) + return tlv_solo.set(TLV.U2, tasmota.cmd("Status 1", true)['StatusPRM']['BootCount']) elif attribute == 0x0002 # ---------- UpTime u16 ---------- - return TLV.create_TLV(TLV.U4, tasmota.cmd("Status 11", true)['StatusSTS']['UptimeSec']) + return tlv_solo.set(TLV.U4, tasmota.cmd("Status 11", true)['StatusSTS']['UptimeSec']) # TODO add later other attributes elif attribute == 0x0008 # ---------- TestEventTriggersEnabled bool ---------- - return TLV.create_TLV(TLV.BOOL, false) # false - maybe can set to true + return tlv_solo.set(TLV.BOOL, false) # false - maybe can set to true end # ==================================================================================================== @@ -139,18 +139,19 @@ class Matter_Plugin_Root : Matter_Plugin # ==================================================================================================== elif cluster == 0x0038 # ========== Time Synchronization 11.16 p.689 ========== if attribute == 0x0000 # ---------- UTCTime / epoch_us ---------- - var epoch_us = int64(tasmota.rtc()['utc']) * int64(1000000) - return TLV.create_TLV(TLV.U8, epoch_us) # TODO test the conversion of int64() + var epoch_us = int64(tasmota.rtc_utc()) * int64(1000000) + return tlv_solo.set(TLV.U8, epoch_us) # TODO test the conversion of int64() elif attribute == 0x0001 # ---------- Granularity / enum ---------- - return TLV.create_TLV(TLV.U1, 3) # MillisecondsGranularity (NTP every hour, i.e. 36ms max drift) + return tlv_solo.set(TLV.U1, 3) # MillisecondsGranularity (NTP every hour, i.e. 36ms max drift) # TODO add some missing args elif attribute == 0x0007 # ---------- LocalTime / epoch_us ---------- var epoch_us = int64(tasmota.rtc()['local']) * int64(1000000) - return TLV.create_TLV(TLV.U8, epoch_us) # TODO test the conversion of int64() + return tlv_solo.set(TLV.U8, epoch_us) # TODO test the conversion of int64() end # ==================================================================================================== elif cluster == 0x003E # ========== Node Operational Credentials Cluster 11.17 p.704 ========== + self.send_ack_now(ctx.msg) # long operation, send Ack first if attribute == 0x0000 # ---------- NOCs / list[NOCStruct] ---------- var nocl = TLV.Matter_TLV_array() # NOCs, p.711 @@ -175,16 +176,16 @@ class Matter_Plugin_Root : Matter_Plugin end return fabrics elif attribute == 0x0002 # ---------- SupportedFabrics / u1 ---------- - return TLV.create_TLV(TLV.U1, matter.Fabric._MAX_CASE) # Max 5 fabrics + return tlv_solo.set(TLV.U1, matter.Fabric._MAX_CASE) # Max 5 fabrics elif attribute == 0x0003 # ---------- CommissionedFabrics / u1 ---------- var fabric_actice = self.device.sessions.count_active_fabrics() - return TLV.create_TLV(TLV.U1, fabric_actice) # number of active fabrics + return tlv_solo.set(TLV.U1, fabric_actice) # number of active fabrics elif attribute == 0x0004 # ---------- TrustedRootCertificates / list[octstr] ---------- # TODO elif attribute == 0x0005 # ---------- Current­ FabricIndex / u1 ---------- var fab_index = session._fabric.get_fabric_index() if fab_index == nil fab_index = 0 end # if PASE session, then the fabric index should be zero - return TLV.create_TLV(TLV.U1, fab_index) # number of active sessions + return tlv_solo.set(TLV.U1, fab_index) # number of active sessions end # ==================================================================================================== @@ -193,57 +194,58 @@ class Matter_Plugin_Root : Matter_Plugin var commissioning_open = self.device.is_commissioning_open() var basic_commissioning = self.device.is_root_commissioning_open() var val = commissioning_open ? (basic_commissioning ? 2 #-BasicWindowOpen-# : 1 #-EnhancedWindowOpen-#) : 0 #-WindowNotOpen-# - return TLV.create_TLV(TLV.U1, val) + return tlv_solo.set(TLV.U1, val) elif attribute == 0x0001 # ---------- AdminFabricIndex / u16 ---------- var admin_fabric = self.device.commissioning_admin_fabric if admin_fabric != nil - return TLV.create_TLV(TLV.U2, admin_fabric.get_fabric_index()) + return tlv_solo.set(TLV.U2, admin_fabric.get_fabric_index()) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0002 # ---------- AdminVendorId / u16 ---------- var admin_fabric = self.device.commissioning_admin_fabric if admin_fabric != nil - return TLV.create_TLV(TLV.U2, admin_fabric.get_admin_vendor()) + return tlv_solo.set(TLV.U2, admin_fabric.get_admin_vendor()) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end end # ==================================================================================================== elif cluster == 0x0028 # ========== Basic Information Cluster cluster 11.1 p.565 ========== + self.send_ack_now(ctx.msg) # long operation, send Ack first if attribute == 0x0000 # ---------- DataModelRevision / CommissioningWindowStatus ---------- - return TLV.create_TLV(TLV.U2, 1) + return tlv_solo.set(TLV.U2, 1) elif attribute == 0x0001 # ---------- VendorName / string ---------- - return TLV.create_TLV(TLV.UTF1, "Tasmota") + return tlv_solo.set(TLV.UTF1, "Tasmota") elif attribute == 0x0002 # ---------- VendorID / vendor-id ---------- - return TLV.create_TLV(TLV.U2, self.device.vendorid) # Vendor ID reserved for development + return tlv_solo.set(TLV.U2, self.device.vendorid) # Vendor ID reserved for development elif attribute == 0x0003 # ---------- ProductName / string ---------- - return TLV.create_TLV(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName']) + return tlv_solo.set(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName']) elif attribute == 0x0004 # ---------- ProductID / u16 (opt) ---------- - return TLV.create_TLV(TLV.U2, 32768) # taken from esp-matter example + return tlv_solo.set(TLV.U2, 32768) # taken from esp-matter example elif attribute == 0x0005 # ---------- NodeLabel / string ---------- - return TLV.create_TLV(TLV.UTF1, tasmota.cmd("FriendlyName", true)['FriendlyName1']) + return tlv_solo.set(TLV.UTF1, tasmota.cmd("FriendlyName", true)['FriendlyName1']) elif attribute == 0x0006 # ---------- Location / string ---------- - return TLV.create_TLV(TLV.UTF1, "XX") # no location + return tlv_solo.set(TLV.UTF1, "XX") # no location elif attribute == 0x0007 # ---------- HardwareVersion / u16 ---------- - return TLV.create_TLV(TLV.U2, 0) + return tlv_solo.set(TLV.U2, 0) elif attribute == 0x0008 # ---------- HardwareVersionString / string ---------- - return TLV.create_TLV(TLV.UTF1, tasmota.cmd("Status 2", true)['StatusFWR']['Hardware']) + return tlv_solo.set(TLV.UTF1, tasmota.cmd("Status 2", true)['StatusFWR']['Hardware']) elif attribute == 0x0009 # ---------- SoftwareVersion / u32 ---------- - return TLV.create_TLV(TLV.U2, 1) + return tlv_solo.set(TLV.U2, 1) elif attribute == 0x000A # ---------- SoftwareVersionString / string ---------- var version_full = tasmota.cmd("Status 2", true)['StatusFWR']['Version'] var version_end = string.find(version_full, '(') if version_end > 0 version_full = version_full[0..version_end - 1] end - return TLV.create_TLV(TLV.UTF1, version_full) + return tlv_solo.set(TLV.UTF1, version_full) elif attribute == 0x000F # ---------- SerialNumber / string ---------- - return TLV.create_TLV(TLV.UTF1, tasmota.wifi().find("mac", "")) + return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", "")) elif attribute == 0x0011 # ---------- Reachable / bool ---------- - return TLV.create_TLV(TLV.BOOL, 1) # by default we are reachable + return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable elif attribute == 0x0012 # ---------- UniqueID / string 32 max ---------- - return TLV.create_TLV(TLV.UTF1, tasmota.wifi().find("mac", "")) + return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", "")) elif attribute == 0x0013 # ---------- CapabilityMinima / CapabilityMinimaStruct ---------- var cps = TLV.Matter_TLV_struct() cps.add_TLV(0, TLV.U2, 3) # CaseSessionsPerFabric = 3 @@ -261,18 +263,18 @@ class Matter_Plugin_Root : Matter_Plugin if attribute == 0x0000 # ---------- DefaultOTAProviders / list[ProviderLocationStruct] ---------- return TLV.Matter_TLV_array() # empty list for now TODO elif attribute == 0x0001 # ---------- UpdatePossible / bool ---------- - return TLV.create_TLV(TLV.BOOL, 0) # we claim that update is not possible, would require to go to Tasmota UI + return tlv_solo.set(TLV.BOOL, 0) # we claim that update is not possible, would require to go to Tasmota UI elif attribute == 0x0002 # ---------- UpdateState / UpdateStateEnum ---------- - return TLV.create_TLV(TLV.U1, 1) # Idle + return tlv_solo.set(TLV.U1, 1) # Idle elif attribute == 0x0003 # ---------- UpdateStateProgress / uint8 ---------- - return TLV.create_TLV(TLV.NULL, nil) # null, nothing in process + return tlv_solo.set(TLV.NULL, nil) # null, nothing in process end # ==================================================================================================== elif cluster == 0x002B # ========== Localization Configuration Cluster 11.3 p.580 ========== if attribute == 0x0000 # ---------- ActiveLocale / string ---------- - return TLV.create_TLV(TLV.UTF1, tasmota.locale()) + return tlv_solo.set(TLV.UTF1, tasmota.locale()) elif attribute == 0x0001 # ---------- SupportedLocales / list[string] ---------- var locl = TLV.Matter_TLV_array() locl.add_TLV(nil, TLV.UTF1, tasmota.locale()) @@ -283,9 +285,9 @@ class Matter_Plugin_Root : Matter_Plugin elif cluster == 0x002C # ========== Time Format Localization Cluster 11.4 p.581 ========== if attribute == 0x0000 # ---------- HourFormat / HourFormat ---------- - return TLV.create_TLV(TLV.U1, 1) # 1 = 24hr + return tlv_solo.set(TLV.U1, 1) # 1 = 24hr elif attribute == 0x0001 # ---------- ActiveCalendarType / CalendarType ---------- - return TLV.create_TLV(TLV.U1, 4) # 4 = Gregorian + return tlv_solo.set(TLV.U1, 4) # 4 = Gregorian elif attribute == 0x0002 # ---------- SupportedCalendarTypes / list[CalendarType] ---------- var callist = TLV.Matter_TLV_array() callist.add_TLV(nil, TLV.create_TLV(TLV.U1, 4)) @@ -295,9 +297,9 @@ class Matter_Plugin_Root : Matter_Plugin # ==================================================================================================== elif cluster == 0x0031 # ========== Network Commissioning Cluster cluster 11.8 p.606 ========== if attribute == 0x0003 # ---------- ConnectMaxTimeSeconds / uint8 ---------- - return TLV.create_TLV(TLV.U1, 30) # 30 - value taking from example in esp-matter + return tlv_solo.set(TLV.U1, 30) # 30 - value taking from example in esp-matter elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0x04) # Put Eth for now which should work for any on-network + return tlv_solo.set(TLV.U4, 0x04) # Put Eth for now which should work for any on-network end elif cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ========== @@ -315,11 +317,11 @@ class Matter_Plugin_Root : Matter_Plugin end return pl else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end # no match found, return that the attribute is unsupported @@ -417,7 +419,7 @@ class Matter_Plugin_Root : Matter_Plugin var att_elts = TLV.Matter_TLV_struct() att_elts.add_TLV(1, TLV.B2, matter.CD_FFF1_8000()) # certification_declaration att_elts.add_TLV(2, TLV.B1, AttestationNonce) # attestation_nonce - att_elts.add_TLV(3, TLV.U4, tasmota.rtc()['utc']) # timestamp in epoch-s + att_elts.add_TLV(3, TLV.U4, tasmota.rtc_utc()) # timestamp in epoch-s var attestation_message = att_elts.tlv2raw() var ac = session.get_ac() diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Contact.be index ca9ae7a88d1e..ae9b5097be72 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Contact.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Contact.be @@ -75,7 +75,7 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -84,18 +84,18 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device if cluster == 0x0045 # ========== Boolean State ========== if attribute == 0x0000 # ---------- StateValue / bool ---------- if self.shadow_contact != nil - return TLV.create_TLV(TLV.BOOL, self.shadow_contact) + return tlv_solo.set(TLV.BOOL, self.shadow_contact) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) + return tlv_solo.set(TLV.U4, 0) elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 1) # 1 = Initial release + return tlv_solo.set(TLV.U4, 1) # 1 = Initial release end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Humidity.be index c4701a772574..3786eaa47a00 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Humidity.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Humidity.be @@ -55,7 +55,7 @@ class Matter_Plugin_Sensor_Humidity : Matter_Plugin_Sensor ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -64,22 +64,22 @@ class Matter_Plugin_Sensor_Humidity : Matter_Plugin_Sensor if cluster == 0x0405 # ========== Humidity Measurement 2.4 p.98 ========== if attribute == 0x0000 # ---------- Humidity / u16 ---------- if self.shadow_value != nil - return TLV.create_TLV(TLV.U2, int(self.shadow_value)) + return tlv_solo.set(TLV.U2, int(self.shadow_value)) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0001 # ---------- MinMeasuredValue / u16 ---------- - return TLV.create_TLV(TLV.U2, 500) # 0% + return tlv_solo.set(TLV.U2, 500) # 0% elif attribute == 0x0002 # ---------- MaxMeasuredValue / u16 ---------- - return TLV.create_TLV(TLV.U2, 10000) # 100% + return tlv_solo.set(TLV.U2, 10000) # 100% elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range + return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation + return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Illuminance.be index fd213c665a9b..f5602b1adc63 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Illuminance.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Illuminance.be @@ -62,7 +62,7 @@ class Matter_Plugin_Sensor_Illuminance : Matter_Plugin_Sensor ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -71,22 +71,22 @@ class Matter_Plugin_Sensor_Illuminance : Matter_Plugin_Sensor if cluster == 0x0400 # ========== Illuminance Measurement 2.2 p.95 ========== if attribute == 0x0000 # ---------- MeasuredValue / i16 ---------- if self.shadow_value != nil - return TLV.create_TLV(TLV.U2, int(self.shadow_value)) + return tlv_solo.set(TLV.U2, int(self.shadow_value)) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ---------- - return TLV.create_TLV(TLV.U2, 1) # 1 lux + return tlv_solo.set(TLV.U2, 1) # 1 lux elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ---------- - return TLV.create_TLV(TLV.U2, 0xFFFE) + return tlv_solo.set(TLV.U2, 0xFFFE) elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) + return tlv_solo.set(TLV.U4, 0) elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation + return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Occupancy.be index 82b2206c3914..1400c55b044e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Occupancy.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Occupancy.be @@ -72,7 +72,7 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -81,22 +81,22 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device if cluster == 0x0406 # ========== Occupancy Sensing ========== if attribute == 0x0000 # ---------- Occupancy / U8 ---------- if self.shadow_occupancy != nil - return TLV.create_TLV(TLV.U1, self.shadow_occupancy) + return tlv_solo.set(TLV.U1, self.shadow_occupancy) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0001 # ---------- OccupancySensorType / enum8 ---------- - return TLV.create_TLV(TLV.U1, 3) # physical contact + return tlv_solo.set(TLV.U1, 3) # physical contact elif attribute == 0x0002 # ---------- OccupancySensorTypeBitmap / u8 ---------- - return TLV.create_TLV(TLV.U1, 0) # unknown + return tlv_solo.set(TLV.U1, 0) # unknown elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) + return tlv_solo.set(TLV.U4, 0) elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 3) # 4 = New data model format and notation + return tlv_solo.set(TLV.U4, 3) # 4 = New data model format and notation end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_OnOff.be index 738ecfbda869..5f2858d681d2 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_OnOff.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_OnOff.be @@ -70,7 +70,7 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -79,15 +79,15 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device if cluster == 0x0006 # ========== On/Off 1.5 p.48 ========== self.update_shadow_lazy() if attribute == 0x0000 # ---------- OnOff / bool ---------- - return TLV.create_TLV(TLV.BOOL, self.shadow_onoff) + return tlv_solo.set(TLV.BOOL, self.shadow_onoff) elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting + return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting + return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Pressure.be index ac4889a7835b..ae4c6ef3c110 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Pressure.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Pressure.be @@ -55,7 +55,7 @@ class Matter_Plugin_Sensor_Pressure : Matter_Plugin_Sensor ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -64,22 +64,22 @@ class Matter_Plugin_Sensor_Pressure : Matter_Plugin_Sensor if cluster == 0x0403 # ========== Pressure Measurement 2.4 p.98 ========== if attribute == 0x0000 # ---------- MeasuredValue / i16 ---------- if self.shadow_value != nil - return TLV.create_TLV(TLV.I2, int(self.shadow_value)) + return tlv_solo.set(TLV.I2, int(self.shadow_value)) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ---------- - return TLV.create_TLV(TLV.I2, 500) # 500 hPA + return tlv_solo.set(TLV.I2, 500) # 500 hPA elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ---------- - return TLV.create_TLV(TLV.I2, 1500) # 1500 hPA + return tlv_solo.set(TLV.I2, 1500) # 1500 hPA elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range + return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation + return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Temp.be index f68cd62d65ef..33dec8d13238 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Temp.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Temp.be @@ -58,7 +58,7 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -67,22 +67,22 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor if cluster == 0x0402 # ========== Temperature Measurement 2.3 p.97 ========== if attribute == 0x0000 # ---------- MeasuredValue / i16 (*100) ---------- if self.shadow_value != nil - return TLV.create_TLV(TLV.I2, self.shadow_value) + return tlv_solo.set(TLV.I2, self.shadow_value) else - return TLV.create_TLV(TLV.NULL, nil) + return tlv_solo.set(TLV.NULL, nil) end elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 (*100) ---------- - return TLV.create_TLV(TLV.I2, -5000) # -50 °C + return tlv_solo.set(TLV.I2, -5000) # -50 °C elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ---------- - return TLV.create_TLV(TLV.I2, 15000) # 150 °C + return tlv_solo.set(TLV.I2, 15000) # 150 °C elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 0) + return tlv_solo.set(TLV.U4, 0) elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 4) # 4 = New data model format and notation + return tlv_solo.set(TLV.U4, 4) # 4 = New data model format and notation end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Shutter.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Shutter.be index 8e110c7d1470..e3285b36fd71 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Shutter.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Shutter.be @@ -93,7 +93,7 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -104,42 +104,42 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device self.update_shadow_lazy() self.update_inverted() if attribute == 0x0000 # ---------- Type / enum8 ---------- - return TLV.create_TLV(TLV.U1, 0xFF) # 0xFF = unknown type of shutter + return tlv_solo.set(TLV.U1, 0xFF) # 0xFF = unknown type of shutter elif attribute == 0x0005 # ---------- NumberOfActuationsLift / u16 ---------- - return TLV.create_TLV(TLV.U2, 0) + return tlv_solo.set(TLV.U2, 0) elif attribute == 0x0007 # ---------- ConfigStatus / u8 ---------- - return TLV.create_TLV(TLV.U1, 1 + 8) # Operational + Lift Position Aware + return tlv_solo.set(TLV.U1, 1 + 8) # Operational + Lift Position Aware elif attribute == 0x000D # ---------- EndProductType / u8 ---------- - return TLV.create_TLV(TLV.U1, 0xFF) # 0xFF = unknown type of shutter + return tlv_solo.set(TLV.U1, 0xFF) # 0xFF = unknown type of shutter elif attribute == 0x000E # ---------- CurrentPositionLiftPercent100ths / u16 ---------- if self.shadow_shutter_inverted == 0 matter_position = (100 - self.shadow_shutter_pos) * 100 else matter_position = self.shadow_shutter_pos * 100 end - return TLV.create_TLV(TLV.U2, matter_position) + return tlv_solo.set(TLV.U2, matter_position) elif attribute == 0x000A # ---------- OperationalStatus / u8 ---------- var op = self.shadow_shutter_direction == 0 ? 0 : (self.shadow_shutter_direction > 0 ? 1 : 2) - return TLV.create_TLV(TLV.U1, op) + return tlv_solo.set(TLV.U1, op) elif attribute == 0x000B # ---------- TargetPositionLiftPercent100ths / u16 ---------- if self.shadow_shutter_inverted == 0 matter_position = (100 - self.shadow_shutter_target) * 100 else matter_position = self.shadow_shutter_target * 100 end - return TLV.create_TLV(TLV.U2, matter_position) + return tlv_solo.set(TLV.U2, matter_position) elif attribute == 0x0017 # ---------- Mode / u8 ---------- - return TLV.create_TLV(TLV.U1, 0) # normal mode + return tlv_solo.set(TLV.U1, 0) # normal mode elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 1 + 4) # Lift + PA_LF + return tlv_solo.set(TLV.U4, 1 + 4) # Lift + PA_LF elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- - return TLV.create_TLV(TLV.U4, 5) # New data model format and notation + return tlv_solo.set(TLV.U4, 5) # New data model format and notation end else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_ShutterTilt.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_ShutterTilt.be index dd58f0918c1c..0849f3418c53 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_ShutterTilt.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_ShutterTilt.be @@ -96,7 +96,7 @@ class Matter_Plugin_ShutterTilt : Matter_Plugin_Shutter ############################################################# # read an attribute # - def read_attribute(session, ctx) + def read_attribute(session, ctx, tlv_solo) var TLV = matter.TLV var cluster = ctx.cluster var attribute = ctx.attribute @@ -105,30 +105,30 @@ class Matter_Plugin_ShutterTilt : Matter_Plugin_Shutter if cluster == 0x0102 # ========== Window Covering 5.3 p.289 ========== self.update_shadow_lazy() if attribute == 0x0007 # ---------- ConfigStatus / u8 ---------- - return TLV.create_TLV(TLV.U1, 1 + 8 + 16) # Operational + Lift Position Aware + Tilt Position Aware + return tlv_solo.set(TLV.U1, 1 + 8 + 16) # Operational + Lift Position Aware + Tilt Position Aware elif attribute == 0x000F # ---------- CurrentPositionTiltPercent100ths / u8 ---------- self.update_tilt_min_max() if self.tilt_min != nil && self.tilt_max != nil var tilt_percentage = tasmota.scale_uint(self.shadow_shutter_tilt - self.tilt_min, 0, self.tilt_max - self.tilt_min, 0, 10000) - return TLV.create_TLV(TLV.U2, tilt_percentage) + return tlv_solo.set(TLV.U2, tilt_percentage) else - return TLV.create_TLV(TLV.NULL, nil) # return invalid + return tlv_solo.set(TLV.NULL, nil) # return invalid end elif attribute == 0x000C # ---------- TargetPositionTiltPercent100ths / u16 ---------- if self.tilt_min != nil && self.tilt_max != nil var tilt_percentage = tasmota.scale_uint(self.shadow_shutter_tilt - self.tilt_min, 0, self.tilt_max - self.tilt_min, 0, 10000) - return TLV.create_TLV(TLV.U2, tilt_percentage) + return tlv_solo.set(TLV.U2, tilt_percentage) else - return TLV.create_TLV(TLV.NULL, nil) # return invalid + return tlv_solo.set(TLV.NULL, nil) # return invalid end elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return TLV.create_TLV(TLV.U4, 3 + 4 + 16) # Lift + Tilt + PA_LF + PA_TL + return tlv_solo.set(TLV.U4, 3 + 4 + 16) # Lift + Tilt + PA_LF + PA_TL end end # else - return super(self).read_attribute(session, ctx) + return super(self).read_attribute(session, ctx, tlv_solo) end ############################################################# diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be b/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be index 7f6f07231cc4..fb9f1dd5630f 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be @@ -31,13 +31,21 @@ class Matter_Profiler var millis var names var active + var allocs + var reallocs + var len # number of entries def init() self.active = false self.millis = list() - self.millis.resize(self.PREALLOCATED) + self.millis.resize(self.PREALLOCATED) # we force zero allocation when using profiler self.names = list() self.names.resize(self.PREALLOCATED) + self.allocs = list() + self.allocs.resize(self.PREALLOCATED) + self.reallocs = list() + self.reallocs.resize(self.PREALLOCATED) + self.len = 0 end def set_active(v) @@ -46,15 +54,27 @@ class Matter_Profiler def start() if !self.active return end - self.millis.resize(0) - self.names.resize(0) + var idx = 0 + while idx < self.PREALLOCATED + self.millis[idx] = nil + self.names[idx] = nil + idx += 1 + end + self.len = 0 + tasmota.gc() # To get deterministic values, we force a full GC before profiler self.log("start") end def log(name) if !self.active return end - self.millis.push(tasmota.millis()) - self.names.push(name) + import debug + var len = self.len + if len >= self.PREALLOCATED return end # size overflow + self.millis[len] = tasmota.millis() + self.names[len] = name + self.allocs[len] = debug.allocs() + self.reallocs[len] = debug.reallocs() + self.len += 1 end def dump(loglevel) @@ -62,9 +82,12 @@ class Matter_Profiler self.log("<--end-->") tasmota.log("MTR: Profiler dump:", loglevel) var origin = self.millis[0] + var allocs0 = self.allocs[0] + var reallocs0 = self.reallocs[0] var idx = 1 - while idx < size(self.millis) - tasmota.log(f"MTR: {self.millis[idx] - origin:4i} '{self.names[idx]}'", loglevel) + while idx < self.len + # tasmota.log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}|{self.reallocs[idx] - reallocs0:4i}]'{self.names[idx]}'", loglevel) + tasmota.log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}]'{self.names[idx]}'", loglevel) idx += 1 end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be index dc63280c30b3..558da861ed28 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be @@ -165,7 +165,7 @@ class Matter_Session : Matter_Expirable ############################################################# # Update the timestamp or any other information def update() - self.last_used = tasmota.rtc()['utc'] + self.last_used = tasmota.rtc_utc() end def set_mode_PASE() self.set_mode(self._PASE) end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be index a9db4d6ae1a6..13d723b39315 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be @@ -113,6 +113,32 @@ class Matter_TLV self.parent = parent end + ############################################################# + # reset - allows reuse of the object + def reset(parent) + var n = nil + self.parent = parent + self.next_idx = n + self.tag_vendor = n + self.tag_profile = n + self.tag_number = n + self.tag_sub = n + self.typ = n + self.val = n + end + + ############################################################# + # set value, equivalent to create_TLV() without allocation + # + def set(t, value) + self.reset() + if value != nil || t == 0x14 #-t == matter.TLV.NULL-# # put the actual number for performance + self.typ = t + self.val = value + return self + end + end + ############################################################# # neutral converter def to_TLV() @@ -135,23 +161,24 @@ class Matter_TLV # # We are trying to follow the official Matter way of printing TLV # Ex: '42U' or '1 = 42U' or '0xFFF1::0xDEED:0xAA55FEED = 42U' - def tostring() + def tostring(no_tag) # var s = " 0 s += "= " end end - if size(s) > 0 s += "= " end - # print value if type(self.val) == 'int' s += format("%i", self.val) if self.typ >= self.TLV.U1 && self.typ <= self.TLV.U8 s += "U" end @@ -171,6 +198,30 @@ class Matter_TLV return s end + # simplified version of tostring() for simple values + def to_str_val() + # print value + if type(self.val) == 'int' + if self.typ >= self.TLV.U1 && self.typ <= self.TLV.U8 + return str(self.val) + "U" + else + return str(self.val) + end + elif type(self.val) == 'bool' return self.val ? "true" : "false" + elif self.val == nil return "null" + elif type(self.val) == 'real' return str(self.val) + elif type(self.val) == 'string' return self.val + elif isinstance(self.val, int64) + if self.typ >= self.TLV.U1 && self.typ <= self.TLV.U8 + return self.val.tostring() + "U" + else + return self.val.tostring() + end + elif type(self.val) == 'instance' + return self.tostring(true) + end + end + ############################################################# # parse a bytes() array from `idx` # args: @@ -566,26 +617,27 @@ class Matter_TLV end ################################################################################# - def tostring() - return self.tostring_inner(false, "[[", "]]") + def tostring(no_tag) + return self.tostring_inner(false, "[[", "]]", no_tag) end - def tostring_inner(sorted, pre, post) + def tostring_inner(sorted, pre, post, no_tag) var s = "" try - if self.tag_profile == -1 - s += "Matter::" - if self.tag_number != nil s += format("0x%08X ", self.tag_number) end - else - if self.tag_vendor != nil s += format("0x%04X::", self.tag_vendor) end - if self.tag_profile != nil s += format("0x%04X:", self.tag_profile) end - if self.tag_number != nil s += format("0x%08X ", self.tag_number) end - if self.tag_sub != nil s += format("%i ", self.tag_sub) end + if no_tag != true + if self.tag_profile == -1 + s += "Matter::" + if self.tag_number != nil s += format("0x%08X ", self.tag_number) end + else + if self.tag_vendor != nil s += format("0x%04X::", self.tag_vendor) end + if self.tag_profile != nil s += format("0x%04X:", self.tag_profile) end + if self.tag_number != nil s += format("0x%08X ", self.tag_number) end + if self.tag_sub != nil s += format("%i ", self.tag_sub) end + end + if size(s) > 0 s += "= " end end - if size(s) > 0 s += "= " end - s += pre # sort values @@ -604,6 +656,11 @@ class Matter_TLV return s end + # simplified version of tostring() for simple values + def to_str_val() + return self.tostring(true) + end + ################################################################################# def parse(b, idx) # iterate until end of struct @@ -777,8 +834,8 @@ class Matter_TLV end ############################################################# - def tostring() - return self.tostring_inner(true, "{", "}") + def tostring(no_tag) + return self.tostring_inner(true, "{", "}", no_tag) end end @@ -793,8 +850,8 @@ class Matter_TLV end ############################################################# - def tostring() - return self.tostring_inner(false, "[", "]") + def tostring(no_tag) + return self.tostring_inner(false, "[", "]", no_tag) end ############################################################# diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be b/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be index 5bc75e08a62e..62bc065c8116 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be @@ -72,6 +72,7 @@ class Matter_UDPServer var dispatch_cb # callback to call when a message is received var packets_sent # list map of packets sent to be acknowledged var loop_cb # closure to pass to fast_loop + var packet # reuse the packer `bytes()` object at each iteration ############################################################# # Init UDP Server listening to `addr` and `port` (opt). @@ -123,17 +124,19 @@ class Matter_UDPServer # Then resend queued outgoing packets. def loop() # import debug - var profiler = self.device.profiler + var profiler = matter.profiler var packet_read = 0 if self.udp_socket == nil return end - var packet = self.udp_socket.read() + var packet = self.udp_socket.read(self.packet) while packet != nil - # self.packet = packet profiler.start() + self.packet = packet # save packet for next iteration packet_read += 1 var from_addr = self.udp_socket.remote_ip var from_port = self.udp_socket.remote_port - tasmota.log(format("MTR: UDP received from [%s]:%i", from_addr, from_port), 4) + if tasmota.loglevel(4) + tasmota.log(format("MTR: UDP received from [%s]:%i", from_addr, from_port), 4) + end # tasmota.log("MTR: Perf/UDP_received = " + str(debug.counters()), 4) if self.dispatch_cb profiler.log("udp_loop_dispatch") @@ -159,10 +162,15 @@ class Matter_UDPServer # Returns `true` if packet was successfully sent. def send(packet) var ok = self.udp_socket.send(packet.addr ? packet.addr : self.udp_socket.remote_ip, packet.port ? packet.port : self.udp_socket.remote_port, packet.raw) + if ok - tasmota.log(format("MTR: sending packet to '[%s]:%i'", packet.addr, packet.port), 4) + if tasmota.loglevel(4) + tasmota.log(format("MTR: sending packet to '[%s]:%i'", packet.addr, packet.port), 4) + end else - tasmota.log(format("MTR: error sending packet to '[%s]:%i'", packet.addr, packet.port), 3) + if tasmota.loglevel(3) + tasmota.log(format("MTR: error sending packet to '[%s]:%i'", packet.addr, packet.port), 3) + end end return ok end @@ -209,7 +217,9 @@ class Matter_UDPServer 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), 4) + if tasmota.loglevel(4) + tasmota.log("MTR: . Removed packet from sending list id=" + str(id), 4) + end else idx += 1 end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h index 7c5b07704f85..978e5a3aa851 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h @@ -557,7 +557,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake1, /* name */ }), be_str_weak(parse_Pake1), &be_const_str_solidified, - ( &(const binstruction[114]) { /* code */ + ( &(const binstruction[115]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x880C0301, // 0001 GETMBR R3 R1 K1 0x88100302, // 0002 GETMBR R4 R1 K2 @@ -665,13 +665,14 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake1, /* name */ 0x884C0730, // 0068 GETMBR R19 R3 K48 0x88500731, // 0069 GETMBR R20 R3 K49 0x7C400800, // 006A CALL R16 4 - 0x7C380400, // 006B CALL R14 2 - 0x88380132, // 006C GETMBR R14 R0 K50 - 0x8C381D33, // 006D GETMET R14 R14 K51 - 0x5C401800, // 006E MOVE R16 R12 - 0x7C380400, // 006F CALL R14 2 - 0x50380200, // 0070 LDBOOL R14 1 0 - 0x80041C00, // 0071 RET 1 R14 + 0x5844000D, // 006B LDCONST R17 K13 + 0x7C380600, // 006C CALL R14 3 + 0x88380132, // 006D GETMBR R14 R0 K50 + 0x8C381D33, // 006E GETMET R14 R14 K51 + 0x5C401800, // 006F MOVE R16 R12 + 0x7C380400, // 0070 CALL R14 2 + 0x50380200, // 0071 LDBOOL R14 1 0 + 0x80041C00, // 0072 RET 1 R14 }) ) ); @@ -723,7 +724,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[32]) { /* constants */ + ( &(const bvalue[31]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(session), /* K2 */ be_nested_str_weak(opcode), @@ -746,20 +747,19 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */ /* K19 */ be_nested_str_weak(cA), /* K20 */ be_nested_str_weak(__spake_cA), /* K21 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received), - /* K22 */ be_nested_str_weak(rtc), - /* K23 */ be_nested_str_weak(utc), - /* K24 */ be_nested_str_weak(HKDF_SHA256), - /* K25 */ be_nested_str_weak(derive), - /* K26 */ be_nested_str_weak(__spake_Ke), - /* K27 */ be_nested_str_weak(fromstring), - /* K28 */ be_nested_str_weak(SEKeys_Info), - /* K29 */ be_nested_str_weak(add_session), - /* K30 */ be_nested_str_weak(__future_local_session_id), - /* K31 */ be_nested_str_weak(__future_initiator_session_id), + /* K22 */ be_nested_str_weak(rtc_utc), + /* K23 */ be_nested_str_weak(HKDF_SHA256), + /* K24 */ be_nested_str_weak(derive), + /* K25 */ be_nested_str_weak(__spake_Ke), + /* K26 */ be_nested_str_weak(fromstring), + /* K27 */ be_nested_str_weak(SEKeys_Info), + /* K28 */ be_nested_str_weak(add_session), + /* K29 */ be_nested_str_weak(__future_local_session_id), + /* K30 */ be_nested_str_weak(__future_initiator_session_id), }), be_str_weak(parse_Pake3), &be_const_str_solidified, - ( &(const binstruction[106]) { /* code */ + ( &(const binstruction[105]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x880C0301, // 0001 GETMBR R3 R1 K1 0x88100302, // 0002 GETMBR R4 R1 K2 @@ -824,48 +824,47 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */ 0xB81A0C00, // 003D GETNGBL R6 K6 0x8C180D16, // 003E GETMET R6 R6 K22 0x7C180200, // 003F CALL R6 1 - 0x94180D17, // 0040 GETIDX R6 R6 K23 - 0x8C1C0518, // 0041 GETMET R7 R2 K24 - 0x7C1C0200, // 0042 CALL R7 1 - 0x8C1C0F19, // 0043 GETMET R7 R7 K25 - 0x8824071A, // 0044 GETMBR R9 R3 K26 - 0x60280015, // 0045 GETGBL R10 G21 - 0x7C280000, // 0046 CALL R10 0 - 0x602C0015, // 0047 GETGBL R11 G21 - 0x7C2C0000, // 0048 CALL R11 0 - 0x8C2C171B, // 0049 GETMET R11 R11 K27 - 0x8834011C, // 004A GETMBR R13 R0 K28 - 0x7C2C0400, // 004B CALL R11 2 - 0x5432002F, // 004C LDINT R12 48 - 0x7C1C0A00, // 004D CALL R7 5 - 0x5422000E, // 004E LDINT R8 15 - 0x40220808, // 004F CONNECT R8 K4 R8 - 0x94200E08, // 0050 GETIDX R8 R7 R8 - 0x5426000F, // 0051 LDINT R9 16 - 0x542A001E, // 0052 LDINT R10 31 - 0x4024120A, // 0053 CONNECT R9 R9 R10 - 0x94240E09, // 0054 GETIDX R9 R7 R9 - 0x542A001F, // 0055 LDINT R10 32 - 0x542E002E, // 0056 LDINT R11 47 - 0x4028140B, // 0057 CONNECT R10 R10 R11 - 0x94280E0A, // 0058 GETIDX R10 R7 R10 - 0x8C2C010B, // 0059 GETMET R11 R0 K11 - 0x5C340200, // 005A MOVE R13 R1 - 0x58380004, // 005B LDCONST R14 K4 - 0x583C0004, // 005C LDCONST R15 K4 - 0x58400004, // 005D LDCONST R16 K4 - 0x50440000, // 005E LDBOOL R17 0 0 - 0x7C2C0C00, // 005F CALL R11 6 - 0x8C2C011D, // 0060 GETMET R11 R0 K29 - 0x8834071E, // 0061 GETMBR R13 R3 K30 - 0x8838071F, // 0062 GETMBR R14 R3 K31 - 0x5C3C1000, // 0063 MOVE R15 R8 - 0x5C401200, // 0064 MOVE R16 R9 - 0x5C441400, // 0065 MOVE R17 R10 - 0x5C480C00, // 0066 MOVE R18 R6 - 0x7C2C0E00, // 0067 CALL R11 7 - 0x502C0200, // 0068 LDBOOL R11 1 0 - 0x80041600, // 0069 RET 1 R11 + 0x8C1C0517, // 0040 GETMET R7 R2 K23 + 0x7C1C0200, // 0041 CALL R7 1 + 0x8C1C0F18, // 0042 GETMET R7 R7 K24 + 0x88240719, // 0043 GETMBR R9 R3 K25 + 0x60280015, // 0044 GETGBL R10 G21 + 0x7C280000, // 0045 CALL R10 0 + 0x602C0015, // 0046 GETGBL R11 G21 + 0x7C2C0000, // 0047 CALL R11 0 + 0x8C2C171A, // 0048 GETMET R11 R11 K26 + 0x8834011B, // 0049 GETMBR R13 R0 K27 + 0x7C2C0400, // 004A CALL R11 2 + 0x5432002F, // 004B LDINT R12 48 + 0x7C1C0A00, // 004C CALL R7 5 + 0x5422000E, // 004D LDINT R8 15 + 0x40220808, // 004E CONNECT R8 K4 R8 + 0x94200E08, // 004F GETIDX R8 R7 R8 + 0x5426000F, // 0050 LDINT R9 16 + 0x542A001E, // 0051 LDINT R10 31 + 0x4024120A, // 0052 CONNECT R9 R9 R10 + 0x94240E09, // 0053 GETIDX R9 R7 R9 + 0x542A001F, // 0054 LDINT R10 32 + 0x542E002E, // 0055 LDINT R11 47 + 0x4028140B, // 0056 CONNECT R10 R10 R11 + 0x94280E0A, // 0057 GETIDX R10 R7 R10 + 0x8C2C010B, // 0058 GETMET R11 R0 K11 + 0x5C340200, // 0059 MOVE R13 R1 + 0x58380004, // 005A LDCONST R14 K4 + 0x583C0004, // 005B LDCONST R15 K4 + 0x58400004, // 005C LDCONST R16 K4 + 0x50440000, // 005D LDBOOL R17 0 0 + 0x7C2C0C00, // 005E CALL R11 6 + 0x8C2C011C, // 005F GETMET R11 R0 K28 + 0x8834071D, // 0060 GETMBR R13 R3 K29 + 0x8838071E, // 0061 GETMBR R14 R3 K30 + 0x5C3C1000, // 0062 MOVE R15 R8 + 0x5C401200, // 0063 MOVE R16 R9 + 0x5C441400, // 0064 MOVE R17 R10 + 0x5C480C00, // 0065 MOVE R18 R6 + 0x7C2C0E00, // 0066 CALL R11 7 + 0x502C0200, // 0067 LDBOOL R11 1 0 + 0x80041600, // 0068 RET 1 R11 }) ) ); @@ -885,7 +884,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[67]) { /* constants */ + ( &(const bvalue[66]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(opcode), /* K2 */ be_nested_str_weak(local_session_id), @@ -943,20 +942,19 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */ /* K54 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys), /* K55 */ be_nested_str_weak(Msg3), /* K56 */ be_nested_str_weak(SEKeys_Info), - /* K57 */ be_nested_str_weak(rtc), - /* K58 */ be_nested_str_weak(utc), - /* K59 */ be_nested_str_weak(close), - /* K60 */ be_nested_str_weak(set_keys), - /* K61 */ be_nested_str_weak(_breadcrumb), - /* K62 */ be_nested_str_weak(counter_snd_next), - /* K63 */ be_nested_str_weak(set_persist), - /* K64 */ be_nested_str_weak(set_no_expiration), - /* K65 */ be_nested_str_weak(persist_to_fabric), - /* K66 */ be_nested_str_weak(save), + /* K57 */ be_nested_str_weak(rtc_utc), + /* K58 */ be_nested_str_weak(close), + /* K59 */ be_nested_str_weak(set_keys), + /* K60 */ be_nested_str_weak(_breadcrumb), + /* K61 */ be_nested_str_weak(counter_snd_next), + /* K62 */ be_nested_str_weak(set_persist), + /* K63 */ be_nested_str_weak(set_no_expiration), + /* K64 */ be_nested_str_weak(persist_to_fabric), + /* K65 */ be_nested_str_weak(save), }), be_str_weak(parse_Sigma3), &be_const_str_solidified, - ( &(const binstruction[287]) { /* code */ + ( &(const binstruction[286]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x880C0301, // 0001 GETMBR R3 R1 K1 0x54120031, // 0002 LDINT R4 50 @@ -1214,36 +1212,35 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */ 0xB8720A00, // 00FE GETNGBL R28 K5 0x8C703939, // 00FF GETMET R28 R28 K57 0x7C700200, // 0100 CALL R28 1 - 0x9470393A, // 0101 GETIDX R28 R28 K58 - 0x8C740109, // 0102 GETMET R29 R0 K9 - 0x5C7C0200, // 0103 MOVE R31 R1 - 0x58800003, // 0104 LDCONST R32 K3 - 0x58840003, // 0105 LDCONST R33 K3 - 0x58880003, // 0106 LDCONST R34 K3 - 0x508C0200, // 0107 LDBOOL R35 1 0 - 0x7C740C00, // 0108 CALL R29 6 - 0x8C74073B, // 0109 GETMET R29 R3 K59 - 0x7C740200, // 010A CALL R29 1 - 0x8C74073C, // 010B GETMET R29 R3 K60 - 0x5C7C3200, // 010C MOVE R31 R25 - 0x5C803400, // 010D MOVE R32 R26 - 0x5C843600, // 010E MOVE R33 R27 - 0x5C883800, // 010F MOVE R34 R28 - 0x7C740A00, // 0110 CALL R29 5 - 0x900E7B03, // 0111 SETMBR R3 K61 K3 - 0x8C74073E, // 0112 GETMET R29 R3 K62 - 0x7C740200, // 0113 CALL R29 1 - 0x8C74073F, // 0114 GETMET R29 R3 K63 - 0x507C0200, // 0115 LDBOOL R31 1 0 - 0x7C740400, // 0116 CALL R29 2 - 0x8C740740, // 0117 GETMET R29 R3 K64 - 0x7C740200, // 0118 CALL R29 1 - 0x8C740741, // 0119 GETMET R29 R3 K65 - 0x7C740200, // 011A CALL R29 1 - 0x8C740742, // 011B GETMET R29 R3 K66 - 0x7C740200, // 011C CALL R29 1 - 0x50740200, // 011D LDBOOL R29 1 0 - 0x80043A00, // 011E RET 1 R29 + 0x8C740109, // 0101 GETMET R29 R0 K9 + 0x5C7C0200, // 0102 MOVE R31 R1 + 0x58800003, // 0103 LDCONST R32 K3 + 0x58840003, // 0104 LDCONST R33 K3 + 0x58880003, // 0105 LDCONST R34 K3 + 0x508C0200, // 0106 LDBOOL R35 1 0 + 0x7C740C00, // 0107 CALL R29 6 + 0x8C74073A, // 0108 GETMET R29 R3 K58 + 0x7C740200, // 0109 CALL R29 1 + 0x8C74073B, // 010A GETMET R29 R3 K59 + 0x5C7C3200, // 010B MOVE R31 R25 + 0x5C803400, // 010C MOVE R32 R26 + 0x5C843600, // 010D MOVE R33 R27 + 0x5C883800, // 010E MOVE R34 R28 + 0x7C740A00, // 010F CALL R29 5 + 0x900E7903, // 0110 SETMBR R3 K60 K3 + 0x8C74073D, // 0111 GETMET R29 R3 K61 + 0x7C740200, // 0112 CALL R29 1 + 0x8C74073E, // 0113 GETMET R29 R3 K62 + 0x507C0200, // 0114 LDBOOL R31 1 0 + 0x7C740400, // 0115 CALL R29 2 + 0x8C74073F, // 0116 GETMET R29 R3 K63 + 0x7C740200, // 0117 CALL R29 1 + 0x8C740740, // 0118 GETMET R29 R3 K64 + 0x7C740200, // 0119 CALL R29 1 + 0x8C740741, // 011A GETMET R29 R3 K65 + 0x7C740200, // 011B CALL R29 1 + 0x50740200, // 011C LDBOOL R29 1 0 + 0x80043A00, // 011D RET 1 R29 }) ) ); @@ -1391,7 +1388,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[104]) { /* constants */ + ( &(const bvalue[103]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(session), /* K2 */ be_nested_str_weak(opcode), @@ -1447,55 +1444,54 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */ /* K52 */ be_nested_str_weak(responderSessionID), /* K53 */ be_nested_str_weak(sigma2ResumeMIC), /* K54 */ be_nested_str_weak(SessionResumptionKeys), - /* K55 */ be_nested_str_weak(rtc), - /* K56 */ be_nested_str_weak(utc), - /* K57 */ be_nested_str_weak(tlv2raw), - /* K58 */ be_nested_str_weak(__Msg1), - /* K59 */ be_nested_str_weak(build_response), - /* K60 */ be_nested_str_weak(encode_frame), - /* K61 */ be_nested_str_weak(responder), - /* K62 */ be_nested_str_weak(send_response_frame), - /* K63 */ be_nested_str_weak(close), - /* K64 */ be_nested_str_weak(set_keys), - /* K65 */ be_nested_str_weak(_breadcrumb), - /* K66 */ be_nested_str_weak(counter_snd_next), - /* K67 */ be_nested_str_weak(set_persist), - /* K68 */ be_nested_str_weak(set_no_expiration), - /* K69 */ be_nested_str_weak(persist_to_fabric), - /* K70 */ be_nested_str_weak(save), - /* K71 */ be_nested_str_weak(find_fabric_by_destination_id), - /* K72 */ be_nested_str_weak(destinationId), - /* K73 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), - /* K74 */ be_nested_str_weak(__responder_priv), - /* K75 */ be_nested_str_weak(__responder_pub), - /* K76 */ be_nested_str_weak(EC_P256), - /* K77 */ be_nested_str_weak(public_key), - /* K78 */ be_nested_str_weak(shared_key), - /* K79 */ be_nested_str_weak(TLV), - /* K80 */ be_nested_str_weak(Matter_TLV_struct), - /* K81 */ be_nested_str_weak(add_TLV), - /* K82 */ be_nested_str_weak(B2), - /* K83 */ be_nested_str_weak(get_noc), - /* K84 */ be_nested_str_weak(get_icac), - /* K85 */ be_nested_str_weak(ecdsa_sign_sha256), - /* K86 */ be_nested_str_weak(get_pk), - /* K87 */ be_nested_str_weak(Msg1), - /* K88 */ be_nested_str_weak(SHA256), - /* K89 */ be_nested_str_weak(update), - /* K90 */ be_nested_str_weak(out), - /* K91 */ be_nested_str_weak(S2K_Info), - /* K92 */ be_nested_str_weak(get_ipk_group_key), - /* K93 */ be_nested_str_weak(TBEData2_Nonce), - /* K94 */ be_nested_str_weak(encrypt), - /* K95 */ be_nested_str_weak(Sigma2), - /* K96 */ be_nested_str_weak(responderRandom), - /* K97 */ be_nested_str_weak(responderSessionId), - /* K98 */ be_nested_str_weak(responderEphPubKey), - /* K99 */ be_nested_str_weak(encrypted2), - /* K100 */ be_nested_str_weak(__Msg2), - /* K101 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K102 */ be_nested_str_weak(_ip), - /* K103 */ be_nested_str_weak(_port), + /* K55 */ be_nested_str_weak(rtc_utc), + /* K56 */ be_nested_str_weak(tlv2raw), + /* K57 */ be_nested_str_weak(__Msg1), + /* K58 */ be_nested_str_weak(build_response), + /* K59 */ be_nested_str_weak(encode_frame), + /* K60 */ be_nested_str_weak(responder), + /* K61 */ be_nested_str_weak(send_response_frame), + /* K62 */ be_nested_str_weak(close), + /* K63 */ be_nested_str_weak(set_keys), + /* K64 */ be_nested_str_weak(_breadcrumb), + /* K65 */ be_nested_str_weak(counter_snd_next), + /* K66 */ be_nested_str_weak(set_persist), + /* K67 */ be_nested_str_weak(set_no_expiration), + /* K68 */ be_nested_str_weak(persist_to_fabric), + /* K69 */ be_nested_str_weak(save), + /* K70 */ be_nested_str_weak(find_fabric_by_destination_id), + /* K71 */ be_nested_str_weak(destinationId), + /* K72 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), + /* K73 */ be_nested_str_weak(__responder_priv), + /* K74 */ be_nested_str_weak(__responder_pub), + /* K75 */ be_nested_str_weak(EC_P256), + /* K76 */ be_nested_str_weak(public_key), + /* K77 */ be_nested_str_weak(shared_key), + /* K78 */ be_nested_str_weak(TLV), + /* K79 */ be_nested_str_weak(Matter_TLV_struct), + /* K80 */ be_nested_str_weak(add_TLV), + /* K81 */ be_nested_str_weak(B2), + /* K82 */ be_nested_str_weak(get_noc), + /* K83 */ be_nested_str_weak(get_icac), + /* K84 */ be_nested_str_weak(ecdsa_sign_sha256), + /* K85 */ be_nested_str_weak(get_pk), + /* K86 */ be_nested_str_weak(Msg1), + /* K87 */ be_nested_str_weak(SHA256), + /* K88 */ be_nested_str_weak(update), + /* K89 */ be_nested_str_weak(out), + /* K90 */ be_nested_str_weak(S2K_Info), + /* K91 */ be_nested_str_weak(get_ipk_group_key), + /* K92 */ be_nested_str_weak(TBEData2_Nonce), + /* K93 */ be_nested_str_weak(encrypt), + /* K94 */ be_nested_str_weak(Sigma2), + /* K95 */ be_nested_str_weak(responderRandom), + /* K96 */ be_nested_str_weak(responderSessionId), + /* K97 */ be_nested_str_weak(responderEphPubKey), + /* K98 */ be_nested_str_weak(encrypted2), + /* K99 */ be_nested_str_weak(__Msg2), + /* K100 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K101 */ be_nested_str_weak(_ip), + /* K102 */ be_nested_str_weak(_port), }), be_str_weak(parse_Sigma1), &be_const_str_solidified, @@ -1562,7 +1558,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x1C1C0E08, // 003B EQ R7 R7 R8 0x781E0000, // 003C JMPF R7 #003E 0x50140000, // 003D LDBOOL R5 0 0 - 0x781600B6, // 003E JMPF R5 #00F6 + 0x781600B5, // 003E JMPF R5 #00F5 0x881C091A, // 003F GETMBR R7 R4 K26 0x88200914, // 0040 GETMBR R8 R4 K20 0x001C0E08, // 0041 ADD R7 R7 R8 @@ -1610,7 +1606,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x8C3C1B24, // 006B GETMET R15 R13 K36 0x7C3C0200, // 006C CALL R15 1 0x1C40180F, // 006D EQ R16 R12 R15 - 0x78420085, // 006E JMPF R16 #00F5 + 0x78420084, // 006E JMPF R16 #00F4 0x88400D19, // 006F GETMBR R16 R6 K25 0x900E3210, // 0070 SETMBR R3 K25 R16 0x88400326, // 0071 GETMBR R16 R1 K38 @@ -1706,275 +1702,275 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */ 0xB86A0C00, // 00CB GETNGBL R26 K6 0x8C683537, // 00CC GETMET R26 R26 K55 0x7C680200, // 00CD CALL R26 1 - 0x94683538, // 00CE GETIDX R26 R26 K56 - 0x8C6C2B39, // 00CF GETMET R27 R21 K57 - 0x7C6C0200, // 00D0 CALL R27 1 - 0x4C700000, // 00D1 LDNIL R28 - 0x900E741C, // 00D2 SETMBR R3 K58 R28 - 0x8C70033B, // 00D3 GETMET R28 R1 K59 - 0x547A0032, // 00D4 LDINT R30 51 - 0x507C0200, // 00D5 LDBOOL R31 1 0 - 0x7C700600, // 00D6 CALL R28 3 - 0x8C74393C, // 00D7 GETMET R29 R28 K60 - 0x5C7C3600, // 00D8 MOVE R31 R27 - 0x7C740400, // 00D9 CALL R29 2 - 0x8878013D, // 00DA GETMBR R30 R0 K61 - 0x8C783D3E, // 00DB GETMET R30 R30 K62 - 0x5C803800, // 00DC MOVE R32 R28 - 0x7C780400, // 00DD CALL R30 2 - 0x8C78073F, // 00DE GETMET R30 R3 K63 - 0x7C780200, // 00DF CALL R30 1 - 0x8C780740, // 00E0 GETMET R30 R3 K64 - 0x5C802E00, // 00E1 MOVE R32 R23 - 0x5C843000, // 00E2 MOVE R33 R24 - 0x5C883200, // 00E3 MOVE R34 R25 - 0x5C8C3400, // 00E4 MOVE R35 R26 - 0x7C780A00, // 00E5 CALL R30 5 - 0x900E8304, // 00E6 SETMBR R3 K65 K4 - 0x8C780742, // 00E7 GETMET R30 R3 K66 - 0x7C780200, // 00E8 CALL R30 1 - 0x8C780743, // 00E9 GETMET R30 R3 K67 - 0x50800200, // 00EA LDBOOL R32 1 0 - 0x7C780400, // 00EB CALL R30 2 - 0x8C780744, // 00EC GETMET R30 R3 K68 - 0x7C780200, // 00ED CALL R30 1 - 0x8C780745, // 00EE GETMET R30 R3 K69 - 0x7C780200, // 00EF CALL R30 1 - 0x8C780746, // 00F0 GETMET R30 R3 K70 - 0x7C780200, // 00F1 CALL R30 1 - 0x50780200, // 00F2 LDBOOL R30 1 0 - 0x80043C00, // 00F3 RET 1 R30 - 0x70020000, // 00F4 JMP #00F6 - 0x50140000, // 00F5 LDBOOL R5 0 0 - 0x5C1C0A00, // 00F6 MOVE R7 R5 - 0x741E00E6, // 00F7 JMPT R7 #01DF - 0x8C1C0147, // 00F8 GETMET R7 R0 K71 - 0x88240948, // 00F9 GETMBR R9 R4 K72 - 0x8828091A, // 00FA GETMBR R10 R4 K26 - 0x7C1C0600, // 00FB CALL R7 3 - 0x900E3207, // 00FC SETMBR R3 K25 R7 - 0x4C200000, // 00FD LDNIL R8 - 0x1C200608, // 00FE EQ R8 R3 R8 - 0x74220003, // 00FF JMPT R8 #0104 - 0x88200719, // 0100 GETMBR R8 R3 K25 - 0x4C240000, // 0101 LDNIL R9 - 0x1C201009, // 0102 EQ R8 R8 R9 - 0x7822000D, // 0103 JMPF R8 #0112 - 0xB8220C00, // 0104 GETNGBL R8 K6 - 0x8C201107, // 0105 GETMET R8 R8 K7 - 0x58280049, // 0106 LDCONST R10 K73 - 0x582C0009, // 0107 LDCONST R11 K9 - 0x7C200600, // 0108 CALL R8 3 - 0x8C20010A, // 0109 GETMET R8 R0 K10 - 0x5C280200, // 010A MOVE R10 R1 - 0x582C000B, // 010B LDCONST R11 K11 - 0x58300004, // 010C LDCONST R12 K4 - 0x5834000B, // 010D LDCONST R13 K11 - 0x50380000, // 010E LDBOOL R14 0 0 - 0x7C200C00, // 010F CALL R8 6 - 0x50200000, // 0110 LDBOOL R8 0 0 - 0x80041000, // 0111 RET 1 R8 - 0x88200326, // 0112 GETMBR R8 R1 K38 - 0x900E4A08, // 0113 SETMBR R3 K37 R8 - 0x8C200727, // 0114 GETMET R8 R3 K39 - 0x7C200200, // 0115 CALL R8 1 - 0x88200929, // 0116 GETMBR R8 R4 K41 - 0x900E5008, // 0117 SETMBR R3 K40 R8 - 0x88200116, // 0118 GETMBR R8 R0 K22 - 0x88201117, // 0119 GETMBR R8 R8 K23 - 0x8C20112B, // 011A GETMET R8 R8 K43 - 0x7C200200, // 011B CALL R8 1 - 0x900E5408, // 011C SETMBR R3 K42 R8 - 0xB8220C00, // 011D GETNGBL R8 K6 - 0x8C201107, // 011E GETMET R8 R8 K7 - 0x60280018, // 011F GETGBL R10 G24 - 0x582C002C, // 0120 LDCONST R11 K44 - 0x8830072A, // 0121 GETMBR R12 R3 K42 - 0x8834032D, // 0122 GETMBR R13 R1 K45 - 0x8838032E, // 0123 GETMBR R14 R1 K46 - 0x7C280800, // 0124 CALL R10 4 - 0x582C0009, // 0125 LDCONST R11 K9 - 0x7C200600, // 0126 CALL R8 3 - 0x8C200530, // 0127 GETMET R8 R2 K48 - 0x542A000F, // 0128 LDINT R10 16 - 0x7C200400, // 0129 CALL R8 2 - 0x900E5E08, // 012A SETMBR R3 K47 R8 - 0x8C200530, // 012B GETMET R8 R2 K48 - 0x542A001F, // 012C LDINT R10 32 - 0x7C200400, // 012D CALL R8 2 - 0x900E9408, // 012E SETMBR R3 K74 R8 - 0x8C20054C, // 012F GETMET R8 R2 K76 - 0x7C200200, // 0130 CALL R8 1 - 0x8C20114D, // 0131 GETMET R8 R8 K77 - 0x8828074A, // 0132 GETMBR R10 R3 K74 - 0x7C200400, // 0133 CALL R8 2 - 0x900E9608, // 0134 SETMBR R3 K75 R8 - 0x8C200530, // 0135 GETMET R8 R2 K48 - 0x542A001F, // 0136 LDINT R10 32 - 0x7C200400, // 0137 CALL R8 2 - 0x8C24054C, // 0138 GETMET R9 R2 K76 - 0x7C240200, // 0139 CALL R9 1 - 0x8C24134E, // 013A GETMET R9 R9 K78 - 0x882C074A, // 013B GETMBR R11 R3 K74 - 0x88300913, // 013C GETMBR R12 R4 K19 - 0x7C240600, // 013D CALL R9 3 - 0x900E3E09, // 013E SETMBR R3 K31 R9 - 0xB8261A00, // 013F GETNGBL R9 K13 - 0x8824134F, // 0140 GETMBR R9 R9 K79 - 0x8C241350, // 0141 GETMET R9 R9 K80 - 0x7C240200, // 0142 CALL R9 1 - 0x8C281351, // 0143 GETMET R10 R9 K81 - 0x5830000B, // 0144 LDCONST R12 K11 - 0xB8361A00, // 0145 GETNGBL R13 K13 - 0x88341B4F, // 0146 GETMBR R13 R13 K79 - 0x88341B52, // 0147 GETMBR R13 R13 K82 - 0x8C380F53, // 0148 GETMET R14 R7 K83 - 0x7C380200, // 0149 CALL R14 1 - 0x7C280800, // 014A CALL R10 4 - 0x8C281351, // 014B GETMET R10 R9 K81 - 0x5830000C, // 014C LDCONST R12 K12 - 0xB8361A00, // 014D GETNGBL R13 K13 - 0x88341B4F, // 014E GETMBR R13 R13 K79 - 0x88341B52, // 014F GETMBR R13 R13 K82 - 0x8C380F54, // 0150 GETMET R14 R7 K84 - 0x7C380200, // 0151 CALL R14 1 - 0x7C280800, // 0152 CALL R10 4 - 0x8C281351, // 0153 GETMET R10 R9 K81 - 0x58300009, // 0154 LDCONST R12 K9 - 0xB8361A00, // 0155 GETNGBL R13 K13 - 0x88341B4F, // 0156 GETMBR R13 R13 K79 - 0x88341B52, // 0157 GETMBR R13 R13 K82 - 0x8838074B, // 0158 GETMBR R14 R3 K75 - 0x7C280800, // 0159 CALL R10 4 - 0x8C281351, // 015A GETMET R10 R9 K81 - 0x54320003, // 015B LDINT R12 4 - 0xB8361A00, // 015C GETNGBL R13 K13 - 0x88341B4F, // 015D GETMBR R13 R13 K79 - 0x88341B52, // 015E GETMBR R13 R13 K82 - 0x88380913, // 015F GETMBR R14 R4 K19 - 0x7C280800, // 0160 CALL R10 4 - 0x8C28054C, // 0161 GETMET R10 R2 K76 - 0x7C280200, // 0162 CALL R10 1 - 0x8C281555, // 0163 GETMET R10 R10 K85 - 0x8C300F56, // 0164 GETMET R12 R7 K86 - 0x7C300200, // 0165 CALL R12 1 - 0x8C341339, // 0166 GETMET R13 R9 K57 - 0x7C340200, // 0167 CALL R13 1 - 0x7C280600, // 0168 CALL R10 3 - 0xB82E1A00, // 0169 GETNGBL R11 K13 - 0x882C174F, // 016A GETMBR R11 R11 K79 - 0x8C2C1750, // 016B GETMET R11 R11 K80 - 0x7C2C0200, // 016C CALL R11 1 - 0x8C301751, // 016D GETMET R12 R11 K81 - 0x5838000B, // 016E LDCONST R14 K11 - 0xB83E1A00, // 016F GETNGBL R15 K13 - 0x883C1F4F, // 0170 GETMBR R15 R15 K79 - 0x883C1F52, // 0171 GETMBR R15 R15 K82 - 0x8C400F53, // 0172 GETMET R16 R7 K83 - 0x7C400200, // 0173 CALL R16 1 - 0x7C300800, // 0174 CALL R12 4 - 0x8C301751, // 0175 GETMET R12 R11 K81 - 0x5838000C, // 0176 LDCONST R14 K12 - 0xB83E1A00, // 0177 GETNGBL R15 K13 - 0x883C1F4F, // 0178 GETMBR R15 R15 K79 - 0x883C1F52, // 0179 GETMBR R15 R15 K82 - 0x8C400F54, // 017A GETMET R16 R7 K84 - 0x7C400200, // 017B CALL R16 1 - 0x7C300800, // 017C CALL R12 4 - 0x8C301751, // 017D GETMET R12 R11 K81 - 0x58380009, // 017E LDCONST R14 K9 - 0xB83E1A00, // 017F GETNGBL R15 K13 - 0x883C1F4F, // 0180 GETMBR R15 R15 K79 - 0x883C1F52, // 0181 GETMBR R15 R15 K82 - 0x5C401400, // 0182 MOVE R16 R10 - 0x7C300800, // 0183 CALL R12 4 - 0x8C301751, // 0184 GETMET R12 R11 K81 - 0x543A0003, // 0185 LDINT R14 4 - 0xB83E1A00, // 0186 GETNGBL R15 K13 - 0x883C1F4F, // 0187 GETMBR R15 R15 K79 - 0x883C1F52, // 0188 GETMBR R15 R15 K82 - 0x8840072F, // 0189 GETMBR R16 R3 K47 - 0x7C300800, // 018A CALL R12 4 - 0x88300957, // 018B GETMBR R12 R4 K87 - 0x900E740C, // 018C SETMBR R3 K58 R12 - 0x8C300558, // 018D GETMET R12 R2 K88 - 0x7C300200, // 018E CALL R12 1 - 0x8C301959, // 018F GETMET R12 R12 K89 - 0x8838073A, // 0190 GETMBR R14 R3 K58 - 0x7C300400, // 0191 CALL R12 2 - 0x8C30195A, // 0192 GETMET R12 R12 K90 - 0x7C300200, // 0193 CALL R12 1 - 0x60340015, // 0194 GETGBL R13 G21 - 0x7C340000, // 0195 CALL R13 0 - 0x8C341B1B, // 0196 GETMET R13 R13 K27 - 0x883C015B, // 0197 GETMBR R15 R0 K91 - 0x7C340400, // 0198 CALL R13 2 - 0x8C380F5C, // 0199 GETMET R14 R7 K92 - 0x7C380200, // 019A CALL R14 1 - 0x00381C08, // 019B ADD R14 R14 R8 - 0x883C074B, // 019C GETMBR R15 R3 K75 - 0x00381C0F, // 019D ADD R14 R14 R15 - 0x00381C0C, // 019E ADD R14 R14 R12 - 0x8C3C051D, // 019F GETMET R15 R2 K29 - 0x7C3C0200, // 01A0 CALL R15 1 - 0x8C3C1F1E, // 01A1 GETMET R15 R15 K30 - 0x8844071F, // 01A2 GETMBR R17 R3 K31 - 0x5C481C00, // 01A3 MOVE R18 R14 - 0x5C4C1A00, // 01A4 MOVE R19 R13 - 0x5452000F, // 01A5 LDINT R20 16 - 0x7C3C0A00, // 01A6 CALL R15 5 - 0x8C401739, // 01A7 GETMET R16 R11 K57 - 0x7C400200, // 01A8 CALL R16 1 - 0x8C440522, // 01A9 GETMET R17 R2 K34 - 0x5C4C1E00, // 01AA MOVE R19 R15 - 0x60500015, // 01AB GETGBL R20 G21 - 0x7C500000, // 01AC CALL R20 0 - 0x8C50291B, // 01AD GETMET R20 R20 K27 - 0x8858015D, // 01AE GETMBR R22 R0 K93 - 0x7C500400, // 01AF CALL R20 2 - 0x60540015, // 01B0 GETGBL R21 G21 - 0x7C540000, // 01B1 CALL R21 0 - 0x6058000C, // 01B2 GETGBL R22 G12 - 0x5C5C2000, // 01B3 MOVE R23 R16 - 0x7C580200, // 01B4 CALL R22 1 - 0x545E000F, // 01B5 LDINT R23 16 - 0x7C440C00, // 01B6 CALL R17 6 - 0x8C48235E, // 01B7 GETMET R18 R17 K94 - 0x5C502000, // 01B8 MOVE R20 R16 - 0x7C480400, // 01B9 CALL R18 2 - 0x8C4C2324, // 01BA GETMET R19 R17 K36 - 0x7C4C0200, // 01BB CALL R19 1 - 0x00482413, // 01BC ADD R18 R18 R19 - 0xB84E1A00, // 01BD GETNGBL R19 K13 - 0x8C4C275F, // 01BE GETMET R19 R19 K95 - 0x7C4C0200, // 01BF CALL R19 1 - 0x904EC008, // 01C0 SETMBR R19 K96 R8 - 0x8850072A, // 01C1 GETMBR R20 R3 K42 - 0x904EC214, // 01C2 SETMBR R19 K97 R20 - 0x8850074B, // 01C3 GETMBR R20 R3 K75 - 0x904EC414, // 01C4 SETMBR R19 K98 R20 - 0x904EC612, // 01C5 SETMBR R19 K99 R18 - 0x8C502739, // 01C6 GETMET R20 R19 K57 - 0x7C500200, // 01C7 CALL R20 1 - 0x900EC814, // 01C8 SETMBR R3 K100 R20 - 0x8C54033B, // 01C9 GETMET R21 R1 K59 - 0x545E0030, // 01CA LDINT R23 49 - 0x50600200, // 01CB LDBOOL R24 1 0 - 0x7C540600, // 01CC CALL R21 3 - 0x8C582B3C, // 01CD GETMET R22 R21 K60 - 0x5C602800, // 01CE MOVE R24 R20 - 0x7C580400, // 01CF CALL R22 2 - 0xB85E0C00, // 01D0 GETNGBL R23 K6 - 0x8C5C2F07, // 01D1 GETMET R23 R23 K7 - 0x60640018, // 01D2 GETGBL R25 G24 - 0x58680065, // 01D3 LDCONST R26 K101 - 0x886C072A, // 01D4 GETMBR R27 R3 K42 - 0x88700766, // 01D5 GETMBR R28 R3 K102 - 0x88740767, // 01D6 GETMBR R29 R3 K103 - 0x7C640800, // 01D7 CALL R25 4 - 0x7C5C0400, // 01D8 CALL R23 2 - 0x885C013D, // 01D9 GETMBR R23 R0 K61 - 0x8C5C2F3E, // 01DA GETMET R23 R23 K62 + 0x8C6C2B38, // 00CE GETMET R27 R21 K56 + 0x7C6C0200, // 00CF CALL R27 1 + 0x4C700000, // 00D0 LDNIL R28 + 0x900E721C, // 00D1 SETMBR R3 K57 R28 + 0x8C70033A, // 00D2 GETMET R28 R1 K58 + 0x547A0032, // 00D3 LDINT R30 51 + 0x507C0200, // 00D4 LDBOOL R31 1 0 + 0x7C700600, // 00D5 CALL R28 3 + 0x8C74393B, // 00D6 GETMET R29 R28 K59 + 0x5C7C3600, // 00D7 MOVE R31 R27 + 0x7C740400, // 00D8 CALL R29 2 + 0x8878013C, // 00D9 GETMBR R30 R0 K60 + 0x8C783D3D, // 00DA GETMET R30 R30 K61 + 0x5C803800, // 00DB MOVE R32 R28 + 0x7C780400, // 00DC CALL R30 2 + 0x8C78073E, // 00DD GETMET R30 R3 K62 + 0x7C780200, // 00DE CALL R30 1 + 0x8C78073F, // 00DF GETMET R30 R3 K63 + 0x5C802E00, // 00E0 MOVE R32 R23 + 0x5C843000, // 00E1 MOVE R33 R24 + 0x5C883200, // 00E2 MOVE R34 R25 + 0x5C8C3400, // 00E3 MOVE R35 R26 + 0x7C780A00, // 00E4 CALL R30 5 + 0x900E8104, // 00E5 SETMBR R3 K64 K4 + 0x8C780741, // 00E6 GETMET R30 R3 K65 + 0x7C780200, // 00E7 CALL R30 1 + 0x8C780742, // 00E8 GETMET R30 R3 K66 + 0x50800200, // 00E9 LDBOOL R32 1 0 + 0x7C780400, // 00EA CALL R30 2 + 0x8C780743, // 00EB GETMET R30 R3 K67 + 0x7C780200, // 00EC CALL R30 1 + 0x8C780744, // 00ED GETMET R30 R3 K68 + 0x7C780200, // 00EE CALL R30 1 + 0x8C780745, // 00EF GETMET R30 R3 K69 + 0x7C780200, // 00F0 CALL R30 1 + 0x50780200, // 00F1 LDBOOL R30 1 0 + 0x80043C00, // 00F2 RET 1 R30 + 0x70020000, // 00F3 JMP #00F5 + 0x50140000, // 00F4 LDBOOL R5 0 0 + 0x5C1C0A00, // 00F5 MOVE R7 R5 + 0x741E00E7, // 00F6 JMPT R7 #01DF + 0x8C1C0146, // 00F7 GETMET R7 R0 K70 + 0x88240947, // 00F8 GETMBR R9 R4 K71 + 0x8828091A, // 00F9 GETMBR R10 R4 K26 + 0x7C1C0600, // 00FA CALL R7 3 + 0x900E3207, // 00FB SETMBR R3 K25 R7 + 0x4C200000, // 00FC LDNIL R8 + 0x1C200608, // 00FD EQ R8 R3 R8 + 0x74220003, // 00FE JMPT R8 #0103 + 0x88200719, // 00FF GETMBR R8 R3 K25 + 0x4C240000, // 0100 LDNIL R9 + 0x1C201009, // 0101 EQ R8 R8 R9 + 0x7822000D, // 0102 JMPF R8 #0111 + 0xB8220C00, // 0103 GETNGBL R8 K6 + 0x8C201107, // 0104 GETMET R8 R8 K7 + 0x58280048, // 0105 LDCONST R10 K72 + 0x582C0009, // 0106 LDCONST R11 K9 + 0x7C200600, // 0107 CALL R8 3 + 0x8C20010A, // 0108 GETMET R8 R0 K10 + 0x5C280200, // 0109 MOVE R10 R1 + 0x582C000B, // 010A LDCONST R11 K11 + 0x58300004, // 010B LDCONST R12 K4 + 0x5834000B, // 010C LDCONST R13 K11 + 0x50380000, // 010D LDBOOL R14 0 0 + 0x7C200C00, // 010E CALL R8 6 + 0x50200000, // 010F LDBOOL R8 0 0 + 0x80041000, // 0110 RET 1 R8 + 0x88200326, // 0111 GETMBR R8 R1 K38 + 0x900E4A08, // 0112 SETMBR R3 K37 R8 + 0x8C200727, // 0113 GETMET R8 R3 K39 + 0x7C200200, // 0114 CALL R8 1 + 0x88200929, // 0115 GETMBR R8 R4 K41 + 0x900E5008, // 0116 SETMBR R3 K40 R8 + 0x88200116, // 0117 GETMBR R8 R0 K22 + 0x88201117, // 0118 GETMBR R8 R8 K23 + 0x8C20112B, // 0119 GETMET R8 R8 K43 + 0x7C200200, // 011A CALL R8 1 + 0x900E5408, // 011B SETMBR R3 K42 R8 + 0xB8220C00, // 011C GETNGBL R8 K6 + 0x8C201107, // 011D GETMET R8 R8 K7 + 0x60280018, // 011E GETGBL R10 G24 + 0x582C002C, // 011F LDCONST R11 K44 + 0x8830072A, // 0120 GETMBR R12 R3 K42 + 0x8834032D, // 0121 GETMBR R13 R1 K45 + 0x8838032E, // 0122 GETMBR R14 R1 K46 + 0x7C280800, // 0123 CALL R10 4 + 0x582C0009, // 0124 LDCONST R11 K9 + 0x7C200600, // 0125 CALL R8 3 + 0x8C200530, // 0126 GETMET R8 R2 K48 + 0x542A000F, // 0127 LDINT R10 16 + 0x7C200400, // 0128 CALL R8 2 + 0x900E5E08, // 0129 SETMBR R3 K47 R8 + 0x8C200530, // 012A GETMET R8 R2 K48 + 0x542A001F, // 012B LDINT R10 32 + 0x7C200400, // 012C CALL R8 2 + 0x900E9208, // 012D SETMBR R3 K73 R8 + 0x8C20054B, // 012E GETMET R8 R2 K75 + 0x7C200200, // 012F CALL R8 1 + 0x8C20114C, // 0130 GETMET R8 R8 K76 + 0x88280749, // 0131 GETMBR R10 R3 K73 + 0x7C200400, // 0132 CALL R8 2 + 0x900E9408, // 0133 SETMBR R3 K74 R8 + 0x8C200530, // 0134 GETMET R8 R2 K48 + 0x542A001F, // 0135 LDINT R10 32 + 0x7C200400, // 0136 CALL R8 2 + 0x8C24054B, // 0137 GETMET R9 R2 K75 + 0x7C240200, // 0138 CALL R9 1 + 0x8C24134D, // 0139 GETMET R9 R9 K77 + 0x882C0749, // 013A GETMBR R11 R3 K73 + 0x88300913, // 013B GETMBR R12 R4 K19 + 0x7C240600, // 013C CALL R9 3 + 0x900E3E09, // 013D SETMBR R3 K31 R9 + 0xB8261A00, // 013E GETNGBL R9 K13 + 0x8824134E, // 013F GETMBR R9 R9 K78 + 0x8C24134F, // 0140 GETMET R9 R9 K79 + 0x7C240200, // 0141 CALL R9 1 + 0x8C281350, // 0142 GETMET R10 R9 K80 + 0x5830000B, // 0143 LDCONST R12 K11 + 0xB8361A00, // 0144 GETNGBL R13 K13 + 0x88341B4E, // 0145 GETMBR R13 R13 K78 + 0x88341B51, // 0146 GETMBR R13 R13 K81 + 0x8C380F52, // 0147 GETMET R14 R7 K82 + 0x7C380200, // 0148 CALL R14 1 + 0x7C280800, // 0149 CALL R10 4 + 0x8C281350, // 014A GETMET R10 R9 K80 + 0x5830000C, // 014B LDCONST R12 K12 + 0xB8361A00, // 014C GETNGBL R13 K13 + 0x88341B4E, // 014D GETMBR R13 R13 K78 + 0x88341B51, // 014E GETMBR R13 R13 K81 + 0x8C380F53, // 014F GETMET R14 R7 K83 + 0x7C380200, // 0150 CALL R14 1 + 0x7C280800, // 0151 CALL R10 4 + 0x8C281350, // 0152 GETMET R10 R9 K80 + 0x58300009, // 0153 LDCONST R12 K9 + 0xB8361A00, // 0154 GETNGBL R13 K13 + 0x88341B4E, // 0155 GETMBR R13 R13 K78 + 0x88341B51, // 0156 GETMBR R13 R13 K81 + 0x8838074A, // 0157 GETMBR R14 R3 K74 + 0x7C280800, // 0158 CALL R10 4 + 0x8C281350, // 0159 GETMET R10 R9 K80 + 0x54320003, // 015A LDINT R12 4 + 0xB8361A00, // 015B GETNGBL R13 K13 + 0x88341B4E, // 015C GETMBR R13 R13 K78 + 0x88341B51, // 015D GETMBR R13 R13 K81 + 0x88380913, // 015E GETMBR R14 R4 K19 + 0x7C280800, // 015F CALL R10 4 + 0x8C28054B, // 0160 GETMET R10 R2 K75 + 0x7C280200, // 0161 CALL R10 1 + 0x8C281554, // 0162 GETMET R10 R10 K84 + 0x8C300F55, // 0163 GETMET R12 R7 K85 + 0x7C300200, // 0164 CALL R12 1 + 0x8C341338, // 0165 GETMET R13 R9 K56 + 0x7C340200, // 0166 CALL R13 1 + 0x7C280600, // 0167 CALL R10 3 + 0xB82E1A00, // 0168 GETNGBL R11 K13 + 0x882C174E, // 0169 GETMBR R11 R11 K78 + 0x8C2C174F, // 016A GETMET R11 R11 K79 + 0x7C2C0200, // 016B CALL R11 1 + 0x8C301750, // 016C GETMET R12 R11 K80 + 0x5838000B, // 016D LDCONST R14 K11 + 0xB83E1A00, // 016E GETNGBL R15 K13 + 0x883C1F4E, // 016F GETMBR R15 R15 K78 + 0x883C1F51, // 0170 GETMBR R15 R15 K81 + 0x8C400F52, // 0171 GETMET R16 R7 K82 + 0x7C400200, // 0172 CALL R16 1 + 0x7C300800, // 0173 CALL R12 4 + 0x8C301750, // 0174 GETMET R12 R11 K80 + 0x5838000C, // 0175 LDCONST R14 K12 + 0xB83E1A00, // 0176 GETNGBL R15 K13 + 0x883C1F4E, // 0177 GETMBR R15 R15 K78 + 0x883C1F51, // 0178 GETMBR R15 R15 K81 + 0x8C400F53, // 0179 GETMET R16 R7 K83 + 0x7C400200, // 017A CALL R16 1 + 0x7C300800, // 017B CALL R12 4 + 0x8C301750, // 017C GETMET R12 R11 K80 + 0x58380009, // 017D LDCONST R14 K9 + 0xB83E1A00, // 017E GETNGBL R15 K13 + 0x883C1F4E, // 017F GETMBR R15 R15 K78 + 0x883C1F51, // 0180 GETMBR R15 R15 K81 + 0x5C401400, // 0181 MOVE R16 R10 + 0x7C300800, // 0182 CALL R12 4 + 0x8C301750, // 0183 GETMET R12 R11 K80 + 0x543A0003, // 0184 LDINT R14 4 + 0xB83E1A00, // 0185 GETNGBL R15 K13 + 0x883C1F4E, // 0186 GETMBR R15 R15 K78 + 0x883C1F51, // 0187 GETMBR R15 R15 K81 + 0x8840072F, // 0188 GETMBR R16 R3 K47 + 0x7C300800, // 0189 CALL R12 4 + 0x88300956, // 018A GETMBR R12 R4 K86 + 0x900E720C, // 018B SETMBR R3 K57 R12 + 0x8C300557, // 018C GETMET R12 R2 K87 + 0x7C300200, // 018D CALL R12 1 + 0x8C301958, // 018E GETMET R12 R12 K88 + 0x88380739, // 018F GETMBR R14 R3 K57 + 0x7C300400, // 0190 CALL R12 2 + 0x8C301959, // 0191 GETMET R12 R12 K89 + 0x7C300200, // 0192 CALL R12 1 + 0x60340015, // 0193 GETGBL R13 G21 + 0x7C340000, // 0194 CALL R13 0 + 0x8C341B1B, // 0195 GETMET R13 R13 K27 + 0x883C015A, // 0196 GETMBR R15 R0 K90 + 0x7C340400, // 0197 CALL R13 2 + 0x8C380F5B, // 0198 GETMET R14 R7 K91 + 0x7C380200, // 0199 CALL R14 1 + 0x00381C08, // 019A ADD R14 R14 R8 + 0x883C074A, // 019B GETMBR R15 R3 K74 + 0x00381C0F, // 019C ADD R14 R14 R15 + 0x00381C0C, // 019D ADD R14 R14 R12 + 0x8C3C051D, // 019E GETMET R15 R2 K29 + 0x7C3C0200, // 019F CALL R15 1 + 0x8C3C1F1E, // 01A0 GETMET R15 R15 K30 + 0x8844071F, // 01A1 GETMBR R17 R3 K31 + 0x5C481C00, // 01A2 MOVE R18 R14 + 0x5C4C1A00, // 01A3 MOVE R19 R13 + 0x5452000F, // 01A4 LDINT R20 16 + 0x7C3C0A00, // 01A5 CALL R15 5 + 0x8C401738, // 01A6 GETMET R16 R11 K56 + 0x7C400200, // 01A7 CALL R16 1 + 0x8C440522, // 01A8 GETMET R17 R2 K34 + 0x5C4C1E00, // 01A9 MOVE R19 R15 + 0x60500015, // 01AA GETGBL R20 G21 + 0x7C500000, // 01AB CALL R20 0 + 0x8C50291B, // 01AC GETMET R20 R20 K27 + 0x8858015C, // 01AD GETMBR R22 R0 K92 + 0x7C500400, // 01AE CALL R20 2 + 0x60540015, // 01AF GETGBL R21 G21 + 0x7C540000, // 01B0 CALL R21 0 + 0x6058000C, // 01B1 GETGBL R22 G12 + 0x5C5C2000, // 01B2 MOVE R23 R16 + 0x7C580200, // 01B3 CALL R22 1 + 0x545E000F, // 01B4 LDINT R23 16 + 0x7C440C00, // 01B5 CALL R17 6 + 0x8C48235D, // 01B6 GETMET R18 R17 K93 + 0x5C502000, // 01B7 MOVE R20 R16 + 0x7C480400, // 01B8 CALL R18 2 + 0x8C4C2324, // 01B9 GETMET R19 R17 K36 + 0x7C4C0200, // 01BA CALL R19 1 + 0x00482413, // 01BB ADD R18 R18 R19 + 0xB84E1A00, // 01BC GETNGBL R19 K13 + 0x8C4C275E, // 01BD GETMET R19 R19 K94 + 0x7C4C0200, // 01BE CALL R19 1 + 0x904EBE08, // 01BF SETMBR R19 K95 R8 + 0x8850072A, // 01C0 GETMBR R20 R3 K42 + 0x904EC014, // 01C1 SETMBR R19 K96 R20 + 0x8850074A, // 01C2 GETMBR R20 R3 K74 + 0x904EC214, // 01C3 SETMBR R19 K97 R20 + 0x904EC412, // 01C4 SETMBR R19 K98 R18 + 0x8C502738, // 01C5 GETMET R20 R19 K56 + 0x7C500200, // 01C6 CALL R20 1 + 0x900EC614, // 01C7 SETMBR R3 K99 R20 + 0x8C54033A, // 01C8 GETMET R21 R1 K58 + 0x545E0030, // 01C9 LDINT R23 49 + 0x50600200, // 01CA LDBOOL R24 1 0 + 0x7C540600, // 01CB CALL R21 3 + 0x8C582B3B, // 01CC GETMET R22 R21 K59 + 0x5C602800, // 01CD MOVE R24 R20 + 0x7C580400, // 01CE CALL R22 2 + 0xB85E0C00, // 01CF GETNGBL R23 K6 + 0x8C5C2F07, // 01D0 GETMET R23 R23 K7 + 0x60640018, // 01D1 GETGBL R25 G24 + 0x58680064, // 01D2 LDCONST R26 K100 + 0x886C072A, // 01D3 GETMBR R27 R3 K42 + 0x88700765, // 01D4 GETMBR R28 R3 K101 + 0x88740766, // 01D5 GETMBR R29 R3 K102 + 0x7C640800, // 01D6 CALL R25 4 + 0x5868000C, // 01D7 LDCONST R26 K12 + 0x7C5C0600, // 01D8 CALL R23 3 + 0x885C013C, // 01D9 GETMBR R23 R0 K60 + 0x8C5C2F3D, // 01DA GETMET R23 R23 K61 0x5C642A00, // 01DB MOVE R25 R21 0x7C5C0400, // 01DC CALL R23 2 0x505C0200, // 01DD LDBOOL R23 1 0 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h index 161e6a06d042..ce96a72604d1 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h @@ -7,12 +7,12 @@ extern const bclass be_class_Matter_Device; /******************************************************************** -** Solidified function: autoconf_sensors_list +** Solidified function: clean_remotes ********************************************************************/ -be_local_closure(Matter_Device_autoconf_sensors_list, /* name */ +be_local_closure(Matter_Device_clean_remotes, /* name */ be_nested_proto( 10, /* nstack */ - 2, /* argc */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -20,147 +20,109 @@ be_local_closure(Matter_Device_autoconf_sensors_list, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(k2l), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(Temperature), - /* K3 */ be_nested_str_weak(_X23Temperature), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(type), - /* K6 */ be_nested_str_weak(temperature), - /* K7 */ be_nested_str_weak(filter), - /* K8 */ be_nested_str_weak(stop_iteration), - /* K9 */ be_nested_str_weak(Pressure), - /* K10 */ be_nested_str_weak(_X23Pressure), - /* K11 */ be_nested_str_weak(pressure), - /* K12 */ be_nested_str_weak(Illuminance), - /* K13 */ be_nested_str_weak(_X23Illuminance), - /* K14 */ be_nested_str_weak(illuminance), - /* K15 */ be_nested_str_weak(Humidity), - /* K16 */ be_nested_str_weak(_X23Humidity), - /* K17 */ be_nested_str_weak(humidity), + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(http_remotes), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(plugins), + /* K5 */ be_nested_str_weak(get), + /* K6 */ be_nested_str_weak(http_remote), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(keys), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(log), + /* K13 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), + /* K14 */ be_nested_str_weak(addr), + /* K15 */ be_const_int(3), + /* K16 */ be_nested_str_weak(close), + /* K17 */ be_nested_str_weak(remove), }), - be_str_weak(autoconf_sensors_list), + be_str_weak(clean_remotes), &be_const_str_solidified, - ( &(const binstruction[119]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x8C100100, // 0003 GETMET R4 R0 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x7C100400, // 0005 CALL R4 2 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA8020013, // 0007 EXBLK 0 #001C - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x94140204, // 000A GETIDX R5 R1 R4 - 0x6018000F, // 000B GETGBL R6 G15 - 0x5C1C0A00, // 000C MOVE R7 R5 - 0x60200013, // 000D GETGBL R8 G19 - 0x7C180400, // 000E CALL R6 2 - 0x781A000A, // 000F JMPF R6 #001B - 0x8C180B01, // 0010 GETMET R6 R5 K1 - 0x58200002, // 0011 LDCONST R8 K2 - 0x7C180400, // 0012 CALL R6 2 - 0x781A0006, // 0013 JMPF R6 #001B - 0x00180903, // 0014 ADD R6 R4 K3 - 0x8C1C0504, // 0015 GETMET R7 R2 K4 - 0x60240013, // 0016 GETGBL R9 G19 - 0x7C240000, // 0017 CALL R9 0 - 0x98260B06, // 0018 SETIDX R9 K5 K6 - 0x98260E06, // 0019 SETIDX R9 K7 R6 - 0x7C1C0400, // 001A CALL R7 2 - 0x7001FFEB, // 001B JMP #0008 - 0x580C0008, // 001C LDCONST R3 K8 - 0xAC0C0200, // 001D CATCH R3 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x600C0010, // 001F GETGBL R3 G16 - 0x8C100100, // 0020 GETMET R4 R0 K0 - 0x5C180200, // 0021 MOVE R6 R1 - 0x7C100400, // 0022 CALL R4 2 - 0x7C0C0200, // 0023 CALL R3 1 - 0xA8020013, // 0024 EXBLK 0 #0039 - 0x5C100600, // 0025 MOVE R4 R3 - 0x7C100000, // 0026 CALL R4 0 - 0x94140204, // 0027 GETIDX R5 R1 R4 - 0x6018000F, // 0028 GETGBL R6 G15 - 0x5C1C0A00, // 0029 MOVE R7 R5 - 0x60200013, // 002A GETGBL R8 G19 - 0x7C180400, // 002B CALL R6 2 - 0x781A000A, // 002C JMPF R6 #0038 - 0x8C180B01, // 002D GETMET R6 R5 K1 - 0x58200009, // 002E LDCONST R8 K9 - 0x7C180400, // 002F CALL R6 2 - 0x781A0006, // 0030 JMPF R6 #0038 - 0x0018090A, // 0031 ADD R6 R4 K10 - 0x8C1C0504, // 0032 GETMET R7 R2 K4 - 0x60240013, // 0033 GETGBL R9 G19 - 0x7C240000, // 0034 CALL R9 0 - 0x98260B0B, // 0035 SETIDX R9 K5 K11 - 0x98260E06, // 0036 SETIDX R9 K7 R6 - 0x7C1C0400, // 0037 CALL R7 2 - 0x7001FFEB, // 0038 JMP #0025 - 0x580C0008, // 0039 LDCONST R3 K8 - 0xAC0C0200, // 003A CATCH R3 1 0 - 0xB0080000, // 003B RAISE 2 R0 R0 - 0x600C0010, // 003C GETGBL R3 G16 - 0x8C100100, // 003D GETMET R4 R0 K0 - 0x5C180200, // 003E MOVE R6 R1 - 0x7C100400, // 003F CALL R4 2 - 0x7C0C0200, // 0040 CALL R3 1 - 0xA8020013, // 0041 EXBLK 0 #0056 - 0x5C100600, // 0042 MOVE R4 R3 - 0x7C100000, // 0043 CALL R4 0 - 0x94140204, // 0044 GETIDX R5 R1 R4 - 0x6018000F, // 0045 GETGBL R6 G15 - 0x5C1C0A00, // 0046 MOVE R7 R5 - 0x60200013, // 0047 GETGBL R8 G19 - 0x7C180400, // 0048 CALL R6 2 - 0x781A000A, // 0049 JMPF R6 #0055 - 0x8C180B01, // 004A GETMET R6 R5 K1 - 0x5820000C, // 004B LDCONST R8 K12 - 0x7C180400, // 004C CALL R6 2 - 0x781A0006, // 004D JMPF R6 #0055 - 0x0018090D, // 004E ADD R6 R4 K13 - 0x8C1C0504, // 004F GETMET R7 R2 K4 - 0x60240013, // 0050 GETGBL R9 G19 - 0x7C240000, // 0051 CALL R9 0 - 0x98260B0E, // 0052 SETIDX R9 K5 K14 - 0x98260E06, // 0053 SETIDX R9 K7 R6 - 0x7C1C0400, // 0054 CALL R7 2 - 0x7001FFEB, // 0055 JMP #0042 - 0x580C0008, // 0056 LDCONST R3 K8 - 0xAC0C0200, // 0057 CATCH R3 1 0 - 0xB0080000, // 0058 RAISE 2 R0 R0 - 0x600C0010, // 0059 GETGBL R3 G16 - 0x8C100100, // 005A GETMET R4 R0 K0 - 0x5C180200, // 005B MOVE R6 R1 - 0x7C100400, // 005C CALL R4 2 - 0x7C0C0200, // 005D CALL R3 1 - 0xA8020013, // 005E EXBLK 0 #0073 - 0x5C100600, // 005F MOVE R4 R3 - 0x7C100000, // 0060 CALL R4 0 - 0x94140204, // 0061 GETIDX R5 R1 R4 - 0x6018000F, // 0062 GETGBL R6 G15 - 0x5C1C0A00, // 0063 MOVE R7 R5 - 0x60200013, // 0064 GETGBL R8 G19 - 0x7C180400, // 0065 CALL R6 2 - 0x781A000A, // 0066 JMPF R6 #0072 - 0x8C180B01, // 0067 GETMET R6 R5 K1 - 0x5820000F, // 0068 LDCONST R8 K15 - 0x7C180400, // 0069 CALL R6 2 - 0x781A0006, // 006A JMPF R6 #0072 - 0x00180910, // 006B ADD R6 R4 K16 - 0x8C1C0504, // 006C GETMET R7 R2 K4 - 0x60240013, // 006D GETGBL R9 G19 - 0x7C240000, // 006E CALL R9 0 - 0x98260B11, // 006F SETIDX R9 K5 K17 - 0x98260E06, // 0070 SETIDX R9 K7 R6 - 0x7C1C0400, // 0071 CALL R7 2 - 0x7001FFEB, // 0072 JMP #005F - 0x580C0008, // 0073 LDCONST R3 K8 - 0xAC0C0200, // 0074 CATCH R3 1 0 - 0xB0080000, // 0075 RAISE 2 R0 R0 - 0x80040400, // 0076 RET 1 R2 + ( &(const binstruction[81]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x780A004C, // 0002 JMPF R2 #0050 + 0x60080013, // 0003 GETGBL R2 G19 + 0x7C080000, // 0004 CALL R2 0 + 0x600C0010, // 0005 GETGBL R3 G16 + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x7C0C0200, // 0007 CALL R3 1 + 0xA8020003, // 0008 EXBLK 0 #000D + 0x5C100600, // 0009 MOVE R4 R3 + 0x7C100000, // 000A CALL R4 0 + 0x98080902, // 000B SETIDX R2 R4 K2 + 0x7001FFFB, // 000C JMP #0009 + 0x580C0003, // 000D LDCONST R3 K3 + 0xAC0C0200, // 000E CATCH R3 1 0 + 0xB0080000, // 000F RAISE 2 R0 R0 + 0x600C0010, // 0010 GETGBL R3 G16 + 0x88100104, // 0011 GETMBR R4 R0 K4 + 0x7C0C0200, // 0012 CALL R3 1 + 0xA802000F, // 0013 EXBLK 0 #0024 + 0x5C100600, // 0014 MOVE R4 R3 + 0x7C100000, // 0015 CALL R4 0 + 0x8C140305, // 0016 GETMET R5 R1 K5 + 0x5C1C0800, // 0017 MOVE R7 R4 + 0x58200006, // 0018 LDCONST R8 K6 + 0x7C140600, // 0019 CALL R5 3 + 0x4C180000, // 001A LDNIL R6 + 0x20180A06, // 001B NE R6 R5 R6 + 0x781A0005, // 001C JMPF R6 #0023 + 0x8C180507, // 001D GETMET R6 R2 K7 + 0x5C200A00, // 001E MOVE R8 R5 + 0x58240002, // 001F LDCONST R9 K2 + 0x7C180600, // 0020 CALL R6 3 + 0x00180D08, // 0021 ADD R6 R6 K8 + 0x98080A06, // 0022 SETIDX R2 R5 R6 + 0x7001FFEF, // 0023 JMP #0014 + 0x580C0003, // 0024 LDCONST R3 K3 + 0xAC0C0200, // 0025 CATCH R3 1 0 + 0xB0080000, // 0026 RAISE 2 R0 R0 + 0x600C0012, // 0027 GETGBL R3 G18 + 0x7C0C0000, // 0028 CALL R3 0 + 0x60100010, // 0029 GETGBL R4 G16 + 0x8C140509, // 002A GETMET R5 R2 K9 + 0x7C140200, // 002B CALL R5 1 + 0x7C100200, // 002C CALL R4 1 + 0xA8020008, // 002D EXBLK 0 #0037 + 0x5C140800, // 002E MOVE R5 R4 + 0x7C140000, // 002F CALL R5 0 + 0x94180405, // 0030 GETIDX R6 R2 R5 + 0x1C180D02, // 0031 EQ R6 R6 K2 + 0x781A0002, // 0032 JMPF R6 #0036 + 0x8C18070A, // 0033 GETMET R6 R3 K10 + 0x5C200A00, // 0034 MOVE R8 R5 + 0x7C180400, // 0035 CALL R6 2 + 0x7001FFF6, // 0036 JMP #002E + 0x58100003, // 0037 LDCONST R4 K3 + 0xAC100200, // 0038 CATCH R4 1 0 + 0xB0080000, // 0039 RAISE 2 R0 R0 + 0x60100010, // 003A GETGBL R4 G16 + 0x5C140600, // 003B MOVE R5 R3 + 0x7C100200, // 003C CALL R4 1 + 0xA802000E, // 003D EXBLK 0 #004D + 0x5C140800, // 003E MOVE R5 R4 + 0x7C140000, // 003F CALL R5 0 + 0xB81A1600, // 0040 GETNGBL R6 K11 + 0x8C180D0C, // 0041 GETMET R6 R6 K12 + 0x88200B0E, // 0042 GETMBR R8 R5 K14 + 0x00221A08, // 0043 ADD R8 K13 R8 + 0x5824000F, // 0044 LDCONST R9 K15 + 0x7C180600, // 0045 CALL R6 3 + 0x8C180B10, // 0046 GETMET R6 R5 K16 + 0x7C180200, // 0047 CALL R6 1 + 0x88180101, // 0048 GETMBR R6 R0 K1 + 0x8C180D11, // 0049 GETMET R6 R6 K17 + 0x88200B0E, // 004A GETMBR R8 R5 K14 + 0x7C180400, // 004B CALL R6 2 + 0x7001FFF0, // 004C JMP #003E + 0x58100003, // 004D LDCONST R4 K3 + 0xAC100200, // 004E CATCH R4 1 0 + 0xB0080000, // 004F RAISE 2 R0 R0 + 0x80000000, // 0050 RET 0 }) ) ); @@ -168,87 +130,68 @@ be_local_closure(Matter_Device_autoconf_sensors_list, /* name */ /******************************************************************** -** Solidified function: _start_udp +** Solidified function: save_before_restart ********************************************************************/ -be_local_closure(Matter_Device__start_udp, /* name */ +be_local_closure(Matter_Device_save_before_restart, /* name */ be_nested_proto( - 7, /* nstack */ - 2, /* argc */ + 3, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(msg_received), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x7C0C0800, // 0005 CALL R3 4 - 0x80040600, // 0006 RET 1 R3 - }) - ), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(stop_basic_commissioning), + /* K1 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics), }), + be_str_weak(save_before_restart), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop +********************************************************************/ +be_local_closure(Matter_Device_stop, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(UDPServer), - /* K7 */ be_nested_str_weak(), - /* K8 */ be_nested_str_weak(start), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(remove_driver), + /* K2 */ be_nested_str_weak(udp_server), + /* K3 */ be_nested_str_weak(stop), }), - be_str_weak(_start_udp), + be_str_weak(stop), &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80000400, // 0002 RET 0 - 0x4C080000, // 0003 LDNIL R2 - 0x1C080202, // 0004 EQ R2 R1 R2 - 0x780A0000, // 0005 JMPF R2 #0007 - 0x540615A3, // 0006 LDINT R1 5540 - 0xB80A0200, // 0007 GETNGBL R2 K1 - 0x8C080502, // 0008 GETMET R2 R2 K2 - 0x60100008, // 0009 GETGBL R4 G8 - 0x5C140200, // 000A MOVE R5 R1 - 0x7C100200, // 000B CALL R4 1 - 0x00120604, // 000C ADD R4 K3 R4 - 0x58140004, // 000D LDCONST R5 K4 - 0x7C080600, // 000E CALL R2 3 - 0xB80A0A00, // 000F GETNGBL R2 K5 - 0x8C080506, // 0010 GETMET R2 R2 K6 - 0x5C100000, // 0011 MOVE R4 R0 - 0x58140007, // 0012 LDCONST R5 K7 - 0x5C180200, // 0013 MOVE R6 R1 - 0x7C080800, // 0014 CALL R2 4 - 0x90020002, // 0015 SETMBR R0 K0 R2 - 0x88080100, // 0016 GETMBR R2 R0 K0 - 0x8C080508, // 0017 GETMET R2 R2 K8 - 0x84100000, // 0018 CLOSURE R4 P0 - 0x7C080400, // 0019 CALL R2 2 - 0xA0000000, // 001A CLOSE R0 - 0x80000000, // 001B RET 0 + ( &(const binstruction[10]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x88040102, // 0004 GETMBR R1 R0 K2 + 0x78060002, // 0005 JMPF R1 #0009 + 0x88040102, // 0006 GETMBR R1 R0 K2 + 0x8C040303, // 0007 GETMET R1 R1 K3 + 0x7C040200, // 0008 CALL R1 1 + 0x80000000, // 0009 RET 0 }) ) ); @@ -256,11 +199,11 @@ be_local_closure(Matter_Device__start_udp, /* name */ /******************************************************************** -** Solidified function: start_operational_discovery +** Solidified function: process_attribute_read_solo ********************************************************************/ -be_local_closure(Matter_Device_start_operational_discovery, /* name */ +be_local_closure(Matter_Device_process_attribute_read_solo, /* name */ be_nested_proto( - 7, /* nstack */ + 10, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -268,29 +211,67 @@ be_local_closure(Matter_Device_start_operational_discovery, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(mdns), - /* K2 */ be_nested_str_weak(stop_basic_commissioning), - /* K3 */ be_nested_str_weak(root_w0), - /* K4 */ be_nested_str_weak(root_L), - /* K5 */ be_nested_str_weak(mdns_announce_op_discovery), + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + /* K3 */ be_nested_str_weak(find_plugin_by_endpoint), + /* K4 */ be_nested_str_weak(status), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K7 */ be_nested_str_weak(contains_cluster), + /* K8 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K9 */ be_nested_str_weak(contains_attribute), + /* K10 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), }), - be_str_weak(start_operational_discovery), + be_str_weak(process_attribute_read_solo), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100102, // 0002 GETMET R4 R0 K2 - 0x7C100200, // 0003 CALL R4 1 - 0x4C100000, // 0004 LDNIL R4 - 0x90020604, // 0005 SETMBR R0 K3 R4 - 0x4C100000, // 0006 LDNIL R4 - 0x90020804, // 0007 SETMBR R0 K4 R4 - 0x8C100105, // 0008 GETMET R4 R0 K5 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C100400, // 000A CALL R4 2 - 0x80000000, // 000B RET 0 + ( &(const binstruction[45]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0x88100302, // 0002 GETMBR R4 R1 K2 + 0x4C140000, // 0003 LDNIL R5 + 0x1C140405, // 0004 EQ R5 R2 R5 + 0x74160005, // 0005 JMPT R5 #000C + 0x4C140000, // 0006 LDNIL R5 + 0x1C140605, // 0007 EQ R5 R3 R5 + 0x74160002, // 0008 JMPT R5 #000C + 0x4C140000, // 0009 LDNIL R5 + 0x1C140805, // 000A EQ R5 R4 R5 + 0x78160001, // 000B JMPF R5 #000E + 0x4C140000, // 000C LDNIL R5 + 0x80040A00, // 000D RET 1 R5 + 0x8C140103, // 000E GETMET R5 R0 K3 + 0x5C1C0400, // 000F MOVE R7 R2 + 0x7C140400, // 0010 CALL R5 2 + 0x4C180000, // 0011 LDNIL R6 + 0x1C180A06, // 0012 EQ R6 R5 R6 + 0x781A0004, // 0013 JMPF R6 #0019 + 0xB81A0A00, // 0014 GETNGBL R6 K5 + 0x88180D06, // 0015 GETMBR R6 R6 K6 + 0x90060806, // 0016 SETMBR R1 K4 R6 + 0x4C180000, // 0017 LDNIL R6 + 0x80040C00, // 0018 RET 1 R6 + 0x8C180B07, // 0019 GETMET R6 R5 K7 + 0x5C200600, // 001A MOVE R8 R3 + 0x7C180400, // 001B CALL R6 2 + 0x741A0004, // 001C JMPT R6 #0022 + 0xB81A0A00, // 001D GETNGBL R6 K5 + 0x88180D08, // 001E GETMBR R6 R6 K8 + 0x90060806, // 001F SETMBR R1 K4 R6 + 0x4C180000, // 0020 LDNIL R6 + 0x80040C00, // 0021 RET 1 R6 + 0x8C180B09, // 0022 GETMET R6 R5 K9 + 0x5C200600, // 0023 MOVE R8 R3 + 0x5C240800, // 0024 MOVE R9 R4 + 0x7C180600, // 0025 CALL R6 3 + 0x741A0004, // 0026 JMPT R6 #002C + 0xB81A0A00, // 0027 GETNGBL R6 K5 + 0x88180D0A, // 0028 GETMBR R6 R6 K10 + 0x90060806, // 0029 SETMBR R1 K4 R6 + 0x4C180000, // 002A LDNIL R6 + 0x80040C00, // 002B RET 1 R6 + 0x80040A00, // 002C RET 1 R5 }) ) ); @@ -298,11 +279,11 @@ be_local_closure(Matter_Device_start_operational_discovery, /* name */ /******************************************************************** -** Solidified function: is_commissioning_open +** Solidified function: mdns_announce_op_discovery_all_fabrics ********************************************************************/ -be_local_closure(Matter_Device_is_commissioning_open, /* name */ +be_local_closure(Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name */ be_nested_proto( - 3, /* nstack */ + 6, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -310,16 +291,39 @@ be_local_closure(Matter_Device_is_commissioning_open, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(active_fabrics), + /* K2 */ be_nested_str_weak(get_device_id), + /* K3 */ be_nested_str_weak(get_fabric_id), + /* K4 */ be_nested_str_weak(mdns_announce_op_discovery), + /* K5 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(is_commissioning_open), + be_str_weak(mdns_announce_op_discovery_all_fabrics), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x80040200, // 0003 RET 1 R1 + ( &(const binstruction[22]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000B, // 0005 EXBLK 0 #0012 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x8C0C0502, // 0008 GETMET R3 R2 K2 + 0x7C0C0200, // 0009 CALL R3 1 + 0x780E0005, // 000A JMPF R3 #0011 + 0x8C0C0503, // 000B GETMET R3 R2 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x780E0002, // 000D JMPF R3 #0011 + 0x8C0C0104, // 000E GETMET R3 R0 K4 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x7001FFF3, // 0011 JMP #0006 + 0x58040005, // 0012 LDCONST R1 K5 + 0xAC040200, // 0013 CATCH R1 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x80000000, // 0015 RET 0 }) ) ); @@ -327,11 +331,11 @@ be_local_closure(Matter_Device_is_commissioning_open, /* name */ /******************************************************************** -** Solidified function: load_param +** Solidified function: mdns_remove_PASE ********************************************************************/ -be_local_closure(Matter_Device_load_param, /* name */ +be_local_closure(Matter_Device_mdns_remove_PASE, /* name */ be_nested_proto( - 11, /* nstack */ + 10, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -339,173 +343,113 @@ be_local_closure(Matter_Device_load_param, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[35]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(FILENAME), - /* K2 */ be_nested_str_weak(read), - /* K3 */ be_nested_str_weak(close), - /* K4 */ be_nested_str_weak(json), - /* K5 */ be_nested_str_weak(load), - /* K6 */ be_nested_str_weak(root_discriminator), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(distinguish), - /* K9 */ be_nested_str_weak(root_passcode), - /* K10 */ be_nested_str_weak(passcode), - /* K11 */ be_nested_str_weak(ipv4only), - /* K12 */ be_nested_str_weak(disable_bridge_mode), - /* K13 */ be_nested_str_weak(next_ep), - /* K14 */ be_nested_str_weak(nextep), - /* K15 */ be_nested_str_weak(plugins_config), - /* K16 */ be_nested_str_weak(config), - /* K17 */ be_nested_str_weak(tasmota), - /* K18 */ be_nested_str_weak(log), - /* K19 */ be_nested_str_weak(MTR_X3A_X20load_config_X20_X3D_X20), - /* K20 */ be_const_int(3), - /* K21 */ be_nested_str_weak(adjust_next_ep), - /* K22 */ be_nested_str_weak(plugins_persist), - /* K23 */ be_nested_str_weak(plugins_config_remotes), - /* K24 */ be_nested_str_weak(remotes), - /* K25 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20), - /* K26 */ be_nested_str_weak(io_error), - /* K27 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Aload_X20Exception_X3A), - /* K28 */ be_nested_str_weak(_X7C), - /* K29 */ be_const_int(2), - /* K30 */ be_nested_str_weak(random), - /* K31 */ be_nested_str_weak(get), - /* K32 */ be_const_int(0), - /* K33 */ be_nested_str_weak(generate_random_passcode), - /* K34 */ be_nested_str_weak(save_param), + ( &(const bvalue[20]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(mdns_pase_eth), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), + /* K5 */ be_nested_str_weak(_matterc), + /* K6 */ be_nested_str_weak(_udp), + /* K7 */ be_nested_str_weak(commissioning_instance_eth), + /* K8 */ be_nested_str_weak(hostname_eth), + /* K9 */ be_const_int(3), + /* K10 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), + /* K11 */ be_nested_str_weak(eth), + /* K12 */ be_nested_str_weak(remove_service), + /* K13 */ be_nested_str_weak(mdns_pase_wifi), + /* K14 */ be_nested_str_weak(commissioning_instance_wifi), + /* K15 */ be_nested_str_weak(hostname_wifi), + /* K16 */ be_nested_str_weak(wifi), + /* K17 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K18 */ be_nested_str_weak(_X7C), + /* K19 */ be_const_int(2), }), - be_str_weak(load_param), + be_str_weak(mdns_remove_PASE), &be_const_str_solidified, - ( &(const binstruction[127]) { /* code */ + ( &(const binstruction[82]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0xA802004D, // 0001 EXBLK 0 #0050 - 0x60080011, // 0002 GETGBL R2 G17 - 0x880C0101, // 0003 GETMBR R3 R0 K1 - 0x7C080200, // 0004 CALL R2 1 - 0x8C0C0502, // 0005 GETMET R3 R2 K2 - 0x7C0C0200, // 0006 CALL R3 1 - 0x8C100503, // 0007 GETMET R4 R2 K3 - 0x7C100200, // 0008 CALL R4 1 - 0xA4120800, // 0009 IMPORT R4 K4 - 0x8C140905, // 000A GETMET R5 R4 K5 - 0x5C1C0600, // 000B MOVE R7 R3 - 0x7C140400, // 000C CALL R5 2 - 0x8C180B07, // 000D GETMET R6 R5 K7 - 0x58200008, // 000E LDCONST R8 K8 - 0x88240106, // 000F GETMBR R9 R0 K6 - 0x7C180600, // 0010 CALL R6 3 - 0x90020C06, // 0011 SETMBR R0 K6 R6 - 0x8C180B07, // 0012 GETMET R6 R5 K7 - 0x5820000A, // 0013 LDCONST R8 K10 - 0x88240109, // 0014 GETMBR R9 R0 K9 - 0x7C180600, // 0015 CALL R6 3 - 0x90021206, // 0016 SETMBR R0 K9 R6 - 0x60180017, // 0017 GETGBL R6 G23 - 0x8C1C0B07, // 0018 GETMET R7 R5 K7 - 0x5824000B, // 0019 LDCONST R9 K11 - 0x50280000, // 001A LDBOOL R10 0 0 - 0x7C1C0600, // 001B CALL R7 3 - 0x7C180200, // 001C CALL R6 1 - 0x90021606, // 001D SETMBR R0 K11 R6 - 0x60180017, // 001E GETGBL R6 G23 - 0x8C1C0B07, // 001F GETMET R7 R5 K7 - 0x5824000C, // 0020 LDCONST R9 K12 - 0x50280000, // 0021 LDBOOL R10 0 0 - 0x7C1C0600, // 0022 CALL R7 3 - 0x7C180200, // 0023 CALL R6 1 - 0x90021806, // 0024 SETMBR R0 K12 R6 - 0x8C180B07, // 0025 GETMET R6 R5 K7 - 0x5820000E, // 0026 LDCONST R8 K14 - 0x8824010D, // 0027 GETMBR R9 R0 K13 - 0x7C180600, // 0028 CALL R6 3 - 0x90021A06, // 0029 SETMBR R0 K13 R6 - 0x8C180B07, // 002A GETMET R6 R5 K7 - 0x58200010, // 002B LDCONST R8 K16 - 0x7C180400, // 002C CALL R6 2 - 0x90021E06, // 002D SETMBR R0 K15 R6 - 0x8818010F, // 002E GETMBR R6 R0 K15 - 0x4C1C0000, // 002F LDNIL R7 - 0x20180C07, // 0030 NE R6 R6 R7 - 0x781A000B, // 0031 JMPF R6 #003E - 0xB81A2200, // 0032 GETNGBL R6 K17 - 0x8C180D12, // 0033 GETMET R6 R6 K18 - 0x60200008, // 0034 GETGBL R8 G8 - 0x8824010F, // 0035 GETMBR R9 R0 K15 - 0x7C200200, // 0036 CALL R8 1 - 0x00222608, // 0037 ADD R8 K19 R8 - 0x58240014, // 0038 LDCONST R9 K20 - 0x7C180600, // 0039 CALL R6 3 - 0x8C180115, // 003A GETMET R6 R0 K21 - 0x7C180200, // 003B CALL R6 1 - 0x50180200, // 003C LDBOOL R6 1 0 - 0x90022C06, // 003D SETMBR R0 K22 R6 - 0x8C180B07, // 003E GETMET R6 R5 K7 - 0x58200018, // 003F LDCONST R8 K24 - 0x60240013, // 0040 GETGBL R9 G19 - 0x7C240000, // 0041 CALL R9 0 - 0x7C180600, // 0042 CALL R6 3 - 0x90022E06, // 0043 SETMBR R0 K23 R6 - 0x88180117, // 0044 GETMBR R6 R0 K23 - 0x781A0007, // 0045 JMPF R6 #004E - 0xB81A2200, // 0046 GETNGBL R6 K17 - 0x8C180D12, // 0047 GETMET R6 R6 K18 - 0x60200008, // 0048 GETGBL R8 G8 - 0x88240117, // 0049 GETMBR R9 R0 K23 - 0x7C200200, // 004A CALL R8 1 - 0x00223208, // 004B ADD R8 K25 R8 - 0x58240014, // 004C LDCONST R9 K20 - 0x7C180600, // 004D CALL R6 3 - 0xA8040001, // 004E EXBLK 1 1 - 0x70020012, // 004F JMP #0063 - 0xAC080002, // 0050 CATCH R2 0 2 - 0x7002000F, // 0051 JMP #0062 - 0x2010051A, // 0052 NE R4 R2 K26 - 0x7812000C, // 0053 JMPF R4 #0061 - 0xB8122200, // 0054 GETNGBL R4 K17 - 0x8C100912, // 0055 GETMET R4 R4 K18 - 0x60180008, // 0056 GETGBL R6 G8 - 0x5C1C0400, // 0057 MOVE R7 R2 - 0x7C180200, // 0058 CALL R6 1 - 0x001A3606, // 0059 ADD R6 K27 R6 - 0x00180D1C, // 005A ADD R6 R6 K28 - 0x601C0008, // 005B GETGBL R7 G8 - 0x5C200600, // 005C MOVE R8 R3 - 0x7C1C0200, // 005D CALL R7 1 - 0x00180C07, // 005E ADD R6 R6 R7 - 0x581C001D, // 005F LDCONST R7 K29 - 0x7C100600, // 0060 CALL R4 3 - 0x70020000, // 0061 JMP #0063 - 0xB0080000, // 0062 RAISE 2 R0 R0 - 0x50080000, // 0063 LDBOOL R2 0 0 - 0x880C0106, // 0064 GETMBR R3 R0 K6 - 0x4C100000, // 0065 LDNIL R4 - 0x1C0C0604, // 0066 EQ R3 R3 R4 - 0x780E000A, // 0067 JMPF R3 #0073 - 0x8C0C031E, // 0068 GETMET R3 R1 K30 - 0x5814001D, // 0069 LDCONST R5 K29 - 0x7C0C0400, // 006A CALL R3 2 - 0x8C0C071F, // 006B GETMET R3 R3 K31 - 0x58140020, // 006C LDCONST R5 K32 - 0x5818001D, // 006D LDCONST R6 K29 - 0x7C0C0600, // 006E CALL R3 3 - 0x54120FFE, // 006F LDINT R4 4095 - 0x2C0C0604, // 0070 AND R3 R3 R4 - 0x90020C03, // 0071 SETMBR R0 K6 R3 - 0x50080200, // 0072 LDBOOL R2 1 0 - 0x880C0109, // 0073 GETMBR R3 R0 K9 - 0x4C100000, // 0074 LDNIL R4 - 0x1C0C0604, // 0075 EQ R3 R3 R4 - 0x780E0003, // 0076 JMPF R3 #007B - 0x8C0C0121, // 0077 GETMET R3 R0 K33 - 0x7C0C0200, // 0078 CALL R3 1 - 0x90021203, // 0079 SETMBR R0 K9 R3 - 0x50080200, // 007A LDBOOL R2 1 0 - 0x780A0001, // 007B JMPF R2 #007E - 0x8C0C0122, // 007C GETMET R3 R0 K34 - 0x7C0C0200, // 007D CALL R3 1 - 0x80000000, // 007E RET 0 + 0xA802003D, // 0001 EXBLK 0 #0040 + 0x88080101, // 0002 GETMBR R2 R0 K1 + 0x780A001B, // 0003 JMPF R2 #0020 + 0xB80A0400, // 0004 GETNGBL R2 K2 + 0x8C080503, // 0005 GETMET R2 R2 K3 + 0x60100018, // 0006 GETGBL R4 G24 + 0x58140004, // 0007 LDCONST R5 K4 + 0x58180005, // 0008 LDCONST R6 K5 + 0x581C0006, // 0009 LDCONST R7 K6 + 0x88200107, // 000A GETMBR R8 R0 K7 + 0x88240108, // 000B GETMBR R9 R0 K8 + 0x7C100A00, // 000C CALL R4 5 + 0x58140009, // 000D LDCONST R5 K9 + 0x7C080600, // 000E CALL R2 3 + 0xB80A0400, // 000F GETNGBL R2 K2 + 0x8C080503, // 0010 GETMET R2 R2 K3 + 0x60100018, // 0011 GETGBL R4 G24 + 0x5814000A, // 0012 LDCONST R5 K10 + 0x5818000B, // 0013 LDCONST R6 K11 + 0x881C0107, // 0014 GETMBR R7 R0 K7 + 0x7C100600, // 0015 CALL R4 3 + 0x58140009, // 0016 LDCONST R5 K9 + 0x7C080600, // 0017 CALL R2 3 + 0x50080000, // 0018 LDBOOL R2 0 0 + 0x90020202, // 0019 SETMBR R0 K1 R2 + 0x8C08030C, // 001A GETMET R2 R1 K12 + 0x58100005, // 001B LDCONST R4 K5 + 0x58140006, // 001C LDCONST R5 K6 + 0x88180107, // 001D GETMBR R6 R0 K7 + 0x881C0108, // 001E GETMBR R7 R0 K8 + 0x7C080A00, // 001F CALL R2 5 + 0x8808010D, // 0020 GETMBR R2 R0 K13 + 0x780A001B, // 0021 JMPF R2 #003E + 0xB80A0400, // 0022 GETNGBL R2 K2 + 0x8C080503, // 0023 GETMET R2 R2 K3 + 0x60100018, // 0024 GETGBL R4 G24 + 0x58140004, // 0025 LDCONST R5 K4 + 0x58180005, // 0026 LDCONST R6 K5 + 0x581C0006, // 0027 LDCONST R7 K6 + 0x8820010E, // 0028 GETMBR R8 R0 K14 + 0x8824010F, // 0029 GETMBR R9 R0 K15 + 0x7C100A00, // 002A CALL R4 5 + 0x58140009, // 002B LDCONST R5 K9 + 0x7C080600, // 002C CALL R2 3 + 0xB80A0400, // 002D GETNGBL R2 K2 + 0x8C080503, // 002E GETMET R2 R2 K3 + 0x60100018, // 002F GETGBL R4 G24 + 0x5814000A, // 0030 LDCONST R5 K10 + 0x58180010, // 0031 LDCONST R6 K16 + 0x881C010E, // 0032 GETMBR R7 R0 K14 + 0x7C100600, // 0033 CALL R4 3 + 0x58140009, // 0034 LDCONST R5 K9 + 0x7C080600, // 0035 CALL R2 3 + 0x50080000, // 0036 LDBOOL R2 0 0 + 0x90021A02, // 0037 SETMBR R0 K13 R2 + 0x8C08030C, // 0038 GETMET R2 R1 K12 + 0x58100005, // 0039 LDCONST R4 K5 + 0x58140006, // 003A LDCONST R5 K6 + 0x8818010E, // 003B GETMBR R6 R0 K14 + 0x881C010F, // 003C GETMBR R7 R0 K15 + 0x7C080A00, // 003D CALL R2 5 + 0xA8040001, // 003E EXBLK 1 1 + 0x70020010, // 003F JMP #0051 + 0xAC080002, // 0040 CATCH R2 0 2 + 0x7002000D, // 0041 JMP #0050 + 0xB8120400, // 0042 GETNGBL R4 K2 + 0x8C100903, // 0043 GETMET R4 R4 K3 + 0x60180008, // 0044 GETGBL R6 G8 + 0x5C1C0400, // 0045 MOVE R7 R2 + 0x7C180200, // 0046 CALL R6 1 + 0x001A2206, // 0047 ADD R6 K17 R6 + 0x00180D12, // 0048 ADD R6 R6 K18 + 0x601C0008, // 0049 GETGBL R7 G8 + 0x5C200600, // 004A MOVE R8 R3 + 0x7C1C0200, // 004B CALL R7 1 + 0x00180C07, // 004C ADD R6 R6 R7 + 0x581C0013, // 004D LDCONST R7 K19 + 0x7C100600, // 004E CALL R4 3 + 0x70020000, // 004F JMP #0051 + 0xB0080000, // 0050 RAISE 2 R0 R0 + 0x80000000, // 0051 RET 0 }) ) ); @@ -513,11 +457,11 @@ be_local_closure(Matter_Device_load_param, /* name */ /******************************************************************** -** Solidified function: save_before_restart +** Solidified function: every_250ms ********************************************************************/ -be_local_closure(Matter_Device_save_before_restart, /* name */ +be_local_closure(Matter_Device_every_250ms, /* name */ be_nested_proto( - 3, /* nstack */ + 4, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -525,18 +469,32 @@ be_local_closure(Matter_Device_save_before_restart, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(stop_basic_commissioning), - /* K1 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(message_handler), + /* K1 */ be_nested_str_weak(every_250ms), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(plugins), + /* K4 */ be_const_int(1), }), - be_str_weak(save_before_restart), + be_str_weak(every_250ms), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x80000000, // 0004 RET 0 + ( &(const binstruction[16]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x58040002, // 0003 LDCONST R1 K2 + 0x6008000C, // 0004 GETGBL R2 G12 + 0x880C0103, // 0005 GETMBR R3 R0 K3 + 0x7C080200, // 0006 CALL R2 1 + 0x14080202, // 0007 LT R2 R1 R2 + 0x780A0005, // 0008 JMPF R2 #000F + 0x88080103, // 0009 GETMBR R2 R0 K3 + 0x94080401, // 000A GETIDX R2 R2 R1 + 0x8C080501, // 000B GETMET R2 R2 K1 + 0x7C080200, // 000C CALL R2 1 + 0x00040304, // 000D ADD R1 R1 K4 + 0x7001FFF4, // 000E JMP #0004 + 0x80000000, // 000F RET 0 }) ) ); @@ -544,11 +502,11 @@ be_local_closure(Matter_Device_save_before_restart, /* name */ /******************************************************************** -** Solidified function: every_second +** Solidified function: stop_basic_commissioning ********************************************************************/ -be_local_closure(Matter_Device_every_second, /* name */ +be_local_closure(Matter_Device_stop_basic_commissioning, /* name */ be_nested_proto( - 4, /* nstack */ + 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -556,35 +514,49 @@ be_local_closure(Matter_Device_every_second, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(every_second), - /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(commissioning_open), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(time_reached), + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(is_root_commissioning_open), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(publish_result), + /* K3 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D), + /* K4 */ be_nested_str_weak(Matter), + /* K5 */ be_nested_str_weak(commissioning_open), + /* K6 */ be_nested_str_weak(mdns_remove_PASE), + /* K7 */ be_nested_str_weak(commissioning_iterations), + /* K8 */ be_nested_str_weak(commissioning_discriminator), + /* K9 */ be_nested_str_weak(commissioning_salt), + /* K10 */ be_nested_str_weak(commissioning_w0), + /* K11 */ be_nested_str_weak(commissioning_L), + /* K12 */ be_nested_str_weak(commissioning_admin_fabric), }), - be_str_weak(every_second), + be_str_weak(stop_basic_commissioning), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040301, // 0004 GETMET R1 R1 K1 - 0x7C040200, // 0005 CALL R1 1 - 0x88040103, // 0006 GETMBR R1 R0 K3 - 0x4C080000, // 0007 LDNIL R2 - 0x20040202, // 0008 NE R1 R1 R2 - 0x78060006, // 0009 JMPF R1 #0011 - 0xB8060800, // 000A GETNGBL R1 K4 - 0x8C040305, // 000B GETMET R1 R1 K5 - 0x880C0103, // 000C GETMBR R3 R0 K3 - 0x7C040400, // 000D CALL R1 2 - 0x78060001, // 000E JMPF R1 #0011 - 0x4C040000, // 000F LDNIL R1 - 0x90020601, // 0010 SETMBR R0 K3 R1 - 0x80000000, // 0011 RET 0 + ( &(const binstruction[25]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x78060004, // 0002 JMPF R1 #0008 + 0xB8060200, // 0003 GETNGBL R1 K1 + 0x8C040302, // 0004 GETMET R1 R1 K2 + 0x580C0003, // 0005 LDCONST R3 K3 + 0x58100004, // 0006 LDCONST R4 K4 + 0x7C040600, // 0007 CALL R1 3 + 0x4C040000, // 0008 LDNIL R1 + 0x90020A01, // 0009 SETMBR R0 K5 R1 + 0x8C040106, // 000A GETMET R1 R0 K6 + 0x7C040200, // 000B CALL R1 1 + 0x4C040000, // 000C LDNIL R1 + 0x90020E01, // 000D SETMBR R0 K7 R1 + 0x4C040000, // 000E LDNIL R1 + 0x90021001, // 000F SETMBR R0 K8 R1 + 0x4C040000, // 0010 LDNIL R1 + 0x90021201, // 0011 SETMBR R0 K9 R1 + 0x4C040000, // 0012 LDNIL R1 + 0x90021401, // 0013 SETMBR R0 K10 R1 + 0x4C040000, // 0014 LDNIL R1 + 0x90021601, // 0015 SETMBR R0 K11 R1 + 0x4C040000, // 0016 LDNIL R1 + 0x90021801, // 0017 SETMBR R0 K12 R1 + 0x80000000, // 0018 RET 0 }) ) ); @@ -592,11 +564,11 @@ be_local_closure(Matter_Device_every_second, /* name */ /******************************************************************** -** Solidified function: received_ack +** Solidified function: start_commissioning_complete ********************************************************************/ -be_local_closure(Matter_Device_received_ack, /* name */ +be_local_closure(Matter_Device_start_commissioning_complete, /* name */ be_nested_proto( - 5, /* nstack */ + 11, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -604,18 +576,46 @@ be_local_closure(Matter_Device_received_ack, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(received_ack), + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(get_fabric), + /* K1 */ be_nested_str_weak(get_fabric_id), + /* K2 */ be_nested_str_weak(copy), + /* K3 */ be_nested_str_weak(reverse), + /* K4 */ be_nested_str_weak(tohex), + /* K5 */ be_nested_str_weak(get_admin_vendor_name), + /* K6 */ be_nested_str_weak(tasmota), + /* K7 */ be_nested_str_weak(log), + /* K8 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), + /* K9 */ be_const_int(2), + /* K10 */ be_nested_str_weak(stop_basic_commissioning), }), - be_str_weak(received_ack), + be_str_weak(start_commissioning_complete), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 + ( &(const binstruction[24]) { /* code */ + 0x8C080300, // 0000 GETMET R2 R1 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x8C0C0501, // 0002 GETMET R3 R2 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0704, // 0008 GETMET R3 R3 K4 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C100505, // 000A GETMET R4 R2 K5 + 0x7C100200, // 000B CALL R4 1 + 0xB8160C00, // 000C GETNGBL R5 K6 + 0x8C140B07, // 000D GETMET R5 R5 K7 + 0x601C0018, // 000E GETGBL R7 G24 + 0x58200008, // 000F LDCONST R8 K8 + 0x5C240600, // 0010 MOVE R9 R3 + 0x5C280800, // 0011 MOVE R10 R4 + 0x7C1C0600, // 0012 CALL R7 3 + 0x58200009, // 0013 LDCONST R8 K9 + 0x7C140600, // 0014 CALL R5 3 + 0x8C14010A, // 0015 GETMET R5 R0 K10 + 0x7C140200, // 0016 CALL R5 1 + 0x80000000, // 0017 RET 0 }) ) ); @@ -623,79 +623,32 @@ be_local_closure(Matter_Device_received_ack, /* name */ /******************************************************************** -** Solidified function: k2l +** Solidified function: get_plugin_remote_info ********************************************************************/ -be_local_closure(Matter_Device_k2l, /* name */ +be_local_closure(Matter_Device_get_plugin_remote_info, /* name */ be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 4, /* varg */ + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_config_remotes), + /* K1 */ be_nested_str_weak(find), }), - be_str_weak(k2l), + be_str_weak(get_plugin_remote_info), &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0003, // 0004 EQ R3 R0 R3 - 0x780E0000, // 0005 JMPF R3 #0007 + ( &(const binstruction[ 7]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x60140013, // 0003 GETGBL R5 G19 + 0x7C140000, // 0004 CALL R5 0 + 0x7C080600, // 0005 CALL R2 3 0x80040400, // 0006 RET 1 R2 - 0x600C0010, // 0007 GETGBL R3 G16 - 0x8C100101, // 0008 GETMET R4 R0 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x7C0C0200, // 000A CALL R3 1 - 0xA8020005, // 000B EXBLK 0 #0012 - 0x5C100600, // 000C MOVE R4 R3 - 0x7C100000, // 000D CALL R4 0 - 0x8C140502, // 000E GETMET R5 R2 K2 - 0x5C1C0800, // 000F MOVE R7 R4 - 0x7C140400, // 0010 CALL R5 2 - 0x7001FFF9, // 0011 JMP #000C - 0x580C0003, // 0012 LDCONST R3 K3 - 0xAC0C0200, // 0013 CATCH R3 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x600C0010, // 0015 GETGBL R3 G16 - 0x6010000C, // 0016 GETGBL R4 G12 - 0x5C140400, // 0017 MOVE R5 R2 - 0x7C100200, // 0018 CALL R4 1 - 0x04100904, // 0019 SUB R4 R4 K4 - 0x40120804, // 001A CONNECT R4 K4 R4 - 0x7C0C0200, // 001B CALL R3 1 - 0xA8020010, // 001C EXBLK 0 #002E - 0x5C100600, // 001D MOVE R4 R3 - 0x7C100000, // 001E CALL R4 0 - 0x94140404, // 001F GETIDX R5 R2 R4 - 0x5C180800, // 0020 MOVE R6 R4 - 0x241C0D05, // 0021 GT R7 R6 K5 - 0x781E0008, // 0022 JMPF R7 #002C - 0x041C0D04, // 0023 SUB R7 R6 K4 - 0x941C0407, // 0024 GETIDX R7 R2 R7 - 0x241C0E05, // 0025 GT R7 R7 R5 - 0x781E0004, // 0026 JMPF R7 #002C - 0x041C0D04, // 0027 SUB R7 R6 K4 - 0x941C0407, // 0028 GETIDX R7 R2 R7 - 0x98080C07, // 0029 SETIDX R2 R6 R7 - 0x04180D04, // 002A SUB R6 R6 K4 - 0x7001FFF4, // 002B JMP #0021 - 0x98080C05, // 002C SETIDX R2 R6 R5 - 0x7001FFEE, // 002D JMP #001D - 0x580C0003, // 002E LDCONST R3 K3 - 0xAC0C0200, // 002F CATCH R3 1 0 - 0xB0080000, // 0030 RAISE 2 R0 R0 - 0x80040400, // 0031 RET 1 R2 }) ) ); @@ -703,229 +656,55 @@ be_local_closure(Matter_Device_k2l, /* name */ /******************************************************************** -** Solidified function: signal_endpoints_changed +** Solidified function: invoke_request ********************************************************************/ -be_local_closure(Matter_Device_signal_endpoints_changed, /* name */ +be_local_closure(Matter_Device_invoke_request, /* name */ be_nested_proto( - 7, /* nstack */ - 1, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(3), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(endpoint), + /* K2 */ be_nested_str_weak(plugins), + /* K3 */ be_nested_str_weak(invoke_request), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(status), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), }), - be_str_weak(signal_endpoints_changed), + be_str_weak(invoke_request), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x5412001C, // 0002 LDINT R4 29 - 0x58140002, // 0003 LDCONST R5 K2 - 0x50180000, // 0004 LDBOOL R6 0 0 - 0x7C040A00, // 0005 CALL R1 5 - 0x8C040100, // 0006 GETMET R1 R0 K0 - 0x540EFEFF, // 0007 LDINT R3 65280 - 0x5412001C, // 0008 LDINT R4 29 - 0x58140002, // 0009 LDCONST R5 K2 - 0x50180000, // 000A LDBOOL R6 0 0 - 0x7C040A00, // 000B CALL R1 5 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _mdns_announce_hostname -********************************************************************/ -be_local_closure(Matter_Device__mdns_announce_hostname, /* name */ - be_nested_proto( - 14, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[26]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(start), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(eth), - /* K5 */ be_nested_str_weak(hostname_eth), - /* K6 */ be_nested_str_weak(replace), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(mac), - /* K9 */ be_nested_str_weak(_X3A), - /* K10 */ be_nested_str_weak(), - /* K11 */ be_nested_str_weak(ipv4only), - /* K12 */ be_nested_str_weak(add_hostname), - /* K13 */ be_nested_str_weak(ip6local), - /* K14 */ be_nested_str_weak(ip), - /* K15 */ be_nested_str_weak(ip6), - /* K16 */ be_nested_str_weak(log), - /* K17 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29), - /* K18 */ be_const_int(3), - /* K19 */ be_nested_str_weak(wifi), - /* K20 */ be_nested_str_weak(hostname_wifi), - /* K21 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27), - /* K22 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K23 */ be_nested_str_weak(_X7C), - /* K24 */ be_const_int(2), - /* K25 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics), - }), - be_str_weak(_mdns_announce_hostname), - &be_const_str_solidified, - ( &(const binstruction[140]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100502, // 0002 GETMET R4 R2 K2 - 0x7C100200, // 0003 CALL R4 1 - 0xA8020072, // 0004 EXBLK 0 #0078 - 0x78060030, // 0005 JMPF R1 #0037 - 0xB8120600, // 0006 GETNGBL R4 K3 - 0x8C100904, // 0007 GETMET R4 R4 K4 - 0x7C100200, // 0008 CALL R4 1 - 0x8C140706, // 0009 GETMET R5 R3 K6 - 0x8C1C0907, // 000A GETMET R7 R4 K7 - 0x58240008, // 000B LDCONST R9 K8 - 0x7C1C0400, // 000C CALL R7 2 - 0x58200009, // 000D LDCONST R8 K9 - 0x5824000A, // 000E LDCONST R9 K10 - 0x7C140800, // 000F CALL R5 4 - 0x90020A05, // 0010 SETMBR R0 K5 R5 - 0x8814010B, // 0011 GETMBR R5 R0 K11 - 0x7416000F, // 0012 JMPT R5 #0023 - 0x8C14050C, // 0013 GETMET R5 R2 K12 - 0x881C0105, // 0014 GETMBR R7 R0 K5 - 0x8C200907, // 0015 GETMET R8 R4 K7 - 0x5828000D, // 0016 LDCONST R10 K13 - 0x582C000A, // 0017 LDCONST R11 K10 - 0x7C200600, // 0018 CALL R8 3 - 0x8C240907, // 0019 GETMET R9 R4 K7 - 0x582C000E, // 001A LDCONST R11 K14 - 0x5830000A, // 001B LDCONST R12 K10 - 0x7C240600, // 001C CALL R9 3 - 0x8C280907, // 001D GETMET R10 R4 K7 - 0x5830000F, // 001E LDCONST R12 K15 - 0x5834000A, // 001F LDCONST R13 K10 - 0x7C280600, // 0020 CALL R10 3 - 0x7C140A00, // 0021 CALL R5 5 - 0x70020012, // 0022 JMP #0036 - 0xB8160600, // 0023 GETNGBL R5 K3 - 0x8C140B10, // 0024 GETMET R5 R5 K16 - 0x601C0018, // 0025 GETGBL R7 G24 - 0x58200011, // 0026 LDCONST R8 K17 - 0x88240105, // 0027 GETMBR R9 R0 K5 - 0x8C280907, // 0028 GETMET R10 R4 K7 - 0x5830000E, // 0029 LDCONST R12 K14 - 0x5834000A, // 002A LDCONST R13 K10 - 0x7C280600, // 002B CALL R10 3 - 0x7C1C0600, // 002C CALL R7 3 - 0x58200012, // 002D LDCONST R8 K18 - 0x7C140600, // 002E CALL R5 3 - 0x8C14050C, // 002F GETMET R5 R2 K12 - 0x881C0105, // 0030 GETMBR R7 R0 K5 - 0x8C200907, // 0031 GETMET R8 R4 K7 - 0x5828000E, // 0032 LDCONST R10 K14 - 0x582C000A, // 0033 LDCONST R11 K10 - 0x7C200600, // 0034 CALL R8 3 - 0x7C140600, // 0035 CALL R5 3 - 0x7002002F, // 0036 JMP #0067 - 0xB8120600, // 0037 GETNGBL R4 K3 - 0x8C100913, // 0038 GETMET R4 R4 K19 - 0x7C100200, // 0039 CALL R4 1 - 0x8C140706, // 003A GETMET R5 R3 K6 - 0x8C1C0907, // 003B GETMET R7 R4 K7 - 0x58240008, // 003C LDCONST R9 K8 - 0x7C1C0400, // 003D CALL R7 2 - 0x58200009, // 003E LDCONST R8 K9 - 0x5824000A, // 003F LDCONST R9 K10 - 0x7C140800, // 0040 CALL R5 4 - 0x90022805, // 0041 SETMBR R0 K20 R5 - 0x8814010B, // 0042 GETMBR R5 R0 K11 - 0x7416000F, // 0043 JMPT R5 #0054 - 0x8C14050C, // 0044 GETMET R5 R2 K12 - 0x881C0114, // 0045 GETMBR R7 R0 K20 - 0x8C200907, // 0046 GETMET R8 R4 K7 - 0x5828000D, // 0047 LDCONST R10 K13 - 0x582C000A, // 0048 LDCONST R11 K10 - 0x7C200600, // 0049 CALL R8 3 - 0x8C240907, // 004A GETMET R9 R4 K7 - 0x582C000E, // 004B LDCONST R11 K14 - 0x5830000A, // 004C LDCONST R12 K10 - 0x7C240600, // 004D CALL R9 3 - 0x8C280907, // 004E GETMET R10 R4 K7 - 0x5830000F, // 004F LDCONST R12 K15 - 0x5834000A, // 0050 LDCONST R13 K10 - 0x7C280600, // 0051 CALL R10 3 - 0x7C140A00, // 0052 CALL R5 5 - 0x70020012, // 0053 JMP #0067 - 0xB8160600, // 0054 GETNGBL R5 K3 - 0x8C140B10, // 0055 GETMET R5 R5 K16 - 0x601C0018, // 0056 GETGBL R7 G24 - 0x58200011, // 0057 LDCONST R8 K17 - 0x88240105, // 0058 GETMBR R9 R0 K5 - 0x8C280907, // 0059 GETMET R10 R4 K7 - 0x5830000E, // 005A LDCONST R12 K14 - 0x5834000A, // 005B LDCONST R13 K10 - 0x7C280600, // 005C CALL R10 3 - 0x7C1C0600, // 005D CALL R7 3 - 0x58200012, // 005E LDCONST R8 K18 - 0x7C140600, // 005F CALL R5 3 - 0x8C14050C, // 0060 GETMET R5 R2 K12 - 0x881C0114, // 0061 GETMBR R7 R0 K20 - 0x8C200907, // 0062 GETMET R8 R4 K7 - 0x5828000E, // 0063 LDCONST R10 K14 - 0x582C000A, // 0064 LDCONST R11 K10 - 0x7C200600, // 0065 CALL R8 3 - 0x7C140600, // 0066 CALL R5 3 - 0xB8120600, // 0067 GETNGBL R4 K3 - 0x8C100910, // 0068 GETMET R4 R4 K16 - 0x60180018, // 0069 GETGBL R6 G24 - 0x581C0015, // 006A LDCONST R7 K21 - 0x78060001, // 006B JMPF R1 #006E - 0x58200004, // 006C LDCONST R8 K4 - 0x70020000, // 006D JMP #006F - 0x58200013, // 006E LDCONST R8 K19 - 0x78060001, // 006F JMPF R1 #0072 - 0x88240105, // 0070 GETMBR R9 R0 K5 - 0x70020000, // 0071 JMP #0073 - 0x88240114, // 0072 GETMBR R9 R0 K20 - 0x7C180600, // 0073 CALL R6 3 - 0x581C0012, // 0074 LDCONST R7 K18 - 0x7C100600, // 0075 CALL R4 3 - 0xA8040001, // 0076 EXBLK 1 1 - 0x70020010, // 0077 JMP #0089 - 0xAC100002, // 0078 CATCH R4 0 2 - 0x7002000D, // 0079 JMP #0088 - 0xB81A0600, // 007A GETNGBL R6 K3 - 0x8C180D10, // 007B GETMET R6 R6 K16 - 0x60200008, // 007C GETGBL R8 G8 - 0x5C240800, // 007D MOVE R9 R4 - 0x7C200200, // 007E CALL R8 1 - 0x00222C08, // 007F ADD R8 K22 R8 - 0x00201117, // 0080 ADD R8 R8 K23 - 0x60240008, // 0081 GETGBL R9 G8 - 0x5C280A00, // 0082 MOVE R10 R5 - 0x7C240200, // 0083 CALL R9 1 - 0x00201009, // 0084 ADD R8 R8 R9 - 0x58240018, // 0085 LDCONST R9 K24 - 0x7C180600, // 0086 CALL R6 3 - 0x70020000, // 0087 JMP #0089 - 0xB0080000, // 0088 RAISE 2 R0 R0 - 0x8C100119, // 0089 GETMET R4 R0 K25 - 0x7C100200, // 008A CALL R4 1 - 0x80000000, // 008B RET 0 + ( &(const binstruction[24]) { /* code */ + 0x58100000, // 0000 LDCONST R4 K0 + 0x88140701, // 0001 GETMBR R5 R3 K1 + 0x6018000C, // 0002 GETGBL R6 G12 + 0x881C0102, // 0003 GETMBR R7 R0 K2 + 0x7C180200, // 0004 CALL R6 1 + 0x14180806, // 0005 LT R6 R4 R6 + 0x781A000C, // 0006 JMPF R6 #0014 + 0x88180102, // 0007 GETMBR R6 R0 K2 + 0x94180C04, // 0008 GETIDX R6 R6 R4 + 0x881C0D01, // 0009 GETMBR R7 R6 K1 + 0x1C1C0E05, // 000A EQ R7 R7 R5 + 0x781E0005, // 000B JMPF R7 #0012 + 0x8C1C0D03, // 000C GETMET R7 R6 K3 + 0x5C240200, // 000D MOVE R9 R1 + 0x5C280400, // 000E MOVE R10 R2 + 0x5C2C0600, // 000F MOVE R11 R3 + 0x7C1C0800, // 0010 CALL R7 4 + 0x80040E00, // 0011 RET 1 R7 + 0x00100904, // 0012 ADD R4 R4 K4 + 0x7001FFED, // 0013 JMP #0002 + 0xB81A0C00, // 0014 GETNGBL R6 K6 + 0x88180D07, // 0015 GETMBR R6 R6 K7 + 0x900E0A06, // 0016 SETMBR R3 K5 R6 + 0x80000000, // 0017 RET 0 }) ) ); @@ -933,133 +712,309 @@ be_local_closure(Matter_Device__mdns_announce_hostname, /* name */ /******************************************************************** -** Solidified function: register_http_remote +** Solidified function: process_attribute_expansion ********************************************************************/ -be_local_closure(Matter_Device_register_http_remote, /* name */ +be_local_closure(Matter_Device_process_attribute_expansion, /* name */ be_nested_proto( - 9, /* nstack */ + 24, /* nstack */ 3, /* 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(http_remotes), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(get_timeout), - /* K3 */ be_nested_str_weak(set_timeout), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(HTTP_remote), - /* K6 */ be_nested_str_weak(plugins_config_remotes), - /* K7 */ be_nested_str_weak(set_info), - }), - be_str_weak(register_http_remote), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x4C100000, // 0001 LDNIL R4 - 0x1C0C0604, // 0002 EQ R3 R3 R4 - 0x780E0002, // 0003 JMPF R3 #0007 - 0x600C0013, // 0004 GETGBL R3 G19 - 0x7C0C0000, // 0005 CALL R3 0 - 0x90020003, // 0006 SETMBR R0 K0 R3 - 0x4C0C0000, // 0007 LDNIL R3 - 0x88100100, // 0008 GETMBR R4 R0 K0 - 0x8C100901, // 0009 GETMET R4 R4 K1 - 0x5C180200, // 000A MOVE R6 R1 - 0x7C100400, // 000B CALL R4 2 - 0x78120009, // 000C JMPF R4 #0017 - 0x88100100, // 000D GETMBR R4 R0 K0 - 0x940C0801, // 000E GETIDX R3 R4 R1 - 0x8C140702, // 000F GETMET R5 R3 K2 - 0x7C140200, // 0010 CALL R5 1 - 0x14140405, // 0011 LT R5 R2 R5 - 0x78160002, // 0012 JMPF R5 #0016 - 0x8C140703, // 0013 GETMET R5 R3 K3 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x7C140400, // 0015 CALL R5 2 - 0x70020011, // 0016 JMP #0029 - 0xB8120800, // 0017 GETNGBL R4 K4 - 0x8C100905, // 0018 GETMET R4 R4 K5 - 0x5C180000, // 0019 MOVE R6 R0 - 0x5C1C0200, // 001A MOVE R7 R1 - 0x5C200400, // 001B MOVE R8 R2 - 0x7C100800, // 001C CALL R4 4 - 0x5C0C0800, // 001D MOVE R3 R4 - 0x88100106, // 001E GETMBR R4 R0 K6 - 0x8C100901, // 001F GETMET R4 R4 K1 - 0x5C180200, // 0020 MOVE R6 R1 - 0x7C100400, // 0021 CALL R4 2 - 0x78120003, // 0022 JMPF R4 #0027 - 0x8C100707, // 0023 GETMET R4 R3 K7 - 0x88180106, // 0024 GETMBR R6 R0 K6 - 0x94180C01, // 0025 GETIDX R6 R6 R1 - 0x7C100400, // 0026 CALL R4 2 - 0x88100100, // 0027 GETMBR R4 R0 K0 - 0x98100203, // 0028 SETIDX R4 R1 R3 - 0x80040600, // 0029 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_operational_discovery_deferred -********************************************************************/ -be_local_closure(Matter_Device_start_operational_discovery_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ 1, /* has sup protos */ ( &(const struct bproto*[ 1]) { be_nested_proto( - 3, /* nstack */ - 0, /* argc */ + 7, /* nstack */ + 1, /* argc */ 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), + 0, /* has upvals */ + NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_operational_discovery), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(keys), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(stop_iteration), + /* K3 */ be_const_int(1), + /* K4 */ be_const_int(0), }), - be_str_weak(_X3Clambda_X3E), + be_str_weak(keys_sorted), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 + ( &(const binstruction[45]) { /* code */ + 0x60040012, // 0000 GETGBL R1 G18 + 0x7C040000, // 0001 CALL R1 0 + 0x60080010, // 0002 GETGBL R2 G16 + 0x8C0C0100, // 0003 GETMET R3 R0 K0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x7C080200, // 0005 CALL R2 1 + 0xA8020005, // 0006 EXBLK 0 #000D + 0x5C0C0400, // 0007 MOVE R3 R2 + 0x7C0C0000, // 0008 CALL R3 0 + 0x8C100301, // 0009 GETMET R4 R1 K1 + 0x5C180600, // 000A MOVE R6 R3 + 0x7C100400, // 000B CALL R4 2 + 0x7001FFF9, // 000C JMP #0007 + 0x58080002, // 000D LDCONST R2 K2 + 0xAC080200, // 000E CATCH R2 1 0 + 0xB0080000, // 000F RAISE 2 R0 R0 + 0x60080010, // 0010 GETGBL R2 G16 + 0x600C000C, // 0011 GETGBL R3 G12 + 0x5C100200, // 0012 MOVE R4 R1 + 0x7C0C0200, // 0013 CALL R3 1 + 0x040C0703, // 0014 SUB R3 R3 K3 + 0x400E0603, // 0015 CONNECT R3 K3 R3 + 0x7C080200, // 0016 CALL R2 1 + 0xA8020010, // 0017 EXBLK 0 #0029 + 0x5C0C0400, // 0018 MOVE R3 R2 + 0x7C0C0000, // 0019 CALL R3 0 + 0x94100203, // 001A GETIDX R4 R1 R3 + 0x5C140600, // 001B MOVE R5 R3 + 0x24180B04, // 001C GT R6 R5 K4 + 0x781A0008, // 001D JMPF R6 #0027 + 0x04180B03, // 001E SUB R6 R5 K3 + 0x94180206, // 001F GETIDX R6 R1 R6 + 0x24180C04, // 0020 GT R6 R6 R4 + 0x781A0004, // 0021 JMPF R6 #0027 + 0x04180B03, // 0022 SUB R6 R5 K3 + 0x94180206, // 0023 GETIDX R6 R1 R6 + 0x98040A06, // 0024 SETIDX R1 R5 R6 + 0x04140B03, // 0025 SUB R5 R5 K3 + 0x7001FFF4, // 0026 JMP #001C + 0x98040A04, // 0027 SETIDX R1 R5 R4 + 0x7001FFEE, // 0028 JMP #0018 + 0x58080002, // 0029 LDCONST R2 K2 + 0xAC080200, // 002A CATCH R2 1 0 + 0xB0080000, // 002B RAISE 2 R0 R0 + 0x80040200, // 002C RET 1 R1 }) ), }), 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), - /* K2 */ be_const_int(0), + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + /* K3 */ be_nested_str_weak(plugins), + /* K4 */ be_nested_str_weak(get_endpoint), + /* K5 */ be_nested_str_weak(contains), + /* K6 */ be_nested_str_weak(get_cluster_list), + /* K7 */ be_nested_str_weak(get_attribute_list), + /* K8 */ be_nested_str_weak(push), + /* K9 */ be_nested_str_weak(stop_iteration), + /* K10 */ be_nested_str_weak(status), + /* K11 */ be_nested_str_weak(matter), + /* K12 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K13 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K14 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K15 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), }), - be_str_weak(start_operational_discovery_deferred), + be_str_weak(process_attribute_expansion), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 + ( &(const binstruction[203]) { /* code */ + 0x840C0000, // 0000 CLOSURE R3 P0 + 0x88100300, // 0001 GETMBR R4 R1 K0 + 0x88140301, // 0002 GETMBR R5 R1 K1 + 0x88180302, // 0003 GETMBR R6 R1 K2 + 0x501C0000, // 0004 LDBOOL R7 0 0 + 0x50200000, // 0005 LDBOOL R8 0 0 + 0x50240000, // 0006 LDBOOL R9 0 0 + 0x88280300, // 0007 GETMBR R10 R1 K0 + 0x4C2C0000, // 0008 LDNIL R11 + 0x2028140B, // 0009 NE R10 R10 R11 + 0x782A0007, // 000A JMPF R10 #0013 + 0x88280301, // 000B GETMBR R10 R1 K1 + 0x4C2C0000, // 000C LDNIL R11 + 0x2028140B, // 000D NE R10 R10 R11 + 0x782A0003, // 000E JMPF R10 #0013 + 0x88280302, // 000F GETMBR R10 R1 K2 + 0x4C2C0000, // 0010 LDNIL R11 + 0x2028140B, // 0011 NE R10 R10 R11 + 0x742A0000, // 0012 JMPT R10 #0014 + 0x50280001, // 0013 LDBOOL R10 0 1 + 0x50280200, // 0014 LDBOOL R10 1 0 + 0x602C0013, // 0015 GETGBL R11 G19 + 0x7C2C0000, // 0016 CALL R11 0 + 0x60300010, // 0017 GETGBL R12 G16 + 0x88340103, // 0018 GETMBR R13 R0 K3 + 0x7C300200, // 0019 CALL R12 1 + 0xA8020053, // 001A EXBLK 0 #006F + 0x5C341800, // 001B MOVE R13 R12 + 0x7C340000, // 001C CALL R13 0 + 0x8C381B04, // 001D GETMET R14 R13 K4 + 0x7C380200, // 001E CALL R14 1 + 0x4C3C0000, // 001F LDNIL R15 + 0x203C080F, // 0020 NE R15 R4 R15 + 0x783E0002, // 0021 JMPF R15 #0025 + 0x203C1C04, // 0022 NE R15 R14 R4 + 0x783E0000, // 0023 JMPF R15 #0025 + 0x7001FFF5, // 0024 JMP #001B + 0x8C3C1705, // 0025 GETMET R15 R11 K5 + 0x5C441C00, // 0026 MOVE R17 R14 + 0x7C3C0400, // 0027 CALL R15 2 + 0x743E0002, // 0028 JMPT R15 #002C + 0x603C0013, // 0029 GETGBL R15 G19 + 0x7C3C0000, // 002A CALL R15 0 + 0x982C1C0F, // 002B SETIDX R11 R14 R15 + 0x501C0200, // 002C LDBOOL R7 1 0 + 0x8C3C1B06, // 002D GETMET R15 R13 K6 + 0x7C3C0200, // 002E CALL R15 1 + 0x60400010, // 002F GETGBL R16 G16 + 0x5C441E00, // 0030 MOVE R17 R15 + 0x7C400200, // 0031 CALL R16 1 + 0xA8020037, // 0032 EXBLK 0 #006B + 0x5C442000, // 0033 MOVE R17 R16 + 0x7C440000, // 0034 CALL R17 0 + 0x4C480000, // 0035 LDNIL R18 + 0x20480A12, // 0036 NE R18 R5 R18 + 0x784A0002, // 0037 JMPF R18 #003B + 0x20482205, // 0038 NE R18 R17 R5 + 0x784A0000, // 0039 JMPF R18 #003B + 0x7001FFF7, // 003A JMP #0033 + 0x9448160E, // 003B GETIDX R18 R11 R14 + 0x8C482505, // 003C GETMET R18 R18 K5 + 0x5C502200, // 003D MOVE R20 R17 + 0x7C480400, // 003E CALL R18 2 + 0x744A0003, // 003F JMPT R18 #0044 + 0x9448160E, // 0040 GETIDX R18 R11 R14 + 0x604C0013, // 0041 GETGBL R19 G19 + 0x7C4C0000, // 0042 CALL R19 0 + 0x98482213, // 0043 SETIDX R18 R17 R19 + 0x50200200, // 0044 LDBOOL R8 1 0 + 0x8C481B07, // 0045 GETMET R18 R13 K7 + 0x5C502200, // 0046 MOVE R20 R17 + 0x7C480400, // 0047 CALL R18 2 + 0x604C0010, // 0048 GETGBL R19 G16 + 0x5C502400, // 0049 MOVE R20 R18 + 0x7C4C0200, // 004A CALL R19 1 + 0xA802001A, // 004B EXBLK 0 #0067 + 0x5C502600, // 004C MOVE R20 R19 + 0x7C500000, // 004D CALL R20 0 + 0x4C540000, // 004E LDNIL R21 + 0x20540C15, // 004F NE R21 R6 R21 + 0x78560002, // 0050 JMPF R21 #0054 + 0x20542806, // 0051 NE R21 R20 R6 + 0x78560000, // 0052 JMPF R21 #0054 + 0x7001FFF7, // 0053 JMP #004C + 0x9454160E, // 0054 GETIDX R21 R11 R14 + 0x94542A11, // 0055 GETIDX R21 R21 R17 + 0x8C542B05, // 0056 GETMET R21 R21 K5 + 0x5C5C2800, // 0057 MOVE R23 R20 + 0x7C540400, // 0058 CALL R21 2 + 0x74560004, // 0059 JMPT R21 #005F + 0x9454160E, // 005A GETIDX R21 R11 R14 + 0x94542A11, // 005B GETIDX R21 R21 R17 + 0x60580012, // 005C GETGBL R22 G18 + 0x7C580000, // 005D CALL R22 0 + 0x98542816, // 005E SETIDX R21 R20 R22 + 0x50240200, // 005F LDBOOL R9 1 0 + 0x9454160E, // 0060 GETIDX R21 R11 R14 + 0x94542A11, // 0061 GETIDX R21 R21 R17 + 0x94542A14, // 0062 GETIDX R21 R21 R20 + 0x8C542B08, // 0063 GETMET R21 R21 K8 + 0x5C5C1A00, // 0064 MOVE R23 R13 + 0x7C540400, // 0065 CALL R21 2 + 0x7001FFE4, // 0066 JMP #004C + 0x584C0009, // 0067 LDCONST R19 K9 + 0xAC4C0200, // 0068 CATCH R19 1 0 + 0xB0080000, // 0069 RAISE 2 R0 R0 + 0x7001FFC7, // 006A JMP #0033 + 0x58400009, // 006B LDCONST R16 K9 + 0xAC400200, // 006C CATCH R16 1 0 + 0xB0080000, // 006D RAISE 2 R0 R0 + 0x7001FFAB, // 006E JMP #001B + 0x58300009, // 006F LDCONST R12 K9 + 0xAC300200, // 0070 CATCH R12 1 0 + 0xB0080000, // 0071 RAISE 2 R0 R0 + 0x60300010, // 0072 GETGBL R12 G16 + 0x5C340600, // 0073 MOVE R13 R3 + 0x5C381600, // 0074 MOVE R14 R11 + 0x7C340200, // 0075 CALL R13 1 + 0x7C300200, // 0076 CALL R12 1 + 0xA8020033, // 0077 EXBLK 0 #00AC + 0x5C341800, // 0078 MOVE R13 R12 + 0x7C340000, // 0079 CALL R13 0 + 0x60380010, // 007A GETGBL R14 G16 + 0x5C3C0600, // 007B MOVE R15 R3 + 0x9440160D, // 007C GETIDX R16 R11 R13 + 0x7C3C0200, // 007D CALL R15 1 + 0x7C380200, // 007E CALL R14 1 + 0xA8020027, // 007F EXBLK 0 #00A8 + 0x5C3C1C00, // 0080 MOVE R15 R14 + 0x7C3C0000, // 0081 CALL R15 0 + 0x60400010, // 0082 GETGBL R16 G16 + 0x5C440600, // 0083 MOVE R17 R3 + 0x9448160D, // 0084 GETIDX R18 R11 R13 + 0x9448240F, // 0085 GETIDX R18 R18 R15 + 0x7C440200, // 0086 CALL R17 1 + 0x7C400200, // 0087 CALL R16 1 + 0xA802001A, // 0088 EXBLK 0 #00A4 + 0x5C442000, // 0089 MOVE R17 R16 + 0x7C440000, // 008A CALL R17 0 + 0x60480010, // 008B GETGBL R18 G16 + 0x944C160D, // 008C GETIDX R19 R11 R13 + 0x944C260F, // 008D GETIDX R19 R19 R15 + 0x944C2611, // 008E GETIDX R19 R19 R17 + 0x7C480200, // 008F CALL R18 1 + 0xA802000E, // 0090 EXBLK 0 #00A0 + 0x5C4C2400, // 0091 MOVE R19 R18 + 0x7C4C0000, // 0092 CALL R19 0 + 0x9006000D, // 0093 SETMBR R1 K0 R13 + 0x9006020F, // 0094 SETMBR R1 K1 R15 + 0x90060411, // 0095 SETMBR R1 K2 R17 + 0x5C500400, // 0096 MOVE R20 R2 + 0x5C542600, // 0097 MOVE R21 R19 + 0x5C580200, // 0098 MOVE R22 R1 + 0x5C5C1400, // 0099 MOVE R23 R10 + 0x7C500600, // 009A CALL R20 3 + 0x782A0002, // 009B JMPF R10 #009F + 0x78520001, // 009C JMPF R20 #009F + 0xA8040004, // 009D EXBLK 1 4 + 0x80002A00, // 009E RET 0 + 0x7001FFF0, // 009F JMP #0091 + 0x58480009, // 00A0 LDCONST R18 K9 + 0xAC480200, // 00A1 CATCH R18 1 0 + 0xB0080000, // 00A2 RAISE 2 R0 R0 + 0x7001FFE4, // 00A3 JMP #0089 + 0x58400009, // 00A4 LDCONST R16 K9 + 0xAC400200, // 00A5 CATCH R16 1 0 + 0xB0080000, // 00A6 RAISE 2 R0 R0 + 0x7001FFD7, // 00A7 JMP #0080 + 0x58380009, // 00A8 LDCONST R14 K9 + 0xAC380200, // 00A9 CATCH R14 1 0 + 0xB0080000, // 00AA RAISE 2 R0 R0 + 0x7001FFCB, // 00AB JMP #0078 + 0x58300009, // 00AC LDCONST R12 K9 + 0xAC300200, // 00AD CATCH R12 1 0 + 0xB0080000, // 00AE RAISE 2 R0 R0 + 0x782A0019, // 00AF JMPF R10 #00CA + 0x5C300E00, // 00B0 MOVE R12 R7 + 0x74320003, // 00B1 JMPT R12 #00B6 + 0xB8321600, // 00B2 GETNGBL R12 K11 + 0x8830190C, // 00B3 GETMBR R12 R12 K12 + 0x9006140C, // 00B4 SETMBR R1 K10 R12 + 0x7002000E, // 00B5 JMP #00C5 + 0x5C301000, // 00B6 MOVE R12 R8 + 0x74320003, // 00B7 JMPT R12 #00BC + 0xB8321600, // 00B8 GETNGBL R12 K11 + 0x8830190D, // 00B9 GETMBR R12 R12 K13 + 0x9006140C, // 00BA SETMBR R1 K10 R12 + 0x70020008, // 00BB JMP #00C5 + 0x5C301200, // 00BC MOVE R12 R9 + 0x74320003, // 00BD JMPT R12 #00C2 + 0xB8321600, // 00BE GETNGBL R12 K11 + 0x8830190E, // 00BF GETMBR R12 R12 K14 + 0x9006140C, // 00C0 SETMBR R1 K10 R12 + 0x70020002, // 00C1 JMP #00C5 + 0xB8321600, // 00C2 GETNGBL R12 K11 + 0x8830190F, // 00C3 GETMBR R12 R12 K15 + 0x9006140C, // 00C4 SETMBR R1 K10 R12 + 0x5C300400, // 00C5 MOVE R12 R2 + 0x4C340000, // 00C6 LDNIL R13 + 0x5C380200, // 00C7 MOVE R14 R1 + 0x503C0200, // 00C8 LDBOOL R15 1 0 + 0x7C300600, // 00C9 CALL R12 3 + 0x80000000, // 00CA RET 0 }) ) ); @@ -1067,11 +1022,11 @@ be_local_closure(Matter_Device_start_operational_discovery_deferred, /* name * /******************************************************************** -** Solidified function: get_active_endpoints +** Solidified function: _instantiate_plugins_from_config ********************************************************************/ -be_local_closure(Matter_Device_get_active_endpoints, /* name */ +be_local_closure(Matter_Device__instantiate_plugins_from_config, /* name */ be_nested_proto( - 9, /* nstack */ + 18, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1079,257 +1034,39 @@ be_local_closure(Matter_Device_get_active_endpoints, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins), - /* K1 */ be_nested_str_weak(get_endpoint), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(stop_iteration), + ( &(const bvalue[30]) { /* constants */ + /* K0 */ be_nested_str_weak(k2l_num), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints), + /* K4 */ be_const_int(2), + /* K5 */ be_nested_str_weak(plugins), + /* K6 */ be_nested_str_weak(push), + /* K7 */ be_nested_str_weak(matter), + /* K8 */ be_nested_str_weak(Plugin_Root), + /* K9 */ be_const_int(0), + /* K10 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s), + /* K11 */ be_nested_str_weak(root), + /* K12 */ be_nested_str_weak(), + /* K13 */ be_nested_str_weak(Plugin_Aggregator), + /* K14 */ be_nested_str_weak(find), + /* K15 */ be_nested_str_weak(type), + /* K16 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping), + /* K17 */ be_const_int(3), + /* K18 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed), + /* K19 */ be_nested_str_weak(plugins_classes), + /* K20 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), + /* K21 */ be_nested_str_weak(_X27_X20skipping), + /* K22 */ be_nested_str_weak(conf_to_log), + /* K23 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K24 */ be_nested_str_weak(_X7C), + /* K25 */ be_nested_str_weak(stop_iteration), + /* K26 */ be_nested_str_weak(aggregator), + /* K27 */ be_nested_str_weak(publish_result), + /* K28 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D), + /* K29 */ be_nested_str_weak(Matter), }), - be_str_weak(get_active_endpoints), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x88100100, // 0003 GETMBR R4 R0 K0 - 0x7C0C0200, // 0004 CALL R3 1 - 0xA8020011, // 0005 EXBLK 0 #0018 - 0x5C100600, // 0006 MOVE R4 R3 - 0x7C100000, // 0007 CALL R4 0 - 0x8C140901, // 0008 GETMET R5 R4 K1 - 0x7C140200, // 0009 CALL R5 1 - 0x78060002, // 000A JMPF R1 #000E - 0x1C180B02, // 000B EQ R6 R5 K2 - 0x781A0000, // 000C JMPF R6 #000E - 0x7001FFF7, // 000D JMP #0006 - 0x8C180503, // 000E GETMET R6 R2 K3 - 0x5C200A00, // 000F MOVE R8 R5 - 0x7C180400, // 0010 CALL R6 2 - 0x4C1C0000, // 0011 LDNIL R7 - 0x1C180C07, // 0012 EQ R6 R6 R7 - 0x781A0002, // 0013 JMPF R6 #0017 - 0x8C180504, // 0014 GETMET R6 R2 K4 - 0x5C200A00, // 0015 MOVE R8 R5 - 0x7C180400, // 0016 CALL R6 2 - 0x7001FFED, // 0017 JMP #0006 - 0x580C0005, // 0018 LDCONST R3 K5 - 0xAC0C0200, // 0019 CATCH R3 1 0 - 0xB0080000, // 001A RAISE 2 R0 R0 - 0x80040400, // 001B RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_250ms -********************************************************************/ -be_local_closure(Matter_Device_every_250ms, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(every_250ms), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(plugins), - /* K4 */ be_const_int(1), - }), - be_str_weak(every_250ms), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x58040002, // 0003 LDCONST R1 K2 - 0x6008000C, // 0004 GETGBL R2 G12 - 0x880C0103, // 0005 GETMBR R3 R0 K3 - 0x7C080200, // 0006 CALL R2 1 - 0x14080202, // 0007 LT R2 R1 R2 - 0x780A0005, // 0008 JMPF R2 #000F - 0x88080103, // 0009 GETMBR R2 R0 K3 - 0x94080401, // 000A GETIDX R2 R2 R1 - 0x8C080501, // 000B GETMET R2 R2 K1 - 0x7C080200, // 000C CALL R2 1 - 0x00040304, // 000D ADD R1 R1 K4 - 0x7001FFF4, // 000E JMP #0004 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -be_local_closure(Matter_Device_invoke_request, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(plugins), - /* K3 */ be_nested_str_weak(invoke_request), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(status), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - }), - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x58100000, // 0000 LDCONST R4 K0 - 0x88140701, // 0001 GETMBR R5 R3 K1 - 0x6018000C, // 0002 GETGBL R6 G12 - 0x881C0102, // 0003 GETMBR R7 R0 K2 - 0x7C180200, // 0004 CALL R6 1 - 0x14180806, // 0005 LT R6 R4 R6 - 0x781A000C, // 0006 JMPF R6 #0014 - 0x88180102, // 0007 GETMBR R6 R0 K2 - 0x94180C04, // 0008 GETIDX R6 R6 R4 - 0x881C0D01, // 0009 GETMBR R7 R6 K1 - 0x1C1C0E05, // 000A EQ R7 R7 R5 - 0x781E0005, // 000B JMPF R7 #0012 - 0x8C1C0D03, // 000C GETMET R7 R6 K3 - 0x5C240200, // 000D MOVE R9 R1 - 0x5C280400, // 000E MOVE R10 R2 - 0x5C2C0600, // 000F MOVE R11 R3 - 0x7C1C0800, // 0010 CALL R7 4 - 0x80040E00, // 0011 RET 1 R7 - 0x00100904, // 0012 ADD R4 R4 K4 - 0x7001FFED, // 0013 JMP #0002 - 0xB81A0C00, // 0014 GETNGBL R6 K6 - 0x88180D07, // 0015 GETMBR R6 R6 K7 - 0x900E0A06, // 0016 SETMBR R3 K5 R6 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_commissioning_complete -********************************************************************/ -be_local_closure(Matter_Device_start_commissioning_complete, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(get_fabric), - /* K1 */ be_nested_str_weak(get_fabric_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(tohex), - /* K5 */ be_nested_str_weak(get_admin_vendor_name), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), - /* K9 */ be_const_int(2), - /* K10 */ be_nested_str_weak(stop_basic_commissioning), - }), - be_str_weak(start_commissioning_complete), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x8C0C0501, // 0002 GETMET R3 R2 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0704, // 0008 GETMET R3 R3 K4 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C100505, // 000A GETMET R4 R2 K5 - 0x7C100200, // 000B CALL R4 1 - 0xB8160C00, // 000C GETNGBL R5 K6 - 0x8C140B07, // 000D GETMET R5 R5 K7 - 0x601C0018, // 000E GETGBL R7 G24 - 0x58200008, // 000F LDCONST R8 K8 - 0x5C240600, // 0010 MOVE R9 R3 - 0x5C280800, // 0011 MOVE R10 R4 - 0x7C1C0600, // 0012 CALL R7 3 - 0x58200009, // 0013 LDCONST R8 K9 - 0x7C140600, // 0014 CALL R5 3 - 0x8C14010A, // 0015 GETMET R5 R0 K10 - 0x7C140200, // 0016 CALL R5 1 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _instantiate_plugins_from_config -********************************************************************/ -be_local_closure(Matter_Device__instantiate_plugins_from_config, /* name */ - be_nested_proto( - 18, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str_weak(k2l_num), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str_weak(plugins), - /* K6 */ be_nested_str_weak(push), - /* K7 */ be_nested_str_weak(matter), - /* K8 */ be_nested_str_weak(Plugin_Root), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s), - /* K11 */ be_nested_str_weak(root), - /* K12 */ be_nested_str_weak(), - /* K13 */ be_nested_str_weak(Plugin_Aggregator), - /* K14 */ be_nested_str_weak(find), - /* K15 */ be_nested_str_weak(type), - /* K16 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping), - /* K17 */ be_const_int(3), - /* K18 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed), - /* K19 */ be_nested_str_weak(plugins_classes), - /* K20 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), - /* K21 */ be_nested_str_weak(_X27_X20skipping), - /* K22 */ be_nested_str_weak(conf_to_log), - /* K23 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K24 */ be_nested_str_weak(_X7C), - /* K25 */ be_nested_str_weak(stop_iteration), - /* K26 */ be_nested_str_weak(aggregator), - /* K27 */ be_nested_str_weak(publish_result), - /* K28 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D), - /* K29 */ be_nested_str_weak(Matter), - }), - be_str_weak(_instantiate_plugins_from_config), + be_str_weak(_instantiate_plugins_from_config), &be_const_str_solidified, ( &(const binstruction[152]) { /* code */ 0x8C080100, // 0000 GETMET R2 R0 K0 @@ -1491,75 +1228,41 @@ be_local_closure(Matter_Device__instantiate_plugins_from_config, /* name */ /******************************************************************** -** Solidified function: compute_qrcode_content +** Solidified function: start_operational_discovery ********************************************************************/ -be_local_closure(Matter_Device_compute_qrcode_content, /* name */ +be_local_closure(Matter_Device_start_operational_discovery, /* name */ be_nested_proto( - 8, /* nstack */ - 1, /* argc */ + 7, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(resize), - /* K1 */ be_nested_str_weak(setbits), - /* K2 */ be_const_int(3), - /* K3 */ be_nested_str_weak(vendorid), - /* K4 */ be_nested_str_weak(productid), - /* K5 */ be_nested_str_weak(root_discriminator), - /* K6 */ be_nested_str_weak(root_passcode), - /* K7 */ be_const_int(134217727), - /* K8 */ be_nested_str_weak(MT_X3A), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(Base38), - /* K11 */ be_nested_str_weak(encode), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(mdns), + /* K2 */ be_nested_str_weak(stop_basic_commissioning), + /* K3 */ be_nested_str_weak(root_w0), + /* K4 */ be_nested_str_weak(root_L), + /* K5 */ be_nested_str_weak(mdns_announce_op_discovery), }), - be_str_weak(compute_qrcode_content), + be_str_weak(start_operational_discovery), &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x60040015, // 0000 GETGBL R1 G21 - 0x7C040000, // 0001 CALL R1 0 - 0x8C040300, // 0002 GETMET R1 R1 K0 - 0x540E000A, // 0003 LDINT R3 11 - 0x7C040400, // 0004 CALL R1 2 - 0x8C080301, // 0005 GETMET R2 R1 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x5416000F, // 0007 LDINT R5 16 - 0x88180103, // 0008 GETMBR R6 R0 K3 - 0x7C080800, // 0009 CALL R2 4 - 0x8C080301, // 000A GETMET R2 R1 K1 - 0x54120012, // 000B LDINT R4 19 - 0x5416000F, // 000C LDINT R5 16 - 0x88180104, // 000D GETMBR R6 R0 K4 - 0x7C080800, // 000E CALL R2 4 - 0x8C080301, // 000F GETMET R2 R1 K1 - 0x54120024, // 0010 LDINT R4 37 - 0x54160007, // 0011 LDINT R5 8 - 0x541A0003, // 0012 LDINT R6 4 - 0x7C080800, // 0013 CALL R2 4 - 0x8C080301, // 0014 GETMET R2 R1 K1 - 0x5412002C, // 0015 LDINT R4 45 - 0x5416000B, // 0016 LDINT R5 12 - 0x88180105, // 0017 GETMBR R6 R0 K5 - 0x541E0FFE, // 0018 LDINT R7 4095 - 0x2C180C07, // 0019 AND R6 R6 R7 - 0x7C080800, // 001A CALL R2 4 - 0x8C080301, // 001B GETMET R2 R1 K1 - 0x54120038, // 001C LDINT R4 57 - 0x5416001A, // 001D LDINT R5 27 - 0x88180106, // 001E GETMBR R6 R0 K6 - 0x2C180D07, // 001F AND R6 R6 K7 - 0x7C080800, // 0020 CALL R2 4 - 0xB80A1200, // 0021 GETNGBL R2 K9 - 0x8808050A, // 0022 GETMBR R2 R2 K10 - 0x8C08050B, // 0023 GETMET R2 R2 K11 - 0x5C100200, // 0024 MOVE R4 R1 - 0x7C080400, // 0025 CALL R2 2 - 0x000A1002, // 0026 ADD R2 K8 R2 - 0x80040400, // 0027 RET 1 R2 + ( &(const binstruction[12]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA40E0200, // 0001 IMPORT R3 K1 + 0x8C100102, // 0002 GETMET R4 R0 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x4C100000, // 0004 LDNIL R4 + 0x90020604, // 0005 SETMBR R0 K3 R4 + 0x4C100000, // 0006 LDNIL R4 + 0x90020804, // 0007 SETMBR R0 K4 R4 + 0x8C100105, // 0008 GETMET R4 R0 K5 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C100400, // 000A CALL R4 2 + 0x80000000, // 000B RET 0 }) ) ); @@ -1567,81 +1270,32 @@ be_local_closure(Matter_Device_compute_qrcode_content, /* name */ /******************************************************************** -** Solidified function: sort_distinct +** Solidified function: msg_received ********************************************************************/ -be_local_closure(Matter_Device_sort_distinct, /* name */ +be_local_closure(Matter_Device_msg_received, /* name */ be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 4, /* varg */ + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(remove), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(message_handler), + /* K1 */ be_nested_str_weak(msg_received), }), - be_str_weak(sort_distinct), + be_str_weak(msg_received), &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080010, // 0001 GETGBL R2 G16 - 0x600C000C, // 0002 GETGBL R3 G12 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C0C0200, // 0004 CALL R3 1 - 0x040C0701, // 0005 SUB R3 R3 K1 - 0x400E0203, // 0006 CONNECT R3 K1 R3 - 0x7C080200, // 0007 CALL R2 1 - 0xA8020010, // 0008 EXBLK 0 #001A - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x94100003, // 000B GETIDX R4 R0 R3 - 0x5C140600, // 000C MOVE R5 R3 - 0x24180B02, // 000D GT R6 R5 K2 - 0x781A0008, // 000E JMPF R6 #0018 - 0x04180B01, // 000F SUB R6 R5 K1 - 0x94180006, // 0010 GETIDX R6 R0 R6 - 0x24180C04, // 0011 GT R6 R6 R4 - 0x781A0004, // 0012 JMPF R6 #0018 - 0x04180B01, // 0013 SUB R6 R5 K1 - 0x94180006, // 0014 GETIDX R6 R0 R6 - 0x98000A06, // 0015 SETIDX R0 R5 R6 - 0x04140B01, // 0016 SUB R5 R5 K1 - 0x7001FFF4, // 0017 JMP #000D - 0x98000A04, // 0018 SETIDX R0 R5 R4 - 0x7001FFEE, // 0019 JMP #0009 - 0x58080003, // 001A LDCONST R2 K3 - 0xAC080200, // 001B CATCH R2 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x58080001, // 001D LDCONST R2 K1 - 0x600C000C, // 001E GETGBL R3 G12 - 0x5C100000, // 001F MOVE R4 R0 - 0x7C0C0200, // 0020 CALL R3 1 - 0x180C0701, // 0021 LE R3 R3 K1 - 0x780E0000, // 0022 JMPF R3 #0024 - 0x80040000, // 0023 RET 1 R0 - 0x940C0102, // 0024 GETIDX R3 R0 K2 - 0x6010000C, // 0025 GETGBL R4 G12 - 0x5C140000, // 0026 MOVE R5 R0 - 0x7C100200, // 0027 CALL R4 1 - 0x14100404, // 0028 LT R4 R2 R4 - 0x78120009, // 0029 JMPF R4 #0034 - 0x94100002, // 002A GETIDX R4 R0 R2 - 0x1C100803, // 002B EQ R4 R4 R3 - 0x78120003, // 002C JMPF R4 #0031 - 0x8C100104, // 002D GETMET R4 R0 K4 - 0x5C180400, // 002E MOVE R6 R2 - 0x7C100400, // 002F CALL R4 2 - 0x70020001, // 0030 JMP #0033 - 0x940C0002, // 0031 GETIDX R3 R0 R2 - 0x00080501, // 0032 ADD R2 R2 K1 - 0x7001FFF0, // 0033 JMP #0025 - 0x80040000, // 0034 RET 1 R0 + ( &(const binstruction[ 7]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0x5C180200, // 0002 MOVE R6 R1 + 0x5C1C0400, // 0003 MOVE R7 R2 + 0x5C200600, // 0004 MOVE R8 R3 + 0x7C100800, // 0005 CALL R4 4 + 0x80040800, // 0006 RET 1 R4 }) ) ); @@ -1649,311 +1303,73 @@ be_local_closure(Matter_Device_sort_distinct, /* name */ /******************************************************************** -** Solidified function: process_attribute_expansion +** Solidified function: register_http_remote ********************************************************************/ -be_local_closure(Matter_Device_process_attribute_expansion, /* name */ +be_local_closure(Matter_Device_register_http_remote, /* name */ be_nested_proto( - 24, /* nstack */ + 9, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(keys), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(stop_iteration), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - }), - be_str_weak(keys_sorted), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x60040012, // 0000 GETGBL R1 G18 - 0x7C040000, // 0001 CALL R1 0 - 0x60080010, // 0002 GETGBL R2 G16 - 0x8C0C0100, // 0003 GETMET R3 R0 K0 - 0x7C0C0200, // 0004 CALL R3 1 - 0x7C080200, // 0005 CALL R2 1 - 0xA8020005, // 0006 EXBLK 0 #000D - 0x5C0C0400, // 0007 MOVE R3 R2 - 0x7C0C0000, // 0008 CALL R3 0 - 0x8C100301, // 0009 GETMET R4 R1 K1 - 0x5C180600, // 000A MOVE R6 R3 - 0x7C100400, // 000B CALL R4 2 - 0x7001FFF9, // 000C JMP #0007 - 0x58080002, // 000D LDCONST R2 K2 - 0xAC080200, // 000E CATCH R2 1 0 - 0xB0080000, // 000F RAISE 2 R0 R0 - 0x60080010, // 0010 GETGBL R2 G16 - 0x600C000C, // 0011 GETGBL R3 G12 - 0x5C100200, // 0012 MOVE R4 R1 - 0x7C0C0200, // 0013 CALL R3 1 - 0x040C0703, // 0014 SUB R3 R3 K3 - 0x400E0603, // 0015 CONNECT R3 K3 R3 - 0x7C080200, // 0016 CALL R2 1 - 0xA8020010, // 0017 EXBLK 0 #0029 - 0x5C0C0400, // 0018 MOVE R3 R2 - 0x7C0C0000, // 0019 CALL R3 0 - 0x94100203, // 001A GETIDX R4 R1 R3 - 0x5C140600, // 001B MOVE R5 R3 - 0x24180B04, // 001C GT R6 R5 K4 - 0x781A0008, // 001D JMPF R6 #0027 - 0x04180B03, // 001E SUB R6 R5 K3 - 0x94180206, // 001F GETIDX R6 R1 R6 - 0x24180C04, // 0020 GT R6 R6 R4 - 0x781A0004, // 0021 JMPF R6 #0027 - 0x04180B03, // 0022 SUB R6 R5 K3 - 0x94180206, // 0023 GETIDX R6 R1 R6 - 0x98040A06, // 0024 SETIDX R1 R5 R6 - 0x04140B03, // 0025 SUB R5 R5 K3 - 0x7001FFF4, // 0026 JMP #001C - 0x98040A04, // 0027 SETIDX R1 R5 R4 - 0x7001FFEE, // 0028 JMP #0018 - 0x58080002, // 0029 LDCONST R2 K2 - 0xAC080200, // 002A CATCH R2 1 0 - 0xB0080000, // 002B RAISE 2 R0 R0 - 0x80040200, // 002C RET 1 R1 - }) - ), - }), + 0, /* has sup protos */ + NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - /* K3 */ be_nested_str_weak(plugins), - /* K4 */ be_nested_str_weak(get_endpoint), - /* K5 */ be_nested_str_weak(contains), - /* K6 */ be_nested_str_weak(get_cluster_list), - /* K7 */ be_nested_str_weak(get_attribute_list), - /* K8 */ be_nested_str_weak(push), - /* K9 */ be_nested_str_weak(stop_iteration), - /* K10 */ be_nested_str_weak(status), - /* K11 */ be_nested_str_weak(matter), - /* K12 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - /* K13 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), - /* K14 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K15 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(http_remotes), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(get_timeout), + /* K3 */ be_nested_str_weak(set_timeout), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(HTTP_remote), + /* K6 */ be_nested_str_weak(plugins_config_remotes), + /* K7 */ be_nested_str_weak(set_info), }), - be_str_weak(process_attribute_expansion), + be_str_weak(register_http_remote), &be_const_str_solidified, - ( &(const binstruction[205]) { /* code */ - 0x840C0000, // 0000 CLOSURE R3 P0 - 0x88100300, // 0001 GETMBR R4 R1 K0 - 0x50140000, // 0002 LDBOOL R5 0 0 - 0x88180301, // 0003 GETMBR R6 R1 K1 - 0x501C0000, // 0004 LDBOOL R7 0 0 - 0x88200302, // 0005 GETMBR R8 R1 K2 - 0x50240000, // 0006 LDBOOL R9 0 0 - 0x88280300, // 0007 GETMBR R10 R1 K0 - 0x4C2C0000, // 0008 LDNIL R11 - 0x2028140B, // 0009 NE R10 R10 R11 - 0x782A0007, // 000A JMPF R10 #0013 - 0x88280301, // 000B GETMBR R10 R1 K1 - 0x4C2C0000, // 000C LDNIL R11 - 0x2028140B, // 000D NE R10 R10 R11 - 0x782A0003, // 000E JMPF R10 #0013 - 0x88280302, // 000F GETMBR R10 R1 K2 - 0x4C2C0000, // 0010 LDNIL R11 - 0x2028140B, // 0011 NE R10 R10 R11 - 0x742A0000, // 0012 JMPT R10 #0014 - 0x50280001, // 0013 LDBOOL R10 0 1 - 0x50280200, // 0014 LDBOOL R10 1 0 - 0x602C0013, // 0015 GETGBL R11 G19 - 0x7C2C0000, // 0016 CALL R11 0 - 0x60300010, // 0017 GETGBL R12 G16 - 0x88340103, // 0018 GETMBR R13 R0 K3 - 0x7C300200, // 0019 CALL R12 1 - 0xA8020055, // 001A EXBLK 0 #0071 - 0x5C341800, // 001B MOVE R13 R12 - 0x7C340000, // 001C CALL R13 0 - 0x8C381B04, // 001D GETMET R14 R13 K4 - 0x7C380200, // 001E CALL R14 1 - 0x4C3C0000, // 001F LDNIL R15 - 0x203C080F, // 0020 NE R15 R4 R15 - 0x783E0002, // 0021 JMPF R15 #0025 - 0x203C1C04, // 0022 NE R15 R14 R4 - 0x783E0000, // 0023 JMPF R15 #0025 - 0x7001FFF5, // 0024 JMP #001B - 0x8C3C1705, // 0025 GETMET R15 R11 K5 - 0x5C441C00, // 0026 MOVE R17 R14 - 0x7C3C0400, // 0027 CALL R15 2 - 0x743E0002, // 0028 JMPT R15 #002C - 0x603C0013, // 0029 GETGBL R15 G19 - 0x7C3C0000, // 002A CALL R15 0 - 0x982C1C0F, // 002B SETIDX R11 R14 R15 - 0x50140200, // 002C LDBOOL R5 1 0 - 0x8C3C1B06, // 002D GETMET R15 R13 K6 - 0x5C441C00, // 002E MOVE R17 R14 - 0x7C3C0400, // 002F CALL R15 2 - 0x60400010, // 0030 GETGBL R16 G16 - 0x5C441E00, // 0031 MOVE R17 R15 - 0x7C400200, // 0032 CALL R16 1 - 0xA8020038, // 0033 EXBLK 0 #006D - 0x5C442000, // 0034 MOVE R17 R16 - 0x7C440000, // 0035 CALL R17 0 - 0x4C480000, // 0036 LDNIL R18 - 0x20480C12, // 0037 NE R18 R6 R18 - 0x784A0002, // 0038 JMPF R18 #003C - 0x20482206, // 0039 NE R18 R17 R6 - 0x784A0000, // 003A JMPF R18 #003C - 0x7001FFF7, // 003B JMP #0034 - 0x9448160E, // 003C GETIDX R18 R11 R14 - 0x8C482505, // 003D GETMET R18 R18 K5 - 0x5C502200, // 003E MOVE R20 R17 - 0x7C480400, // 003F CALL R18 2 - 0x744A0003, // 0040 JMPT R18 #0045 - 0x9448160E, // 0041 GETIDX R18 R11 R14 - 0x604C0013, // 0042 GETGBL R19 G19 - 0x7C4C0000, // 0043 CALL R19 0 - 0x98482213, // 0044 SETIDX R18 R17 R19 - 0x501C0200, // 0045 LDBOOL R7 1 0 - 0x8C481B07, // 0046 GETMET R18 R13 K7 - 0x5C501C00, // 0047 MOVE R20 R14 - 0x5C542200, // 0048 MOVE R21 R17 - 0x7C480600, // 0049 CALL R18 3 - 0x604C0010, // 004A GETGBL R19 G16 - 0x5C502400, // 004B MOVE R20 R18 - 0x7C4C0200, // 004C CALL R19 1 - 0xA802001A, // 004D EXBLK 0 #0069 - 0x5C502600, // 004E MOVE R20 R19 - 0x7C500000, // 004F CALL R20 0 - 0x4C540000, // 0050 LDNIL R21 - 0x20541015, // 0051 NE R21 R8 R21 - 0x78560002, // 0052 JMPF R21 #0056 - 0x20542808, // 0053 NE R21 R20 R8 - 0x78560000, // 0054 JMPF R21 #0056 - 0x7001FFF7, // 0055 JMP #004E - 0x9454160E, // 0056 GETIDX R21 R11 R14 - 0x94542A11, // 0057 GETIDX R21 R21 R17 - 0x8C542B05, // 0058 GETMET R21 R21 K5 - 0x5C5C2800, // 0059 MOVE R23 R20 - 0x7C540400, // 005A CALL R21 2 - 0x74560004, // 005B JMPT R21 #0061 - 0x9454160E, // 005C GETIDX R21 R11 R14 - 0x94542A11, // 005D GETIDX R21 R21 R17 - 0x60580012, // 005E GETGBL R22 G18 - 0x7C580000, // 005F CALL R22 0 - 0x98542816, // 0060 SETIDX R21 R20 R22 - 0x50240200, // 0061 LDBOOL R9 1 0 - 0x9454160E, // 0062 GETIDX R21 R11 R14 - 0x94542A11, // 0063 GETIDX R21 R21 R17 - 0x94542A14, // 0064 GETIDX R21 R21 R20 - 0x8C542B08, // 0065 GETMET R21 R21 K8 - 0x5C5C1A00, // 0066 MOVE R23 R13 - 0x7C540400, // 0067 CALL R21 2 - 0x7001FFE4, // 0068 JMP #004E - 0x584C0009, // 0069 LDCONST R19 K9 - 0xAC4C0200, // 006A CATCH R19 1 0 - 0xB0080000, // 006B RAISE 2 R0 R0 - 0x7001FFC6, // 006C JMP #0034 - 0x58400009, // 006D LDCONST R16 K9 - 0xAC400200, // 006E CATCH R16 1 0 - 0xB0080000, // 006F RAISE 2 R0 R0 - 0x7001FFA9, // 0070 JMP #001B - 0x58300009, // 0071 LDCONST R12 K9 - 0xAC300200, // 0072 CATCH R12 1 0 - 0xB0080000, // 0073 RAISE 2 R0 R0 - 0x60300010, // 0074 GETGBL R12 G16 - 0x5C340600, // 0075 MOVE R13 R3 - 0x5C381600, // 0076 MOVE R14 R11 - 0x7C340200, // 0077 CALL R13 1 - 0x7C300200, // 0078 CALL R12 1 - 0xA8020033, // 0079 EXBLK 0 #00AE - 0x5C341800, // 007A MOVE R13 R12 - 0x7C340000, // 007B CALL R13 0 - 0x60380010, // 007C GETGBL R14 G16 - 0x5C3C0600, // 007D MOVE R15 R3 - 0x9440160D, // 007E GETIDX R16 R11 R13 - 0x7C3C0200, // 007F CALL R15 1 - 0x7C380200, // 0080 CALL R14 1 - 0xA8020027, // 0081 EXBLK 0 #00AA - 0x5C3C1C00, // 0082 MOVE R15 R14 - 0x7C3C0000, // 0083 CALL R15 0 - 0x60400010, // 0084 GETGBL R16 G16 - 0x5C440600, // 0085 MOVE R17 R3 - 0x9448160D, // 0086 GETIDX R18 R11 R13 - 0x9448240F, // 0087 GETIDX R18 R18 R15 - 0x7C440200, // 0088 CALL R17 1 - 0x7C400200, // 0089 CALL R16 1 - 0xA802001A, // 008A EXBLK 0 #00A6 - 0x5C442000, // 008B MOVE R17 R16 - 0x7C440000, // 008C CALL R17 0 - 0x60480010, // 008D GETGBL R18 G16 - 0x944C160D, // 008E GETIDX R19 R11 R13 - 0x944C260F, // 008F GETIDX R19 R19 R15 - 0x944C2611, // 0090 GETIDX R19 R19 R17 - 0x7C480200, // 0091 CALL R18 1 - 0xA802000E, // 0092 EXBLK 0 #00A2 - 0x5C4C2400, // 0093 MOVE R19 R18 - 0x7C4C0000, // 0094 CALL R19 0 - 0x9006000D, // 0095 SETMBR R1 K0 R13 - 0x9006020F, // 0096 SETMBR R1 K1 R15 - 0x90060411, // 0097 SETMBR R1 K2 R17 - 0x5C500400, // 0098 MOVE R20 R2 - 0x5C542600, // 0099 MOVE R21 R19 - 0x5C580200, // 009A MOVE R22 R1 - 0x5C5C1400, // 009B MOVE R23 R10 - 0x7C500600, // 009C CALL R20 3 - 0x782A0002, // 009D JMPF R10 #00A1 - 0x78520001, // 009E JMPF R20 #00A1 - 0xA8040004, // 009F EXBLK 1 4 - 0x80002A00, // 00A0 RET 0 - 0x7001FFF0, // 00A1 JMP #0093 - 0x58480009, // 00A2 LDCONST R18 K9 - 0xAC480200, // 00A3 CATCH R18 1 0 - 0xB0080000, // 00A4 RAISE 2 R0 R0 - 0x7001FFE4, // 00A5 JMP #008B - 0x58400009, // 00A6 LDCONST R16 K9 - 0xAC400200, // 00A7 CATCH R16 1 0 - 0xB0080000, // 00A8 RAISE 2 R0 R0 - 0x7001FFD7, // 00A9 JMP #0082 - 0x58380009, // 00AA LDCONST R14 K9 - 0xAC380200, // 00AB CATCH R14 1 0 - 0xB0080000, // 00AC RAISE 2 R0 R0 - 0x7001FFCB, // 00AD JMP #007A - 0x58300009, // 00AE LDCONST R12 K9 - 0xAC300200, // 00AF CATCH R12 1 0 - 0xB0080000, // 00B0 RAISE 2 R0 R0 - 0x782A0019, // 00B1 JMPF R10 #00CC - 0x5C300A00, // 00B2 MOVE R12 R5 - 0x74320003, // 00B3 JMPT R12 #00B8 - 0xB8321600, // 00B4 GETNGBL R12 K11 - 0x8830190C, // 00B5 GETMBR R12 R12 K12 - 0x9006140C, // 00B6 SETMBR R1 K10 R12 - 0x7002000E, // 00B7 JMP #00C7 - 0x5C300E00, // 00B8 MOVE R12 R7 - 0x74320003, // 00B9 JMPT R12 #00BE - 0xB8321600, // 00BA GETNGBL R12 K11 - 0x8830190D, // 00BB GETMBR R12 R12 K13 - 0x9006140C, // 00BC SETMBR R1 K10 R12 - 0x70020008, // 00BD JMP #00C7 - 0x5C301200, // 00BE MOVE R12 R9 - 0x74320003, // 00BF JMPT R12 #00C4 - 0xB8321600, // 00C0 GETNGBL R12 K11 - 0x8830190E, // 00C1 GETMBR R12 R12 K14 - 0x9006140C, // 00C2 SETMBR R1 K10 R12 - 0x70020002, // 00C3 JMP #00C7 - 0xB8321600, // 00C4 GETNGBL R12 K11 - 0x8830190F, // 00C5 GETMBR R12 R12 K15 - 0x9006140C, // 00C6 SETMBR R1 K10 R12 - 0x5C300400, // 00C7 MOVE R12 R2 - 0x4C340000, // 00C8 LDNIL R13 - 0x5C380200, // 00C9 MOVE R14 R1 - 0x503C0200, // 00CA LDBOOL R15 1 0 - 0x7C300600, // 00CB CALL R12 3 - 0x80000000, // 00CC RET 0 + ( &(const binstruction[42]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x1C0C0604, // 0002 EQ R3 R3 R4 + 0x780E0002, // 0003 JMPF R3 #0007 + 0x600C0013, // 0004 GETGBL R3 G19 + 0x7C0C0000, // 0005 CALL R3 0 + 0x90020003, // 0006 SETMBR R0 K0 R3 + 0x4C0C0000, // 0007 LDNIL R3 + 0x88100100, // 0008 GETMBR R4 R0 K0 + 0x8C100901, // 0009 GETMET R4 R4 K1 + 0x5C180200, // 000A MOVE R6 R1 + 0x7C100400, // 000B CALL R4 2 + 0x78120009, // 000C JMPF R4 #0017 + 0x88100100, // 000D GETMBR R4 R0 K0 + 0x940C0801, // 000E GETIDX R3 R4 R1 + 0x8C140702, // 000F GETMET R5 R3 K2 + 0x7C140200, // 0010 CALL R5 1 + 0x14140405, // 0011 LT R5 R2 R5 + 0x78160002, // 0012 JMPF R5 #0016 + 0x8C140703, // 0013 GETMET R5 R3 K3 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x7C140400, // 0015 CALL R5 2 + 0x70020011, // 0016 JMP #0029 + 0xB8120800, // 0017 GETNGBL R4 K4 + 0x8C100905, // 0018 GETMET R4 R4 K5 + 0x5C180000, // 0019 MOVE R6 R0 + 0x5C1C0200, // 001A MOVE R7 R1 + 0x5C200400, // 001B MOVE R8 R2 + 0x7C100800, // 001C CALL R4 4 + 0x5C0C0800, // 001D MOVE R3 R4 + 0x88100106, // 001E GETMBR R4 R0 K6 + 0x8C100901, // 001F GETMET R4 R4 K1 + 0x5C180200, // 0020 MOVE R6 R1 + 0x7C100400, // 0021 CALL R4 2 + 0x78120003, // 0022 JMPF R4 #0027 + 0x8C100707, // 0023 GETMET R4 R3 K7 + 0x88180106, // 0024 GETMBR R6 R0 K6 + 0x94180C01, // 0025 GETIDX R6 R6 R1 + 0x7C100400, // 0026 CALL R4 2 + 0x88100100, // 0027 GETMBR R4 R0 K0 + 0x98100203, // 0028 SETIDX R4 R1 R3 + 0x80040600, // 0029 RET 1 R3 }) ) ); @@ -1961,71 +1377,114 @@ be_local_closure(Matter_Device_process_attribute_expansion, /* name */ /******************************************************************** -** Solidified function: _trigger_read_sensors +** Solidified function: bridge_add_endpoint ********************************************************************/ -be_local_closure(Matter_Device__trigger_read_sensors, /* name */ +be_local_closure(Matter_Device_bridge_add_endpoint, /* name */ be_nested_proto( - 8, /* nstack */ - 1, /* argc */ + 17, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(read_sensors), - /* K3 */ be_nested_str_weak(load), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(plugins), - /* K6 */ be_nested_str_weak(parse_sensors), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), - /* K10 */ be_const_int(3), + ( &(const bvalue[21]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), + /* K5 */ be_nested_str_weak(_X27_X20skipping), + /* K6 */ be_const_int(3), + /* K7 */ be_nested_str_weak(next_ep), + /* K8 */ be_nested_str_weak(plugins), + /* K9 */ be_nested_str_weak(push), + /* K10 */ be_nested_str_weak(type), + /* K11 */ be_nested_str_weak(keys), + /* K12 */ be_nested_str_weak(stop_iteration), + /* K13 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), + /* K14 */ be_nested_str_weak(conf_to_log), + /* K15 */ be_const_int(2), + /* K16 */ be_nested_str_weak(plugins_config), + /* K17 */ be_nested_str_weak(plugins_persist), + /* K18 */ be_const_int(1), + /* K19 */ be_nested_str_weak(save_param), + /* K20 */ be_nested_str_weak(signal_endpoints_changed), }), - be_str_weak(_trigger_read_sensors), + be_str_weak(bridge_add_endpoint), &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x7C080200, // 0003 CALL R2 1 - 0x4C0C0000, // 0004 LDNIL R3 - 0x1C0C0403, // 0005 EQ R3 R2 R3 - 0x780E0000, // 0006 JMPF R3 #0008 - 0x80000600, // 0007 RET 0 - 0x8C0C0303, // 0008 GETMET R3 R1 K3 - 0x5C140400, // 0009 MOVE R5 R2 - 0x7C0C0400, // 000A CALL R3 2 - 0x4C100000, // 000B LDNIL R4 - 0x20100604, // 000C NE R4 R3 R4 - 0x7812000D, // 000D JMPF R4 #001C - 0x58100004, // 000E LDCONST R4 K4 - 0x6014000C, // 000F GETGBL R5 G12 - 0x88180105, // 0010 GETMBR R6 R0 K5 - 0x7C140200, // 0011 CALL R5 1 - 0x14140805, // 0012 LT R5 R4 R5 - 0x78160006, // 0013 JMPF R5 #001B - 0x88140105, // 0014 GETMBR R5 R0 K5 - 0x94140A04, // 0015 GETIDX R5 R5 R4 - 0x8C140B06, // 0016 GETMET R5 R5 K6 - 0x5C1C0600, // 0017 MOVE R7 R3 - 0x7C140400, // 0018 CALL R5 2 - 0x00100907, // 0019 ADD R4 R4 K7 - 0x7001FFF3, // 001A JMP #000F - 0x70020007, // 001B JMP #0024 - 0xB8120200, // 001C GETNGBL R4 K1 - 0x8C100908, // 001D GETMET R4 R4 K8 - 0x60180008, // 001E GETGBL R6 G8 - 0x5C1C0400, // 001F MOVE R7 R2 - 0x7C180200, // 0020 CALL R6 1 - 0x001A1206, // 0021 ADD R6 K9 R6 - 0x581C000A, // 0022 LDCONST R7 K10 - 0x7C100600, // 0023 CALL R4 3 - 0x80000000, // 0024 RET 0 + ( &(const binstruction[70]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120009, // 0006 JMPF R4 #0011 + 0xB8120400, // 0007 GETNGBL R4 K2 + 0x8C100903, // 0008 GETMET R4 R4 K3 + 0x60180008, // 0009 GETGBL R6 G8 + 0x5C1C0200, // 000A MOVE R7 R1 + 0x7C180200, // 000B CALL R6 1 + 0x001A0806, // 000C ADD R6 K4 R6 + 0x00180D05, // 000D ADD R6 R6 K5 + 0x581C0006, // 000E LDCONST R7 K6 + 0x7C100600, // 000F CALL R4 3 + 0x80000800, // 0010 RET 0 + 0x88100107, // 0011 GETMBR R4 R0 K7 + 0x60140008, // 0012 GETGBL R5 G8 + 0x5C180800, // 0013 MOVE R6 R4 + 0x7C140200, // 0014 CALL R5 1 + 0x5C180600, // 0015 MOVE R6 R3 + 0x5C1C0000, // 0016 MOVE R7 R0 + 0x5C200800, // 0017 MOVE R8 R4 + 0x5C240400, // 0018 MOVE R9 R2 + 0x7C180600, // 0019 CALL R6 3 + 0x881C0108, // 001A GETMBR R7 R0 K8 + 0x8C1C0F09, // 001B GETMET R7 R7 K9 + 0x5C240C00, // 001C MOVE R9 R6 + 0x7C1C0400, // 001D CALL R7 2 + 0x601C0013, // 001E GETGBL R7 G19 + 0x7C1C0000, // 001F CALL R7 0 + 0x981E1401, // 0020 SETIDX R7 K10 R1 + 0x60200010, // 0021 GETGBL R8 G16 + 0x8C24050B, // 0022 GETMET R9 R2 K11 + 0x7C240200, // 0023 CALL R9 1 + 0x7C200200, // 0024 CALL R8 1 + 0xA8020004, // 0025 EXBLK 0 #002B + 0x5C241000, // 0026 MOVE R9 R8 + 0x7C240000, // 0027 CALL R9 0 + 0x94280409, // 0028 GETIDX R10 R2 R9 + 0x981C120A, // 0029 SETIDX R7 R9 R10 + 0x7001FFFA, // 002A JMP #0026 + 0x5820000C, // 002B LDCONST R8 K12 + 0xAC200200, // 002C CATCH R8 1 0 + 0xB0080000, // 002D RAISE 2 R0 R0 + 0xB8220400, // 002E GETNGBL R8 K2 + 0x8C201103, // 002F GETMET R8 R8 K3 + 0x60280018, // 0030 GETGBL R10 G24 + 0x582C000D, // 0031 LDCONST R11 K13 + 0x5C300800, // 0032 MOVE R12 R4 + 0x5C340200, // 0033 MOVE R13 R1 + 0x8C38010E, // 0034 GETMET R14 R0 K14 + 0x5C400400, // 0035 MOVE R16 R2 + 0x7C380400, // 0036 CALL R14 2 + 0x7C280800, // 0037 CALL R10 4 + 0x582C000F, // 0038 LDCONST R11 K15 + 0x7C200600, // 0039 CALL R8 3 + 0x88200110, // 003A GETMBR R8 R0 K16 + 0x98200A07, // 003B SETIDX R8 R5 R7 + 0x50200200, // 003C LDBOOL R8 1 0 + 0x90022208, // 003D SETMBR R0 K17 R8 + 0x88200107, // 003E GETMBR R8 R0 K7 + 0x00201112, // 003F ADD R8 R8 K18 + 0x90020E08, // 0040 SETMBR R0 K7 R8 + 0x8C200113, // 0041 GETMET R8 R0 K19 + 0x7C200200, // 0042 CALL R8 1 + 0x8C200114, // 0043 GETMET R8 R0 K20 + 0x7C200200, // 0044 CALL R8 1 + 0x80040800, // 0045 RET 1 R4 }) ) ); @@ -2033,36 +1492,36 @@ be_local_closure(Matter_Device__trigger_read_sensors, /* name */ /******************************************************************** -** Solidified function: is_root_commissioning_open +** Solidified function: get_plugin_class_arg ********************************************************************/ -be_local_closure(Matter_Device_is_root_commissioning_open, /* name */ +be_local_closure(Matter_Device_get_plugin_class_arg, /* name */ be_nested_proto( - 3, /* nstack */ - 1, /* argc */ + 5, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - /* K1 */ be_nested_str_weak(commissioning_admin_fabric), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_nested_str_weak(), }), - be_str_weak(is_root_commissioning_open), + be_str_weak(get_plugin_class_arg), &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x78060003, // 0003 JMPF R1 #0008 - 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x4C080000, // 0005 LDNIL R2 - 0x1C040202, // 0006 EQ R1 R1 R2 - 0x74060000, // 0007 JMPT R1 #0009 - 0x50040001, // 0008 LDBOOL R1 0 1 - 0x50040200, // 0009 LDBOOL R1 1 0 - 0x80040200, // 000A RET 1 R1 + ( &(const binstruction[ 9]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x880C0502, // 0005 GETMBR R3 R2 K2 + 0x70020000, // 0006 JMP #0008 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x80040600, // 0008 RET 1 R3 }) ) ); @@ -2070,50 +1529,75 @@ be_local_closure(Matter_Device_is_root_commissioning_open, /* name */ /******************************************************************** -** Solidified function: attribute_updated +** Solidified function: compute_qrcode_content ********************************************************************/ -be_local_closure(Matter_Device_attribute_updated, /* name */ +be_local_closure(Matter_Device_compute_qrcode_content, /* name */ be_nested_proto( - 10, /* nstack */ - 5, /* argc */ + 8, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(Path), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_nested_str_weak(message_handler), - /* K6 */ be_nested_str_weak(im), - /* K7 */ be_nested_str_weak(subs_shop), - /* K8 */ be_nested_str_weak(attribute_updated_ctx), - }), - be_str_weak(attribute_updated), + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(resize), + /* K1 */ be_nested_str_weak(setbits), + /* K2 */ be_const_int(3), + /* K3 */ be_nested_str_weak(vendorid), + /* K4 */ be_nested_str_weak(productid), + /* K5 */ be_nested_str_weak(root_discriminator), + /* K6 */ be_nested_str_weak(root_passcode), + /* K7 */ be_const_int(134217727), + /* K8 */ be_nested_str_weak(MT_X3A), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(Base38), + /* K11 */ be_nested_str_weak(encode), + }), + be_str_weak(compute_qrcode_content), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x1C140805, // 0001 EQ R5 R4 R5 - 0x78160000, // 0002 JMPF R5 #0004 - 0x50100000, // 0003 LDBOOL R4 0 0 - 0xB8160000, // 0004 GETNGBL R5 K0 - 0x8C140B01, // 0005 GETMET R5 R5 K1 - 0x7C140200, // 0006 CALL R5 1 - 0x90160401, // 0007 SETMBR R5 K2 R1 - 0x90160602, // 0008 SETMBR R5 K3 R2 - 0x90160803, // 0009 SETMBR R5 K4 R3 - 0x88180105, // 000A GETMBR R6 R0 K5 - 0x88180D06, // 000B GETMBR R6 R6 K6 - 0x88180D07, // 000C GETMBR R6 R6 K7 - 0x8C180D08, // 000D GETMET R6 R6 K8 - 0x5C200A00, // 000E MOVE R8 R5 - 0x5C240800, // 000F MOVE R9 R4 - 0x7C180600, // 0010 CALL R6 3 - 0x80000000, // 0011 RET 0 + ( &(const binstruction[40]) { /* code */ + 0x60040015, // 0000 GETGBL R1 G21 + 0x7C040000, // 0001 CALL R1 0 + 0x8C040300, // 0002 GETMET R1 R1 K0 + 0x540E000A, // 0003 LDINT R3 11 + 0x7C040400, // 0004 CALL R1 2 + 0x8C080301, // 0005 GETMET R2 R1 K1 + 0x58100002, // 0006 LDCONST R4 K2 + 0x5416000F, // 0007 LDINT R5 16 + 0x88180103, // 0008 GETMBR R6 R0 K3 + 0x7C080800, // 0009 CALL R2 4 + 0x8C080301, // 000A GETMET R2 R1 K1 + 0x54120012, // 000B LDINT R4 19 + 0x5416000F, // 000C LDINT R5 16 + 0x88180104, // 000D GETMBR R6 R0 K4 + 0x7C080800, // 000E CALL R2 4 + 0x8C080301, // 000F GETMET R2 R1 K1 + 0x54120024, // 0010 LDINT R4 37 + 0x54160007, // 0011 LDINT R5 8 + 0x541A0003, // 0012 LDINT R6 4 + 0x7C080800, // 0013 CALL R2 4 + 0x8C080301, // 0014 GETMET R2 R1 K1 + 0x5412002C, // 0015 LDINT R4 45 + 0x5416000B, // 0016 LDINT R5 12 + 0x88180105, // 0017 GETMBR R6 R0 K5 + 0x541E0FFE, // 0018 LDINT R7 4095 + 0x2C180C07, // 0019 AND R6 R6 R7 + 0x7C080800, // 001A CALL R2 4 + 0x8C080301, // 001B GETMET R2 R1 K1 + 0x54120038, // 001C LDINT R4 57 + 0x5416001A, // 001D LDINT R5 27 + 0x88180106, // 001E GETMBR R6 R0 K6 + 0x2C180D07, // 001F AND R6 R6 K7 + 0x7C080800, // 0020 CALL R2 4 + 0xB80A1200, // 0021 GETNGBL R2 K9 + 0x8808050A, // 0022 GETMBR R2 R2 K10 + 0x8C08050B, // 0023 GETMET R2 R2 K11 + 0x5C100200, // 0024 MOVE R4 R1 + 0x7C080400, // 0025 CALL R2 2 + 0x000A1002, // 0026 ADD R2 K8 R2 + 0x80040400, // 0027 RET 1 R2 }) ) ); @@ -2121,171 +1605,28 @@ be_local_closure(Matter_Device_attribute_updated, /* name */ /******************************************************************** -** Solidified function: mdns_announce_op_discovery +** Solidified function: is_commissioning_open ********************************************************************/ -be_local_closure(Matter_Device_mdns_announce_op_discovery, /* name */ +be_local_closure(Matter_Device_is_commissioning_open, /* name */ be_nested_proto( - 14, /* nstack */ - 2, /* argc */ + 3, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(get_device_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(get_fabric_compressed), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_nested_str_weak(_X2D), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(eth), - /* K12 */ be_nested_str_weak(find), - /* K13 */ be_nested_str_weak(up), - /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K15 */ be_nested_str_weak(hostname_eth), - /* K16 */ be_nested_str_weak(add_service), - /* K17 */ be_nested_str_weak(_matter), - /* K18 */ be_nested_str_weak(_tcp), - /* K19 */ be_nested_str_weak(_I), - /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), - /* K21 */ be_nested_str_weak(add_subtype), - /* K22 */ be_nested_str_weak(wifi), - /* K23 */ be_nested_str_weak(hostname_wifi), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K25 */ be_nested_str_weak(_X7C), - /* K26 */ be_const_int(2), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(commissioning_open), }), - be_str_weak(mdns_announce_op_discovery), + be_str_weak(is_commissioning_open), &be_const_str_solidified, - ( &(const binstruction[121]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA8020064, // 0001 EXBLK 0 #0067 - 0x8C0C0301, // 0002 GETMET R3 R1 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100304, // 0008 GETMET R4 R1 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x8C140905, // 000A GETMET R5 R4 K5 - 0x7C140200, // 000B CALL R5 1 - 0x00140B06, // 000C ADD R5 R5 K6 - 0x8C180705, // 000D GETMET R6 R3 K5 - 0x7C180200, // 000E CALL R6 1 - 0x00140A06, // 000F ADD R5 R5 R6 - 0xB81A0E00, // 0010 GETNGBL R6 K7 - 0x8C180D08, // 0011 GETMET R6 R6 K8 - 0x00221205, // 0012 ADD R8 K9 R5 - 0x5824000A, // 0013 LDCONST R9 K10 - 0x7C180600, // 0014 CALL R6 3 - 0xB81A0E00, // 0015 GETNGBL R6 K7 - 0x8C180D0B, // 0016 GETMET R6 R6 K11 - 0x7C180200, // 0017 CALL R6 1 - 0x8C180D0C, // 0018 GETMET R6 R6 K12 - 0x5820000D, // 0019 LDCONST R8 K13 - 0x7C180400, // 001A CALL R6 2 - 0x781A0020, // 001B JMPF R6 #003D - 0xB81A0E00, // 001C GETNGBL R6 K7 - 0x8C180D08, // 001D GETMET R6 R6 K8 - 0x60200018, // 001E GETGBL R8 G24 - 0x5824000E, // 001F LDCONST R9 K14 - 0x5828000B, // 0020 LDCONST R10 K11 - 0x5C2C0A00, // 0021 MOVE R11 R5 - 0x8830010F, // 0022 GETMBR R12 R0 K15 - 0x7C200800, // 0023 CALL R8 4 - 0x5824000A, // 0024 LDCONST R9 K10 - 0x7C180600, // 0025 CALL R6 3 - 0x8C180510, // 0026 GETMET R6 R2 K16 - 0x58200011, // 0027 LDCONST R8 K17 - 0x58240012, // 0028 LDCONST R9 K18 - 0x542A15A3, // 0029 LDINT R10 5540 - 0x4C2C0000, // 002A LDNIL R11 - 0x5C300A00, // 002B MOVE R12 R5 - 0x8834010F, // 002C GETMBR R13 R0 K15 - 0x7C180E00, // 002D CALL R6 7 - 0x8C180905, // 002E GETMET R6 R4 K5 - 0x7C180200, // 002F CALL R6 1 - 0x001A2606, // 0030 ADD R6 K19 R6 - 0xB81E0E00, // 0031 GETNGBL R7 K7 - 0x8C1C0F08, // 0032 GETMET R7 R7 K8 - 0x00262806, // 0033 ADD R9 K20 R6 - 0x5828000A, // 0034 LDCONST R10 K10 - 0x7C1C0600, // 0035 CALL R7 3 - 0x8C1C0515, // 0036 GETMET R7 R2 K21 - 0x58240011, // 0037 LDCONST R9 K17 - 0x58280012, // 0038 LDCONST R10 K18 - 0x5C2C0A00, // 0039 MOVE R11 R5 - 0x8830010F, // 003A GETMBR R12 R0 K15 - 0x5C340C00, // 003B MOVE R13 R6 - 0x7C1C0C00, // 003C CALL R7 6 - 0xB81A0E00, // 003D GETNGBL R6 K7 - 0x8C180D16, // 003E GETMET R6 R6 K22 - 0x7C180200, // 003F CALL R6 1 - 0x8C180D0C, // 0040 GETMET R6 R6 K12 - 0x5820000D, // 0041 LDCONST R8 K13 - 0x7C180400, // 0042 CALL R6 2 - 0x781A0020, // 0043 JMPF R6 #0065 - 0xB81A0E00, // 0044 GETNGBL R6 K7 - 0x8C180D08, // 0045 GETMET R6 R6 K8 - 0x60200018, // 0046 GETGBL R8 G24 - 0x5824000E, // 0047 LDCONST R9 K14 - 0x58280016, // 0048 LDCONST R10 K22 - 0x5C2C0A00, // 0049 MOVE R11 R5 - 0x88300117, // 004A GETMBR R12 R0 K23 - 0x7C200800, // 004B CALL R8 4 - 0x5824000A, // 004C LDCONST R9 K10 - 0x7C180600, // 004D CALL R6 3 - 0x8C180510, // 004E GETMET R6 R2 K16 - 0x58200011, // 004F LDCONST R8 K17 - 0x58240012, // 0050 LDCONST R9 K18 - 0x542A15A3, // 0051 LDINT R10 5540 - 0x4C2C0000, // 0052 LDNIL R11 - 0x5C300A00, // 0053 MOVE R12 R5 - 0x88340117, // 0054 GETMBR R13 R0 K23 - 0x7C180E00, // 0055 CALL R6 7 - 0x8C180905, // 0056 GETMET R6 R4 K5 - 0x7C180200, // 0057 CALL R6 1 - 0x001A2606, // 0058 ADD R6 K19 R6 - 0xB81E0E00, // 0059 GETNGBL R7 K7 - 0x8C1C0F08, // 005A GETMET R7 R7 K8 - 0x00262806, // 005B ADD R9 K20 R6 - 0x5828000A, // 005C LDCONST R10 K10 - 0x7C1C0600, // 005D CALL R7 3 - 0x8C1C0515, // 005E GETMET R7 R2 K21 - 0x58240011, // 005F LDCONST R9 K17 - 0x58280012, // 0060 LDCONST R10 K18 - 0x5C2C0A00, // 0061 MOVE R11 R5 - 0x88300117, // 0062 GETMBR R12 R0 K23 - 0x5C340C00, // 0063 MOVE R13 R6 - 0x7C1C0C00, // 0064 CALL R7 6 - 0xA8040001, // 0065 EXBLK 1 1 - 0x70020010, // 0066 JMP #0078 - 0xAC0C0002, // 0067 CATCH R3 0 2 - 0x7002000D, // 0068 JMP #0077 - 0xB8160E00, // 0069 GETNGBL R5 K7 - 0x8C140B08, // 006A GETMET R5 R5 K8 - 0x601C0008, // 006B GETGBL R7 G8 - 0x5C200600, // 006C MOVE R8 R3 - 0x7C1C0200, // 006D CALL R7 1 - 0x001E3007, // 006E ADD R7 K24 R7 - 0x001C0F19, // 006F ADD R7 R7 K25 - 0x60200008, // 0070 GETGBL R8 G8 - 0x5C240800, // 0071 MOVE R9 R4 - 0x7C200200, // 0072 CALL R8 1 - 0x001C0E08, // 0073 ADD R7 R7 R8 - 0x5820001A, // 0074 LDCONST R8 K26 - 0x7C140600, // 0075 CALL R5 3 - 0x70020000, // 0076 JMP #0078 - 0xB0080000, // 0077 RAISE 2 R0 R0 - 0x80000000, // 0078 RET 0 + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -2293,35 +1634,81 @@ be_local_closure(Matter_Device_mdns_announce_op_discovery, /* name */ /******************************************************************** -** Solidified function: _init_basic_commissioning +** Solidified function: sort_distinct ********************************************************************/ -be_local_closure(Matter_Device__init_basic_commissioning, /* name */ +be_local_closure(Matter_Device_sort_distinct, /* name */ be_nested_proto( - 3, /* nstack */ + 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 4, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(count_active_fabrics), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_const_int(1), /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(start_root_basic_commissioning), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(remove), }), - be_str_weak(_init_basic_commissioning), + be_str_weak(sort_distinct), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x1C040302, // 0003 EQ R1 R1 K2 - 0x78060001, // 0004 JMPF R1 #0007 - 0x8C040103, // 0005 GETMET R1 R0 K3 - 0x7C040200, // 0006 CALL R1 1 - 0x80000000, // 0007 RET 0 + ( &(const binstruction[53]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080010, // 0001 GETGBL R2 G16 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x040C0701, // 0005 SUB R3 R3 K1 + 0x400E0203, // 0006 CONNECT R3 K1 R3 + 0x7C080200, // 0007 CALL R2 1 + 0xA8020010, // 0008 EXBLK 0 #001A + 0x5C0C0400, // 0009 MOVE R3 R2 + 0x7C0C0000, // 000A CALL R3 0 + 0x94100003, // 000B GETIDX R4 R0 R3 + 0x5C140600, // 000C MOVE R5 R3 + 0x24180B02, // 000D GT R6 R5 K2 + 0x781A0008, // 000E JMPF R6 #0018 + 0x04180B01, // 000F SUB R6 R5 K1 + 0x94180006, // 0010 GETIDX R6 R0 R6 + 0x24180C04, // 0011 GT R6 R6 R4 + 0x781A0004, // 0012 JMPF R6 #0018 + 0x04180B01, // 0013 SUB R6 R5 K1 + 0x94180006, // 0014 GETIDX R6 R0 R6 + 0x98000A06, // 0015 SETIDX R0 R5 R6 + 0x04140B01, // 0016 SUB R5 R5 K1 + 0x7001FFF4, // 0017 JMP #000D + 0x98000A04, // 0018 SETIDX R0 R5 R4 + 0x7001FFEE, // 0019 JMP #0009 + 0x58080003, // 001A LDCONST R2 K3 + 0xAC080200, // 001B CATCH R2 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x58080001, // 001D LDCONST R2 K1 + 0x600C000C, // 001E GETGBL R3 G12 + 0x5C100000, // 001F MOVE R4 R0 + 0x7C0C0200, // 0020 CALL R3 1 + 0x180C0701, // 0021 LE R3 R3 K1 + 0x780E0000, // 0022 JMPF R3 #0024 + 0x80040000, // 0023 RET 1 R0 + 0x940C0102, // 0024 GETIDX R3 R0 K2 + 0x6010000C, // 0025 GETGBL R4 G12 + 0x5C140000, // 0026 MOVE R5 R0 + 0x7C100200, // 0027 CALL R4 1 + 0x14100404, // 0028 LT R4 R2 R4 + 0x78120009, // 0029 JMPF R4 #0034 + 0x94100002, // 002A GETIDX R4 R0 R2 + 0x1C100803, // 002B EQ R4 R4 R3 + 0x78120003, // 002C JMPF R4 #0031 + 0x8C100104, // 002D GETMET R4 R0 K4 + 0x5C180400, // 002E MOVE R6 R2 + 0x7C100400, // 002F CALL R4 2 + 0x70020001, // 0030 JMP #0033 + 0x940C0002, // 0031 GETIDX R3 R0 R2 + 0x00080501, // 0032 ADD R2 R2 K1 + 0x7001FFF0, // 0033 JMP #0025 + 0x80040000, // 0034 RET 1 R0 }) ) ); @@ -2329,12 +1716,12 @@ be_local_closure(Matter_Device__init_basic_commissioning, /* name */ /******************************************************************** -** Solidified function: get_plugin_remote_info +** Solidified function: is_root_commissioning_open ********************************************************************/ -be_local_closure(Matter_Device_get_plugin_remote_info, /* name */ +be_local_closure(Matter_Device_is_root_commissioning_open, /* name */ be_nested_proto( - 6, /* nstack */ - 2, /* argc */ + 3, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -2342,19 +1729,23 @@ be_local_closure(Matter_Device_get_plugin_remote_info, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config_remotes), - /* K1 */ be_nested_str_weak(find), + /* K0 */ be_nested_str_weak(commissioning_open), + /* K1 */ be_nested_str_weak(commissioning_admin_fabric), }), - be_str_weak(get_plugin_remote_info), + be_str_weak(is_root_commissioning_open), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x60140013, // 0003 GETGBL R5 G19 - 0x7C140000, // 0004 CALL R5 0 - 0x7C080600, // 0005 CALL R2 3 - 0x80040400, // 0006 RET 1 R2 + ( &(const binstruction[11]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060003, // 0003 JMPF R1 #0008 + 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x4C080000, // 0005 LDNIL R2 + 0x1C040202, // 0006 EQ R1 R1 R2 + 0x74060000, // 0007 JMPT R1 #0009 + 0x50040001, // 0008 LDBOOL R1 0 1 + 0x50040200, // 0009 LDBOOL R1 1 0 + 0x80040200, // 000A RET 1 R1 }) ) ); @@ -2362,245 +1753,59 @@ be_local_closure(Matter_Device_get_plugin_remote_info, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: start_operational_discovery_deferred ********************************************************************/ -be_local_closure(Matter_Device_init, /* name */ +be_local_closure(Matter_Device_start_operational_discovery_deferred, /* name */ be_nested_proto( - 7, /* nstack */ - 1, /* argc */ + 6, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(start), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - /* K4 */ be_nested_str_weak(matter_start), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0004, // 0006 LDCONST R3 K4 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), + ( &(const struct bproto*[ 1]) { be_nested_proto( - 4, /* nstack */ + 3, /* nstack */ 0, /* argc */ 0, /* varg */ 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ be_local_const_upval(1, 0), + be_local_const_upval(1, 1), }), 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(start), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - /* K4 */ be_nested_str_weak(matter_start), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_operational_discovery), }), - be_str_weak(_anonymous_), + be_str_weak(_X3Clambda_X3E), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ + ( &(const binstruction[ 5]) { /* code */ 0x68000000, // 0000 GETUPV R0 U0 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0004, // 0006 LDCONST R3 K4 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 }) ), }), 1, /* has constants */ - ( &(const bvalue[46]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(get_option), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(MATTER_OPTION), - /* K5 */ be_nested_str_weak(UI), - /* K6 */ be_nested_str_weak(profiler), - /* K7 */ be_nested_str_weak(Profiler), - /* K8 */ be_nested_str_weak(started), - /* K9 */ be_nested_str_weak(tick), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(plugins), - /* K12 */ be_nested_str_weak(plugins_persist), - /* K13 */ be_nested_str_weak(plugins_classes), - /* K14 */ be_nested_str_weak(plugins_config_remotes), - /* K15 */ be_nested_str_weak(register_native_classes), - /* K16 */ be_nested_str_weak(vendorid), - /* K17 */ be_nested_str_weak(VENDOR_ID), - /* K18 */ be_nested_str_weak(productid), - /* K19 */ be_nested_str_weak(PRODUCT_ID), - /* K20 */ be_nested_str_weak(root_iterations), - /* K21 */ be_nested_str_weak(PBKDF_ITERATIONS), - /* K22 */ be_nested_str_weak(next_ep), - /* K23 */ be_const_int(1), - /* K24 */ be_nested_str_weak(root_salt), - /* K25 */ be_nested_str_weak(random), - /* K26 */ be_nested_str_weak(ipv4only), - /* K27 */ be_nested_str_weak(disable_bridge_mode), - /* K28 */ be_nested_str_weak(load_param), - /* K29 */ be_nested_str_weak(sessions), - /* K30 */ be_nested_str_weak(Session_Store), - /* K31 */ be_nested_str_weak(load_fabrics), - /* K32 */ be_nested_str_weak(message_handler), - /* K33 */ be_nested_str_weak(MessageHandler), - /* K34 */ be_nested_str_weak(ui), - /* K35 */ be_nested_str_weak(wifi), - /* K36 */ be_nested_str_weak(up), - /* K37 */ be_nested_str_weak(eth), - /* K38 */ be_nested_str_weak(start), - /* K39 */ be_nested_str_weak(add_rule), - /* K40 */ be_nested_str_weak(Wifi_X23Connected), - /* K41 */ be_nested_str_weak(matter_start), - /* K42 */ be_nested_str_weak(Eth_X23Connected), - /* K43 */ be_nested_str_weak(_init_basic_commissioning), - /* K44 */ be_nested_str_weak(add_driver), - /* K45 */ be_nested_str_weak(register_commands), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(set_timer), + /* K2 */ be_const_int(0), }), - be_str_weak(init), + be_str_weak(start_operational_discovery_deferred), &be_const_str_solidified, - ( &(const binstruction[111]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0xB8120600, // 0003 GETNGBL R4 K3 - 0x88100904, // 0004 GETMBR R4 R4 K4 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0004, // 0006 JMPT R2 #000C - 0xB80A0600, // 0007 GETNGBL R2 K3 - 0x8C080505, // 0008 GETMET R2 R2 K5 - 0x5C100000, // 0009 MOVE R4 R0 - 0x7C080400, // 000A CALL R2 2 - 0x80000400, // 000B RET 0 - 0xB80A0600, // 000C GETNGBL R2 K3 - 0x8C080507, // 000D GETMET R2 R2 K7 - 0x7C080200, // 000E CALL R2 1 - 0x90020C02, // 000F SETMBR R0 K6 R2 - 0x50080000, // 0010 LDBOOL R2 0 0 - 0x90021002, // 0011 SETMBR R0 K8 R2 - 0x9002130A, // 0012 SETMBR R0 K9 K10 - 0x60080012, // 0013 GETGBL R2 G18 - 0x7C080000, // 0014 CALL R2 0 - 0x90021602, // 0015 SETMBR R0 K11 R2 - 0x50080000, // 0016 LDBOOL R2 0 0 - 0x90021802, // 0017 SETMBR R0 K12 R2 - 0x60080013, // 0018 GETGBL R2 G19 - 0x7C080000, // 0019 CALL R2 0 - 0x90021A02, // 001A SETMBR R0 K13 R2 - 0x60080013, // 001B GETGBL R2 G19 - 0x7C080000, // 001C CALL R2 0 - 0x90021C02, // 001D SETMBR R0 K14 R2 - 0x8C08010F, // 001E GETMET R2 R0 K15 - 0x7C080200, // 001F CALL R2 1 - 0x88080111, // 0020 GETMBR R2 R0 K17 - 0x90022002, // 0021 SETMBR R0 K16 R2 - 0x88080113, // 0022 GETMBR R2 R0 K19 - 0x90022402, // 0023 SETMBR R0 K18 R2 - 0x88080115, // 0024 GETMBR R2 R0 K21 - 0x90022802, // 0025 SETMBR R0 K20 R2 - 0x90022D17, // 0026 SETMBR R0 K22 K23 - 0x8C080319, // 0027 GETMET R2 R1 K25 - 0x5412000F, // 0028 LDINT R4 16 - 0x7C080400, // 0029 CALL R2 2 - 0x90023002, // 002A SETMBR R0 K24 R2 - 0x50080000, // 002B LDBOOL R2 0 0 - 0x90023402, // 002C SETMBR R0 K26 R2 - 0x50080000, // 002D LDBOOL R2 0 0 - 0x90023602, // 002E SETMBR R0 K27 R2 - 0x8C08011C, // 002F GETMET R2 R0 K28 - 0x7C080200, // 0030 CALL R2 1 - 0xB80A0600, // 0031 GETNGBL R2 K3 - 0x8C08051E, // 0032 GETMET R2 R2 K30 - 0x5C100000, // 0033 MOVE R4 R0 - 0x7C080400, // 0034 CALL R2 2 - 0x90023A02, // 0035 SETMBR R0 K29 R2 - 0x8808011D, // 0036 GETMBR R2 R0 K29 - 0x8C08051F, // 0037 GETMET R2 R2 K31 - 0x7C080200, // 0038 CALL R2 1 - 0xB80A0600, // 0039 GETNGBL R2 K3 - 0x8C080521, // 003A GETMET R2 R2 K33 - 0x5C100000, // 003B MOVE R4 R0 - 0x7C080400, // 003C CALL R2 2 - 0x90024002, // 003D SETMBR R0 K32 R2 - 0xB80A0600, // 003E GETNGBL R2 K3 - 0x8C080505, // 003F GETMET R2 R2 K5 - 0x5C100000, // 0040 MOVE R4 R0 - 0x7C080400, // 0041 CALL R2 2 - 0x90024402, // 0042 SETMBR R0 K34 R2 - 0xB80A0200, // 0043 GETNGBL R2 K1 - 0x8C080523, // 0044 GETMET R2 R2 K35 - 0x7C080200, // 0045 CALL R2 1 - 0x94080524, // 0046 GETIDX R2 R2 K36 - 0x740A0004, // 0047 JMPT R2 #004D - 0xB80A0200, // 0048 GETNGBL R2 K1 - 0x8C080525, // 0049 GETMET R2 R2 K37 - 0x7C080200, // 004A CALL R2 1 - 0x94080524, // 004B GETIDX R2 R2 K36 - 0x780A0001, // 004C JMPF R2 #004F - 0x8C080126, // 004D GETMET R2 R0 K38 - 0x7C080200, // 004E CALL R2 1 - 0xB80A0200, // 004F GETNGBL R2 K1 - 0x8C080523, // 0050 GETMET R2 R2 K35 - 0x7C080200, // 0051 CALL R2 1 - 0x94080524, // 0052 GETIDX R2 R2 K36 - 0x740A0005, // 0053 JMPT R2 #005A - 0xB80A0200, // 0054 GETNGBL R2 K1 - 0x8C080527, // 0055 GETMET R2 R2 K39 - 0x58100028, // 0056 LDCONST R4 K40 - 0x84140000, // 0057 CLOSURE R5 P0 - 0x58180029, // 0058 LDCONST R6 K41 - 0x7C080800, // 0059 CALL R2 4 - 0xB80A0200, // 005A GETNGBL R2 K1 - 0x8C080525, // 005B GETMET R2 R2 K37 - 0x7C080200, // 005C CALL R2 1 - 0x94080524, // 005D GETIDX R2 R2 K36 - 0x740A0005, // 005E JMPT R2 #0065 - 0xB80A0200, // 005F GETNGBL R2 K1 - 0x8C080527, // 0060 GETMET R2 R2 K39 - 0x5810002A, // 0061 LDCONST R4 K42 - 0x84140001, // 0062 CLOSURE R5 P1 - 0x58180029, // 0063 LDCONST R6 K41 - 0x7C080800, // 0064 CALL R2 4 - 0x8C08012B, // 0065 GETMET R2 R0 K43 - 0x7C080200, // 0066 CALL R2 1 - 0xB80A0200, // 0067 GETNGBL R2 K1 - 0x8C08052C, // 0068 GETMET R2 R2 K44 - 0x5C100000, // 0069 MOVE R4 R0 - 0x7C080400, // 006A CALL R2 2 - 0x8C08012D, // 006B GETMET R2 R0 K45 - 0x7C080200, // 006C CALL R2 1 - 0xA0000000, // 006D CLOSE R0 - 0x80000000, // 006E RET 0 + ( &(const binstruction[ 7]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x58100002, // 0002 LDCONST R4 K2 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 }) ) ); @@ -2608,44 +1813,79 @@ be_local_closure(Matter_Device_init, /* name */ /******************************************************************** -** Solidified function: find_plugin_by_endpoint +** Solidified function: k2l ********************************************************************/ -be_local_closure(Matter_Device_find_plugin_by_endpoint, /* name */ +be_local_closure(Matter_Device_k2l, /* name */ be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ + 8, /* nstack */ + 1, /* argc */ + 4, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(get_endpoint), - /* K3 */ be_const_int(1), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_const_int(1), + /* K5 */ be_const_int(0), }), - be_str_weak(find_plugin_by_endpoint), + be_str_weak(k2l), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0008, // 0005 JMPF R3 #000F - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x8C100702, // 0008 GETMET R4 R3 K2 + ( &(const binstruction[50]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0003, // 0004 EQ R3 R0 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80040400, // 0006 RET 1 R2 + 0x600C0010, // 0007 GETGBL R3 G16 + 0x8C100101, // 0008 GETMET R4 R0 K1 0x7C100200, // 0009 CALL R4 1 - 0x1C100801, // 000A EQ R4 R4 R1 - 0x78120000, // 000B JMPF R4 #000D - 0x80040600, // 000C RET 1 R3 - 0x00080503, // 000D ADD R2 R2 K3 - 0x7001FFF1, // 000E JMP #0001 - 0x4C0C0000, // 000F LDNIL R3 - 0x80040600, // 0010 RET 1 R3 + 0x7C0C0200, // 000A CALL R3 1 + 0xA8020005, // 000B EXBLK 0 #0012 + 0x5C100600, // 000C MOVE R4 R3 + 0x7C100000, // 000D CALL R4 0 + 0x8C140502, // 000E GETMET R5 R2 K2 + 0x5C1C0800, // 000F MOVE R7 R4 + 0x7C140400, // 0010 CALL R5 2 + 0x7001FFF9, // 0011 JMP #000C + 0x580C0003, // 0012 LDCONST R3 K3 + 0xAC0C0200, // 0013 CATCH R3 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x600C0010, // 0015 GETGBL R3 G16 + 0x6010000C, // 0016 GETGBL R4 G12 + 0x5C140400, // 0017 MOVE R5 R2 + 0x7C100200, // 0018 CALL R4 1 + 0x04100904, // 0019 SUB R4 R4 K4 + 0x40120804, // 001A CONNECT R4 K4 R4 + 0x7C0C0200, // 001B CALL R3 1 + 0xA8020010, // 001C EXBLK 0 #002E + 0x5C100600, // 001D MOVE R4 R3 + 0x7C100000, // 001E CALL R4 0 + 0x94140404, // 001F GETIDX R5 R2 R4 + 0x5C180800, // 0020 MOVE R6 R4 + 0x241C0D05, // 0021 GT R7 R6 K5 + 0x781E0008, // 0022 JMPF R7 #002C + 0x041C0D04, // 0023 SUB R7 R6 K4 + 0x941C0407, // 0024 GETIDX R7 R2 R7 + 0x241C0E05, // 0025 GT R7 R7 R5 + 0x781E0004, // 0026 JMPF R7 #002C + 0x041C0D04, // 0027 SUB R7 R6 K4 + 0x941C0407, // 0028 GETIDX R7 R2 R7 + 0x98080C07, // 0029 SETIDX R2 R6 R7 + 0x04180D04, // 002A SUB R6 R6 K4 + 0x7001FFF4, // 002B JMP #0021 + 0x98080C05, // 002C SETIDX R2 R6 R5 + 0x7001FFEE, // 002D JMP #001D + 0x580C0003, // 002E LDCONST R3 K3 + 0xAC0C0200, // 002F CATCH R3 1 0 + 0xB0080000, // 0030 RAISE 2 R0 R0 + 0x80040400, // 0031 RET 1 R2 }) ) ); @@ -2653,11 +1893,11 @@ be_local_closure(Matter_Device_find_plugin_by_endpoint, /* name */ /******************************************************************** -** Solidified function: adjust_next_ep +** Solidified function: compute_manual_pairing_code ********************************************************************/ -be_local_closure(Matter_Device_adjust_next_ep, /* name */ +be_local_closure(Matter_Device_compute_manual_pairing_code, /* name */ be_nested_proto( - 5, /* nstack */ + 9, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2665,37 +1905,47 @@ be_local_closure(Matter_Device_adjust_next_ep, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(next_ep), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(stop_iteration), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(root_discriminator), + /* K1 */ be_nested_str_weak(root_passcode), + /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(Verhoeff), + /* K5 */ be_nested_str_weak(checksum), }), - be_str_weak(adjust_next_ep), + be_str_weak(compute_manual_pairing_code), &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000A, // 0005 EXBLK 0 #0011 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x600C0009, // 0008 GETGBL R3 G9 - 0x5C100400, // 0009 MOVE R4 R2 - 0x7C0C0200, // 000A CALL R3 1 - 0x88100102, // 000B GETMBR R4 R0 K2 - 0x28100604, // 000C GE R4 R3 R4 - 0x78120001, // 000D JMPF R4 #0010 - 0x00100703, // 000E ADD R4 R3 K3 - 0x90020404, // 000F SETMBR R0 K2 R4 - 0x7001FFF4, // 0010 JMP #0006 - 0x58040004, // 0011 LDCONST R1 K4 - 0xAC040200, // 0012 CATCH R1 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x80000000, // 0014 RET 0 + ( &(const binstruction[30]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x540A0FFE, // 0001 LDINT R2 4095 + 0x2C040202, // 0002 AND R1 R1 R2 + 0x540A0009, // 0003 LDINT R2 10 + 0x3C040202, // 0004 SHR R1 R1 R2 + 0x88080100, // 0005 GETMBR R2 R0 K0 + 0x540E02FF, // 0006 LDINT R3 768 + 0x2C080403, // 0007 AND R2 R2 R3 + 0x540E0005, // 0008 LDINT R3 6 + 0x38080403, // 0009 SHL R2 R2 R3 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x54123FFE, // 000B LDINT R4 16383 + 0x2C0C0604, // 000C AND R3 R3 R4 + 0x30080403, // 000D OR R2 R2 R3 + 0x880C0101, // 000E GETMBR R3 R0 K1 + 0x5412000D, // 000F LDINT R4 14 + 0x3C0C0604, // 0010 SHR R3 R3 R4 + 0x60100018, // 0011 GETGBL R4 G24 + 0x58140002, // 0012 LDCONST R5 K2 + 0x5C180200, // 0013 MOVE R6 R1 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x5C200600, // 0015 MOVE R8 R3 + 0x7C100800, // 0016 CALL R4 4 + 0xB8160600, // 0017 GETNGBL R5 K3 + 0x88140B04, // 0018 GETMBR R5 R5 K4 + 0x8C140B05, // 0019 GETMET R5 R5 K5 + 0x5C1C0800, // 001A MOVE R7 R4 + 0x7C140400, // 001B CALL R5 2 + 0x00100805, // 001C ADD R4 R4 R5 + 0x80040800, // 001D RET 1 R4 }) ) ); @@ -2703,11 +1953,11 @@ be_local_closure(Matter_Device_adjust_next_ep, /* name */ /******************************************************************** -** Solidified function: every_50ms +** Solidified function: event_fabrics_saved ********************************************************************/ -be_local_closure(Matter_Device_every_50ms, /* name */ +be_local_closure(Matter_Device_event_fabrics_saved, /* name */ be_nested_proto( - 2, /* nstack */ + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2715,17 +1965,28 @@ be_local_closure(Matter_Device_every_50ms, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_const_int(1), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(count_active_fabrics), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(plugins_persist), + /* K4 */ be_nested_str_weak(save_param), }), - be_str_weak(every_50ms), + be_str_weak(event_fabrics_saved), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ + ( &(const binstruction[12]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x00040301, // 0001 ADD R1 R1 K1 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x80000000, // 0003 RET 0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x24040302, // 0003 GT R1 R1 K2 + 0x78060005, // 0004 JMPF R1 #000B + 0x88040103, // 0005 GETMBR R1 R0 K3 + 0x74060003, // 0006 JMPT R1 #000B + 0x50040200, // 0007 LDBOOL R1 1 0 + 0x90020601, // 0008 SETMBR R0 K3 R1 + 0x8C040104, // 0009 GETMET R1 R0 K4 + 0x7C040200, // 000A CALL R1 1 + 0x80000000, // 000B RET 0 }) ) ); @@ -2733,81 +1994,59 @@ be_local_closure(Matter_Device_every_50ms, /* name */ /******************************************************************** -** Solidified function: k2l_num +** Solidified function: start_commissioning_complete_deferred ********************************************************************/ -be_local_closure(Matter_Device_k2l_num, /* name */ +be_local_closure(Matter_Device_start_commissioning_complete_deferred, /* name */ be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 4, /* varg */ + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_commissioning_complete), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), + }), 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(set_timer), + /* K2 */ be_const_int(0), }), - be_str_weak(k2l_num), + be_str_weak(start_commissioning_complete_deferred), &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0003, // 0004 EQ R3 R0 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x80040400, // 0006 RET 1 R2 - 0x600C0010, // 0007 GETGBL R3 G16 - 0x8C100101, // 0008 GETMET R4 R0 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x7C0C0200, // 000A CALL R3 1 - 0xA8020007, // 000B EXBLK 0 #0014 - 0x5C100600, // 000C MOVE R4 R3 - 0x7C100000, // 000D CALL R4 0 - 0x8C140502, // 000E GETMET R5 R2 K2 - 0x601C0009, // 000F GETGBL R7 G9 - 0x5C200800, // 0010 MOVE R8 R4 - 0x7C1C0200, // 0011 CALL R7 1 - 0x7C140400, // 0012 CALL R5 2 - 0x7001FFF7, // 0013 JMP #000C - 0x580C0003, // 0014 LDCONST R3 K3 - 0xAC0C0200, // 0015 CATCH R3 1 0 - 0xB0080000, // 0016 RAISE 2 R0 R0 - 0x600C0010, // 0017 GETGBL R3 G16 - 0x6010000C, // 0018 GETGBL R4 G12 - 0x5C140400, // 0019 MOVE R5 R2 - 0x7C100200, // 001A CALL R4 1 - 0x04100904, // 001B SUB R4 R4 K4 - 0x40120804, // 001C CONNECT R4 K4 R4 - 0x7C0C0200, // 001D CALL R3 1 - 0xA8020010, // 001E EXBLK 0 #0030 - 0x5C100600, // 001F MOVE R4 R3 - 0x7C100000, // 0020 CALL R4 0 - 0x94140404, // 0021 GETIDX R5 R2 R4 - 0x5C180800, // 0022 MOVE R6 R4 - 0x241C0D05, // 0023 GT R7 R6 K5 - 0x781E0008, // 0024 JMPF R7 #002E - 0x041C0D04, // 0025 SUB R7 R6 K4 - 0x941C0407, // 0026 GETIDX R7 R2 R7 - 0x241C0E05, // 0027 GT R7 R7 R5 - 0x781E0004, // 0028 JMPF R7 #002E - 0x041C0D04, // 0029 SUB R7 R6 K4 - 0x941C0407, // 002A GETIDX R7 R2 R7 - 0x98080C07, // 002B SETIDX R2 R6 R7 - 0x04180D04, // 002C SUB R6 R6 K4 - 0x7001FFF4, // 002D JMP #0023 - 0x98080C05, // 002E SETIDX R2 R6 R5 - 0x7001FFEE, // 002F JMP #001F - 0x580C0003, // 0030 LDCONST R3 K3 - 0xAC0C0200, // 0031 CATCH R3 1 0 - 0xB0080000, // 0032 RAISE 2 R0 R0 - 0x80040400, // 0033 RET 1 R2 + ( &(const binstruction[ 7]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x58100002, // 0002 LDCONST R4 K2 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 }) ) ); @@ -2815,11 +2054,11 @@ be_local_closure(Matter_Device_k2l_num, /* name */ /******************************************************************** -** Solidified function: bridge_remove_endpoint +** Solidified function: mdns_announce_op_discovery ********************************************************************/ -be_local_closure(Matter_Device_bridge_remove_endpoint, /* name */ +be_local_closure(Matter_Device_mdns_announce_op_discovery, /* name */ be_nested_proto( - 11, /* nstack */ + 14, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2827,253 +2066,159 @@ be_local_closure(Matter_Device_bridge_remove_endpoint, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(plugins_config), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(log), - /* K5 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), - /* K6 */ be_const_int(3), - /* K7 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(remove), - /* K10 */ be_nested_str_weak(plugins_persist), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(plugins), - /* K13 */ be_nested_str_weak(get_endpoint), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(clean_remotes), - /* K16 */ be_nested_str_weak(save_param), - /* K17 */ be_nested_str_weak(signal_endpoints_changed), + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(get_device_id), + /* K2 */ be_nested_str_weak(copy), + /* K3 */ be_nested_str_weak(reverse), + /* K4 */ be_nested_str_weak(get_fabric_compressed), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_nested_str_weak(_X2D), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(eth), + /* K12 */ be_nested_str_weak(find), + /* K13 */ be_nested_str_weak(up), + /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K15 */ be_nested_str_weak(hostname_eth), + /* K16 */ be_nested_str_weak(add_service), + /* K17 */ be_nested_str_weak(_matter), + /* K18 */ be_nested_str_weak(_tcp), + /* K19 */ be_nested_str_weak(_I), + /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), + /* K21 */ be_nested_str_weak(add_subtype), + /* K22 */ be_nested_str_weak(wifi), + /* K23 */ be_nested_str_weak(hostname_wifi), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K25 */ be_nested_str_weak(_X7C), + /* K26 */ be_const_int(2), }), - be_str_weak(bridge_remove_endpoint), + be_str_weak(mdns_announce_op_discovery), &be_const_str_solidified, - ( &(const binstruction[58]) { /* code */ + ( &(const binstruction[121]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 - 0x600C0008, // 0001 GETGBL R3 G8 - 0x5C100200, // 0002 MOVE R4 R1 + 0xA8020064, // 0001 EXBLK 0 #0067 + 0x8C0C0301, // 0002 GETMET R3 R1 K1 0x7C0C0200, // 0003 CALL R3 1 - 0x4C100000, // 0004 LDNIL R4 - 0x4C140000, // 0005 LDNIL R5 - 0x88180101, // 0006 GETMBR R6 R0 K1 - 0x8C180D02, // 0007 GETMET R6 R6 K2 - 0x5C200600, // 0008 MOVE R8 R3 - 0x7C180400, // 0009 CALL R6 2 - 0x741A0005, // 000A JMPT R6 #0011 - 0xB81A0600, // 000B GETNGBL R6 K3 - 0x8C180D04, // 000C GETMET R6 R6 K4 - 0x00220A03, // 000D ADD R8 K5 R3 - 0x58240006, // 000E LDCONST R9 K6 - 0x7C180600, // 000F CALL R6 3 - 0x80000C00, // 0010 RET 0 - 0xB81A0600, // 0011 GETNGBL R6 K3 - 0x8C180D04, // 0012 GETMET R6 R6 K4 - 0x60200018, // 0013 GETGBL R8 G24 - 0x58240007, // 0014 LDCONST R9 K7 - 0x5C280200, // 0015 MOVE R10 R1 - 0x7C200400, // 0016 CALL R8 2 - 0x58240008, // 0017 LDCONST R9 K8 - 0x7C180600, // 0018 CALL R6 3 - 0x88180101, // 0019 GETMBR R6 R0 K1 - 0x8C180D09, // 001A GETMET R6 R6 K9 - 0x5C200600, // 001B MOVE R8 R3 - 0x7C180400, // 001C CALL R6 2 - 0x50180200, // 001D LDBOOL R6 1 0 - 0x90021406, // 001E SETMBR R0 K10 R6 - 0x5818000B, // 001F LDCONST R6 K11 - 0x601C000C, // 0020 GETGBL R7 G12 - 0x8820010C, // 0021 GETMBR R8 R0 K12 - 0x7C1C0200, // 0022 CALL R7 1 - 0x141C0C07, // 0023 LT R7 R6 R7 - 0x781E000D, // 0024 JMPF R7 #0033 - 0x881C010C, // 0025 GETMBR R7 R0 K12 - 0x941C0E06, // 0026 GETIDX R7 R7 R6 - 0x8C1C0F0D, // 0027 GETMET R7 R7 K13 - 0x7C1C0200, // 0028 CALL R7 1 - 0x1C1C0207, // 0029 EQ R7 R1 R7 - 0x781E0005, // 002A JMPF R7 #0031 - 0x881C010C, // 002B GETMBR R7 R0 K12 - 0x8C1C0F09, // 002C GETMET R7 R7 K9 - 0x5C240C00, // 002D MOVE R9 R6 - 0x7C1C0400, // 002E CALL R7 2 - 0x70020002, // 002F JMP #0033 - 0x70020000, // 0030 JMP #0032 - 0x00180D0E, // 0031 ADD R6 R6 K14 - 0x7001FFEC, // 0032 JMP #0020 - 0x8C1C010F, // 0033 GETMET R7 R0 K15 - 0x7C1C0200, // 0034 CALL R7 1 - 0x8C1C0110, // 0035 GETMET R7 R0 K16 - 0x7C1C0200, // 0036 CALL R7 1 - 0x8C1C0111, // 0037 GETMET R7 R0 K17 - 0x7C1C0200, // 0038 CALL R7 1 - 0x80000000, // 0039 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -be_local_closure(Matter_Device_stop, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(remove_driver), - /* K2 */ be_nested_str_weak(udp_server), - /* K3 */ be_nested_str_weak(stop), - }), - be_str_weak(stop), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x88040102, // 0004 GETMBR R1 R0 K2 - 0x78060002, // 0005 JMPF R1 #0009 - 0x88040102, // 0006 GETMBR R1 R0 K2 - 0x8C040303, // 0007 GETMET R1 R1 K3 - 0x7C040200, // 0008 CALL R1 1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_native_classes -********************************************************************/ -be_local_closure(Matter_Device_register_native_classes, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* 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(introspect), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(members), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(class), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_nested_str_weak(Plugin_), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(register_plugin_class), - /* K10 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(register_native_classes), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xA4120200, // 0001 IMPORT R4 K1 - 0x60140010, // 0002 GETGBL R5 G16 - 0x8C180702, // 0003 GETMET R6 R3 K2 - 0xB8220600, // 0004 GETNGBL R8 K3 - 0x7C180400, // 0005 CALL R6 2 - 0x7C140200, // 0006 CALL R5 1 - 0xA8020014, // 0007 EXBLK 0 #001D - 0x5C180A00, // 0008 MOVE R6 R5 - 0x7C180000, // 0009 CALL R6 0 - 0x8C1C0704, // 000A GETMET R7 R3 K4 - 0xB8260600, // 000B GETNGBL R9 K3 - 0x5C280C00, // 000C MOVE R10 R6 - 0x7C1C0600, // 000D CALL R7 3 - 0x60200004, // 000E GETGBL R8 G4 - 0x5C240E00, // 000F MOVE R9 R7 - 0x7C200200, // 0010 CALL R8 1 - 0x1C201105, // 0011 EQ R8 R8 K5 - 0x78220008, // 0012 JMPF R8 #001C - 0x8C200906, // 0013 GETMET R8 R4 K6 - 0x5C280C00, // 0014 MOVE R10 R6 - 0x582C0007, // 0015 LDCONST R11 K7 - 0x7C200600, // 0016 CALL R8 3 - 0x1C201108, // 0017 EQ R8 R8 K8 - 0x78220002, // 0018 JMPF R8 #001C - 0x8C200109, // 0019 GETMET R8 R0 K9 - 0x5C280E00, // 001A MOVE R10 R7 - 0x7C200400, // 001B CALL R8 2 - 0x7001FFEA, // 001C JMP #0008 - 0x5814000A, // 001D LDCONST R5 K10 - 0xAC140200, // 001E CATCH R5 1 0 - 0xB0080000, // 001F RAISE 2 R0 R0 - 0x80000000, // 0020 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_commissioning_complete_deferred -********************************************************************/ -be_local_closure(Matter_Device_start_commissioning_complete_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_commissioning_complete), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), - /* K2 */ be_const_int(0), - }), - be_str_weak(start_commissioning_complete_deferred), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C100304, // 0008 GETMET R4 R1 K4 + 0x7C100200, // 0009 CALL R4 1 + 0x8C140905, // 000A GETMET R5 R4 K5 + 0x7C140200, // 000B CALL R5 1 + 0x00140B06, // 000C ADD R5 R5 K6 + 0x8C180705, // 000D GETMET R6 R3 K5 + 0x7C180200, // 000E CALL R6 1 + 0x00140A06, // 000F ADD R5 R5 R6 + 0xB81A0E00, // 0010 GETNGBL R6 K7 + 0x8C180D08, // 0011 GETMET R6 R6 K8 + 0x00221205, // 0012 ADD R8 K9 R5 + 0x5824000A, // 0013 LDCONST R9 K10 + 0x7C180600, // 0014 CALL R6 3 + 0xB81A0E00, // 0015 GETNGBL R6 K7 + 0x8C180D0B, // 0016 GETMET R6 R6 K11 + 0x7C180200, // 0017 CALL R6 1 + 0x8C180D0C, // 0018 GETMET R6 R6 K12 + 0x5820000D, // 0019 LDCONST R8 K13 + 0x7C180400, // 001A CALL R6 2 + 0x781A0020, // 001B JMPF R6 #003D + 0xB81A0E00, // 001C GETNGBL R6 K7 + 0x8C180D08, // 001D GETMET R6 R6 K8 + 0x60200018, // 001E GETGBL R8 G24 + 0x5824000E, // 001F LDCONST R9 K14 + 0x5828000B, // 0020 LDCONST R10 K11 + 0x5C2C0A00, // 0021 MOVE R11 R5 + 0x8830010F, // 0022 GETMBR R12 R0 K15 + 0x7C200800, // 0023 CALL R8 4 + 0x5824000A, // 0024 LDCONST R9 K10 + 0x7C180600, // 0025 CALL R6 3 + 0x8C180510, // 0026 GETMET R6 R2 K16 + 0x58200011, // 0027 LDCONST R8 K17 + 0x58240012, // 0028 LDCONST R9 K18 + 0x542A15A3, // 0029 LDINT R10 5540 + 0x4C2C0000, // 002A LDNIL R11 + 0x5C300A00, // 002B MOVE R12 R5 + 0x8834010F, // 002C GETMBR R13 R0 K15 + 0x7C180E00, // 002D CALL R6 7 + 0x8C180905, // 002E GETMET R6 R4 K5 + 0x7C180200, // 002F CALL R6 1 + 0x001A2606, // 0030 ADD R6 K19 R6 + 0xB81E0E00, // 0031 GETNGBL R7 K7 + 0x8C1C0F08, // 0032 GETMET R7 R7 K8 + 0x00262806, // 0033 ADD R9 K20 R6 + 0x5828000A, // 0034 LDCONST R10 K10 + 0x7C1C0600, // 0035 CALL R7 3 + 0x8C1C0515, // 0036 GETMET R7 R2 K21 + 0x58240011, // 0037 LDCONST R9 K17 + 0x58280012, // 0038 LDCONST R10 K18 + 0x5C2C0A00, // 0039 MOVE R11 R5 + 0x8830010F, // 003A GETMBR R12 R0 K15 + 0x5C340C00, // 003B MOVE R13 R6 + 0x7C1C0C00, // 003C CALL R7 6 + 0xB81A0E00, // 003D GETNGBL R6 K7 + 0x8C180D16, // 003E GETMET R6 R6 K22 + 0x7C180200, // 003F CALL R6 1 + 0x8C180D0C, // 0040 GETMET R6 R6 K12 + 0x5820000D, // 0041 LDCONST R8 K13 + 0x7C180400, // 0042 CALL R6 2 + 0x781A0020, // 0043 JMPF R6 #0065 + 0xB81A0E00, // 0044 GETNGBL R6 K7 + 0x8C180D08, // 0045 GETMET R6 R6 K8 + 0x60200018, // 0046 GETGBL R8 G24 + 0x5824000E, // 0047 LDCONST R9 K14 + 0x58280016, // 0048 LDCONST R10 K22 + 0x5C2C0A00, // 0049 MOVE R11 R5 + 0x88300117, // 004A GETMBR R12 R0 K23 + 0x7C200800, // 004B CALL R8 4 + 0x5824000A, // 004C LDCONST R9 K10 + 0x7C180600, // 004D CALL R6 3 + 0x8C180510, // 004E GETMET R6 R2 K16 + 0x58200011, // 004F LDCONST R8 K17 + 0x58240012, // 0050 LDCONST R9 K18 + 0x542A15A3, // 0051 LDINT R10 5540 + 0x4C2C0000, // 0052 LDNIL R11 + 0x5C300A00, // 0053 MOVE R12 R5 + 0x88340117, // 0054 GETMBR R13 R0 K23 + 0x7C180E00, // 0055 CALL R6 7 + 0x8C180905, // 0056 GETMET R6 R4 K5 + 0x7C180200, // 0057 CALL R6 1 + 0x001A2606, // 0058 ADD R6 K19 R6 + 0xB81E0E00, // 0059 GETNGBL R7 K7 + 0x8C1C0F08, // 005A GETMET R7 R7 K8 + 0x00262806, // 005B ADD R9 K20 R6 + 0x5828000A, // 005C LDCONST R10 K10 + 0x7C1C0600, // 005D CALL R7 3 + 0x8C1C0515, // 005E GETMET R7 R2 K21 + 0x58240011, // 005F LDCONST R9 K17 + 0x58280012, // 0060 LDCONST R10 K18 + 0x5C2C0A00, // 0061 MOVE R11 R5 + 0x88300117, // 0062 GETMBR R12 R0 K23 + 0x5C340C00, // 0063 MOVE R13 R6 + 0x7C1C0C00, // 0064 CALL R7 6 + 0xA8040001, // 0065 EXBLK 1 1 + 0x70020010, // 0066 JMP #0078 + 0xAC0C0002, // 0067 CATCH R3 0 2 + 0x7002000D, // 0068 JMP #0077 + 0xB8160E00, // 0069 GETNGBL R5 K7 + 0x8C140B08, // 006A GETMET R5 R5 K8 + 0x601C0008, // 006B GETGBL R7 G8 + 0x5C200600, // 006C MOVE R8 R3 + 0x7C1C0200, // 006D CALL R7 1 + 0x001E3007, // 006E ADD R7 K24 R7 + 0x001C0F19, // 006F ADD R7 R7 K25 + 0x60200008, // 0070 GETGBL R8 G8 + 0x5C240800, // 0071 MOVE R9 R4 + 0x7C200200, // 0072 CALL R8 1 + 0x001C0E08, // 0073 ADD R7 R7 R8 + 0x5820001A, // 0074 LDCONST R8 K26 + 0x7C140600, // 0075 CALL R5 3 + 0x70020000, // 0076 JMP #0078 + 0xB0080000, // 0077 RAISE 2 R0 R0 + 0x80000000, // 0078 RET 0 }) ) ); @@ -3112,53 +2257,44 @@ be_local_closure(Matter_Device_msg_send, /* name */ /******************************************************************** -** Solidified function: conf_to_log +** Solidified function: find_plugin_by_endpoint ********************************************************************/ -be_local_closure(Matter_Device_conf_to_log, /* name */ +be_local_closure(Matter_Device_find_plugin_by_endpoint, /* name */ be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 4, /* varg */ + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(k2l), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(_X20_X25s_X3A_X25s), - /* K5 */ be_nested_str_weak(stop_iteration), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_nested_str_weak(get_endpoint), + /* K3 */ be_const_int(1), }), - be_str_weak(conf_to_log), + be_str_weak(find_plugin_by_endpoint), &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x58080001, // 0001 LDCONST R2 K1 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x8C100302, // 0003 GETMET R4 R1 K2 - 0x5C180000, // 0004 MOVE R6 R0 - 0x7C100400, // 0005 CALL R4 2 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA802000B, // 0007 EXBLK 0 #0014 - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x1C140903, // 000A EQ R5 R4 K3 - 0x78160000, // 000B JMPF R5 #000D - 0x7001FFFA, // 000C JMP #0008 - 0x60140018, // 000D GETGBL R5 G24 - 0x58180004, // 000E LDCONST R6 K4 - 0x5C1C0800, // 000F MOVE R7 R4 - 0x94200004, // 0010 GETIDX R8 R0 R4 - 0x7C140600, // 0011 CALL R5 3 - 0x00080405, // 0012 ADD R2 R2 R5 - 0x7001FFF3, // 0013 JMP #0008 - 0x580C0005, // 0014 LDCONST R3 K5 - 0xAC0C0200, // 0015 CATCH R3 1 0 - 0xB0080000, // 0016 RAISE 2 R0 R0 - 0x80040400, // 0017 RET 1 R2 + ( &(const binstruction[17]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0008, // 0005 JMPF R3 #000F + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x8C100702, // 0008 GETMET R4 R3 K2 + 0x7C100200, // 0009 CALL R4 1 + 0x1C100801, // 000A EQ R4 R4 R1 + 0x78120000, // 000B JMPF R4 #000D + 0x80040600, // 000C RET 1 R3 + 0x00080503, // 000D ADD R2 R2 K3 + 0x7001FFF1, // 000E JMP #0001 + 0x4C0C0000, // 000F LDNIL R3 + 0x80040600, // 0010 RET 1 R3 }) ) ); @@ -3166,236 +2302,7 @@ be_local_closure(Matter_Device_conf_to_log, /* name */ /******************************************************************** -** Solidified function: update_remotes_info -********************************************************************/ -be_local_closure(Matter_Device_update_remotes_info, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(http_remotes), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(get_info), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(stop_iteration), - /* K5 */ be_nested_str_weak(plugins_config_remotes), - }), - be_str_weak(update_remotes_info), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x60040013, // 0000 GETGBL R1 G19 - 0x7C040000, // 0001 CALL R1 0 - 0x88080100, // 0002 GETMBR R2 R0 K0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x20080403, // 0004 NE R2 R2 R3 - 0x780A0018, // 0005 JMPF R2 #001F - 0x60080010, // 0006 GETGBL R2 G16 - 0x880C0100, // 0007 GETMBR R3 R0 K0 - 0x8C0C0701, // 0008 GETMET R3 R3 K1 - 0x7C0C0200, // 0009 CALL R3 1 - 0x7C080200, // 000A CALL R2 1 - 0xA802000F, // 000B EXBLK 0 #001C - 0x5C0C0400, // 000C MOVE R3 R2 - 0x7C0C0000, // 000D CALL R3 0 - 0x88100100, // 000E GETMBR R4 R0 K0 - 0x94100803, // 000F GETIDX R4 R4 R3 - 0x8C100902, // 0010 GETMET R4 R4 K2 - 0x7C100200, // 0011 CALL R4 1 - 0x4C140000, // 0012 LDNIL R5 - 0x20140805, // 0013 NE R5 R4 R5 - 0x78160005, // 0014 JMPF R5 #001B - 0x6014000C, // 0015 GETGBL R5 G12 - 0x5C180800, // 0016 MOVE R6 R4 - 0x7C140200, // 0017 CALL R5 1 - 0x24140B03, // 0018 GT R5 R5 K3 - 0x78160000, // 0019 JMPF R5 #001B - 0x98040604, // 001A SETIDX R1 R3 R4 - 0x7001FFEF, // 001B JMP #000C - 0x58080004, // 001C LDCONST R2 K4 - 0xAC080200, // 001D CATCH R2 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x90020A01, // 001F SETMBR R0 K5 R1 - 0x80040200, // 0020 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop_basic_commissioning -********************************************************************/ -be_local_closure(Matter_Device_stop_basic_commissioning, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(is_root_commissioning_open), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(publish_result), - /* K3 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D), - /* K4 */ be_nested_str_weak(Matter), - /* K5 */ be_nested_str_weak(commissioning_open), - /* K6 */ be_nested_str_weak(mdns_remove_PASE), - /* K7 */ be_nested_str_weak(commissioning_iterations), - /* K8 */ be_nested_str_weak(commissioning_discriminator), - /* K9 */ be_nested_str_weak(commissioning_salt), - /* K10 */ be_nested_str_weak(commissioning_w0), - /* K11 */ be_nested_str_weak(commissioning_L), - /* K12 */ be_nested_str_weak(commissioning_admin_fabric), - }), - be_str_weak(stop_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x78060004, // 0002 JMPF R1 #0008 - 0xB8060200, // 0003 GETNGBL R1 K1 - 0x8C040302, // 0004 GETMET R1 R1 K2 - 0x580C0003, // 0005 LDCONST R3 K3 - 0x58100004, // 0006 LDCONST R4 K4 - 0x7C040600, // 0007 CALL R1 3 - 0x4C040000, // 0008 LDNIL R1 - 0x90020A01, // 0009 SETMBR R0 K5 R1 - 0x8C040106, // 000A GETMET R1 R0 K6 - 0x7C040200, // 000B CALL R1 1 - 0x4C040000, // 000C LDNIL R1 - 0x90020E01, // 000D SETMBR R0 K7 R1 - 0x4C040000, // 000E LDNIL R1 - 0x90021001, // 000F SETMBR R0 K8 R1 - 0x4C040000, // 0010 LDNIL R1 - 0x90021201, // 0011 SETMBR R0 K9 R1 - 0x4C040000, // 0012 LDNIL R1 - 0x90021401, // 0013 SETMBR R0 K10 R1 - 0x4C040000, // 0014 LDNIL R1 - 0x90021601, // 0015 SETMBR R0 K11 R1 - 0x4C040000, // 0016 LDNIL R1 - 0x90021801, // 0017 SETMBR R0 K12 R1 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_plugin_class_displayname -********************************************************************/ -be_local_closure(Matter_Device_get_plugin_class_displayname, /* 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[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(NAME), - /* K3 */ be_nested_str_weak(), - }), - be_str_weak(get_plugin_class_displayname), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C0502, // 0005 GETMBR R3 R2 K2 - 0x70020000, // 0006 JMP #0008 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x80040600, // 0008 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_random_passcode -********************************************************************/ -be_local_closure(Matter_Device_generate_random_passcode, /* 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[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(random), - /* K2 */ be_nested_str_weak(get), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(134217727), - /* K5 */ be_const_int(99999998), - /* K6 */ be_nested_str_weak(PASSCODE_INVALID), - /* K7 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(generate_random_passcode), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x500C0200, // 0002 LDBOOL R3 1 0 - 0x780E001D, // 0003 JMPF R3 #0022 - 0x8C0C0301, // 0004 GETMET R3 R1 K1 - 0x54160003, // 0005 LDINT R5 4 - 0x7C0C0400, // 0006 CALL R3 2 - 0x8C0C0702, // 0007 GETMET R3 R3 K2 - 0x58140003, // 0008 LDCONST R5 K3 - 0x541A0003, // 0009 LDINT R6 4 - 0x7C0C0600, // 000A CALL R3 3 - 0x2C0C0704, // 000B AND R3 R3 K4 - 0x5C080600, // 000C MOVE R2 R3 - 0x240C0505, // 000D GT R3 R2 K5 - 0x780E0000, // 000E JMPF R3 #0010 - 0x7001FFF1, // 000F JMP #0002 - 0x600C0010, // 0010 GETGBL R3 G16 - 0x88100106, // 0011 GETMBR R4 R0 K6 - 0x7C0C0200, // 0012 CALL R3 1 - 0xA8020005, // 0013 EXBLK 0 #001A - 0x5C100600, // 0014 MOVE R4 R3 - 0x7C100000, // 0015 CALL R4 0 - 0x1C140404, // 0016 EQ R5 R2 R4 - 0x78160000, // 0017 JMPF R5 #0019 - 0x4C080000, // 0018 LDNIL R2 - 0x7001FFF9, // 0019 JMP #0014 - 0x580C0007, // 001A LDCONST R3 K7 - 0xAC0C0200, // 001B CATCH R3 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x4C0C0000, // 001D LDNIL R3 - 0x200C0403, // 001E NE R3 R2 R3 - 0x780E0000, // 001F JMPF R3 #0021 - 0x80040400, // 0020 RET 1 R2 - 0x7001FFDF, // 0021 JMP #0002 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_op_discovery +** Solidified function: mdns_remove_op_discovery ********************************************************************/ be_local_closure(Matter_Device_mdns_remove_op_discovery, /* name */ be_nested_proto( @@ -3522,122 +2429,246 @@ be_local_closure(Matter_Device_mdns_remove_op_discovery, /* name */ /******************************************************************** -** Solidified function: clean_remotes +** Solidified function: init ********************************************************************/ -be_local_closure(Matter_Device_clean_remotes, /* name */ +be_local_closure(Matter_Device_init, /* name */ be_nested_proto( - 10, /* nstack */ + 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[18]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(http_remotes), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(plugins), - /* K5 */ be_nested_str_weak(get), - /* K6 */ be_nested_str_weak(http_remote), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(keys), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(log), - /* K13 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), - /* K14 */ be_nested_str_weak(addr), - /* K15 */ be_const_int(3), - /* K16 */ be_nested_str_weak(close), - /* K17 */ be_nested_str_weak(remove), + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(start), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + /* K4 */ be_nested_str_weak(matter_start), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0004, // 0006 LDCONST R3 K4 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(start), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + /* K4 */ be_nested_str_weak(matter_start), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0004, // 0006 LDCONST R3 K4 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), }), - be_str_weak(clean_remotes), + 1, /* has constants */ + ( &(const bvalue[46]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(get_option), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(MATTER_OPTION), + /* K5 */ be_nested_str_weak(UI), + /* K6 */ be_nested_str_weak(profiler), + /* K7 */ be_nested_str_weak(Profiler), + /* K8 */ be_nested_str_weak(started), + /* K9 */ be_nested_str_weak(tick), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(plugins), + /* K12 */ be_nested_str_weak(plugins_persist), + /* K13 */ be_nested_str_weak(plugins_classes), + /* K14 */ be_nested_str_weak(plugins_config_remotes), + /* K15 */ be_nested_str_weak(register_native_classes), + /* K16 */ be_nested_str_weak(vendorid), + /* K17 */ be_nested_str_weak(VENDOR_ID), + /* K18 */ be_nested_str_weak(productid), + /* K19 */ be_nested_str_weak(PRODUCT_ID), + /* K20 */ be_nested_str_weak(root_iterations), + /* K21 */ be_nested_str_weak(PBKDF_ITERATIONS), + /* K22 */ be_nested_str_weak(next_ep), + /* K23 */ be_const_int(1), + /* K24 */ be_nested_str_weak(root_salt), + /* K25 */ be_nested_str_weak(random), + /* K26 */ be_nested_str_weak(ipv4only), + /* K27 */ be_nested_str_weak(disable_bridge_mode), + /* K28 */ be_nested_str_weak(load_param), + /* K29 */ be_nested_str_weak(sessions), + /* K30 */ be_nested_str_weak(Session_Store), + /* K31 */ be_nested_str_weak(load_fabrics), + /* K32 */ be_nested_str_weak(message_handler), + /* K33 */ be_nested_str_weak(MessageHandler), + /* K34 */ be_nested_str_weak(ui), + /* K35 */ be_nested_str_weak(wifi), + /* K36 */ be_nested_str_weak(up), + /* K37 */ be_nested_str_weak(eth), + /* K38 */ be_nested_str_weak(start), + /* K39 */ be_nested_str_weak(add_rule), + /* K40 */ be_nested_str_weak(Wifi_X23Connected), + /* K41 */ be_nested_str_weak(matter_start), + /* K42 */ be_nested_str_weak(Eth_X23Connected), + /* K43 */ be_nested_str_weak(_init_basic_commissioning), + /* K44 */ be_nested_str_weak(add_driver), + /* K45 */ be_nested_str_weak(register_commands), + }), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[81]) { /* code */ + ( &(const binstruction[112]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x780A004C, // 0002 JMPF R2 #0050 - 0x60080013, // 0003 GETGBL R2 G19 - 0x7C080000, // 0004 CALL R2 0 - 0x600C0010, // 0005 GETGBL R3 G16 - 0x88100101, // 0006 GETMBR R4 R0 K1 - 0x7C0C0200, // 0007 CALL R3 1 - 0xA8020003, // 0008 EXBLK 0 #000D - 0x5C100600, // 0009 MOVE R4 R3 - 0x7C100000, // 000A CALL R4 0 - 0x98080902, // 000B SETIDX R2 R4 K2 - 0x7001FFFB, // 000C JMP #0009 - 0x580C0003, // 000D LDCONST R3 K3 - 0xAC0C0200, // 000E CATCH R3 1 0 - 0xB0080000, // 000F RAISE 2 R0 R0 - 0x600C0010, // 0010 GETGBL R3 G16 - 0x88100104, // 0011 GETMBR R4 R0 K4 - 0x7C0C0200, // 0012 CALL R3 1 - 0xA802000F, // 0013 EXBLK 0 #0024 - 0x5C100600, // 0014 MOVE R4 R3 - 0x7C100000, // 0015 CALL R4 0 - 0x8C140305, // 0016 GETMET R5 R1 K5 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x58200006, // 0018 LDCONST R8 K6 - 0x7C140600, // 0019 CALL R5 3 - 0x4C180000, // 001A LDNIL R6 - 0x20180A06, // 001B NE R6 R5 R6 - 0x781A0005, // 001C JMPF R6 #0023 - 0x8C180507, // 001D GETMET R6 R2 K7 - 0x5C200A00, // 001E MOVE R8 R5 - 0x58240002, // 001F LDCONST R9 K2 - 0x7C180600, // 0020 CALL R6 3 - 0x00180D08, // 0021 ADD R6 R6 K8 - 0x98080A06, // 0022 SETIDX R2 R5 R6 - 0x7001FFEF, // 0023 JMP #0014 - 0x580C0003, // 0024 LDCONST R3 K3 - 0xAC0C0200, // 0025 CATCH R3 1 0 - 0xB0080000, // 0026 RAISE 2 R0 R0 - 0x600C0012, // 0027 GETGBL R3 G18 - 0x7C0C0000, // 0028 CALL R3 0 - 0x60100010, // 0029 GETGBL R4 G16 - 0x8C140509, // 002A GETMET R5 R2 K9 - 0x7C140200, // 002B CALL R5 1 - 0x7C100200, // 002C CALL R4 1 - 0xA8020008, // 002D EXBLK 0 #0037 - 0x5C140800, // 002E MOVE R5 R4 - 0x7C140000, // 002F CALL R5 0 - 0x94180405, // 0030 GETIDX R6 R2 R5 - 0x1C180D02, // 0031 EQ R6 R6 K2 - 0x781A0002, // 0032 JMPF R6 #0036 - 0x8C18070A, // 0033 GETMET R6 R3 K10 - 0x5C200A00, // 0034 MOVE R8 R5 - 0x7C180400, // 0035 CALL R6 2 - 0x7001FFF6, // 0036 JMP #002E - 0x58100003, // 0037 LDCONST R4 K3 - 0xAC100200, // 0038 CATCH R4 1 0 - 0xB0080000, // 0039 RAISE 2 R0 R0 - 0x60100010, // 003A GETGBL R4 G16 - 0x5C140600, // 003B MOVE R5 R3 - 0x7C100200, // 003C CALL R4 1 - 0xA802000E, // 003D EXBLK 0 #004D - 0x5C140800, // 003E MOVE R5 R4 - 0x7C140000, // 003F CALL R5 0 - 0xB81A1600, // 0040 GETNGBL R6 K11 - 0x8C180D0C, // 0041 GETMET R6 R6 K12 - 0x88200B0E, // 0042 GETMBR R8 R5 K14 - 0x00221A08, // 0043 ADD R8 K13 R8 - 0x5824000F, // 0044 LDCONST R9 K15 - 0x7C180600, // 0045 CALL R6 3 - 0x8C180B10, // 0046 GETMET R6 R5 K16 - 0x7C180200, // 0047 CALL R6 1 - 0x88180101, // 0048 GETMBR R6 R0 K1 - 0x8C180D11, // 0049 GETMET R6 R6 K17 - 0x88200B0E, // 004A GETMBR R8 R5 K14 - 0x7C180400, // 004B CALL R6 2 - 0x7001FFF0, // 004C JMP #003E - 0x58100003, // 004D LDCONST R4 K3 - 0xAC100200, // 004E CATCH R4 1 0 - 0xB0080000, // 004F RAISE 2 R0 R0 - 0x80000000, // 0050 RET 0 + 0xB80A0200, // 0001 GETNGBL R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0xB8120600, // 0003 GETNGBL R4 K3 + 0x88100904, // 0004 GETMBR R4 R4 K4 + 0x7C080400, // 0005 CALL R2 2 + 0x740A0004, // 0006 JMPT R2 #000C + 0xB80A0600, // 0007 GETNGBL R2 K3 + 0x8C080505, // 0008 GETMET R2 R2 K5 + 0x5C100000, // 0009 MOVE R4 R0 + 0x7C080400, // 000A CALL R2 2 + 0x80000400, // 000B RET 0 + 0xB80A0600, // 000C GETNGBL R2 K3 + 0xB80E0600, // 000D GETNGBL R3 K3 + 0x8C0C0707, // 000E GETMET R3 R3 K7 + 0x7C0C0200, // 000F CALL R3 1 + 0x900A0C03, // 0010 SETMBR R2 K6 R3 + 0x50080000, // 0011 LDBOOL R2 0 0 + 0x90021002, // 0012 SETMBR R0 K8 R2 + 0x9002130A, // 0013 SETMBR R0 K9 K10 + 0x60080012, // 0014 GETGBL R2 G18 + 0x7C080000, // 0015 CALL R2 0 + 0x90021602, // 0016 SETMBR R0 K11 R2 + 0x50080000, // 0017 LDBOOL R2 0 0 + 0x90021802, // 0018 SETMBR R0 K12 R2 + 0x60080013, // 0019 GETGBL R2 G19 + 0x7C080000, // 001A CALL R2 0 + 0x90021A02, // 001B SETMBR R0 K13 R2 + 0x60080013, // 001C GETGBL R2 G19 + 0x7C080000, // 001D CALL R2 0 + 0x90021C02, // 001E SETMBR R0 K14 R2 + 0x8C08010F, // 001F GETMET R2 R0 K15 + 0x7C080200, // 0020 CALL R2 1 + 0x88080111, // 0021 GETMBR R2 R0 K17 + 0x90022002, // 0022 SETMBR R0 K16 R2 + 0x88080113, // 0023 GETMBR R2 R0 K19 + 0x90022402, // 0024 SETMBR R0 K18 R2 + 0x88080115, // 0025 GETMBR R2 R0 K21 + 0x90022802, // 0026 SETMBR R0 K20 R2 + 0x90022D17, // 0027 SETMBR R0 K22 K23 + 0x8C080319, // 0028 GETMET R2 R1 K25 + 0x5412000F, // 0029 LDINT R4 16 + 0x7C080400, // 002A CALL R2 2 + 0x90023002, // 002B SETMBR R0 K24 R2 + 0x50080000, // 002C LDBOOL R2 0 0 + 0x90023402, // 002D SETMBR R0 K26 R2 + 0x50080000, // 002E LDBOOL R2 0 0 + 0x90023602, // 002F SETMBR R0 K27 R2 + 0x8C08011C, // 0030 GETMET R2 R0 K28 + 0x7C080200, // 0031 CALL R2 1 + 0xB80A0600, // 0032 GETNGBL R2 K3 + 0x8C08051E, // 0033 GETMET R2 R2 K30 + 0x5C100000, // 0034 MOVE R4 R0 + 0x7C080400, // 0035 CALL R2 2 + 0x90023A02, // 0036 SETMBR R0 K29 R2 + 0x8808011D, // 0037 GETMBR R2 R0 K29 + 0x8C08051F, // 0038 GETMET R2 R2 K31 + 0x7C080200, // 0039 CALL R2 1 + 0xB80A0600, // 003A GETNGBL R2 K3 + 0x8C080521, // 003B GETMET R2 R2 K33 + 0x5C100000, // 003C MOVE R4 R0 + 0x7C080400, // 003D CALL R2 2 + 0x90024002, // 003E SETMBR R0 K32 R2 + 0xB80A0600, // 003F GETNGBL R2 K3 + 0x8C080505, // 0040 GETMET R2 R2 K5 + 0x5C100000, // 0041 MOVE R4 R0 + 0x7C080400, // 0042 CALL R2 2 + 0x90024402, // 0043 SETMBR R0 K34 R2 + 0xB80A0200, // 0044 GETNGBL R2 K1 + 0x8C080523, // 0045 GETMET R2 R2 K35 + 0x7C080200, // 0046 CALL R2 1 + 0x94080524, // 0047 GETIDX R2 R2 K36 + 0x740A0004, // 0048 JMPT R2 #004E + 0xB80A0200, // 0049 GETNGBL R2 K1 + 0x8C080525, // 004A GETMET R2 R2 K37 + 0x7C080200, // 004B CALL R2 1 + 0x94080524, // 004C GETIDX R2 R2 K36 + 0x780A0001, // 004D JMPF R2 #0050 + 0x8C080126, // 004E GETMET R2 R0 K38 + 0x7C080200, // 004F CALL R2 1 + 0xB80A0200, // 0050 GETNGBL R2 K1 + 0x8C080523, // 0051 GETMET R2 R2 K35 + 0x7C080200, // 0052 CALL R2 1 + 0x94080524, // 0053 GETIDX R2 R2 K36 + 0x740A0005, // 0054 JMPT R2 #005B + 0xB80A0200, // 0055 GETNGBL R2 K1 + 0x8C080527, // 0056 GETMET R2 R2 K39 + 0x58100028, // 0057 LDCONST R4 K40 + 0x84140000, // 0058 CLOSURE R5 P0 + 0x58180029, // 0059 LDCONST R6 K41 + 0x7C080800, // 005A CALL R2 4 + 0xB80A0200, // 005B GETNGBL R2 K1 + 0x8C080525, // 005C GETMET R2 R2 K37 + 0x7C080200, // 005D CALL R2 1 + 0x94080524, // 005E GETIDX R2 R2 K36 + 0x740A0005, // 005F JMPT R2 #0066 + 0xB80A0200, // 0060 GETNGBL R2 K1 + 0x8C080527, // 0061 GETMET R2 R2 K39 + 0x5810002A, // 0062 LDCONST R4 K42 + 0x84140001, // 0063 CLOSURE R5 P1 + 0x58180029, // 0064 LDCONST R6 K41 + 0x7C080800, // 0065 CALL R2 4 + 0x8C08012B, // 0066 GETMET R2 R0 K43 + 0x7C080200, // 0067 CALL R2 1 + 0xB80A0200, // 0068 GETNGBL R2 K1 + 0x8C08052C, // 0069 GETMET R2 R2 K44 + 0x5C100000, // 006A MOVE R4 R0 + 0x7C080400, // 006B CALL R2 2 + 0x8C08012D, // 006C GETMET R2 R0 K45 + 0x7C080200, // 006D CALL R2 1 + 0xA0000000, // 006E CLOSE R0 + 0x80000000, // 006F RET 0 }) ) ); @@ -3645,159 +2676,87 @@ be_local_closure(Matter_Device_clean_remotes, /* name */ /******************************************************************** -** Solidified function: register_plugin_class +** Solidified function: _start_udp ********************************************************************/ -be_local_closure(Matter_Device_register_plugin_class, /* name */ +be_local_closure(Matter_Device__start_udp, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(get), - /* K2 */ be_nested_str_weak(TYPE), - /* K3 */ be_nested_str_weak(plugins_classes), + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(msg_received), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x5C140000, // 0002 MOVE R5 R0 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x7C0C0800, // 0005 CALL R3 4 + 0x80040600, // 0006 RET 1 R3 + }) + ), }), - be_str_weak(register_plugin_class), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x780E0001, // 0005 JMPF R3 #0008 - 0x88100103, // 0006 GETMBR R4 R0 K3 - 0x98100601, // 0007 SETIDX R4 R3 R1 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_root_basic_commissioning -********************************************************************/ -be_local_closure(Matter_Device_start_root_basic_commissioning, /* name */ - be_nested_proto( - 13, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(PASE_TIMEOUT), - /* K1 */ be_nested_str_weak(compute_manual_pairing_code), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), - /* K5 */ be_const_int(2), - /* K6 */ be_nested_str_weak(compute_qrcode_content), - /* K7 */ be_nested_str_weak(publish_result), - /* K8 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D), - /* K9 */ be_nested_str_weak(Matter), - /* K10 */ be_nested_str_weak(_compute_pbkdf), - /* K11 */ be_nested_str_weak(root_passcode), - /* K12 */ be_nested_str_weak(root_iterations), - /* K13 */ be_nested_str_weak(root_salt), - /* K14 */ be_nested_str_weak(start_basic_commissioning), - /* K15 */ be_nested_str_weak(root_discriminator), - /* K16 */ be_nested_str_weak(root_w0), - /* K17 */ be_nested_str_weak(root_L), - }), - be_str_weak(start_root_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x88040100, // 0003 GETMBR R1 R0 K0 - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x7C080200, // 0005 CALL R2 1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x8C0C0703, // 0007 GETMET R3 R3 K3 - 0x60140018, // 0008 GETGBL R5 G24 - 0x58180004, // 0009 LDCONST R6 K4 - 0x5C1C0400, // 000A MOVE R7 R2 - 0x7C140400, // 000B CALL R5 2 - 0x58180005, // 000C LDCONST R6 K5 - 0x7C0C0600, // 000D CALL R3 3 - 0x8C0C0106, // 000E GETMET R3 R0 K6 - 0x7C0C0200, // 000F CALL R3 1 - 0xB8120400, // 0010 GETNGBL R4 K2 - 0x8C100907, // 0011 GETMET R4 R4 K7 - 0x60180018, // 0012 GETGBL R6 G24 - 0x581C0008, // 0013 LDCONST R7 K8 - 0x5C200400, // 0014 MOVE R8 R2 - 0x5C240600, // 0015 MOVE R9 R3 - 0x7C180600, // 0016 CALL R6 3 - 0x581C0009, // 0017 LDCONST R7 K9 - 0x7C100600, // 0018 CALL R4 3 - 0x8C10010A, // 0019 GETMET R4 R0 K10 - 0x8818010B, // 001A GETMBR R6 R0 K11 - 0x881C010C, // 001B GETMBR R7 R0 K12 - 0x8820010D, // 001C GETMBR R8 R0 K13 - 0x7C100800, // 001D CALL R4 4 - 0x8C10010E, // 001E GETMET R4 R0 K14 - 0x5C180200, // 001F MOVE R6 R1 - 0x881C010C, // 0020 GETMBR R7 R0 K12 - 0x8820010F, // 0021 GETMBR R8 R0 K15 - 0x8824010D, // 0022 GETMBR R9 R0 K13 - 0x88280110, // 0023 GETMBR R10 R0 K16 - 0x882C0111, // 0024 GETMBR R11 R0 K17 - 0x4C300000, // 0025 LDNIL R12 - 0x7C101000, // 0026 CALL R4 8 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: event_fabrics_saved -********************************************************************/ -be_local_closure(Matter_Device_event_fabrics_saved, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(count_active_fabrics), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(plugins_persist), - /* K4 */ be_nested_str_weak(save_param), + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), + /* K4 */ be_const_int(2), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(UDPServer), + /* K7 */ be_nested_str_weak(), + /* K8 */ be_nested_str_weak(start), }), - be_str_weak(event_fabrics_saved), + be_str_weak(_start_udp), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x24040302, // 0003 GT R1 R1 K2 - 0x78060005, // 0004 JMPF R1 #000B - 0x88040103, // 0005 GETMBR R1 R0 K3 - 0x74060003, // 0006 JMPT R1 #000B - 0x50040200, // 0007 LDBOOL R1 1 0 - 0x90020601, // 0008 SETMBR R0 K3 R1 - 0x8C040104, // 0009 GETMET R1 R0 K4 - 0x7C040200, // 000A CALL R1 1 - 0x80000000, // 000B RET 0 + ( &(const binstruction[28]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80000400, // 0002 RET 0 + 0x4C080000, // 0003 LDNIL R2 + 0x1C080202, // 0004 EQ R2 R1 R2 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x540615A3, // 0006 LDINT R1 5540 + 0xB80A0200, // 0007 GETNGBL R2 K1 + 0x8C080502, // 0008 GETMET R2 R2 K2 + 0x60100008, // 0009 GETGBL R4 G8 + 0x5C140200, // 000A MOVE R5 R1 + 0x7C100200, // 000B CALL R4 1 + 0x00120604, // 000C ADD R4 K3 R4 + 0x58140004, // 000D LDCONST R5 K4 + 0x7C080600, // 000E CALL R2 3 + 0xB80A0A00, // 000F GETNGBL R2 K5 + 0x8C080506, // 0010 GETMET R2 R2 K6 + 0x5C100000, // 0011 MOVE R4 R0 + 0x58140007, // 0012 LDCONST R5 K7 + 0x5C180200, // 0013 MOVE R6 R1 + 0x7C080800, // 0014 CALL R2 4 + 0x90020002, // 0015 SETMBR R0 K0 R2 + 0x88080100, // 0016 GETMBR R2 R0 K0 + 0x8C080508, // 0017 GETMET R2 R2 K8 + 0x84100000, // 0018 CLOSURE R4 P0 + 0x7C080400, // 0019 CALL R2 2 + 0xA0000000, // 001A CLOSE R0 + 0x80000000, // 001B RET 0 }) ) ); @@ -3805,11 +2764,11 @@ be_local_closure(Matter_Device_event_fabrics_saved, /* name */ /******************************************************************** -** Solidified function: mdns_announce_op_discovery_all_fabrics +** Solidified function: load_param ********************************************************************/ -be_local_closure(Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name */ +be_local_closure(Matter_Device_load_param, /* name */ be_nested_proto( - 6, /* nstack */ + 11, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -3817,165 +2776,173 @@ be_local_closure(Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(active_fabrics), - /* K2 */ be_nested_str_weak(get_device_id), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(mdns_announce_op_discovery), - /* K5 */ be_nested_str_weak(stop_iteration), + ( &(const bvalue[35]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(FILENAME), + /* K2 */ be_nested_str_weak(read), + /* K3 */ be_nested_str_weak(close), + /* K4 */ be_nested_str_weak(json), + /* K5 */ be_nested_str_weak(load), + /* K6 */ be_nested_str_weak(root_discriminator), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_nested_str_weak(distinguish), + /* K9 */ be_nested_str_weak(root_passcode), + /* K10 */ be_nested_str_weak(passcode), + /* K11 */ be_nested_str_weak(ipv4only), + /* K12 */ be_nested_str_weak(disable_bridge_mode), + /* K13 */ be_nested_str_weak(next_ep), + /* K14 */ be_nested_str_weak(nextep), + /* K15 */ be_nested_str_weak(plugins_config), + /* K16 */ be_nested_str_weak(config), + /* K17 */ be_nested_str_weak(tasmota), + /* K18 */ be_nested_str_weak(log), + /* K19 */ be_nested_str_weak(MTR_X3A_X20load_config_X20_X3D_X20), + /* K20 */ be_const_int(3), + /* K21 */ be_nested_str_weak(adjust_next_ep), + /* K22 */ be_nested_str_weak(plugins_persist), + /* K23 */ be_nested_str_weak(plugins_config_remotes), + /* K24 */ be_nested_str_weak(remotes), + /* K25 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20), + /* K26 */ be_nested_str_weak(io_error), + /* K27 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Aload_X20Exception_X3A), + /* K28 */ be_nested_str_weak(_X7C), + /* K29 */ be_const_int(2), + /* K30 */ be_nested_str_weak(random), + /* K31 */ be_nested_str_weak(get), + /* K32 */ be_const_int(0), + /* K33 */ be_nested_str_weak(generate_random_passcode), + /* K34 */ be_nested_str_weak(save_param), }), - be_str_weak(mdns_announce_op_discovery_all_fabrics), + be_str_weak(load_param), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000B, // 0005 EXBLK 0 #0012 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x8C0C0502, // 0008 GETMET R3 R2 K2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x780E0005, // 000A JMPF R3 #0011 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0104, // 000E GETMET R3 R0 K4 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x7001FFF3, // 0011 JMP #0006 - 0x58040005, // 0012 LDCONST R1 K5 - 0xAC040200, // 0013 CATCH R1 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_PASE -********************************************************************/ -be_local_closure(Matter_Device_mdns_remove_PASE, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(mdns_pase_eth), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), - /* K5 */ be_nested_str_weak(_matterc), - /* K6 */ be_nested_str_weak(_udp), - /* K7 */ be_nested_str_weak(commissioning_instance_eth), - /* K8 */ be_nested_str_weak(hostname_eth), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), - /* K11 */ be_nested_str_weak(eth), - /* K12 */ be_nested_str_weak(remove_service), - /* K13 */ be_nested_str_weak(mdns_pase_wifi), - /* K14 */ be_nested_str_weak(commissioning_instance_wifi), - /* K15 */ be_nested_str_weak(hostname_wifi), - /* K16 */ be_nested_str_weak(wifi), - /* K17 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K18 */ be_nested_str_weak(_X7C), - /* K19 */ be_const_int(2), - }), - be_str_weak(mdns_remove_PASE), - &be_const_str_solidified, - ( &(const binstruction[82]) { /* code */ + ( &(const binstruction[127]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0xA802003D, // 0001 EXBLK 0 #0040 - 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x780A001B, // 0003 JMPF R2 #0020 - 0xB80A0400, // 0004 GETNGBL R2 K2 - 0x8C080503, // 0005 GETMET R2 R2 K3 - 0x60100018, // 0006 GETGBL R4 G24 - 0x58140004, // 0007 LDCONST R5 K4 - 0x58180005, // 0008 LDCONST R6 K5 - 0x581C0006, // 0009 LDCONST R7 K6 - 0x88200107, // 000A GETMBR R8 R0 K7 - 0x88240108, // 000B GETMBR R9 R0 K8 - 0x7C100A00, // 000C CALL R4 5 - 0x58140009, // 000D LDCONST R5 K9 - 0x7C080600, // 000E CALL R2 3 - 0xB80A0400, // 000F GETNGBL R2 K2 - 0x8C080503, // 0010 GETMET R2 R2 K3 - 0x60100018, // 0011 GETGBL R4 G24 - 0x5814000A, // 0012 LDCONST R5 K10 - 0x5818000B, // 0013 LDCONST R6 K11 - 0x881C0107, // 0014 GETMBR R7 R0 K7 - 0x7C100600, // 0015 CALL R4 3 - 0x58140009, // 0016 LDCONST R5 K9 - 0x7C080600, // 0017 CALL R2 3 - 0x50080000, // 0018 LDBOOL R2 0 0 - 0x90020202, // 0019 SETMBR R0 K1 R2 - 0x8C08030C, // 001A GETMET R2 R1 K12 - 0x58100005, // 001B LDCONST R4 K5 - 0x58140006, // 001C LDCONST R5 K6 - 0x88180107, // 001D GETMBR R6 R0 K7 - 0x881C0108, // 001E GETMBR R7 R0 K8 - 0x7C080A00, // 001F CALL R2 5 - 0x8808010D, // 0020 GETMBR R2 R0 K13 - 0x780A001B, // 0021 JMPF R2 #003E - 0xB80A0400, // 0022 GETNGBL R2 K2 - 0x8C080503, // 0023 GETMET R2 R2 K3 - 0x60100018, // 0024 GETGBL R4 G24 - 0x58140004, // 0025 LDCONST R5 K4 - 0x58180005, // 0026 LDCONST R6 K5 - 0x581C0006, // 0027 LDCONST R7 K6 - 0x8820010E, // 0028 GETMBR R8 R0 K14 - 0x8824010F, // 0029 GETMBR R9 R0 K15 - 0x7C100A00, // 002A CALL R4 5 - 0x58140009, // 002B LDCONST R5 K9 - 0x7C080600, // 002C CALL R2 3 - 0xB80A0400, // 002D GETNGBL R2 K2 - 0x8C080503, // 002E GETMET R2 R2 K3 - 0x60100018, // 002F GETGBL R4 G24 - 0x5814000A, // 0030 LDCONST R5 K10 - 0x58180010, // 0031 LDCONST R6 K16 - 0x881C010E, // 0032 GETMBR R7 R0 K14 - 0x7C100600, // 0033 CALL R4 3 - 0x58140009, // 0034 LDCONST R5 K9 - 0x7C080600, // 0035 CALL R2 3 - 0x50080000, // 0036 LDBOOL R2 0 0 - 0x90021A02, // 0037 SETMBR R0 K13 R2 - 0x8C08030C, // 0038 GETMET R2 R1 K12 - 0x58100005, // 0039 LDCONST R4 K5 - 0x58140006, // 003A LDCONST R5 K6 - 0x8818010E, // 003B GETMBR R6 R0 K14 - 0x881C010F, // 003C GETMBR R7 R0 K15 - 0x7C080A00, // 003D CALL R2 5 - 0xA8040001, // 003E EXBLK 1 1 - 0x70020010, // 003F JMP #0051 - 0xAC080002, // 0040 CATCH R2 0 2 - 0x7002000D, // 0041 JMP #0050 - 0xB8120400, // 0042 GETNGBL R4 K2 - 0x8C100903, // 0043 GETMET R4 R4 K3 - 0x60180008, // 0044 GETGBL R6 G8 - 0x5C1C0400, // 0045 MOVE R7 R2 - 0x7C180200, // 0046 CALL R6 1 - 0x001A2206, // 0047 ADD R6 K17 R6 - 0x00180D12, // 0048 ADD R6 R6 K18 - 0x601C0008, // 0049 GETGBL R7 G8 - 0x5C200600, // 004A MOVE R8 R3 - 0x7C1C0200, // 004B CALL R7 1 - 0x00180C07, // 004C ADD R6 R6 R7 - 0x581C0013, // 004D LDCONST R7 K19 - 0x7C100600, // 004E CALL R4 3 - 0x70020000, // 004F JMP #0051 - 0xB0080000, // 0050 RAISE 2 R0 R0 - 0x80000000, // 0051 RET 0 + 0xA802004D, // 0001 EXBLK 0 #0050 + 0x60080011, // 0002 GETGBL R2 G17 + 0x880C0101, // 0003 GETMBR R3 R0 K1 + 0x7C080200, // 0004 CALL R2 1 + 0x8C0C0502, // 0005 GETMET R3 R2 K2 + 0x7C0C0200, // 0006 CALL R3 1 + 0x8C100503, // 0007 GETMET R4 R2 K3 + 0x7C100200, // 0008 CALL R4 1 + 0xA4120800, // 0009 IMPORT R4 K4 + 0x8C140905, // 000A GETMET R5 R4 K5 + 0x5C1C0600, // 000B MOVE R7 R3 + 0x7C140400, // 000C CALL R5 2 + 0x8C180B07, // 000D GETMET R6 R5 K7 + 0x58200008, // 000E LDCONST R8 K8 + 0x88240106, // 000F GETMBR R9 R0 K6 + 0x7C180600, // 0010 CALL R6 3 + 0x90020C06, // 0011 SETMBR R0 K6 R6 + 0x8C180B07, // 0012 GETMET R6 R5 K7 + 0x5820000A, // 0013 LDCONST R8 K10 + 0x88240109, // 0014 GETMBR R9 R0 K9 + 0x7C180600, // 0015 CALL R6 3 + 0x90021206, // 0016 SETMBR R0 K9 R6 + 0x60180017, // 0017 GETGBL R6 G23 + 0x8C1C0B07, // 0018 GETMET R7 R5 K7 + 0x5824000B, // 0019 LDCONST R9 K11 + 0x50280000, // 001A LDBOOL R10 0 0 + 0x7C1C0600, // 001B CALL R7 3 + 0x7C180200, // 001C CALL R6 1 + 0x90021606, // 001D SETMBR R0 K11 R6 + 0x60180017, // 001E GETGBL R6 G23 + 0x8C1C0B07, // 001F GETMET R7 R5 K7 + 0x5824000C, // 0020 LDCONST R9 K12 + 0x50280000, // 0021 LDBOOL R10 0 0 + 0x7C1C0600, // 0022 CALL R7 3 + 0x7C180200, // 0023 CALL R6 1 + 0x90021806, // 0024 SETMBR R0 K12 R6 + 0x8C180B07, // 0025 GETMET R6 R5 K7 + 0x5820000E, // 0026 LDCONST R8 K14 + 0x8824010D, // 0027 GETMBR R9 R0 K13 + 0x7C180600, // 0028 CALL R6 3 + 0x90021A06, // 0029 SETMBR R0 K13 R6 + 0x8C180B07, // 002A GETMET R6 R5 K7 + 0x58200010, // 002B LDCONST R8 K16 + 0x7C180400, // 002C CALL R6 2 + 0x90021E06, // 002D SETMBR R0 K15 R6 + 0x8818010F, // 002E GETMBR R6 R0 K15 + 0x4C1C0000, // 002F LDNIL R7 + 0x20180C07, // 0030 NE R6 R6 R7 + 0x781A000B, // 0031 JMPF R6 #003E + 0xB81A2200, // 0032 GETNGBL R6 K17 + 0x8C180D12, // 0033 GETMET R6 R6 K18 + 0x60200008, // 0034 GETGBL R8 G8 + 0x8824010F, // 0035 GETMBR R9 R0 K15 + 0x7C200200, // 0036 CALL R8 1 + 0x00222608, // 0037 ADD R8 K19 R8 + 0x58240014, // 0038 LDCONST R9 K20 + 0x7C180600, // 0039 CALL R6 3 + 0x8C180115, // 003A GETMET R6 R0 K21 + 0x7C180200, // 003B CALL R6 1 + 0x50180200, // 003C LDBOOL R6 1 0 + 0x90022C06, // 003D SETMBR R0 K22 R6 + 0x8C180B07, // 003E GETMET R6 R5 K7 + 0x58200018, // 003F LDCONST R8 K24 + 0x60240013, // 0040 GETGBL R9 G19 + 0x7C240000, // 0041 CALL R9 0 + 0x7C180600, // 0042 CALL R6 3 + 0x90022E06, // 0043 SETMBR R0 K23 R6 + 0x88180117, // 0044 GETMBR R6 R0 K23 + 0x781A0007, // 0045 JMPF R6 #004E + 0xB81A2200, // 0046 GETNGBL R6 K17 + 0x8C180D12, // 0047 GETMET R6 R6 K18 + 0x60200008, // 0048 GETGBL R8 G8 + 0x88240117, // 0049 GETMBR R9 R0 K23 + 0x7C200200, // 004A CALL R8 1 + 0x00223208, // 004B ADD R8 K25 R8 + 0x58240014, // 004C LDCONST R9 K20 + 0x7C180600, // 004D CALL R6 3 + 0xA8040001, // 004E EXBLK 1 1 + 0x70020012, // 004F JMP #0063 + 0xAC080002, // 0050 CATCH R2 0 2 + 0x7002000F, // 0051 JMP #0062 + 0x2010051A, // 0052 NE R4 R2 K26 + 0x7812000C, // 0053 JMPF R4 #0061 + 0xB8122200, // 0054 GETNGBL R4 K17 + 0x8C100912, // 0055 GETMET R4 R4 K18 + 0x60180008, // 0056 GETGBL R6 G8 + 0x5C1C0400, // 0057 MOVE R7 R2 + 0x7C180200, // 0058 CALL R6 1 + 0x001A3606, // 0059 ADD R6 K27 R6 + 0x00180D1C, // 005A ADD R6 R6 K28 + 0x601C0008, // 005B GETGBL R7 G8 + 0x5C200600, // 005C MOVE R8 R3 + 0x7C1C0200, // 005D CALL R7 1 + 0x00180C07, // 005E ADD R6 R6 R7 + 0x581C001D, // 005F LDCONST R7 K29 + 0x7C100600, // 0060 CALL R4 3 + 0x70020000, // 0061 JMP #0063 + 0xB0080000, // 0062 RAISE 2 R0 R0 + 0x50080000, // 0063 LDBOOL R2 0 0 + 0x880C0106, // 0064 GETMBR R3 R0 K6 + 0x4C100000, // 0065 LDNIL R4 + 0x1C0C0604, // 0066 EQ R3 R3 R4 + 0x780E000A, // 0067 JMPF R3 #0073 + 0x8C0C031E, // 0068 GETMET R3 R1 K30 + 0x5814001D, // 0069 LDCONST R5 K29 + 0x7C0C0400, // 006A CALL R3 2 + 0x8C0C071F, // 006B GETMET R3 R3 K31 + 0x58140020, // 006C LDCONST R5 K32 + 0x5818001D, // 006D LDCONST R6 K29 + 0x7C0C0600, // 006E CALL R3 3 + 0x54120FFE, // 006F LDINT R4 4095 + 0x2C0C0604, // 0070 AND R3 R3 R4 + 0x90020C03, // 0071 SETMBR R0 K6 R3 + 0x50080200, // 0072 LDBOOL R2 1 0 + 0x880C0109, // 0073 GETMBR R3 R0 K9 + 0x4C100000, // 0074 LDNIL R4 + 0x1C0C0604, // 0075 EQ R3 R3 R4 + 0x780E0003, // 0076 JMPF R3 #007B + 0x8C0C0121, // 0077 GETMET R3 R0 K33 + 0x7C0C0200, // 0078 CALL R3 1 + 0x90021203, // 0079 SETMBR R0 K9 R3 + 0x50080200, // 007A LDBOOL R2 1 0 + 0x780A0001, // 007B JMPF R2 #007E + 0x8C0C0122, // 007C GETMET R3 R0 K34 + 0x7C0C0200, // 007D CALL R3 1 + 0x80000000, // 007E RET 0 }) ) ); @@ -3983,11 +2950,11 @@ be_local_closure(Matter_Device_mdns_remove_PASE, /* name */ /******************************************************************** -** Solidified function: compute_manual_pairing_code +** Solidified function: adjust_next_ep ********************************************************************/ -be_local_closure(Matter_Device_compute_manual_pairing_code, /* name */ +be_local_closure(Matter_Device_adjust_next_ep, /* name */ be_nested_proto( - 9, /* nstack */ + 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -3995,47 +2962,37 @@ be_local_closure(Matter_Device_compute_manual_pairing_code, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(root_discriminator), - /* K1 */ be_nested_str_weak(root_passcode), - /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Verhoeff), - /* K5 */ be_nested_str_weak(checksum), - }), - be_str_weak(compute_manual_pairing_code), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x540A0FFE, // 0001 LDINT R2 4095 - 0x2C040202, // 0002 AND R1 R1 R2 - 0x540A0009, // 0003 LDINT R2 10 - 0x3C040202, // 0004 SHR R1 R1 R2 - 0x88080100, // 0005 GETMBR R2 R0 K0 - 0x540E02FF, // 0006 LDINT R3 768 - 0x2C080403, // 0007 AND R2 R2 R3 - 0x540E0005, // 0008 LDINT R3 6 - 0x38080403, // 0009 SHL R2 R2 R3 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x54123FFE, // 000B LDINT R4 16383 - 0x2C0C0604, // 000C AND R3 R3 R4 - 0x30080403, // 000D OR R2 R2 R3 - 0x880C0101, // 000E GETMBR R3 R0 K1 - 0x5412000D, // 000F LDINT R4 14 - 0x3C0C0604, // 0010 SHR R3 R3 R4 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140002, // 0012 LDCONST R5 K2 - 0x5C180200, // 0013 MOVE R6 R1 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x5C200600, // 0015 MOVE R8 R3 - 0x7C100800, // 0016 CALL R4 4 - 0xB8160600, // 0017 GETNGBL R5 K3 - 0x88140B04, // 0018 GETMBR R5 R5 K4 - 0x8C140B05, // 0019 GETMET R5 R5 K5 - 0x5C1C0800, // 001A MOVE R7 R4 - 0x7C140400, // 001B CALL R5 2 - 0x00100805, // 001C ADD R4 R4 R5 - 0x80040800, // 001D RET 1 R4 + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_config), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(next_ep), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(adjust_next_ep), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000A, // 0005 EXBLK 0 #0011 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x600C0009, // 0008 GETGBL R3 G9 + 0x5C100400, // 0009 MOVE R4 R2 + 0x7C0C0200, // 000A CALL R3 1 + 0x88100102, // 000B GETMBR R4 R0 K2 + 0x28100604, // 000C GE R4 R3 R4 + 0x78120001, // 000D JMPF R4 #0010 + 0x00100703, // 000E ADD R4 R3 K3 + 0x90020404, // 000F SETMBR R0 K2 R4 + 0x7001FFF4, // 0010 JMP #0006 + 0x58040004, // 0011 LDCONST R1 K4 + 0xAC040200, // 0012 CATCH R1 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x80000000, // 0014 RET 0 }) ) ); @@ -4043,51 +3000,20 @@ be_local_closure(Matter_Device_compute_manual_pairing_code, /* name */ /******************************************************************** -** Solidified function: start_basic_commissioning +** Solidified function: register_commands ********************************************************************/ -be_local_closure(Matter_Device_start_basic_commissioning, /* name */ +be_local_closure(Matter_Device_register_commands, /* name */ be_nested_proto( - 13, /* nstack */ - 8, /* argc */ + 5, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns_announce_PASE), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0000, // 0006 LDCONST R3 K0 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), + ( &(const struct bproto*[ 1]) { be_nested_proto( - 4, /* nstack */ - 0, /* argc */ + 10, /* nstack */ + 4, /* argc */ 0, /* varg */ 1, /* has upvals */ ( &(const bupvaldesc[ 1]) { /* upvals */ @@ -4096,89 +3022,39 @@ be_local_closure(Matter_Device_start_basic_commissioning, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns_announce_PASE), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(MtrJoin), }), - be_str_weak(_anonymous_), + be_str_weak(_X3Clambda_X3E), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0000, // 0006 LDCONST R3 K0 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 + ( &(const binstruction[ 8]) { /* code */ + 0x68100000, // 0000 GETUPV R4 U0 + 0x8C100900, // 0001 GETMET R4 R4 K0 + 0x5C180000, // 0002 MOVE R6 R0 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80040800, // 0007 RET 1 R4 }) ), }), 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(commissioning_iterations), - /* K4 */ be_nested_str_weak(commissioning_discriminator), - /* K5 */ be_nested_str_weak(commissioning_salt), - /* K6 */ be_nested_str_weak(commissioning_w0), - /* K7 */ be_nested_str_weak(commissioning_L), - /* K8 */ be_nested_str_weak(commissioning_admin_fabric), - /* K9 */ be_nested_str_weak(wifi), - /* K10 */ be_nested_str_weak(up), - /* K11 */ be_nested_str_weak(eth), - /* K12 */ be_nested_str_weak(mdns_announce_PASE), - /* K13 */ be_nested_str_weak(add_rule), - /* K14 */ be_nested_str_weak(Wifi_X23Connected), - /* K15 */ be_nested_str_weak(Eth_X23Connected), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(add_cmd), + /* K2 */ be_nested_str_weak(MtrJoin), }), - be_str_weak(start_basic_commissioning), + be_str_weak(register_commands), &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0xB8220200, // 0000 GETNGBL R8 K1 - 0x8C201102, // 0001 GETMET R8 R8 K2 - 0x7C200200, // 0002 CALL R8 1 - 0x542603E7, // 0003 LDINT R9 1000 - 0x08240209, // 0004 MUL R9 R1 R9 - 0x00201009, // 0005 ADD R8 R8 R9 - 0x90020008, // 0006 SETMBR R0 K0 R8 - 0x90020602, // 0007 SETMBR R0 K3 R2 - 0x90020803, // 0008 SETMBR R0 K4 R3 - 0x90020A04, // 0009 SETMBR R0 K5 R4 - 0x90020C05, // 000A SETMBR R0 K6 R5 - 0x90020E06, // 000B SETMBR R0 K7 R6 - 0x90021007, // 000C SETMBR R0 K8 R7 - 0xB8220200, // 000D GETNGBL R8 K1 - 0x8C201109, // 000E GETMET R8 R8 K9 - 0x7C200200, // 000F CALL R8 1 - 0x9420110A, // 0010 GETIDX R8 R8 K10 - 0x74220004, // 0011 JMPT R8 #0017 - 0xB8220200, // 0012 GETNGBL R8 K1 - 0x8C20110B, // 0013 GETMET R8 R8 K11 - 0x7C200200, // 0014 CALL R8 1 - 0x9420110A, // 0015 GETIDX R8 R8 K10 - 0x78220002, // 0016 JMPF R8 #001A - 0x8C20010C, // 0017 GETMET R8 R0 K12 - 0x7C200200, // 0018 CALL R8 1 - 0x7002000B, // 0019 JMP #0026 - 0xB8220200, // 001A GETNGBL R8 K1 - 0x8C20110D, // 001B GETMET R8 R8 K13 - 0x5828000E, // 001C LDCONST R10 K14 - 0x842C0000, // 001D CLOSURE R11 P0 - 0x5830000C, // 001E LDCONST R12 K12 - 0x7C200800, // 001F CALL R8 4 - 0xB8220200, // 0020 GETNGBL R8 K1 - 0x8C20110D, // 0021 GETMET R8 R8 K13 - 0x5828000F, // 0022 LDCONST R10 K15 - 0x842C0001, // 0023 CLOSURE R11 P1 - 0x5830000C, // 0024 LDCONST R12 K12 - 0x7C200800, // 0025 CALL R8 4 - 0xA0000000, // 0026 CLOSE R0 - 0x80000000, // 0027 RET 0 + ( &(const binstruction[ 7]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x580C0002, // 0002 LDCONST R3 K2 + 0x84100000, // 0003 CLOSURE R4 P0 + 0x7C040600, // 0004 CALL R1 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 }) ) ); @@ -4186,11 +3062,11 @@ be_local_closure(Matter_Device_start_basic_commissioning, /* name */ /******************************************************************** -** Solidified function: save_param +** Solidified function: autoconf_device_map ********************************************************************/ -be_local_closure(Matter_Device_save_param, /* name */ +be_local_closure(Matter_Device_autoconf_device_map, /* name */ be_nested_proto( - 10, /* nstack */ + 20, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4198,272 +3074,7 @@ be_local_closure(Matter_Device_save_param, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(update_remotes_info), - /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), - /* K3 */ be_nested_str_weak(root_discriminator), - /* K4 */ be_nested_str_weak(root_passcode), - /* K5 */ be_nested_str_weak(ipv4only), - /* K6 */ be_nested_str_weak(true), - /* K7 */ be_nested_str_weak(false), - /* K8 */ be_nested_str_weak(disable_bridge_mode), - /* K9 */ be_nested_str_weak(next_ep), - /* K10 */ be_nested_str_weak(plugins_persist), - /* K11 */ be_nested_str_weak(_X2C_X22config_X22_X3A), - /* K12 */ be_nested_str_weak(dump), - /* K13 */ be_nested_str_weak(plugins_config), - /* K14 */ be_nested_str_weak(plugins_config_remotes), - /* K15 */ be_const_int(0), - /* K16 */ be_nested_str_weak(_X2C_X22remotes_X22_X3A), - /* K17 */ be_nested_str_weak(_X7D), - /* K18 */ be_nested_str_weak(FILENAME), - /* K19 */ be_nested_str_weak(w), - /* K20 */ be_nested_str_weak(write), - /* K21 */ be_nested_str_weak(close), - /* K22 */ be_nested_str_weak(tasmota), - /* K23 */ be_nested_str_weak(log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), - /* K25 */ be_nested_str_weak(_X20and_X20configuration), - /* K26 */ be_nested_str_weak(), - /* K27 */ be_const_int(2), - /* K28 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), - /* K29 */ be_nested_str_weak(_X7C), - }), - be_str_weak(save_param), - &be_const_str_solidified, - ( &(const binstruction[82]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x60080018, // 0003 GETGBL R2 G24 - 0x580C0002, // 0004 LDCONST R3 K2 - 0x88100103, // 0005 GETMBR R4 R0 K3 - 0x88140104, // 0006 GETMBR R5 R0 K4 - 0x88180105, // 0007 GETMBR R6 R0 K5 - 0x781A0001, // 0008 JMPF R6 #000B - 0x58180006, // 0009 LDCONST R6 K6 - 0x70020000, // 000A JMP #000C - 0x58180007, // 000B LDCONST R6 K7 - 0x881C0108, // 000C GETMBR R7 R0 K8 - 0x781E0001, // 000D JMPF R7 #0010 - 0x581C0006, // 000E LDCONST R7 K6 - 0x70020000, // 000F JMP #0011 - 0x581C0007, // 0010 LDCONST R7 K7 - 0x88200109, // 0011 GETMBR R8 R0 K9 - 0x7C080C00, // 0012 CALL R2 6 - 0x880C010A, // 0013 GETMBR R3 R0 K10 - 0x780E000E, // 0014 JMPF R3 #0024 - 0x0008050B, // 0015 ADD R2 R2 K11 - 0x8C0C030C, // 0016 GETMET R3 R1 K12 - 0x8814010D, // 0017 GETMBR R5 R0 K13 - 0x7C0C0400, // 0018 CALL R3 2 - 0x00080403, // 0019 ADD R2 R2 R3 - 0x600C000C, // 001A GETGBL R3 G12 - 0x8810010E, // 001B GETMBR R4 R0 K14 - 0x7C0C0200, // 001C CALL R3 1 - 0x240C070F, // 001D GT R3 R3 K15 - 0x780E0004, // 001E JMPF R3 #0024 - 0x00080510, // 001F ADD R2 R2 K16 - 0x8C0C030C, // 0020 GETMET R3 R1 K12 - 0x8814010E, // 0021 GETMBR R5 R0 K14 - 0x7C0C0400, // 0022 CALL R3 2 - 0x00080403, // 0023 ADD R2 R2 R3 - 0x00080511, // 0024 ADD R2 R2 K17 - 0xA8020018, // 0025 EXBLK 0 #003F - 0x600C0011, // 0026 GETGBL R3 G17 - 0x88100112, // 0027 GETMBR R4 R0 K18 - 0x58140013, // 0028 LDCONST R5 K19 - 0x7C0C0400, // 0029 CALL R3 2 - 0x8C100714, // 002A GETMET R4 R3 K20 - 0x5C180400, // 002B MOVE R6 R2 - 0x7C100400, // 002C CALL R4 2 - 0x8C100715, // 002D GETMET R4 R3 K21 - 0x7C100200, // 002E CALL R4 1 - 0xB8122C00, // 002F GETNGBL R4 K22 - 0x8C100917, // 0030 GETMET R4 R4 K23 - 0x60180018, // 0031 GETGBL R6 G24 - 0x581C0018, // 0032 LDCONST R7 K24 - 0x8820010A, // 0033 GETMBR R8 R0 K10 - 0x78220001, // 0034 JMPF R8 #0037 - 0x58200019, // 0035 LDCONST R8 K25 - 0x70020000, // 0036 JMP #0038 - 0x5820001A, // 0037 LDCONST R8 K26 - 0x7C180400, // 0038 CALL R6 2 - 0x581C001B, // 0039 LDCONST R7 K27 - 0x7C100600, // 003A CALL R4 3 - 0xA8040001, // 003B EXBLK 1 1 - 0x80040400, // 003C RET 1 R2 - 0xA8040001, // 003D EXBLK 1 1 - 0x70020011, // 003E JMP #0051 - 0xAC0C0002, // 003F CATCH R3 0 2 - 0x7002000E, // 0040 JMP #0050 - 0xB8162C00, // 0041 GETNGBL R5 K22 - 0x8C140B17, // 0042 GETMET R5 R5 K23 - 0x601C0008, // 0043 GETGBL R7 G8 - 0x5C200600, // 0044 MOVE R8 R3 - 0x7C1C0200, // 0045 CALL R7 1 - 0x001E3807, // 0046 ADD R7 K28 R7 - 0x001C0F1D, // 0047 ADD R7 R7 K29 - 0x60200008, // 0048 GETGBL R8 G8 - 0x5C240800, // 0049 MOVE R9 R4 - 0x7C200200, // 004A CALL R8 1 - 0x001C0E08, // 004B ADD R7 R7 R8 - 0x5820001B, // 004C LDCONST R8 K27 - 0x7C140600, // 004D CALL R5 3 - 0x80040400, // 004E RET 1 R2 - 0x70020000, // 004F JMP #0051 - 0xB0080000, // 0050 RAISE 2 R0 R0 - 0x80000000, // 0051 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_op_discovery_all_fabrics -********************************************************************/ -be_local_closure(Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(active_fabrics), - /* K2 */ be_nested_str_weak(get_device_id), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(mdns_remove_op_discovery), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(mdns_remove_op_discovery_all_fabrics), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000B, // 0005 EXBLK 0 #0012 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x8C0C0502, // 0008 GETMET R3 R2 K2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x780E0005, // 000A JMPF R3 #0011 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0104, // 000E GETMET R3 R0 K4 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x7001FFF3, // 0011 JMP #0006 - 0x58040005, // 0012 LDCONST R1 K5 - 0xAC040200, // 0013 CATCH R1 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(Matter_Device_start, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 2, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_trigger_read_sensors), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0x80000000, // 0003 RET 0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(started), - /* K1 */ be_nested_str_weak(autoconf_device), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(add_cron), - /* K4 */ be_nested_str_weak(_X2A_X2F30_X20_X2A_X20_X2A_X20_X2A_X20_X2A_X20_X2A), - /* K5 */ be_nested_str_weak(matter_sensors_30s), - /* K6 */ be_nested_str_weak(_start_udp), - /* K7 */ be_nested_str_weak(UDP_PORT), - /* K8 */ be_nested_str_weak(start_mdns_announce_hostnames), - }), - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060000, // 0001 JMPF R1 #0003 - 0x80000200, // 0002 RET 0 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0xB8060400, // 0005 GETNGBL R1 K2 - 0x8C040303, // 0006 GETMET R1 R1 K3 - 0x580C0004, // 0007 LDCONST R3 K4 - 0x84100000, // 0008 CLOSURE R4 P0 - 0x58140005, // 0009 LDCONST R5 K5 - 0x7C040800, // 000A CALL R1 4 - 0x8C040106, // 000B GETMET R1 R0 K6 - 0x880C0107, // 000C GETMBR R3 R0 K7 - 0x7C040400, // 000D CALL R1 2 - 0x8C040108, // 000E GETMET R1 R0 K8 - 0x7C040200, // 000F CALL R1 1 - 0x50040200, // 0010 LDBOOL R1 1 0 - 0x90020001, // 0011 SETMBR R0 K0 R1 - 0xA0000000, // 0012 CLOSE R0 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_device_map -********************************************************************/ -be_local_closure(Matter_Device_autoconf_device_map, /* name */ - be_nested_proto( - 20, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[36]) { /* constants */ + ( &(const bvalue[36]) { /* constants */ /* K0 */ be_nested_str_weak(json), /* K1 */ be_const_int(1), /* K2 */ be_nested_str_weak(light), @@ -4710,11 +3321,1388 @@ be_local_closure(Matter_Device_autoconf_device_map, /* name */ /******************************************************************** -** Solidified function: msg_received +** Solidified function: _trigger_read_sensors +********************************************************************/ +be_local_closure(Matter_Device__trigger_read_sensors, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(read_sensors), + /* K3 */ be_nested_str_weak(load), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(plugins), + /* K6 */ be_nested_str_weak(parse_sensors), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), + /* K10 */ be_const_int(3), + }), + be_str_weak(_trigger_read_sensors), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xB80A0200, // 0001 GETNGBL R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x7C080200, // 0003 CALL R2 1 + 0x4C0C0000, // 0004 LDNIL R3 + 0x1C0C0403, // 0005 EQ R3 R2 R3 + 0x780E0000, // 0006 JMPF R3 #0008 + 0x80000600, // 0007 RET 0 + 0x8C0C0303, // 0008 GETMET R3 R1 K3 + 0x5C140400, // 0009 MOVE R5 R2 + 0x7C0C0400, // 000A CALL R3 2 + 0x4C100000, // 000B LDNIL R4 + 0x20100604, // 000C NE R4 R3 R4 + 0x7812000D, // 000D JMPF R4 #001C + 0x58100004, // 000E LDCONST R4 K4 + 0x6014000C, // 000F GETGBL R5 G12 + 0x88180105, // 0010 GETMBR R6 R0 K5 + 0x7C140200, // 0011 CALL R5 1 + 0x14140805, // 0012 LT R5 R4 R5 + 0x78160006, // 0013 JMPF R5 #001B + 0x88140105, // 0014 GETMBR R5 R0 K5 + 0x94140A04, // 0015 GETIDX R5 R5 R4 + 0x8C140B06, // 0016 GETMET R5 R5 K6 + 0x5C1C0600, // 0017 MOVE R7 R3 + 0x7C140400, // 0018 CALL R5 2 + 0x00100907, // 0019 ADD R4 R4 K7 + 0x7001FFF3, // 001A JMP #000F + 0x70020007, // 001B JMP #0024 + 0xB8120200, // 001C GETNGBL R4 K1 + 0x8C100908, // 001D GETMET R4 R4 K8 + 0x60180008, // 001E GETGBL R6 G8 + 0x5C1C0400, // 001F MOVE R7 R2 + 0x7C180200, // 0020 CALL R6 1 + 0x001A1206, // 0021 ADD R6 K9 R6 + 0x581C000A, // 0022 LDCONST R7 K10 + 0x7C100600, // 0023 CALL R4 3 + 0x80000000, // 0024 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_50ms +********************************************************************/ +be_local_closure(Matter_Device_every_50ms, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_const_int(1), + }), + be_str_weak(every_50ms), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x00040301, // 0001 ADD R1 R1 K1 + 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +be_local_closure(Matter_Device_every_second, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(every_second), + /* K2 */ be_nested_str_weak(message_handler), + /* K3 */ be_nested_str_weak(commissioning_open), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(time_reached), + }), + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C040301, // 0004 GETMET R1 R1 K1 + 0x7C040200, // 0005 CALL R1 1 + 0x88040103, // 0006 GETMBR R1 R0 K3 + 0x4C080000, // 0007 LDNIL R2 + 0x20040202, // 0008 NE R1 R1 R2 + 0x78060006, // 0009 JMPF R1 #0011 + 0xB8060800, // 000A GETNGBL R1 K4 + 0x8C040305, // 000B GETMET R1 R1 K5 + 0x880C0103, // 000C GETMBR R3 R0 K3 + 0x7C040400, // 000D CALL R1 2 + 0x78060001, // 000E JMPF R1 #0011 + 0x4C040000, // 000F LDNIL R1 + 0x90020601, // 0010 SETMBR R0 K3 R1 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_active_endpoints +********************************************************************/ +be_local_closure(Matter_Device_get_active_endpoints, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins), + /* K1 */ be_nested_str_weak(get_endpoint), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(find), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(get_active_endpoints), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x88100100, // 0003 GETMBR R4 R0 K0 + 0x7C0C0200, // 0004 CALL R3 1 + 0xA8020011, // 0005 EXBLK 0 #0018 + 0x5C100600, // 0006 MOVE R4 R3 + 0x7C100000, // 0007 CALL R4 0 + 0x8C140901, // 0008 GETMET R5 R4 K1 + 0x7C140200, // 0009 CALL R5 1 + 0x78060002, // 000A JMPF R1 #000E + 0x1C180B02, // 000B EQ R6 R5 K2 + 0x781A0000, // 000C JMPF R6 #000E + 0x7001FFF7, // 000D JMP #0006 + 0x8C180503, // 000E GETMET R6 R2 K3 + 0x5C200A00, // 000F MOVE R8 R5 + 0x7C180400, // 0010 CALL R6 2 + 0x4C1C0000, // 0011 LDNIL R7 + 0x1C180C07, // 0012 EQ R6 R6 R7 + 0x781A0002, // 0013 JMPF R6 #0017 + 0x8C180504, // 0014 GETMET R6 R2 K4 + 0x5C200A00, // 0015 MOVE R8 R5 + 0x7C180400, // 0016 CALL R6 2 + 0x7001FFED, // 0017 JMP #0006 + 0x580C0005, // 0018 LDCONST R3 K5 + 0xAC0C0200, // 0019 CATCH R3 1 0 + 0xB0080000, // 001A RAISE 2 R0 R0 + 0x80040400, // 001B RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _mdns_announce_hostname +********************************************************************/ +be_local_closure(Matter_Device__mdns_announce_hostname, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[26]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(start), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(eth), + /* K5 */ be_nested_str_weak(hostname_eth), + /* K6 */ be_nested_str_weak(replace), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_nested_str_weak(mac), + /* K9 */ be_nested_str_weak(_X3A), + /* K10 */ be_nested_str_weak(), + /* K11 */ be_nested_str_weak(ipv4only), + /* K12 */ be_nested_str_weak(add_hostname), + /* K13 */ be_nested_str_weak(ip6local), + /* K14 */ be_nested_str_weak(ip), + /* K15 */ be_nested_str_weak(ip6), + /* K16 */ be_nested_str_weak(log), + /* K17 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29), + /* K18 */ be_const_int(3), + /* K19 */ be_nested_str_weak(wifi), + /* K20 */ be_nested_str_weak(hostname_wifi), + /* K21 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27), + /* K22 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K23 */ be_nested_str_weak(_X7C), + /* K24 */ be_const_int(2), + /* K25 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics), + }), + be_str_weak(_mdns_announce_hostname), + &be_const_str_solidified, + ( &(const binstruction[140]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA40E0200, // 0001 IMPORT R3 K1 + 0x8C100502, // 0002 GETMET R4 R2 K2 + 0x7C100200, // 0003 CALL R4 1 + 0xA8020072, // 0004 EXBLK 0 #0078 + 0x78060030, // 0005 JMPF R1 #0037 + 0xB8120600, // 0006 GETNGBL R4 K3 + 0x8C100904, // 0007 GETMET R4 R4 K4 + 0x7C100200, // 0008 CALL R4 1 + 0x8C140706, // 0009 GETMET R5 R3 K6 + 0x8C1C0907, // 000A GETMET R7 R4 K7 + 0x58240008, // 000B LDCONST R9 K8 + 0x7C1C0400, // 000C CALL R7 2 + 0x58200009, // 000D LDCONST R8 K9 + 0x5824000A, // 000E LDCONST R9 K10 + 0x7C140800, // 000F CALL R5 4 + 0x90020A05, // 0010 SETMBR R0 K5 R5 + 0x8814010B, // 0011 GETMBR R5 R0 K11 + 0x7416000F, // 0012 JMPT R5 #0023 + 0x8C14050C, // 0013 GETMET R5 R2 K12 + 0x881C0105, // 0014 GETMBR R7 R0 K5 + 0x8C200907, // 0015 GETMET R8 R4 K7 + 0x5828000D, // 0016 LDCONST R10 K13 + 0x582C000A, // 0017 LDCONST R11 K10 + 0x7C200600, // 0018 CALL R8 3 + 0x8C240907, // 0019 GETMET R9 R4 K7 + 0x582C000E, // 001A LDCONST R11 K14 + 0x5830000A, // 001B LDCONST R12 K10 + 0x7C240600, // 001C CALL R9 3 + 0x8C280907, // 001D GETMET R10 R4 K7 + 0x5830000F, // 001E LDCONST R12 K15 + 0x5834000A, // 001F LDCONST R13 K10 + 0x7C280600, // 0020 CALL R10 3 + 0x7C140A00, // 0021 CALL R5 5 + 0x70020012, // 0022 JMP #0036 + 0xB8160600, // 0023 GETNGBL R5 K3 + 0x8C140B10, // 0024 GETMET R5 R5 K16 + 0x601C0018, // 0025 GETGBL R7 G24 + 0x58200011, // 0026 LDCONST R8 K17 + 0x88240105, // 0027 GETMBR R9 R0 K5 + 0x8C280907, // 0028 GETMET R10 R4 K7 + 0x5830000E, // 0029 LDCONST R12 K14 + 0x5834000A, // 002A LDCONST R13 K10 + 0x7C280600, // 002B CALL R10 3 + 0x7C1C0600, // 002C CALL R7 3 + 0x58200012, // 002D LDCONST R8 K18 + 0x7C140600, // 002E CALL R5 3 + 0x8C14050C, // 002F GETMET R5 R2 K12 + 0x881C0105, // 0030 GETMBR R7 R0 K5 + 0x8C200907, // 0031 GETMET R8 R4 K7 + 0x5828000E, // 0032 LDCONST R10 K14 + 0x582C000A, // 0033 LDCONST R11 K10 + 0x7C200600, // 0034 CALL R8 3 + 0x7C140600, // 0035 CALL R5 3 + 0x7002002F, // 0036 JMP #0067 + 0xB8120600, // 0037 GETNGBL R4 K3 + 0x8C100913, // 0038 GETMET R4 R4 K19 + 0x7C100200, // 0039 CALL R4 1 + 0x8C140706, // 003A GETMET R5 R3 K6 + 0x8C1C0907, // 003B GETMET R7 R4 K7 + 0x58240008, // 003C LDCONST R9 K8 + 0x7C1C0400, // 003D CALL R7 2 + 0x58200009, // 003E LDCONST R8 K9 + 0x5824000A, // 003F LDCONST R9 K10 + 0x7C140800, // 0040 CALL R5 4 + 0x90022805, // 0041 SETMBR R0 K20 R5 + 0x8814010B, // 0042 GETMBR R5 R0 K11 + 0x7416000F, // 0043 JMPT R5 #0054 + 0x8C14050C, // 0044 GETMET R5 R2 K12 + 0x881C0114, // 0045 GETMBR R7 R0 K20 + 0x8C200907, // 0046 GETMET R8 R4 K7 + 0x5828000D, // 0047 LDCONST R10 K13 + 0x582C000A, // 0048 LDCONST R11 K10 + 0x7C200600, // 0049 CALL R8 3 + 0x8C240907, // 004A GETMET R9 R4 K7 + 0x582C000E, // 004B LDCONST R11 K14 + 0x5830000A, // 004C LDCONST R12 K10 + 0x7C240600, // 004D CALL R9 3 + 0x8C280907, // 004E GETMET R10 R4 K7 + 0x5830000F, // 004F LDCONST R12 K15 + 0x5834000A, // 0050 LDCONST R13 K10 + 0x7C280600, // 0051 CALL R10 3 + 0x7C140A00, // 0052 CALL R5 5 + 0x70020012, // 0053 JMP #0067 + 0xB8160600, // 0054 GETNGBL R5 K3 + 0x8C140B10, // 0055 GETMET R5 R5 K16 + 0x601C0018, // 0056 GETGBL R7 G24 + 0x58200011, // 0057 LDCONST R8 K17 + 0x88240105, // 0058 GETMBR R9 R0 K5 + 0x8C280907, // 0059 GETMET R10 R4 K7 + 0x5830000E, // 005A LDCONST R12 K14 + 0x5834000A, // 005B LDCONST R13 K10 + 0x7C280600, // 005C CALL R10 3 + 0x7C1C0600, // 005D CALL R7 3 + 0x58200012, // 005E LDCONST R8 K18 + 0x7C140600, // 005F CALL R5 3 + 0x8C14050C, // 0060 GETMET R5 R2 K12 + 0x881C0114, // 0061 GETMBR R7 R0 K20 + 0x8C200907, // 0062 GETMET R8 R4 K7 + 0x5828000E, // 0063 LDCONST R10 K14 + 0x582C000A, // 0064 LDCONST R11 K10 + 0x7C200600, // 0065 CALL R8 3 + 0x7C140600, // 0066 CALL R5 3 + 0xB8120600, // 0067 GETNGBL R4 K3 + 0x8C100910, // 0068 GETMET R4 R4 K16 + 0x60180018, // 0069 GETGBL R6 G24 + 0x581C0015, // 006A LDCONST R7 K21 + 0x78060001, // 006B JMPF R1 #006E + 0x58200004, // 006C LDCONST R8 K4 + 0x70020000, // 006D JMP #006F + 0x58200013, // 006E LDCONST R8 K19 + 0x78060001, // 006F JMPF R1 #0072 + 0x88240105, // 0070 GETMBR R9 R0 K5 + 0x70020000, // 0071 JMP #0073 + 0x88240114, // 0072 GETMBR R9 R0 K20 + 0x7C180600, // 0073 CALL R6 3 + 0x581C0012, // 0074 LDCONST R7 K18 + 0x7C100600, // 0075 CALL R4 3 + 0xA8040001, // 0076 EXBLK 1 1 + 0x70020010, // 0077 JMP #0089 + 0xAC100002, // 0078 CATCH R4 0 2 + 0x7002000D, // 0079 JMP #0088 + 0xB81A0600, // 007A GETNGBL R6 K3 + 0x8C180D10, // 007B GETMET R6 R6 K16 + 0x60200008, // 007C GETGBL R8 G8 + 0x5C240800, // 007D MOVE R9 R4 + 0x7C200200, // 007E CALL R8 1 + 0x00222C08, // 007F ADD R8 K22 R8 + 0x00201117, // 0080 ADD R8 R8 K23 + 0x60240008, // 0081 GETGBL R9 G8 + 0x5C280A00, // 0082 MOVE R10 R5 + 0x7C240200, // 0083 CALL R9 1 + 0x00201009, // 0084 ADD R8 R8 R9 + 0x58240018, // 0085 LDCONST R9 K24 + 0x7C180600, // 0086 CALL R6 3 + 0x70020000, // 0087 JMP #0089 + 0xB0080000, // 0088 RAISE 2 R0 R0 + 0x8C100119, // 0089 GETMET R4 R0 K25 + 0x7C100200, // 008A CALL R4 1 + 0x80000000, // 008B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_plugin_class_displayname +********************************************************************/ +be_local_closure(Matter_Device_get_plugin_class_displayname, /* 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[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(NAME), + /* K3 */ be_nested_str_weak(), + }), + be_str_weak(get_plugin_class_displayname), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x880C0502, // 0005 GETMBR R3 R2 K2 + 0x70020000, // 0006 JMP #0008 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x80040600, // 0008 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_random_passcode +********************************************************************/ +be_local_closure(Matter_Device_generate_random_passcode, /* 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[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(random), + /* K2 */ be_nested_str_weak(get), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(134217727), + /* K5 */ be_const_int(99999998), + /* K6 */ be_nested_str_weak(PASSCODE_INVALID), + /* K7 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(generate_random_passcode), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x500C0200, // 0002 LDBOOL R3 1 0 + 0x780E001D, // 0003 JMPF R3 #0022 + 0x8C0C0301, // 0004 GETMET R3 R1 K1 + 0x54160003, // 0005 LDINT R5 4 + 0x7C0C0400, // 0006 CALL R3 2 + 0x8C0C0702, // 0007 GETMET R3 R3 K2 + 0x58140003, // 0008 LDCONST R5 K3 + 0x541A0003, // 0009 LDINT R6 4 + 0x7C0C0600, // 000A CALL R3 3 + 0x2C0C0704, // 000B AND R3 R3 K4 + 0x5C080600, // 000C MOVE R2 R3 + 0x240C0505, // 000D GT R3 R2 K5 + 0x780E0000, // 000E JMPF R3 #0010 + 0x7001FFF1, // 000F JMP #0002 + 0x600C0010, // 0010 GETGBL R3 G16 + 0x88100106, // 0011 GETMBR R4 R0 K6 + 0x7C0C0200, // 0012 CALL R3 1 + 0xA8020005, // 0013 EXBLK 0 #001A + 0x5C100600, // 0014 MOVE R4 R3 + 0x7C100000, // 0015 CALL R4 0 + 0x1C140404, // 0016 EQ R5 R2 R4 + 0x78160000, // 0017 JMPF R5 #0019 + 0x4C080000, // 0018 LDNIL R2 + 0x7001FFF9, // 0019 JMP #0014 + 0x580C0007, // 001A LDCONST R3 K7 + 0xAC0C0200, // 001B CATCH R3 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x4C0C0000, // 001D LDNIL R3 + 0x200C0403, // 001E NE R3 R2 R3 + 0x780E0000, // 001F JMPF R3 #0021 + 0x80040400, // 0020 RET 1 R2 + 0x7001FFDF, // 0021 JMP #0002 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_remotes_info +********************************************************************/ +be_local_closure(Matter_Device_update_remotes_info, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(http_remotes), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(get_info), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(stop_iteration), + /* K5 */ be_nested_str_weak(plugins_config_remotes), + }), + be_str_weak(update_remotes_info), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x60040013, // 0000 GETGBL R1 G19 + 0x7C040000, // 0001 CALL R1 0 + 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x4C0C0000, // 0003 LDNIL R3 + 0x20080403, // 0004 NE R2 R2 R3 + 0x780A0018, // 0005 JMPF R2 #001F + 0x60080010, // 0006 GETGBL R2 G16 + 0x880C0100, // 0007 GETMBR R3 R0 K0 + 0x8C0C0701, // 0008 GETMET R3 R3 K1 + 0x7C0C0200, // 0009 CALL R3 1 + 0x7C080200, // 000A CALL R2 1 + 0xA802000F, // 000B EXBLK 0 #001C + 0x5C0C0400, // 000C MOVE R3 R2 + 0x7C0C0000, // 000D CALL R3 0 + 0x88100100, // 000E GETMBR R4 R0 K0 + 0x94100803, // 000F GETIDX R4 R4 R3 + 0x8C100902, // 0010 GETMET R4 R4 K2 + 0x7C100200, // 0011 CALL R4 1 + 0x4C140000, // 0012 LDNIL R5 + 0x20140805, // 0013 NE R5 R4 R5 + 0x78160005, // 0014 JMPF R5 #001B + 0x6014000C, // 0015 GETGBL R5 G12 + 0x5C180800, // 0016 MOVE R6 R4 + 0x7C140200, // 0017 CALL R5 1 + 0x24140B03, // 0018 GT R5 R5 K3 + 0x78160000, // 0019 JMPF R5 #001B + 0x98040604, // 001A SETIDX R1 R3 R4 + 0x7001FFEF, // 001B JMP #000C + 0x58080004, // 001C LDCONST R2 K4 + 0xAC080200, // 001D CATCH R2 1 0 + 0xB0080000, // 001E RAISE 2 R0 R0 + 0x90020A01, // 001F SETMBR R0 K5 R1 + 0x80040200, // 0020 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: MtrJoin +********************************************************************/ +be_local_closure(Matter_Device_MtrJoin, /* name */ + be_nested_proto( + 8, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(start_root_basic_commissioning), + /* K1 */ be_nested_str_weak(stop_basic_commissioning), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(resp_cmnd_done), + }), + be_str_weak(MtrJoin), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x60140009, // 0000 GETGBL R5 G9 + 0x5C180600, // 0001 MOVE R6 R3 + 0x7C140200, // 0002 CALL R5 1 + 0x78160002, // 0003 JMPF R5 #0007 + 0x8C180100, // 0004 GETMET R6 R0 K0 + 0x7C180200, // 0005 CALL R6 1 + 0x70020001, // 0006 JMP #0009 + 0x8C180101, // 0007 GETMET R6 R0 K1 + 0x7C180200, // 0008 CALL R6 1 + 0xB81A0400, // 0009 GETNGBL R6 K2 + 0x8C180D03, // 000A GETMET R6 R6 K3 + 0x7C180200, // 000B CALL R6 1 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_root_basic_commissioning +********************************************************************/ +be_local_closure(Matter_Device_start_root_basic_commissioning, /* name */ + be_nested_proto( + 13, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(PASE_TIMEOUT), + /* K1 */ be_nested_str_weak(compute_manual_pairing_code), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), + /* K5 */ be_const_int(2), + /* K6 */ be_nested_str_weak(compute_qrcode_content), + /* K7 */ be_nested_str_weak(publish_result), + /* K8 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D), + /* K9 */ be_nested_str_weak(Matter), + /* K10 */ be_nested_str_weak(_compute_pbkdf), + /* K11 */ be_nested_str_weak(root_passcode), + /* K12 */ be_nested_str_weak(root_iterations), + /* K13 */ be_nested_str_weak(root_salt), + /* K14 */ be_nested_str_weak(start_basic_commissioning), + /* K15 */ be_nested_str_weak(root_discriminator), + /* K16 */ be_nested_str_weak(root_w0), + /* K17 */ be_nested_str_weak(root_L), + }), + be_str_weak(start_root_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x88040100, // 0003 GETMBR R1 R0 K0 + 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x7C080200, // 0005 CALL R2 1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x8C0C0703, // 0007 GETMET R3 R3 K3 + 0x60140018, // 0008 GETGBL R5 G24 + 0x58180004, // 0009 LDCONST R6 K4 + 0x5C1C0400, // 000A MOVE R7 R2 + 0x7C140400, // 000B CALL R5 2 + 0x58180005, // 000C LDCONST R6 K5 + 0x7C0C0600, // 000D CALL R3 3 + 0x8C0C0106, // 000E GETMET R3 R0 K6 + 0x7C0C0200, // 000F CALL R3 1 + 0xB8120400, // 0010 GETNGBL R4 K2 + 0x8C100907, // 0011 GETMET R4 R4 K7 + 0x60180018, // 0012 GETGBL R6 G24 + 0x581C0008, // 0013 LDCONST R7 K8 + 0x5C200400, // 0014 MOVE R8 R2 + 0x5C240600, // 0015 MOVE R9 R3 + 0x7C180600, // 0016 CALL R6 3 + 0x581C0009, // 0017 LDCONST R7 K9 + 0x7C100600, // 0018 CALL R4 3 + 0x8C10010A, // 0019 GETMET R4 R0 K10 + 0x8818010B, // 001A GETMBR R6 R0 K11 + 0x881C010C, // 001B GETMBR R7 R0 K12 + 0x8820010D, // 001C GETMBR R8 R0 K13 + 0x7C100800, // 001D CALL R4 4 + 0x8C10010E, // 001E GETMET R4 R0 K14 + 0x5C180200, // 001F MOVE R6 R1 + 0x881C010C, // 0020 GETMBR R7 R0 K12 + 0x8820010F, // 0021 GETMBR R8 R0 K15 + 0x8824010D, // 0022 GETMBR R9 R0 K13 + 0x88280110, // 0023 GETMBR R10 R0 K16 + 0x882C0111, // 0024 GETMBR R11 R0 K17 + 0x4C300000, // 0025 LDNIL R12 + 0x7C101000, // 0026 CALL R4 8 + 0x80000000, // 0027 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: bridge_remove_endpoint +********************************************************************/ +be_local_closure(Matter_Device_bridge_remove_endpoint, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(plugins_config), + /* K2 */ be_nested_str_weak(contains), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(log), + /* K5 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), + /* K6 */ be_const_int(3), + /* K7 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str_weak(remove), + /* K10 */ be_nested_str_weak(plugins_persist), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(plugins), + /* K13 */ be_nested_str_weak(get_endpoint), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(clean_remotes), + /* K16 */ be_nested_str_weak(save_param), + /* K17 */ be_nested_str_weak(signal_endpoints_changed), + }), + be_str_weak(bridge_remove_endpoint), + &be_const_str_solidified, + ( &(const binstruction[58]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x600C0008, // 0001 GETGBL R3 G8 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x4C100000, // 0004 LDNIL R4 + 0x4C140000, // 0005 LDNIL R5 + 0x88180101, // 0006 GETMBR R6 R0 K1 + 0x8C180D02, // 0007 GETMET R6 R6 K2 + 0x5C200600, // 0008 MOVE R8 R3 + 0x7C180400, // 0009 CALL R6 2 + 0x741A0005, // 000A JMPT R6 #0011 + 0xB81A0600, // 000B GETNGBL R6 K3 + 0x8C180D04, // 000C GETMET R6 R6 K4 + 0x00220A03, // 000D ADD R8 K5 R3 + 0x58240006, // 000E LDCONST R9 K6 + 0x7C180600, // 000F CALL R6 3 + 0x80000C00, // 0010 RET 0 + 0xB81A0600, // 0011 GETNGBL R6 K3 + 0x8C180D04, // 0012 GETMET R6 R6 K4 + 0x60200018, // 0013 GETGBL R8 G24 + 0x58240007, // 0014 LDCONST R9 K7 + 0x5C280200, // 0015 MOVE R10 R1 + 0x7C200400, // 0016 CALL R8 2 + 0x58240008, // 0017 LDCONST R9 K8 + 0x7C180600, // 0018 CALL R6 3 + 0x88180101, // 0019 GETMBR R6 R0 K1 + 0x8C180D09, // 001A GETMET R6 R6 K9 + 0x5C200600, // 001B MOVE R8 R3 + 0x7C180400, // 001C CALL R6 2 + 0x50180200, // 001D LDBOOL R6 1 0 + 0x90021406, // 001E SETMBR R0 K10 R6 + 0x5818000B, // 001F LDCONST R6 K11 + 0x601C000C, // 0020 GETGBL R7 G12 + 0x8820010C, // 0021 GETMBR R8 R0 K12 + 0x7C1C0200, // 0022 CALL R7 1 + 0x141C0C07, // 0023 LT R7 R6 R7 + 0x781E000D, // 0024 JMPF R7 #0033 + 0x881C010C, // 0025 GETMBR R7 R0 K12 + 0x941C0E06, // 0026 GETIDX R7 R7 R6 + 0x8C1C0F0D, // 0027 GETMET R7 R7 K13 + 0x7C1C0200, // 0028 CALL R7 1 + 0x1C1C0207, // 0029 EQ R7 R1 R7 + 0x781E0005, // 002A JMPF R7 #0031 + 0x881C010C, // 002B GETMBR R7 R0 K12 + 0x8C1C0F09, // 002C GETMET R7 R7 K9 + 0x5C240C00, // 002D MOVE R9 R6 + 0x7C1C0400, // 002E CALL R7 2 + 0x70020002, // 002F JMP #0033 + 0x70020000, // 0030 JMP #0032 + 0x00180D0E, // 0031 ADD R6 R6 K14 + 0x7001FFEC, // 0032 JMP #0020 + 0x8C1C010F, // 0033 GETMET R7 R0 K15 + 0x7C1C0200, // 0034 CALL R7 1 + 0x8C1C0110, // 0035 GETMET R7 R0 K16 + 0x7C1C0200, // 0036 CALL R7 1 + 0x8C1C0111, // 0037 GETMET R7 R0 K17 + 0x7C1C0200, // 0038 CALL R7 1 + 0x80000000, // 0039 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: conf_to_log +********************************************************************/ +be_local_closure(Matter_Device_conf_to_log, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(k2l), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(_X20_X25s_X3A_X25s), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(conf_to_log), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x58080001, // 0001 LDCONST R2 K1 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x8C100302, // 0003 GETMET R4 R1 K2 + 0x5C180000, // 0004 MOVE R6 R0 + 0x7C100400, // 0005 CALL R4 2 + 0x7C0C0200, // 0006 CALL R3 1 + 0xA802000B, // 0007 EXBLK 0 #0014 + 0x5C100600, // 0008 MOVE R4 R3 + 0x7C100000, // 0009 CALL R4 0 + 0x1C140903, // 000A EQ R5 R4 K3 + 0x78160000, // 000B JMPF R5 #000D + 0x7001FFFA, // 000C JMP #0008 + 0x60140018, // 000D GETGBL R5 G24 + 0x58180004, // 000E LDCONST R6 K4 + 0x5C1C0800, // 000F MOVE R7 R4 + 0x94200004, // 0010 GETIDX R8 R0 R4 + 0x7C140600, // 0011 CALL R5 3 + 0x00080405, // 0012 ADD R2 R2 R5 + 0x7001FFF3, // 0013 JMP #0008 + 0x580C0005, // 0014 LDCONST R3 K5 + 0xAC0C0200, // 0015 CATCH R3 1 0 + 0xB0080000, // 0016 RAISE 2 R0 R0 + 0x80040400, // 0017 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_remove_op_discovery_all_fabrics +********************************************************************/ +be_local_closure(Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(active_fabrics), + /* K2 */ be_nested_str_weak(get_device_id), + /* K3 */ be_nested_str_weak(get_fabric_id), + /* K4 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(mdns_remove_op_discovery_all_fabrics), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000B, // 0005 EXBLK 0 #0012 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x8C0C0502, // 0008 GETMET R3 R2 K2 + 0x7C0C0200, // 0009 CALL R3 1 + 0x780E0005, // 000A JMPF R3 #0011 + 0x8C0C0503, // 000B GETMET R3 R2 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x780E0002, // 000D JMPF R3 #0011 + 0x8C0C0104, // 000E GETMET R3 R0 K4 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x7001FFF3, // 0011 JMP #0006 + 0x58040005, // 0012 LDCONST R1 K5 + 0xAC040200, // 0013 CATCH R1 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _init_basic_commissioning +********************************************************************/ +be_local_closure(Matter_Device__init_basic_commissioning, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(count_active_fabrics), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(start_root_basic_commissioning), + }), + be_str_weak(_init_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x1C040302, // 0003 EQ R1 R1 K2 + 0x78060001, // 0004 JMPF R1 #0007 + 0x8C040103, // 0005 GETMET R1 R0 K3 + 0x7C040200, // 0006 CALL R1 1 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attribute_updated +********************************************************************/ +be_local_closure(Matter_Device_attribute_updated, /* name */ + be_nested_proto( + 10, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(Path), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_nested_str_weak(message_handler), + /* K6 */ be_nested_str_weak(im), + /* K7 */ be_nested_str_weak(subs_shop), + /* K8 */ be_nested_str_weak(attribute_updated_ctx), + }), + be_str_weak(attribute_updated), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x1C140805, // 0001 EQ R5 R4 R5 + 0x78160000, // 0002 JMPF R5 #0004 + 0x50100000, // 0003 LDBOOL R4 0 0 + 0xB8160000, // 0004 GETNGBL R5 K0 + 0x8C140B01, // 0005 GETMET R5 R5 K1 + 0x7C140200, // 0006 CALL R5 1 + 0x90160401, // 0007 SETMBR R5 K2 R1 + 0x90160602, // 0008 SETMBR R5 K3 R2 + 0x90160803, // 0009 SETMBR R5 K4 R3 + 0x88180105, // 000A GETMBR R6 R0 K5 + 0x88180D06, // 000B GETMBR R6 R6 K6 + 0x88180D07, // 000C GETMBR R6 R6 K7 + 0x8C180D08, // 000D GETMET R6 R6 K8 + 0x5C200A00, // 000E MOVE R8 R5 + 0x5C240800, // 000F MOVE R9 R4 + 0x7C180600, // 0010 CALL R6 3 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: register_plugin_class +********************************************************************/ +be_local_closure(Matter_Device_register_plugin_class, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(get), + /* K2 */ be_nested_str_weak(TYPE), + /* K3 */ be_nested_str_weak(plugins_classes), + }), + be_str_weak(register_plugin_class), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x780E0001, // 0005 JMPF R3 #0008 + 0x88100103, // 0006 GETMBR R4 R0 K3 + 0x98100601, // 0007 SETIDX R4 R3 R1 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: received_ack +********************************************************************/ +be_local_closure(Matter_Device_received_ack, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(received_ack), + }), + be_str_weak(received_ack), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: register_native_classes +********************************************************************/ +be_local_closure(Matter_Device_register_native_classes, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* 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(introspect), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(members), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_nested_str_weak(class), + /* K6 */ be_nested_str_weak(find), + /* K7 */ be_nested_str_weak(Plugin_), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(register_plugin_class), + /* K10 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(register_native_classes), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xA4120200, // 0001 IMPORT R4 K1 + 0x60140010, // 0002 GETGBL R5 G16 + 0x8C180702, // 0003 GETMET R6 R3 K2 + 0xB8220600, // 0004 GETNGBL R8 K3 + 0x7C180400, // 0005 CALL R6 2 + 0x7C140200, // 0006 CALL R5 1 + 0xA8020014, // 0007 EXBLK 0 #001D + 0x5C180A00, // 0008 MOVE R6 R5 + 0x7C180000, // 0009 CALL R6 0 + 0x8C1C0704, // 000A GETMET R7 R3 K4 + 0xB8260600, // 000B GETNGBL R9 K3 + 0x5C280C00, // 000C MOVE R10 R6 + 0x7C1C0600, // 000D CALL R7 3 + 0x60200004, // 000E GETGBL R8 G4 + 0x5C240E00, // 000F MOVE R9 R7 + 0x7C200200, // 0010 CALL R8 1 + 0x1C201105, // 0011 EQ R8 R8 K5 + 0x78220008, // 0012 JMPF R8 #001C + 0x8C200906, // 0013 GETMET R8 R4 K6 + 0x5C280C00, // 0014 MOVE R10 R6 + 0x582C0007, // 0015 LDCONST R11 K7 + 0x7C200600, // 0016 CALL R8 3 + 0x1C201108, // 0017 EQ R8 R8 K8 + 0x78220002, // 0018 JMPF R8 #001C + 0x8C200109, // 0019 GETMET R8 R0 K9 + 0x5C280E00, // 001A MOVE R10 R7 + 0x7C200400, // 001B CALL R8 2 + 0x7001FFEA, // 001C JMP #0008 + 0x5814000A, // 001D LDCONST R5 K10 + 0xAC140200, // 001E CATCH R5 1 0 + 0xB0080000, // 001F RAISE 2 R0 R0 + 0x80000000, // 0020 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(Matter_Device_start, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 2, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(_trigger_read_sensors), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0x80000000, // 0003 RET 0 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(started), + /* K1 */ be_nested_str_weak(autoconf_device), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(add_cron), + /* K4 */ be_nested_str_weak(_X2A_X2F30_X20_X2A_X20_X2A_X20_X2A_X20_X2A_X20_X2A), + /* K5 */ be_nested_str_weak(matter_sensors_30s), + /* K6 */ be_nested_str_weak(_start_udp), + /* K7 */ be_nested_str_weak(UDP_PORT), + /* K8 */ be_nested_str_weak(start_mdns_announce_hostnames), + }), + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060000, // 0001 JMPF R1 #0003 + 0x80000200, // 0002 RET 0 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0xB8060400, // 0005 GETNGBL R1 K2 + 0x8C040303, // 0006 GETMET R1 R1 K3 + 0x580C0004, // 0007 LDCONST R3 K4 + 0x84100000, // 0008 CLOSURE R4 P0 + 0x58140005, // 0009 LDCONST R5 K5 + 0x7C040800, // 000A CALL R1 4 + 0x8C040106, // 000B GETMET R1 R0 K6 + 0x880C0107, // 000C GETMBR R3 R0 K7 + 0x7C040400, // 000D CALL R1 2 + 0x8C040108, // 000E GETMET R1 R0 K8 + 0x7C040200, // 000F CALL R1 1 + 0x50040200, // 0010 LDBOOL R1 1 0 + 0x90020001, // 0011 SETMBR R0 K0 R1 + 0xA0000000, // 0012 CLOSE R0 + 0x80000000, // 0013 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_basic_commissioning ********************************************************************/ -be_local_closure(Matter_Device_msg_received, /* name */ +be_local_closure(Matter_Device_start_basic_commissioning, /* name */ be_nested_proto( - 9, /* nstack */ + 13, /* nstack */ + 8, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns_announce_PASE), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0000, // 0006 LDCONST R3 K0 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns_announce_PASE), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0000, // 0006 LDCONST R3 K0 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(commissioning_open), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(millis), + /* K3 */ be_nested_str_weak(commissioning_iterations), + /* K4 */ be_nested_str_weak(commissioning_discriminator), + /* K5 */ be_nested_str_weak(commissioning_salt), + /* K6 */ be_nested_str_weak(commissioning_w0), + /* K7 */ be_nested_str_weak(commissioning_L), + /* K8 */ be_nested_str_weak(commissioning_admin_fabric), + /* K9 */ be_nested_str_weak(wifi), + /* K10 */ be_nested_str_weak(up), + /* K11 */ be_nested_str_weak(eth), + /* K12 */ be_nested_str_weak(mdns_announce_PASE), + /* K13 */ be_nested_str_weak(add_rule), + /* K14 */ be_nested_str_weak(Wifi_X23Connected), + /* K15 */ be_nested_str_weak(Eth_X23Connected), + }), + be_str_weak(start_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0xB8220200, // 0000 GETNGBL R8 K1 + 0x8C201102, // 0001 GETMET R8 R8 K2 + 0x7C200200, // 0002 CALL R8 1 + 0x542603E7, // 0003 LDINT R9 1000 + 0x08240209, // 0004 MUL R9 R1 R9 + 0x00201009, // 0005 ADD R8 R8 R9 + 0x90020008, // 0006 SETMBR R0 K0 R8 + 0x90020602, // 0007 SETMBR R0 K3 R2 + 0x90020803, // 0008 SETMBR R0 K4 R3 + 0x90020A04, // 0009 SETMBR R0 K5 R4 + 0x90020C05, // 000A SETMBR R0 K6 R5 + 0x90020E06, // 000B SETMBR R0 K7 R6 + 0x90021007, // 000C SETMBR R0 K8 R7 + 0xB8220200, // 000D GETNGBL R8 K1 + 0x8C201109, // 000E GETMET R8 R8 K9 + 0x7C200200, // 000F CALL R8 1 + 0x9420110A, // 0010 GETIDX R8 R8 K10 + 0x74220004, // 0011 JMPT R8 #0017 + 0xB8220200, // 0012 GETNGBL R8 K1 + 0x8C20110B, // 0013 GETMET R8 R8 K11 + 0x7C200200, // 0014 CALL R8 1 + 0x9420110A, // 0015 GETIDX R8 R8 K10 + 0x78220002, // 0016 JMPF R8 #001A + 0x8C20010C, // 0017 GETMET R8 R0 K12 + 0x7C200200, // 0018 CALL R8 1 + 0x7002000B, // 0019 JMP #0026 + 0xB8220200, // 001A GETNGBL R8 K1 + 0x8C20110D, // 001B GETMET R8 R8 K13 + 0x5828000E, // 001C LDCONST R10 K14 + 0x842C0000, // 001D CLOSURE R11 P0 + 0x5830000C, // 001E LDCONST R12 K12 + 0x7C200800, // 001F CALL R8 4 + 0xB8220200, // 0020 GETNGBL R8 K1 + 0x8C20110D, // 0021 GETMET R8 R8 K13 + 0x5828000F, // 0022 LDCONST R10 K15 + 0x842C0001, // 0023 CLOSURE R11 P1 + 0x5830000C, // 0024 LDCONST R12 K12 + 0x7C200800, // 0025 CALL R8 4 + 0xA0000000, // 0026 CLOSE R0 + 0x80000000, // 0027 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: signal_endpoints_changed +********************************************************************/ +be_local_closure(Matter_Device_signal_endpoints_changed, /* 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[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), + /* K2 */ be_const_int(3), + }), + be_str_weak(signal_endpoints_changed), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x580C0001, // 0001 LDCONST R3 K1 + 0x5412001C, // 0002 LDINT R4 29 + 0x58140002, // 0003 LDCONST R5 K2 + 0x50180000, // 0004 LDBOOL R6 0 0 + 0x7C040A00, // 0005 CALL R1 5 + 0x8C040100, // 0006 GETMET R1 R0 K0 + 0x540EFEFF, // 0007 LDINT R3 65280 + 0x5412001C, // 0008 LDINT R4 29 + 0x58140002, // 0009 LDCONST R5 K2 + 0x50180000, // 000A LDBOOL R6 0 0 + 0x7C040A00, // 000B CALL R1 5 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _compute_pbkdf +********************************************************************/ +be_local_closure(Matter_Device__compute_pbkdf, /* name */ + be_nested_proto( + 13, /* nstack */ 4, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4722,20 +4710,61 @@ be_local_closure(Matter_Device_msg_received, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(msg_received), + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(add), + /* K2 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), + /* K3 */ be_nested_str_weak(derive), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(root_w0), + /* K6 */ be_nested_str_weak(EC_P256), + /* K7 */ be_nested_str_weak(mod), + /* K8 */ be_nested_str_weak(root_L), + /* K9 */ be_nested_str_weak(public_key), }), - be_str_weak(msg_received), + be_str_weak(_compute_pbkdf), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x5C180200, // 0002 MOVE R6 R1 - 0x5C1C0400, // 0003 MOVE R7 R2 - 0x5C200600, // 0004 MOVE R8 R3 - 0x7C100800, // 0005 CALL R4 4 - 0x80040800, // 0006 RET 1 R4 + ( &(const binstruction[40]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x60140015, // 0001 GETGBL R5 G21 + 0x7C140000, // 0002 CALL R5 0 + 0x8C140B01, // 0003 GETMET R5 R5 K1 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x54220003, // 0005 LDINT R8 4 + 0x7C140600, // 0006 CALL R5 3 + 0x8C180902, // 0007 GETMET R6 R4 K2 + 0x7C180200, // 0008 CALL R6 1 + 0x8C180D03, // 0009 GETMET R6 R6 K3 + 0x5C200A00, // 000A MOVE R8 R5 + 0x5C240600, // 000B MOVE R9 R3 + 0x5C280400, // 000C MOVE R10 R2 + 0x542E004F, // 000D LDINT R11 80 + 0x7C180A00, // 000E CALL R6 5 + 0x541E0026, // 000F LDINT R7 39 + 0x401E0807, // 0010 CONNECT R7 K4 R7 + 0x941C0C07, // 0011 GETIDX R7 R6 R7 + 0x54220027, // 0012 LDINT R8 40 + 0x5426004E, // 0013 LDINT R9 79 + 0x40201009, // 0014 CONNECT R8 R8 R9 + 0x94200C08, // 0015 GETIDX R8 R6 R8 + 0x8C240906, // 0016 GETMET R9 R4 K6 + 0x7C240200, // 0017 CALL R9 1 + 0x8C241307, // 0018 GETMET R9 R9 K7 + 0x5C2C0E00, // 0019 MOVE R11 R7 + 0x7C240400, // 001A CALL R9 2 + 0x90020A09, // 001B SETMBR R0 K5 R9 + 0x8C240906, // 001C GETMET R9 R4 K6 + 0x7C240200, // 001D CALL R9 1 + 0x8C241307, // 001E GETMET R9 R9 K7 + 0x5C2C1000, // 001F MOVE R11 R8 + 0x7C240400, // 0020 CALL R9 2 + 0x8C280906, // 0021 GETMET R10 R4 K6 + 0x7C280200, // 0022 CALL R10 1 + 0x8C281509, // 0023 GETMET R10 R10 K9 + 0x5C301200, // 0024 MOVE R12 R9 + 0x7C280400, // 0025 CALL R10 2 + 0x9002100A, // 0026 SETMBR R0 K8 R10 + 0x80000000, // 0027 RET 0 }) ) ); @@ -5044,114 +5073,135 @@ be_local_closure(Matter_Device_mdns_announce_PASE, /* name */ /******************************************************************** -** Solidified function: bridge_add_endpoint +** Solidified function: save_param ********************************************************************/ -be_local_closure(Matter_Device_bridge_add_endpoint, /* name */ +be_local_closure(Matter_Device_save_param, /* name */ be_nested_proto( - 17, /* nstack */ - 3, /* argc */ + 10, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), - /* K5 */ be_nested_str_weak(_X27_X20skipping), - /* K6 */ be_const_int(3), - /* K7 */ be_nested_str_weak(next_ep), - /* K8 */ be_nested_str_weak(plugins), - /* K9 */ be_nested_str_weak(push), - /* K10 */ be_nested_str_weak(type), - /* K11 */ be_nested_str_weak(keys), - /* K12 */ be_nested_str_weak(stop_iteration), - /* K13 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), - /* K14 */ be_nested_str_weak(conf_to_log), - /* K15 */ be_const_int(2), - /* K16 */ be_nested_str_weak(plugins_config), - /* K17 */ be_nested_str_weak(plugins_persist), - /* K18 */ be_const_int(1), - /* K19 */ be_nested_str_weak(save_param), - /* K20 */ be_nested_str_weak(signal_endpoints_changed), + ( &(const bvalue[30]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(update_remotes_info), + /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), + /* K3 */ be_nested_str_weak(root_discriminator), + /* K4 */ be_nested_str_weak(root_passcode), + /* K5 */ be_nested_str_weak(ipv4only), + /* K6 */ be_nested_str_weak(true), + /* K7 */ be_nested_str_weak(false), + /* K8 */ be_nested_str_weak(disable_bridge_mode), + /* K9 */ be_nested_str_weak(next_ep), + /* K10 */ be_nested_str_weak(plugins_persist), + /* K11 */ be_nested_str_weak(_X2C_X22config_X22_X3A), + /* K12 */ be_nested_str_weak(dump), + /* K13 */ be_nested_str_weak(plugins_config), + /* K14 */ be_nested_str_weak(plugins_config_remotes), + /* K15 */ be_const_int(0), + /* K16 */ be_nested_str_weak(_X2C_X22remotes_X22_X3A), + /* K17 */ be_nested_str_weak(_X7D), + /* K18 */ be_nested_str_weak(FILENAME), + /* K19 */ be_nested_str_weak(w), + /* K20 */ be_nested_str_weak(write), + /* K21 */ be_nested_str_weak(close), + /* K22 */ be_nested_str_weak(tasmota), + /* K23 */ be_nested_str_weak(log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), + /* K25 */ be_nested_str_weak(_X20and_X20configuration), + /* K26 */ be_nested_str_weak(), + /* K27 */ be_const_int(2), + /* K28 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), + /* K29 */ be_nested_str_weak(_X7C), }), - be_str_weak(bridge_add_endpoint), + be_str_weak(save_param), &be_const_str_solidified, - ( &(const binstruction[70]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100604, // 0005 EQ R4 R3 R4 - 0x78120009, // 0006 JMPF R4 #0011 - 0xB8120400, // 0007 GETNGBL R4 K2 - 0x8C100903, // 0008 GETMET R4 R4 K3 - 0x60180008, // 0009 GETGBL R6 G8 - 0x5C1C0200, // 000A MOVE R7 R1 - 0x7C180200, // 000B CALL R6 1 - 0x001A0806, // 000C ADD R6 K4 R6 - 0x00180D05, // 000D ADD R6 R6 K5 + ( &(const binstruction[82]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x60080018, // 0003 GETGBL R2 G24 + 0x580C0002, // 0004 LDCONST R3 K2 + 0x88100103, // 0005 GETMBR R4 R0 K3 + 0x88140104, // 0006 GETMBR R5 R0 K4 + 0x88180105, // 0007 GETMBR R6 R0 K5 + 0x781A0001, // 0008 JMPF R6 #000B + 0x58180006, // 0009 LDCONST R6 K6 + 0x70020000, // 000A JMP #000C + 0x58180007, // 000B LDCONST R6 K7 + 0x881C0108, // 000C GETMBR R7 R0 K8 + 0x781E0001, // 000D JMPF R7 #0010 0x581C0006, // 000E LDCONST R7 K6 - 0x7C100600, // 000F CALL R4 3 - 0x80000800, // 0010 RET 0 - 0x88100107, // 0011 GETMBR R4 R0 K7 - 0x60140008, // 0012 GETGBL R5 G8 - 0x5C180800, // 0013 MOVE R6 R4 - 0x7C140200, // 0014 CALL R5 1 - 0x5C180600, // 0015 MOVE R6 R3 - 0x5C1C0000, // 0016 MOVE R7 R0 - 0x5C200800, // 0017 MOVE R8 R4 - 0x5C240400, // 0018 MOVE R9 R2 - 0x7C180600, // 0019 CALL R6 3 - 0x881C0108, // 001A GETMBR R7 R0 K8 - 0x8C1C0F09, // 001B GETMET R7 R7 K9 - 0x5C240C00, // 001C MOVE R9 R6 - 0x7C1C0400, // 001D CALL R7 2 - 0x601C0013, // 001E GETGBL R7 G19 - 0x7C1C0000, // 001F CALL R7 0 - 0x981E1401, // 0020 SETIDX R7 K10 R1 - 0x60200010, // 0021 GETGBL R8 G16 - 0x8C24050B, // 0022 GETMET R9 R2 K11 - 0x7C240200, // 0023 CALL R9 1 - 0x7C200200, // 0024 CALL R8 1 - 0xA8020004, // 0025 EXBLK 0 #002B - 0x5C241000, // 0026 MOVE R9 R8 - 0x7C240000, // 0027 CALL R9 0 - 0x94280409, // 0028 GETIDX R10 R2 R9 - 0x981C120A, // 0029 SETIDX R7 R9 R10 - 0x7001FFFA, // 002A JMP #0026 - 0x5820000C, // 002B LDCONST R8 K12 - 0xAC200200, // 002C CATCH R8 1 0 - 0xB0080000, // 002D RAISE 2 R0 R0 - 0xB8220400, // 002E GETNGBL R8 K2 - 0x8C201103, // 002F GETMET R8 R8 K3 - 0x60280018, // 0030 GETGBL R10 G24 - 0x582C000D, // 0031 LDCONST R11 K13 - 0x5C300800, // 0032 MOVE R12 R4 - 0x5C340200, // 0033 MOVE R13 R1 - 0x8C38010E, // 0034 GETMET R14 R0 K14 - 0x5C400400, // 0035 MOVE R16 R2 - 0x7C380400, // 0036 CALL R14 2 - 0x7C280800, // 0037 CALL R10 4 - 0x582C000F, // 0038 LDCONST R11 K15 - 0x7C200600, // 0039 CALL R8 3 - 0x88200110, // 003A GETMBR R8 R0 K16 - 0x98200A07, // 003B SETIDX R8 R5 R7 - 0x50200200, // 003C LDBOOL R8 1 0 - 0x90022208, // 003D SETMBR R0 K17 R8 - 0x88200107, // 003E GETMBR R8 R0 K7 - 0x00201112, // 003F ADD R8 R8 K18 - 0x90020E08, // 0040 SETMBR R0 K7 R8 - 0x8C200113, // 0041 GETMET R8 R0 K19 - 0x7C200200, // 0042 CALL R8 1 - 0x8C200114, // 0043 GETMET R8 R0 K20 - 0x7C200200, // 0044 CALL R8 1 - 0x80040800, // 0045 RET 1 R4 + 0x70020000, // 000F JMP #0011 + 0x581C0007, // 0010 LDCONST R7 K7 + 0x88200109, // 0011 GETMBR R8 R0 K9 + 0x7C080C00, // 0012 CALL R2 6 + 0x880C010A, // 0013 GETMBR R3 R0 K10 + 0x780E000E, // 0014 JMPF R3 #0024 + 0x0008050B, // 0015 ADD R2 R2 K11 + 0x8C0C030C, // 0016 GETMET R3 R1 K12 + 0x8814010D, // 0017 GETMBR R5 R0 K13 + 0x7C0C0400, // 0018 CALL R3 2 + 0x00080403, // 0019 ADD R2 R2 R3 + 0x600C000C, // 001A GETGBL R3 G12 + 0x8810010E, // 001B GETMBR R4 R0 K14 + 0x7C0C0200, // 001C CALL R3 1 + 0x240C070F, // 001D GT R3 R3 K15 + 0x780E0004, // 001E JMPF R3 #0024 + 0x00080510, // 001F ADD R2 R2 K16 + 0x8C0C030C, // 0020 GETMET R3 R1 K12 + 0x8814010E, // 0021 GETMBR R5 R0 K14 + 0x7C0C0400, // 0022 CALL R3 2 + 0x00080403, // 0023 ADD R2 R2 R3 + 0x00080511, // 0024 ADD R2 R2 K17 + 0xA8020018, // 0025 EXBLK 0 #003F + 0x600C0011, // 0026 GETGBL R3 G17 + 0x88100112, // 0027 GETMBR R4 R0 K18 + 0x58140013, // 0028 LDCONST R5 K19 + 0x7C0C0400, // 0029 CALL R3 2 + 0x8C100714, // 002A GETMET R4 R3 K20 + 0x5C180400, // 002B MOVE R6 R2 + 0x7C100400, // 002C CALL R4 2 + 0x8C100715, // 002D GETMET R4 R3 K21 + 0x7C100200, // 002E CALL R4 1 + 0xB8122C00, // 002F GETNGBL R4 K22 + 0x8C100917, // 0030 GETMET R4 R4 K23 + 0x60180018, // 0031 GETGBL R6 G24 + 0x581C0018, // 0032 LDCONST R7 K24 + 0x8820010A, // 0033 GETMBR R8 R0 K10 + 0x78220001, // 0034 JMPF R8 #0037 + 0x58200019, // 0035 LDCONST R8 K25 + 0x70020000, // 0036 JMP #0038 + 0x5820001A, // 0037 LDCONST R8 K26 + 0x7C180400, // 0038 CALL R6 2 + 0x581C001B, // 0039 LDCONST R7 K27 + 0x7C100600, // 003A CALL R4 3 + 0xA8040001, // 003B EXBLK 1 1 + 0x80040400, // 003C RET 1 R2 + 0xA8040001, // 003D EXBLK 1 1 + 0x70020011, // 003E JMP #0051 + 0xAC0C0002, // 003F CATCH R3 0 2 + 0x7002000E, // 0040 JMP #0050 + 0xB8162C00, // 0041 GETNGBL R5 K22 + 0x8C140B17, // 0042 GETMET R5 R5 K23 + 0x601C0008, // 0043 GETGBL R7 G8 + 0x5C200600, // 0044 MOVE R8 R3 + 0x7C1C0200, // 0045 CALL R7 1 + 0x001E3807, // 0046 ADD R7 K28 R7 + 0x001C0F1D, // 0047 ADD R7 R7 K29 + 0x60200008, // 0048 GETGBL R8 G8 + 0x5C240800, // 0049 MOVE R9 R4 + 0x7C200200, // 004A CALL R8 1 + 0x001C0E08, // 004B ADD R7 R7 R8 + 0x5820001B, // 004C LDCONST R8 K27 + 0x7C140600, // 004D CALL R5 3 + 0x80040400, // 004E RET 1 R2 + 0x70020000, // 004F JMP #0051 + 0xB0080000, // 0050 RAISE 2 R0 R0 + 0x80000000, // 0051 RET 0 }) ) ); @@ -5291,36 +5341,81 @@ be_local_closure(Matter_Device_start_mdns_announce_hostnames, /* name */ /******************************************************************** -** Solidified function: get_plugin_class_arg +** Solidified function: k2l_num ********************************************************************/ -be_local_closure(Matter_Device_get_plugin_class_arg, /* name */ +be_local_closure(Matter_Device_k2l_num, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ + 9, /* nstack */ + 1, /* argc */ + 4, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_nested_str_weak(), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_const_int(1), + /* K5 */ be_const_int(0), }), - be_str_weak(get_plugin_class_arg), + be_str_weak(k2l_num), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C0502, // 0005 GETMBR R3 R2 K2 - 0x70020000, // 0006 JMP #0008 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x80040600, // 0008 RET 1 R3 + ( &(const binstruction[52]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0003, // 0004 EQ R3 R0 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80040400, // 0006 RET 1 R2 + 0x600C0010, // 0007 GETGBL R3 G16 + 0x8C100101, // 0008 GETMET R4 R0 K1 + 0x7C100200, // 0009 CALL R4 1 + 0x7C0C0200, // 000A CALL R3 1 + 0xA8020007, // 000B EXBLK 0 #0014 + 0x5C100600, // 000C MOVE R4 R3 + 0x7C100000, // 000D CALL R4 0 + 0x8C140502, // 000E GETMET R5 R2 K2 + 0x601C0009, // 000F GETGBL R7 G9 + 0x5C200800, // 0010 MOVE R8 R4 + 0x7C1C0200, // 0011 CALL R7 1 + 0x7C140400, // 0012 CALL R5 2 + 0x7001FFF7, // 0013 JMP #000C + 0x580C0003, // 0014 LDCONST R3 K3 + 0xAC0C0200, // 0015 CATCH R3 1 0 + 0xB0080000, // 0016 RAISE 2 R0 R0 + 0x600C0010, // 0017 GETGBL R3 G16 + 0x6010000C, // 0018 GETGBL R4 G12 + 0x5C140400, // 0019 MOVE R5 R2 + 0x7C100200, // 001A CALL R4 1 + 0x04100904, // 001B SUB R4 R4 K4 + 0x40120804, // 001C CONNECT R4 K4 R4 + 0x7C0C0200, // 001D CALL R3 1 + 0xA8020010, // 001E EXBLK 0 #0030 + 0x5C100600, // 001F MOVE R4 R3 + 0x7C100000, // 0020 CALL R4 0 + 0x94140404, // 0021 GETIDX R5 R2 R4 + 0x5C180800, // 0022 MOVE R6 R4 + 0x241C0D05, // 0023 GT R7 R6 K5 + 0x781E0008, // 0024 JMPF R7 #002E + 0x041C0D04, // 0025 SUB R7 R6 K4 + 0x941C0407, // 0026 GETIDX R7 R2 R7 + 0x241C0E05, // 0027 GT R7 R7 R5 + 0x781E0004, // 0028 JMPF R7 #002E + 0x041C0D04, // 0029 SUB R7 R6 K4 + 0x941C0407, // 002A GETIDX R7 R2 R7 + 0x98080C07, // 002B SETIDX R2 R6 R7 + 0x04180D04, // 002C SUB R6 R6 K4 + 0x7001FFF4, // 002D JMP #0023 + 0x98080C05, // 002E SETIDX R2 R6 R5 + 0x7001FFEE, // 002F JMP #001F + 0x580C0003, // 0030 LDCONST R3 K3 + 0xAC0C0200, // 0031 CATCH R3 1 0 + 0xB0080000, // 0032 RAISE 2 R0 R0 + 0x80040400, // 0033 RET 1 R2 }) ) ); @@ -5366,218 +5461,41 @@ be_local_closure(Matter_Device_autoconf_device, /* name */ 0x880C0101, // 0002 GETMBR R3 R0 K1 0x7C080200, // 0003 CALL R2 1 0x24080502, // 0004 GT R2 R2 K2 - 0x780A0000, // 0005 JMPF R2 #0007 - 0x80000400, // 0006 RET 0 - 0x88080103, // 0007 GETMBR R2 R0 K3 - 0x740A000F, // 0008 JMPT R2 #0019 - 0x8C080105, // 0009 GETMET R2 R0 K5 - 0x7C080200, // 000A CALL R2 1 - 0x90020802, // 000B SETMBR R0 K4 R2 - 0x60080013, // 000C GETGBL R2 G19 - 0x7C080000, // 000D CALL R2 0 - 0x90020C02, // 000E SETMBR R0 K6 R2 - 0x8C080107, // 000F GETMET R2 R0 K7 - 0x7C080200, // 0010 CALL R2 1 - 0xB80A1000, // 0011 GETNGBL R2 K8 - 0x8C080509, // 0012 GETMET R2 R2 K9 - 0x60100008, // 0013 GETGBL R4 G8 - 0x88140104, // 0014 GETMBR R5 R0 K4 - 0x7C100200, // 0015 CALL R4 1 - 0x00121404, // 0016 ADD R4 K10 R4 - 0x5814000B, // 0017 LDCONST R5 K11 - 0x7C080600, // 0018 CALL R2 3 - 0x8C08010C, // 0019 GETMET R2 R0 K12 - 0x88100104, // 001A GETMBR R4 R0 K4 - 0x7C080400, // 001B CALL R2 2 - 0x88080103, // 001C GETMBR R2 R0 K3 - 0x740A0008, // 001D JMPT R2 #0027 - 0x8808010D, // 001E GETMBR R2 R0 K13 - 0x8C08050E, // 001F GETMET R2 R2 K14 - 0x7C080200, // 0020 CALL R2 1 - 0x24080502, // 0021 GT R2 R2 K2 - 0x780A0003, // 0022 JMPF R2 #0027 - 0x50080200, // 0023 LDBOOL R2 1 0 - 0x90020602, // 0024 SETMBR R0 K3 R2 - 0x8C08010F, // 0025 GETMET R2 R0 K15 - 0x7C080200, // 0026 CALL R2 1 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrJoin -********************************************************************/ -be_local_closure(Matter_Device_MtrJoin, /* name */ - be_nested_proto( - 8, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(start_root_basic_commissioning), - /* K1 */ be_nested_str_weak(stop_basic_commissioning), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(resp_cmnd_done), - }), - be_str_weak(MtrJoin), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x60140009, // 0000 GETGBL R5 G9 - 0x5C180600, // 0001 MOVE R6 R3 - 0x7C140200, // 0002 CALL R5 1 - 0x78160002, // 0003 JMPF R5 #0007 - 0x8C180100, // 0004 GETMET R6 R0 K0 - 0x7C180200, // 0005 CALL R6 1 - 0x70020001, // 0006 JMP #0009 - 0x8C180101, // 0007 GETMET R6 R0 K1 - 0x7C180200, // 0008 CALL R6 1 - 0xB81A0400, // 0009 GETNGBL R6 K2 - 0x8C180D03, // 000A GETMET R6 R6 K3 - 0x7C180200, // 000B CALL R6 1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _compute_pbkdf -********************************************************************/ -be_local_closure(Matter_Device__compute_pbkdf, /* name */ - be_nested_proto( - 13, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), - /* K3 */ be_nested_str_weak(derive), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(root_w0), - /* K6 */ be_nested_str_weak(EC_P256), - /* K7 */ be_nested_str_weak(mod), - /* K8 */ be_nested_str_weak(root_L), - /* K9 */ be_nested_str_weak(public_key), - }), - be_str_weak(_compute_pbkdf), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x60140015, // 0001 GETGBL R5 G21 - 0x7C140000, // 0002 CALL R5 0 - 0x8C140B01, // 0003 GETMET R5 R5 K1 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x54220003, // 0005 LDINT R8 4 - 0x7C140600, // 0006 CALL R5 3 - 0x8C180902, // 0007 GETMET R6 R4 K2 - 0x7C180200, // 0008 CALL R6 1 - 0x8C180D03, // 0009 GETMET R6 R6 K3 - 0x5C200A00, // 000A MOVE R8 R5 - 0x5C240600, // 000B MOVE R9 R3 - 0x5C280400, // 000C MOVE R10 R2 - 0x542E004F, // 000D LDINT R11 80 - 0x7C180A00, // 000E CALL R6 5 - 0x541E0026, // 000F LDINT R7 39 - 0x401E0807, // 0010 CONNECT R7 K4 R7 - 0x941C0C07, // 0011 GETIDX R7 R6 R7 - 0x54220027, // 0012 LDINT R8 40 - 0x5426004E, // 0013 LDINT R9 79 - 0x40201009, // 0014 CONNECT R8 R8 R9 - 0x94200C08, // 0015 GETIDX R8 R6 R8 - 0x8C240906, // 0016 GETMET R9 R4 K6 - 0x7C240200, // 0017 CALL R9 1 - 0x8C241307, // 0018 GETMET R9 R9 K7 - 0x5C2C0E00, // 0019 MOVE R11 R7 - 0x7C240400, // 001A CALL R9 2 - 0x90020A09, // 001B SETMBR R0 K5 R9 - 0x8C240906, // 001C GETMET R9 R4 K6 - 0x7C240200, // 001D CALL R9 1 - 0x8C241307, // 001E GETMET R9 R9 K7 - 0x5C2C1000, // 001F MOVE R11 R8 - 0x7C240400, // 0020 CALL R9 2 - 0x8C280906, // 0021 GETMET R10 R4 K6 - 0x7C280200, // 0022 CALL R10 1 - 0x8C281509, // 0023 GETMET R10 R10 K9 - 0x5C301200, // 0024 MOVE R12 R9 - 0x7C280400, // 0025 CALL R10 2 - 0x9002100A, // 0026 SETMBR R0 K8 R10 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_commands -********************************************************************/ -be_local_closure(Matter_Device_register_commands, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(MtrJoin), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x68100000, // 0000 GETUPV R4 U0 - 0x8C100900, // 0001 GETMET R4 R4 K0 - 0x5C180000, // 0002 MOVE R6 R0 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80040800, // 0007 RET 1 R4 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(add_cmd), - /* K2 */ be_nested_str_weak(MtrJoin), - }), - be_str_weak(register_commands), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x580C0002, // 0002 LDCONST R3 K2 - 0x84100000, // 0003 CLOSURE R4 P0 - 0x7C040600, // 0004 CALL R1 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x80000400, // 0006 RET 0 + 0x88080103, // 0007 GETMBR R2 R0 K3 + 0x740A000F, // 0008 JMPT R2 #0019 + 0x8C080105, // 0009 GETMET R2 R0 K5 + 0x7C080200, // 000A CALL R2 1 + 0x90020802, // 000B SETMBR R0 K4 R2 + 0x60080013, // 000C GETGBL R2 G19 + 0x7C080000, // 000D CALL R2 0 + 0x90020C02, // 000E SETMBR R0 K6 R2 + 0x8C080107, // 000F GETMET R2 R0 K7 + 0x7C080200, // 0010 CALL R2 1 + 0xB80A1000, // 0011 GETNGBL R2 K8 + 0x8C080509, // 0012 GETMET R2 R2 K9 + 0x60100008, // 0013 GETGBL R4 G8 + 0x88140104, // 0014 GETMBR R5 R0 K4 + 0x7C100200, // 0015 CALL R4 1 + 0x00121404, // 0016 ADD R4 K10 R4 + 0x5814000B, // 0017 LDCONST R5 K11 + 0x7C080600, // 0018 CALL R2 3 + 0x8C08010C, // 0019 GETMET R2 R0 K12 + 0x88100104, // 001A GETMBR R4 R0 K4 + 0x7C080400, // 001B CALL R2 2 + 0x88080103, // 001C GETMBR R2 R0 K3 + 0x740A0008, // 001D JMPT R2 #0027 + 0x8808010D, // 001E GETMBR R2 R0 K13 + 0x8C08050E, // 001F GETMET R2 R2 K14 + 0x7C080200, // 0020 CALL R2 1 + 0x24080502, // 0021 GT R2 R2 K2 + 0x780A0003, // 0022 JMPF R2 #0027 + 0x50080200, // 0023 LDBOOL R2 1 0 + 0x90020602, // 0024 SETMBR R0 K3 R2 + 0x8C08010F, // 0025 GETMET R2 R0 K15 + 0x7C080200, // 0026 CALL R2 1 + 0x80000000, // 0027 RET 0 }) ) ); @@ -5684,20 +5602,188 @@ be_local_closure(Matter_Device_remove_fabric, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: autoconf_sensors_list +********************************************************************/ +be_local_closure(Matter_Device_autoconf_sensors_list, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(k2l), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(Temperature), + /* K3 */ be_nested_str_weak(_X23Temperature), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(type), + /* K6 */ be_nested_str_weak(temperature), + /* K7 */ be_nested_str_weak(filter), + /* K8 */ be_nested_str_weak(stop_iteration), + /* K9 */ be_nested_str_weak(Pressure), + /* K10 */ be_nested_str_weak(_X23Pressure), + /* K11 */ be_nested_str_weak(pressure), + /* K12 */ be_nested_str_weak(Illuminance), + /* K13 */ be_nested_str_weak(_X23Illuminance), + /* K14 */ be_nested_str_weak(illuminance), + /* K15 */ be_nested_str_weak(Humidity), + /* K16 */ be_nested_str_weak(_X23Humidity), + /* K17 */ be_nested_str_weak(humidity), + }), + be_str_weak(autoconf_sensors_list), + &be_const_str_solidified, + ( &(const binstruction[119]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x8C100100, // 0003 GETMET R4 R0 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x7C100400, // 0005 CALL R4 2 + 0x7C0C0200, // 0006 CALL R3 1 + 0xA8020013, // 0007 EXBLK 0 #001C + 0x5C100600, // 0008 MOVE R4 R3 + 0x7C100000, // 0009 CALL R4 0 + 0x94140204, // 000A GETIDX R5 R1 R4 + 0x6018000F, // 000B GETGBL R6 G15 + 0x5C1C0A00, // 000C MOVE R7 R5 + 0x60200013, // 000D GETGBL R8 G19 + 0x7C180400, // 000E CALL R6 2 + 0x781A000A, // 000F JMPF R6 #001B + 0x8C180B01, // 0010 GETMET R6 R5 K1 + 0x58200002, // 0011 LDCONST R8 K2 + 0x7C180400, // 0012 CALL R6 2 + 0x781A0006, // 0013 JMPF R6 #001B + 0x00180903, // 0014 ADD R6 R4 K3 + 0x8C1C0504, // 0015 GETMET R7 R2 K4 + 0x60240013, // 0016 GETGBL R9 G19 + 0x7C240000, // 0017 CALL R9 0 + 0x98260B06, // 0018 SETIDX R9 K5 K6 + 0x98260E06, // 0019 SETIDX R9 K7 R6 + 0x7C1C0400, // 001A CALL R7 2 + 0x7001FFEB, // 001B JMP #0008 + 0x580C0008, // 001C LDCONST R3 K8 + 0xAC0C0200, // 001D CATCH R3 1 0 + 0xB0080000, // 001E RAISE 2 R0 R0 + 0x600C0010, // 001F GETGBL R3 G16 + 0x8C100100, // 0020 GETMET R4 R0 K0 + 0x5C180200, // 0021 MOVE R6 R1 + 0x7C100400, // 0022 CALL R4 2 + 0x7C0C0200, // 0023 CALL R3 1 + 0xA8020013, // 0024 EXBLK 0 #0039 + 0x5C100600, // 0025 MOVE R4 R3 + 0x7C100000, // 0026 CALL R4 0 + 0x94140204, // 0027 GETIDX R5 R1 R4 + 0x6018000F, // 0028 GETGBL R6 G15 + 0x5C1C0A00, // 0029 MOVE R7 R5 + 0x60200013, // 002A GETGBL R8 G19 + 0x7C180400, // 002B CALL R6 2 + 0x781A000A, // 002C JMPF R6 #0038 + 0x8C180B01, // 002D GETMET R6 R5 K1 + 0x58200009, // 002E LDCONST R8 K9 + 0x7C180400, // 002F CALL R6 2 + 0x781A0006, // 0030 JMPF R6 #0038 + 0x0018090A, // 0031 ADD R6 R4 K10 + 0x8C1C0504, // 0032 GETMET R7 R2 K4 + 0x60240013, // 0033 GETGBL R9 G19 + 0x7C240000, // 0034 CALL R9 0 + 0x98260B0B, // 0035 SETIDX R9 K5 K11 + 0x98260E06, // 0036 SETIDX R9 K7 R6 + 0x7C1C0400, // 0037 CALL R7 2 + 0x7001FFEB, // 0038 JMP #0025 + 0x580C0008, // 0039 LDCONST R3 K8 + 0xAC0C0200, // 003A CATCH R3 1 0 + 0xB0080000, // 003B RAISE 2 R0 R0 + 0x600C0010, // 003C GETGBL R3 G16 + 0x8C100100, // 003D GETMET R4 R0 K0 + 0x5C180200, // 003E MOVE R6 R1 + 0x7C100400, // 003F CALL R4 2 + 0x7C0C0200, // 0040 CALL R3 1 + 0xA8020013, // 0041 EXBLK 0 #0056 + 0x5C100600, // 0042 MOVE R4 R3 + 0x7C100000, // 0043 CALL R4 0 + 0x94140204, // 0044 GETIDX R5 R1 R4 + 0x6018000F, // 0045 GETGBL R6 G15 + 0x5C1C0A00, // 0046 MOVE R7 R5 + 0x60200013, // 0047 GETGBL R8 G19 + 0x7C180400, // 0048 CALL R6 2 + 0x781A000A, // 0049 JMPF R6 #0055 + 0x8C180B01, // 004A GETMET R6 R5 K1 + 0x5820000C, // 004B LDCONST R8 K12 + 0x7C180400, // 004C CALL R6 2 + 0x781A0006, // 004D JMPF R6 #0055 + 0x0018090D, // 004E ADD R6 R4 K13 + 0x8C1C0504, // 004F GETMET R7 R2 K4 + 0x60240013, // 0050 GETGBL R9 G19 + 0x7C240000, // 0051 CALL R9 0 + 0x98260B0E, // 0052 SETIDX R9 K5 K14 + 0x98260E06, // 0053 SETIDX R9 K7 R6 + 0x7C1C0400, // 0054 CALL R7 2 + 0x7001FFEB, // 0055 JMP #0042 + 0x580C0008, // 0056 LDCONST R3 K8 + 0xAC0C0200, // 0057 CATCH R3 1 0 + 0xB0080000, // 0058 RAISE 2 R0 R0 + 0x600C0010, // 0059 GETGBL R3 G16 + 0x8C100100, // 005A GETMET R4 R0 K0 + 0x5C180200, // 005B MOVE R6 R1 + 0x7C100400, // 005C CALL R4 2 + 0x7C0C0200, // 005D CALL R3 1 + 0xA8020013, // 005E EXBLK 0 #0073 + 0x5C100600, // 005F MOVE R4 R3 + 0x7C100000, // 0060 CALL R4 0 + 0x94140204, // 0061 GETIDX R5 R1 R4 + 0x6018000F, // 0062 GETGBL R6 G15 + 0x5C1C0A00, // 0063 MOVE R7 R5 + 0x60200013, // 0064 GETGBL R8 G19 + 0x7C180400, // 0065 CALL R6 2 + 0x781A000A, // 0066 JMPF R6 #0072 + 0x8C180B01, // 0067 GETMET R6 R5 K1 + 0x5820000F, // 0068 LDCONST R8 K15 + 0x7C180400, // 0069 CALL R6 2 + 0x781A0006, // 006A JMPF R6 #0072 + 0x00180910, // 006B ADD R6 R4 K16 + 0x8C1C0504, // 006C GETMET R7 R2 K4 + 0x60240013, // 006D GETGBL R9 G19 + 0x7C240000, // 006E CALL R9 0 + 0x98260B11, // 006F SETIDX R9 K5 K17 + 0x98260E06, // 0070 SETIDX R9 K7 R6 + 0x7C1C0400, // 0071 CALL R7 2 + 0x7001FFEB, // 0072 JMP #005F + 0x580C0008, // 0073 LDCONST R3 K8 + 0xAC0C0200, // 0074 CATCH R3 1 0 + 0xB0080000, // 0075 RAISE 2 R0 R0 + 0x80040400, // 0076 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Device ********************************************************************/ be_local_class(Matter_Device, 37, NULL, - be_nested_map(109, + be_nested_map(110, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(plugins_classes, 34), be_const_var(3) }, - { be_const_key_weak(commissioning_L, -1), be_const_var(17) }, - { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(Matter_Device_autoconf_sensors_list_closure) }, - { be_const_key_weak(_start_udp, 47), be_const_closure(Matter_Device__start_udp_closure) }, - { be_const_key_weak(start_operational_discovery, 46), be_const_closure(Matter_Device_start_operational_discovery_closure) }, - { be_const_key_weak(sessions, -1), be_const_var(9) }, + { be_const_key_weak(clean_remotes, -1), be_const_closure(Matter_Device_clean_remotes_closure) }, + { be_const_key_weak(plugins, 84), be_const_var(1) }, + { be_const_key_weak(autoconf_sensors_list, 41), be_const_closure(Matter_Device_autoconf_sensors_list_closure) }, + { be_const_key_weak(tick, -1), be_const_var(11) }, + { be_const_key_weak(process_attribute_read_solo, -1), be_const_closure(Matter_Device_process_attribute_read_solo_closure) }, + { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(26) }, + { be_const_key_weak(PASE_TIMEOUT, -1), be_const_int(600) }, + { be_const_key_weak(commissioning_iterations, -1), be_const_var(13) }, + { be_const_key_weak(root_passcode, -1), be_const_var(29) }, + { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) }, + { be_const_key_weak(mdns_remove_PASE, -1), be_const_closure(Matter_Device_mdns_remove_PASE_closure) }, + { be_const_key_weak(bridge_add_endpoint, -1), be_const_closure(Matter_Device_bridge_add_endpoint_closure) }, + { be_const_key_weak(root_discriminator, 35), be_const_var(28) }, { be_const_key_weak(PASSCODE_INVALID, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(12, ( (struct bvalue*) &(const bvalue[]) { @@ -5714,108 +5800,102 @@ be_local_class(Matter_Device, be_const_int(12345678), be_const_int(87654321), })) ) } )) }, - { be_const_key_weak(is_commissioning_open, 41), be_const_closure(Matter_Device_is_commissioning_open_closure) }, - { be_const_key_weak(hostname_wifi, -1), be_const_var(21) }, - { be_const_key_weak(plugins_config_remotes, 106), be_const_var(5) }, - { be_const_key_weak(load_param, 92), be_const_closure(Matter_Device_load_param_closure) }, - { be_const_key_weak(profiler, -1), be_const_var(7) }, - { be_const_key_weak(tick, 36), be_const_var(11) }, - { be_const_key_weak(root_w0, -1), be_const_var(35) }, - { be_const_key_weak(every_second, -1), be_const_closure(Matter_Device_every_second_closure) }, - { be_const_key_weak(ui, -1), be_const_var(10) }, - { be_const_key_weak(received_ack, -1), be_const_closure(Matter_Device_received_ack_closure) }, + { be_const_key_weak(stop_basic_commissioning, 90), be_const_closure(Matter_Device_stop_basic_commissioning_closure) }, + { be_const_key_weak(start_commissioning_complete, -1), be_const_closure(Matter_Device_start_commissioning_complete_closure) }, + { be_const_key_weak(root_iterations, -1), be_const_var(33) }, + { be_const_key_weak(get_plugin_remote_info, 94), be_const_closure(Matter_Device_get_plugin_remote_info_closure) }, + { be_const_key_weak(sessions, -1), be_const_var(9) }, + { be_const_key_weak(commissioning_L, -1), be_const_var(17) }, + { be_const_key_weak(commissioning_admin_fabric, 82), be_const_var(18) }, + { be_const_key_weak(commissioning_instance_eth, -1), be_const_var(20) }, + { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(Matter_Device_start_operational_discovery_deferred_closure) }, + { be_const_key_weak(process_attribute_expansion, -1), be_const_closure(Matter_Device_process_attribute_expansion_closure) }, + { be_const_key_weak(hostname_eth, 63), be_const_var(22) }, + { be_const_key_weak(autoconf_device, 78), be_const_closure(Matter_Device_autoconf_device_closure) }, + { be_const_key_weak(next_ep, -1), be_const_var(32) }, + { be_const_key_weak(stop, 92), be_const_closure(Matter_Device_stop_closure) }, + { be_const_key_weak(msg_received, 36), be_const_closure(Matter_Device_msg_received_closure) }, { be_const_key_weak(k2l, -1), be_const_static_closure(Matter_Device_k2l_closure) }, + { be_const_key_weak(register_http_remote, 11), be_const_closure(Matter_Device_register_http_remote_closure) }, + { be_const_key_weak(get_plugin_class_arg, 106), be_const_closure(Matter_Device_get_plugin_class_arg_closure) }, + { be_const_key_weak(FILENAME, 91), be_nested_str_weak(_matter_device_X2Ejson) }, + { be_const_key_weak(compute_manual_pairing_code, 104), be_const_closure(Matter_Device_compute_manual_pairing_code_closure) }, + { be_const_key_weak(is_commissioning_open, -1), be_const_closure(Matter_Device_is_commissioning_open_closure) }, + { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(Matter_Device_event_fabrics_saved_closure) }, + { be_const_key_weak(root_L, 48), be_const_var(36) }, + { be_const_key_weak(compute_qrcode_content, 22), be_const_closure(Matter_Device_compute_qrcode_content_closure) }, + { be_const_key_weak(plugins_config_remotes, -1), be_const_var(5) }, + { be_const_key_weak(commissioning_open, 25), be_const_var(12) }, + { be_const_key_weak(every_250ms, 83), be_const_closure(Matter_Device_every_250ms_closure) }, + { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(Matter_Device_start_mdns_announce_hostnames_closure) }, + { be_const_key_weak(sort_distinct, 29), be_const_static_closure(Matter_Device_sort_distinct_closure) }, + { be_const_key_weak(save_param, -1), be_const_closure(Matter_Device_save_param_closure) }, + { be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(Matter_Device_find_plugin_by_endpoint_closure) }, + { be_const_key_weak(_compute_pbkdf, 64), be_const_closure(Matter_Device__compute_pbkdf_closure) }, + { be_const_key_weak(started, -1), be_const_var(0) }, + { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(Matter_Device_signal_endpoints_changed_closure) }, + { be_const_key_weak(start_basic_commissioning, -1), be_const_closure(Matter_Device_start_basic_commissioning_closure) }, + { be_const_key_weak(start, -1), be_const_closure(Matter_Device_start_closure) }, + { be_const_key_weak(udp_server, -1), be_const_var(6) }, { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) }, - { be_const_key_weak(_mdns_announce_hostname, -1), be_const_closure(Matter_Device__mdns_announce_hostname_closure) }, - { be_const_key_weak(register_commands, 61), be_const_closure(Matter_Device_register_commands_closure) }, - { be_const_key_weak(register_http_remote, -1), be_const_closure(Matter_Device_register_http_remote_closure) }, - { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(Matter_Device_start_operational_discovery_deferred_closure) }, - { be_const_key_weak(PASE_TIMEOUT, 57), be_const_int(600) }, - { be_const_key_weak(get_active_endpoints, -1), be_const_closure(Matter_Device_get_active_endpoints_closure) }, - { be_const_key_weak(_instantiate_plugins_from_config, -1), be_const_closure(Matter_Device__instantiate_plugins_from_config_closure) }, - { be_const_key_weak(mdns_pase_eth, -1), be_const_var(25) }, - { be_const_key_weak(MtrJoin, -1), be_const_closure(Matter_Device_MtrJoin_closure) }, - { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(Matter_Device__trigger_read_sensors_closure) }, - { be_const_key_weak(http_remotes, 27), be_const_var(27) }, - { be_const_key_weak(start_commissioning_complete, -1), be_const_closure(Matter_Device_start_commissioning_complete_closure) }, - { be_const_key_weak(root_passcode, 73), be_const_var(29) }, - { be_const_key_weak(every_250ms, 104), be_const_closure(Matter_Device_every_250ms_closure) }, - { be_const_key_weak(autoconf_device, 54), be_const_closure(Matter_Device_autoconf_device_closure) }, - { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(Matter_Device_get_plugin_class_arg_closure) }, - { be_const_key_weak(start_mdns_announce_hostnames, 43), be_const_closure(Matter_Device_start_mdns_announce_hostnames_closure) }, - { be_const_key_weak(stop, -1), be_const_closure(Matter_Device_stop_closure) }, - { be_const_key_weak(sort_distinct, 69), be_const_static_closure(Matter_Device_sort_distinct_closure) }, + { be_const_key_weak(commissioning_w0, 100), be_const_var(16) }, + { be_const_key_weak(commissioning_salt, 99), be_const_var(15) }, + { be_const_key_weak(PRODUCT_ID, 44), be_const_int(32768) }, + { be_const_key_weak(mdns_pase_eth, 96), be_const_var(25) }, + { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(19) }, + { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) }, + { be_const_key_weak(_start_udp, 57), be_const_closure(Matter_Device__start_udp_closure) }, + { be_const_key_weak(load_param, -1), be_const_closure(Matter_Device_load_param_closure) }, { be_const_key_weak(register_native_classes, -1), be_const_closure(Matter_Device_register_native_classes_closure) }, - { be_const_key_weak(productid, -1), be_const_var(24) }, - { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_closure) }, - { be_const_key_weak(started, 108), be_const_var(0) }, - { be_const_key_weak(get_plugin_remote_info, -1), be_const_closure(Matter_Device_get_plugin_remote_info_closure) }, - { be_const_key_weak(commissioning_w0, -1), be_const_var(16) }, - { be_const_key_weak(bridge_add_endpoint, -1), be_const_closure(Matter_Device_bridge_add_endpoint_closure) }, - { be_const_key_weak(PRODUCT_ID, -1), be_const_int(32768) }, - { be_const_key_weak(hostname_eth, -1), be_const_var(22) }, - { be_const_key_weak(mdns_announce_PASE, 19), be_const_closure(Matter_Device_mdns_announce_PASE_closure) }, - { be_const_key_weak(PBKDF_ITERATIONS, 38), be_const_int(1000) }, - { be_const_key_weak(bridge_remove_endpoint, 20), be_const_closure(Matter_Device_bridge_remove_endpoint_closure) }, - { be_const_key_weak(commissioning_salt, 100), be_const_var(15) }, - { be_const_key_weak(find_plugin_by_endpoint, 96), be_const_closure(Matter_Device_find_plugin_by_endpoint_closure) }, - { be_const_key_weak(root_discriminator, -1), be_const_var(28) }, - { be_const_key_weak(every_50ms, 48), be_const_closure(Matter_Device_every_50ms_closure) }, + { be_const_key_weak(register_commands, -1), be_const_closure(Matter_Device_register_commands_closure) }, { be_const_key_weak(autoconf_device_map, -1), be_const_closure(Matter_Device_autoconf_device_map_closure) }, - { be_const_key_weak(start_commissioning_complete_deferred, -1), be_const_closure(Matter_Device_start_commissioning_complete_deferred_closure) }, - { be_const_key_weak(msg_send, 85), be_const_closure(Matter_Device_msg_send_closure) }, - { be_const_key_weak(clean_remotes, -1), be_const_closure(Matter_Device_clean_remotes_closure) }, - { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) }, - { be_const_key_weak(init, 35), be_const_closure(Matter_Device_init_closure) }, - { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) }, - { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, 75), be_const_closure(Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(stop_basic_commissioning, -1), be_const_closure(Matter_Device_stop_basic_commissioning_closure) }, - { be_const_key_weak(get_plugin_class_displayname, -1), be_const_closure(Matter_Device_get_plugin_class_displayname_closure) }, - { be_const_key_weak(vendorid, 39), be_const_var(23) }, - { be_const_key_weak(generate_random_passcode, -1), be_const_closure(Matter_Device_generate_random_passcode_closure) }, - { be_const_key_weak(save_before_restart, 91), be_const_closure(Matter_Device_save_before_restart_closure) }, - { be_const_key_weak(save_param, -1), be_const_closure(Matter_Device_save_param_closure) }, - { be_const_key_weak(_init_basic_commissioning, 88), be_const_closure(Matter_Device__init_basic_commissioning_closure) }, - { be_const_key_weak(commissioning_iterations, 28), be_const_var(13) }, - { be_const_key_weak(process_attribute_expansion, 60), be_const_closure(Matter_Device_process_attribute_expansion_closure) }, + { be_const_key_weak(received_ack, -1), be_const_closure(Matter_Device_received_ack_closure) }, + { be_const_key_weak(disable_bridge_mode, -1), be_const_var(31) }, + { be_const_key_weak(start_commissioning_complete_deferred, 93), be_const_closure(Matter_Device_start_commissioning_complete_deferred_closure) }, + { be_const_key_weak(plugins_config, -1), be_const_var(4) }, + { be_const_key_weak(get_active_endpoints, -1), be_const_closure(Matter_Device_get_active_endpoints_closure) }, + { be_const_key_weak(_mdns_announce_hostname, -1), be_const_closure(Matter_Device__mdns_announce_hostname_closure) }, { be_const_key_weak(register_plugin_class, -1), be_const_closure(Matter_Device_register_plugin_class_closure) }, - { be_const_key_weak(next_ep, -1), be_const_var(32) }, + { be_const_key_weak(plugins_persist, -1), be_const_var(2) }, + { be_const_key_weak(generate_random_passcode, 49), be_const_closure(Matter_Device_generate_random_passcode_closure) }, + { be_const_key_weak(profiler, 21), be_const_var(7) }, + { be_const_key_weak(attribute_updated, -1), be_const_closure(Matter_Device_attribute_updated_closure) }, + { be_const_key_weak(MtrJoin, 3), be_const_closure(Matter_Device_MtrJoin_closure) }, + { be_const_key_weak(init, 79), be_const_closure(Matter_Device_init_closure) }, + { be_const_key_weak(get_plugin_class_displayname, 70), be_const_closure(Matter_Device_get_plugin_class_displayname_closure) }, + { be_const_key_weak(bridge_remove_endpoint, 60), be_const_closure(Matter_Device_bridge_remove_endpoint_closure) }, + { be_const_key_weak(message_handler, -1), be_const_var(8) }, { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(Matter_Device_start_root_basic_commissioning_closure) }, - { be_const_key_weak(k2l_num, 83), be_const_static_closure(Matter_Device_k2l_num_closure) }, - { be_const_key_weak(compute_manual_pairing_code, -1), be_const_closure(Matter_Device_compute_manual_pairing_code_closure) }, - { be_const_key_weak(udp_server, 33), be_const_var(6) }, - { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(Matter_Device_event_fabrics_saved_closure) }, - { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(mdns_remove_PASE, -1), be_const_closure(Matter_Device_mdns_remove_PASE_closure) }, - { be_const_key_weak(compute_qrcode_content, 81), be_const_closure(Matter_Device_compute_qrcode_content_closure) }, - { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(26) }, - { be_const_key_weak(start_basic_commissioning, -1), be_const_closure(Matter_Device_start_basic_commissioning_closure) }, { be_const_key_weak(ipv4only, -1), be_const_var(30) }, - { be_const_key_weak(invoke_request, 67), be_const_closure(Matter_Device_invoke_request_closure) }, - { be_const_key_weak(root_iterations, -1), be_const_var(33) }, - { be_const_key_weak(start, -1), be_const_closure(Matter_Device_start_closure) }, - { be_const_key_weak(commissioning_open, -1), be_const_var(12) }, - { be_const_key_weak(disable_bridge_mode, 95), be_const_var(31) }, - { be_const_key_weak(adjust_next_ep, 52), be_const_closure(Matter_Device_adjust_next_ep_closure) }, - { be_const_key_weak(msg_received, -1), be_const_closure(Matter_Device_msg_received_closure) }, - { be_const_key_weak(mdns_remove_op_discovery, 101), be_const_closure(Matter_Device_mdns_remove_op_discovery_closure) }, - { be_const_key_weak(update_remotes_info, -1), be_const_closure(Matter_Device_update_remotes_info_closure) }, - { be_const_key_weak(conf_to_log, 44), be_const_static_closure(Matter_Device_conf_to_log_closure) }, - { be_const_key_weak(message_handler, -1), be_const_var(8) }, - { be_const_key_weak(plugins, -1), be_const_var(1) }, - { be_const_key_weak(root_salt, 99), be_const_var(34) }, - { be_const_key_weak(plugins_persist, -1), be_const_var(2) }, - { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(18) }, + { be_const_key_weak(productid, -1), be_const_var(24) }, + { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) }, + { be_const_key_weak(conf_to_log, 33), be_const_static_closure(Matter_Device_conf_to_log_closure) }, + { be_const_key_weak(_instantiate_plugins_from_config, -1), be_const_closure(Matter_Device__instantiate_plugins_from_config_closure) }, + { be_const_key_weak(root_w0, 73), be_const_var(35) }, + { be_const_key_weak(hostname_wifi, -1), be_const_var(21) }, + { be_const_key_weak(invoke_request, 69), be_const_closure(Matter_Device_invoke_request_closure) }, + { be_const_key_weak(every_50ms, 66), be_const_closure(Matter_Device_every_50ms_closure) }, + { be_const_key_weak(_init_basic_commissioning, 45), be_const_closure(Matter_Device__init_basic_commissioning_closure) }, + { be_const_key_weak(adjust_next_ep, -1), be_const_closure(Matter_Device_adjust_next_ep_closure) }, + { be_const_key_weak(root_salt, -1), be_const_var(34) }, + { be_const_key_weak(ui, 108), be_const_var(10) }, + { be_const_key_weak(every_second, -1), be_const_closure(Matter_Device_every_second_closure) }, + { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(Matter_Device__trigger_read_sensors_closure) }, + { be_const_key_weak(update_remotes_info, 47), be_const_closure(Matter_Device_update_remotes_info_closure) }, + { be_const_key_weak(mdns_remove_op_discovery, -1), be_const_closure(Matter_Device_mdns_remove_op_discovery_closure) }, + { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(Matter_Device_mdns_announce_PASE_closure) }, + { be_const_key_weak(save_before_restart, 43), be_const_closure(Matter_Device_save_before_restart_closure) }, + { be_const_key_weak(msg_send, -1), be_const_closure(Matter_Device_msg_send_closure) }, + { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_closure) }, + { be_const_key_weak(k2l_num, -1), be_const_static_closure(Matter_Device_k2l_num_closure) }, + { be_const_key_weak(vendorid, -1), be_const_var(23) }, + { be_const_key_weak(http_remotes, -1), be_const_var(27) }, + { be_const_key_weak(plugins_classes, -1), be_const_var(3) }, { be_const_key_weak(commissioning_discriminator, -1), be_const_var(14) }, - { be_const_key_weak(root_L, -1), be_const_var(36) }, { be_const_key_weak(is_root_commissioning_open, -1), be_const_closure(Matter_Device_is_root_commissioning_open_closure) }, - { be_const_key_weak(attribute_updated, 31), be_const_closure(Matter_Device_attribute_updated_closure) }, - { be_const_key_weak(commissioning_instance_eth, -1), be_const_var(20) }, - { be_const_key_weak(plugins_config, 25), be_const_var(4) }, - { be_const_key_weak(_compute_pbkdf, -1), be_const_closure(Matter_Device__compute_pbkdf_closure) }, - { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(19) }, - { be_const_key_weak(remove_fabric, 11), be_const_closure(Matter_Device_remove_fabric_closure) }, - { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(Matter_Device_signal_endpoints_changed_closure) }, + { be_const_key_weak(remove_fabric, -1), be_const_closure(Matter_Device_remove_fabric_closure) }, + { be_const_key_weak(start_operational_discovery, -1), be_const_closure(Matter_Device_start_operational_discovery_closure) }, + { be_const_key_weak(PBKDF_ITERATIONS, 2), be_const_int(1000) }, })), be_str_weak(Matter_Device) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h index 59867c30773a..4888f31a9cb1 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h @@ -129,11 +129,10 @@ be_local_closure(Matter_Expirable_has_expired, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ + ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(rtc), - /* K2 */ be_nested_str_weak(utc), - /* K3 */ be_nested_str_weak(_expiration), + /* K1 */ be_nested_str_weak(rtc_utc), + /* K2 */ be_nested_str_weak(_expiration), }), be_str_weak(has_expired), &be_const_str_solidified, @@ -144,12 +143,12 @@ be_local_closure(Matter_Expirable_has_expired, /* name */ 0xB80A0000, // 0003 GETNGBL R2 K0 0x8C080501, // 0004 GETMET R2 R2 K1 0x7C080200, // 0005 CALL R2 1 - 0x94040502, // 0006 GETIDX R1 R2 K2 - 0x88080103, // 0007 GETMBR R2 R0 K3 + 0x5C040400, // 0006 MOVE R1 R2 + 0x88080102, // 0007 GETMBR R2 R0 K2 0x4C0C0000, // 0008 LDNIL R3 0x20080403, // 0009 NE R2 R2 R3 0x780A0002, // 000A JMPF R2 #000E - 0x88080103, // 000B GETMBR R2 R0 K3 + 0x88080102, // 000B GETMBR R2 R0 K2 0x28080202, // 000C GE R2 R1 R2 0x80040400, // 000D RET 1 R2 0x50080000, // 000E LDBOOL R2 0 0 @@ -224,11 +223,10 @@ be_local_closure(Matter_Expirable_set_expire_in_seconds, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ + ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(rtc), - /* K2 */ be_nested_str_weak(utc), - /* K3 */ be_nested_str_weak(set_expire_time), + /* K1 */ be_nested_str_weak(rtc_utc), + /* K2 */ be_nested_str_weak(set_expire_time), }), be_str_weak(set_expire_in_seconds), &be_const_str_solidified, @@ -243,8 +241,8 @@ be_local_closure(Matter_Expirable_set_expire_in_seconds, /* name */ 0xB80E0000, // 0007 GETNGBL R3 K0 0x8C0C0701, // 0008 GETMET R3 R3 K1 0x7C0C0200, // 0009 CALL R3 1 - 0x94080702, // 000A GETIDX R2 R3 K2 - 0x8C0C0103, // 000B GETMET R3 R0 K3 + 0x5C080600, // 000A MOVE R2 R3 + 0x8C0C0102, // 000B GETMET R3 R0 K2 0x00140401, // 000C ADD R5 R2 R1 0x7C0C0400, // 000D CALL R3 2 0x80000000, // 000E RET 0 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h index f8d35d9da708..046f20836de9 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h @@ -389,7 +389,7 @@ be_local_closure(Matter_Fabric_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ + ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(_store), /* K2 */ be_nested_str_weak(_sessions), @@ -399,19 +399,18 @@ be_local_closure(Matter_Fabric_init, /* name */ /* K6 */ be_nested_str_weak(), /* K7 */ be_nested_str_weak(created), /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(rtc), - /* K10 */ be_nested_str_weak(utc), - /* K11 */ be_nested_str_weak(_counter_group_data_snd_impl), - /* K12 */ be_nested_str_weak(Counter), - /* K13 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), - /* K14 */ be_nested_str_weak(counter_group_data_snd), - /* K15 */ be_nested_str_weak(next), - /* K16 */ be_nested_str_weak(_GROUP_SND_INCR), - /* K17 */ be_nested_str_weak(counter_group_ctrl_snd), + /* K9 */ be_nested_str_weak(rtc_utc), + /* K10 */ be_nested_str_weak(_counter_group_data_snd_impl), + /* K11 */ be_nested_str_weak(Counter), + /* K12 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), + /* K13 */ be_nested_str_weak(counter_group_data_snd), + /* K14 */ be_nested_str_weak(next), + /* K15 */ be_nested_str_weak(_GROUP_SND_INCR), + /* K16 */ be_nested_str_weak(counter_group_ctrl_snd), }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ + ( &(const binstruction[32]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x90020201, // 0001 SETMBR R0 K1 R1 0xB80E0600, // 0002 GETNGBL R3 K3 @@ -422,29 +421,28 @@ be_local_closure(Matter_Fabric_init, /* name */ 0xB80E1000, // 0007 GETNGBL R3 K8 0x8C0C0709, // 0008 GETMET R3 R3 K9 0x7C0C0200, // 0009 CALL R3 1 - 0x940C070A, // 000A GETIDX R3 R3 K10 - 0x90020E03, // 000B SETMBR R0 K7 R3 - 0xB80E0600, // 000C GETNGBL R3 K3 - 0x8C0C070C, // 000D GETMET R3 R3 K12 - 0x7C0C0200, // 000E CALL R3 1 - 0x90021603, // 000F SETMBR R0 K11 R3 - 0xB80E0600, // 0010 GETNGBL R3 K3 - 0x8C0C070C, // 0011 GETMET R3 R3 K12 - 0x7C0C0200, // 0012 CALL R3 1 - 0x90021A03, // 0013 SETMBR R0 K13 R3 - 0x880C010B, // 0014 GETMBR R3 R0 K11 - 0x8C0C070F, // 0015 GETMET R3 R3 K15 - 0x7C0C0200, // 0016 CALL R3 1 - 0x88100110, // 0017 GETMBR R4 R0 K16 - 0x000C0604, // 0018 ADD R3 R3 R4 - 0x90021C03, // 0019 SETMBR R0 K14 R3 - 0x880C010B, // 001A GETMBR R3 R0 K11 - 0x8C0C070F, // 001B GETMET R3 R3 K15 - 0x7C0C0200, // 001C CALL R3 1 - 0x88100110, // 001D GETMBR R4 R0 K16 - 0x000C0604, // 001E ADD R3 R3 R4 - 0x90022203, // 001F SETMBR R0 K17 R3 - 0x80000000, // 0020 RET 0 + 0x90020E03, // 000A SETMBR R0 K7 R3 + 0xB80E0600, // 000B GETNGBL R3 K3 + 0x8C0C070B, // 000C GETMET R3 R3 K11 + 0x7C0C0200, // 000D CALL R3 1 + 0x90021403, // 000E SETMBR R0 K10 R3 + 0xB80E0600, // 000F GETNGBL R3 K3 + 0x8C0C070B, // 0010 GETMET R3 R3 K11 + 0x7C0C0200, // 0011 CALL R3 1 + 0x90021803, // 0012 SETMBR R0 K12 R3 + 0x880C010A, // 0013 GETMBR R3 R0 K10 + 0x8C0C070E, // 0014 GETMET R3 R3 K14 + 0x7C0C0200, // 0015 CALL R3 1 + 0x8810010F, // 0016 GETMBR R4 R0 K15 + 0x000C0604, // 0017 ADD R3 R3 R4 + 0x90021A03, // 0018 SETMBR R0 K13 R3 + 0x880C010A, // 0019 GETMBR R3 R0 K10 + 0x8C0C070E, // 001A GETMET R3 R3 K14 + 0x7C0C0200, // 001B CALL R3 1 + 0x8810010F, // 001C GETMBR R4 R0 K15 + 0x000C0604, // 001D ADD R3 R3 R4 + 0x90022003, // 001E SETMBR R0 K16 R3 + 0x80000000, // 001F RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h index 9aa8fd572113..ee1c0bc37ce4 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h @@ -19,28 +19,26 @@ be_local_closure(Matter_HTTP_remote_device_is_alive, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ + ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(reachable), /* K1 */ be_nested_str_weak(reachable_utc), /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(rtc), - /* K4 */ be_nested_str_weak(utc), + /* K3 */ be_nested_str_weak(rtc_utc), }), be_str_weak(device_is_alive), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x78060007, // 0000 JMPF R1 #0009 + ( &(const binstruction[11]) { /* code */ + 0x78060006, // 0000 JMPF R1 #0008 0x50080200, // 0001 LDBOOL R2 1 0 0x90020002, // 0002 SETMBR R0 K0 R2 0xB80A0400, // 0003 GETNGBL R2 K2 0x8C080503, // 0004 GETMET R2 R2 K3 0x7C080200, // 0005 CALL R2 1 - 0x94080504, // 0006 GETIDX R2 R2 K4 - 0x90020202, // 0007 SETMBR R0 K1 R2 - 0x70020001, // 0008 JMP #000B - 0x50080000, // 0009 LDBOOL R2 0 0 - 0x90020002, // 000A SETMBR R0 K0 R2 - 0x80000000, // 000B RET 0 + 0x90020202, // 0006 SETMBR R0 K1 R2 + 0x70020001, // 0007 JMP #000A + 0x50080000, // 0008 LDBOOL R2 0 0 + 0x90020002, // 0009 SETMBR R0 K0 R2 + 0x80000000, // 000A RET 0 }) ) ); @@ -460,36 +458,34 @@ be_local_closure(Matter_HTTP_remote_web_last_seen, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ + ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), /* K1 */ be_nested_str_weak(reachable_utc), /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(rtc), - /* K4 */ be_nested_str_weak(utc), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(seconds_to_dhm), + /* K3 */ be_nested_str_weak(rtc_utc), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(seconds_to_dhm), }), be_str_weak(web_last_seen), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ + ( &(const binstruction[17]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x5409FFFE, // 0001 LDINT R2 -1 0x880C0101, // 0002 GETMBR R3 R0 K1 0x4C100000, // 0003 LDNIL R4 0x200C0604, // 0004 NE R3 R3 R4 - 0x780E0006, // 0005 JMPF R3 #000D + 0x780E0005, // 0005 JMPF R3 #000C 0xB80E0400, // 0006 GETNGBL R3 K2 0x8C0C0703, // 0007 GETMET R3 R3 K3 0x7C0C0200, // 0008 CALL R3 1 - 0x940C0704, // 0009 GETIDX R3 R3 K4 - 0x88100101, // 000A GETMBR R4 R0 K1 - 0x040C0604, // 000B SUB R3 R3 R4 - 0x5C080600, // 000C MOVE R2 R3 - 0xB80E0A00, // 000D GETNGBL R3 K5 - 0x8C0C0706, // 000E GETMET R3 R3 K6 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x80040600, // 0011 RET 1 R3 + 0x88100101, // 0009 GETMBR R4 R0 K1 + 0x040C0604, // 000A SUB R3 R3 R4 + 0x5C080600, // 000B MOVE R2 R3 + 0xB80E0800, // 000C GETNGBL R3 K4 + 0x8C0C0705, // 000D GETMET R3 R3 K5 + 0x5C140400, // 000E MOVE R5 R2 + 0x7C0C0400, // 000F CALL R3 2 + 0x80040600, // 0010 RET 1 R3 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index 07196c19c9f8..83028f004266 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -7,11 +7,11 @@ extern const bclass be_class_Matter_IM; /******************************************************************** -** Solidified function: expire_sendqueue +** Solidified function: every_250ms ********************************************************************/ -be_local_closure(Matter_IM_expire_sendqueue, /* name */ +be_local_closure(Matter_IM_every_250ms, /* name */ be_nested_proto( - 6, /* nstack */ + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -19,43 +19,835 @@ be_local_closure(Matter_IM_expire_sendqueue, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(time_reached), - /* K4 */ be_nested_str_weak(expiration), - /* K5 */ be_nested_str_weak(reached_timeout), - /* K6 */ be_nested_str_weak(remove), - /* K7 */ be_const_int(1), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(subs_shop), + /* K1 */ be_nested_str_weak(every_250ms), }), - be_str_weak(expire_sendqueue), + be_str_weak(every_250ms), &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x14080202, // 0004 LT R2 R1 R2 - 0x780A000F, // 0005 JMPF R2 #0016 - 0x88080101, // 0006 GETMBR R2 R0 K1 - 0x94080401, // 0007 GETIDX R2 R2 R1 - 0xB80E0400, // 0008 GETNGBL R3 K2 - 0x8C0C0703, // 0009 GETMET R3 R3 K3 - 0x88140504, // 000A GETMBR R5 R2 K4 - 0x7C0C0400, // 000B CALL R3 2 - 0x780E0006, // 000C JMPF R3 #0014 - 0x8C0C0505, // 000D GETMET R3 R2 K5 - 0x7C0C0200, // 000E CALL R3 1 - 0x880C0101, // 000F GETMBR R3 R0 K1 - 0x8C0C0706, // 0010 GETMET R3 R3 K6 - 0x5C140200, // 0011 MOVE R5 R1 - 0x7C0C0400, // 0012 CALL R3 2 - 0x70020000, // 0013 JMP #0015 - 0x00040307, // 0014 ADD R1 R1 K7 - 0x7001FFEA, // 0015 JMP #0001 - 0x4C080000, // 0016 LDNIL R2 - 0x80040400, // 0017 RET 1 R2 + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_incoming_ack +********************************************************************/ +be_local_closure(Matter_IM_process_incoming_ack, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(find_sendqueue_by_exchangeid), + /* K1 */ be_nested_str_weak(exchange_id), + /* K2 */ be_nested_str_weak(ack_received), + }), + be_str_weak(process_incoming_ack), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x88100301, // 0001 GETMBR R4 R1 K1 + 0x7C080400, // 0002 CALL R2 2 + 0x780A0003, // 0003 JMPF R2 #0008 + 0x8C0C0502, // 0004 GETMET R3 R2 K2 + 0x5C140200, // 0005 MOVE R5 R1 + 0x7C0C0400, // 0006 CALL R3 2 + 0x80040600, // 0007 RET 1 R3 + 0x500C0000, // 0008 LDBOOL R3 0 0 + 0x80040600, // 0009 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: subscribe_response +********************************************************************/ +be_local_closure(Matter_IM_subscribe_response, /* name */ + be_nested_proto( + 6, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(SubscribeResponseMessage), + /* K2 */ be_nested_str_weak(from_TLV), + }), + be_str_weak(subscribe_response), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0x50100000, // 0006 LDBOOL R4 0 0 + 0x80040800, // 0007 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_write_response +********************************************************************/ +be_local_closure(Matter_IM_process_write_response, /* name */ + be_nested_proto( + 6, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(WriteResponseMessage), + /* K2 */ be_nested_str_weak(from_TLV), + }), + be_str_weak(process_write_response), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0x50100000, // 0006 LDBOOL R4 0 0 + 0x80040800, // 0007 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_status_response +********************************************************************/ +be_local_closure(Matter_IM_process_status_response, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(findsubval), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(find_sendqueue_by_exchangeid), + /* K3 */ be_nested_str_weak(exchange_id), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(SUCCESS), + /* K6 */ be_nested_str_weak(status_ok_received), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), + /* K10 */ be_nested_str_weak(session), + /* K11 */ be_nested_str_weak(local_session_id), + /* K12 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), + /* K13 */ be_const_int(3), + /* K14 */ be_nested_str_weak(status_error_received), + /* K15 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + }), + be_str_weak(process_status_response), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0x8C0C0500, // 0000 GETMET R3 R2 K0 + 0x58140001, // 0001 LDCONST R5 K1 + 0x541A00FE, // 0002 LDINT R6 255 + 0x7C0C0600, // 0003 CALL R3 3 + 0x8C100102, // 0004 GETMET R4 R0 K2 + 0x88180303, // 0005 GETMBR R6 R1 K3 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x88140B05, // 0008 GETMBR R5 R5 K5 + 0x1C140605, // 0009 EQ R5 R3 R5 + 0x78160010, // 000A JMPF R5 #001C + 0x78120004, // 000B JMPF R4 #0011 + 0x8C140906, // 000C GETMET R5 R4 K6 + 0x5C1C0200, // 000D MOVE R7 R1 + 0x7C140400, // 000E CALL R5 2 + 0x80040A00, // 000F RET 1 R5 + 0x70020009, // 0010 JMP #001B + 0xB8160E00, // 0011 GETNGBL R5 K7 + 0x8C140B08, // 0012 GETMET R5 R5 K8 + 0x601C0018, // 0013 GETGBL R7 G24 + 0x58200009, // 0014 LDCONST R8 K9 + 0x8824030A, // 0015 GETMBR R9 R1 K10 + 0x8824130B, // 0016 GETMBR R9 R9 K11 + 0x88280303, // 0017 GETMBR R10 R1 K3 + 0x7C1C0600, // 0018 CALL R7 3 + 0x54220003, // 0019 LDINT R8 4 + 0x7C140600, // 001A CALL R5 3 + 0x7002000E, // 001B JMP #002B + 0xB8160E00, // 001C GETNGBL R5 K7 + 0x8C140B08, // 001D GETMET R5 R5 K8 + 0x601C0018, // 001E GETGBL R7 G24 + 0x5820000C, // 001F LDCONST R8 K12 + 0x5C240600, // 0020 MOVE R9 R3 + 0x7C1C0400, // 0021 CALL R7 2 + 0x5820000D, // 0022 LDCONST R8 K13 + 0x7C140600, // 0023 CALL R5 3 + 0x78120005, // 0024 JMPF R4 #002B + 0x8C14090E, // 0025 GETMET R5 R4 K14 + 0x5C1C0200, // 0026 MOVE R7 R1 + 0x7C140400, // 0027 CALL R5 2 + 0x8C14010F, // 0028 GETMET R5 R0 K15 + 0x881C0303, // 0029 GETMBR R7 R1 K3 + 0x7C140400, // 002A CALL R5 2 + 0x50140000, // 002B LDBOOL R5 0 0 + 0x80040A00, // 002C RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_timed_request +********************************************************************/ +be_local_closure(Matter_IM_process_timed_request, /* name */ + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TimedRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(log), + /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), + /* K6 */ be_nested_str_weak(session), + /* K7 */ be_nested_str_weak(local_session_id), + /* K8 */ be_nested_str_weak(timeout), + /* K9 */ be_const_int(3), + /* K10 */ be_nested_str_weak(send_status), + /* K11 */ be_nested_str_weak(SUCCESS), + }), + be_str_weak(process_timed_request), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0xB8120600, // 0006 GETNGBL R4 K3 + 0x8C100904, // 0007 GETMET R4 R4 K4 + 0x60180018, // 0008 GETGBL R6 G24 + 0x581C0005, // 0009 LDCONST R7 K5 + 0x88200306, // 000A GETMBR R8 R1 K6 + 0x88201107, // 000B GETMBR R8 R8 K7 + 0x88240708, // 000C GETMBR R9 R3 K8 + 0x7C180600, // 000D CALL R6 3 + 0x581C0009, // 000E LDCONST R7 K9 + 0x7C100600, // 000F CALL R4 3 + 0x8C10010A, // 0010 GETMET R4 R0 K10 + 0x5C180200, // 0011 MOVE R6 R1 + 0xB81E0000, // 0012 GETNGBL R7 K0 + 0x881C0F0B, // 0013 GETMBR R7 R7 K11 + 0x7C100600, // 0014 CALL R4 3 + 0x50100200, // 0015 LDBOOL R4 1 0 + 0x80040800, // 0016 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attributedata2raw +********************************************************************/ +be_local_closure(Matter_IM_attributedata2raw, /* 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(add), + /* K1 */ be_const_int(355795236), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(path2raw), + /* K4 */ be_nested_str_weak(tag_sub), + /* K5 */ be_const_int(2), + /* K6 */ be_nested_str_weak(tlv2raw), + }), + be_str_weak(attributedata2raw), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x8C100300, // 0000 GETMET R4 R1 K0 + 0x58180001, // 0001 LDCONST R6 K1 + 0x541DFFFB, // 0002 LDINT R7 -4 + 0x7C100600, // 0003 CALL R4 3 + 0x8C100300, // 0004 GETMET R4 R1 K0 + 0x58180002, // 0005 LDCONST R6 K2 + 0x541DFFFD, // 0006 LDINT R7 -2 + 0x7C100600, // 0007 CALL R4 3 + 0x8C100103, // 0008 GETMET R4 R0 K3 + 0x5C180200, // 0009 MOVE R6 R1 + 0x5C1C0400, // 000A MOVE R7 R2 + 0x58200002, // 000B LDCONST R8 K2 + 0x7C100800, // 000C CALL R4 4 + 0x900E0905, // 000D SETMBR R3 K4 K5 + 0x8C100706, // 000E GETMET R4 R3 K6 + 0x5C180200, // 000F MOVE R6 R1 + 0x7C100400, // 0010 CALL R4 2 + 0x8C100300, // 0011 GETMET R4 R1 K0 + 0x541A1817, // 0012 LDINT R6 6168 + 0x541DFFFD, // 0013 LDINT R7 -2 + 0x7C100600, // 0014 CALL R4 3 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_invoke_request_solo +********************************************************************/ +be_local_closure(Matter_IM_process_invoke_request_solo, /* name */ + be_nested_proto( + 16, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[46]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(profiler), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(invoke_request_solo_start), + /* K4 */ be_nested_str_weak(msg), + /* K5 */ be_nested_str_weak(status), + /* K6 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K7 */ be_nested_str_weak(get_command_name), + /* K8 */ be_nested_str_weak(cluster), + /* K9 */ be_nested_str_weak(command), + /* K10 */ be_nested_str_weak(device), + /* K11 */ be_nested_str_weak(invoke_request), + /* K12 */ be_nested_str_weak(session), + /* K13 */ be_nested_str_weak(command_fields), + /* K14 */ be_nested_str_weak(COMMAND_X20DONE), + /* K15 */ be_nested_str_weak(_X28), + /* K16 */ be_nested_str_weak(_X29_X20), + /* K17 */ be_nested_str_weak(), + /* K18 */ be_nested_str_weak(endpoint), + /* K19 */ be_const_int(0), + /* K20 */ be_const_int(2), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(tasmota), + /* K23 */ be_nested_str_weak(loglevel), + /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), + /* K25 */ be_nested_str_weak(local_session_id), + /* K26 */ be_nested_str_weak(add), + /* K27 */ be_const_int(354943030), + /* K28 */ be_const_int(1), + /* K29 */ be_nested_str_weak(MTR_X3A_X20res_X3D_X25s_X20ctx_X2Estatus_X3D_X25s), + /* K30 */ be_nested_str_weak(SUCCESS), + /* K31 */ be_nested_str_weak(invokeresponse2raw), + /* K32 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), + /* K33 */ be_nested_str_weak(exchange_id), + /* K34 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), + /* K35 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), + /* K36 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), + /* K37 */ be_const_int(405077761), + /* K38 */ be_nested_str_weak(build_response), + /* K39 */ be_nested_str_weak(message_handler), + /* K40 */ be_nested_str_weak(raw), + /* K41 */ be_nested_str_weak(clear), + /* K42 */ be_nested_str_weak(encode_frame), + /* K43 */ be_nested_str_weak(encrypt), + /* K44 */ be_nested_str_weak(send_response_frame), + /* K45 */ be_nested_str_weak(RESPONSE_X20SENT), + }), + be_str_weak(process_invoke_request_solo), + &be_const_str_solidified, + ( &(const binstruction[223]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x880C0701, // 0001 GETMBR R3 R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x58140003, // 0003 LDCONST R5 K3 + 0x7C0C0400, // 0004 CALL R3 2 + 0x900A0801, // 0005 SETMBR R2 K4 R1 + 0xB80E0000, // 0006 GETNGBL R3 K0 + 0x880C0706, // 0007 GETMBR R3 R3 K6 + 0x900A0A03, // 0008 SETMBR R2 K5 R3 + 0xB80E0000, // 0009 GETNGBL R3 K0 + 0x8C0C0707, // 000A GETMET R3 R3 K7 + 0x88140508, // 000B GETMBR R5 R2 K8 + 0x88180509, // 000C GETMBR R6 R2 K9 + 0x7C0C0600, // 000D CALL R3 3 + 0x60100008, // 000E GETGBL R4 G8 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C100200, // 0010 CALL R4 1 + 0x8814010A, // 0011 GETMBR R5 R0 K10 + 0x8C140B0B, // 0012 GETMET R5 R5 K11 + 0x881C030C, // 0013 GETMBR R7 R1 K12 + 0x8820050D, // 0014 GETMBR R8 R2 K13 + 0x5C240400, // 0015 MOVE R9 R2 + 0x7C140800, // 0016 CALL R5 4 + 0xB81A0000, // 0017 GETNGBL R6 K0 + 0x88180D01, // 0018 GETMBR R6 R6 K1 + 0x8C180D02, // 0019 GETMET R6 R6 K2 + 0x5820000E, // 001A LDCONST R8 K14 + 0x7C180400, // 001B CALL R6 2 + 0x88180502, // 001C GETMBR R6 R2 K2 + 0x4C1C0000, // 001D LDNIL R7 + 0x20180C07, // 001E NE R6 R6 R7 + 0x781A0005, // 001F JMPF R6 #0026 + 0x60180008, // 0020 GETGBL R6 G8 + 0x881C0502, // 0021 GETMBR R7 R2 K2 + 0x7C180200, // 0022 CALL R6 1 + 0x001A1E06, // 0023 ADD R6 K15 R6 + 0x00180D10, // 0024 ADD R6 R6 K16 + 0x70020000, // 0025 JMP #0027 + 0x58180011, // 0026 LDCONST R6 K17 + 0x881C0512, // 0027 GETMBR R7 R2 K18 + 0x201C0F13, // 0028 NE R7 R7 K19 + 0x781E0001, // 0029 JMPF R7 #002C + 0x581C0014, // 002A LDCONST R7 K20 + 0x70020000, // 002B JMP #002D + 0x581C0015, // 002C LDCONST R7 K21 + 0xB8222C00, // 002D GETNGBL R8 K22 + 0x8C201117, // 002E GETMET R8 R8 K23 + 0x5C280E00, // 002F MOVE R10 R7 + 0x7C200400, // 0030 CALL R8 2 + 0x7822000E, // 0031 JMPF R8 #0041 + 0xB8222C00, // 0032 GETNGBL R8 K22 + 0x8C201102, // 0033 GETMET R8 R8 K2 + 0x60280018, // 0034 GETGBL R10 G24 + 0x582C0018, // 0035 LDCONST R11 K24 + 0x8830030C, // 0036 GETMBR R12 R1 K12 + 0x88301919, // 0037 GETMBR R12 R12 K25 + 0x5C340800, // 0038 MOVE R13 R4 + 0x780E0001, // 0039 JMPF R3 #003C + 0x5C380600, // 003A MOVE R14 R3 + 0x70020000, // 003B JMP #003D + 0x58380011, // 003C LDCONST R14 K17 + 0x5C3C0C00, // 003D MOVE R15 R6 + 0x7C280A00, // 003E CALL R10 5 + 0x5C2C0E00, // 003F MOVE R11 R7 + 0x7C200600, // 0040 CALL R8 3 + 0x4C200000, // 0041 LDNIL R8 + 0x900A0408, // 0042 SETMBR R2 K2 R8 + 0x60200015, // 0043 GETGBL R8 G21 + 0x5426002F, // 0044 LDINT R9 48 + 0x7C200200, // 0045 CALL R8 1 + 0x8C24111A, // 0046 GETMET R9 R8 K26 + 0x582C001B, // 0047 LDCONST R11 K27 + 0x5431FFFB, // 0048 LDINT R12 -4 + 0x7C240600, // 0049 CALL R9 3 + 0x8C24111A, // 004A GETMET R9 R8 K26 + 0x582C001C, // 004B LDCONST R11 K28 + 0x5830001C, // 004C LDCONST R12 K28 + 0x7C240600, // 004D CALL R9 3 + 0xB8262C00, // 004E GETNGBL R9 K22 + 0x8C241302, // 004F GETMET R9 R9 K2 + 0x602C0018, // 0050 GETGBL R11 G24 + 0x5830001D, // 0051 LDCONST R12 K29 + 0x5C340A00, // 0052 MOVE R13 R5 + 0x88380505, // 0053 GETMBR R14 R2 K5 + 0x7C2C0600, // 0054 CALL R11 3 + 0x58300015, // 0055 LDCONST R12 K21 + 0x7C240600, // 0056 CALL R9 3 + 0x50240200, // 0057 LDBOOL R9 1 0 + 0x1C240A09, // 0058 EQ R9 R5 R9 + 0x74260004, // 0059 JMPT R9 #005F + 0x88240505, // 005A GETMBR R9 R2 K5 + 0xB82A0000, // 005B GETNGBL R10 K0 + 0x8828151E, // 005C GETMBR R10 R10 K30 + 0x1C24120A, // 005D EQ R9 R9 R10 + 0x78260017, // 005E JMPF R9 #0077 + 0xB8260000, // 005F GETNGBL R9 K0 + 0x8824131E, // 0060 GETMBR R9 R9 K30 + 0x900A0A09, // 0061 SETMBR R2 K5 R9 + 0x8C24011F, // 0062 GETMET R9 R0 K31 + 0x5C2C1000, // 0063 MOVE R11 R8 + 0x5C300400, // 0064 MOVE R12 R2 + 0x4C340000, // 0065 LDNIL R13 + 0x7C240800, // 0066 CALL R9 4 + 0xB8262C00, // 0067 GETNGBL R9 K22 + 0x8C241317, // 0068 GETMET R9 R9 K23 + 0x582C0015, // 0069 LDCONST R11 K21 + 0x7C240400, // 006A CALL R9 2 + 0x78260009, // 006B JMPF R9 #0076 + 0xB8262C00, // 006C GETNGBL R9 K22 + 0x8C241302, // 006D GETMET R9 R9 K2 + 0x602C0018, // 006E GETGBL R11 G24 + 0x58300020, // 006F LDCONST R12 K32 + 0x8834030C, // 0070 GETMBR R13 R1 K12 + 0x88341B19, // 0071 GETMBR R13 R13 K25 + 0x88380321, // 0072 GETMBR R14 R1 K33 + 0x7C2C0600, // 0073 CALL R11 3 + 0x58300015, // 0074 LDCONST R12 K21 + 0x7C240600, // 0075 CALL R9 3 + 0x70020046, // 0076 JMP #00BE + 0x4C240000, // 0077 LDNIL R9 + 0x20240A09, // 0078 NE R9 R5 R9 + 0x78260018, // 0079 JMPF R9 #0093 + 0x8C24011F, // 007A GETMET R9 R0 K31 + 0x5C2C1000, // 007B MOVE R11 R8 + 0x5C300400, // 007C MOVE R12 R2 + 0x5C340A00, // 007D MOVE R13 R5 + 0x7C240800, // 007E CALL R9 4 + 0x5C240600, // 007F MOVE R9 R3 + 0x74260000, // 0080 JMPT R9 #0082 + 0x580C0011, // 0081 LDCONST R3 K17 + 0xB8262C00, // 0082 GETNGBL R9 K22 + 0x8C241317, // 0083 GETMET R9 R9 K23 + 0x582C0015, // 0084 LDCONST R11 K21 + 0x7C240400, // 0085 CALL R9 2 + 0x7826000A, // 0086 JMPF R9 #0092 + 0xB8262C00, // 0087 GETNGBL R9 K22 + 0x8C241302, // 0088 GETMET R9 R9 K2 + 0x602C0018, // 0089 GETGBL R11 G24 + 0x58300022, // 008A LDCONST R12 K34 + 0x8834030C, // 008B GETMBR R13 R1 K12 + 0x88341B19, // 008C GETMBR R13 R13 K25 + 0x5C380400, // 008D MOVE R14 R2 + 0x5C3C0600, // 008E MOVE R15 R3 + 0x7C2C0800, // 008F CALL R11 4 + 0x58300015, // 0090 LDCONST R12 K21 + 0x7C240600, // 0091 CALL R9 3 + 0x7002002A, // 0092 JMP #00BE + 0x88240505, // 0093 GETMBR R9 R2 K5 + 0x4C280000, // 0094 LDNIL R10 + 0x2024120A, // 0095 NE R9 R9 R10 + 0x78260015, // 0096 JMPF R9 #00AD + 0x8C24011F, // 0097 GETMET R9 R0 K31 + 0x5C2C1000, // 0098 MOVE R11 R8 + 0x5C300400, // 0099 MOVE R12 R2 + 0x4C340000, // 009A LDNIL R13 + 0x7C240800, // 009B CALL R9 4 + 0xB8262C00, // 009C GETNGBL R9 K22 + 0x8C241317, // 009D GETMET R9 R9 K23 + 0x582C0015, // 009E LDCONST R11 K21 + 0x7C240400, // 009F CALL R9 2 + 0x7826000A, // 00A0 JMPF R9 #00AC + 0xB8262C00, // 00A1 GETNGBL R9 K22 + 0x8C241302, // 00A2 GETMET R9 R9 K2 + 0x602C0018, // 00A3 GETGBL R11 G24 + 0x58300023, // 00A4 LDCONST R12 K35 + 0x8834030C, // 00A5 GETMBR R13 R1 K12 + 0x88341B19, // 00A6 GETMBR R13 R13 K25 + 0x88380505, // 00A7 GETMBR R14 R2 K5 + 0x883C0321, // 00A8 GETMBR R15 R1 K33 + 0x7C2C0800, // 00A9 CALL R11 4 + 0x58300015, // 00AA LDCONST R12 K21 + 0x7C240600, // 00AB CALL R9 3 + 0x70020010, // 00AC JMP #00BE + 0xB8262C00, // 00AD GETNGBL R9 K22 + 0x8C241317, // 00AE GETMET R9 R9 K23 + 0x582C0015, // 00AF LDCONST R11 K21 + 0x7C240400, // 00B0 CALL R9 2 + 0x78260009, // 00B1 JMPF R9 #00BC + 0xB8262C00, // 00B2 GETNGBL R9 K22 + 0x8C241302, // 00B3 GETMET R9 R9 K2 + 0x602C0018, // 00B4 GETGBL R11 G24 + 0x58300024, // 00B5 LDCONST R12 K36 + 0x8834030C, // 00B6 GETMBR R13 R1 K12 + 0x88341B19, // 00B7 GETMBR R13 R13 K25 + 0x88380321, // 00B8 GETMBR R14 R1 K33 + 0x7C2C0600, // 00B9 CALL R11 3 + 0x58300015, // 00BA LDCONST R12 K21 + 0x7C240600, // 00BB CALL R9 3 + 0x50240000, // 00BC LDBOOL R9 0 0 + 0x80041200, // 00BD RET 1 R9 + 0x8C24111A, // 00BE GETMET R9 R8 K26 + 0x582C0025, // 00BF LDCONST R11 K37 + 0x5431FFFB, // 00C0 LDINT R12 -4 + 0x7C240600, // 00C1 CALL R9 3 + 0x8C24111A, // 00C2 GETMET R9 R8 K26 + 0x542E0017, // 00C3 LDINT R11 24 + 0x5830001C, // 00C4 LDCONST R12 K28 + 0x7C240600, // 00C5 CALL R9 3 + 0x8C240326, // 00C6 GETMET R9 R1 K38 + 0x542E0008, // 00C7 LDINT R11 9 + 0x50300200, // 00C8 LDBOOL R12 1 0 + 0x7C240600, // 00C9 CALL R9 3 + 0x8828010A, // 00CA GETMBR R10 R0 K10 + 0x88281527, // 00CB GETMBR R10 R10 K39 + 0x882C0328, // 00CC GETMBR R11 R1 K40 + 0x8C301729, // 00CD GETMET R12 R11 K41 + 0x7C300200, // 00CE CALL R12 1 + 0x8C30132A, // 00CF GETMET R12 R9 K42 + 0x5C381000, // 00D0 MOVE R14 R8 + 0x5C3C1600, // 00D1 MOVE R15 R11 + 0x7C300600, // 00D2 CALL R12 3 + 0x8C30132B, // 00D3 GETMET R12 R9 K43 + 0x7C300200, // 00D4 CALL R12 1 + 0x8C30152C, // 00D5 GETMET R12 R10 K44 + 0x5C381200, // 00D6 MOVE R14 R9 + 0x7C300400, // 00D7 CALL R12 2 + 0xB8320000, // 00D8 GETNGBL R12 K0 + 0x88301901, // 00D9 GETMBR R12 R12 K1 + 0x8C301902, // 00DA GETMET R12 R12 K2 + 0x5838002D, // 00DB LDCONST R14 K45 + 0x7C300400, // 00DC CALL R12 2 + 0x50300200, // 00DD LDBOOL R12 1 0 + 0x80041800, // 00DE RET 1 R12 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: invokeresponse2raw +********************************************************************/ +be_local_closure(Matter_IM_invokeresponse2raw, /* 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[11]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(command), + /* K6 */ be_nested_str_weak(status), + /* K7 */ be_nested_str_weak(matter), + /* K8 */ be_nested_str_weak(SUCCESS), + /* K9 */ be_nested_str_weak(tag_sub), + /* K10 */ be_nested_str_weak(tlv2raw), + }), + be_str_weak(invokeresponse2raw), + &be_const_str_solidified, + ( &(const binstruction[148]) { /* code */ + 0x8C100300, // 0000 GETMET R4 R1 K0 + 0x541A0014, // 0001 LDINT R6 21 + 0x581C0001, // 0002 LDCONST R7 K1 + 0x7C100600, // 0003 CALL R4 3 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120004, // 0006 JMPF R4 #000C + 0x8C100300, // 0007 GETMET R4 R1 K0 + 0x541A3500, // 0008 LDINT R6 13569 + 0x541DFFFD, // 0009 LDINT R7 -2 + 0x7C100600, // 000A CALL R4 3 + 0x70020003, // 000B JMP #0010 + 0x8C100300, // 000C GETMET R4 R1 K0 + 0x541A34FF, // 000D LDINT R6 13568 + 0x541DFFFD, // 000E LDINT R7 -2 + 0x7C100600, // 000F CALL R4 3 + 0x8C100300, // 0010 GETMET R4 R1 K0 + 0x541A36FF, // 0011 LDINT R6 14080 + 0x541DFFFD, // 0012 LDINT R7 -2 + 0x7C100600, // 0013 CALL R4 3 + 0x88100502, // 0014 GETMBR R4 R2 K2 + 0x541600FE, // 0015 LDINT R5 255 + 0x18100805, // 0016 LE R4 R4 R5 + 0x78120008, // 0017 JMPF R4 #0021 + 0x8C100300, // 0018 GETMET R4 R1 K0 + 0x541A23FF, // 0019 LDINT R6 9216 + 0x541DFFFD, // 001A LDINT R7 -2 + 0x7C100600, // 001B CALL R4 3 + 0x8C100300, // 001C GETMET R4 R1 K0 + 0x88180502, // 001D GETMBR R6 R2 K2 + 0x581C0001, // 001E LDCONST R7 K1 + 0x7C100600, // 001F CALL R4 3 + 0x70020007, // 0020 JMP #0029 + 0x8C100300, // 0021 GETMET R4 R1 K0 + 0x541A24FF, // 0022 LDINT R6 9472 + 0x541DFFFD, // 0023 LDINT R7 -2 + 0x7C100600, // 0024 CALL R4 3 + 0x8C100300, // 0025 GETMET R4 R1 K0 + 0x88180502, // 0026 GETMBR R6 R2 K2 + 0x581C0003, // 0027 LDCONST R7 K3 + 0x7C100600, // 0028 CALL R4 3 + 0x88100504, // 0029 GETMBR R4 R2 K4 + 0x541600FE, // 002A LDINT R5 255 + 0x18100805, // 002B LE R4 R4 R5 + 0x78120008, // 002C JMPF R4 #0036 + 0x8C100300, // 002D GETMET R4 R1 K0 + 0x541A2400, // 002E LDINT R6 9217 + 0x541DFFFD, // 002F LDINT R7 -2 + 0x7C100600, // 0030 CALL R4 3 + 0x8C100300, // 0031 GETMET R4 R1 K0 + 0x88180504, // 0032 GETMBR R6 R2 K4 + 0x581C0001, // 0033 LDCONST R7 K1 + 0x7C100600, // 0034 CALL R4 3 + 0x70020014, // 0035 JMP #004B + 0x88100504, // 0036 GETMBR R4 R2 K4 + 0x5416FFFE, // 0037 LDINT R5 65535 + 0x18100805, // 0038 LE R4 R4 R5 + 0x78120008, // 0039 JMPF R4 #0043 + 0x8C100300, // 003A GETMET R4 R1 K0 + 0x541A2500, // 003B LDINT R6 9473 + 0x541DFFFD, // 003C LDINT R7 -2 + 0x7C100600, // 003D CALL R4 3 + 0x8C100300, // 003E GETMET R4 R1 K0 + 0x88180504, // 003F GETMBR R6 R2 K4 + 0x581C0003, // 0040 LDCONST R7 K3 + 0x7C100600, // 0041 CALL R4 3 + 0x70020007, // 0042 JMP #004B + 0x8C100300, // 0043 GETMET R4 R1 K0 + 0x541A2600, // 0044 LDINT R6 9729 + 0x541DFFFD, // 0045 LDINT R7 -2 + 0x7C100600, // 0046 CALL R4 3 + 0x8C100300, // 0047 GETMET R4 R1 K0 + 0x88180504, // 0048 GETMBR R6 R2 K4 + 0x541E0003, // 0049 LDINT R7 4 + 0x7C100600, // 004A CALL R4 3 + 0x88100505, // 004B GETMBR R4 R2 K5 + 0x541600FE, // 004C LDINT R5 255 + 0x18100805, // 004D LE R4 R4 R5 + 0x78120008, // 004E JMPF R4 #0058 + 0x8C100300, // 004F GETMET R4 R1 K0 + 0x541A2401, // 0050 LDINT R6 9218 + 0x541DFFFD, // 0051 LDINT R7 -2 + 0x7C100600, // 0052 CALL R4 3 + 0x8C100300, // 0053 GETMET R4 R1 K0 + 0x88180505, // 0054 GETMBR R6 R2 K5 + 0x581C0001, // 0055 LDCONST R7 K1 + 0x7C100600, // 0056 CALL R4 3 + 0x70020014, // 0057 JMP #006D + 0x88100505, // 0058 GETMBR R4 R2 K5 + 0x5416FFFE, // 0059 LDINT R5 65535 + 0x18100805, // 005A LE R4 R4 R5 + 0x78120008, // 005B JMPF R4 #0065 + 0x8C100300, // 005C GETMET R4 R1 K0 + 0x541A2501, // 005D LDINT R6 9474 + 0x541DFFFD, // 005E LDINT R7 -2 + 0x7C100600, // 005F CALL R4 3 + 0x8C100300, // 0060 GETMET R4 R1 K0 + 0x88180505, // 0061 GETMBR R6 R2 K5 + 0x581C0003, // 0062 LDCONST R7 K3 + 0x7C100600, // 0063 CALL R4 3 + 0x70020007, // 0064 JMP #006D + 0x8C100300, // 0065 GETMET R4 R1 K0 + 0x541A2601, // 0066 LDINT R6 9730 + 0x541DFFFD, // 0067 LDINT R7 -2 + 0x7C100600, // 0068 CALL R4 3 + 0x8C100300, // 0069 GETMET R4 R1 K0 + 0x88180505, // 006A GETMBR R6 R2 K5 + 0x541E0003, // 006B LDINT R7 4 + 0x7C100600, // 006C CALL R4 3 + 0x8C100300, // 006D GETMET R4 R1 K0 + 0x541A0017, // 006E LDINT R6 24 + 0x581C0001, // 006F LDCONST R7 K1 + 0x7C100600, // 0070 CALL R4 3 + 0x4C100000, // 0071 LDNIL R4 + 0x1C100604, // 0072 EQ R4 R3 R4 + 0x78120016, // 0073 JMPF R4 #008B + 0x88100506, // 0074 GETMBR R4 R2 K6 + 0x4C140000, // 0075 LDNIL R5 + 0x1C140805, // 0076 EQ R5 R4 R5 + 0x78160001, // 0077 JMPF R5 #007A + 0xB8160E00, // 0078 GETNGBL R5 K7 + 0x88100B08, // 0079 GETMBR R4 R5 K8 + 0x8C140300, // 007A GETMET R5 R1 K0 + 0x541E3500, // 007B LDINT R7 13569 + 0x5421FFFD, // 007C LDINT R8 -2 + 0x7C140600, // 007D CALL R5 3 + 0x8C140300, // 007E GETMET R5 R1 K0 + 0x541E23FF, // 007F LDINT R7 9216 + 0x5421FFFD, // 0080 LDINT R8 -2 + 0x7C140600, // 0081 CALL R5 3 + 0x8C140300, // 0082 GETMET R5 R1 K0 + 0x881C0506, // 0083 GETMBR R7 R2 K6 + 0x58200001, // 0084 LDCONST R8 K1 + 0x7C140600, // 0085 CALL R5 3 + 0x8C140300, // 0086 GETMET R5 R1 K0 + 0x541E0017, // 0087 LDINT R7 24 + 0x58200001, // 0088 LDCONST R8 K1 + 0x7C140600, // 0089 CALL R5 3 + 0x70020003, // 008A JMP #008F + 0x900E1301, // 008B SETMBR R3 K9 K1 + 0x8C10070A, // 008C GETMET R4 R3 K10 + 0x5C180200, // 008D MOVE R6 R1 + 0x7C100400, // 008E CALL R4 2 + 0x8C100300, // 008F GETMET R4 R1 K0 + 0x541A1817, // 0090 LDINT R6 6168 + 0x541DFFFD, // 0091 LDINT R7 -2 + 0x7C100600, // 0092 CALL R4 3 + 0x80000000, // 0093 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_ack_now +********************************************************************/ +be_local_closure(Matter_IM_send_ack_now, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(_message_handler), + /* K2 */ be_nested_str_weak(send_encrypted_ack), + }), + be_str_weak(send_ack_now), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x80000400, // 0003 RET 0 + 0x88080300, // 0004 GETMBR R2 R1 K0 + 0x88080501, // 0005 GETMBR R2 R2 K1 + 0x8C080502, // 0006 GETMET R2 R2 K2 + 0x5C100200, // 0007 MOVE R4 R1 + 0x50140000, // 0008 LDBOOL R5 0 0 + 0x7C080600, // 0009 CALL R2 3 + 0x80000000, // 000A RET 0 }) ) ); @@ -75,338 +867,395 @@ be_local_closure(Matter_IM_process_invoke_request, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[46]) { /* constants */ - /* K0 */ be_nested_str_weak(device), + ( &(const bvalue[44]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(profiler), /* K2 */ be_nested_str_weak(log), /* K3 */ be_nested_str_weak(invoke_request_start), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(Path), - /* K6 */ be_nested_str_weak(msg), - /* K7 */ be_nested_str_weak(InvokeRequestMessage), - /* K8 */ be_nested_str_weak(from_TLV), - /* K9 */ be_nested_str_weak(invoke_requests), - /* K10 */ be_nested_str_weak(InvokeResponseMessage), - /* K11 */ be_nested_str_weak(suppress_response), - /* K12 */ be_nested_str_weak(invoke_responses), - /* K13 */ be_nested_str_weak(endpoint), - /* K14 */ be_nested_str_weak(command_path), - /* K15 */ be_nested_str_weak(cluster), - /* K16 */ be_nested_str_weak(command), - /* K17 */ be_nested_str_weak(status), - /* K18 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K19 */ be_nested_str_weak(get_command_name), + /* K4 */ be_nested_str_weak(Path), + /* K5 */ be_nested_str_weak(msg), + /* K6 */ be_nested_str_weak(InvokeRequestMessage), + /* K7 */ be_nested_str_weak(from_TLV), + /* K8 */ be_nested_str_weak(invoke_requests), + /* K9 */ be_nested_str_weak(InvokeResponseMessage), + /* K10 */ be_nested_str_weak(suppress_response), + /* K11 */ be_nested_str_weak(invoke_responses), + /* K12 */ be_nested_str_weak(endpoint), + /* K13 */ be_nested_str_weak(command_path), + /* K14 */ be_nested_str_weak(cluster), + /* K15 */ be_nested_str_weak(command), + /* K16 */ be_nested_str_weak(status), + /* K17 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K18 */ be_nested_str_weak(get_command_name), + /* K19 */ be_nested_str_weak(device), /* K20 */ be_nested_str_weak(invoke_request), /* K21 */ be_nested_str_weak(session), /* K22 */ be_nested_str_weak(command_fields), - /* K23 */ be_nested_str_weak(_X28), - /* K24 */ be_nested_str_weak(_X29_X20), - /* K25 */ be_nested_str_weak(), - /* K26 */ be_nested_str_weak(tasmota), - /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), - /* K28 */ be_nested_str_weak(local_session_id), - /* K29 */ be_const_int(0), - /* K30 */ be_const_int(2), - /* K31 */ be_const_int(3), - /* K32 */ be_nested_str_weak(InvokeResponseIB), + /* K23 */ be_nested_str_weak(COMMAND_X20DONE), + /* K24 */ be_nested_str_weak(_X28), + /* K25 */ be_nested_str_weak(_X29_X20), + /* K26 */ be_nested_str_weak(), + /* K27 */ be_nested_str_weak(tasmota), + /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), + /* K29 */ be_nested_str_weak(local_session_id), + /* K30 */ be_const_int(0), + /* K31 */ be_const_int(2), + /* K32 */ be_const_int(3), /* K33 */ be_nested_str_weak(SUCCESS), - /* K34 */ be_nested_str_weak(CommandStatusIB), - /* K35 */ be_nested_str_weak(CommandPathIB), - /* K36 */ be_nested_str_weak(StatusIB), - /* K37 */ be_nested_str_weak(push), - /* K38 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), - /* K39 */ be_nested_str_weak(exchange_id), - /* K40 */ be_nested_str_weak(CommandDataIB), - /* K41 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), - /* K42 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), - /* K43 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), - /* K44 */ be_nested_str_weak(stop_iteration), - /* K45 */ be_nested_str_weak(send_invoke_response), + /* K34 */ be_nested_str_weak(invokeresponse2raw), + /* K35 */ be_nested_str_weak(push), + /* K36 */ be_nested_str_weak(loglevel), + /* 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(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), + /* K40 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), + /* K41 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), + /* K42 */ be_nested_str_weak(stop_iteration), + /* K43 */ be_nested_str_weak(send_invoke_response), }), be_str_weak(process_invoke_request), &be_const_str_solidified, - ( &(const binstruction[281]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 + ( &(const binstruction[238]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 0x880C0701, // 0001 GETMBR R3 R3 K1 0x8C0C0702, // 0002 GETMET R3 R3 K2 0x58140003, // 0003 LDCONST R5 K3 0x7C0C0400, // 0004 CALL R3 2 - 0xB80E0800, // 0005 GETNGBL R3 K4 - 0x8C0C0705, // 0006 GETMET R3 R3 K5 + 0xB80E0000, // 0005 GETNGBL R3 K0 + 0x8C0C0704, // 0006 GETMET R3 R3 K4 0x7C0C0200, // 0007 CALL R3 1 - 0x900E0C01, // 0008 SETMBR R3 K6 R1 - 0xB8120800, // 0009 GETNGBL R4 K4 - 0x8C100907, // 000A GETMET R4 R4 K7 + 0x900E0A01, // 0008 SETMBR R3 K5 R1 + 0xB8120000, // 0009 GETNGBL R4 K0 + 0x8C100906, // 000A GETMET R4 R4 K6 0x7C100200, // 000B CALL R4 1 - 0x8C100908, // 000C GETMET R4 R4 K8 + 0x8C100907, // 000C GETMET R4 R4 K7 0x5C180400, // 000D MOVE R6 R2 0x7C100400, // 000E CALL R4 2 - 0x88140909, // 000F GETMBR R5 R4 K9 + 0x88140908, // 000F GETMBR R5 R4 K8 0x4C180000, // 0010 LDNIL R6 0x20140A06, // 0011 NE R5 R5 R6 - 0x78160104, // 0012 JMPF R5 #0118 - 0xB8160800, // 0013 GETNGBL R5 K4 - 0x8C140B0A, // 0014 GETMET R5 R5 K10 + 0x781600D9, // 0012 JMPF R5 #00ED + 0xB8160000, // 0013 GETNGBL R5 K0 + 0x8C140B09, // 0014 GETMET R5 R5 K9 0x7C140200, // 0015 CALL R5 1 0x50180000, // 0016 LDBOOL R6 0 0 - 0x90161606, // 0017 SETMBR R5 K11 R6 + 0x90161406, // 0017 SETMBR R5 K10 R6 0x60180012, // 0018 GETGBL R6 G18 0x7C180000, // 0019 CALL R6 0 - 0x90161806, // 001A SETMBR R5 K12 R6 + 0x90161606, // 001A SETMBR R5 K11 R6 0x60180010, // 001B GETGBL R6 G16 - 0x881C0909, // 001C GETMBR R7 R4 K9 + 0x881C0908, // 001C GETMBR R7 R4 K8 0x7C180200, // 001D CALL R6 1 - 0xA80200E7, // 001E EXBLK 0 #0107 + 0xA80200BC, // 001E EXBLK 0 #00DC 0x5C1C0C00, // 001F MOVE R7 R6 0x7C1C0000, // 0020 CALL R7 0 - 0x88200F0E, // 0021 GETMBR R8 R7 K14 - 0x8820110D, // 0022 GETMBR R8 R8 K13 - 0x900E1A08, // 0023 SETMBR R3 K13 R8 - 0x88200F0E, // 0024 GETMBR R8 R7 K14 - 0x8820110F, // 0025 GETMBR R8 R8 K15 - 0x900E1E08, // 0026 SETMBR R3 K15 R8 - 0x88200F0E, // 0027 GETMBR R8 R7 K14 - 0x88201110, // 0028 GETMBR R8 R8 K16 - 0x900E2008, // 0029 SETMBR R3 K16 R8 - 0xB8220800, // 002A GETNGBL R8 K4 - 0x88201112, // 002B GETMBR R8 R8 K18 - 0x900E2208, // 002C SETMBR R3 K17 R8 - 0xB8220800, // 002D GETNGBL R8 K4 - 0x8C201113, // 002E GETMET R8 R8 K19 - 0x8828070F, // 002F GETMBR R10 R3 K15 - 0x882C0710, // 0030 GETMBR R11 R3 K16 + 0x88200F0D, // 0021 GETMBR R8 R7 K13 + 0x8820110C, // 0022 GETMBR R8 R8 K12 + 0x900E1808, // 0023 SETMBR R3 K12 R8 + 0x88200F0D, // 0024 GETMBR R8 R7 K13 + 0x8820110E, // 0025 GETMBR R8 R8 K14 + 0x900E1C08, // 0026 SETMBR R3 K14 R8 + 0x88200F0D, // 0027 GETMBR R8 R7 K13 + 0x8820110F, // 0028 GETMBR R8 R8 K15 + 0x900E1E08, // 0029 SETMBR R3 K15 R8 + 0xB8220000, // 002A GETNGBL R8 K0 + 0x88201111, // 002B GETMBR R8 R8 K17 + 0x900E2008, // 002C SETMBR R3 K16 R8 + 0xB8220000, // 002D GETNGBL R8 K0 + 0x8C201112, // 002E GETMET R8 R8 K18 + 0x8828070E, // 002F GETMBR R10 R3 K14 + 0x882C070F, // 0030 GETMBR R11 R3 K15 0x7C200600, // 0031 CALL R8 3 0x60240008, // 0032 GETGBL R9 G8 0x5C280600, // 0033 MOVE R10 R3 0x7C240200, // 0034 CALL R9 1 - 0x88280100, // 0035 GETMBR R10 R0 K0 + 0x88280113, // 0035 GETMBR R10 R0 K19 0x8C281514, // 0036 GETMET R10 R10 K20 0x88300315, // 0037 GETMBR R12 R1 K21 0x88340F16, // 0038 GETMBR R13 R7 K22 0x5C380600, // 0039 MOVE R14 R3 0x7C280800, // 003A CALL R10 4 - 0x882C0702, // 003B GETMBR R11 R3 K2 - 0x4C300000, // 003C LDNIL R12 - 0x202C160C, // 003D NE R11 R11 R12 - 0x782E0005, // 003E JMPF R11 #0045 - 0x602C0008, // 003F GETGBL R11 G8 - 0x88300702, // 0040 GETMBR R12 R3 K2 - 0x7C2C0200, // 0041 CALL R11 1 - 0x002E2E0B, // 0042 ADD R11 K23 R11 - 0x002C1718, // 0043 ADD R11 R11 K24 - 0x70020000, // 0044 JMP #0046 - 0x582C0019, // 0045 LDCONST R11 K25 - 0xB8323400, // 0046 GETNGBL R12 K26 - 0x8C301902, // 0047 GETMET R12 R12 K2 - 0x60380018, // 0048 GETGBL R14 G24 - 0x583C001B, // 0049 LDCONST R15 K27 - 0x88400315, // 004A GETMBR R16 R1 K21 - 0x8840211C, // 004B GETMBR R16 R16 K28 - 0x5C441200, // 004C MOVE R17 R9 - 0x78220001, // 004D JMPF R8 #0050 - 0x5C481000, // 004E MOVE R18 R8 - 0x70020000, // 004F JMP #0051 - 0x58480019, // 0050 LDCONST R18 K25 - 0x5C4C1600, // 0051 MOVE R19 R11 - 0x7C380A00, // 0052 CALL R14 5 - 0x883C070D, // 0053 GETMBR R15 R3 K13 - 0x203C1F1D, // 0054 NE R15 R15 K29 - 0x783E0001, // 0055 JMPF R15 #0058 - 0x583C001E, // 0056 LDCONST R15 K30 - 0x70020000, // 0057 JMP #0059 - 0x583C001F, // 0058 LDCONST R15 K31 - 0x7C300600, // 0059 CALL R12 3 - 0x4C300000, // 005A LDNIL R12 - 0x900E040C, // 005B SETMBR R3 K2 R12 - 0xB8320800, // 005C GETNGBL R12 K4 - 0x8C301920, // 005D GETMET R12 R12 K32 - 0x7C300200, // 005E CALL R12 1 - 0x50340200, // 005F LDBOOL R13 1 0 - 0x1C34140D, // 0060 EQ R13 R10 R13 - 0x74360004, // 0061 JMPT R13 #0067 - 0x88340711, // 0062 GETMBR R13 R3 K17 - 0xB83A0800, // 0063 GETNGBL R14 K4 - 0x88381D21, // 0064 GETMBR R14 R14 K33 - 0x1C341A0E, // 0065 EQ R13 R13 R14 - 0x7836002D, // 0066 JMPF R13 #0095 - 0xB8360800, // 0067 GETNGBL R13 K4 - 0x8C341B22, // 0068 GETMET R13 R13 K34 - 0x7C340200, // 0069 CALL R13 1 - 0x9032220D, // 006A SETMBR R12 K17 R13 - 0x88341911, // 006B GETMBR R13 R12 K17 - 0xB83A0800, // 006C GETNGBL R14 K4 - 0x8C381D23, // 006D GETMET R14 R14 K35 - 0x7C380200, // 006E CALL R14 1 - 0x90361C0E, // 006F SETMBR R13 K14 R14 - 0x88341911, // 0070 GETMBR R13 R12 K17 - 0x88341B0E, // 0071 GETMBR R13 R13 K14 - 0x8838070D, // 0072 GETMBR R14 R3 K13 - 0x90361A0E, // 0073 SETMBR R13 K13 R14 - 0x88341911, // 0074 GETMBR R13 R12 K17 - 0x88341B0E, // 0075 GETMBR R13 R13 K14 - 0x8838070F, // 0076 GETMBR R14 R3 K15 - 0x90361E0E, // 0077 SETMBR R13 K15 R14 - 0x88341911, // 0078 GETMBR R13 R12 K17 - 0x88341B0E, // 0079 GETMBR R13 R13 K14 - 0x88380710, // 007A GETMBR R14 R3 K16 - 0x9036200E, // 007B SETMBR R13 K16 R14 - 0x88341911, // 007C GETMBR R13 R12 K17 - 0xB83A0800, // 007D GETNGBL R14 K4 - 0x8C381D24, // 007E GETMET R14 R14 K36 - 0x7C380200, // 007F CALL R14 1 - 0x9036220E, // 0080 SETMBR R13 K17 R14 - 0x88341911, // 0081 GETMBR R13 R12 K17 - 0x88341B11, // 0082 GETMBR R13 R13 K17 - 0xB83A0800, // 0083 GETNGBL R14 K4 - 0x88381D21, // 0084 GETMBR R14 R14 K33 - 0x9036220E, // 0085 SETMBR R13 K17 R14 - 0x88340B0C, // 0086 GETMBR R13 R5 K12 - 0x8C341B25, // 0087 GETMET R13 R13 K37 - 0x5C3C1800, // 0088 MOVE R15 R12 - 0x7C340400, // 0089 CALL R13 2 - 0xB8363400, // 008A GETNGBL R13 K26 - 0x8C341B02, // 008B GETMET R13 R13 K2 - 0x603C0018, // 008C GETGBL R15 G24 - 0x58400026, // 008D LDCONST R16 K38 - 0x88440315, // 008E GETMBR R17 R1 K21 - 0x8844231C, // 008F GETMBR R17 R17 K28 - 0x88480327, // 0090 GETMBR R18 R1 K39 - 0x7C3C0600, // 0091 CALL R15 3 - 0x5840001F, // 0092 LDCONST R16 K31 - 0x7C340600, // 0093 CALL R13 3 - 0x70020070, // 0094 JMP #0106 - 0x4C340000, // 0095 LDNIL R13 - 0x2034140D, // 0096 NE R13 R10 R13 - 0x78360031, // 0097 JMPF R13 #00CA - 0xB8360800, // 0098 GETNGBL R13 K4 - 0x8C341B28, // 0099 GETMET R13 R13 K40 - 0x7C340200, // 009A CALL R13 1 - 0x9032200D, // 009B SETMBR R12 K16 R13 - 0x88341910, // 009C GETMBR R13 R12 K16 - 0xB83A0800, // 009D GETNGBL R14 K4 - 0x8C381D23, // 009E GETMET R14 R14 K35 - 0x7C380200, // 009F CALL R14 1 - 0x90361C0E, // 00A0 SETMBR R13 K14 R14 - 0x88341910, // 00A1 GETMBR R13 R12 K16 - 0x88341B0E, // 00A2 GETMBR R13 R13 K14 - 0x8838070D, // 00A3 GETMBR R14 R3 K13 - 0x90361A0E, // 00A4 SETMBR R13 K13 R14 - 0x88341910, // 00A5 GETMBR R13 R12 K16 - 0x88341B0E, // 00A6 GETMBR R13 R13 K14 - 0x8838070F, // 00A7 GETMBR R14 R3 K15 - 0x90361E0E, // 00A8 SETMBR R13 K15 R14 - 0x88341910, // 00A9 GETMBR R13 R12 K16 - 0x88341B0E, // 00AA GETMBR R13 R13 K14 - 0x88380710, // 00AB GETMBR R14 R3 K16 - 0x9036200E, // 00AC SETMBR R13 K16 R14 - 0x88341910, // 00AD GETMBR R13 R12 K16 - 0x90362C0A, // 00AE SETMBR R13 K22 R10 - 0x88340B0C, // 00AF GETMBR R13 R5 K12 - 0x8C341B25, // 00B0 GETMET R13 R13 K37 - 0x5C3C1800, // 00B1 MOVE R15 R12 - 0x7C340400, // 00B2 CALL R13 2 - 0xB8360800, // 00B3 GETNGBL R13 K4 - 0x8C341B13, // 00B4 GETMET R13 R13 K19 - 0x883C070F, // 00B5 GETMBR R15 R3 K15 - 0x88400710, // 00B6 GETMBR R16 R3 K16 - 0x7C340600, // 00B7 CALL R13 3 - 0x5C201A00, // 00B8 MOVE R8 R13 - 0xB8363400, // 00B9 GETNGBL R13 K26 - 0x8C341B02, // 00BA GETMET R13 R13 K2 - 0x603C0018, // 00BB GETGBL R15 G24 - 0x58400029, // 00BC LDCONST R16 K41 - 0x88440315, // 00BD GETMBR R17 R1 K21 - 0x8844231C, // 00BE GETMBR R17 R17 K28 - 0x60480008, // 00BF GETGBL R18 G8 - 0x5C4C0600, // 00C0 MOVE R19 R3 - 0x7C480200, // 00C1 CALL R18 1 - 0x78220001, // 00C2 JMPF R8 #00C5 - 0x5C4C1000, // 00C3 MOVE R19 R8 - 0x70020000, // 00C4 JMP #00C6 - 0x584C0019, // 00C5 LDCONST R19 K25 - 0x7C3C0800, // 00C6 CALL R15 4 - 0x5840001F, // 00C7 LDCONST R16 K31 - 0x7C340600, // 00C8 CALL R13 3 - 0x7002003B, // 00C9 JMP #0106 - 0x88340711, // 00CA GETMBR R13 R3 K17 - 0x4C380000, // 00CB LDNIL R14 - 0x20341A0E, // 00CC NE R13 R13 R14 - 0x7836002D, // 00CD JMPF R13 #00FC - 0xB8360800, // 00CE GETNGBL R13 K4 - 0x8C341B22, // 00CF GETMET R13 R13 K34 - 0x7C340200, // 00D0 CALL R13 1 - 0x9032220D, // 00D1 SETMBR R12 K17 R13 - 0x88341911, // 00D2 GETMBR R13 R12 K17 - 0xB83A0800, // 00D3 GETNGBL R14 K4 - 0x8C381D23, // 00D4 GETMET R14 R14 K35 - 0x7C380200, // 00D5 CALL R14 1 - 0x90361C0E, // 00D6 SETMBR R13 K14 R14 - 0x88341911, // 00D7 GETMBR R13 R12 K17 - 0x88341B0E, // 00D8 GETMBR R13 R13 K14 - 0x8838070D, // 00D9 GETMBR R14 R3 K13 - 0x90361A0E, // 00DA SETMBR R13 K13 R14 - 0x88341911, // 00DB GETMBR R13 R12 K17 - 0x88341B0E, // 00DC GETMBR R13 R13 K14 - 0x8838070F, // 00DD GETMBR R14 R3 K15 - 0x90361E0E, // 00DE SETMBR R13 K15 R14 - 0x88341911, // 00DF GETMBR R13 R12 K17 - 0x88341B0E, // 00E0 GETMBR R13 R13 K14 - 0x88380710, // 00E1 GETMBR R14 R3 K16 - 0x9036200E, // 00E2 SETMBR R13 K16 R14 - 0x88341911, // 00E3 GETMBR R13 R12 K17 - 0xB83A0800, // 00E4 GETNGBL R14 K4 - 0x8C381D24, // 00E5 GETMET R14 R14 K36 - 0x7C380200, // 00E6 CALL R14 1 - 0x9036220E, // 00E7 SETMBR R13 K17 R14 - 0x88341911, // 00E8 GETMBR R13 R12 K17 - 0x88341B11, // 00E9 GETMBR R13 R13 K17 - 0x88380711, // 00EA GETMBR R14 R3 K17 - 0x9036220E, // 00EB SETMBR R13 K17 R14 - 0x88340B0C, // 00EC GETMBR R13 R5 K12 - 0x8C341B25, // 00ED GETMET R13 R13 K37 - 0x5C3C1800, // 00EE MOVE R15 R12 - 0x7C340400, // 00EF CALL R13 2 - 0xB8363400, // 00F0 GETNGBL R13 K26 - 0x8C341B02, // 00F1 GETMET R13 R13 K2 - 0x603C0018, // 00F2 GETGBL R15 G24 - 0x5840002A, // 00F3 LDCONST R16 K42 - 0x88440315, // 00F4 GETMBR R17 R1 K21 - 0x8844231C, // 00F5 GETMBR R17 R17 K28 - 0x88480711, // 00F6 GETMBR R18 R3 K17 - 0x884C0327, // 00F7 GETMBR R19 R1 K39 - 0x7C3C0800, // 00F8 CALL R15 4 - 0x5840001F, // 00F9 LDCONST R16 K31 - 0x7C340600, // 00FA CALL R13 3 - 0x70020009, // 00FB JMP #0106 - 0xB8363400, // 00FC GETNGBL R13 K26 - 0x8C341B02, // 00FD GETMET R13 R13 K2 - 0x603C0018, // 00FE GETGBL R15 G24 - 0x5840002B, // 00FF LDCONST R16 K43 - 0x88440315, // 0100 GETMBR R17 R1 K21 - 0x8844231C, // 0101 GETMBR R17 R17 K28 - 0x88480327, // 0102 GETMBR R18 R1 K39 - 0x7C3C0600, // 0103 CALL R15 3 - 0x5840001F, // 0104 LDCONST R16 K31 - 0x7C340600, // 0105 CALL R13 3 - 0x7001FF17, // 0106 JMP #001F - 0x5818002C, // 0107 LDCONST R6 K44 - 0xAC180200, // 0108 CATCH R6 1 0 - 0xB0080000, // 0109 RAISE 2 R0 R0 - 0x6018000C, // 010A GETGBL R6 G12 - 0x881C0B0C, // 010B GETMBR R7 R5 K12 - 0x7C180200, // 010C CALL R6 1 - 0x24180D1D, // 010D GT R6 R6 K29 - 0x781A0004, // 010E JMPF R6 #0114 - 0x8C18012D, // 010F GETMET R6 R0 K45 - 0x5C200200, // 0110 MOVE R8 R1 - 0x5C240A00, // 0111 MOVE R9 R5 - 0x7C180600, // 0112 CALL R6 3 - 0x70020001, // 0113 JMP #0116 - 0x50180000, // 0114 LDBOOL R6 0 0 - 0x80040C00, // 0115 RET 1 R6 - 0x50180200, // 0116 LDBOOL R6 1 0 - 0x80040C00, // 0117 RET 1 R6 - 0x80000000, // 0118 RET 0 + 0xB82E0000, // 003B GETNGBL R11 K0 + 0x882C1701, // 003C GETMBR R11 R11 K1 + 0x8C2C1702, // 003D GETMET R11 R11 K2 + 0x58340017, // 003E LDCONST R13 K23 + 0x7C2C0400, // 003F CALL R11 2 + 0x882C0702, // 0040 GETMBR R11 R3 K2 + 0x4C300000, // 0041 LDNIL R12 + 0x202C160C, // 0042 NE R11 R11 R12 + 0x782E0005, // 0043 JMPF R11 #004A + 0x602C0008, // 0044 GETGBL R11 G8 + 0x88300702, // 0045 GETMBR R12 R3 K2 + 0x7C2C0200, // 0046 CALL R11 1 + 0x002E300B, // 0047 ADD R11 K24 R11 + 0x002C1719, // 0048 ADD R11 R11 K25 + 0x70020000, // 0049 JMP #004B + 0x582C001A, // 004A LDCONST R11 K26 + 0xB8323600, // 004B GETNGBL R12 K27 + 0x8C301902, // 004C GETMET R12 R12 K2 + 0x60380018, // 004D GETGBL R14 G24 + 0x583C001C, // 004E LDCONST R15 K28 + 0x88400315, // 004F GETMBR R16 R1 K21 + 0x8840211D, // 0050 GETMBR R16 R16 K29 + 0x5C441200, // 0051 MOVE R17 R9 + 0x78220001, // 0052 JMPF R8 #0055 + 0x5C481000, // 0053 MOVE R18 R8 + 0x70020000, // 0054 JMP #0056 + 0x5848001A, // 0055 LDCONST R18 K26 + 0x5C4C1600, // 0056 MOVE R19 R11 + 0x7C380A00, // 0057 CALL R14 5 + 0x883C070C, // 0058 GETMBR R15 R3 K12 + 0x203C1F1E, // 0059 NE R15 R15 K30 + 0x783E0001, // 005A JMPF R15 #005D + 0x583C001F, // 005B LDCONST R15 K31 + 0x70020000, // 005C JMP #005E + 0x583C0020, // 005D LDCONST R15 K32 + 0x7C300600, // 005E CALL R12 3 + 0x4C300000, // 005F LDNIL R12 + 0x900E040C, // 0060 SETMBR R3 K2 R12 + 0x60300015, // 0061 GETGBL R12 G21 + 0x5436001F, // 0062 LDINT R13 32 + 0x7C300200, // 0063 CALL R12 1 + 0x50340200, // 0064 LDBOOL R13 1 0 + 0x1C34140D, // 0065 EQ R13 R10 R13 + 0x74360004, // 0066 JMPT R13 #006C + 0x88340710, // 0067 GETMBR R13 R3 K16 + 0xB83A0000, // 0068 GETNGBL R14 K0 + 0x88381D21, // 0069 GETMBR R14 R14 K33 + 0x1C341A0E, // 006A EQ R13 R13 R14 + 0x7836001B, // 006B JMPF R13 #0088 + 0xB8360000, // 006C GETNGBL R13 K0 + 0x88341B21, // 006D GETMBR R13 R13 K33 + 0x900E200D, // 006E SETMBR R3 K16 R13 + 0x8C340122, // 006F GETMET R13 R0 K34 + 0x5C3C1800, // 0070 MOVE R15 R12 + 0x5C400600, // 0071 MOVE R16 R3 + 0x4C440000, // 0072 LDNIL R17 + 0x7C340800, // 0073 CALL R13 4 + 0x88340B0B, // 0074 GETMBR R13 R5 K11 + 0x8C341B23, // 0075 GETMET R13 R13 K35 + 0x5C3C1800, // 0076 MOVE R15 R12 + 0x7C340400, // 0077 CALL R13 2 + 0xB8363600, // 0078 GETNGBL R13 K27 + 0x8C341B24, // 0079 GETMET R13 R13 K36 + 0x583C0020, // 007A LDCONST R15 K32 + 0x7C340400, // 007B CALL R13 2 + 0x78360009, // 007C JMPF R13 #0087 + 0xB8363600, // 007D GETNGBL R13 K27 + 0x8C341B02, // 007E GETMET R13 R13 K2 + 0x603C0018, // 007F GETGBL R15 G24 + 0x58400025, // 0080 LDCONST R16 K37 + 0x88440315, // 0081 GETMBR R17 R1 K21 + 0x8844231D, // 0082 GETMBR R17 R17 K29 + 0x88480326, // 0083 GETMBR R18 R1 K38 + 0x7C3C0600, // 0084 CALL R15 3 + 0x58400020, // 0085 LDCONST R16 K32 + 0x7C340600, // 0086 CALL R13 3 + 0x70020052, // 0087 JMP #00DB + 0x4C340000, // 0088 LDNIL R13 + 0x2034140D, // 0089 NE R13 R10 R13 + 0x78360022, // 008A JMPF R13 #00AE + 0x8C340122, // 008B GETMET R13 R0 K34 + 0x5C3C1800, // 008C MOVE R15 R12 + 0x5C400600, // 008D MOVE R16 R3 + 0x5C441400, // 008E MOVE R17 R10 + 0x7C340800, // 008F CALL R13 4 + 0x88340B0B, // 0090 GETMBR R13 R5 K11 + 0x8C341B23, // 0091 GETMET R13 R13 K35 + 0x5C3C1800, // 0092 MOVE R15 R12 + 0x7C340400, // 0093 CALL R13 2 + 0xB8360000, // 0094 GETNGBL R13 K0 + 0x8C341B12, // 0095 GETMET R13 R13 K18 + 0x883C070E, // 0096 GETMBR R15 R3 K14 + 0x8840070F, // 0097 GETMBR R16 R3 K15 + 0x7C340600, // 0098 CALL R13 3 + 0x5C201A00, // 0099 MOVE R8 R13 + 0x5C341000, // 009A MOVE R13 R8 + 0x74360000, // 009B JMPT R13 #009D + 0x5820001A, // 009C LDCONST R8 K26 + 0xB8363600, // 009D GETNGBL R13 K27 + 0x8C341B24, // 009E GETMET R13 R13 K36 + 0x583C0020, // 009F LDCONST R15 K32 + 0x7C340400, // 00A0 CALL R13 2 + 0x7836000A, // 00A1 JMPF R13 #00AD + 0xB8363600, // 00A2 GETNGBL R13 K27 + 0x8C341B02, // 00A3 GETMET R13 R13 K2 + 0x603C0018, // 00A4 GETGBL R15 G24 + 0x58400027, // 00A5 LDCONST R16 K39 + 0x88440315, // 00A6 GETMBR R17 R1 K21 + 0x8844231D, // 00A7 GETMBR R17 R17 K29 + 0x5C480600, // 00A8 MOVE R18 R3 + 0x5C4C1000, // 00A9 MOVE R19 R8 + 0x7C3C0800, // 00AA CALL R15 4 + 0x58400020, // 00AB LDCONST R16 K32 + 0x7C340600, // 00AC CALL R13 3 + 0x7002002C, // 00AD JMP #00DB + 0x88340710, // 00AE GETMBR R13 R3 K16 + 0x4C380000, // 00AF LDNIL R14 + 0x20341A0E, // 00B0 NE R13 R13 R14 + 0x78360019, // 00B1 JMPF R13 #00CC + 0x8C340122, // 00B2 GETMET R13 R0 K34 + 0x5C3C1800, // 00B3 MOVE R15 R12 + 0x5C400600, // 00B4 MOVE R16 R3 + 0x4C440000, // 00B5 LDNIL R17 + 0x7C340800, // 00B6 CALL R13 4 + 0x88340B0B, // 00B7 GETMBR R13 R5 K11 + 0x8C341B23, // 00B8 GETMET R13 R13 K35 + 0x5C3C1800, // 00B9 MOVE R15 R12 + 0x7C340400, // 00BA CALL R13 2 + 0xB8363600, // 00BB GETNGBL R13 K27 + 0x8C341B24, // 00BC GETMET R13 R13 K36 + 0x583C0020, // 00BD LDCONST R15 K32 + 0x7C340400, // 00BE CALL R13 2 + 0x7836000A, // 00BF JMPF R13 #00CB + 0xB8363600, // 00C0 GETNGBL R13 K27 + 0x8C341B02, // 00C1 GETMET R13 R13 K2 + 0x603C0018, // 00C2 GETGBL R15 G24 + 0x58400028, // 00C3 LDCONST R16 K40 + 0x88440315, // 00C4 GETMBR R17 R1 K21 + 0x8844231D, // 00C5 GETMBR R17 R17 K29 + 0x88480710, // 00C6 GETMBR R18 R3 K16 + 0x884C0326, // 00C7 GETMBR R19 R1 K38 + 0x7C3C0800, // 00C8 CALL R15 4 + 0x58400020, // 00C9 LDCONST R16 K32 + 0x7C340600, // 00CA CALL R13 3 + 0x7002000E, // 00CB JMP #00DB + 0xB8363600, // 00CC GETNGBL R13 K27 + 0x8C341B24, // 00CD GETMET R13 R13 K36 + 0x583C0020, // 00CE LDCONST R15 K32 + 0x7C340400, // 00CF CALL R13 2 + 0x78360009, // 00D0 JMPF R13 #00DB + 0xB8363600, // 00D1 GETNGBL R13 K27 + 0x8C341B02, // 00D2 GETMET R13 R13 K2 + 0x603C0018, // 00D3 GETGBL R15 G24 + 0x58400029, // 00D4 LDCONST R16 K41 + 0x88440315, // 00D5 GETMBR R17 R1 K21 + 0x8844231D, // 00D6 GETMBR R17 R17 K29 + 0x88480326, // 00D7 GETMBR R18 R1 K38 + 0x7C3C0600, // 00D8 CALL R15 3 + 0x58400020, // 00D9 LDCONST R16 K32 + 0x7C340600, // 00DA CALL R13 3 + 0x7001FF42, // 00DB JMP #001F + 0x5818002A, // 00DC LDCONST R6 K42 + 0xAC180200, // 00DD CATCH R6 1 0 + 0xB0080000, // 00DE RAISE 2 R0 R0 + 0x6018000C, // 00DF GETGBL R6 G12 + 0x881C0B0B, // 00E0 GETMBR R7 R5 K11 + 0x7C180200, // 00E1 CALL R6 1 + 0x24180D1E, // 00E2 GT R6 R6 K30 + 0x781A0004, // 00E3 JMPF R6 #00E9 + 0x8C18012B, // 00E4 GETMET R6 R0 K43 + 0x5C200200, // 00E5 MOVE R8 R1 + 0x5C240A00, // 00E6 MOVE R9 R5 + 0x7C180600, // 00E7 CALL R6 3 + 0x70020001, // 00E8 JMP #00EB + 0x50180000, // 00E9 LDBOOL R6 0 0 + 0x80040C00, // 00EA RET 1 R6 + 0x50180200, // 00EB LDBOOL R6 1 0 + 0x80040C00, // 00EC RET 1 R6 + 0x80000000, // 00ED RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_read_request +********************************************************************/ +be_local_closure(Matter_IM_process_read_request, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* 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(profiler), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(read_request_start), + /* K4 */ be_nested_str_weak(ReadRequestMessage), + /* K5 */ be_nested_str_weak(from_TLV), + /* K6 */ be_nested_str_weak(read_request_start_X2DTLV), + /* K7 */ be_nested_str_weak(attributes_requests), + /* K8 */ be_nested_str_weak(_inner_process_read_request), + /* K9 */ be_nested_str_weak(session), + /* K10 */ be_nested_str_weak(send_report_data), + }), + be_str_weak(process_read_request), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x880C0701, // 0001 GETMBR R3 R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x58140003, // 0003 LDCONST R5 K3 + 0x7C0C0400, // 0004 CALL R3 2 + 0xB80E0000, // 0005 GETNGBL R3 K0 + 0x8C0C0704, // 0006 GETMET R3 R3 K4 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0705, // 0008 GETMET R3 R3 K5 + 0x5C140400, // 0009 MOVE R5 R2 + 0x7C0C0400, // 000A CALL R3 2 + 0xB8120000, // 000B GETNGBL R4 K0 + 0x88100901, // 000C GETMBR R4 R4 K1 + 0x8C100902, // 000D GETMET R4 R4 K2 + 0x58180006, // 000E LDCONST R6 K6 + 0x7C100400, // 000F CALL R4 2 + 0x88100707, // 0010 GETMBR R4 R3 K7 + 0x4C140000, // 0011 LDNIL R5 + 0x20100805, // 0012 NE R4 R4 R5 + 0x78120007, // 0013 JMPF R4 #001C + 0x8C100108, // 0014 GETMET R4 R0 K8 + 0x88180309, // 0015 GETMBR R6 R1 K9 + 0x5C1C0600, // 0016 MOVE R7 R3 + 0x7C100600, // 0017 CALL R4 3 + 0x8C14010A, // 0018 GETMET R5 R0 K10 + 0x5C1C0200, // 0019 MOVE R7 R1 + 0x5C200800, // 001A MOVE R8 R4 + 0x7C140600, // 001B CALL R5 3 + 0x50100200, // 001C LDBOOL R4 1 0 + 0x80040800, // 001D RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_invoke_response +********************************************************************/ +be_local_closure(Matter_IM_send_invoke_response, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_InvokeResponse), + }), + be_str_weak(send_invoke_response), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 }) ) ); @@ -414,11 +1263,11 @@ be_local_closure(Matter_IM_process_invoke_request, /* name */ /******************************************************************** -** Solidified function: subscribe_request +** Solidified function: send_write_response ********************************************************************/ -be_local_closure(Matter_IM_subscribe_request, /* name */ +be_local_closure(Matter_IM_send_write_response, /* name */ be_nested_proto( - 17, /* nstack */ + 9, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -426,119 +1275,24 @@ be_local_closure(Matter_IM_subscribe_request, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(SubscribeRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(keep_subscriptions), - /* K4 */ be_nested_str_weak(subs_shop), - /* K5 */ be_nested_str_weak(remove_by_session), - /* K6 */ be_nested_str_weak(session), - /* K7 */ be_nested_str_weak(new_subscription), - /* K8 */ be_nested_str_weak(Path), - /* K9 */ be_nested_str_weak(msg), - /* K10 */ be_nested_str_weak(attributes_requests), - /* K11 */ be_nested_str_weak(endpoint), - /* K12 */ be_nested_str_weak(cluster), - /* K13 */ be_nested_str_weak(attribute), - /* K14 */ be_nested_str_weak(push), - /* K15 */ be_nested_str_weak(stop_iteration), - /* K16 */ be_nested_str_weak(tasmota), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i), - /* K19 */ be_nested_str_weak(local_session_id), - /* K20 */ be_nested_str_weak(concat), - /* K21 */ be_nested_str_weak(_X20), - /* K22 */ be_nested_str_weak(min_interval), - /* K23 */ be_nested_str_weak(max_interval), - /* K24 */ be_const_int(1), - /* K25 */ be_const_int(0), - /* K26 */ be_nested_str_weak(subscription_id), - /* K27 */ be_const_int(3), - /* K28 */ be_nested_str_weak(_inner_process_read_request), - /* K29 */ be_nested_str_weak(send_subscribe_response), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_WriteResponse), }), - be_str_weak(subscribe_request), + be_str_weak(send_write_response), &be_const_str_solidified, - ( &(const binstruction[78]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x88100703, // 0006 GETMBR R4 R3 K3 - 0x74120003, // 0007 JMPT R4 #000C - 0x88100104, // 0008 GETMBR R4 R0 K4 - 0x8C100905, // 0009 GETMET R4 R4 K5 - 0x88180306, // 000A GETMBR R6 R1 K6 - 0x7C100400, // 000B CALL R4 2 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x8C100907, // 000D GETMET R4 R4 K7 - 0x88180306, // 000E GETMBR R6 R1 K6 - 0x5C1C0600, // 000F MOVE R7 R3 - 0x7C100600, // 0010 CALL R4 3 - 0x60140012, // 0011 GETGBL R5 G18 - 0x7C140000, // 0012 CALL R5 0 - 0xB81A0000, // 0013 GETNGBL R6 K0 - 0x8C180D08, // 0014 GETMET R6 R6 K8 - 0x7C180200, // 0015 CALL R6 1 - 0x901A1201, // 0016 SETMBR R6 K9 R1 - 0x601C0010, // 0017 GETGBL R7 G16 - 0x8820070A, // 0018 GETMBR R8 R3 K10 - 0x7C1C0200, // 0019 CALL R7 1 - 0xA802000D, // 001A EXBLK 0 #0029 - 0x5C200E00, // 001B MOVE R8 R7 - 0x7C200000, // 001C CALL R8 0 - 0x8824110B, // 001D GETMBR R9 R8 K11 - 0x901A1609, // 001E SETMBR R6 K11 R9 - 0x8824110C, // 001F GETMBR R9 R8 K12 - 0x901A1809, // 0020 SETMBR R6 K12 R9 - 0x8824110D, // 0021 GETMBR R9 R8 K13 - 0x901A1A09, // 0022 SETMBR R6 K13 R9 - 0x8C240B0E, // 0023 GETMET R9 R5 K14 - 0x602C0008, // 0024 GETGBL R11 G8 - 0x5C300C00, // 0025 MOVE R12 R6 - 0x7C2C0200, // 0026 CALL R11 1 - 0x7C240400, // 0027 CALL R9 2 - 0x7001FFF1, // 0028 JMP #001B - 0x581C000F, // 0029 LDCONST R7 K15 - 0xAC1C0200, // 002A CATCH R7 1 0 - 0xB0080000, // 002B RAISE 2 R0 R0 - 0xB81E2000, // 002C GETNGBL R7 K16 - 0x8C1C0F11, // 002D GETMET R7 R7 K17 - 0x60240018, // 002E GETGBL R9 G24 - 0x58280012, // 002F LDCONST R10 K18 - 0x882C0306, // 0030 GETMBR R11 R1 K6 - 0x882C1713, // 0031 GETMBR R11 R11 K19 - 0x8C300B14, // 0032 GETMET R12 R5 K20 - 0x58380015, // 0033 LDCONST R14 K21 - 0x7C300400, // 0034 CALL R12 2 - 0x88340916, // 0035 GETMBR R13 R4 K22 - 0x88380917, // 0036 GETMBR R14 R4 K23 - 0x883C0703, // 0037 GETMBR R15 R3 K3 - 0x783E0001, // 0038 JMPF R15 #003B - 0x583C0018, // 0039 LDCONST R15 K24 - 0x70020000, // 003A JMP #003C - 0x583C0019, // 003B LDCONST R15 K25 - 0x8840091A, // 003C GETMBR R16 R4 K26 - 0x7C240E00, // 003D CALL R9 7 - 0x5828001B, // 003E LDCONST R10 K27 - 0x7C1C0600, // 003F CALL R7 3 - 0x8C1C011C, // 0040 GETMET R7 R0 K28 - 0x88240306, // 0041 GETMBR R9 R1 K6 - 0x5C280600, // 0042 MOVE R10 R3 - 0x502C0200, // 0043 LDBOOL R11 1 0 - 0x7C1C0800, // 0044 CALL R7 4 - 0x8820091A, // 0045 GETMBR R8 R4 K26 - 0x901E3408, // 0046 SETMBR R7 K26 R8 - 0x8C20011D, // 0047 GETMET R8 R0 K29 - 0x5C280200, // 0048 MOVE R10 R1 - 0x5C2C0E00, // 0049 MOVE R11 R7 - 0x5C300800, // 004A MOVE R12 R4 - 0x7C200800, // 004B CALL R8 4 - 0x50200200, // 004C LDBOOL R8 1 0 - 0x80041000, // 004D RET 1 R8 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 }) ) ); @@ -875,36 +1629,246 @@ be_local_closure(Matter_IM_process_write_request, /* name */ /******************************************************************** -** Solidified function: send_write_response +** Solidified function: path2raw ********************************************************************/ -be_local_closure(Matter_IM_send_write_response, /* name */ +be_local_closure(Matter_IM_path2raw, /* name */ be_nested_proto( - 9, /* nstack */ - 3, /* argc */ + 8, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_WriteResponse), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(attribute), }), - be_str_weak(send_write_response), + be_str_weak(path2raw), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 + ( &(const binstruction[102]) { /* code */ + 0x8C100300, // 0000 GETMET R4 R1 K0 + 0x541A0036, // 0001 LDINT R6 55 + 0x581C0001, // 0002 LDCONST R7 K1 + 0x7C100600, // 0003 CALL R4 3 + 0x8C100300, // 0004 GETMET R4 R1 K0 + 0x5C180600, // 0005 MOVE R6 R3 + 0x581C0001, // 0006 LDCONST R7 K1 + 0x7C100600, // 0007 CALL R4 3 + 0x88100502, // 0008 GETMBR R4 R2 K2 + 0x541600FE, // 0009 LDINT R5 255 + 0x18100805, // 000A LE R4 R4 R5 + 0x78120008, // 000B JMPF R4 #0015 + 0x8C100300, // 000C GETMET R4 R1 K0 + 0x541A2401, // 000D LDINT R6 9218 + 0x541DFFFD, // 000E LDINT R7 -2 + 0x7C100600, // 000F CALL R4 3 + 0x8C100300, // 0010 GETMET R4 R1 K0 + 0x88180502, // 0011 GETMBR R6 R2 K2 + 0x581C0001, // 0012 LDCONST R7 K1 + 0x7C100600, // 0013 CALL R4 3 + 0x70020007, // 0014 JMP #001D + 0x8C100300, // 0015 GETMET R4 R1 K0 + 0x541A2501, // 0016 LDINT R6 9474 + 0x541DFFFD, // 0017 LDINT R7 -2 + 0x7C100600, // 0018 CALL R4 3 + 0x8C100300, // 0019 GETMET R4 R1 K0 + 0x88180502, // 001A GETMBR R6 R2 K2 + 0x581C0003, // 001B LDCONST R7 K3 + 0x7C100600, // 001C CALL R4 3 + 0x88100504, // 001D GETMBR R4 R2 K4 + 0x541600FE, // 001E LDINT R5 255 + 0x18100805, // 001F LE R4 R4 R5 + 0x78120008, // 0020 JMPF R4 #002A + 0x8C100300, // 0021 GETMET R4 R1 K0 + 0x541A2402, // 0022 LDINT R6 9219 + 0x541DFFFD, // 0023 LDINT R7 -2 + 0x7C100600, // 0024 CALL R4 3 + 0x8C100300, // 0025 GETMET R4 R1 K0 + 0x88180504, // 0026 GETMBR R6 R2 K4 + 0x581C0001, // 0027 LDCONST R7 K1 + 0x7C100600, // 0028 CALL R4 3 + 0x70020014, // 0029 JMP #003F + 0x88100504, // 002A GETMBR R4 R2 K4 + 0x5416FFFE, // 002B LDINT R5 65535 + 0x18100805, // 002C LE R4 R4 R5 + 0x78120008, // 002D JMPF R4 #0037 + 0x8C100300, // 002E GETMET R4 R1 K0 + 0x541A2502, // 002F LDINT R6 9475 + 0x541DFFFD, // 0030 LDINT R7 -2 + 0x7C100600, // 0031 CALL R4 3 + 0x8C100300, // 0032 GETMET R4 R1 K0 + 0x88180504, // 0033 GETMBR R6 R2 K4 + 0x581C0003, // 0034 LDCONST R7 K3 + 0x7C100600, // 0035 CALL R4 3 + 0x70020007, // 0036 JMP #003F + 0x8C100300, // 0037 GETMET R4 R1 K0 + 0x541A2602, // 0038 LDINT R6 9731 + 0x541DFFFD, // 0039 LDINT R7 -2 + 0x7C100600, // 003A CALL R4 3 + 0x8C100300, // 003B GETMET R4 R1 K0 + 0x88180504, // 003C GETMBR R6 R2 K4 + 0x541E0003, // 003D LDINT R7 4 + 0x7C100600, // 003E CALL R4 3 + 0x88100505, // 003F GETMBR R4 R2 K5 + 0x541600FE, // 0040 LDINT R5 255 + 0x18100805, // 0041 LE R4 R4 R5 + 0x78120008, // 0042 JMPF R4 #004C + 0x8C100300, // 0043 GETMET R4 R1 K0 + 0x541A2403, // 0044 LDINT R6 9220 + 0x541DFFFD, // 0045 LDINT R7 -2 + 0x7C100600, // 0046 CALL R4 3 + 0x8C100300, // 0047 GETMET R4 R1 K0 + 0x88180505, // 0048 GETMBR R6 R2 K5 + 0x581C0001, // 0049 LDCONST R7 K1 + 0x7C100600, // 004A CALL R4 3 + 0x70020014, // 004B JMP #0061 + 0x88100505, // 004C GETMBR R4 R2 K5 + 0x5416FFFE, // 004D LDINT R5 65535 + 0x18100805, // 004E LE R4 R4 R5 + 0x78120008, // 004F JMPF R4 #0059 + 0x8C100300, // 0050 GETMET R4 R1 K0 + 0x541A2503, // 0051 LDINT R6 9476 + 0x541DFFFD, // 0052 LDINT R7 -2 + 0x7C100600, // 0053 CALL R4 3 + 0x8C100300, // 0054 GETMET R4 R1 K0 + 0x88180505, // 0055 GETMBR R6 R2 K5 + 0x581C0003, // 0056 LDCONST R7 K3 + 0x7C100600, // 0057 CALL R4 3 + 0x70020007, // 0058 JMP #0061 + 0x8C100300, // 0059 GETMET R4 R1 K0 + 0x541A2603, // 005A LDINT R6 9732 + 0x541DFFFD, // 005B LDINT R7 -2 + 0x7C100600, // 005C CALL R4 3 + 0x8C100300, // 005D GETMET R4 R1 K0 + 0x88180505, // 005E GETMBR R6 R2 K5 + 0x541E0003, // 005F LDINT R7 4 + 0x7C100600, // 0060 CALL R4 3 + 0x8C100300, // 0061 GETMET R4 R1 K0 + 0x541A0017, // 0062 LDINT R6 24 + 0x581C0001, // 0063 LDCONST R7 K1 + 0x7C100600, // 0064 CALL R4 3 + 0x80000000, // 0065 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_subscribe_update +********************************************************************/ +be_local_closure(Matter_IM_send_subscribe_update, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[25]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(ReadRequestMessage), + /* K3 */ be_nested_str_weak(fabric_filtered), + /* K4 */ be_nested_str_weak(attributes_requests), + /* K5 */ be_nested_str_weak(updates), + /* K6 */ be_nested_str_weak(AttributePathIB), + /* K7 */ be_nested_str_weak(endpoint), + /* K8 */ be_nested_str_weak(cluster), + /* K9 */ be_nested_str_weak(attribute), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(stop_iteration), + /* K12 */ be_nested_str_weak(tasmota), + /* K13 */ be_nested_str_weak(log), + /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), + /* K15 */ be_nested_str_weak(local_session_id), + /* K16 */ be_nested_str_weak(subscription_id), + /* K17 */ be_const_int(3), + /* K18 */ be_nested_str_weak(is_keep_alive), + /* K19 */ be_nested_str_weak(_inner_process_read_request), + /* K20 */ be_nested_str_weak(suppress_response), + /* K21 */ be_nested_str_weak(IM_ReportDataSubscribed), + /* K22 */ be_nested_str_weak(_message_handler), + /* K23 */ be_nested_str_weak(send_queue), + /* K24 */ be_nested_str_weak(send_enqueued), + }), + be_str_weak(send_subscribe_update), + &be_const_str_solidified, + ( &(const binstruction[66]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0xB80E0200, // 0001 GETNGBL R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x7C0C0200, // 0003 CALL R3 1 + 0x50100000, // 0004 LDBOOL R4 0 0 + 0x900E0604, // 0005 SETMBR R3 K3 R4 + 0x60100012, // 0006 GETGBL R4 G18 + 0x7C100000, // 0007 CALL R4 0 + 0x900E0804, // 0008 SETMBR R3 K4 R4 + 0x60100010, // 0009 GETGBL R4 G16 + 0x88140305, // 000A GETMBR R5 R1 K5 + 0x7C100200, // 000B CALL R4 1 + 0xA802000F, // 000C EXBLK 0 #001D + 0x5C140800, // 000D MOVE R5 R4 + 0x7C140000, // 000E CALL R5 0 + 0xB81A0200, // 000F GETNGBL R6 K1 + 0x8C180D06, // 0010 GETMET R6 R6 K6 + 0x7C180200, // 0011 CALL R6 1 + 0x881C0B07, // 0012 GETMBR R7 R5 K7 + 0x901A0E07, // 0013 SETMBR R6 K7 R7 + 0x881C0B08, // 0014 GETMBR R7 R5 K8 + 0x901A1007, // 0015 SETMBR R6 K8 R7 + 0x881C0B09, // 0016 GETMBR R7 R5 K9 + 0x901A1207, // 0017 SETMBR R6 K9 R7 + 0x881C0704, // 0018 GETMBR R7 R3 K4 + 0x8C1C0F0A, // 0019 GETMET R7 R7 K10 + 0x5C240C00, // 001A MOVE R9 R6 + 0x7C1C0400, // 001B CALL R7 2 + 0x7001FFEF, // 001C JMP #000D + 0x5810000B, // 001D LDCONST R4 K11 + 0xAC100200, // 001E CATCH R4 1 0 + 0xB0080000, // 001F RAISE 2 R0 R0 + 0xB8121800, // 0020 GETNGBL R4 K12 + 0x8C10090D, // 0021 GETMET R4 R4 K13 + 0x60180018, // 0022 GETGBL R6 G24 + 0x581C000E, // 0023 LDCONST R7 K14 + 0x8820050F, // 0024 GETMBR R8 R2 K15 + 0x88240310, // 0025 GETMBR R9 R1 K16 + 0x7C180600, // 0026 CALL R6 3 + 0x581C0011, // 0027 LDCONST R7 K17 + 0x7C100600, // 0028 CALL R4 3 + 0x50100000, // 0029 LDBOOL R4 0 0 + 0x90062404, // 002A SETMBR R1 K18 R4 + 0x8C100113, // 002B GETMET R4 R0 K19 + 0x5C180400, // 002C MOVE R6 R2 + 0x5C1C0600, // 002D MOVE R7 R3 + 0x7C100600, // 002E CALL R4 3 + 0x50140000, // 002F LDBOOL R5 0 0 + 0x90122805, // 0030 SETMBR R4 K20 R5 + 0x88140310, // 0031 GETMBR R5 R1 K16 + 0x90122005, // 0032 SETMBR R4 K16 R5 + 0xB8160200, // 0033 GETNGBL R5 K1 + 0x8C140B15, // 0034 GETMET R5 R5 K21 + 0x881C0516, // 0035 GETMBR R7 R2 K22 + 0x5C200400, // 0036 MOVE R8 R2 + 0x5C240800, // 0037 MOVE R9 R4 + 0x5C280200, // 0038 MOVE R10 R1 + 0x7C140A00, // 0039 CALL R5 5 + 0x88180117, // 003A GETMBR R6 R0 K23 + 0x8C180D0A, // 003B GETMET R6 R6 K10 + 0x5C200A00, // 003C MOVE R8 R5 + 0x7C180400, // 003D CALL R6 2 + 0x8C180118, // 003E GETMET R6 R0 K24 + 0x88200516, // 003F GETMBR R8 R2 K22 + 0x7C180400, // 0040 CALL R6 2 + 0x80000000, // 0041 RET 0 }) ) ); @@ -965,27 +1929,181 @@ be_local_closure(Matter_IM_remove_sendqueue_by_exchangeid, /* name */ /******************************************************************** -** Solidified function: every_second +** Solidified function: process_incoming ********************************************************************/ -be_local_closure(Matter_IM_every_second, /* name */ +be_local_closure(Matter_IM_process_incoming, /* name */ be_nested_proto( - 3, /* nstack */ - 1, /* argc */ + 8, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(expire_sendqueue), + ( &(const bvalue[25]) { /* constants */ + /* K0 */ be_nested_str_weak(opcode), + /* K1 */ be_const_int(2), + /* K2 */ be_nested_str_weak(read_request_solo), + /* K3 */ be_nested_str_weak(from_raw), + /* K4 */ be_nested_str_weak(raw), + /* K5 */ be_nested_str_weak(app_payload_idx), + /* K6 */ be_nested_str_weak(process_read_request_solo), + /* K7 */ be_nested_str_weak(invoke_request_solo), + /* K8 */ be_nested_str_weak(process_invoke_request_solo), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(TLV), + /* K11 */ be_nested_str_weak(parse), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(process_status_response), + /* K14 */ be_nested_str_weak(process_read_request), + /* K15 */ be_const_int(3), + /* K16 */ be_nested_str_weak(send_ack_now), + /* K17 */ be_nested_str_weak(subscribe_request), + /* K18 */ be_nested_str_weak(subscribe_response), + /* K19 */ be_nested_str_weak(report_data), + /* K20 */ be_nested_str_weak(process_write_request), + /* K21 */ be_nested_str_weak(process_write_response), + /* K22 */ be_nested_str_weak(process_invoke_request), + /* K23 */ be_nested_str_weak(process_invoke_response), + /* K24 */ be_nested_str_weak(process_timed_request), }), - be_str_weak(every_second), + be_str_weak(process_incoming), &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x80000000, // 0002 RET 0 + ( &(const binstruction[133]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x1C0C0501, // 0001 EQ R3 R2 K1 + 0x780E000D, // 0002 JMPF R3 #0011 + 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x8C0C0703, // 0004 GETMET R3 R3 K3 + 0x88140304, // 0005 GETMBR R5 R1 K4 + 0x88180305, // 0006 GETMBR R6 R1 K5 + 0x7C0C0600, // 0007 CALL R3 3 + 0x4C100000, // 0008 LDNIL R4 + 0x20100604, // 0009 NE R4 R3 R4 + 0x78120004, // 000A JMPF R4 #0010 + 0x8C100106, // 000B GETMET R4 R0 K6 + 0x5C180200, // 000C MOVE R6 R1 + 0x5C1C0600, // 000D MOVE R7 R3 + 0x7C100600, // 000E CALL R4 3 + 0x80040800, // 000F RET 1 R4 + 0x7002000F, // 0010 JMP #0021 + 0x540E0007, // 0011 LDINT R3 8 + 0x1C0C0403, // 0012 EQ R3 R2 R3 + 0x780E000C, // 0013 JMPF R3 #0021 + 0x880C0107, // 0014 GETMBR R3 R0 K7 + 0x8C0C0703, // 0015 GETMET R3 R3 K3 + 0x88140304, // 0016 GETMBR R5 R1 K4 + 0x88180305, // 0017 GETMBR R6 R1 K5 + 0x7C0C0600, // 0018 CALL R3 3 + 0x4C100000, // 0019 LDNIL R4 + 0x20100604, // 001A NE R4 R3 R4 + 0x78120004, // 001B JMPF R4 #0021 + 0x8C100108, // 001C GETMET R4 R0 K8 + 0x5C180200, // 001D MOVE R6 R1 + 0x5C1C0600, // 001E MOVE R7 R3 + 0x7C100600, // 001F CALL R4 3 + 0x80040800, // 0020 RET 1 R4 + 0xB80E1200, // 0021 GETNGBL R3 K9 + 0x880C070A, // 0022 GETMBR R3 R3 K10 + 0x8C0C070B, // 0023 GETMET R3 R3 K11 + 0x88140304, // 0024 GETMBR R5 R1 K4 + 0x88180305, // 0025 GETMBR R6 R1 K5 + 0x7C0C0600, // 0026 CALL R3 3 + 0x1C10050C, // 0027 EQ R4 R2 K12 + 0x78120005, // 0028 JMPF R4 #002F + 0x8C10010D, // 0029 GETMET R4 R0 K13 + 0x5C180200, // 002A MOVE R6 R1 + 0x5C1C0600, // 002B MOVE R7 R3 + 0x7C100600, // 002C CALL R4 3 + 0x80040800, // 002D RET 1 R4 + 0x70020053, // 002E JMP #0083 + 0x1C100501, // 002F EQ R4 R2 K1 + 0x78120005, // 0030 JMPF R4 #0037 + 0x8C10010E, // 0031 GETMET R4 R0 K14 + 0x5C180200, // 0032 MOVE R6 R1 + 0x5C1C0600, // 0033 MOVE R7 R3 + 0x7C100600, // 0034 CALL R4 3 + 0x80040800, // 0035 RET 1 R4 + 0x7002004B, // 0036 JMP #0083 + 0x1C10050F, // 0037 EQ R4 R2 K15 + 0x78120008, // 0038 JMPF R4 #0042 + 0x8C100110, // 0039 GETMET R4 R0 K16 + 0x5C180200, // 003A MOVE R6 R1 + 0x7C100400, // 003B CALL R4 2 + 0x8C100111, // 003C GETMET R4 R0 K17 + 0x5C180200, // 003D MOVE R6 R1 + 0x5C1C0600, // 003E MOVE R7 R3 + 0x7C100600, // 003F CALL R4 3 + 0x80040800, // 0040 RET 1 R4 + 0x70020040, // 0041 JMP #0083 + 0x54120003, // 0042 LDINT R4 4 + 0x1C100404, // 0043 EQ R4 R2 R4 + 0x78120005, // 0044 JMPF R4 #004B + 0x8C100112, // 0045 GETMET R4 R0 K18 + 0x5C180200, // 0046 MOVE R6 R1 + 0x5C1C0600, // 0047 MOVE R7 R3 + 0x7C100600, // 0048 CALL R4 3 + 0x80040800, // 0049 RET 1 R4 + 0x70020037, // 004A JMP #0083 + 0x54120004, // 004B LDINT R4 5 + 0x1C100404, // 004C EQ R4 R2 R4 + 0x78120005, // 004D JMPF R4 #0054 + 0x8C100113, // 004E GETMET R4 R0 K19 + 0x5C180200, // 004F MOVE R6 R1 + 0x5C1C0600, // 0050 MOVE R7 R3 + 0x7C100600, // 0051 CALL R4 3 + 0x80040800, // 0052 RET 1 R4 + 0x7002002E, // 0053 JMP #0083 + 0x54120005, // 0054 LDINT R4 6 + 0x1C100404, // 0055 EQ R4 R2 R4 + 0x78120008, // 0056 JMPF R4 #0060 + 0x8C100110, // 0057 GETMET R4 R0 K16 + 0x5C180200, // 0058 MOVE R6 R1 + 0x7C100400, // 0059 CALL R4 2 + 0x8C100114, // 005A GETMET R4 R0 K20 + 0x5C180200, // 005B MOVE R6 R1 + 0x5C1C0600, // 005C MOVE R7 R3 + 0x7C100600, // 005D CALL R4 3 + 0x80040800, // 005E RET 1 R4 + 0x70020022, // 005F JMP #0083 + 0x54120006, // 0060 LDINT R4 7 + 0x1C100404, // 0061 EQ R4 R2 R4 + 0x78120005, // 0062 JMPF R4 #0069 + 0x8C100115, // 0063 GETMET R4 R0 K21 + 0x5C180200, // 0064 MOVE R6 R1 + 0x5C1C0600, // 0065 MOVE R7 R3 + 0x7C100600, // 0066 CALL R4 3 + 0x80040800, // 0067 RET 1 R4 + 0x70020019, // 0068 JMP #0083 + 0x54120007, // 0069 LDINT R4 8 + 0x1C100404, // 006A EQ R4 R2 R4 + 0x78120005, // 006B JMPF R4 #0072 + 0x8C100116, // 006C GETMET R4 R0 K22 + 0x5C180200, // 006D MOVE R6 R1 + 0x5C1C0600, // 006E MOVE R7 R3 + 0x7C100600, // 006F CALL R4 3 + 0x80040800, // 0070 RET 1 R4 + 0x70020010, // 0071 JMP #0083 + 0x54120008, // 0072 LDINT R4 9 + 0x1C100404, // 0073 EQ R4 R2 R4 + 0x78120005, // 0074 JMPF R4 #007B + 0x8C100117, // 0075 GETMET R4 R0 K23 + 0x5C180200, // 0076 MOVE R6 R1 + 0x5C1C0600, // 0077 MOVE R7 R3 + 0x7C100600, // 0078 CALL R4 3 + 0x80040800, // 0079 RET 1 R4 + 0x70020007, // 007A JMP #0083 + 0x54120009, // 007B LDINT R4 10 + 0x1C100404, // 007C EQ R4 R2 R4 + 0x78120004, // 007D JMPF R4 #0083 + 0x8C100118, // 007E GETMET R4 R0 K24 + 0x5C180200, // 007F MOVE R6 R1 + 0x5C1C0600, // 0080 MOVE R7 R3 + 0x7C100600, // 0081 CALL R4 3 + 0x80040800, // 0082 RET 1 R4 + 0x50100000, // 0083 LDBOOL R4 0 0 + 0x80040800, // 0084 RET 1 R4 }) ) ); @@ -993,12 +2111,12 @@ be_local_closure(Matter_IM_every_second, /* name */ /******************************************************************** -** Solidified function: send_ack_now +** Solidified function: process_invoke_response ********************************************************************/ -be_local_closure(Matter_IM_send_ack_now, /* name */ +be_local_closure(Matter_IM_process_invoke_response, /* name */ be_nested_proto( 6, /* nstack */ - 2, /* argc */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1006,24 +2124,21 @@ be_local_closure(Matter_IM_send_ack_now, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(_message_handler), - /* K2 */ be_nested_str_weak(send_encrypted_ack), + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(InvokeResponseMessage), + /* K2 */ be_nested_str_weak(from_TLV), }), - be_str_weak(send_ack_now), + be_str_weak(process_invoke_response), &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x80000400, // 0003 RET 0 - 0x88080300, // 0004 GETMBR R2 R1 K0 - 0x88080501, // 0005 GETMBR R2 R2 K1 - 0x8C080502, // 0006 GETMET R2 R2 K2 - 0x5C100200, // 0007 MOVE R4 R1 - 0x50140000, // 0008 LDBOOL R5 0 0 - 0x7C080600, // 0009 CALL R2 3 - 0x80000000, // 000A RET 0 + ( &(const binstruction[ 8]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0x50100000, // 0006 LDBOOL R4 0 0 + 0x80040800, // 0007 RET 1 R4 }) ) ); @@ -1031,9 +2146,9 @@ be_local_closure(Matter_IM_send_ack_now, /* name */ /******************************************************************** -** Solidified function: every_250ms +** Solidified function: every_second ********************************************************************/ -be_local_closure(Matter_IM_every_250ms, /* name */ +be_local_closure(Matter_IM_every_second, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -1043,164 +2158,15 @@ be_local_closure(Matter_IM_every_250ms, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(subs_shop), - /* K1 */ be_nested_str_weak(every_250ms), - }), - be_str_weak(every_250ms), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_subscribe_response -********************************************************************/ -be_local_closure(Matter_IM_send_subscribe_response, /* name */ - be_nested_proto( - 11, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_SubscribeResponse), - }), - be_str_weak(send_subscribe_response), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0xB81A0400, // 0002 GETNGBL R6 K2 - 0x8C180D03, // 0003 GETMET R6 R6 K3 - 0x5C200200, // 0004 MOVE R8 R1 - 0x5C240400, // 0005 MOVE R9 R2 - 0x5C280600, // 0006 MOVE R10 R3 - 0x7C180800, // 0007 CALL R6 4 - 0x7C100400, // 0008 CALL R4 2 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_invoke_response -********************************************************************/ -be_local_closure(Matter_IM_send_invoke_response, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_InvokeResponse), - }), - be_str_weak(send_invoke_response), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_status -********************************************************************/ -be_local_closure(Matter_IM_send_status, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_Status), - }), - be_str_weak(send_status), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: subscribe_response -********************************************************************/ -be_local_closure(Matter_IM_subscribe_response, /* name */ - be_nested_proto( - 6, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(SubscribeResponseMessage), - /* K2 */ be_nested_str_weak(from_TLV), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(expire_sendqueue), }), - be_str_weak(subscribe_response), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x50100000, // 0006 LDBOOL R4 0 0 - 0x80040800, // 0007 RET 1 R4 + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 }) ) ); @@ -1208,151 +2174,36 @@ be_local_closure(Matter_IM_subscribe_response, /* name */ /******************************************************************** -** Solidified function: process_incoming +** Solidified function: send_status ********************************************************************/ -be_local_closure(Matter_IM_process_incoming, /* name */ +be_local_closure(Matter_IM_send_status, /* name */ be_nested_proto( 9, /* nstack */ - 2, /* argc */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(parse), - /* K3 */ be_nested_str_weak(raw), - /* K4 */ be_nested_str_weak(app_payload_idx), - /* K5 */ be_nested_str_weak(findsubval), - /* K6 */ be_nested_str_weak(opcode), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(process_status_response), - /* K9 */ be_const_int(2), - /* K10 */ be_nested_str_weak(send_ack_now), - /* K11 */ be_nested_str_weak(process_read_request), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str_weak(subscribe_request), - /* K14 */ be_nested_str_weak(subscribe_response), - /* K15 */ be_nested_str_weak(report_data), - /* K16 */ be_nested_str_weak(process_write_request), - /* K17 */ be_nested_str_weak(process_write_response), - /* K18 */ be_nested_str_weak(process_invoke_request), - /* K19 */ be_nested_str_weak(process_invoke_response), - /* K20 */ be_nested_str_weak(process_timed_request), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_Status), }), - be_str_weak(process_incoming), + be_str_weak(send_status), &be_const_str_solidified, - ( &(const binstruction[107]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x88100303, // 0003 GETMBR R4 R1 K3 - 0x88140304, // 0004 GETMBR R5 R1 K4 - 0x7C080600, // 0005 CALL R2 3 - 0x8C0C0505, // 0006 GETMET R3 R2 K5 - 0x541600FE, // 0007 LDINT R5 255 - 0x7C0C0400, // 0008 CALL R3 2 - 0x88100306, // 0009 GETMBR R4 R1 K6 - 0x1C140907, // 000A EQ R5 R4 K7 - 0x78160005, // 000B JMPF R5 #0012 - 0x8C140108, // 000C GETMET R5 R0 K8 - 0x5C1C0200, // 000D MOVE R7 R1 - 0x5C200400, // 000E MOVE R8 R2 - 0x7C140600, // 000F CALL R5 3 - 0x80040A00, // 0010 RET 1 R5 - 0x70020056, // 0011 JMP #0069 - 0x1C140909, // 0012 EQ R5 R4 K9 - 0x78160008, // 0013 JMPF R5 #001D - 0x8C14010A, // 0014 GETMET R5 R0 K10 - 0x5C1C0200, // 0015 MOVE R7 R1 - 0x7C140400, // 0016 CALL R5 2 - 0x8C14010B, // 0017 GETMET R5 R0 K11 - 0x5C1C0200, // 0018 MOVE R7 R1 - 0x5C200400, // 0019 MOVE R8 R2 - 0x7C140600, // 001A CALL R5 3 - 0x80040A00, // 001B RET 1 R5 - 0x7002004B, // 001C JMP #0069 - 0x1C14090C, // 001D EQ R5 R4 K12 - 0x78160008, // 001E JMPF R5 #0028 - 0x8C14010A, // 001F GETMET R5 R0 K10 - 0x5C1C0200, // 0020 MOVE R7 R1 - 0x7C140400, // 0021 CALL R5 2 - 0x8C14010D, // 0022 GETMET R5 R0 K13 - 0x5C1C0200, // 0023 MOVE R7 R1 - 0x5C200400, // 0024 MOVE R8 R2 - 0x7C140600, // 0025 CALL R5 3 - 0x80040A00, // 0026 RET 1 R5 - 0x70020040, // 0027 JMP #0069 - 0x54160003, // 0028 LDINT R5 4 - 0x1C140805, // 0029 EQ R5 R4 R5 - 0x78160005, // 002A JMPF R5 #0031 - 0x8C14010E, // 002B GETMET R5 R0 K14 - 0x5C1C0200, // 002C MOVE R7 R1 - 0x5C200400, // 002D MOVE R8 R2 - 0x7C140600, // 002E CALL R5 3 - 0x80040A00, // 002F RET 1 R5 - 0x70020037, // 0030 JMP #0069 - 0x54160004, // 0031 LDINT R5 5 - 0x1C140805, // 0032 EQ R5 R4 R5 - 0x78160005, // 0033 JMPF R5 #003A - 0x8C14010F, // 0034 GETMET R5 R0 K15 - 0x5C1C0200, // 0035 MOVE R7 R1 - 0x5C200400, // 0036 MOVE R8 R2 - 0x7C140600, // 0037 CALL R5 3 - 0x80040A00, // 0038 RET 1 R5 - 0x7002002E, // 0039 JMP #0069 - 0x54160005, // 003A LDINT R5 6 - 0x1C140805, // 003B EQ R5 R4 R5 - 0x78160008, // 003C JMPF R5 #0046 - 0x8C14010A, // 003D GETMET R5 R0 K10 - 0x5C1C0200, // 003E MOVE R7 R1 - 0x7C140400, // 003F CALL R5 2 - 0x8C140110, // 0040 GETMET R5 R0 K16 - 0x5C1C0200, // 0041 MOVE R7 R1 - 0x5C200400, // 0042 MOVE R8 R2 - 0x7C140600, // 0043 CALL R5 3 - 0x80040A00, // 0044 RET 1 R5 - 0x70020022, // 0045 JMP #0069 - 0x54160006, // 0046 LDINT R5 7 - 0x1C140805, // 0047 EQ R5 R4 R5 - 0x78160005, // 0048 JMPF R5 #004F - 0x8C140111, // 0049 GETMET R5 R0 K17 - 0x5C1C0200, // 004A MOVE R7 R1 - 0x5C200400, // 004B MOVE R8 R2 - 0x7C140600, // 004C CALL R5 3 - 0x80040A00, // 004D RET 1 R5 - 0x70020019, // 004E JMP #0069 - 0x54160007, // 004F LDINT R5 8 - 0x1C140805, // 0050 EQ R5 R4 R5 - 0x78160005, // 0051 JMPF R5 #0058 - 0x8C140112, // 0052 GETMET R5 R0 K18 - 0x5C1C0200, // 0053 MOVE R7 R1 - 0x5C200400, // 0054 MOVE R8 R2 - 0x7C140600, // 0055 CALL R5 3 - 0x80040A00, // 0056 RET 1 R5 - 0x70020010, // 0057 JMP #0069 - 0x54160008, // 0058 LDINT R5 9 - 0x1C140805, // 0059 EQ R5 R4 R5 - 0x78160005, // 005A JMPF R5 #0061 - 0x8C140113, // 005B GETMET R5 R0 K19 - 0x5C1C0200, // 005C MOVE R7 R1 - 0x5C200400, // 005D MOVE R8 R2 - 0x7C140600, // 005E CALL R5 3 - 0x80040A00, // 005F RET 1 R5 - 0x70020007, // 0060 JMP #0069 - 0x54160009, // 0061 LDINT R5 10 - 0x1C140805, // 0062 EQ R5 R4 R5 - 0x78160004, // 0063 JMPF R5 #0069 - 0x8C140114, // 0064 GETMET R5 R0 K20 - 0x5C1C0200, // 0065 MOVE R7 R1 - 0x5C200400, // 0066 MOVE R8 R2 - 0x7C140600, // 0067 CALL R5 3 - 0x80040A00, // 0068 RET 1 R5 - 0x50140000, // 0069 LDBOOL R5 0 0 - 0x80040A00, // 006A RET 1 R5 + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 }) ) ); @@ -1372,18 +2223,19 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */ 1, /* has sup protos */ ( &(const struct bproto*[ 2]) { be_nested_proto( - 23, /* nstack */ + 19, /* nstack */ 4, /* argc */ 0, /* varg */ 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ + ( &(const bupvaldesc[ 3]) { /* upvals */ be_local_const_upval(1, 1), + be_local_const_upval(1, 0), be_local_const_upval(1, 3), }), 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[38]) { /* constants */ + ( &(const bvalue[28]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(get_attribute_name), @@ -1393,39 +2245,29 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */ /* K6 */ be_nested_str_weak(_X29), /* K7 */ be_nested_str_weak(), /* K8 */ be_nested_str_weak(read_attribute), - /* K9 */ be_nested_str_weak(AttributeReportIB), - /* K10 */ be_nested_str_weak(attribute_data), - /* K11 */ be_nested_str_weak(AttributeDataIB), - /* K12 */ be_nested_str_weak(data_version), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(path), - /* K15 */ be_nested_str_weak(AttributePathIB), - /* K16 */ be_nested_str_weak(endpoint), - /* K17 */ be_nested_str_weak(data), - /* K18 */ be_nested_str_weak(to_TLV), - /* K19 */ be_nested_str_weak(encode_len), - /* K20 */ be_nested_str_weak(tlv2raw), - /* K21 */ be_nested_str_weak(tasmota), - /* K22 */ be_nested_str_weak(log), - /* K23 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), - /* K24 */ be_nested_str_weak(local_session_id), - /* K25 */ be_const_int(3), - /* K26 */ be_nested_str_weak(status), - /* K27 */ be_nested_str_weak(attribute_status), - /* K28 */ be_nested_str_weak(AttributeStatusIB), - /* K29 */ be_nested_str_weak(StatusIB), - /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K31 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K32 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), - /* K33 */ be_nested_str_weak(attribute_reports), - /* K34 */ be_const_int(0), - /* K35 */ be_nested_str_weak(push), - /* K36 */ be_nested_str_weak(IM_ReportData), - /* K37 */ be_nested_str_weak(MAX_MESSAGE), + /* K9 */ be_nested_str_weak(tlv_solo), + /* K10 */ be_nested_str_weak(to_str_val), + /* K11 */ be_nested_str_weak(attributedata2raw), + /* K12 */ be_nested_str_weak(tasmota), + /* K13 */ be_nested_str_weak(log), + /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K15 */ be_nested_str_weak(local_session_id), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(status), + /* K18 */ be_nested_str_weak(attributestatus2raw), + /* K19 */ be_nested_str_weak(loglevel), + /* K20 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K21 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K22 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), + /* K23 */ be_nested_str_weak(attribute_reports), + /* K24 */ be_const_int(0), + /* K25 */ be_nested_str_weak(push), + /* K26 */ be_nested_str_weak(IM_ReportData), + /* K27 */ be_nested_str_weak(MAX_MESSAGE), }), be_str_weak(read_single_attribute), &be_const_str_solidified, - ( &(const binstruction[205]) { /* code */ + ( &(const binstruction[148]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0xB8160000, // 0002 GETNGBL R5 K0 @@ -1441,196 +2283,139 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */ 0x5C140C00, // 000C MOVE R5 R6 0x4C180000, // 000D LDNIL R6 0x20180206, // 000E NE R6 R1 R6 - 0x781A0004, // 000F JMPF R6 #0015 + 0x781A0006, // 000F JMPF R6 #0017 0x8C180308, // 0010 GETMET R6 R1 K8 0x68200000, // 0011 GETUPV R8 U0 0x5C240400, // 0012 MOVE R9 R2 - 0x7C180600, // 0013 CALL R6 3 - 0x70020000, // 0014 JMP #0016 - 0x4C180000, // 0015 LDNIL R6 - 0x501C0200, // 0016 LDBOOL R7 1 0 - 0x4C200000, // 0017 LDNIL R8 - 0x4C240000, // 0018 LDNIL R9 - 0x20240C09, // 0019 NE R9 R6 R9 - 0x7826003A, // 001A JMPF R9 #0056 - 0x60240008, // 001B GETGBL R9 G8 - 0x5C280C00, // 001C MOVE R10 R6 - 0x7C240200, // 001D CALL R9 1 - 0xB82A0000, // 001E GETNGBL R10 K0 - 0x8C281509, // 001F GETMET R10 R10 K9 - 0x7C280200, // 0020 CALL R10 1 - 0xB82E0000, // 0021 GETNGBL R11 K0 - 0x8C2C170B, // 0022 GETMET R11 R11 K11 - 0x7C2C0200, // 0023 CALL R11 1 - 0x902A140B, // 0024 SETMBR R10 K10 R11 - 0x882C150A, // 0025 GETMBR R11 R10 K10 - 0x902E190D, // 0026 SETMBR R11 K12 K13 - 0x882C150A, // 0027 GETMBR R11 R10 K10 - 0xB8320000, // 0028 GETNGBL R12 K0 - 0x8C30190F, // 0029 GETMET R12 R12 K15 - 0x7C300200, // 002A CALL R12 1 - 0x902E1C0C, // 002B SETMBR R11 K14 R12 - 0x882C150A, // 002C GETMBR R11 R10 K10 - 0x882C170E, // 002D GETMBR R11 R11 K14 - 0x88300510, // 002E GETMBR R12 R2 K16 - 0x902E200C, // 002F SETMBR R11 K16 R12 - 0x882C150A, // 0030 GETMBR R11 R10 K10 - 0x882C170E, // 0031 GETMBR R11 R11 K14 - 0x88300503, // 0032 GETMBR R12 R2 K3 - 0x902E060C, // 0033 SETMBR R11 K3 R12 - 0x882C150A, // 0034 GETMBR R11 R10 K10 - 0x882C170E, // 0035 GETMBR R11 R11 K14 - 0x88300504, // 0036 GETMBR R12 R2 K4 - 0x902E080C, // 0037 SETMBR R11 K4 R12 - 0x882C150A, // 0038 GETMBR R11 R10 K10 - 0x902E2206, // 0039 SETMBR R11 K17 R6 - 0x8C2C1512, // 003A GETMET R11 R10 K18 - 0x7C2C0200, // 003B CALL R11 1 - 0x8C301713, // 003C GETMET R12 R11 K19 - 0x7C300200, // 003D CALL R12 1 - 0x60340015, // 003E GETGBL R13 G21 - 0x5C381800, // 003F MOVE R14 R12 - 0x7C340200, // 0040 CALL R13 1 - 0x8C381714, // 0041 GETMET R14 R11 K20 - 0x5C401A00, // 0042 MOVE R16 R13 - 0x7C380400, // 0043 CALL R14 2 - 0x5C201C00, // 0044 MOVE R8 R14 - 0x68380001, // 0045 GETUPV R14 U1 - 0x743A000D, // 0046 JMPT R14 #0055 - 0xB83A2A00, // 0047 GETNGBL R14 K21 - 0x8C381D16, // 0048 GETMET R14 R14 K22 - 0x60400018, // 0049 GETGBL R16 G24 - 0x58440017, // 004A LDCONST R17 K23 - 0x68480000, // 004B GETUPV R18 U0 - 0x88482518, // 004C GETMBR R18 R18 K24 - 0x604C0008, // 004D GETGBL R19 G8 - 0x5C500400, // 004E MOVE R20 R2 - 0x7C4C0200, // 004F CALL R19 1 - 0x5C500A00, // 0050 MOVE R20 R5 - 0x5C541200, // 0051 MOVE R21 R9 - 0x7C400A00, // 0052 CALL R16 5 - 0x58440019, // 0053 LDCONST R17 K25 - 0x7C380600, // 0054 CALL R14 3 - 0x70020055, // 0055 JMP #00AC - 0x8824051A, // 0056 GETMBR R9 R2 K26 - 0x4C280000, // 0057 LDNIL R10 - 0x2024120A, // 0058 NE R9 R9 R10 - 0x78260043, // 0059 JMPF R9 #009E - 0x780E0041, // 005A JMPF R3 #009D - 0xB8260000, // 005B GETNGBL R9 K0 - 0x8C241309, // 005C GETMET R9 R9 K9 - 0x7C240200, // 005D CALL R9 1 - 0xB82A0000, // 005E GETNGBL R10 K0 - 0x8C28151C, // 005F GETMET R10 R10 K28 - 0x7C280200, // 0060 CALL R10 1 - 0x9026360A, // 0061 SETMBR R9 K27 R10 - 0x8828131B, // 0062 GETMBR R10 R9 K27 - 0xB82E0000, // 0063 GETNGBL R11 K0 - 0x8C2C170F, // 0064 GETMET R11 R11 K15 - 0x7C2C0200, // 0065 CALL R11 1 - 0x902A1C0B, // 0066 SETMBR R10 K14 R11 - 0x8828131B, // 0067 GETMBR R10 R9 K27 - 0xB82E0000, // 0068 GETNGBL R11 K0 - 0x8C2C171D, // 0069 GETMET R11 R11 K29 - 0x7C2C0200, // 006A CALL R11 1 - 0x902A340B, // 006B SETMBR R10 K26 R11 - 0x8828131B, // 006C GETMBR R10 R9 K27 - 0x8828150E, // 006D GETMBR R10 R10 K14 - 0x882C0510, // 006E GETMBR R11 R2 K16 - 0x902A200B, // 006F SETMBR R10 K16 R11 - 0x8828131B, // 0070 GETMBR R10 R9 K27 - 0x8828150E, // 0071 GETMBR R10 R10 K14 - 0x882C0503, // 0072 GETMBR R11 R2 K3 - 0x902A060B, // 0073 SETMBR R10 K3 R11 - 0x8828131B, // 0074 GETMBR R10 R9 K27 - 0x8828150E, // 0075 GETMBR R10 R10 K14 - 0x882C0504, // 0076 GETMBR R11 R2 K4 - 0x902A080B, // 0077 SETMBR R10 K4 R11 - 0x8828131B, // 0078 GETMBR R10 R9 K27 - 0x8828151A, // 0079 GETMBR R10 R10 K26 - 0x882C051A, // 007A GETMBR R11 R2 K26 - 0x902A340B, // 007B SETMBR R10 K26 R11 - 0x8C281312, // 007C GETMET R10 R9 K18 - 0x7C280200, // 007D CALL R10 1 - 0x8C2C1513, // 007E GETMET R11 R10 K19 - 0x7C2C0200, // 007F CALL R11 1 - 0x60300015, // 0080 GETGBL R12 G21 - 0x5C341600, // 0081 MOVE R13 R11 - 0x7C300200, // 0082 CALL R12 1 - 0x8C341514, // 0083 GETMET R13 R10 K20 - 0x5C3C1800, // 0084 MOVE R15 R12 - 0x7C340400, // 0085 CALL R13 2 - 0x5C201A00, // 0086 MOVE R8 R13 - 0xB8362A00, // 0087 GETNGBL R13 K21 - 0x8C341B16, // 0088 GETMET R13 R13 K22 - 0x603C0018, // 0089 GETGBL R15 G24 - 0x5840001E, // 008A LDCONST R16 K30 - 0x68440000, // 008B GETUPV R17 U0 - 0x88442318, // 008C GETMBR R17 R17 K24 - 0x60480008, // 008D GETGBL R18 G8 - 0x5C4C0400, // 008E MOVE R19 R2 - 0x7C480200, // 008F CALL R18 1 - 0x5C4C0A00, // 0090 MOVE R19 R5 - 0x8850051A, // 0091 GETMBR R20 R2 K26 - 0x8854051A, // 0092 GETMBR R21 R2 K26 - 0xB85A0000, // 0093 GETNGBL R22 K0 - 0x88582D1F, // 0094 GETMBR R22 R22 K31 - 0x1C542A16, // 0095 EQ R21 R21 R22 - 0x78560001, // 0096 JMPF R21 #0099 - 0x5854001F, // 0097 LDCONST R21 K31 - 0x70020000, // 0098 JMP #009A - 0x58540007, // 0099 LDCONST R21 K7 - 0x7C3C0C00, // 009A CALL R15 6 - 0x58400019, // 009B LDCONST R16 K25 - 0x7C340600, // 009C CALL R13 3 - 0x7002000D, // 009D JMP #00AC - 0xB8262A00, // 009E GETNGBL R9 K21 - 0x8C241316, // 009F GETMET R9 R9 K22 - 0x602C0018, // 00A0 GETGBL R11 G24 - 0x58300020, // 00A1 LDCONST R12 K32 - 0x68340000, // 00A2 GETUPV R13 U0 - 0x88341B18, // 00A3 GETMBR R13 R13 K24 - 0x60380008, // 00A4 GETGBL R14 G8 - 0x5C3C0400, // 00A5 MOVE R15 R2 - 0x7C380200, // 00A6 CALL R14 1 - 0x5C3C0A00, // 00A7 MOVE R15 R5 - 0x7C2C0800, // 00A8 CALL R11 4 - 0x58300019, // 00A9 LDCONST R12 K25 - 0x7C240600, // 00AA CALL R9 3 - 0x501C0000, // 00AB LDBOOL R7 0 0 - 0x7822001E, // 00AC JMPF R8 #00CC - 0x6024000C, // 00AD GETGBL R9 G12 - 0x88280121, // 00AE GETMBR R10 R0 K33 - 0x7C240200, // 00AF CALL R9 1 - 0x1C241322, // 00B0 EQ R9 R9 K34 - 0x78260004, // 00B1 JMPF R9 #00B7 - 0x88240121, // 00B2 GETMBR R9 R0 K33 - 0x8C241323, // 00B3 GETMET R9 R9 K35 - 0x5C2C1000, // 00B4 MOVE R11 R8 - 0x7C240400, // 00B5 CALL R9 2 - 0x70020014, // 00B6 JMP #00CC - 0x5425FFFE, // 00B7 LDINT R9 -1 - 0x88280121, // 00B8 GETMBR R10 R0 K33 - 0x94241409, // 00B9 GETIDX R9 R10 R9 - 0x602C000C, // 00BA GETGBL R11 G12 - 0x5C301200, // 00BB MOVE R12 R9 - 0x7C2C0200, // 00BC CALL R11 1 - 0x6030000C, // 00BD GETGBL R12 G12 - 0x5C341000, // 00BE MOVE R13 R8 - 0x7C300200, // 00BF CALL R12 1 - 0x002C160C, // 00C0 ADD R11 R11 R12 - 0xB8320000, // 00C1 GETNGBL R12 K0 - 0x88301924, // 00C2 GETMBR R12 R12 K36 - 0x88301925, // 00C3 GETMBR R12 R12 K37 - 0x182C160C, // 00C4 LE R11 R11 R12 - 0x782E0001, // 00C5 JMPF R11 #00C8 - 0x402C1208, // 00C6 CONNECT R11 R9 R8 - 0x70020003, // 00C7 JMP #00CC - 0x88280121, // 00C8 GETMBR R10 R0 K33 - 0x8C281523, // 00C9 GETMET R10 R10 K35 - 0x5C301000, // 00CA MOVE R12 R8 - 0x7C280400, // 00CB CALL R10 2 - 0x80040E00, // 00CC RET 1 R7 + 0x68280001, // 0013 GETUPV R10 U1 + 0x88281509, // 0014 GETMBR R10 R10 K9 + 0x7C180800, // 0015 CALL R6 4 + 0x70020000, // 0016 JMP #0018 + 0x4C180000, // 0017 LDNIL R6 + 0x501C0200, // 0018 LDBOOL R7 1 0 + 0x4C200000, // 0019 LDNIL R8 + 0x4C240000, // 001A LDNIL R9 + 0x20240C09, // 001B NE R9 R6 R9 + 0x7826001C, // 001C JMPF R9 #003A + 0x8C240D0A, // 001D GETMET R9 R6 K10 + 0x7C240200, // 001E CALL R9 1 + 0x60280015, // 001F GETGBL R10 G21 + 0x542E002F, // 0020 LDINT R11 48 + 0x7C280200, // 0021 CALL R10 1 + 0x5C201400, // 0022 MOVE R8 R10 + 0x68280001, // 0023 GETUPV R10 U1 + 0x8C28150B, // 0024 GETMET R10 R10 K11 + 0x5C301000, // 0025 MOVE R12 R8 + 0x5C340400, // 0026 MOVE R13 R2 + 0x5C380C00, // 0027 MOVE R14 R6 + 0x7C280800, // 0028 CALL R10 4 + 0x68280002, // 0029 GETUPV R10 U2 + 0x742A000D, // 002A JMPT R10 #0039 + 0xB82A1800, // 002B GETNGBL R10 K12 + 0x8C28150D, // 002C GETMET R10 R10 K13 + 0x60300018, // 002D GETGBL R12 G24 + 0x5834000E, // 002E LDCONST R13 K14 + 0x68380000, // 002F GETUPV R14 U0 + 0x88381D0F, // 0030 GETMBR R14 R14 K15 + 0x603C0008, // 0031 GETGBL R15 G8 + 0x5C400400, // 0032 MOVE R16 R2 + 0x7C3C0200, // 0033 CALL R15 1 + 0x5C400A00, // 0034 MOVE R16 R5 + 0x5C441200, // 0035 MOVE R17 R9 + 0x7C300A00, // 0036 CALL R12 5 + 0x58340010, // 0037 LDCONST R13 K16 + 0x7C280600, // 0038 CALL R10 3 + 0x70020038, // 0039 JMP #0073 + 0x88240511, // 003A GETMBR R9 R2 K17 + 0x4C280000, // 003B LDNIL R10 + 0x2024120A, // 003C NE R9 R9 R10 + 0x78260026, // 003D JMPF R9 #0065 + 0x780E0024, // 003E JMPF R3 #0064 + 0x60240015, // 003F GETGBL R9 G21 + 0x542A002F, // 0040 LDINT R10 48 + 0x7C240200, // 0041 CALL R9 1 + 0x5C201200, // 0042 MOVE R8 R9 + 0x68240001, // 0043 GETUPV R9 U1 + 0x8C241312, // 0044 GETMET R9 R9 K18 + 0x5C2C1000, // 0045 MOVE R11 R8 + 0x5C300400, // 0046 MOVE R12 R2 + 0x88340511, // 0047 GETMBR R13 R2 K17 + 0x7C240800, // 0048 CALL R9 4 + 0xB8261800, // 0049 GETNGBL R9 K12 + 0x8C241313, // 004A GETMET R9 R9 K19 + 0x582C0010, // 004B LDCONST R11 K16 + 0x7C240400, // 004C CALL R9 2 + 0x78260015, // 004D JMPF R9 #0064 + 0xB8261800, // 004E GETNGBL R9 K12 + 0x8C24130D, // 004F GETMET R9 R9 K13 + 0x602C0018, // 0050 GETGBL R11 G24 + 0x58300014, // 0051 LDCONST R12 K20 + 0x68340000, // 0052 GETUPV R13 U0 + 0x88341B0F, // 0053 GETMBR R13 R13 K15 + 0x60380008, // 0054 GETGBL R14 G8 + 0x5C3C0400, // 0055 MOVE R15 R2 + 0x7C380200, // 0056 CALL R14 1 + 0x5C3C0A00, // 0057 MOVE R15 R5 + 0x88400511, // 0058 GETMBR R16 R2 K17 + 0x88440511, // 0059 GETMBR R17 R2 K17 + 0xB84A0000, // 005A GETNGBL R18 K0 + 0x88482515, // 005B GETMBR R18 R18 K21 + 0x1C442212, // 005C EQ R17 R17 R18 + 0x78460001, // 005D JMPF R17 #0060 + 0x58440015, // 005E LDCONST R17 K21 + 0x70020000, // 005F JMP #0061 + 0x58440007, // 0060 LDCONST R17 K7 + 0x7C2C0C00, // 0061 CALL R11 6 + 0x58300010, // 0062 LDCONST R12 K16 + 0x7C240600, // 0063 CALL R9 3 + 0x7002000D, // 0064 JMP #0073 + 0xB8261800, // 0065 GETNGBL R9 K12 + 0x8C24130D, // 0066 GETMET R9 R9 K13 + 0x602C0018, // 0067 GETGBL R11 G24 + 0x58300016, // 0068 LDCONST R12 K22 + 0x68340000, // 0069 GETUPV R13 U0 + 0x88341B0F, // 006A GETMBR R13 R13 K15 + 0x60380008, // 006B GETGBL R14 G8 + 0x5C3C0400, // 006C MOVE R15 R2 + 0x7C380200, // 006D CALL R14 1 + 0x5C3C0A00, // 006E MOVE R15 R5 + 0x7C2C0800, // 006F CALL R11 4 + 0x58300010, // 0070 LDCONST R12 K16 + 0x7C240600, // 0071 CALL R9 3 + 0x501C0000, // 0072 LDBOOL R7 0 0 + 0x7822001E, // 0073 JMPF R8 #0093 + 0x6024000C, // 0074 GETGBL R9 G12 + 0x88280117, // 0075 GETMBR R10 R0 K23 + 0x7C240200, // 0076 CALL R9 1 + 0x1C241318, // 0077 EQ R9 R9 K24 + 0x78260004, // 0078 JMPF R9 #007E + 0x88240117, // 0079 GETMBR R9 R0 K23 + 0x8C241319, // 007A GETMET R9 R9 K25 + 0x5C2C1000, // 007B MOVE R11 R8 + 0x7C240400, // 007C CALL R9 2 + 0x70020014, // 007D JMP #0093 + 0x5425FFFE, // 007E LDINT R9 -1 + 0x88280117, // 007F GETMBR R10 R0 K23 + 0x94241409, // 0080 GETIDX R9 R10 R9 + 0x602C000C, // 0081 GETGBL R11 G12 + 0x5C301200, // 0082 MOVE R12 R9 + 0x7C2C0200, // 0083 CALL R11 1 + 0x6030000C, // 0084 GETGBL R12 G12 + 0x5C341000, // 0085 MOVE R13 R8 + 0x7C300200, // 0086 CALL R12 1 + 0x002C160C, // 0087 ADD R11 R11 R12 + 0xB8320000, // 0088 GETNGBL R12 K0 + 0x8830191A, // 0089 GETMBR R12 R12 K26 + 0x8830191B, // 008A GETMBR R12 R12 K27 + 0x182C160C, // 008B LE R11 R11 R12 + 0x782E0001, // 008C JMPF R11 #008F + 0x402C1208, // 008D CONNECT R11 R9 R8 + 0x70020003, // 008E JMP #0093 + 0x88280117, // 008F GETMBR R10 R0 K23 + 0x8C281519, // 0090 GETMET R10 R10 K25 + 0x5C301000, // 0091 MOVE R12 R8 + 0x7C280400, // 0092 CALL R10 2 + 0x80040E00, // 0093 RET 1 R7 }) ), be_nested_proto( @@ -1788,62 +2573,12 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */ /******************************************************************** -** Solidified function: find_sendqueue_by_exchangeid -********************************************************************/ -be_local_closure(Matter_IM_find_sendqueue_by_exchangeid, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(get_exchangeid), - /* K3 */ be_const_int(1), - }), - be_str_weak(find_sendqueue_by_exchangeid), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x4C080000, // 0003 LDNIL R2 - 0x80040400, // 0004 RET 1 R2 - 0x58080000, // 0005 LDCONST R2 K0 - 0x600C000C, // 0006 GETGBL R3 G12 - 0x88100101, // 0007 GETMBR R4 R0 K1 - 0x7C0C0200, // 0008 CALL R3 1 - 0x140C0403, // 0009 LT R3 R2 R3 - 0x780E0008, // 000A JMPF R3 #0014 - 0x880C0101, // 000B GETMBR R3 R0 K1 - 0x940C0602, // 000C GETIDX R3 R3 R2 - 0x8C100702, // 000D GETMET R4 R3 K2 - 0x7C100200, // 000E CALL R4 1 - 0x1C100801, // 000F EQ R4 R4 R1 - 0x78120000, // 0010 JMPF R4 #0012 - 0x80040600, // 0011 RET 1 R3 - 0x00080503, // 0012 ADD R2 R2 K3 - 0x7001FFF1, // 0013 JMP #0006 - 0x4C0C0000, // 0014 LDNIL R3 - 0x80040600, // 0015 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_incoming_ack +** Solidified function: report_data ********************************************************************/ -be_local_closure(Matter_IM_process_incoming_ack, /* name */ +be_local_closure(Matter_IM_report_data, /* name */ be_nested_proto( 6, /* nstack */ - 2, /* argc */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1851,23 +2586,21 @@ be_local_closure(Matter_IM_process_incoming_ack, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(find_sendqueue_by_exchangeid), - /* K1 */ be_nested_str_weak(exchange_id), - /* K2 */ be_nested_str_weak(ack_received), + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(ReportDataMessage), + /* K2 */ be_nested_str_weak(from_TLV), }), - be_str_weak(process_incoming_ack), + be_str_weak(report_data), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x88100301, // 0001 GETMBR R4 R1 K1 - 0x7C080400, // 0002 CALL R2 2 - 0x780A0003, // 0003 JMPF R2 #0008 - 0x8C0C0502, // 0004 GETMET R3 R2 K2 - 0x5C140200, // 0005 MOVE R5 R1 - 0x7C0C0400, // 0006 CALL R3 2 - 0x80040600, // 0007 RET 1 R3 - 0x500C0000, // 0008 LDBOOL R3 0 0 - 0x80040600, // 0009 RET 1 R3 + ( &(const binstruction[ 8]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0x50100000, // 0006 LDBOOL R4 0 0 + 0x80040800, // 0007 RET 1 R4 }) ) ); @@ -1875,59 +2608,76 @@ be_local_closure(Matter_IM_process_incoming_ack, /* name */ /******************************************************************** -** Solidified function: process_read_request +** Solidified function: attributestatus2raw ********************************************************************/ -be_local_closure(Matter_IM_process_read_request, /* name */ +be_local_closure(Matter_IM_attributestatus2raw, /* name */ be_nested_proto( 9, /* nstack */ - 3, /* argc */ + 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(device), - /* K1 */ be_nested_str_weak(profiler), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(read_request_start), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(ReadRequestMessage), - /* K6 */ be_nested_str_weak(from_TLV), - /* K7 */ be_nested_str_weak(attributes_requests), - /* K8 */ be_nested_str_weak(_inner_process_read_request), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(send_report_data), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(path2raw), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(status), + /* K5 */ be_const_int(2), }), - be_str_weak(process_read_request), + be_str_weak(attributestatus2raw), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x58140003, // 0003 LDCONST R5 K3 - 0x7C0C0400, // 0004 CALL R3 2 - 0xB80E0800, // 0005 GETNGBL R3 K4 - 0x8C0C0705, // 0006 GETMET R3 R3 K5 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0706, // 0008 GETMET R3 R3 K6 - 0x5C140400, // 0009 MOVE R5 R2 - 0x7C0C0400, // 000A CALL R3 2 - 0x88100707, // 000B GETMBR R4 R3 K7 - 0x4C140000, // 000C LDNIL R5 - 0x20100805, // 000D NE R4 R4 R5 - 0x78120007, // 000E JMPF R4 #0017 - 0x8C100108, // 000F GETMET R4 R0 K8 - 0x88180309, // 0010 GETMBR R6 R1 K9 - 0x5C1C0600, // 0011 MOVE R7 R3 - 0x7C100600, // 0012 CALL R4 3 - 0x8C14010A, // 0013 GETMET R5 R0 K10 - 0x5C1C0200, // 0014 MOVE R7 R1 - 0x5C200800, // 0015 MOVE R8 R4 - 0x7C140600, // 0016 CALL R5 3 - 0x50100200, // 0017 LDBOOL R4 1 0 - 0x80040800, // 0018 RET 1 R4 + ( &(const binstruction[47]) { /* code */ + 0x8C100300, // 0000 GETMET R4 R1 K0 + 0x541A0014, // 0001 LDINT R6 21 + 0x581C0001, // 0002 LDCONST R7 K1 + 0x7C100600, // 0003 CALL R4 3 + 0x8C100300, // 0004 GETMET R4 R1 K0 + 0x541A34FF, // 0005 LDINT R6 13568 + 0x541DFFFD, // 0006 LDINT R7 -2 + 0x7C100600, // 0007 CALL R4 3 + 0x8C100102, // 0008 GETMET R4 R0 K2 + 0x5C180200, // 0009 MOVE R6 R1 + 0x5C1C0400, // 000A MOVE R7 R2 + 0x58200003, // 000B LDCONST R8 K3 + 0x7C100800, // 000C CALL R4 4 + 0x8C100300, // 000D GETMET R4 R1 K0 + 0x541A3500, // 000E LDINT R6 13569 + 0x541DFFFD, // 000F LDINT R7 -2 + 0x7C100600, // 0010 CALL R4 3 + 0x88100504, // 0011 GETMBR R4 R2 K4 + 0x541600FE, // 0012 LDINT R5 255 + 0x18100805, // 0013 LE R4 R4 R5 + 0x78120008, // 0014 JMPF R4 #001E + 0x8C100300, // 0015 GETMET R4 R1 K0 + 0x541A23FF, // 0016 LDINT R6 9216 + 0x541DFFFD, // 0017 LDINT R7 -2 + 0x7C100600, // 0018 CALL R4 3 + 0x8C100300, // 0019 GETMET R4 R1 K0 + 0x88180504, // 001A GETMBR R6 R2 K4 + 0x581C0001, // 001B LDCONST R7 K1 + 0x7C100600, // 001C CALL R4 3 + 0x70020007, // 001D JMP #0026 + 0x8C100300, // 001E GETMET R4 R1 K0 + 0x541A24FF, // 001F LDINT R6 9472 + 0x541DFFFD, // 0020 LDINT R7 -2 + 0x7C100600, // 0021 CALL R4 3 + 0x8C100300, // 0022 GETMET R4 R1 K0 + 0x88180504, // 0023 GETMBR R6 R2 K4 + 0x581C0005, // 0024 LDCONST R7 K5 + 0x7C100600, // 0025 CALL R4 3 + 0x8C100300, // 0026 GETMET R4 R1 K0 + 0x541A1817, // 0027 LDINT R6 6168 + 0x541DFFFD, // 0028 LDINT R7 -2 + 0x7C100600, // 0029 CALL R4 3 + 0x8C100300, // 002A GETMET R4 R1 K0 + 0x541A0017, // 002B LDINT R6 24 + 0x581C0001, // 002C LDCONST R7 K1 + 0x7C100600, // 002D CALL R4 3 + 0x80000000, // 002E RET 0 }) ) ); @@ -1935,12 +2685,12 @@ be_local_closure(Matter_IM_process_read_request, /* name */ /******************************************************************** -** Solidified function: send_report_data +** Solidified function: send_subscribe_response ********************************************************************/ -be_local_closure(Matter_IM_send_report_data, /* name */ +be_local_closure(Matter_IM_send_subscribe_response, /* name */ be_nested_proto( - 9, /* nstack */ - 3, /* argc */ + 11, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1951,105 +2701,21 @@ be_local_closure(Matter_IM_send_report_data, /* name */ /* K0 */ be_nested_str_weak(send_queue), /* K1 */ be_nested_str_weak(push), /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_ReportData), - }), - be_str_weak(send_report_data), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_status_response -********************************************************************/ -be_local_closure(Matter_IM_process_status_response, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(findsubval), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(find_sendqueue_by_exchangeid), - /* K3 */ be_nested_str_weak(exchange_id), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(SUCCESS), - /* K6 */ be_nested_str_weak(status_ok_received), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), - /* K10 */ be_nested_str_weak(session), - /* K11 */ be_nested_str_weak(local_session_id), - /* K12 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), - /* K13 */ be_const_int(3), - /* K14 */ be_nested_str_weak(status_error_received), - /* K15 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + /* K3 */ be_nested_str_weak(IM_SubscribeResponse), }), - be_str_weak(process_status_response), + be_str_weak(send_subscribe_response), &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x8C0C0500, // 0000 GETMET R3 R2 K0 - 0x58140001, // 0001 LDCONST R5 K1 - 0x541A00FE, // 0002 LDINT R6 255 - 0x7C0C0600, // 0003 CALL R3 3 - 0x8C100102, // 0004 GETMET R4 R0 K2 - 0x88180303, // 0005 GETMBR R6 R1 K3 - 0x7C100400, // 0006 CALL R4 2 - 0xB8160800, // 0007 GETNGBL R5 K4 - 0x88140B05, // 0008 GETMBR R5 R5 K5 - 0x1C140605, // 0009 EQ R5 R3 R5 - 0x78160010, // 000A JMPF R5 #001C - 0x78120004, // 000B JMPF R4 #0011 - 0x8C140906, // 000C GETMET R5 R4 K6 - 0x5C1C0200, // 000D MOVE R7 R1 - 0x7C140400, // 000E CALL R5 2 - 0x80040A00, // 000F RET 1 R5 - 0x70020009, // 0010 JMP #001B - 0xB8160E00, // 0011 GETNGBL R5 K7 - 0x8C140B08, // 0012 GETMET R5 R5 K8 - 0x601C0018, // 0013 GETGBL R7 G24 - 0x58200009, // 0014 LDCONST R8 K9 - 0x8824030A, // 0015 GETMBR R9 R1 K10 - 0x8824130B, // 0016 GETMBR R9 R9 K11 - 0x88280303, // 0017 GETMBR R10 R1 K3 - 0x7C1C0600, // 0018 CALL R7 3 - 0x54220003, // 0019 LDINT R8 4 - 0x7C140600, // 001A CALL R5 3 - 0x7002000E, // 001B JMP #002B - 0xB8160E00, // 001C GETNGBL R5 K7 - 0x8C140B08, // 001D GETMET R5 R5 K8 - 0x601C0018, // 001E GETGBL R7 G24 - 0x5820000C, // 001F LDCONST R8 K12 - 0x5C240600, // 0020 MOVE R9 R3 - 0x7C1C0400, // 0021 CALL R7 2 - 0x5820000D, // 0022 LDCONST R8 K13 - 0x7C140600, // 0023 CALL R5 3 - 0x78120005, // 0024 JMPF R4 #002B - 0x8C14090E, // 0025 GETMET R5 R4 K14 - 0x5C1C0200, // 0026 MOVE R7 R1 - 0x7C140400, // 0027 CALL R5 2 - 0x8C14010F, // 0028 GETMET R5 R0 K15 - 0x881C0303, // 0029 GETMBR R7 R1 K3 - 0x7C140400, // 002A CALL R5 2 - 0x50140000, // 002B LDBOOL R5 0 0 - 0x80040A00, // 002C RET 1 R5 + ( &(const binstruction[10]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0xB81A0400, // 0002 GETNGBL R6 K2 + 0x8C180D03, // 0003 GETMET R6 R6 K3 + 0x5C200200, // 0004 MOVE R8 R1 + 0x5C240400, // 0005 MOVE R9 R2 + 0x5C280600, // 0006 MOVE R10 R3 + 0x7C180800, // 0007 CALL R6 4 + 0x7C100400, // 0008 CALL R4 2 + 0x80000000, // 0009 RET 0 }) ) ); @@ -2057,11 +2723,11 @@ be_local_closure(Matter_IM_process_status_response, /* name */ /******************************************************************** -** Solidified function: process_write_response +** Solidified function: send_report_data ********************************************************************/ -be_local_closure(Matter_IM_process_write_response, /* name */ +be_local_closure(Matter_IM_send_report_data, /* name */ be_nested_proto( - 6, /* nstack */ + 9, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2069,22 +2735,24 @@ be_local_closure(Matter_IM_process_write_response, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(WriteResponseMessage), - /* K2 */ be_nested_str_weak(from_TLV), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_ReportData), }), - be_str_weak(process_write_response), + be_str_weak(send_report_data), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x50100000, // 0006 LDBOOL R4 0 0 - 0x80040800, // 0007 RET 1 R4 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 }) ) ); @@ -2092,11 +2760,11 @@ be_local_closure(Matter_IM_process_write_response, /* name */ /******************************************************************** -** Solidified function: send_subscribe_update +** Solidified function: find_sendqueue_by_exchangeid ********************************************************************/ -be_local_closure(Matter_IM_send_subscribe_update, /* name */ +be_local_closure(Matter_IM_find_sendqueue_by_exchangeid, /* name */ be_nested_proto( - 11, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2104,102 +2772,325 @@ be_local_closure(Matter_IM_send_subscribe_update, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(session), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(get_exchangeid), + /* K3 */ be_const_int(1), + }), + be_str_weak(find_sendqueue_by_exchangeid), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x4C080000, // 0003 LDNIL R2 + 0x80040400, // 0004 RET 1 R2 + 0x58080000, // 0005 LDCONST R2 K0 + 0x600C000C, // 0006 GETGBL R3 G12 + 0x88100101, // 0007 GETMBR R4 R0 K1 + 0x7C0C0200, // 0008 CALL R3 1 + 0x140C0403, // 0009 LT R3 R2 R3 + 0x780E0008, // 000A JMPF R3 #0014 + 0x880C0101, // 000B GETMBR R3 R0 K1 + 0x940C0602, // 000C GETIDX R3 R3 R2 + 0x8C100702, // 000D GETMET R4 R3 K2 + 0x7C100200, // 000E CALL R4 1 + 0x1C100801, // 000F EQ R4 R4 R1 + 0x78120000, // 0010 JMPF R4 #0012 + 0x80040600, // 0011 RET 1 R3 + 0x00080503, // 0012 ADD R2 R2 K3 + 0x7001FFF1, // 0013 JMP #0006 + 0x4C0C0000, // 0014 LDNIL R3 + 0x80040600, // 0015 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_read_request_solo +********************************************************************/ +be_local_closure(Matter_IM_process_read_request_solo, /* name */ + be_nested_proto( + 20, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[44]) { /* constants */ + /* K0 */ be_nested_str_weak(status), /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(ReadRequestMessage), - /* K3 */ be_nested_str_weak(fabric_filtered), - /* K4 */ be_nested_str_weak(attributes_requests), - /* K5 */ be_nested_str_weak(updates), - /* K6 */ be_nested_str_weak(AttributePathIB), - /* K7 */ be_nested_str_weak(endpoint), - /* K8 */ be_nested_str_weak(cluster), - /* K9 */ be_nested_str_weak(attribute), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(tasmota), - /* K13 */ be_nested_str_weak(log), - /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), - /* K15 */ be_nested_str_weak(local_session_id), - /* K16 */ be_nested_str_weak(subscription_id), - /* K17 */ be_const_int(3), - /* K18 */ be_nested_str_weak(is_keep_alive), - /* K19 */ be_nested_str_weak(_inner_process_read_request), - /* K20 */ be_nested_str_weak(suppress_response), - /* K21 */ be_nested_str_weak(IM_ReportDataSubscribed), - /* K22 */ be_nested_str_weak(_message_handler), - /* K23 */ be_nested_str_weak(send_queue), - /* K24 */ be_nested_str_weak(send_enqueued), + /* K2 */ be_nested_str_weak(INVALID_ACTION), + /* K3 */ be_nested_str_weak(device), + /* K4 */ be_nested_str_weak(process_attribute_read_solo), + /* K5 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K6 */ be_nested_str_weak(read_attribute), + /* K7 */ be_nested_str_weak(session), + /* K8 */ be_nested_str_weak(tlv_solo), + /* K9 */ be_nested_str_weak(profiler), + /* K10 */ be_nested_str_weak(log), + /* K11 */ be_nested_str_weak(read_request_solo_X20read_X20done), + /* K12 */ be_nested_str_weak(add), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(attributedata2raw), + /* K15 */ be_const_int(405077761), + /* K16 */ be_nested_str_weak(attributestatus2raw), + /* K17 */ be_nested_str_weak(tasmota), + /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED), + /* K19 */ be_nested_str_weak(local_session_id), + /* K20 */ be_const_int(3), + /* K21 */ be_nested_str_weak(build_response), + /* K22 */ be_nested_str_weak(message_handler), + /* K23 */ be_nested_str_weak(raw), + /* K24 */ be_nested_str_weak(clear), + /* K25 */ be_nested_str_weak(encode_frame), + /* K26 */ be_nested_str_weak(encrypt), + /* K27 */ be_nested_str_weak(loglevel), + /* K28 */ 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), + /* K29 */ be_nested_str_weak(message_counter), + /* K30 */ be_nested_str_weak(exchange_id), + /* K31 */ be_nested_str_weak(ack_message_counter), + /* K32 */ be_nested_str_weak(send_response_frame), + /* K33 */ be_nested_str_weak(RESPONSE_X20SENT), + /* K34 */ be_nested_str_weak(get_attribute_name), + /* K35 */ be_nested_str_weak(cluster), + /* K36 */ be_nested_str_weak(attribute), + /* K37 */ be_nested_str_weak(_X20_X28), + /* K38 */ be_nested_str_weak(_X29), + /* K39 */ be_nested_str_weak(), + /* K40 */ be_nested_str_weak(to_str_val), + /* K41 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K42 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K43 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), }), - be_str_weak(send_subscribe_update), + be_str_weak(process_read_request_solo), &be_const_str_solidified, - ( &(const binstruction[66]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x7C0C0200, // 0003 CALL R3 1 - 0x50100000, // 0004 LDBOOL R4 0 0 - 0x900E0604, // 0005 SETMBR R3 K3 R4 - 0x60100012, // 0006 GETGBL R4 G18 - 0x7C100000, // 0007 CALL R4 0 - 0x900E0804, // 0008 SETMBR R3 K4 R4 - 0x60100010, // 0009 GETGBL R4 G16 - 0x88140305, // 000A GETMBR R5 R1 K5 - 0x7C100200, // 000B CALL R4 1 - 0xA802000F, // 000C EXBLK 0 #001D - 0x5C140800, // 000D MOVE R5 R4 - 0x7C140000, // 000E CALL R5 0 - 0xB81A0200, // 000F GETNGBL R6 K1 - 0x8C180D06, // 0010 GETMET R6 R6 K6 - 0x7C180200, // 0011 CALL R6 1 - 0x881C0B07, // 0012 GETMBR R7 R5 K7 - 0x901A0E07, // 0013 SETMBR R6 K7 R7 - 0x881C0B08, // 0014 GETMBR R7 R5 K8 - 0x901A1007, // 0015 SETMBR R6 K8 R7 - 0x881C0B09, // 0016 GETMBR R7 R5 K9 - 0x901A1207, // 0017 SETMBR R6 K9 R7 - 0x881C0704, // 0018 GETMBR R7 R3 K4 - 0x8C1C0F0A, // 0019 GETMET R7 R7 K10 - 0x5C240C00, // 001A MOVE R9 R6 - 0x7C1C0400, // 001B CALL R7 2 - 0x7001FFEF, // 001C JMP #000D - 0x5810000B, // 001D LDCONST R4 K11 - 0xAC100200, // 001E CATCH R4 1 0 - 0xB0080000, // 001F RAISE 2 R0 R0 - 0xB8121800, // 0020 GETNGBL R4 K12 - 0x8C10090D, // 0021 GETMET R4 R4 K13 - 0x60180018, // 0022 GETGBL R6 G24 - 0x581C000E, // 0023 LDCONST R7 K14 - 0x8820050F, // 0024 GETMBR R8 R2 K15 - 0x88240310, // 0025 GETMBR R9 R1 K16 - 0x7C180600, // 0026 CALL R6 3 - 0x581C0011, // 0027 LDCONST R7 K17 - 0x7C100600, // 0028 CALL R4 3 - 0x50100000, // 0029 LDBOOL R4 0 0 - 0x90062404, // 002A SETMBR R1 K18 R4 - 0x8C100113, // 002B GETMET R4 R0 K19 - 0x5C180400, // 002C MOVE R6 R2 - 0x5C1C0600, // 002D MOVE R7 R3 - 0x7C100600, // 002E CALL R4 3 - 0x50140000, // 002F LDBOOL R5 0 0 - 0x90122805, // 0030 SETMBR R4 K20 R5 - 0x88140310, // 0031 GETMBR R5 R1 K16 - 0x90122005, // 0032 SETMBR R4 K16 R5 - 0xB8160200, // 0033 GETNGBL R5 K1 - 0x8C140B15, // 0034 GETMET R5 R5 K21 - 0x881C0516, // 0035 GETMBR R7 R2 K22 - 0x5C200400, // 0036 MOVE R8 R2 - 0x5C240800, // 0037 MOVE R9 R4 - 0x5C280200, // 0038 MOVE R10 R1 - 0x7C140A00, // 0039 CALL R5 5 - 0x88180117, // 003A GETMBR R6 R0 K23 - 0x8C180D0A, // 003B GETMET R6 R6 K10 - 0x5C200A00, // 003C MOVE R8 R5 - 0x7C180400, // 003D CALL R6 2 - 0x8C180118, // 003E GETMET R6 R0 K24 - 0x88200516, // 003F GETMBR R8 R2 K22 - 0x7C180400, // 0040 CALL R6 2 - 0x80000000, // 0041 RET 0 + ( &(const binstruction[220]) { /* code */ + 0xB80E0200, // 0000 GETNGBL R3 K1 + 0x880C0702, // 0001 GETMBR R3 R3 K2 + 0x900A0003, // 0002 SETMBR R2 K0 R3 + 0x880C0103, // 0003 GETMBR R3 R0 K3 + 0x8C0C0704, // 0004 GETMET R3 R3 K4 + 0x5C140400, // 0005 MOVE R5 R2 + 0x7C0C0400, // 0006 CALL R3 2 + 0x4C100000, // 0007 LDNIL R4 + 0x4C140000, // 0008 LDNIL R5 + 0x4C180000, // 0009 LDNIL R6 + 0x20180606, // 000A NE R6 R3 R6 + 0x781A0008, // 000B JMPF R6 #0015 + 0xB81A0200, // 000C GETNGBL R6 K1 + 0x88180D05, // 000D GETMBR R6 R6 K5 + 0x900A0006, // 000E SETMBR R2 K0 R6 + 0x8C180706, // 000F GETMET R6 R3 K6 + 0x88200307, // 0010 GETMBR R8 R1 K7 + 0x5C240400, // 0011 MOVE R9 R2 + 0x88280108, // 0012 GETMBR R10 R0 K8 + 0x7C180800, // 0013 CALL R6 4 + 0x5C100C00, // 0014 MOVE R4 R6 + 0xB81A0200, // 0015 GETNGBL R6 K1 + 0x88180D09, // 0016 GETMBR R6 R6 K9 + 0x8C180D0A, // 0017 GETMET R6 R6 K10 + 0x5820000B, // 0018 LDCONST R8 K11 + 0x7C180400, // 0019 CALL R6 2 + 0x4C180000, // 001A LDNIL R6 + 0x20180806, // 001B NE R6 R4 R6 + 0x781A0019, // 001C JMPF R6 #0037 + 0x60180015, // 001D GETGBL R6 G21 + 0x541E002F, // 001E LDINT R7 48 + 0x7C180200, // 001F CALL R6 1 + 0x5C140C00, // 0020 MOVE R5 R6 + 0x8C180B0C, // 0021 GETMET R6 R5 K12 + 0x54220014, // 0022 LDINT R8 21 + 0x5824000D, // 0023 LDCONST R9 K13 + 0x7C180600, // 0024 CALL R6 3 + 0x8C180B0C, // 0025 GETMET R6 R5 K12 + 0x54223600, // 0026 LDINT R8 13825 + 0x5425FFFD, // 0027 LDINT R9 -2 + 0x7C180600, // 0028 CALL R6 3 + 0x8C18010E, // 0029 GETMET R6 R0 K14 + 0x5C200A00, // 002A MOVE R8 R5 + 0x5C240400, // 002B MOVE R9 R2 + 0x5C280800, // 002C MOVE R10 R4 + 0x7C180800, // 002D CALL R6 4 + 0x8C180B0C, // 002E GETMET R6 R5 K12 + 0x5820000F, // 002F LDCONST R8 K15 + 0x5425FFFB, // 0030 LDINT R9 -4 + 0x7C180600, // 0031 CALL R6 3 + 0x8C180B0C, // 0032 GETMET R6 R5 K12 + 0x54220017, // 0033 LDINT R8 24 + 0x5824000D, // 0034 LDCONST R9 K13 + 0x7C180600, // 0035 CALL R6 3 + 0x70020029, // 0036 JMP #0061 + 0x88180500, // 0037 GETMBR R6 R2 K0 + 0x4C1C0000, // 0038 LDNIL R7 + 0x20180C07, // 0039 NE R6 R6 R7 + 0x781A0019, // 003A JMPF R6 #0055 + 0x60180015, // 003B GETGBL R6 G21 + 0x541E002F, // 003C LDINT R7 48 + 0x7C180200, // 003D CALL R6 1 + 0x5C140C00, // 003E MOVE R5 R6 + 0x8C180B0C, // 003F GETMET R6 R5 K12 + 0x54220014, // 0040 LDINT R8 21 + 0x5824000D, // 0041 LDCONST R9 K13 + 0x7C180600, // 0042 CALL R6 3 + 0x8C180B0C, // 0043 GETMET R6 R5 K12 + 0x54223600, // 0044 LDINT R8 13825 + 0x5425FFFD, // 0045 LDINT R9 -2 + 0x7C180600, // 0046 CALL R6 3 + 0x8C180110, // 0047 GETMET R6 R0 K16 + 0x5C200A00, // 0048 MOVE R8 R5 + 0x5C240400, // 0049 MOVE R9 R2 + 0x88280500, // 004A GETMBR R10 R2 K0 + 0x7C180800, // 004B CALL R6 4 + 0x8C180B0C, // 004C GETMET R6 R5 K12 + 0x5820000F, // 004D LDCONST R8 K15 + 0x5425FFFB, // 004E LDINT R9 -4 + 0x7C180600, // 004F CALL R6 3 + 0x8C180B0C, // 0050 GETMET R6 R5 K12 + 0x54220017, // 0051 LDINT R8 24 + 0x5824000D, // 0052 LDCONST R9 K13 + 0x7C180600, // 0053 CALL R6 3 + 0x7002000B, // 0054 JMP #0061 + 0xB81A2200, // 0055 GETNGBL R6 K17 + 0x8C180D0A, // 0056 GETMET R6 R6 K10 + 0x60200018, // 0057 GETGBL R8 G24 + 0x58240012, // 0058 LDCONST R9 K18 + 0x88280307, // 0059 GETMBR R10 R1 K7 + 0x88281513, // 005A GETMBR R10 R10 K19 + 0x5C2C0400, // 005B MOVE R11 R2 + 0x7C200600, // 005C CALL R8 3 + 0x58240014, // 005D LDCONST R9 K20 + 0x7C180600, // 005E CALL R6 3 + 0x50180000, // 005F LDBOOL R6 0 0 + 0x80040C00, // 0060 RET 1 R6 + 0x8C180315, // 0061 GETMET R6 R1 K21 + 0x54220004, // 0062 LDINT R8 5 + 0x50240200, // 0063 LDBOOL R9 1 0 + 0x7C180600, // 0064 CALL R6 3 + 0x881C0103, // 0065 GETMBR R7 R0 K3 + 0x881C0F16, // 0066 GETMBR R7 R7 K22 + 0x88200317, // 0067 GETMBR R8 R1 K23 + 0x8C241118, // 0068 GETMET R9 R8 K24 + 0x7C240200, // 0069 CALL R9 1 + 0x8C240D19, // 006A GETMET R9 R6 K25 + 0x5C2C0A00, // 006B MOVE R11 R5 + 0x5C301000, // 006C MOVE R12 R8 + 0x7C240600, // 006D CALL R9 3 + 0x8C240D1A, // 006E GETMET R9 R6 K26 + 0x7C240200, // 006F CALL R9 1 + 0xB8262200, // 0070 GETNGBL R9 K17 + 0x8C24131B, // 0071 GETMET R9 R9 K27 + 0x542E0003, // 0072 LDINT R11 4 + 0x7C240400, // 0073 CALL R9 2 + 0x7826000B, // 0074 JMPF R9 #0081 + 0xB8262200, // 0075 GETNGBL R9 K17 + 0x8C24130A, // 0076 GETMET R9 R9 K10 + 0x602C0018, // 0077 GETGBL R11 G24 + 0x5830001C, // 0078 LDCONST R12 K28 + 0x88340D07, // 0079 GETMBR R13 R6 K7 + 0x88341B13, // 007A GETMBR R13 R13 K19 + 0x88380D1D, // 007B GETMBR R14 R6 K29 + 0x883C0D1E, // 007C GETMBR R15 R6 K30 + 0x88400D1F, // 007D GETMBR R16 R6 K31 + 0x7C2C0A00, // 007E CALL R11 5 + 0x54320003, // 007F LDINT R12 4 + 0x7C240600, // 0080 CALL R9 3 + 0x8C240F20, // 0081 GETMET R9 R7 K32 + 0x5C2C0C00, // 0082 MOVE R11 R6 + 0x7C240400, // 0083 CALL R9 2 + 0xB8260200, // 0084 GETNGBL R9 K1 + 0x88241309, // 0085 GETMBR R9 R9 K9 + 0x8C24130A, // 0086 GETMET R9 R9 K10 + 0x582C0021, // 0087 LDCONST R11 K33 + 0x7C240400, // 0088 CALL R9 2 + 0xB8260200, // 0089 GETNGBL R9 K1 + 0x8C241322, // 008A GETMET R9 R9 K34 + 0x882C0523, // 008B GETMBR R11 R2 K35 + 0x88300524, // 008C GETMBR R12 R2 K36 + 0x7C240600, // 008D CALL R9 3 + 0x78260002, // 008E JMPF R9 #0092 + 0x002A4A09, // 008F ADD R10 K37 R9 + 0x00281526, // 0090 ADD R10 R10 K38 + 0x70020000, // 0091 JMP #0093 + 0x58280027, // 0092 LDCONST R10 K39 + 0x5C241400, // 0093 MOVE R9 R10 + 0x4C280000, // 0094 LDNIL R10 + 0x2028080A, // 0095 NE R10 R4 R10 + 0x782A0013, // 0096 JMPF R10 #00AB + 0x8C280928, // 0097 GETMET R10 R4 K40 + 0x7C280200, // 0098 CALL R10 1 + 0xB82E2200, // 0099 GETNGBL R11 K17 + 0x8C2C171B, // 009A GETMET R11 R11 K27 + 0x58340014, // 009B LDCONST R13 K20 + 0x7C2C0400, // 009C CALL R11 2 + 0x782E000B, // 009D JMPF R11 #00AA + 0xB82E2200, // 009E GETNGBL R11 K17 + 0x8C2C170A, // 009F GETMET R11 R11 K10 + 0x60340018, // 00A0 GETGBL R13 G24 + 0x58380029, // 00A1 LDCONST R14 K41 + 0x883C0307, // 00A2 GETMBR R15 R1 K7 + 0x883C1F13, // 00A3 GETMBR R15 R15 K19 + 0x5C400400, // 00A4 MOVE R16 R2 + 0x5C441200, // 00A5 MOVE R17 R9 + 0x5C481400, // 00A6 MOVE R18 R10 + 0x7C340A00, // 00A7 CALL R13 5 + 0x58380014, // 00A8 LDCONST R14 K20 + 0x7C2C0600, // 00A9 CALL R11 3 + 0x7002002E, // 00AA JMP #00DA + 0x88280500, // 00AB GETMBR R10 R2 K0 + 0x4C2C0000, // 00AC LDNIL R11 + 0x2028140B, // 00AD NE R10 R10 R11 + 0x782A001A, // 00AE JMPF R10 #00CA + 0x88280500, // 00AF GETMBR R10 R2 K0 + 0xB82E0200, // 00B0 GETNGBL R11 K1 + 0x882C1705, // 00B1 GETMBR R11 R11 K5 + 0x1C28140B, // 00B2 EQ R10 R10 R11 + 0x782A0001, // 00B3 JMPF R10 #00B6 + 0x58280005, // 00B4 LDCONST R10 K5 + 0x70020000, // 00B5 JMP #00B7 + 0x58280027, // 00B6 LDCONST R10 K39 + 0xB82E2200, // 00B7 GETNGBL R11 K17 + 0x8C2C171B, // 00B8 GETMET R11 R11 K27 + 0x58340014, // 00B9 LDCONST R13 K20 + 0x7C2C0400, // 00BA CALL R11 2 + 0x782E000C, // 00BB JMPF R11 #00C9 + 0xB82E2200, // 00BC GETNGBL R11 K17 + 0x8C2C170A, // 00BD GETMET R11 R11 K10 + 0x60340018, // 00BE GETGBL R13 G24 + 0x5838002A, // 00BF LDCONST R14 K42 + 0x883C0307, // 00C0 GETMBR R15 R1 K7 + 0x883C1F13, // 00C1 GETMBR R15 R15 K19 + 0x5C400400, // 00C2 MOVE R16 R2 + 0x5C441200, // 00C3 MOVE R17 R9 + 0x88480500, // 00C4 GETMBR R18 R2 K0 + 0x5C4C1400, // 00C5 MOVE R19 R10 + 0x7C340C00, // 00C6 CALL R13 6 + 0x58380014, // 00C7 LDCONST R14 K20 + 0x7C2C0600, // 00C8 CALL R11 3 + 0x7002000F, // 00C9 JMP #00DA + 0xB82A2200, // 00CA GETNGBL R10 K17 + 0x8C28151B, // 00CB GETMET R10 R10 K27 + 0x58300014, // 00CC LDCONST R12 K20 + 0x7C280400, // 00CD CALL R10 2 + 0x782A000A, // 00CE JMPF R10 #00DA + 0xB82A2200, // 00CF GETNGBL R10 K17 + 0x8C28150A, // 00D0 GETMET R10 R10 K10 + 0x60300018, // 00D1 GETGBL R12 G24 + 0x5834002B, // 00D2 LDCONST R13 K43 + 0x88380307, // 00D3 GETMBR R14 R1 K7 + 0x88381D13, // 00D4 GETMBR R14 R14 K19 + 0x5C3C0400, // 00D5 MOVE R15 R2 + 0x5C401200, // 00D6 MOVE R16 R9 + 0x7C300800, // 00D7 CALL R12 4 + 0x58340014, // 00D8 LDCONST R13 K20 + 0x7C280600, // 00D9 CALL R10 3 + 0x50280200, // 00DA LDBOOL R10 1 0 + 0x80041400, // 00DB RET 1 R10 }) ) ); @@ -2263,72 +3154,13 @@ be_local_closure(Matter_IM_send_enqueued, /* name */ 0x541E0003, // 0018 LDINT R7 4 0x7C100600, // 0019 CALL R4 3 0x88100101, // 001A GETMBR R4 R0 K1 - 0x8C10090A, // 001B GETMET R4 R4 K10 - 0x5C180400, // 001C MOVE R6 R2 - 0x7C100400, // 001D CALL R4 2 - 0x70020000, // 001E JMP #0020 - 0x0008050B, // 001F ADD R2 R2 K11 - 0x7001FFDF, // 0020 JMP #0001 - 0x80000000, // 0021 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_timed_request -********************************************************************/ -be_local_closure(Matter_IM_process_timed_request, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TimedRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(log), - /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), - /* K6 */ be_nested_str_weak(session), - /* K7 */ be_nested_str_weak(local_session_id), - /* K8 */ be_nested_str_weak(timeout), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(send_status), - /* K11 */ be_nested_str_weak(SUCCESS), - }), - be_str_weak(process_timed_request), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0xB8120600, // 0006 GETNGBL R4 K3 - 0x8C100904, // 0007 GETMET R4 R4 K4 - 0x60180018, // 0008 GETGBL R6 G24 - 0x581C0005, // 0009 LDCONST R7 K5 - 0x88200306, // 000A GETMBR R8 R1 K6 - 0x88201107, // 000B GETMBR R8 R8 K7 - 0x88240708, // 000C GETMBR R9 R3 K8 - 0x7C180600, // 000D CALL R6 3 - 0x581C0009, // 000E LDCONST R7 K9 - 0x7C100600, // 000F CALL R4 3 - 0x8C10010A, // 0010 GETMET R4 R0 K10 - 0x5C180200, // 0011 MOVE R6 R1 - 0xB81E0000, // 0012 GETNGBL R7 K0 - 0x881C0F0B, // 0013 GETMBR R7 R7 K11 - 0x7C100600, // 0014 CALL R4 3 - 0x50100200, // 0015 LDBOOL R4 1 0 - 0x80040800, // 0016 RET 1 R4 + 0x8C10090A, // 001B GETMET R4 R4 K10 + 0x5C180400, // 001C MOVE R6 R2 + 0x7C100400, // 001D CALL R4 2 + 0x70020000, // 001E JMP #0020 + 0x0008050B, // 001F ADD R2 R2 K11 + 0x7001FFDF, // 0020 JMP #0001 + 0x80000000, // 0021 RET 0 }) ) ); @@ -2336,34 +3168,58 @@ be_local_closure(Matter_IM_process_timed_request, /* name */ /******************************************************************** -** Solidified function: report_data +** Solidified function: init ********************************************************************/ -be_local_closure(Matter_IM_report_data, /* name */ +be_local_closure(Matter_IM_init, /* name */ be_nested_proto( - 6, /* nstack */ - 3, /* argc */ + 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[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(ReportDataMessage), - /* K2 */ be_nested_str_weak(from_TLV), + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(subs_shop), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(IM_Subscription_Shop), + /* K5 */ be_nested_str_weak(read_request_solo), + /* K6 */ be_nested_str_weak(ReadRequestMessage_solo), + /* K7 */ be_nested_str_weak(invoke_request_solo), + /* K8 */ be_nested_str_weak(InvokeRequestMessage_solo), + /* K9 */ be_nested_str_weak(tlv_solo), + /* K10 */ be_nested_str_weak(TLV), + /* K11 */ be_nested_str_weak(Matter_TLV_item), }), - be_str_weak(report_data), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x50100000, // 0006 LDBOOL R4 0 0 - 0x80040800, // 0007 RET 1 R4 + ( &(const binstruction[23]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0xB80A0600, // 0004 GETNGBL R2 K3 + 0x8C080504, // 0005 GETMET R2 R2 K4 + 0x5C100000, // 0006 MOVE R4 R0 + 0x7C080400, // 0007 CALL R2 2 + 0x90020402, // 0008 SETMBR R0 K2 R2 + 0xB80A0600, // 0009 GETNGBL R2 K3 + 0x8C080506, // 000A GETMET R2 R2 K6 + 0x7C080200, // 000B CALL R2 1 + 0x90020A02, // 000C SETMBR R0 K5 R2 + 0xB80A0600, // 000D GETNGBL R2 K3 + 0x8C080508, // 000E GETMET R2 R2 K8 + 0x7C080200, // 000F CALL R2 1 + 0x90020E02, // 0010 SETMBR R0 K7 R2 + 0xB80A0600, // 0011 GETNGBL R2 K3 + 0x8808050A, // 0012 GETMBR R2 R2 K10 + 0x8C08050B, // 0013 GETMET R2 R2 K11 + 0x7C080200, // 0014 CALL R2 1 + 0x90021202, // 0015 SETMBR R0 K9 R2 + 0x80000000, // 0016 RET 0 }) ) ); @@ -2371,34 +3227,55 @@ be_local_closure(Matter_IM_report_data, /* name */ /******************************************************************** -** Solidified function: process_invoke_response +** Solidified function: expire_sendqueue ********************************************************************/ -be_local_closure(Matter_IM_process_invoke_response, /* name */ +be_local_closure(Matter_IM_expire_sendqueue, /* name */ be_nested_proto( 6, /* nstack */ - 3, /* argc */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(InvokeResponseMessage), - /* K2 */ be_nested_str_weak(from_TLV), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(time_reached), + /* K4 */ be_nested_str_weak(expiration), + /* K5 */ be_nested_str_weak(reached_timeout), + /* K6 */ be_nested_str_weak(remove), + /* K7 */ be_const_int(1), }), - be_str_weak(process_invoke_response), + be_str_weak(expire_sendqueue), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x50100000, // 0006 LDBOOL R4 0 0 - 0x80040800, // 0007 RET 1 R4 + ( &(const binstruction[24]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x14080202, // 0004 LT R2 R1 R2 + 0x780A000F, // 0005 JMPF R2 #0016 + 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x94080401, // 0007 GETIDX R2 R2 R1 + 0xB80E0400, // 0008 GETNGBL R3 K2 + 0x8C0C0703, // 0009 GETMET R3 R3 K3 + 0x88140504, // 000A GETMBR R5 R2 K4 + 0x7C0C0400, // 000B CALL R3 2 + 0x780E0006, // 000C JMPF R3 #0014 + 0x8C0C0505, // 000D GETMET R3 R2 K5 + 0x7C0C0200, // 000E CALL R3 1 + 0x880C0101, // 000F GETMBR R3 R0 K1 + 0x8C0C0706, // 0010 GETMET R3 R3 K6 + 0x5C140200, // 0011 MOVE R5 R1 + 0x7C0C0400, // 0012 CALL R3 2 + 0x70020000, // 0013 JMP #0015 + 0x00040307, // 0014 ADD R1 R1 K7 + 0x7001FFEA, // 0015 JMP #0001 + 0x4C080000, // 0016 LDNIL R2 + 0x80040400, // 0017 RET 1 R2 }) ) ); @@ -2406,38 +3283,131 @@ be_local_closure(Matter_IM_process_invoke_response, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: subscribe_request ********************************************************************/ -be_local_closure(Matter_IM_init, /* name */ +be_local_closure(Matter_IM_subscribe_request, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ + 17, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(subs_shop), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(IM_Subscription_Shop), + ( &(const bvalue[30]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(SubscribeRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(keep_subscriptions), + /* K4 */ be_nested_str_weak(subs_shop), + /* K5 */ be_nested_str_weak(remove_by_session), + /* K6 */ be_nested_str_weak(session), + /* K7 */ be_nested_str_weak(new_subscription), + /* K8 */ be_nested_str_weak(Path), + /* K9 */ be_nested_str_weak(msg), + /* K10 */ be_nested_str_weak(attributes_requests), + /* K11 */ be_nested_str_weak(endpoint), + /* K12 */ be_nested_str_weak(cluster), + /* K13 */ be_nested_str_weak(attribute), + /* K14 */ be_nested_str_weak(push), + /* K15 */ be_nested_str_weak(stop_iteration), + /* K16 */ be_nested_str_weak(tasmota), + /* K17 */ be_nested_str_weak(log), + /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i), + /* K19 */ be_nested_str_weak(local_session_id), + /* K20 */ be_nested_str_weak(concat), + /* K21 */ be_nested_str_weak(_X20), + /* K22 */ be_nested_str_weak(min_interval), + /* K23 */ be_nested_str_weak(max_interval), + /* K24 */ be_const_int(1), + /* K25 */ be_const_int(0), + /* K26 */ be_nested_str_weak(subscription_id), + /* K27 */ be_const_int(3), + /* K28 */ be_nested_str_weak(_inner_process_read_request), + /* K29 */ be_nested_str_weak(send_subscribe_response), }), - be_str_weak(init), + be_str_weak(subscribe_request), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0xB80A0600, // 0004 GETNGBL R2 K3 - 0x8C080504, // 0005 GETMET R2 R2 K4 - 0x5C100000, // 0006 MOVE R4 R0 - 0x7C080400, // 0007 CALL R2 2 - 0x90020402, // 0008 SETMBR R0 K2 R2 - 0x80000000, // 0009 RET 0 + ( &(const binstruction[78]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0x88100703, // 0006 GETMBR R4 R3 K3 + 0x74120003, // 0007 JMPT R4 #000C + 0x88100104, // 0008 GETMBR R4 R0 K4 + 0x8C100905, // 0009 GETMET R4 R4 K5 + 0x88180306, // 000A GETMBR R6 R1 K6 + 0x7C100400, // 000B CALL R4 2 + 0x88100104, // 000C GETMBR R4 R0 K4 + 0x8C100907, // 000D GETMET R4 R4 K7 + 0x88180306, // 000E GETMBR R6 R1 K6 + 0x5C1C0600, // 000F MOVE R7 R3 + 0x7C100600, // 0010 CALL R4 3 + 0x60140012, // 0011 GETGBL R5 G18 + 0x7C140000, // 0012 CALL R5 0 + 0xB81A0000, // 0013 GETNGBL R6 K0 + 0x8C180D08, // 0014 GETMET R6 R6 K8 + 0x7C180200, // 0015 CALL R6 1 + 0x901A1201, // 0016 SETMBR R6 K9 R1 + 0x601C0010, // 0017 GETGBL R7 G16 + 0x8820070A, // 0018 GETMBR R8 R3 K10 + 0x7C1C0200, // 0019 CALL R7 1 + 0xA802000D, // 001A EXBLK 0 #0029 + 0x5C200E00, // 001B MOVE R8 R7 + 0x7C200000, // 001C CALL R8 0 + 0x8824110B, // 001D GETMBR R9 R8 K11 + 0x901A1609, // 001E SETMBR R6 K11 R9 + 0x8824110C, // 001F GETMBR R9 R8 K12 + 0x901A1809, // 0020 SETMBR R6 K12 R9 + 0x8824110D, // 0021 GETMBR R9 R8 K13 + 0x901A1A09, // 0022 SETMBR R6 K13 R9 + 0x8C240B0E, // 0023 GETMET R9 R5 K14 + 0x602C0008, // 0024 GETGBL R11 G8 + 0x5C300C00, // 0025 MOVE R12 R6 + 0x7C2C0200, // 0026 CALL R11 1 + 0x7C240400, // 0027 CALL R9 2 + 0x7001FFF1, // 0028 JMP #001B + 0x581C000F, // 0029 LDCONST R7 K15 + 0xAC1C0200, // 002A CATCH R7 1 0 + 0xB0080000, // 002B RAISE 2 R0 R0 + 0xB81E2000, // 002C GETNGBL R7 K16 + 0x8C1C0F11, // 002D GETMET R7 R7 K17 + 0x60240018, // 002E GETGBL R9 G24 + 0x58280012, // 002F LDCONST R10 K18 + 0x882C0306, // 0030 GETMBR R11 R1 K6 + 0x882C1713, // 0031 GETMBR R11 R11 K19 + 0x8C300B14, // 0032 GETMET R12 R5 K20 + 0x58380015, // 0033 LDCONST R14 K21 + 0x7C300400, // 0034 CALL R12 2 + 0x88340916, // 0035 GETMBR R13 R4 K22 + 0x88380917, // 0036 GETMBR R14 R4 K23 + 0x883C0703, // 0037 GETMBR R15 R3 K3 + 0x783E0001, // 0038 JMPF R15 #003B + 0x583C0018, // 0039 LDCONST R15 K24 + 0x70020000, // 003A JMP #003C + 0x583C0019, // 003B LDCONST R15 K25 + 0x8840091A, // 003C GETMBR R16 R4 K26 + 0x7C240E00, // 003D CALL R9 7 + 0x5828001B, // 003E LDCONST R10 K27 + 0x7C1C0600, // 003F CALL R7 3 + 0x8C1C011C, // 0040 GETMET R7 R0 K28 + 0x88240306, // 0041 GETMBR R9 R1 K6 + 0x5C280600, // 0042 MOVE R10 R3 + 0x502C0200, // 0043 LDBOOL R11 1 0 + 0x7C1C0800, // 0044 CALL R7 4 + 0x8820091A, // 0045 GETMBR R8 R4 K26 + 0x901E3408, // 0046 SETMBR R7 K26 R8 + 0x8C20011D, // 0047 GETMET R8 R0 K29 + 0x5C280200, // 0048 MOVE R10 R1 + 0x5C2C0E00, // 0049 MOVE R11 R7 + 0x5C300800, // 004A MOVE R12 R4 + 0x7C200800, // 004B CALL R8 4 + 0x50200200, // 004C LDBOOL R8 1 0 + 0x80041000, // 004D RET 1 R8 }) ) ); @@ -2522,41 +3492,50 @@ be_local_closure(Matter_IM_send_subscribe_heartbeat, /* name */ ** Solidified class: Matter_IM ********************************************************************/ be_local_class(Matter_IM, - 3, + 6, NULL, - be_nested_map(31, + be_nested_map(40, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(Matter_IM_send_subscribe_heartbeat_closure) }, - { be_const_key_weak(subs_shop, 23), be_const_var(1) }, - { be_const_key_weak(send_queue, 30), be_const_var(2) }, - { be_const_key_weak(process_invoke_request, -1), be_const_closure(Matter_IM_process_invoke_request_closure) }, - { be_const_key_weak(subscribe_request, -1), be_const_closure(Matter_IM_subscribe_request_closure) }, - { be_const_key_weak(process_write_request, 11), be_const_closure(Matter_IM_process_write_request_closure) }, - { be_const_key_weak(send_write_response, -1), be_const_closure(Matter_IM_send_write_response_closure) }, - { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_remove_sendqueue_by_exchangeid_closure) }, - { be_const_key_weak(every_second, -1), be_const_closure(Matter_IM_every_second_closure) }, - { be_const_key_weak(send_ack_now, -1), be_const_closure(Matter_IM_send_ack_now_closure) }, { be_const_key_weak(every_250ms, -1), be_const_closure(Matter_IM_every_250ms_closure) }, + { be_const_key_weak(process_incoming_ack, -1), be_const_closure(Matter_IM_process_incoming_ack_closure) }, + { be_const_key_weak(send_ack_now, -1), be_const_closure(Matter_IM_send_ack_now_closure) }, + { be_const_key_weak(subscribe_response, -1), be_const_closure(Matter_IM_subscribe_response_closure) }, + { be_const_key_weak(process_write_response, -1), be_const_closure(Matter_IM_process_write_response_closure) }, + { be_const_key_weak(process_status_response, -1), be_const_closure(Matter_IM_process_status_response_closure) }, + { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(Matter_IM_send_subscribe_heartbeat_closure) }, + { be_const_key_weak(attributedata2raw, 12), be_const_closure(Matter_IM_attributedata2raw_closure) }, + { be_const_key_weak(subscribe_request, 37), be_const_closure(Matter_IM_subscribe_request_closure) }, + { be_const_key_weak(send_subscribe_update, -1), be_const_closure(Matter_IM_send_subscribe_update_closure) }, + { be_const_key_weak(invokeresponse2raw, 2), be_const_closure(Matter_IM_invokeresponse2raw_closure) }, + { be_const_key_weak(read_request_solo, 38), be_const_var(3) }, + { be_const_key_weak(process_incoming, -1), be_const_closure(Matter_IM_process_incoming_closure) }, + { be_const_key_weak(process_invoke_request_solo, 8), be_const_closure(Matter_IM_process_invoke_request_solo_closure) }, { be_const_key_weak(send_invoke_response, -1), be_const_closure(Matter_IM_send_invoke_response_closure) }, - { be_const_key_weak(process_invoke_response, 21), be_const_closure(Matter_IM_process_invoke_response_closure) }, + { be_const_key_weak(send_write_response, 6), be_const_closure(Matter_IM_send_write_response_closure) }, + { be_const_key_weak(process_write_request, -1), be_const_closure(Matter_IM_process_write_request_closure) }, + { be_const_key_weak(every_second, -1), be_const_closure(Matter_IM_every_second_closure) }, + { be_const_key_weak(path2raw, -1), be_const_closure(Matter_IM_path2raw_closure) }, + { be_const_key_weak(invoke_request_solo, -1), be_const_var(4) }, { be_const_key_weak(_inner_process_read_request, -1), be_const_closure(Matter_IM__inner_process_read_request_closure) }, - { be_const_key_weak(subscribe_response, 22), be_const_closure(Matter_IM_subscribe_response_closure) }, - { be_const_key_weak(process_incoming, -1), be_const_closure(Matter_IM_process_incoming_closure) }, - { be_const_key_weak(send_subscribe_response, 18), be_const_closure(Matter_IM_send_subscribe_response_closure) }, + { be_const_key_weak(tlv_solo, -1), be_const_var(5) }, + { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_remove_sendqueue_by_exchangeid_closure) }, { be_const_key_weak(find_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_find_sendqueue_by_exchangeid_closure) }, - { be_const_key_weak(process_incoming_ack, 13), be_const_closure(Matter_IM_process_incoming_ack_closure) }, - { be_const_key_weak(process_read_request, -1), be_const_closure(Matter_IM_process_read_request_closure) }, { be_const_key_weak(send_report_data, -1), be_const_closure(Matter_IM_send_report_data_closure) }, - { be_const_key_weak(process_timed_request, -1), be_const_closure(Matter_IM_process_timed_request_closure) }, - { be_const_key_weak(process_status_response, -1), be_const_closure(Matter_IM_process_status_response_closure) }, - { be_const_key_weak(send_subscribe_update, 28), be_const_closure(Matter_IM_send_subscribe_update_closure) }, - { be_const_key_weak(send_enqueued, -1), be_const_closure(Matter_IM_send_enqueued_closure) }, - { be_const_key_weak(process_write_response, 12), be_const_closure(Matter_IM_process_write_response_closure) }, - { be_const_key_weak(report_data, 0), be_const_closure(Matter_IM_report_data_closure) }, - { be_const_key_weak(device, -1), be_const_var(0) }, + { be_const_key_weak(process_invoke_request, 17), be_const_closure(Matter_IM_process_invoke_request_closure) }, { be_const_key_weak(send_status, -1), be_const_closure(Matter_IM_send_status_closure) }, + { be_const_key_weak(subs_shop, 20), be_const_var(1) }, + { be_const_key_weak(process_timed_request, 32), be_const_closure(Matter_IM_process_timed_request_closure) }, + { be_const_key_weak(attributestatus2raw, 23), be_const_closure(Matter_IM_attributestatus2raw_closure) }, + { be_const_key_weak(send_subscribe_response, -1), be_const_closure(Matter_IM_send_subscribe_response_closure) }, + { be_const_key_weak(process_invoke_response, 24), be_const_closure(Matter_IM_process_invoke_response_closure) }, + { be_const_key_weak(report_data, 9), be_const_closure(Matter_IM_report_data_closure) }, + { be_const_key_weak(process_read_request_solo, -1), be_const_closure(Matter_IM_process_read_request_solo_closure) }, + { be_const_key_weak(send_enqueued, -1), be_const_closure(Matter_IM_send_enqueued_closure) }, { be_const_key_weak(init, -1), be_const_closure(Matter_IM_init_closure) }, { be_const_key_weak(expire_sendqueue, -1), be_const_closure(Matter_IM_expire_sendqueue_closure) }, + { be_const_key_weak(process_read_request, -1), be_const_closure(Matter_IM_process_read_request_closure) }, + { be_const_key_weak(device, -1), be_const_var(0) }, + { be_const_key_weak(send_queue, -1), be_const_var(2) }, })), be_str_weak(Matter_IM) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h index 365641ecdb92..1ffcdfd5e112 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h @@ -2822,6 +2822,194 @@ void be_load_Matter_ReadRequestMessage_class(bvm *vm) { be_pop(vm, 1); } +extern const bclass be_class_Matter_ReadRequestMessage_solo; + +/******************************************************************** +** Solidified function: from_raw +********************************************************************/ +be_local_closure(Matter_ReadRequestMessage_solo_from_raw, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(reset), + /* K1 */ be_nested_str_weak(get), + /* K2 */ be_const_int(355860503), + /* K3 */ be_const_int(1), + /* K4 */ be_const_int(2), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(endpoint), + /* K7 */ be_nested_str_weak(cluster), + /* K8 */ be_nested_str_weak(attribute), + /* K9 */ be_nested_str_weak(fabric_filtered), + }), + be_str_weak(from_raw), + &be_const_str_solidified, + ( &(const binstruction[131]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x7C0C0200, // 0001 CALL R3 1 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x5C100200, // 0003 MOVE R4 R1 + 0x7C0C0200, // 0004 CALL R3 1 + 0x4C100000, // 0005 LDNIL R4 + 0x8C140301, // 0006 GETMET R5 R1 K1 + 0x5C1C0400, // 0007 MOVE R7 R2 + 0x5421FFFB, // 0008 LDINT R8 -4 + 0x7C140600, // 0009 CALL R5 3 + 0x20140B02, // 000A NE R5 R5 K2 + 0x78160001, // 000B JMPF R5 #000E + 0x4C140000, // 000C LDNIL R5 + 0x80040A00, // 000D RET 1 R5 + 0x54160003, // 000E LDINT R5 4 + 0x00080405, // 000F ADD R2 R2 R5 + 0x14140403, // 0010 LT R5 R2 R3 + 0x7816002D, // 0011 JMPF R5 #0040 + 0x8C140301, // 0012 GETMET R5 R1 K1 + 0x001C0503, // 0013 ADD R7 R2 K3 + 0x58200003, // 0014 LDCONST R8 K3 + 0x7C140600, // 0015 CALL R5 3 + 0x8C180301, // 0016 GETMET R6 R1 K1 + 0x5C200400, // 0017 MOVE R8 R2 + 0x58240003, // 0018 LDCONST R9 K3 + 0x7C180600, // 0019 CALL R6 3 + 0x541E0023, // 001A LDINT R7 36 + 0x1C1C0C07, // 001B EQ R7 R6 R7 + 0x781E0006, // 001C JMPF R7 #0024 + 0x8C1C0301, // 001D GETMET R7 R1 K1 + 0x00240504, // 001E ADD R9 R2 K4 + 0x58280003, // 001F LDCONST R10 K3 + 0x7C1C0600, // 0020 CALL R7 3 + 0x5C100E00, // 0021 MOVE R4 R7 + 0x00080505, // 0022 ADD R2 R2 K5 + 0x7002000B, // 0023 JMP #0030 + 0x541E0024, // 0024 LDINT R7 37 + 0x1C1C0C07, // 0025 EQ R7 R6 R7 + 0x781E0007, // 0026 JMPF R7 #002F + 0x8C1C0301, // 0027 GETMET R7 R1 K1 + 0x00240504, // 0028 ADD R9 R2 K4 + 0x58280004, // 0029 LDCONST R10 K4 + 0x7C1C0600, // 002A CALL R7 3 + 0x5C100E00, // 002B MOVE R4 R7 + 0x541E0003, // 002C LDINT R7 4 + 0x00080407, // 002D ADD R2 R2 R7 + 0x70020000, // 002E JMP #0030 + 0x7002000F, // 002F JMP #0040 + 0x1C1C0B04, // 0030 EQ R7 R5 K4 + 0x781E0001, // 0031 JMPF R7 #0034 + 0x90020C04, // 0032 SETMBR R0 K6 R4 + 0x7002000A, // 0033 JMP #003F + 0x1C1C0B05, // 0034 EQ R7 R5 K5 + 0x781E0001, // 0035 JMPF R7 #0038 + 0x90020E04, // 0036 SETMBR R0 K7 R4 + 0x70020006, // 0037 JMP #003F + 0x541E0003, // 0038 LDINT R7 4 + 0x1C1C0A07, // 0039 EQ R7 R5 R7 + 0x781E0001, // 003A JMPF R7 #003D + 0x90021004, // 003B SETMBR R0 K8 R4 + 0x70020001, // 003C JMP #003F + 0x4C1C0000, // 003D LDNIL R7 + 0x80040E00, // 003E RET 1 R7 + 0x7001FFCF, // 003F JMP #0010 + 0x8C140301, // 0040 GETMET R5 R1 K1 + 0x5C1C0400, // 0041 MOVE R7 R2 + 0x5421FFFD, // 0042 LDINT R8 -2 + 0x7C140600, // 0043 CALL R5 3 + 0x5C100A00, // 0044 MOVE R4 R5 + 0x54161817, // 0045 LDINT R5 6168 + 0x20140805, // 0046 NE R5 R4 R5 + 0x78160001, // 0047 JMPF R5 #004A + 0x4C140000, // 0048 LDNIL R5 + 0x80040A00, // 0049 RET 1 R5 + 0x00080504, // 004A ADD R2 R2 K4 + 0x8C140301, // 004B GETMET R5 R1 K1 + 0x5C1C0400, // 004C MOVE R7 R2 + 0x5421FFFD, // 004D LDINT R8 -2 + 0x7C140600, // 004E CALL R5 3 + 0x5C100A00, // 004F MOVE R4 R5 + 0x54162802, // 0050 LDINT R5 10243 + 0x1C140805, // 0051 EQ R5 R4 R5 + 0x78160003, // 0052 JMPF R5 #0057 + 0x50140000, // 0053 LDBOOL R5 0 0 + 0x90021205, // 0054 SETMBR R0 K9 R5 + 0x00080504, // 0055 ADD R2 R2 K4 + 0x70020005, // 0056 JMP #005D + 0x54162902, // 0057 LDINT R5 10499 + 0x1C140805, // 0058 EQ R5 R4 R5 + 0x78160002, // 0059 JMPF R5 #005D + 0x50140200, // 005A LDBOOL R5 1 0 + 0x90021205, // 005B SETMBR R0 K9 R5 + 0x00080504, // 005C ADD R2 R2 K4 + 0x8C140301, // 005D GETMET R5 R1 K1 + 0x5C1C0400, // 005E MOVE R7 R2 + 0x5421FFFD, // 005F LDINT R8 -2 + 0x7C140600, // 0060 CALL R5 3 + 0x5C100A00, // 0061 MOVE R4 R5 + 0x541624FE, // 0062 LDINT R5 9471 + 0x1C140805, // 0063 EQ R5 R4 R5 + 0x78160000, // 0064 JMPF R5 #0066 + 0x00080505, // 0065 ADD R2 R2 K5 + 0x8C140301, // 0066 GETMET R5 R1 K1 + 0x5C1C0400, // 0067 MOVE R7 R2 + 0x58200003, // 0068 LDCONST R8 K3 + 0x7C140600, // 0069 CALL R5 3 + 0x541A0017, // 006A LDINT R6 24 + 0x20140A06, // 006B NE R5 R5 R6 + 0x78160001, // 006C JMPF R5 #006F + 0x4C140000, // 006D LDNIL R5 + 0x80040A00, // 006E RET 1 R5 + 0x00080503, // 006F ADD R2 R2 K3 + 0x88140106, // 0070 GETMBR R5 R0 K6 + 0x4C180000, // 0071 LDNIL R6 + 0x1C140A06, // 0072 EQ R5 R5 R6 + 0x7416000B, // 0073 JMPT R5 #0080 + 0x88140107, // 0074 GETMBR R5 R0 K7 + 0x4C180000, // 0075 LDNIL R6 + 0x1C140A06, // 0076 EQ R5 R5 R6 + 0x74160007, // 0077 JMPT R5 #0080 + 0x88140108, // 0078 GETMBR R5 R0 K8 + 0x4C180000, // 0079 LDNIL R6 + 0x1C140A06, // 007A EQ R5 R5 R6 + 0x74160003, // 007B JMPT R5 #0080 + 0x88140109, // 007C GETMBR R5 R0 K9 + 0x4C180000, // 007D LDNIL R6 + 0x1C140A06, // 007E EQ R5 R5 R6 + 0x78160001, // 007F JMPF R5 #0082 + 0x4C140000, // 0080 LDNIL R5 + 0x80040A00, // 0081 RET 1 R5 + 0x80040000, // 0082 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_ReadRequestMessage_solo +********************************************************************/ +extern const bclass be_class_Matter_Path; +be_local_class(Matter_ReadRequestMessage_solo, + 0, + &be_class_Matter_Path, + be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(from_raw, -1), be_const_closure(Matter_ReadRequestMessage_solo_from_raw_closure) }, + })), + be_str_weak(Matter_ReadRequestMessage_solo) +); +/*******************************************************************/ + +void be_load_Matter_ReadRequestMessage_solo_class(bvm *vm) { + be_pushntvclass(vm, &be_class_Matter_ReadRequestMessage_solo); + be_setglobal(vm, "Matter_ReadRequestMessage_solo"); + be_pop(vm, 1); +} + extern const bclass be_class_Matter_ReportDataMessage; /******************************************************************** @@ -3886,6 +4074,281 @@ void be_load_Matter_InvokeRequestMessage_class(bvm *vm) { be_pop(vm, 1); } +extern const bclass be_class_Matter_InvokeRequestMessage_solo; + +/******************************************************************** +** Solidified function: reset +********************************************************************/ +be_local_closure(Matter_InvokeRequestMessage_solo_reset, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(reset), + /* K1 */ be_nested_str_weak(SuppressResponse), + /* K2 */ be_nested_str_weak(TimedRequest), + /* K3 */ be_nested_str_weak(command_fields), + }), + be_str_weak(reset), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x60080003, // 0001 GETGBL R2 G3 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C080200, // 0003 CALL R2 1 + 0x8C080500, // 0004 GETMET R2 R2 K0 + 0x7C080200, // 0005 CALL R2 1 + 0x90020201, // 0006 SETMBR R0 K1 R1 + 0x90020401, // 0007 SETMBR R0 K2 R1 + 0x90020601, // 0008 SETMBR R0 K3 R1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: from_raw +********************************************************************/ +be_local_closure(Matter_InvokeRequestMessage_solo_from_raw, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(reset), + /* K1 */ be_nested_str_weak(get), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(SuppressResponse), + /* K4 */ be_const_int(2), + /* K5 */ be_const_int(3), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(endpoint), + /* K8 */ be_nested_str_weak(cluster), + /* K9 */ be_nested_str_weak(command), + /* K10 */ be_nested_str_weak(command_fields), + /* K11 */ be_nested_str_weak(matter), + /* K12 */ be_nested_str_weak(TLV), + /* K13 */ be_nested_str_weak(parse), + /* K14 */ be_nested_str_weak(next_idx), + /* K15 */ be_const_int(620691736), + }), + be_str_weak(from_raw), + &be_const_str_solidified, + ( &(const binstruction[170]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x7C0C0200, // 0001 CALL R3 1 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x5C100200, // 0003 MOVE R4 R1 + 0x7C0C0200, // 0004 CALL R3 1 + 0x4C100000, // 0005 LDNIL R4 + 0x8C140301, // 0006 GETMET R5 R1 K1 + 0x5C1C0400, // 0007 MOVE R7 R2 + 0x58200002, // 0008 LDCONST R8 K2 + 0x7C140600, // 0009 CALL R5 3 + 0x541A0014, // 000A LDINT R6 21 + 0x20140A06, // 000B NE R5 R5 R6 + 0x78160001, // 000C JMPF R5 #000F + 0x4C140000, // 000D LDNIL R5 + 0x80040A00, // 000E RET 1 R5 + 0x00080502, // 000F ADD R2 R2 K2 + 0x8C140301, // 0010 GETMET R5 R1 K1 + 0x5C1C0400, // 0011 MOVE R7 R2 + 0x5421FFFD, // 0012 LDINT R8 -2 + 0x7C140600, // 0013 CALL R5 3 + 0x5C100A00, // 0014 MOVE R4 R5 + 0x541627FF, // 0015 LDINT R5 10240 + 0x1C140805, // 0016 EQ R5 R4 R5 + 0x74160002, // 0017 JMPT R5 #001B + 0x541628FF, // 0018 LDINT R5 10496 + 0x1C140805, // 0019 EQ R5 R4 R5 + 0x78160003, // 001A JMPF R5 #001F + 0x541628FF, // 001B LDINT R5 10496 + 0x1C140805, // 001C EQ R5 R4 R5 + 0x90020605, // 001D SETMBR R0 K3 R5 + 0x00080504, // 001E ADD R2 R2 K4 + 0x8C140301, // 001F GETMET R5 R1 K1 + 0x5C1C0400, // 0020 MOVE R7 R2 + 0x5421FFFD, // 0021 LDINT R8 -2 + 0x7C140600, // 0022 CALL R5 3 + 0x5C100A00, // 0023 MOVE R4 R5 + 0x54162800, // 0024 LDINT R5 10241 + 0x1C140805, // 0025 EQ R5 R4 R5 + 0x74160002, // 0026 JMPT R5 #002A + 0x54162900, // 0027 LDINT R5 10497 + 0x1C140805, // 0028 EQ R5 R4 R5 + 0x78160003, // 0029 JMPF R5 #002E + 0x54162900, // 002A LDINT R5 10497 + 0x1C140805, // 002B EQ R5 R4 R5 + 0x90020605, // 002C SETMBR R0 K3 R5 + 0x00080504, // 002D ADD R2 R2 K4 + 0x8C140301, // 002E GETMET R5 R1 K1 + 0x5C1C0400, // 002F MOVE R7 R2 + 0x5421FFFD, // 0030 LDINT R8 -2 + 0x7C140600, // 0031 CALL R5 3 + 0x541A3601, // 0032 LDINT R6 13826 + 0x20140A06, // 0033 NE R5 R5 R6 + 0x78160001, // 0034 JMPF R5 #0037 + 0x4C140000, // 0035 LDNIL R5 + 0x80040A00, // 0036 RET 1 R5 + 0x00080504, // 0037 ADD R2 R2 K4 + 0x8C140301, // 0038 GETMET R5 R1 K1 + 0x5C1C0400, // 0039 MOVE R7 R2 + 0x58200002, // 003A LDCONST R8 K2 + 0x7C140600, // 003B CALL R5 3 + 0x541A0014, // 003C LDINT R6 21 + 0x20140A06, // 003D NE R5 R5 R6 + 0x78160001, // 003E JMPF R5 #0041 + 0x4C140000, // 003F LDNIL R5 + 0x80040A00, // 0040 RET 1 R5 + 0x00080502, // 0041 ADD R2 R2 K2 + 0x8C140301, // 0042 GETMET R5 R1 K1 + 0x5C1C0400, // 0043 MOVE R7 R2 + 0x5421FFFD, // 0044 LDINT R8 -2 + 0x7C140600, // 0045 CALL R5 3 + 0x541A36FF, // 0046 LDINT R6 14080 + 0x20140A06, // 0047 NE R5 R5 R6 + 0x78160001, // 0048 JMPF R5 #004B + 0x4C140000, // 0049 LDNIL R5 + 0x80040A00, // 004A RET 1 R5 + 0x00080504, // 004B ADD R2 R2 K4 + 0x14140403, // 004C LT R5 R2 R3 + 0x7816002C, // 004D JMPF R5 #007B + 0x8C140301, // 004E GETMET R5 R1 K1 + 0x001C0502, // 004F ADD R7 R2 K2 + 0x58200002, // 0050 LDCONST R8 K2 + 0x7C140600, // 0051 CALL R5 3 + 0x8C180301, // 0052 GETMET R6 R1 K1 + 0x5C200400, // 0053 MOVE R8 R2 + 0x58240002, // 0054 LDCONST R9 K2 + 0x7C180600, // 0055 CALL R6 3 + 0x541E0023, // 0056 LDINT R7 36 + 0x1C1C0C07, // 0057 EQ R7 R6 R7 + 0x781E0006, // 0058 JMPF R7 #0060 + 0x8C1C0301, // 0059 GETMET R7 R1 K1 + 0x00240504, // 005A ADD R9 R2 K4 + 0x58280002, // 005B LDCONST R10 K2 + 0x7C1C0600, // 005C CALL R7 3 + 0x5C100E00, // 005D MOVE R4 R7 + 0x00080505, // 005E ADD R2 R2 K5 + 0x7002000B, // 005F JMP #006C + 0x541E0024, // 0060 LDINT R7 37 + 0x1C1C0C07, // 0061 EQ R7 R6 R7 + 0x781E0007, // 0062 JMPF R7 #006B + 0x8C1C0301, // 0063 GETMET R7 R1 K1 + 0x00240504, // 0064 ADD R9 R2 K4 + 0x58280004, // 0065 LDCONST R10 K4 + 0x7C1C0600, // 0066 CALL R7 3 + 0x5C100E00, // 0067 MOVE R4 R7 + 0x541E0003, // 0068 LDINT R7 4 + 0x00080407, // 0069 ADD R2 R2 R7 + 0x70020000, // 006A JMP #006C + 0x7002000E, // 006B JMP #007B + 0x1C1C0B06, // 006C EQ R7 R5 K6 + 0x781E0001, // 006D JMPF R7 #0070 + 0x90020E04, // 006E SETMBR R0 K7 R4 + 0x70020009, // 006F JMP #007A + 0x1C1C0B02, // 0070 EQ R7 R5 K2 + 0x781E0001, // 0071 JMPF R7 #0074 + 0x90021004, // 0072 SETMBR R0 K8 R4 + 0x70020005, // 0073 JMP #007A + 0x1C1C0B04, // 0074 EQ R7 R5 K4 + 0x781E0001, // 0075 JMPF R7 #0078 + 0x90021204, // 0076 SETMBR R0 K9 R4 + 0x70020001, // 0077 JMP #007A + 0x4C1C0000, // 0078 LDNIL R7 + 0x80040E00, // 0079 RET 1 R7 + 0x7001FFD0, // 007A JMP #004C + 0x8C140301, // 007B GETMET R5 R1 K1 + 0x5C1C0400, // 007C MOVE R7 R2 + 0x58200002, // 007D LDCONST R8 K2 + 0x7C140600, // 007E CALL R5 3 + 0x541A0017, // 007F LDINT R6 24 + 0x20140A06, // 0080 NE R5 R5 R6 + 0x78160001, // 0081 JMPF R5 #0084 + 0x4C140000, // 0082 LDNIL R5 + 0x80040A00, // 0083 RET 1 R5 + 0x00080502, // 0084 ADD R2 R2 K2 + 0x8C140301, // 0085 GETMET R5 R1 K1 + 0x5C1C0400, // 0086 MOVE R7 R2 + 0x5421FFFD, // 0087 LDINT R8 -2 + 0x7C140600, // 0088 CALL R5 3 + 0x541A3500, // 0089 LDINT R6 13569 + 0x20140A06, // 008A NE R5 R5 R6 + 0x78160001, // 008B JMPF R5 #008E + 0x4C140000, // 008C LDNIL R5 + 0x80040A00, // 008D RET 1 R5 + 0xB8161600, // 008E GETNGBL R5 K11 + 0x88140B0C, // 008F GETMBR R5 R5 K12 + 0x8C140B0D, // 0090 GETMET R5 R5 K13 + 0x5C1C0200, // 0091 MOVE R7 R1 + 0x5C200400, // 0092 MOVE R8 R2 + 0x7C140600, // 0093 CALL R5 3 + 0x90021405, // 0094 SETMBR R0 K10 R5 + 0x8814010A, // 0095 GETMBR R5 R0 K10 + 0x88080B0E, // 0096 GETMBR R2 R5 K14 + 0x8C180301, // 0097 GETMET R6 R1 K1 + 0x5C200400, // 0098 MOVE R8 R2 + 0x5425FFFD, // 0099 LDINT R9 -2 + 0x7C180600, // 009A CALL R6 3 + 0x541E1817, // 009B LDINT R7 6168 + 0x20180C07, // 009C NE R6 R6 R7 + 0x781A0001, // 009D JMPF R6 #00A0 + 0x4C180000, // 009E LDNIL R6 + 0x80040C00, // 009F RET 1 R6 + 0x00080504, // 00A0 ADD R2 R2 K4 + 0x8C140301, // 00A1 GETMET R5 R1 K1 + 0x5C1C0400, // 00A2 MOVE R7 R2 + 0x5421FFFB, // 00A3 LDINT R8 -4 + 0x7C140600, // 00A4 CALL R5 3 + 0x20140B0F, // 00A5 NE R5 R5 K15 + 0x78160001, // 00A6 JMPF R5 #00A9 + 0x4C140000, // 00A7 LDNIL R5 + 0x80040A00, // 00A8 RET 1 R5 + 0x80040000, // 00A9 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_InvokeRequestMessage_solo +********************************************************************/ +extern const bclass be_class_Matter_Path; +be_local_class(Matter_InvokeRequestMessage_solo, + 3, + &be_class_Matter_Path, + be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(SuppressResponse, 4), be_const_var(0) }, + { be_const_key_weak(command_fields, 3), be_const_var(2) }, + { be_const_key_weak(reset, -1), be_const_closure(Matter_InvokeRequestMessage_solo_reset_closure) }, + { be_const_key_weak(from_raw, -1), be_const_closure(Matter_InvokeRequestMessage_solo_from_raw_closure) }, + { be_const_key_weak(TimedRequest, -1), be_const_var(1) }, + })), + be_str_weak(Matter_InvokeRequestMessage_solo) +); +/*******************************************************************/ + +void be_load_Matter_InvokeRequestMessage_solo_class(bvm *vm) { + be_pushntvclass(vm, &be_class_Matter_InvokeRequestMessage_solo); + be_setglobal(vm, "Matter_InvokeRequestMessage_solo"); + be_pop(vm, 1); +} + extern const bclass be_class_Matter_InvokeResponseMessage; /******************************************************************** diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h index 58a362bcbb86..9ce43b085574 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h @@ -7,23 +7,59 @@ extern const bclass be_class_Matter_IM_Message; /******************************************************************** -** Solidified function: status_error_received +** Solidified function: init ********************************************************************/ -be_local_closure(Matter_IM_Message_status_error_received, /* name */ +be_local_closure(Matter_IM_Message_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[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(reset), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x5C180200, // 0001 MOVE R6 R1 + 0x5C1C0400, // 0002 MOVE R7 R2 + 0x5C200600, // 0003 MOVE R8 R3 + 0x7C100800, // 0004 CALL R4 4 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_exchangeid +********************************************************************/ +be_local_closure(Matter_IM_Message_get_exchangeid, /* name */ be_nested_proto( 2, /* nstack */ - 2, /* argc */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(status_error_received), + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(resp), + /* K1 */ be_nested_str_weak(exchange_id), + }), + be_str_weak(get_exchangeid), &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 + ( &(const binstruction[ 3]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x80040200, // 0002 RET 1 R1 }) ) ); @@ -35,7 +71,7 @@ be_local_closure(Matter_IM_Message_status_error_received, /* name */ ********************************************************************/ be_local_closure(Matter_IM_Message_send_im, /* name */ be_nested_proto( - 11, /* nstack */ + 13, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -43,63 +79,108 @@ be_local_closure(Matter_IM_Message_send_im, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ + ( &(const bvalue[27]) { /* constants */ /* K0 */ be_nested_str_weak(ready), /* K1 */ be_nested_str_weak(resp), - /* K2 */ be_nested_str_weak(encode_frame), - /* K3 */ be_nested_str_weak(data), - /* K4 */ be_nested_str_weak(to_TLV), - /* K5 */ be_nested_str_weak(tlv2raw), - /* K6 */ be_nested_str_weak(encrypt), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(log), - /* K9 */ 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), - /* K10 */ be_nested_str_weak(session), - /* K11 */ be_nested_str_weak(local_session_id), - /* K12 */ be_nested_str_weak(message_counter), - /* K13 */ be_nested_str_weak(exchange_id), - /* K14 */ be_nested_str_weak(ack_message_counter), - /* K15 */ be_nested_str_weak(send_response_frame), - /* K16 */ be_nested_str_weak(last_counter), - /* K17 */ be_nested_str_weak(finish), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(profiler), + /* K4 */ be_nested_str_weak(log), + /* K5 */ be_nested_str_weak(IM_Message_send_im_X2D1), + /* K6 */ be_nested_str_weak(data), + /* K7 */ be_nested_str_weak(to_TLV), + /* K8 */ be_nested_str_weak(IM_Message_send_im_X2D1_X2E1), + /* K9 */ be_nested_str_weak(tlv2raw), + /* K10 */ be_nested_str_weak(IM_Message_send_im_X2D1_X2E2), + /* K11 */ be_nested_str_weak(encode_frame), + /* K12 */ be_nested_str_weak(IM_Message_send_im_X2D2), + /* K13 */ be_nested_str_weak(encrypt), + /* K14 */ be_nested_str_weak(IM_Message_send_im_X2D3), + /* K15 */ be_nested_str_weak(tasmota), + /* K16 */ be_nested_str_weak(loglevel), + /* K17 */ 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), + /* K18 */ be_nested_str_weak(session), + /* K19 */ be_nested_str_weak(local_session_id), + /* K20 */ be_nested_str_weak(message_counter), + /* K21 */ be_nested_str_weak(exchange_id), + /* K22 */ be_nested_str_weak(ack_message_counter), + /* K23 */ be_nested_str_weak(send_response_frame), + /* K24 */ be_nested_str_weak(IM_Message_send_im_X2D4), + /* K25 */ be_nested_str_weak(last_counter), + /* K26 */ be_nested_str_weak(finish), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ + ( &(const binstruction[70]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0001, // 0001 JMPT R2 #0004 0x50080000, // 0002 LDBOOL R2 0 0 0x80040400, // 0003 RET 1 R2 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x8C0C0502, // 0005 GETMET R3 R2 K2 - 0x88140103, // 0006 GETMBR R5 R0 K3 - 0x8C140B04, // 0007 GETMET R5 R5 K4 - 0x7C140200, // 0008 CALL R5 1 - 0x8C140B05, // 0009 GETMET R5 R5 K5 - 0x7C140200, // 000A CALL R5 1 - 0x7C0C0400, // 000B CALL R3 2 - 0x8C0C0506, // 000C GETMET R3 R2 K6 - 0x7C0C0200, // 000D CALL R3 1 - 0xB80E0E00, // 000E GETNGBL R3 K7 - 0x8C0C0708, // 000F GETMET R3 R3 K8 - 0x60140018, // 0010 GETGBL R5 G24 - 0x58180009, // 0011 LDCONST R6 K9 - 0x881C050A, // 0012 GETMBR R7 R2 K10 - 0x881C0F0B, // 0013 GETMBR R7 R7 K11 - 0x8820050C, // 0014 GETMBR R8 R2 K12 - 0x8824050D, // 0015 GETMBR R9 R2 K13 - 0x8828050E, // 0016 GETMBR R10 R2 K14 - 0x7C140A00, // 0017 CALL R5 5 - 0x541A0003, // 0018 LDINT R6 4 - 0x7C0C0600, // 0019 CALL R3 3 - 0x8C0C030F, // 001A GETMET R3 R1 K15 - 0x5C140400, // 001B MOVE R5 R2 - 0x7C0C0400, // 001C CALL R3 2 - 0x880C050C, // 001D GETMBR R3 R2 K12 - 0x90022003, // 001E SETMBR R0 K16 R3 - 0x500C0200, // 001F LDBOOL R3 1 0 - 0x90022203, // 0020 SETMBR R0 K17 R3 - 0x80000000, // 0021 RET 0 + 0xB80E0400, // 0005 GETNGBL R3 K2 + 0x880C0703, // 0006 GETMBR R3 R3 K3 + 0x8C0C0704, // 0007 GETMET R3 R3 K4 + 0x58140005, // 0008 LDCONST R5 K5 + 0x7C0C0400, // 0009 CALL R3 2 + 0x880C0106, // 000A GETMBR R3 R0 K6 + 0x8C0C0707, // 000B GETMET R3 R3 K7 + 0x7C0C0200, // 000C CALL R3 1 + 0xB8120400, // 000D GETNGBL R4 K2 + 0x88100903, // 000E GETMBR R4 R4 K3 + 0x8C100904, // 000F GETMET R4 R4 K4 + 0x58180008, // 0010 LDCONST R6 K8 + 0x7C100400, // 0011 CALL R4 2 + 0x8C100709, // 0012 GETMET R4 R3 K9 + 0x7C100200, // 0013 CALL R4 1 + 0xB8160400, // 0014 GETNGBL R5 K2 + 0x88140B03, // 0015 GETMBR R5 R5 K3 + 0x8C140B04, // 0016 GETMET R5 R5 K4 + 0x581C000A, // 0017 LDCONST R7 K10 + 0x7C140400, // 0018 CALL R5 2 + 0x8C14050B, // 0019 GETMET R5 R2 K11 + 0x5C1C0800, // 001A MOVE R7 R4 + 0x7C140400, // 001B CALL R5 2 + 0xB8160400, // 001C GETNGBL R5 K2 + 0x88140B03, // 001D GETMBR R5 R5 K3 + 0x8C140B04, // 001E GETMET R5 R5 K4 + 0x581C000C, // 001F LDCONST R7 K12 + 0x7C140400, // 0020 CALL R5 2 + 0x8C14050D, // 0021 GETMET R5 R2 K13 + 0x7C140200, // 0022 CALL R5 1 + 0xB8160400, // 0023 GETNGBL R5 K2 + 0x88140B03, // 0024 GETMBR R5 R5 K3 + 0x8C140B04, // 0025 GETMET R5 R5 K4 + 0x581C000E, // 0026 LDCONST R7 K14 + 0x7C140400, // 0027 CALL R5 2 + 0xB8161E00, // 0028 GETNGBL R5 K15 + 0x8C140B10, // 0029 GETMET R5 R5 K16 + 0x541E0003, // 002A LDINT R7 4 + 0x7C140400, // 002B CALL R5 2 + 0x7816000B, // 002C JMPF R5 #0039 + 0xB8161E00, // 002D GETNGBL R5 K15 + 0x8C140B04, // 002E GETMET R5 R5 K4 + 0x601C0018, // 002F GETGBL R7 G24 + 0x58200011, // 0030 LDCONST R8 K17 + 0x88240512, // 0031 GETMBR R9 R2 K18 + 0x88241313, // 0032 GETMBR R9 R9 K19 + 0x88280514, // 0033 GETMBR R10 R2 K20 + 0x882C0515, // 0034 GETMBR R11 R2 K21 + 0x88300516, // 0035 GETMBR R12 R2 K22 + 0x7C1C0A00, // 0036 CALL R7 5 + 0x54220003, // 0037 LDINT R8 4 + 0x7C140600, // 0038 CALL R5 3 + 0x8C140317, // 0039 GETMET R5 R1 K23 + 0x5C1C0400, // 003A MOVE R7 R2 + 0x7C140400, // 003B CALL R5 2 + 0xB8160400, // 003C GETNGBL R5 K2 + 0x88140B03, // 003D GETMBR R5 R5 K3 + 0x8C140B04, // 003E GETMET R5 R5 K4 + 0x581C0018, // 003F LDCONST R7 K24 + 0x7C140400, // 0040 CALL R5 2 + 0x88140514, // 0041 GETMBR R5 R2 K20 + 0x90023205, // 0042 SETMBR R0 K25 R5 + 0x50140200, // 0043 LDBOOL R5 1 0 + 0x90023405, // 0044 SETMBR R0 K26 R5 + 0x80000000, // 0045 RET 0 }) ) ); @@ -107,28 +188,23 @@ be_local_closure(Matter_IM_Message_send_im, /* name */ /******************************************************************** -** Solidified function: get_exchangeid +** Solidified function: status_error_received ********************************************************************/ -be_local_closure(Matter_IM_Message_get_exchangeid, /* name */ +be_local_closure(Matter_IM_Message_status_error_received, /* name */ be_nested_proto( 2, /* nstack */ - 1, /* argc */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(resp), - /* K1 */ be_nested_str_weak(exchange_id), - }), - be_str_weak(get_exchangeid), + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(status_error_received), &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x80040200, // 0002 RET 1 R1 + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 }) ) ); @@ -136,9 +212,9 @@ be_local_closure(Matter_IM_Message_get_exchangeid, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: reset ********************************************************************/ -be_local_closure(Matter_IM_Message_init, /* name */ +be_local_closure(Matter_IM_Message_reset, /* name */ be_nested_proto( 8, /* nstack */ 4, /* argc */ @@ -148,7 +224,7 @@ be_local_closure(Matter_IM_Message_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ + ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(resp), /* K1 */ be_nested_str_weak(build_response), /* K2 */ be_nested_str_weak(ready), @@ -159,10 +235,11 @@ be_local_closure(Matter_IM_Message_init, /* name */ /* K7 */ be_nested_str_weak(last_counter), /* K8 */ be_const_int(0), /* K9 */ be_nested_str_weak(finish), + /* K10 */ be_nested_str_weak(data), }), - be_str_weak(init), + be_str_weak(reset), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ + ( &(const binstruction[19]) { /* code */ 0x8C100301, // 0000 GETMET R4 R1 K1 0x5C180400, // 0001 MOVE R6 R2 0x5C1C0600, // 0002 MOVE R7 R3 @@ -179,43 +256,9 @@ be_local_closure(Matter_IM_Message_init, /* name */ 0x90020F08, // 000D SETMBR R0 K7 K8 0x50100000, // 000E LDBOOL R4 0 0 0x90021204, // 000F SETMBR R0 K9 R4 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: ack_received -********************************************************************/ -be_local_closure(Matter_IM_Message_ack_received, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(expiration), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(MSG_TIMEOUT), - }), - be_str_weak(ack_received), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80A0200, // 0000 GETNGBL R2 K1 - 0x8C080502, // 0001 GETMET R2 R2 K2 - 0x7C080200, // 0002 CALL R2 1 - 0x880C0103, // 0003 GETMBR R3 R0 K3 - 0x00080403, // 0004 ADD R2 R2 R3 - 0x90020002, // 0005 SETMBR R0 K0 R2 - 0x50080000, // 0006 LDBOOL R2 0 0 - 0x80040400, // 0007 RET 1 R2 + 0x4C100000, // 0010 LDNIL R4 + 0x90021404, // 0011 SETMBR R0 K10 R4 + 0x80000000, // 0012 RET 0 }) ) ); @@ -298,28 +341,65 @@ be_local_closure(Matter_IM_Message_status_ok_received, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: ack_received +********************************************************************/ +be_local_closure(Matter_IM_Message_ack_received, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(expiration), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(millis), + /* K3 */ be_nested_str_weak(MSG_TIMEOUT), + }), + be_str_weak(ack_received), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xB80A0200, // 0000 GETNGBL R2 K1 + 0x8C080502, // 0001 GETMET R2 R2 K2 + 0x7C080200, // 0002 CALL R2 1 + 0x880C0103, // 0003 GETMBR R3 R0 K3 + 0x00080403, // 0004 ADD R2 R2 R3 + 0x90020002, // 0005 SETMBR R0 K0 R2 + 0x50080000, // 0006 LDBOOL R2 0 0 + 0x80040400, // 0007 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_IM_Message ********************************************************************/ be_local_class(Matter_IM_Message, 6, NULL, - be_nested_map(14, + be_nested_map(15, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(MSG_TIMEOUT, -1), be_const_int(5000) }, - { be_const_key_weak(data, -1), be_const_var(4) }, + { be_const_key_weak(init, 11), be_const_closure(Matter_IM_Message_init_closure) }, + { be_const_key_weak(get_exchangeid, 10), be_const_closure(Matter_IM_Message_get_exchangeid_closure) }, + { be_const_key_weak(reset, -1), be_const_closure(Matter_IM_Message_reset_closure) }, { be_const_key_weak(send_im, -1), be_const_closure(Matter_IM_Message_send_im_closure) }, - { be_const_key_weak(status_ok_received, -1), be_const_closure(Matter_IM_Message_status_ok_received_closure) }, - { be_const_key_weak(get_exchangeid, 0), be_const_closure(Matter_IM_Message_get_exchangeid_closure) }, - { be_const_key_weak(init, -1), be_const_closure(Matter_IM_Message_init_closure) }, - { be_const_key_weak(expiration, -1), be_const_var(0) }, - { be_const_key_weak(resp, -1), be_const_var(1) }, - { be_const_key_weak(finish, 13), be_const_var(3) }, - { be_const_key_weak(last_counter, 6), be_const_var(5) }, - { be_const_key_weak(ack_received, 9), be_const_closure(Matter_IM_Message_ack_received_closure) }, + { be_const_key_weak(status_error_received, -1), be_const_closure(Matter_IM_Message_status_error_received_closure) }, + { be_const_key_weak(finish, -1), be_const_var(3) }, + { be_const_key_weak(status_ok_received, 2), be_const_closure(Matter_IM_Message_status_ok_received_closure) }, + { be_const_key_weak(last_counter, -1), be_const_var(5) }, { be_const_key_weak(reached_timeout, -1), be_const_closure(Matter_IM_Message_reached_timeout_closure) }, - { be_const_key_weak(status_error_received, 3), be_const_closure(Matter_IM_Message_status_error_received_closure) }, - { be_const_key_weak(ready, -1), be_const_var(2) }, + { be_const_key_weak(resp, -1), be_const_var(1) }, + { be_const_key_weak(data, -1), be_const_var(4) }, + { be_const_key_weak(expiration, -1), be_const_var(0) }, + { be_const_key_weak(ready, 6), be_const_var(2) }, + { be_const_key_weak(MSG_TIMEOUT, 5), be_const_int(5000) }, + { be_const_key_weak(ack_received, -1), be_const_closure(Matter_IM_Message_ack_received_closure) }, })), be_str_weak(Matter_IM_Message) ); @@ -749,7 +829,7 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ + ( &(const bvalue[21]) { /* constants */ /* K0 */ be_nested_str_weak(ready), /* K1 */ be_nested_str_weak(data), /* K2 */ be_nested_str_weak(attribute_reports), @@ -762,18 +842,19 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */ /* K9 */ be_nested_str_weak(encode_frame), /* K10 */ be_nested_str_weak(encrypt), /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(log), - /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i), - /* K14 */ be_nested_str_weak(session), - /* K15 */ be_nested_str_weak(local_session_id), - /* K16 */ be_nested_str_weak(ack_message_counter), - /* K17 */ be_nested_str_weak(message_counter), - /* K18 */ be_nested_str_weak(send_response_frame), - /* K19 */ be_nested_str_weak(last_counter), + /* K12 */ be_nested_str_weak(loglevel), + /* K13 */ be_nested_str_weak(log), + /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i), + /* K15 */ be_nested_str_weak(session), + /* K16 */ be_nested_str_weak(local_session_id), + /* K17 */ be_nested_str_weak(ack_message_counter), + /* K18 */ be_nested_str_weak(message_counter), + /* K19 */ be_nested_str_weak(send_response_frame), + /* K20 */ be_nested_str_weak(last_counter), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[69]) { /* code */ + ( &(const binstruction[74]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0001, // 0001 JMPT R2 #0004 0x50080000, // 0002 LDBOOL R2 0 0 @@ -783,7 +864,7 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */ 0x880C0702, // 0006 GETMBR R3 R3 K2 0x7C080200, // 0007 CALL R2 1 0x24080503, // 0008 GT R2 R2 K3 - 0x780A002C, // 0009 JMPF R2 #0037 + 0x780A0031, // 0009 JMPF R2 #003C 0x88080104, // 000A GETMBR R2 R0 K4 0x780A000F, // 000B JMPF R2 #001C 0x60080003, // 000C GETGBL R2 G3 @@ -801,7 +882,7 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */ 0x90020002, // 0018 SETMBR R0 K0 R2 0x50080000, // 0019 LDBOOL R2 0 0 0x90020C02, // 001A SETMBR R0 K6 R2 - 0x70020019, // 001B JMP #0036 + 0x7002001E, // 001B JMP #003B 0x88080107, // 001C GETMBR R2 R0 K7 0x8C080508, // 001D GETMET R2 R2 K8 0x50100000, // 001E LDBOOL R4 0 0 @@ -812,37 +893,42 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */ 0x7C0C0200, // 0023 CALL R3 1 0xB80E1600, // 0024 GETNGBL R3 K11 0x8C0C070C, // 0025 GETMET R3 R3 K12 - 0x60140018, // 0026 GETGBL R5 G24 - 0x5818000D, // 0027 LDCONST R6 K13 - 0x881C050E, // 0028 GETMBR R7 R2 K14 - 0x881C0F0F, // 0029 GETMBR R7 R7 K15 - 0x88200510, // 002A GETMBR R8 R2 K16 - 0x88240511, // 002B GETMBR R9 R2 K17 - 0x7C140800, // 002C CALL R5 4 - 0x541A0003, // 002D LDINT R6 4 - 0x7C0C0600, // 002E CALL R3 3 - 0x8C0C0312, // 002F GETMET R3 R1 K18 - 0x5C140400, // 0030 MOVE R5 R2 - 0x7C0C0400, // 0031 CALL R3 2 - 0x880C0511, // 0032 GETMBR R3 R2 K17 - 0x90022603, // 0033 SETMBR R0 K19 R3 - 0x500C0200, // 0034 LDBOOL R3 1 0 - 0x90020C03, // 0035 SETMBR R0 K6 R3 - 0x7002000C, // 0036 JMP #0044 - 0x88080104, // 0037 GETMBR R2 R0 K4 - 0x780A0008, // 0038 JMPF R2 #0042 - 0x60080003, // 0039 GETGBL R2 G3 - 0x5C0C0000, // 003A MOVE R3 R0 - 0x7C080200, // 003B CALL R2 1 - 0x8C080505, // 003C GETMET R2 R2 K5 - 0x5C100200, // 003D MOVE R4 R1 - 0x7C080400, // 003E CALL R2 2 - 0x50080000, // 003F LDBOOL R2 0 0 - 0x90020802, // 0040 SETMBR R0 K4 R2 - 0x70020001, // 0041 JMP #0044 - 0x50080200, // 0042 LDBOOL R2 1 0 - 0x90020C02, // 0043 SETMBR R0 K6 R2 - 0x80000000, // 0044 RET 0 + 0x54160003, // 0026 LDINT R5 4 + 0x7C0C0400, // 0027 CALL R3 2 + 0x780E000A, // 0028 JMPF R3 #0034 + 0xB80E1600, // 0029 GETNGBL R3 K11 + 0x8C0C070D, // 002A GETMET R3 R3 K13 + 0x60140018, // 002B GETGBL R5 G24 + 0x5818000E, // 002C LDCONST R6 K14 + 0x881C050F, // 002D GETMBR R7 R2 K15 + 0x881C0F10, // 002E GETMBR R7 R7 K16 + 0x88200511, // 002F GETMBR R8 R2 K17 + 0x88240512, // 0030 GETMBR R9 R2 K18 + 0x7C140800, // 0031 CALL R5 4 + 0x541A0003, // 0032 LDINT R6 4 + 0x7C0C0600, // 0033 CALL R3 3 + 0x8C0C0313, // 0034 GETMET R3 R1 K19 + 0x5C140400, // 0035 MOVE R5 R2 + 0x7C0C0400, // 0036 CALL R3 2 + 0x880C0512, // 0037 GETMBR R3 R2 K18 + 0x90022803, // 0038 SETMBR R0 K20 R3 + 0x500C0200, // 0039 LDBOOL R3 1 0 + 0x90020C03, // 003A SETMBR R0 K6 R3 + 0x7002000C, // 003B JMP #0049 + 0x88080104, // 003C GETMBR R2 R0 K4 + 0x780A0008, // 003D JMPF R2 #0047 + 0x60080003, // 003E GETGBL R2 G3 + 0x5C0C0000, // 003F MOVE R3 R0 + 0x7C080200, // 0040 CALL R2 1 + 0x8C080505, // 0041 GETMET R2 R2 K5 + 0x5C100200, // 0042 MOVE R4 R1 + 0x7C080400, // 0043 CALL R2 2 + 0x50080000, // 0044 LDBOOL R2 0 0 + 0x90020802, // 0045 SETMBR R0 K4 R2 + 0x70020001, // 0046 JMP #0049 + 0x50080200, // 0047 LDBOOL R2 1 0 + 0x90020C02, // 0048 SETMBR R0 K6 R2 + 0x80000000, // 0049 RET 0 }) ) ); @@ -1343,38 +1429,44 @@ be_local_closure(Matter_IM_SubscribeResponse_status_ok_received, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ + ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3ESub_OK_X20_X20_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), - /* K3 */ be_nested_str_weak(session), - /* K4 */ be_nested_str_weak(local_session_id), - /* K5 */ be_nested_str_weak(sub), - /* K6 */ be_nested_str_weak(subscription_id), - /* K7 */ be_const_int(3), - /* K8 */ be_nested_str_weak(status_ok_received), + /* K1 */ be_nested_str_weak(loglevel), + /* K2 */ be_const_int(3), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ESub_OK_X20_X20_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), + /* K5 */ be_nested_str_weak(session), + /* K6 */ be_nested_str_weak(local_session_id), + /* K7 */ be_nested_str_weak(sub), + /* K8 */ be_nested_str_weak(subscription_id), + /* K9 */ be_nested_str_weak(status_ok_received), }), be_str_weak(status_ok_received), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ + ( &(const binstruction[23]) { /* code */ 0xB80A0000, // 0000 GETNGBL R2 K0 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x60100018, // 0002 GETGBL R4 G24 - 0x58140002, // 0003 LDCONST R5 K2 - 0x88180303, // 0004 GETMBR R6 R1 K3 - 0x88180D04, // 0005 GETMBR R6 R6 K4 - 0x881C0105, // 0006 GETMBR R7 R0 K5 - 0x881C0F06, // 0007 GETMBR R7 R7 K6 - 0x7C100600, // 0008 CALL R4 3 - 0x58140007, // 0009 LDCONST R5 K7 - 0x7C080600, // 000A CALL R2 3 - 0x60080003, // 000B GETGBL R2 G3 - 0x5C0C0000, // 000C MOVE R3 R0 - 0x7C080200, // 000D CALL R2 1 - 0x8C080508, // 000E GETMET R2 R2 K8 - 0x5C100200, // 000F MOVE R4 R1 - 0x7C080400, // 0010 CALL R2 2 - 0x80040400, // 0011 RET 1 R2 + 0x58100002, // 0002 LDCONST R4 K2 + 0x7C080400, // 0003 CALL R2 2 + 0x780A000A, // 0004 JMPF R2 #0010 + 0xB80A0000, // 0005 GETNGBL R2 K0 + 0x8C080503, // 0006 GETMET R2 R2 K3 + 0x60100018, // 0007 GETGBL R4 G24 + 0x58140004, // 0008 LDCONST R5 K4 + 0x88180305, // 0009 GETMBR R6 R1 K5 + 0x88180D06, // 000A GETMBR R6 R6 K6 + 0x881C0107, // 000B GETMBR R7 R0 K7 + 0x881C0F08, // 000C GETMBR R7 R7 K8 + 0x7C100600, // 000D CALL R4 3 + 0x58140002, // 000E LDCONST R5 K2 + 0x7C080600, // 000F CALL R2 3 + 0x60080003, // 0010 GETGBL R2 G3 + 0x5C0C0000, // 0011 MOVE R3 R0 + 0x7C080200, // 0012 CALL R2 1 + 0x8C080509, // 0013 GETMET R2 R2 K9 + 0x5C100200, // 0014 MOVE R4 R1 + 0x7C080400, // 0015 CALL R2 2 + 0x80040400, // 0016 RET 1 R2 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h index f4c65420ed96..08f9cf707057 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h @@ -12,16 +12,16 @@ extern const bclass be_class_Matter_Frame; be_local_closure(Matter_Frame_encode_frame, /* name */ be_nested_proto( 7, /* nstack */ - 2, /* argc */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str_weak(flags), - /* K1 */ be_const_int(0), + ( &(const bvalue[29]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(flags), /* K2 */ be_nested_str_weak(flag_s), /* K3 */ be_nested_str_weak(flag_dsiz), /* K4 */ be_const_int(3), @@ -48,158 +48,166 @@ be_local_closure(Matter_Frame_encode_frame, /* name */ /* K25 */ be_nested_str_weak(protocol_id), /* K26 */ be_nested_str_weak(ack_message_counter), /* K27 */ be_nested_str_weak(app_payload_idx), - /* K28 */ be_nested_str_weak(debug), - /* K29 */ be_nested_str_weak(raw), + /* K28 */ be_nested_str_weak(raw), }), be_str_weak(encode_frame), &be_const_str_solidified, - ( &(const binstruction[146]) { /* code */ - 0x60080015, // 0000 GETGBL R2 G21 - 0x7C080000, // 0001 CALL R2 0 - 0x880C0100, // 0002 GETMBR R3 R0 K0 - 0x4C100000, // 0003 LDNIL R4 - 0x1C0C0604, // 0004 EQ R3 R3 R4 - 0x780E000D, // 0005 JMPF R3 #0014 - 0x90020101, // 0006 SETMBR R0 K0 K1 - 0x880C0102, // 0007 GETMBR R3 R0 K2 - 0x780E0003, // 0008 JMPF R3 #000D - 0x880C0100, // 0009 GETMBR R3 R0 K0 - 0x54120003, // 000A LDINT R4 4 - 0x300C0604, // 000B OR R3 R3 R4 - 0x90020003, // 000C SETMBR R0 K0 R3 - 0x880C0103, // 000D GETMBR R3 R0 K3 - 0x780E0004, // 000E JMPF R3 #0014 - 0x880C0100, // 000F GETMBR R3 R0 K0 - 0x88100103, // 0010 GETMBR R4 R0 K3 - 0x2C100904, // 0011 AND R4 R4 K4 - 0x300C0604, // 0012 OR R3 R3 R4 - 0x90020003, // 0013 SETMBR R0 K0 R3 - 0x8C0C0505, // 0014 GETMET R3 R2 K5 - 0x88140100, // 0015 GETMBR R5 R0 K0 - 0x58180006, // 0016 LDCONST R6 K6 - 0x7C0C0600, // 0017 CALL R3 3 - 0x8C0C0505, // 0018 GETMET R3 R2 K5 - 0x88140107, // 0019 GETMBR R5 R0 K7 - 0x78160001, // 001A JMPF R5 #001D - 0x88140107, // 001B GETMBR R5 R0 K7 - 0x70020000, // 001C JMP #001E - 0x58140001, // 001D LDCONST R5 K1 - 0x58180008, // 001E LDCONST R6 K8 - 0x7C0C0600, // 001F CALL R3 3 - 0x880C0109, // 0020 GETMBR R3 R0 K9 - 0x4C100000, // 0021 LDNIL R4 - 0x1C0C0604, // 0022 EQ R3 R3 R4 - 0x780E0013, // 0023 JMPF R3 #0038 - 0x90021301, // 0024 SETMBR R0 K9 K1 - 0x880C010A, // 0025 GETMBR R3 R0 K10 - 0x780E0003, // 0026 JMPF R3 #002B - 0x880C0109, // 0027 GETMBR R3 R0 K9 - 0x5412007F, // 0028 LDINT R4 128 - 0x300C0604, // 0029 OR R3 R3 R4 - 0x90021203, // 002A SETMBR R0 K9 R3 - 0x880C010B, // 002B GETMBR R3 R0 K11 - 0x780E0003, // 002C JMPF R3 #0031 - 0x880C0109, // 002D GETMBR R3 R0 K9 - 0x5412003F, // 002E LDINT R4 64 - 0x300C0604, // 002F OR R3 R3 R4 - 0x90021203, // 0030 SETMBR R0 K9 R3 - 0x880C010C, // 0031 GETMBR R3 R0 K12 - 0x780E0004, // 0032 JMPF R3 #0038 + ( &(const binstruction[155]) { /* code */ + 0x4C0C0000, // 0000 LDNIL R3 + 0x1C0C0403, // 0001 EQ R3 R2 R3 + 0x780E000A, // 0002 JMPF R3 #000E + 0x600C0015, // 0003 GETGBL R3 G21 + 0x5412000F, // 0004 LDINT R4 16 + 0x78060003, // 0005 JMPF R1 #000A + 0x6014000C, // 0006 GETGBL R5 G12 + 0x5C180200, // 0007 MOVE R6 R1 + 0x7C140200, // 0008 CALL R5 1 + 0x70020000, // 0009 JMP #000B + 0x58140000, // 000A LDCONST R5 K0 + 0x00100805, // 000B ADD R4 R4 R5 + 0x7C0C0200, // 000C CALL R3 1 + 0x5C080600, // 000D MOVE R2 R3 + 0x880C0101, // 000E GETMBR R3 R0 K1 + 0x4C100000, // 000F LDNIL R4 + 0x1C0C0604, // 0010 EQ R3 R3 R4 + 0x780E000D, // 0011 JMPF R3 #0020 + 0x90020300, // 0012 SETMBR R0 K1 K0 + 0x880C0102, // 0013 GETMBR R3 R0 K2 + 0x780E0003, // 0014 JMPF R3 #0019 + 0x880C0101, // 0015 GETMBR R3 R0 K1 + 0x54120003, // 0016 LDINT R4 4 + 0x300C0604, // 0017 OR R3 R3 R4 + 0x90020203, // 0018 SETMBR R0 K1 R3 + 0x880C0103, // 0019 GETMBR R3 R0 K3 + 0x780E0004, // 001A JMPF R3 #0020 + 0x880C0101, // 001B GETMBR R3 R0 K1 + 0x88100103, // 001C GETMBR R4 R0 K3 + 0x2C100904, // 001D AND R4 R4 K4 + 0x300C0604, // 001E OR R3 R3 R4 + 0x90020203, // 001F SETMBR R0 K1 R3 + 0x8C0C0505, // 0020 GETMET R3 R2 K5 + 0x88140101, // 0021 GETMBR R5 R0 K1 + 0x58180006, // 0022 LDCONST R6 K6 + 0x7C0C0600, // 0023 CALL R3 3 + 0x8C0C0505, // 0024 GETMET R3 R2 K5 + 0x88140107, // 0025 GETMBR R5 R0 K7 + 0x78160001, // 0026 JMPF R5 #0029 + 0x88140107, // 0027 GETMBR R5 R0 K7 + 0x70020000, // 0028 JMP #002A + 0x58140000, // 0029 LDCONST R5 K0 + 0x58180008, // 002A LDCONST R6 K8 + 0x7C0C0600, // 002B CALL R3 3 + 0x880C0109, // 002C GETMBR R3 R0 K9 + 0x4C100000, // 002D LDNIL R4 + 0x1C0C0604, // 002E EQ R3 R3 R4 + 0x780E0013, // 002F JMPF R3 #0044 + 0x90021300, // 0030 SETMBR R0 K9 K0 + 0x880C010A, // 0031 GETMBR R3 R0 K10 + 0x780E0003, // 0032 JMPF R3 #0037 0x880C0109, // 0033 GETMBR R3 R0 K9 - 0x8810010C, // 0034 GETMBR R4 R0 K12 - 0x2C100904, // 0035 AND R4 R4 K4 - 0x300C0604, // 0036 OR R3 R3 R4 - 0x90021203, // 0037 SETMBR R0 K9 R3 - 0x8C0C0505, // 0038 GETMET R3 R2 K5 - 0x88140109, // 0039 GETMBR R5 R0 K9 - 0x58180006, // 003A LDCONST R6 K6 - 0x7C0C0600, // 003B CALL R3 3 - 0x8C0C0505, // 003C GETMET R3 R2 K5 - 0x8814010D, // 003D GETMBR R5 R0 K13 - 0x541A0003, // 003E LDINT R6 4 - 0x7C0C0600, // 003F CALL R3 3 - 0x880C0102, // 0040 GETMBR R3 R0 K2 - 0x780E0001, // 0041 JMPF R3 #0044 - 0x880C010E, // 0042 GETMBR R3 R0 K14 - 0x400C0403, // 0043 CONNECT R3 R2 R3 - 0x880C0103, // 0044 GETMBR R3 R0 K3 - 0x1C0C0706, // 0045 EQ R3 R3 K6 - 0x780E0001, // 0046 JMPF R3 #0049 - 0x880C010F, // 0047 GETMBR R3 R0 K15 - 0x400C0403, // 0048 CONNECT R3 R2 R3 - 0x880C0103, // 0049 GETMBR R3 R0 K3 - 0x1C0C0708, // 004A EQ R3 R3 K8 - 0x780E0003, // 004B JMPF R3 #0050 - 0x8C0C0505, // 004C GETMET R3 R2 K5 - 0x88140110, // 004D GETMBR R5 R0 K16 - 0x58180008, // 004E LDCONST R6 K8 - 0x7C0C0600, // 004F CALL R3 3 - 0x600C000C, // 0050 GETGBL R3 G12 - 0x5C100400, // 0051 MOVE R4 R2 - 0x7C0C0200, // 0052 CALL R3 1 - 0x90022203, // 0053 SETMBR R0 K17 R3 - 0x880C0112, // 0054 GETMBR R3 R0 K18 - 0x4C100000, // 0055 LDNIL R4 - 0x1C0C0604, // 0056 EQ R3 R3 R4 - 0x780E0016, // 0057 JMPF R3 #006F - 0x90022501, // 0058 SETMBR R0 K18 K1 - 0x880C0113, // 0059 GETMBR R3 R0 K19 - 0x780E0003, // 005A JMPF R3 #005F - 0x880C0112, // 005B GETMBR R3 R0 K18 - 0x5412000F, // 005C LDINT R4 16 - 0x300C0604, // 005D OR R3 R3 R4 - 0x90022403, // 005E SETMBR R0 K18 R3 - 0x880C0114, // 005F GETMBR R3 R0 K20 - 0x780E0003, // 0060 JMPF R3 #0065 - 0x880C0112, // 0061 GETMBR R3 R0 K18 - 0x54120003, // 0062 LDINT R4 4 - 0x300C0604, // 0063 OR R3 R3 R4 - 0x90022403, // 0064 SETMBR R0 K18 R3 - 0x880C0115, // 0065 GETMBR R3 R0 K21 - 0x780E0002, // 0066 JMPF R3 #006A + 0x5412007F, // 0034 LDINT R4 128 + 0x300C0604, // 0035 OR R3 R3 R4 + 0x90021203, // 0036 SETMBR R0 K9 R3 + 0x880C010B, // 0037 GETMBR R3 R0 K11 + 0x780E0003, // 0038 JMPF R3 #003D + 0x880C0109, // 0039 GETMBR R3 R0 K9 + 0x5412003F, // 003A LDINT R4 64 + 0x300C0604, // 003B OR R3 R3 R4 + 0x90021203, // 003C SETMBR R0 K9 R3 + 0x880C010C, // 003D GETMBR R3 R0 K12 + 0x780E0004, // 003E JMPF R3 #0044 + 0x880C0109, // 003F GETMBR R3 R0 K9 + 0x8810010C, // 0040 GETMBR R4 R0 K12 + 0x2C100904, // 0041 AND R4 R4 K4 + 0x300C0604, // 0042 OR R3 R3 R4 + 0x90021203, // 0043 SETMBR R0 K9 R3 + 0x8C0C0505, // 0044 GETMET R3 R2 K5 + 0x88140109, // 0045 GETMBR R5 R0 K9 + 0x58180006, // 0046 LDCONST R6 K6 + 0x7C0C0600, // 0047 CALL R3 3 + 0x8C0C0505, // 0048 GETMET R3 R2 K5 + 0x8814010D, // 0049 GETMBR R5 R0 K13 + 0x541A0003, // 004A LDINT R6 4 + 0x7C0C0600, // 004B CALL R3 3 + 0x880C0102, // 004C GETMBR R3 R0 K2 + 0x780E0001, // 004D JMPF R3 #0050 + 0x880C010E, // 004E GETMBR R3 R0 K14 + 0x400C0403, // 004F CONNECT R3 R2 R3 + 0x880C0103, // 0050 GETMBR R3 R0 K3 + 0x1C0C0706, // 0051 EQ R3 R3 K6 + 0x780E0001, // 0052 JMPF R3 #0055 + 0x880C010F, // 0053 GETMBR R3 R0 K15 + 0x400C0403, // 0054 CONNECT R3 R2 R3 + 0x880C0103, // 0055 GETMBR R3 R0 K3 + 0x1C0C0708, // 0056 EQ R3 R3 K8 + 0x780E0003, // 0057 JMPF R3 #005C + 0x8C0C0505, // 0058 GETMET R3 R2 K5 + 0x88140110, // 0059 GETMBR R5 R0 K16 + 0x58180008, // 005A LDCONST R6 K8 + 0x7C0C0600, // 005B CALL R3 3 + 0x600C000C, // 005C GETGBL R3 G12 + 0x5C100400, // 005D MOVE R4 R2 + 0x7C0C0200, // 005E CALL R3 1 + 0x90022203, // 005F SETMBR R0 K17 R3 + 0x880C0112, // 0060 GETMBR R3 R0 K18 + 0x4C100000, // 0061 LDNIL R4 + 0x1C0C0604, // 0062 EQ R3 R3 R4 + 0x780E0016, // 0063 JMPF R3 #007B + 0x90022500, // 0064 SETMBR R0 K18 K0 + 0x880C0113, // 0065 GETMBR R3 R0 K19 + 0x780E0003, // 0066 JMPF R3 #006B 0x880C0112, // 0067 GETMBR R3 R0 K18 - 0x300C0708, // 0068 OR R3 R3 K8 - 0x90022403, // 0069 SETMBR R0 K18 R3 - 0x880C0116, // 006A GETMBR R3 R0 K22 - 0x780E0002, // 006B JMPF R3 #006F - 0x880C0112, // 006C GETMBR R3 R0 K18 - 0x300C0706, // 006D OR R3 R3 K6 - 0x90022403, // 006E SETMBR R0 K18 R3 - 0x8C0C0505, // 006F GETMET R3 R2 K5 - 0x88140112, // 0070 GETMBR R5 R0 K18 - 0x58180006, // 0071 LDCONST R6 K6 - 0x7C0C0600, // 0072 CALL R3 3 - 0x8C0C0505, // 0073 GETMET R3 R2 K5 - 0x88140117, // 0074 GETMBR R5 R0 K23 - 0x58180006, // 0075 LDCONST R6 K6 - 0x7C0C0600, // 0076 CALL R3 3 - 0x8C0C0505, // 0077 GETMET R3 R2 K5 - 0x88140118, // 0078 GETMBR R5 R0 K24 - 0x541AFFFE, // 0079 LDINT R6 65535 - 0x2C140A06, // 007A AND R5 R5 R6 - 0x58180008, // 007B LDCONST R6 K8 - 0x7C0C0600, // 007C CALL R3 3 - 0x8C0C0505, // 007D GETMET R3 R2 K5 - 0x88140119, // 007E GETMBR R5 R0 K25 - 0x58180008, // 007F LDCONST R6 K8 - 0x7C0C0600, // 0080 CALL R3 3 - 0x880C0115, // 0081 GETMBR R3 R0 K21 - 0x780E0003, // 0082 JMPF R3 #0087 + 0x5412000F, // 0068 LDINT R4 16 + 0x300C0604, // 0069 OR R3 R3 R4 + 0x90022403, // 006A SETMBR R0 K18 R3 + 0x880C0114, // 006B GETMBR R3 R0 K20 + 0x780E0003, // 006C JMPF R3 #0071 + 0x880C0112, // 006D GETMBR R3 R0 K18 + 0x54120003, // 006E LDINT R4 4 + 0x300C0604, // 006F OR R3 R3 R4 + 0x90022403, // 0070 SETMBR R0 K18 R3 + 0x880C0115, // 0071 GETMBR R3 R0 K21 + 0x780E0002, // 0072 JMPF R3 #0076 + 0x880C0112, // 0073 GETMBR R3 R0 K18 + 0x300C0708, // 0074 OR R3 R3 K8 + 0x90022403, // 0075 SETMBR R0 K18 R3 + 0x880C0116, // 0076 GETMBR R3 R0 K22 + 0x780E0002, // 0077 JMPF R3 #007B + 0x880C0112, // 0078 GETMBR R3 R0 K18 + 0x300C0706, // 0079 OR R3 R3 K6 + 0x90022403, // 007A SETMBR R0 K18 R3 + 0x8C0C0505, // 007B GETMET R3 R2 K5 + 0x88140112, // 007C GETMBR R5 R0 K18 + 0x58180006, // 007D LDCONST R6 K6 + 0x7C0C0600, // 007E CALL R3 3 + 0x8C0C0505, // 007F GETMET R3 R2 K5 + 0x88140117, // 0080 GETMBR R5 R0 K23 + 0x58180006, // 0081 LDCONST R6 K6 + 0x7C0C0600, // 0082 CALL R3 3 0x8C0C0505, // 0083 GETMET R3 R2 K5 - 0x8814011A, // 0084 GETMBR R5 R0 K26 - 0x541A0003, // 0085 LDINT R6 4 - 0x7C0C0600, // 0086 CALL R3 3 - 0x600C000C, // 0087 GETGBL R3 G12 - 0x5C100400, // 0088 MOVE R4 R2 - 0x7C0C0200, // 0089 CALL R3 1 - 0x90023603, // 008A SETMBR R0 K27 R3 - 0x78060000, // 008B JMPF R1 #008D - 0x400C0401, // 008C CONNECT R3 R2 R1 - 0x8C0C011C, // 008D GETMET R3 R0 K28 - 0x5C140400, // 008E MOVE R5 R2 - 0x7C0C0400, // 008F CALL R3 2 - 0x90023A02, // 0090 SETMBR R0 K29 R2 - 0x80040400, // 0091 RET 1 R2 + 0x88140118, // 0084 GETMBR R5 R0 K24 + 0x541AFFFE, // 0085 LDINT R6 65535 + 0x2C140A06, // 0086 AND R5 R5 R6 + 0x58180008, // 0087 LDCONST R6 K8 + 0x7C0C0600, // 0088 CALL R3 3 + 0x8C0C0505, // 0089 GETMET R3 R2 K5 + 0x88140119, // 008A GETMBR R5 R0 K25 + 0x58180008, // 008B LDCONST R6 K8 + 0x7C0C0600, // 008C CALL R3 3 + 0x880C0115, // 008D GETMBR R3 R0 K21 + 0x780E0003, // 008E JMPF R3 #0093 + 0x8C0C0505, // 008F GETMET R3 R2 K5 + 0x8814011A, // 0090 GETMBR R5 R0 K26 + 0x541A0003, // 0091 LDINT R6 4 + 0x7C0C0600, // 0092 CALL R3 3 + 0x600C000C, // 0093 GETGBL R3 G12 + 0x5C100400, // 0094 MOVE R4 R2 + 0x7C0C0200, // 0095 CALL R3 1 + 0x90023603, // 0096 SETMBR R0 K27 R3 + 0x78060000, // 0097 JMPF R1 #0099 + 0x400C0401, // 0098 CONNECT R3 R2 R1 + 0x90023802, // 0099 SETMBR R0 K28 R2 + 0x80040400, // 009A RET 1 R2 }) ) ); @@ -211,7 +219,7 @@ be_local_closure(Matter_Frame_encode_frame, /* name */ ********************************************************************/ be_local_closure(Matter_Frame_encrypt, /* name */ be_nested_proto( - 15, /* nstack */ + 23, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -219,85 +227,92 @@ be_local_closure(Matter_Frame_encrypt, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ + ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(raw), /* K2 */ be_nested_str_weak(session), - /* K3 */ be_nested_str_weak(get_r2i), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(payload_idx), - /* K6 */ be_const_int(1), - /* K7 */ be_const_int(2147483647), + /* K3 */ be_nested_str_weak(payload_idx), + /* K4 */ be_nested_str_weak(get_r2i), + /* K5 */ be_nested_str_weak(message_handler), + /* K6 */ be_nested_str_weak(_n_bytes), + /* K7 */ be_nested_str_weak(clear), /* K8 */ be_nested_str_weak(add), /* K9 */ be_nested_str_weak(flags), - /* K10 */ be_nested_str_weak(message_counter), - /* K11 */ be_nested_str_weak(is_CASE), - /* K12 */ be_nested_str_weak(get_device_id), - /* K13 */ be_nested_str_weak(resize), - /* K14 */ be_nested_str_weak(AES_CCM), - /* K15 */ be_nested_str_weak(encrypt), - /* K16 */ be_nested_str_weak(tag), + /* K10 */ be_const_int(1), + /* K11 */ be_nested_str_weak(message_counter), + /* K12 */ be_nested_str_weak(is_CASE), + /* K13 */ be_nested_str_weak(get_device_id), + /* K14 */ be_nested_str_weak(resize), + /* K15 */ be_nested_str_weak(AES_CCM), + /* K16 */ be_nested_str_weak(encrypt1), + /* K17 */ be_const_int(0), }), be_str_weak(encrypt), &be_const_str_solidified, - ( &(const binstruction[57]) { /* code */ + ( &(const binstruction[63]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x88080101, // 0001 GETMBR R2 R0 K1 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x8C100703, // 0003 GETMET R4 R3 K3 - 0x7C100200, // 0004 CALL R4 1 - 0x88140105, // 0005 GETMBR R5 R0 K5 - 0x04140B06, // 0006 SUB R5 R5 K6 - 0x40160805, // 0007 CONNECT R5 K4 R5 - 0x94140405, // 0008 GETIDX R5 R2 R5 - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x40180D07, // 000A CONNECT R6 R6 K7 - 0x94180406, // 000B GETIDX R6 R2 R6 - 0x601C0015, // 000C GETGBL R7 G21 - 0x7C1C0000, // 000D CALL R7 0 - 0x8C200F08, // 000E GETMET R8 R7 K8 - 0x88280109, // 000F GETMBR R10 R0 K9 - 0x582C0006, // 0010 LDCONST R11 K6 - 0x7C200600, // 0011 CALL R8 3 - 0x8C200F08, // 0012 GETMET R8 R7 K8 - 0x8828010A, // 0013 GETMBR R10 R0 K10 - 0x542E0003, // 0014 LDINT R11 4 - 0x7C200600, // 0015 CALL R8 3 - 0x8C20070B, // 0016 GETMET R8 R3 K11 + 0x88100103, // 0003 GETMBR R4 R0 K3 + 0x5416000F, // 0004 LDINT R5 16 + 0x8C180704, // 0005 GETMET R6 R3 K4 + 0x7C180200, // 0006 CALL R6 1 + 0x881C0105, // 0007 GETMBR R7 R0 K5 + 0x881C0F06, // 0008 GETMBR R7 R7 K6 + 0x8C200F07, // 0009 GETMET R8 R7 K7 + 0x7C200200, // 000A CALL R8 1 + 0x8C200F08, // 000B GETMET R8 R7 K8 + 0x88280109, // 000C GETMBR R10 R0 K9 + 0x582C000A, // 000D LDCONST R11 K10 + 0x7C200600, // 000E CALL R8 3 + 0x8C200F08, // 000F GETMET R8 R7 K8 + 0x8828010B, // 0010 GETMBR R10 R0 K11 + 0x542E0003, // 0011 LDINT R11 4 + 0x7C200600, // 0012 CALL R8 3 + 0x8C20070C, // 0013 GETMET R8 R3 K12 + 0x7C200200, // 0014 CALL R8 1 + 0x78220005, // 0015 JMPF R8 #001C + 0x8C20070D, // 0016 GETMET R8 R3 K13 0x7C200200, // 0017 CALL R8 1 - 0x78220005, // 0018 JMPF R8 #001F - 0x8C20070C, // 0019 GETMET R8 R3 K12 + 0x78220002, // 0018 JMPF R8 #001C + 0x8C20070D, // 0019 GETMET R8 R3 K13 0x7C200200, // 001A CALL R8 1 - 0x78220002, // 001B JMPF R8 #001F - 0x8C20070C, // 001C GETMET R8 R3 K12 - 0x7C200200, // 001D CALL R8 1 - 0x40200E08, // 001E CONNECT R8 R7 R8 - 0x8C200F0D, // 001F GETMET R8 R7 K13 - 0x542A000C, // 0020 LDINT R10 13 - 0x7C200400, // 0021 CALL R8 2 - 0x8C20030E, // 0022 GETMET R8 R1 K14 - 0x5C280800, // 0023 MOVE R10 R4 - 0x5C2C0E00, // 0024 MOVE R11 R7 - 0x5C300A00, // 0025 MOVE R12 R5 - 0x6034000C, // 0026 GETGBL R13 G12 - 0x5C380C00, // 0027 MOVE R14 R6 - 0x7C340200, // 0028 CALL R13 1 - 0x543A000F, // 0029 LDINT R14 16 - 0x7C200C00, // 002A CALL R8 6 - 0x8C24110F, // 002B GETMET R9 R8 K15 - 0x5C2C0C00, // 002C MOVE R11 R6 - 0x7C240400, // 002D CALL R9 2 - 0x8C281110, // 002E GETMET R10 R8 K16 - 0x7C280200, // 002F CALL R10 1 - 0x882C0101, // 0030 GETMBR R11 R0 K1 - 0x8C2C170D, // 0031 GETMET R11 R11 K13 - 0x88340105, // 0032 GETMBR R13 R0 K5 - 0x7C2C0400, // 0033 CALL R11 2 - 0x882C0101, // 0034 GETMBR R11 R0 K1 - 0x402C1609, // 0035 CONNECT R11 R11 R9 - 0x882C0101, // 0036 GETMBR R11 R0 K1 - 0x402C160A, // 0037 CONNECT R11 R11 R10 - 0x80000000, // 0038 RET 0 + 0x40200E08, // 001B CONNECT R8 R7 R8 + 0x8C200F0E, // 001C GETMET R8 R7 K14 + 0x542A000C, // 001D LDINT R10 13 + 0x7C200400, // 001E CALL R8 2 + 0x8C20050E, // 001F GETMET R8 R2 K14 + 0x6028000C, // 0020 GETGBL R10 G12 + 0x5C2C0400, // 0021 MOVE R11 R2 + 0x7C280200, // 0022 CALL R10 1 + 0x00281405, // 0023 ADD R10 R10 R5 + 0x7C200400, // 0024 CALL R8 2 + 0x8820030F, // 0025 GETMBR R8 R1 K15 + 0x8C201110, // 0026 GETMET R8 R8 K16 + 0x5C280C00, // 0027 MOVE R10 R6 + 0x5C2C0E00, // 0028 MOVE R11 R7 + 0x58300011, // 0029 LDCONST R12 K17 + 0x6034000C, // 002A GETGBL R13 G12 + 0x5C380E00, // 002B MOVE R14 R7 + 0x7C340200, // 002C CALL R13 1 + 0x5C380400, // 002D MOVE R14 R2 + 0x583C0011, // 002E LDCONST R15 K17 + 0x5C400800, // 002F MOVE R16 R4 + 0x5C440400, // 0030 MOVE R17 R2 + 0x5C480800, // 0031 MOVE R18 R4 + 0x604C000C, // 0032 GETGBL R19 G12 + 0x5C500400, // 0033 MOVE R20 R2 + 0x7C4C0200, // 0034 CALL R19 1 + 0x044C2604, // 0035 SUB R19 R19 R4 + 0x044C2605, // 0036 SUB R19 R19 R5 + 0x5C500400, // 0037 MOVE R20 R2 + 0x6054000C, // 0038 GETGBL R21 G12 + 0x5C580400, // 0039 MOVE R22 R2 + 0x7C540200, // 003A CALL R21 1 + 0x04542A05, // 003B SUB R21 R21 R5 + 0x5C580A00, // 003C MOVE R22 R5 + 0x7C201C00, // 003D CALL R8 14 + 0x80000000, // 003E RET 0 }) ) ); @@ -1011,7 +1026,7 @@ be_local_closure(Matter_Frame_decode_payload, /* name */ ********************************************************************/ be_local_closure(Matter_Frame_decrypt, /* name */ be_nested_proto( - 16, /* nstack */ + 23, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1019,11 +1034,11 @@ be_local_closure(Matter_Frame_decrypt, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ + ( &(const bvalue[30]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(session), /* K2 */ be_nested_str_weak(raw), - /* K3 */ be_const_int(2147483647), + /* K3 */ be_nested_str_weak(payload_idx), /* K4 */ be_nested_str_weak(get_i2r), /* K5 */ be_nested_str_weak(sec_p), /* K6 */ be_nested_str_weak(tasmota), @@ -1031,131 +1046,145 @@ be_local_closure(Matter_Frame_decrypt, /* name */ /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X20Compute_X20Privacy_X20TODO), /* K9 */ be_const_int(2), /* K10 */ be_nested_str_weak(get_i2r_privacy), - /* K11 */ be_nested_str_weak(add), - /* K12 */ be_nested_str_weak(local_session_id), - /* K13 */ be_nested_str_weak(payload_idx), + /* K11 */ be_const_int(2147483647), + /* K12 */ be_nested_str_weak(add), + /* K13 */ be_nested_str_weak(local_session_id), /* K14 */ be_const_int(1), /* K15 */ be_nested_str_weak(AES_CTR), /* K16 */ be_nested_str_weak(decrypt), /* K17 */ be_const_int(0), /* K18 */ be_const_int(3), - /* K19 */ be_nested_str_weak(flags), - /* K20 */ be_nested_str_weak(message_counter), - /* K21 */ be_nested_str_weak(source_node_id), - /* K22 */ be_nested_str_weak(peer_node_id), - /* K23 */ be_nested_str_weak(resize), - /* K24 */ be_nested_str_weak(AES_CCM), - /* K25 */ be_nested_str_weak(tag), - /* K26 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC), + /* K19 */ be_nested_str_weak(message_handler), + /* K20 */ be_nested_str_weak(_n_bytes), + /* K21 */ be_nested_str_weak(clear), + /* K22 */ be_nested_str_weak(flags), + /* K23 */ be_nested_str_weak(message_counter), + /* K24 */ be_nested_str_weak(source_node_id), + /* K25 */ be_nested_str_weak(peer_node_id), + /* K26 */ be_nested_str_weak(resize), + /* K27 */ be_nested_str_weak(AES_CCM), + /* K28 */ be_nested_str_weak(decrypt1), + /* K29 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC), }), be_str_weak(decrypt), &be_const_str_solidified, - ( &(const binstruction[105]) { /* code */ + ( &(const binstruction[116]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x88080101, // 0001 GETMBR R2 R0 K1 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x5411FFEF, // 0003 LDINT R4 -16 - 0x40100903, // 0004 CONNECT R4 R4 K3 - 0x94100604, // 0005 GETIDX R4 R3 R4 - 0x8C140504, // 0006 GETMET R5 R2 K4 - 0x7C140200, // 0007 CALL R5 1 - 0x88180105, // 0008 GETMBR R6 R0 K5 - 0x781A0029, // 0009 JMPF R6 #0034 - 0xB81A0C00, // 000A GETNGBL R6 K6 - 0x8C180D07, // 000B GETMET R6 R6 K7 - 0x58200008, // 000C LDCONST R8 K8 - 0x58240009, // 000D LDCONST R9 K9 - 0x7C180600, // 000E CALL R6 3 - 0x8C18050A, // 000F GETMET R6 R2 K10 - 0x7C180200, // 0010 CALL R6 1 - 0x601C0015, // 0011 GETGBL R7 G21 - 0x7C1C0000, // 0012 CALL R7 0 - 0x8C1C0F0B, // 0013 GETMET R7 R7 K11 - 0x8824010C, // 0014 GETMBR R9 R0 K12 - 0x5429FFFD, // 0015 LDINT R10 -2 - 0x7C1C0600, // 0016 CALL R7 3 - 0x54220004, // 0017 LDINT R8 5 - 0x5426000E, // 0018 LDINT R9 15 - 0x40201009, // 0019 CONNECT R8 R8 R9 - 0x94200808, // 001A GETIDX R8 R4 R8 - 0x001C0E08, // 001B ADD R7 R7 R8 - 0x54220003, // 001C LDINT R8 4 - 0x8824010D, // 001D GETMBR R9 R0 K13 - 0x0424130E, // 001E SUB R9 R9 K14 - 0x40201009, // 001F CONNECT R8 R8 R9 - 0x88240102, // 0020 GETMBR R9 R0 K2 - 0x94201208, // 0021 GETIDX R8 R9 R8 - 0x8C28030F, // 0022 GETMET R10 R1 K15 - 0x5C300C00, // 0023 MOVE R12 R6 - 0x7C280400, // 0024 CALL R10 2 - 0x8C281510, // 0025 GETMET R10 R10 K16 - 0x5C301000, // 0026 MOVE R12 R8 - 0x5C340E00, // 0027 MOVE R13 R7 - 0x58380009, // 0028 LDCONST R14 K9 - 0x7C280800, // 0029 CALL R10 4 - 0x5C241400, // 002A MOVE R9 R10 - 0x402A2312, // 002B CONNECT R10 K17 K18 - 0x882C0102, // 002C GETMBR R11 R0 K2 - 0x9428160A, // 002D GETIDX R10 R11 R10 - 0x00281409, // 002E ADD R10 R10 R9 - 0x882C010D, // 002F GETMBR R11 R0 K13 - 0x402C1703, // 0030 CONNECT R11 R11 K3 - 0x942C100B, // 0031 GETIDX R11 R8 R11 - 0x0028140B, // 0032 ADD R10 R10 R11 - 0x9002040A, // 0033 SETMBR R0 K2 R10 - 0x8818010D, // 0034 GETMBR R6 R0 K13 - 0x04180D0E, // 0035 SUB R6 R6 K14 - 0x401A2206, // 0036 CONNECT R6 K17 R6 - 0x94180606, // 0037 GETIDX R6 R3 R6 - 0x881C010D, // 0038 GETMBR R7 R0 K13 - 0x5421FFEE, // 0039 LDINT R8 -17 - 0x401C0E08, // 003A CONNECT R7 R7 R8 - 0x941C0607, // 003B GETIDX R7 R3 R7 - 0x60200015, // 003C GETGBL R8 G21 - 0x7C200000, // 003D CALL R8 0 - 0x8C24110B, // 003E GETMET R9 R8 K11 - 0x882C0113, // 003F GETMBR R11 R0 K19 - 0x5830000E, // 0040 LDCONST R12 K14 - 0x7C240600, // 0041 CALL R9 3 - 0x8C24110B, // 0042 GETMET R9 R8 K11 - 0x882C0114, // 0043 GETMBR R11 R0 K20 - 0x54320003, // 0044 LDINT R12 4 - 0x7C240600, // 0045 CALL R9 3 - 0x88240115, // 0046 GETMBR R9 R0 K21 - 0x78260001, // 0047 JMPF R9 #004A - 0x40241103, // 0048 CONNECT R9 R8 K3 - 0x70020006, // 0049 JMP #0051 - 0x88240516, // 004A GETMBR R9 R2 K22 - 0x78260001, // 004B JMPF R9 #004E - 0x88240516, // 004C GETMBR R9 R2 K22 - 0x40241009, // 004D CONNECT R9 R8 R9 - 0x8C241117, // 004E GETMET R9 R8 K23 - 0x542E000C, // 004F LDINT R11 13 - 0x7C240400, // 0050 CALL R9 2 - 0x8C240318, // 0051 GETMET R9 R1 K24 - 0x5C2C0A00, // 0052 MOVE R11 R5 - 0x5C301000, // 0053 MOVE R12 R8 - 0x5C340C00, // 0054 MOVE R13 R6 - 0x6038000C, // 0055 GETGBL R14 G12 - 0x5C3C0E00, // 0056 MOVE R15 R7 - 0x7C380200, // 0057 CALL R14 1 - 0x543E000F, // 0058 LDINT R15 16 - 0x7C240C00, // 0059 CALL R9 6 - 0x8C281310, // 005A GETMET R10 R9 K16 - 0x5C300E00, // 005B MOVE R12 R7 - 0x7C280400, // 005C CALL R10 2 - 0x8C2C1319, // 005D GETMET R11 R9 K25 - 0x7C2C0200, // 005E CALL R11 1 - 0x20301604, // 005F NE R12 R11 R4 - 0x78320006, // 0060 JMPF R12 #0068 - 0xB8320C00, // 0061 GETNGBL R12 K6 - 0x8C301907, // 0062 GETMET R12 R12 K7 - 0x5838001A, // 0063 LDCONST R14 K26 - 0x583C0012, // 0064 LDCONST R15 K18 - 0x7C300600, // 0065 CALL R12 3 - 0x4C300000, // 0066 LDNIL R12 - 0x80041800, // 0067 RET 1 R12 - 0x80041400, // 0068 RET 1 R10 + 0x88100103, // 0003 GETMBR R4 R0 K3 + 0x5416000F, // 0004 LDINT R5 16 + 0x8C180504, // 0005 GETMET R6 R2 K4 + 0x7C180200, // 0006 CALL R6 1 + 0x881C0105, // 0007 GETMBR R7 R0 K5 + 0x781E002C, // 0008 JMPF R7 #0036 + 0xB81E0C00, // 0009 GETNGBL R7 K6 + 0x8C1C0F07, // 000A GETMET R7 R7 K7 + 0x58240008, // 000B LDCONST R9 K8 + 0x58280009, // 000C LDCONST R10 K9 + 0x7C1C0600, // 000D CALL R7 3 + 0x8C1C050A, // 000E GETMET R7 R2 K10 + 0x7C1C0200, // 000F CALL R7 1 + 0x5421FFEF, // 0010 LDINT R8 -16 + 0x4020110B, // 0011 CONNECT R8 R8 K11 + 0x94200608, // 0012 GETIDX R8 R3 R8 + 0x60240015, // 0013 GETGBL R9 G21 + 0x7C240000, // 0014 CALL R9 0 + 0x8C24130C, // 0015 GETMET R9 R9 K12 + 0x882C010D, // 0016 GETMBR R11 R0 K13 + 0x5431FFFD, // 0017 LDINT R12 -2 + 0x7C240600, // 0018 CALL R9 3 + 0x542A0004, // 0019 LDINT R10 5 + 0x542E000E, // 001A LDINT R11 15 + 0x4028140B, // 001B CONNECT R10 R10 R11 + 0x9428100A, // 001C GETIDX R10 R8 R10 + 0x0024120A, // 001D ADD R9 R9 R10 + 0x542A0003, // 001E LDINT R10 4 + 0x882C0103, // 001F GETMBR R11 R0 K3 + 0x042C170E, // 0020 SUB R11 R11 K14 + 0x4028140B, // 0021 CONNECT R10 R10 R11 + 0x882C0102, // 0022 GETMBR R11 R0 K2 + 0x9428160A, // 0023 GETIDX R10 R11 R10 + 0x8C30030F, // 0024 GETMET R12 R1 K15 + 0x5C380E00, // 0025 MOVE R14 R7 + 0x7C300400, // 0026 CALL R12 2 + 0x8C301910, // 0027 GETMET R12 R12 K16 + 0x5C381400, // 0028 MOVE R14 R10 + 0x5C3C1200, // 0029 MOVE R15 R9 + 0x58400009, // 002A LDCONST R16 K9 + 0x7C300800, // 002B CALL R12 4 + 0x5C2C1800, // 002C MOVE R11 R12 + 0x40322312, // 002D CONNECT R12 K17 K18 + 0x88340102, // 002E GETMBR R13 R0 K2 + 0x94301A0C, // 002F GETIDX R12 R13 R12 + 0x0030180B, // 0030 ADD R12 R12 R11 + 0x88340103, // 0031 GETMBR R13 R0 K3 + 0x40341B0B, // 0032 CONNECT R13 R13 K11 + 0x9434140D, // 0033 GETIDX R13 R10 R13 + 0x0030180D, // 0034 ADD R12 R12 R13 + 0x9002040C, // 0035 SETMBR R0 K2 R12 + 0x881C0113, // 0036 GETMBR R7 R0 K19 + 0x881C0F14, // 0037 GETMBR R7 R7 K20 + 0x8C200F15, // 0038 GETMET R8 R7 K21 + 0x7C200200, // 0039 CALL R8 1 + 0x8C200F0C, // 003A GETMET R8 R7 K12 + 0x88280116, // 003B GETMBR R10 R0 K22 + 0x582C000E, // 003C LDCONST R11 K14 + 0x7C200600, // 003D CALL R8 3 + 0x8C200F0C, // 003E GETMET R8 R7 K12 + 0x88280117, // 003F GETMBR R10 R0 K23 + 0x542E0003, // 0040 LDINT R11 4 + 0x7C200600, // 0041 CALL R8 3 + 0x88200118, // 0042 GETMBR R8 R0 K24 + 0x78220001, // 0043 JMPF R8 #0046 + 0x40200F0B, // 0044 CONNECT R8 R7 K11 + 0x70020006, // 0045 JMP #004D + 0x88200519, // 0046 GETMBR R8 R2 K25 + 0x78220001, // 0047 JMPF R8 #004A + 0x88200519, // 0048 GETMBR R8 R2 K25 + 0x40200E08, // 0049 CONNECT R8 R7 R8 + 0x8C200F1A, // 004A GETMET R8 R7 K26 + 0x542A000C, // 004B LDINT R10 13 + 0x7C200400, // 004C CALL R8 2 + 0x8820031B, // 004D GETMBR R8 R1 K27 + 0x8C20111C, // 004E GETMET R8 R8 K28 + 0x5C280C00, // 004F MOVE R10 R6 + 0x5C2C0E00, // 0050 MOVE R11 R7 + 0x58300011, // 0051 LDCONST R12 K17 + 0x6034000C, // 0052 GETGBL R13 G12 + 0x5C380E00, // 0053 MOVE R14 R7 + 0x7C340200, // 0054 CALL R13 1 + 0x5C380600, // 0055 MOVE R14 R3 + 0x583C0011, // 0056 LDCONST R15 K17 + 0x5C400800, // 0057 MOVE R16 R4 + 0x5C440600, // 0058 MOVE R17 R3 + 0x5C480800, // 0059 MOVE R18 R4 + 0x604C000C, // 005A GETGBL R19 G12 + 0x5C500600, // 005B MOVE R20 R3 + 0x7C4C0200, // 005C CALL R19 1 + 0x044C2604, // 005D SUB R19 R19 R4 + 0x044C2605, // 005E SUB R19 R19 R5 + 0x5C500600, // 005F MOVE R20 R3 + 0x6054000C, // 0060 GETGBL R21 G12 + 0x5C580600, // 0061 MOVE R22 R3 + 0x7C540200, // 0062 CALL R21 1 + 0x04542A05, // 0063 SUB R21 R21 R5 + 0x5C580A00, // 0064 MOVE R22 R5 + 0x7C201C00, // 0065 CALL R8 14 + 0x78220006, // 0066 JMPF R8 #006E + 0x8C24071A, // 0067 GETMET R9 R3 K26 + 0x602C000C, // 0068 GETGBL R11 G12 + 0x5C300600, // 0069 MOVE R12 R3 + 0x7C2C0200, // 006A CALL R11 1 + 0x042C1605, // 006B SUB R11 R11 R5 + 0x7C240400, // 006C CALL R9 2 + 0x70020004, // 006D JMP #0073 + 0xB8260C00, // 006E GETNGBL R9 K6 + 0x8C241307, // 006F GETMET R9 R9 K7 + 0x582C001D, // 0070 LDCONST R11 K29 + 0x58300012, // 0071 LDCONST R12 K18 + 0x7C240600, // 0072 CALL R9 3 + 0x80041000, // 0073 RET 1 R8 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h index b339729d5a16..3dd9400121bb 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h @@ -7,9 +7,9 @@ extern const bclass be_class_Matter_MessageHandler; /******************************************************************** -** Solidified function: send_response_frame +** Solidified function: init ********************************************************************/ -be_local_closure(Matter_MessageHandler_send_response_frame, /* name */ +be_local_closure(Matter_MessageHandler_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -19,26 +19,41 @@ be_local_closure(Matter_MessageHandler_send_response_frame, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ + ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(profiler), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(send_response_frame), - /* K4 */ be_nested_str_weak(msg_send), + /* K1 */ be_nested_str_weak(commissioning), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(Commisioning_Context), + /* K4 */ be_nested_str_weak(im), + /* K5 */ be_nested_str_weak(IM), + /* K6 */ be_nested_str_weak(control_message), + /* K7 */ be_nested_str_weak(Control_Message), + /* K8 */ be_nested_str_weak(_n_bytes), }), - be_str_weak(send_response_frame), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x58100003, // 0003 LDCONST R4 K3 + ( &(const binstruction[21]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0xB80A0400, // 0001 GETNGBL R2 K2 + 0x8C080503, // 0002 GETMET R2 R2 K3 + 0x5C100000, // 0003 MOVE R4 R0 0x7C080400, // 0004 CALL R2 2 - 0x88080100, // 0005 GETMBR R2 R0 K0 - 0x8C080504, // 0006 GETMET R2 R2 K4 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C080400, // 0008 CALL R2 2 - 0x80000000, // 0009 RET 0 + 0x90020202, // 0005 SETMBR R0 K1 R2 + 0xB80A0400, // 0006 GETNGBL R2 K2 + 0x8C080505, // 0007 GETMET R2 R2 K5 + 0x5C100200, // 0008 MOVE R4 R1 + 0x7C080400, // 0009 CALL R2 2 + 0x90020802, // 000A SETMBR R0 K4 R2 + 0xB80A0400, // 000B GETNGBL R2 K2 + 0x8C080507, // 000C GETMET R2 R2 K7 + 0x5C100000, // 000D MOVE R4 R0 + 0x7C080400, // 000E CALL R2 2 + 0x90020C02, // 000F SETMBR R0 K6 R2 + 0x60080015, // 0010 GETGBL R2 G21 + 0x540E000F, // 0011 LDINT R3 16 + 0x7C080200, // 0012 CALL R2 1 + 0x90021002, // 0013 SETMBR R0 K8 R2 + 0x80000000, // 0014 RET 0 }) ) ); @@ -58,27 +73,28 @@ be_local_closure(Matter_MessageHandler_send_encrypted_ack, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ + ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(x_flag_r), /* K1 */ be_nested_str_weak(build_standalone_ack), /* K2 */ be_nested_str_weak(encode_frame), /* K3 */ be_nested_str_weak(encrypt), /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X2A_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s), - /* K7 */ be_nested_str_weak(session), - /* K8 */ be_nested_str_weak(local_session_id), - /* K9 */ be_nested_str_weak(ack_message_counter), - /* K10 */ be_nested_str_weak(message_counter), - /* K11 */ be_nested_str_weak(_X7Breliable_X7D), - /* K12 */ be_nested_str_weak(), - /* K13 */ be_nested_str_weak(send_response_frame), + /* K5 */ be_nested_str_weak(loglevel), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X2A_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s), + /* K8 */ be_nested_str_weak(session), + /* K9 */ be_nested_str_weak(local_session_id), + /* K10 */ be_nested_str_weak(ack_message_counter), + /* K11 */ be_nested_str_weak(message_counter), + /* K12 */ be_nested_str_weak(_X7Breliable_X7D), + /* K13 */ be_nested_str_weak(), + /* K14 */ be_nested_str_weak(send_response_frame), }), be_str_weak(send_encrypted_ack), &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ + ( &(const binstruction[33]) { /* code */ 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x780E0018, // 0001 JMPF R3 #001B + 0x780E001D, // 0001 JMPF R3 #0020 0x8C0C0301, // 0002 GETMET R3 R1 K1 0x5C140400, // 0003 MOVE R5 R2 0x7C0C0400, // 0004 CALL R3 2 @@ -88,120 +104,28 @@ be_local_closure(Matter_MessageHandler_send_encrypted_ack, /* name */ 0x7C100200, // 0008 CALL R4 1 0xB8120800, // 0009 GETNGBL R4 K4 0x8C100905, // 000A GETMET R4 R4 K5 - 0x60180018, // 000B GETGBL R6 G24 - 0x581C0006, // 000C LDCONST R7 K6 - 0x88200707, // 000D GETMBR R8 R3 K7 - 0x88201108, // 000E GETMBR R8 R8 K8 - 0x88240709, // 000F GETMBR R9 R3 K9 - 0x8828070A, // 0010 GETMBR R10 R3 K10 - 0x780A0001, // 0011 JMPF R2 #0014 - 0x582C000B, // 0012 LDCONST R11 K11 - 0x70020000, // 0013 JMP #0015 - 0x582C000C, // 0014 LDCONST R11 K12 - 0x7C180A00, // 0015 CALL R6 5 - 0x541E0003, // 0016 LDINT R7 4 - 0x7C100600, // 0017 CALL R4 3 - 0x8C10010D, // 0018 GETMET R4 R0 K13 - 0x5C180600, // 0019 MOVE R6 R3 - 0x7C100400, // 001A CALL R4 2 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -be_local_closure(Matter_MessageHandler_every_second, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning), - /* K1 */ be_nested_str_weak(every_second), - /* K2 */ be_nested_str_weak(im), - }), - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040301, // 0004 GETMET R1 R1 K1 - 0x7C040200, // 0005 CALL R1 1 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_simple_ack -********************************************************************/ -be_local_closure(Matter_MessageHandler_send_simple_ack, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(x_flag_r), - /* K1 */ be_nested_str_weak(build_standalone_ack), - /* K2 */ be_nested_str_weak(encode_frame), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(log), - /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s), - /* K6 */ be_nested_str_weak(session), - /* K7 */ be_nested_str_weak(local_session_id), - /* K8 */ be_nested_str_weak(ack_message_counter), - /* K9 */ be_nested_str_weak(message_counter), - /* K10 */ be_nested_str_weak(_X7Breliable_X7D), - /* K11 */ be_nested_str_weak(), - /* K12 */ be_nested_str_weak(send_response_frame), - }), - be_str_weak(send_simple_ack), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x780E0016, // 0001 JMPF R3 #0019 - 0x8C0C0301, // 0002 GETMET R3 R1 K1 - 0x5C140400, // 0003 MOVE R5 R2 - 0x7C0C0400, // 0004 CALL R3 2 - 0x8C100702, // 0005 GETMET R4 R3 K2 - 0x7C100200, // 0006 CALL R4 1 - 0xB8120600, // 0007 GETNGBL R4 K3 - 0x8C100904, // 0008 GETMET R4 R4 K4 - 0x60180018, // 0009 GETGBL R6 G24 - 0x581C0005, // 000A LDCONST R7 K5 - 0x88200706, // 000B GETMBR R8 R3 K6 - 0x88201107, // 000C GETMBR R8 R8 K7 - 0x88240708, // 000D GETMBR R9 R3 K8 - 0x88280709, // 000E GETMBR R10 R3 K9 - 0x780A0001, // 000F JMPF R2 #0012 - 0x582C000A, // 0010 LDCONST R11 K10 - 0x70020000, // 0011 JMP #0013 - 0x582C000B, // 0012 LDCONST R11 K11 - 0x7C180A00, // 0013 CALL R6 5 - 0x541E0003, // 0014 LDINT R7 4 - 0x7C100600, // 0015 CALL R4 3 - 0x8C10010C, // 0016 GETMET R4 R0 K12 - 0x5C180600, // 0017 MOVE R6 R3 - 0x7C100400, // 0018 CALL R4 2 - 0x80000000, // 0019 RET 0 + 0x541A0003, // 000B LDINT R6 4 + 0x7C100400, // 000C CALL R4 2 + 0x7812000E, // 000D JMPF R4 #001D + 0xB8120800, // 000E GETNGBL R4 K4 + 0x8C100906, // 000F GETMET R4 R4 K6 + 0x60180018, // 0010 GETGBL R6 G24 + 0x581C0007, // 0011 LDCONST R7 K7 + 0x88200708, // 0012 GETMBR R8 R3 K8 + 0x88201109, // 0013 GETMBR R8 R8 K9 + 0x8824070A, // 0014 GETMBR R9 R3 K10 + 0x8828070B, // 0015 GETMBR R10 R3 K11 + 0x780A0001, // 0016 JMPF R2 #0019 + 0x582C000C, // 0017 LDCONST R11 K12 + 0x70020000, // 0018 JMP #001A + 0x582C000D, // 0019 LDCONST R11 K13 + 0x7C180A00, // 001A CALL R6 5 + 0x541E0003, // 001B LDINT R7 4 + 0x7C100600, // 001C CALL R4 3 + 0x8C10010E, // 001D GETMET R4 R0 K14 + 0x5C180600, // 001E MOVE R6 R3 + 0x7C100400, // 001F CALL R4 2 + 0x80000000, // 0020 RET 0 }) ) ); @@ -221,15 +145,15 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[69]) { /* constants */ - /* K0 */ be_nested_str_weak(device), + ( &(const bvalue[70]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(profiler), /* K2 */ be_nested_str_weak(log), /* K3 */ be_nested_str_weak(msg_received), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(Frame), - /* K6 */ be_nested_str_weak(decode_header), - /* K7 */ be_nested_str_weak(sec_p), + /* K4 */ be_nested_str_weak(Frame), + /* K5 */ be_nested_str_weak(decode_header), + /* K6 */ be_nested_str_weak(sec_p), + /* K7 */ be_nested_str_weak(device), /* K8 */ be_nested_str_weak(sessions), /* K9 */ be_nested_str_weak(find_session_source_id_unsecure), /* K10 */ be_nested_str_weak(source_node_id), @@ -246,79 +170,80 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */ /* K21 */ be_nested_str_weak(validate), /* K22 */ be_nested_str_weak(message_counter), /* K23 */ be_nested_str_weak(tasmota), - /* 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(process_IM_end), - /* K62 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A), - /* K63 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20), - /* K64 */ be_nested_str_weak(_X3B), - /* K65 */ be_const_int(2), - /* K66 */ be_nested_str_weak(_debug_present), - /* K67 */ be_nested_str_weak(debug), - /* K68 */ be_nested_str_weak(traceback), + /* K24 */ be_nested_str_weak(loglevel), + /* K25 */ 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), + /* K26 */ be_nested_str_weak(val), + /* K27 */ be_nested_str_weak(send_simple_ack), + /* K28 */ be_nested_str_weak(decode_payload), + /* K29 */ be_nested_str_weak(received_ack), + /* K30 */ be_nested_str_weak(opcode), + /* K31 */ be_nested_str_weak(get_opcode_name), + /* K32 */ be_nested_str_weak(0x_X2502X), + /* K33 */ be_const_int(3), + /* K34 */ 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), + /* K35 */ be_nested_str_weak(exchange_id), + /* K36 */ 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), + /* K37 */ be_nested_str_weak(x_flag_r), + /* K38 */ be_nested_str_weak(_X7Breliable_X7D_X20), + /* K39 */ be_nested_str_weak(), + /* K40 */ be_nested_str_weak(ack_message_counter), + /* K41 */ be_nested_str_weak(commissioning), + /* K42 */ be_nested_str_weak(process_incoming), + /* K43 */ be_nested_str_weak(MTR_X3A_X20decode_X20header_X3A_X20local_session_id_X3D_X25i_X20message_counter_X3D_X25i), + /* K44 */ be_nested_str_weak(get_session_by_local_session_id), + /* K45 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D), + /* K46 */ be_nested_str_weak(counter_rcv_validate), + /* K47 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20encrypted_X20message_X20_X3D_X20), + /* K48 */ be_nested_str_weak(_X20counter_X3D), + /* K49 */ be_nested_str_weak(counter_rcv), + /* K50 */ be_nested_str_weak(send_encrypted_ack), + /* K51 */ be_nested_str_weak(decrypt), + /* K52 */ be_nested_str_weak(msg_received_header_frame_decrypted), + /* K53 */ be_nested_str_weak(MTR_X3A_X20_X3E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Decrypted_X20message_X3A_X20protocol_id_X3A), + /* K54 */ be_nested_str_weak(protocol_id), + /* K55 */ be_nested_str_weak(_X20opcode_X3D), + /* K56 */ be_nested_str_weak(_X20exchange_id_X3D), + /* K57 */ be_nested_str_weak(im), + /* K58 */ be_nested_str_weak(process_incoming_ack), + /* K59 */ be_nested_str_weak(send_enqueued), + /* K60 */ be_const_int(1), + /* K61 */ be_nested_str_weak(process_IM_start), + /* K62 */ be_nested_str_weak(process_IM_end), + /* K63 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A), + /* K64 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20), + /* K65 */ be_nested_str_weak(_X3B), + /* K66 */ be_const_int(2), + /* K67 */ be_nested_str_weak(_debug_present), + /* K68 */ be_nested_str_weak(debug), + /* K69 */ be_nested_str_weak(traceback), }), be_str_weak(msg_received), &be_const_str_solidified, - ( &(const binstruction[333]) { /* code */ + ( &(const binstruction[365]) { /* code */ 0x50100000, // 0000 LDBOOL R4 0 0 - 0x88140100, // 0001 GETMBR R5 R0 K0 + 0xB8160000, // 0001 GETNGBL R5 K0 0x88140B01, // 0002 GETMBR R5 R5 K1 0x8C140B02, // 0003 GETMET R5 R5 K2 0x581C0003, // 0004 LDCONST R7 K3 0x7C140400, // 0005 CALL R5 2 - 0xA802012B, // 0006 EXBLK 0 #0133 - 0xB8160800, // 0007 GETNGBL R5 K4 - 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0xA802014B, // 0006 EXBLK 0 #0153 + 0xB8160000, // 0007 GETNGBL R5 K0 + 0x8C140B04, // 0008 GETMET R5 R5 K4 0x5C1C0000, // 0009 MOVE R7 R0 0x5C200200, // 000A MOVE R8 R1 0x5C240400, // 000B MOVE R9 R2 0x5C280600, // 000C MOVE R10 R3 0x7C140A00, // 000D CALL R5 5 - 0x8C180B06, // 000E GETMET R6 R5 K6 + 0x8C180B05, // 000E GETMET R6 R5 K5 0x7C180200, // 000F CALL R6 1 0x5C1C0C00, // 0010 MOVE R7 R6 0x741E0002, // 0011 JMPT R7 #0015 0x501C0000, // 0012 LDBOOL R7 0 0 0xA8040001, // 0013 EXBLK 1 1 0x80040E00, // 0014 RET 1 R7 - 0x881C0B07, // 0015 GETMBR R7 R5 K7 + 0x881C0B06, // 0015 GETMBR R7 R5 K6 0x781E000C, // 0016 JMPF R7 #0024 - 0x881C0100, // 0017 GETMBR R7 R0 K0 + 0x881C0107, // 0017 GETMBR R7 R0 K7 0x881C0F08, // 0018 GETMBR R7 R7 K8 0x8C1C0F09, // 0019 GETMET R7 R7 K9 0x88240B0A, // 001A GETMBR R9 R5 K10 @@ -330,14 +255,14 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */ 0x7C200400, // 0020 CALL R8 2 0xA8040001, // 0021 EXBLK 1 1 0x80041000, // 0022 RET 1 R8 - 0x7002010A, // 0023 JMP #012F + 0x7002012A, // 0023 JMP #014F 0x881C0B0D, // 0024 GETMBR R7 R5 K13 0x1C1C0F0E, // 0025 EQ R7 R7 K14 - 0x781E0070, // 0026 JMPF R7 #0098 + 0x781E007F, // 0026 JMPF R7 #00A7 0x881C0B0F, // 0027 GETMBR R7 R5 K15 0x1C1C0F0E, // 0028 EQ R7 R7 K14 - 0x781E006D, // 0029 JMPF R7 #0098 - 0x881C0100, // 002A GETMBR R7 R0 K0 + 0x781E007C, // 0029 JMPF R7 #00A7 + 0x881C0107, // 002A GETMBR R7 R0 K7 0x881C0F08, // 002B GETMBR R7 R7 K8 0x8C1C0F09, // 002C GETMET R7 R7 K9 0x88240B0A, // 002D GETMBR R9 R5 K10 @@ -354,280 +279,421 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */ 0x88280B16, // 0038 GETMBR R10 R5 K22 0x502C0000, // 0039 LDBOOL R11 0 0 0x7C200600, // 003A CALL R8 3 - 0x74220011, // 003B JMPT R8 #004E + 0x74220016, // 003B JMPT R8 #0053 0xB8222E00, // 003C GETNGBL R8 K23 - 0x8C201102, // 003D GETMET R8 R8 K2 - 0x60280018, // 003E GETGBL R10 G24 - 0x582C0018, // 003F LDCONST R11 K24 - 0x88300B16, // 0040 GETMBR R12 R5 K22 - 0x88340F14, // 0041 GETMBR R13 R7 K20 - 0x8C341B19, // 0042 GETMET R13 R13 K25 - 0x7C340200, // 0043 CALL R13 1 - 0x7C280600, // 0044 CALL R10 3 - 0x542E0003, // 0045 LDINT R11 4 - 0x7C200600, // 0046 CALL R8 3 - 0x8C20011A, // 0047 GETMET R8 R0 K26 - 0x5C280A00, // 0048 MOVE R10 R5 - 0x502C0000, // 0049 LDBOOL R11 0 0 - 0x7C200600, // 004A CALL R8 3 - 0x50200000, // 004B LDBOOL R8 0 0 - 0xA8040001, // 004C EXBLK 1 1 - 0x80041000, // 004D RET 1 R8 - 0x8C200B1B, // 004E GETMET R8 R5 K27 - 0x7C200200, // 004F CALL R8 1 - 0x74220002, // 0050 JMPT R8 #0054 - 0x50200000, // 0051 LDBOOL R8 0 0 - 0xA8040001, // 0052 EXBLK 1 1 - 0x80041000, // 0053 RET 1 R8 - 0x88200100, // 0054 GETMBR R8 R0 K0 - 0x8C20111C, // 0055 GETMET R8 R8 K28 - 0x5C280A00, // 0056 MOVE R10 R5 - 0x7C200400, // 0057 CALL R8 2 - 0x88200B1D, // 0058 GETMBR R8 R5 K29 - 0x5426000F, // 0059 LDINT R9 16 - 0x20201009, // 005A NE R8 R8 R9 - 0x78220018, // 005B JMPF R8 #0075 - 0xB8220800, // 005C GETNGBL R8 K4 - 0x8C20111E, // 005D GETMET R8 R8 K30 - 0x88280B1D, // 005E GETMBR R10 R5 K29 - 0x7C200400, // 005F CALL R8 2 - 0x5C241000, // 0060 MOVE R9 R8 - 0x74260004, // 0061 JMPT R9 #0067 - 0x60240018, // 0062 GETGBL R9 G24 - 0x5828001F, // 0063 LDCONST R10 K31 - 0x882C0B1D, // 0064 GETMBR R11 R5 K29 - 0x7C240400, // 0065 CALL R9 2 - 0x5C201200, // 0066 MOVE R8 R9 - 0xB8262E00, // 0067 GETNGBL R9 K23 - 0x8C241302, // 0068 GETMET R9 R9 K2 - 0x602C0018, // 0069 GETGBL R11 G24 - 0x58300020, // 006A LDCONST R12 K32 - 0x88340F0D, // 006B GETMBR R13 R7 K13 - 0x5C381000, // 006C MOVE R14 R8 - 0x883C0B16, // 006D GETMBR R15 R5 K22 - 0x88400B21, // 006E GETMBR R16 R5 K33 - 0x5C440400, // 006F MOVE R17 R2 - 0x5C480600, // 0070 MOVE R18 R3 - 0x7C2C0E00, // 0071 CALL R11 7 - 0x58300022, // 0072 LDCONST R12 K34 - 0x7C240600, // 0073 CALL R9 3 - 0x70020013, // 0074 JMP #0089 - 0xB8222E00, // 0075 GETNGBL R8 K23 - 0x8C201102, // 0076 GETMET R8 R8 K2 - 0x60280018, // 0077 GETGBL R10 G24 - 0x582C0023, // 0078 LDCONST R11 K35 - 0x88300F0D, // 0079 GETMBR R12 R7 K13 - 0x88340B16, // 007A GETMBR R13 R5 K22 - 0x88380B24, // 007B GETMBR R14 R5 K36 - 0x783A0001, // 007C JMPF R14 #007F - 0x58380025, // 007D LDCONST R14 K37 - 0x70020000, // 007E JMP #0080 - 0x58380026, // 007F LDCONST R14 K38 - 0x883C0B21, // 0080 GETMBR R15 R5 K33 - 0x60400008, // 0081 GETGBL R16 G8 - 0x88440B27, // 0082 GETMBR R17 R5 K39 - 0x7C400200, // 0083 CALL R16 1 - 0x5C440400, // 0084 MOVE R17 R2 - 0x5C480600, // 0085 MOVE R18 R3 - 0x7C281000, // 0086 CALL R10 8 - 0x542E0003, // 0087 LDINT R11 4 - 0x7C200600, // 0088 CALL R8 3 - 0x88200128, // 0089 GETMBR R8 R0 K40 - 0x8C201129, // 008A GETMET R8 R8 K41 - 0x5C280A00, // 008B MOVE R10 R5 - 0x7C200400, // 008C CALL R8 2 - 0x5C101000, // 008D MOVE R4 R8 - 0x5C200800, // 008E MOVE R8 R4 - 0x74220003, // 008F JMPT R8 #0094 - 0x8C20011A, // 0090 GETMET R8 R0 K26 - 0x5C280A00, // 0091 MOVE R10 R5 - 0x502C0000, // 0092 LDBOOL R11 0 0 - 0x7C200600, // 0093 CALL R8 3 - 0x50200200, // 0094 LDBOOL R8 1 0 - 0xA8040001, // 0095 EXBLK 1 1 - 0x80041000, // 0096 RET 1 R8 - 0x70020096, // 0097 JMP #012F - 0xB81E2E00, // 0098 GETNGBL R7 K23 - 0x8C1C0F02, // 0099 GETMET R7 R7 K2 - 0x60240018, // 009A GETGBL R9 G24 - 0x5828002A, // 009B LDCONST R10 K42 - 0x882C0B0D, // 009C GETMBR R11 R5 K13 - 0x88300B16, // 009D GETMBR R12 R5 K22 - 0x7C240600, // 009E CALL R9 3 - 0x542A0003, // 009F LDINT R10 4 - 0x7C1C0600, // 00A0 CALL R7 3 - 0x881C0100, // 00A1 GETMBR R7 R0 K0 - 0x881C0F08, // 00A2 GETMBR R7 R7 K8 - 0x8C1C0F2B, // 00A3 GETMET R7 R7 K43 - 0x88240B0D, // 00A4 GETMBR R9 R5 K13 - 0x7C1C0400, // 00A5 CALL R7 2 - 0x4C200000, // 00A6 LDNIL R8 - 0x1C200E08, // 00A7 EQ R8 R7 R8 - 0x7822000A, // 00A8 JMPF R8 #00B4 - 0xB8222E00, // 00A9 GETNGBL R8 K23 - 0x8C201102, // 00AA GETMET R8 R8 K2 - 0x60280008, // 00AB GETGBL R10 G8 - 0x882C0B0D, // 00AC GETMBR R11 R5 K13 - 0x7C280200, // 00AD CALL R10 1 - 0x002A580A, // 00AE ADD R10 K44 R10 - 0x582C0022, // 00AF LDCONST R11 K34 - 0x7C200600, // 00B0 CALL R8 3 - 0x50200000, // 00B1 LDBOOL R8 0 0 - 0xA8040001, // 00B2 EXBLK 1 1 - 0x80041000, // 00B3 RET 1 R8 - 0x780A0000, // 00B4 JMPF R2 #00B6 - 0x901E2002, // 00B5 SETMBR R7 K16 R2 - 0x780E0000, // 00B6 JMPF R3 #00B8 - 0x901E2203, // 00B7 SETMBR R7 K17 R3 - 0x901E2400, // 00B8 SETMBR R7 K18 R0 - 0x90162607, // 00B9 SETMBR R5 K19 R7 - 0x8C200F2D, // 00BA GETMET R8 R7 K45 - 0x88280B16, // 00BB GETMBR R10 R5 K22 - 0x502C0200, // 00BC LDBOOL R11 1 0 - 0x7C200600, // 00BD CALL R8 3 - 0x74220013, // 00BE JMPT R8 #00D3 - 0xB8222E00, // 00BF GETNGBL R8 K23 - 0x8C201102, // 00C0 GETMET R8 R8 K2 - 0x60280008, // 00C1 GETGBL R10 G8 - 0x882C0B16, // 00C2 GETMBR R11 R5 K22 - 0x7C280200, // 00C3 CALL R10 1 - 0x002A5C0A, // 00C4 ADD R10 K46 R10 - 0x0028152F, // 00C5 ADD R10 R10 K47 - 0x602C0008, // 00C6 GETGBL R11 G8 - 0x88300F30, // 00C7 GETMBR R12 R7 K48 - 0x7C2C0200, // 00C8 CALL R11 1 - 0x0028140B, // 00C9 ADD R10 R10 R11 - 0x582C0022, // 00CA LDCONST R11 K34 - 0x7C200600, // 00CB CALL R8 3 - 0x8C200131, // 00CC GETMET R8 R0 K49 - 0x5C280A00, // 00CD MOVE R10 R5 - 0x502C0000, // 00CE LDBOOL R11 0 0 - 0x7C200600, // 00CF CALL R8 3 - 0x50200000, // 00D0 LDBOOL R8 0 0 - 0xA8040001, // 00D1 EXBLK 1 1 - 0x80041000, // 00D2 RET 1 R8 - 0x8C200B32, // 00D3 GETMET R8 R5 K50 - 0x7C200200, // 00D4 CALL R8 1 - 0x5C241000, // 00D5 MOVE R9 R8 - 0x74260002, // 00D6 JMPT R9 #00DA - 0x50240000, // 00D7 LDBOOL R9 0 0 - 0xA8040001, // 00D8 EXBLK 1 1 - 0x80041200, // 00D9 RET 1 R9 - 0x88240B34, // 00DA GETMBR R9 R5 K52 - 0x04241335, // 00DB SUB R9 R9 K53 - 0x40261C09, // 00DC CONNECT R9 K14 R9 - 0x88280B33, // 00DD GETMBR R10 R5 K51 - 0x94241409, // 00DE GETIDX R9 R10 R9 - 0x90166609, // 00DF SETMBR R5 K51 R9 - 0x88240B33, // 00E0 GETMBR R9 R5 K51 - 0x40241208, // 00E1 CONNECT R9 R9 R8 - 0x8C240B1B, // 00E2 GETMET R9 R5 K27 - 0x7C240200, // 00E3 CALL R9 1 - 0xB8262E00, // 00E4 GETNGBL R9 K23 - 0x8C241302, // 00E5 GETMET R9 R9 K2 - 0x602C0008, // 00E6 GETGBL R11 G8 - 0x88300B37, // 00E7 GETMBR R12 R5 K55 - 0x7C2C0200, // 00E8 CALL R11 1 - 0x002E6C0B, // 00E9 ADD R11 K54 R11 - 0x002C1738, // 00EA ADD R11 R11 K56 - 0x60300008, // 00EB GETGBL R12 G8 - 0x88340B1D, // 00EC GETMBR R13 R5 K29 - 0x7C300200, // 00ED CALL R12 1 - 0x002C160C, // 00EE ADD R11 R11 R12 - 0x002C1739, // 00EF ADD R11 R11 K57 - 0x60300008, // 00F0 GETGBL R12 G8 - 0x88340B21, // 00F1 GETMBR R13 R5 K33 - 0x543AFFFE, // 00F2 LDINT R14 65535 - 0x2C341A0E, // 00F3 AND R13 R13 R14 - 0x7C300200, // 00F4 CALL R12 1 - 0x002C160C, // 00F5 ADD R11 R11 R12 - 0x54320003, // 00F6 LDINT R12 4 - 0x7C240600, // 00F7 CALL R9 3 - 0x88240100, // 00F8 GETMBR R9 R0 K0 - 0x8C24131C, // 00F9 GETMET R9 R9 K28 - 0x5C2C0A00, // 00FA MOVE R11 R5 - 0x7C240400, // 00FB CALL R9 2 - 0x88240B37, // 00FC GETMBR R9 R5 K55 - 0x1C28130E, // 00FD EQ R10 R9 K14 - 0x782A000F, // 00FE JMPF R10 #010F - 0x88280B1D, // 00FF GETMBR R10 R5 K29 - 0x542E000F, // 0100 LDINT R11 16 - 0x1C28140B, // 0101 EQ R10 R10 R11 - 0x782A0009, // 0102 JMPF R10 #010D - 0x8828013A, // 0103 GETMBR R10 R0 K58 - 0x8C28153B, // 0104 GETMET R10 R10 K59 - 0x5C300A00, // 0105 MOVE R12 R5 - 0x7C280400, // 0106 CALL R10 2 - 0x5C101400, // 0107 MOVE R4 R10 - 0x78120003, // 0108 JMPF R4 #010D - 0x8828013A, // 0109 GETMBR R10 R0 K58 - 0x8C28153C, // 010A GETMET R10 R10 K60 - 0x5C300000, // 010B MOVE R12 R0 - 0x7C280400, // 010C CALL R10 2 - 0x50100200, // 010D LDBOOL R4 1 0 - 0x7002001F, // 010E JMP #012F - 0x1C281335, // 010F EQ R10 R9 K53 - 0x782A0015, // 0110 JMPF R10 #0127 - 0x8828013A, // 0111 GETMBR R10 R0 K58 - 0x8C281529, // 0112 GETMET R10 R10 K41 - 0x5C300A00, // 0113 MOVE R12 R5 - 0x7C280400, // 0114 CALL R10 2 - 0x5C101400, // 0115 MOVE R4 R10 - 0x88280100, // 0116 GETMBR R10 R0 K0 - 0x88281501, // 0117 GETMBR R10 R10 K1 - 0x8C281502, // 0118 GETMET R10 R10 K2 - 0x5830003D, // 0119 LDCONST R12 K61 - 0x7C280400, // 011A CALL R10 2 - 0x78120004, // 011B JMPF R4 #0121 - 0x8828013A, // 011C GETMBR R10 R0 K58 - 0x8C28153C, // 011D GETMET R10 R10 K60 - 0x5C300000, // 011E MOVE R12 R0 - 0x7C280400, // 011F CALL R10 2 - 0x70020003, // 0120 JMP #0125 - 0x8C280131, // 0121 GETMET R10 R0 K49 - 0x5C300A00, // 0122 MOVE R12 R5 - 0x50340200, // 0123 LDBOOL R13 1 0 - 0x7C280600, // 0124 CALL R10 3 - 0x50100200, // 0125 LDBOOL R4 1 0 - 0x70020007, // 0126 JMP #012F - 0xB82A2E00, // 0127 GETNGBL R10 K23 - 0x8C281502, // 0128 GETMET R10 R10 K2 - 0x60300008, // 0129 GETGBL R12 G8 - 0x5C341200, // 012A MOVE R13 R9 - 0x7C300200, // 012B CALL R12 1 - 0x00327C0C, // 012C ADD R12 K62 R12 - 0x58340022, // 012D LDCONST R13 K34 - 0x7C280600, // 012E CALL R10 3 - 0xA8040001, // 012F EXBLK 1 1 - 0x80040800, // 0130 RET 1 R4 - 0xA8040001, // 0131 EXBLK 1 1 - 0x70020018, // 0132 JMP #014C - 0xAC140002, // 0133 CATCH R5 0 2 - 0x70020015, // 0134 JMP #014B - 0xB81E2E00, // 0135 GETNGBL R7 K23 - 0x8C1C0F02, // 0136 GETMET R7 R7 K2 - 0x60240008, // 0137 GETGBL R9 G8 - 0x5C280A00, // 0138 MOVE R10 R5 - 0x7C240200, // 0139 CALL R9 1 - 0x00267E09, // 013A ADD R9 K63 R9 - 0x00241340, // 013B ADD R9 R9 K64 - 0x60280008, // 013C GETGBL R10 G8 - 0x5C2C0C00, // 013D MOVE R11 R6 - 0x7C280200, // 013E CALL R10 1 - 0x0024120A, // 013F ADD R9 R9 R10 - 0x58280041, // 0140 LDCONST R10 K65 - 0x7C1C0600, // 0141 CALL R7 3 - 0xB81E2E00, // 0142 GETNGBL R7 K23 - 0x881C0F42, // 0143 GETMBR R7 R7 K66 - 0x781E0002, // 0144 JMPF R7 #0148 - 0xA41E8600, // 0145 IMPORT R7 K67 - 0x8C200F44, // 0146 GETMET R8 R7 K68 - 0x7C200200, // 0147 CALL R8 1 - 0x501C0000, // 0148 LDBOOL R7 0 0 - 0x80040E00, // 0149 RET 1 R7 - 0x70020000, // 014A JMP #014C - 0xB0080000, // 014B RAISE 2 R0 R0 - 0x80000000, // 014C RET 0 + 0x8C201118, // 003D GETMET R8 R8 K24 + 0x542A0003, // 003E LDINT R10 4 + 0x7C200400, // 003F CALL R8 2 + 0x7822000A, // 0040 JMPF R8 #004C + 0xB8222E00, // 0041 GETNGBL R8 K23 + 0x8C201102, // 0042 GETMET R8 R8 K2 + 0x60280018, // 0043 GETGBL R10 G24 + 0x582C0019, // 0044 LDCONST R11 K25 + 0x88300B16, // 0045 GETMBR R12 R5 K22 + 0x88340F14, // 0046 GETMBR R13 R7 K20 + 0x8C341B1A, // 0047 GETMET R13 R13 K26 + 0x7C340200, // 0048 CALL R13 1 + 0x7C280600, // 0049 CALL R10 3 + 0x542E0003, // 004A LDINT R11 4 + 0x7C200600, // 004B CALL R8 3 + 0x8C20011B, // 004C GETMET R8 R0 K27 + 0x5C280A00, // 004D MOVE R10 R5 + 0x502C0000, // 004E LDBOOL R11 0 0 + 0x7C200600, // 004F CALL R8 3 + 0x50200000, // 0050 LDBOOL R8 0 0 + 0xA8040001, // 0051 EXBLK 1 1 + 0x80041000, // 0052 RET 1 R8 + 0x8C200B1C, // 0053 GETMET R8 R5 K28 + 0x7C200200, // 0054 CALL R8 1 + 0x74220002, // 0055 JMPT R8 #0059 + 0x50200000, // 0056 LDBOOL R8 0 0 + 0xA8040001, // 0057 EXBLK 1 1 + 0x80041000, // 0058 RET 1 R8 + 0x88200107, // 0059 GETMBR R8 R0 K7 + 0x8C20111D, // 005A GETMET R8 R8 K29 + 0x5C280A00, // 005B MOVE R10 R5 + 0x7C200400, // 005C CALL R8 2 + 0x88200B1E, // 005D GETMBR R8 R5 K30 + 0x5426000F, // 005E LDINT R9 16 + 0x20201009, // 005F NE R8 R8 R9 + 0x7822001D, // 0060 JMPF R8 #007F + 0xB8220000, // 0061 GETNGBL R8 K0 + 0x8C20111F, // 0062 GETMET R8 R8 K31 + 0x88280B1E, // 0063 GETMBR R10 R5 K30 + 0x7C200400, // 0064 CALL R8 2 + 0x5C241000, // 0065 MOVE R9 R8 + 0x74260004, // 0066 JMPT R9 #006C + 0x60240018, // 0067 GETGBL R9 G24 + 0x58280020, // 0068 LDCONST R10 K32 + 0x882C0B1E, // 0069 GETMBR R11 R5 K30 + 0x7C240400, // 006A CALL R9 2 + 0x5C201200, // 006B MOVE R8 R9 + 0xB8262E00, // 006C GETNGBL R9 K23 + 0x8C241318, // 006D GETMET R9 R9 K24 + 0x582C0021, // 006E LDCONST R11 K33 + 0x7C240400, // 006F CALL R9 2 + 0x7826000C, // 0070 JMPF R9 #007E + 0xB8262E00, // 0071 GETNGBL R9 K23 + 0x8C241302, // 0072 GETMET R9 R9 K2 + 0x602C0018, // 0073 GETGBL R11 G24 + 0x58300022, // 0074 LDCONST R12 K34 + 0x88340F0D, // 0075 GETMBR R13 R7 K13 + 0x5C381000, // 0076 MOVE R14 R8 + 0x883C0B16, // 0077 GETMBR R15 R5 K22 + 0x88400B23, // 0078 GETMBR R16 R5 K35 + 0x5C440400, // 0079 MOVE R17 R2 + 0x5C480600, // 007A MOVE R18 R3 + 0x7C2C0E00, // 007B CALL R11 7 + 0x58300021, // 007C LDCONST R12 K33 + 0x7C240600, // 007D CALL R9 3 + 0x70020018, // 007E JMP #0098 + 0xB8222E00, // 007F GETNGBL R8 K23 + 0x8C201118, // 0080 GETMET R8 R8 K24 + 0x542A0003, // 0081 LDINT R10 4 + 0x7C200400, // 0082 CALL R8 2 + 0x78220013, // 0083 JMPF R8 #0098 + 0xB8222E00, // 0084 GETNGBL R8 K23 + 0x8C201102, // 0085 GETMET R8 R8 K2 + 0x60280018, // 0086 GETGBL R10 G24 + 0x582C0024, // 0087 LDCONST R11 K36 + 0x88300F0D, // 0088 GETMBR R12 R7 K13 + 0x88340B16, // 0089 GETMBR R13 R5 K22 + 0x88380B25, // 008A GETMBR R14 R5 K37 + 0x783A0001, // 008B JMPF R14 #008E + 0x58380026, // 008C LDCONST R14 K38 + 0x70020000, // 008D JMP #008F + 0x58380027, // 008E LDCONST R14 K39 + 0x883C0B23, // 008F GETMBR R15 R5 K35 + 0x60400008, // 0090 GETGBL R16 G8 + 0x88440B28, // 0091 GETMBR R17 R5 K40 + 0x7C400200, // 0092 CALL R16 1 + 0x5C440400, // 0093 MOVE R17 R2 + 0x5C480600, // 0094 MOVE R18 R3 + 0x7C281000, // 0095 CALL R10 8 + 0x542E0003, // 0096 LDINT R11 4 + 0x7C200600, // 0097 CALL R8 3 + 0x88200129, // 0098 GETMBR R8 R0 K41 + 0x8C20112A, // 0099 GETMET R8 R8 K42 + 0x5C280A00, // 009A MOVE R10 R5 + 0x7C200400, // 009B CALL R8 2 + 0x5C101000, // 009C MOVE R4 R8 + 0x5C200800, // 009D MOVE R8 R4 + 0x74220003, // 009E JMPT R8 #00A3 + 0x8C20011B, // 009F GETMET R8 R0 K27 + 0x5C280A00, // 00A0 MOVE R10 R5 + 0x502C0000, // 00A1 LDBOOL R11 0 0 + 0x7C200600, // 00A2 CALL R8 3 + 0x50200200, // 00A3 LDBOOL R8 1 0 + 0xA8040001, // 00A4 EXBLK 1 1 + 0x80041000, // 00A5 RET 1 R8 + 0x700200A7, // 00A6 JMP #014F + 0xB81E2E00, // 00A7 GETNGBL R7 K23 + 0x8C1C0F18, // 00A8 GETMET R7 R7 K24 + 0x54260003, // 00A9 LDINT R9 4 + 0x7C1C0400, // 00AA CALL R7 2 + 0x781E0008, // 00AB JMPF R7 #00B5 + 0xB81E2E00, // 00AC GETNGBL R7 K23 + 0x8C1C0F02, // 00AD GETMET R7 R7 K2 + 0x60240018, // 00AE GETGBL R9 G24 + 0x5828002B, // 00AF LDCONST R10 K43 + 0x882C0B0D, // 00B0 GETMBR R11 R5 K13 + 0x88300B16, // 00B1 GETMBR R12 R5 K22 + 0x7C240600, // 00B2 CALL R9 3 + 0x542A0003, // 00B3 LDINT R10 4 + 0x7C1C0600, // 00B4 CALL R7 3 + 0x881C0107, // 00B5 GETMBR R7 R0 K7 + 0x881C0F08, // 00B6 GETMBR R7 R7 K8 + 0x8C1C0F2C, // 00B7 GETMET R7 R7 K44 + 0x88240B0D, // 00B8 GETMBR R9 R5 K13 + 0x7C1C0400, // 00B9 CALL R7 2 + 0x4C200000, // 00BA LDNIL R8 + 0x1C200E08, // 00BB EQ R8 R7 R8 + 0x7822000A, // 00BC JMPF R8 #00C8 + 0xB8222E00, // 00BD GETNGBL R8 K23 + 0x8C201102, // 00BE GETMET R8 R8 K2 + 0x60280008, // 00BF GETGBL R10 G8 + 0x882C0B0D, // 00C0 GETMBR R11 R5 K13 + 0x7C280200, // 00C1 CALL R10 1 + 0x002A5A0A, // 00C2 ADD R10 K45 R10 + 0x582C0021, // 00C3 LDCONST R11 K33 + 0x7C200600, // 00C4 CALL R8 3 + 0x50200000, // 00C5 LDBOOL R8 0 0 + 0xA8040001, // 00C6 EXBLK 1 1 + 0x80041000, // 00C7 RET 1 R8 + 0x780A0000, // 00C8 JMPF R2 #00CA + 0x901E2002, // 00C9 SETMBR R7 K16 R2 + 0x780E0000, // 00CA JMPF R3 #00CC + 0x901E2203, // 00CB SETMBR R7 K17 R3 + 0x901E2400, // 00CC SETMBR R7 K18 R0 + 0x90162607, // 00CD SETMBR R5 K19 R7 + 0x8C200F2E, // 00CE GETMET R8 R7 K46 + 0x88280B16, // 00CF GETMBR R10 R5 K22 + 0x502C0200, // 00D0 LDBOOL R11 1 0 + 0x7C200600, // 00D1 CALL R8 3 + 0x74220018, // 00D2 JMPT R8 #00EC + 0xB8222E00, // 00D3 GETNGBL R8 K23 + 0x8C201118, // 00D4 GETMET R8 R8 K24 + 0x58280021, // 00D5 LDCONST R10 K33 + 0x7C200400, // 00D6 CALL R8 2 + 0x7822000C, // 00D7 JMPF R8 #00E5 + 0xB8222E00, // 00D8 GETNGBL R8 K23 + 0x8C201102, // 00D9 GETMET R8 R8 K2 + 0x60280008, // 00DA GETGBL R10 G8 + 0x882C0B16, // 00DB GETMBR R11 R5 K22 + 0x7C280200, // 00DC CALL R10 1 + 0x002A5E0A, // 00DD ADD R10 K47 R10 + 0x00281530, // 00DE ADD R10 R10 K48 + 0x602C0008, // 00DF GETGBL R11 G8 + 0x88300F31, // 00E0 GETMBR R12 R7 K49 + 0x7C2C0200, // 00E1 CALL R11 1 + 0x0028140B, // 00E2 ADD R10 R10 R11 + 0x582C0021, // 00E3 LDCONST R11 K33 + 0x7C200600, // 00E4 CALL R8 3 + 0x8C200132, // 00E5 GETMET R8 R0 K50 + 0x5C280A00, // 00E6 MOVE R10 R5 + 0x502C0000, // 00E7 LDBOOL R11 0 0 + 0x7C200600, // 00E8 CALL R8 3 + 0x50200000, // 00E9 LDBOOL R8 0 0 + 0xA8040001, // 00EA EXBLK 1 1 + 0x80041000, // 00EB RET 1 R8 + 0x8C200B33, // 00EC GETMET R8 R5 K51 + 0x7C200200, // 00ED CALL R8 1 + 0xB8260000, // 00EE GETNGBL R9 K0 + 0x88241301, // 00EF GETMBR R9 R9 K1 + 0x8C241302, // 00F0 GETMET R9 R9 K2 + 0x582C0034, // 00F1 LDCONST R11 K52 + 0x7C240400, // 00F2 CALL R9 2 + 0x5C241000, // 00F3 MOVE R9 R8 + 0x74260002, // 00F4 JMPT R9 #00F8 + 0x50240000, // 00F5 LDBOOL R9 0 0 + 0xA8040001, // 00F6 EXBLK 1 1 + 0x80041200, // 00F7 RET 1 R9 + 0x8C240B1C, // 00F8 GETMET R9 R5 K28 + 0x7C240200, // 00F9 CALL R9 1 + 0xB8262E00, // 00FA GETNGBL R9 K23 + 0x8C241318, // 00FB GETMET R9 R9 K24 + 0x542E0003, // 00FC LDINT R11 4 + 0x7C240400, // 00FD CALL R9 2 + 0x78260013, // 00FE JMPF R9 #0113 + 0xB8262E00, // 00FF GETNGBL R9 K23 + 0x8C241302, // 0100 GETMET R9 R9 K2 + 0x602C0008, // 0101 GETGBL R11 G8 + 0x88300B36, // 0102 GETMBR R12 R5 K54 + 0x7C2C0200, // 0103 CALL R11 1 + 0x002E6A0B, // 0104 ADD R11 K53 R11 + 0x002C1737, // 0105 ADD R11 R11 K55 + 0x60300008, // 0106 GETGBL R12 G8 + 0x88340B1E, // 0107 GETMBR R13 R5 K30 + 0x7C300200, // 0108 CALL R12 1 + 0x002C160C, // 0109 ADD R11 R11 R12 + 0x002C1738, // 010A ADD R11 R11 K56 + 0x60300008, // 010B GETGBL R12 G8 + 0x88340B23, // 010C GETMBR R13 R5 K35 + 0x543AFFFE, // 010D LDINT R14 65535 + 0x2C341A0E, // 010E AND R13 R13 R14 + 0x7C300200, // 010F CALL R12 1 + 0x002C160C, // 0110 ADD R11 R11 R12 + 0x54320003, // 0111 LDINT R12 4 + 0x7C240600, // 0112 CALL R9 3 + 0x88240107, // 0113 GETMBR R9 R0 K7 + 0x8C24131D, // 0114 GETMET R9 R9 K29 + 0x5C2C0A00, // 0115 MOVE R11 R5 + 0x7C240400, // 0116 CALL R9 2 + 0x88240B36, // 0117 GETMBR R9 R5 K54 + 0x1C28130E, // 0118 EQ R10 R9 K14 + 0x782A000F, // 0119 JMPF R10 #012A + 0x88280B1E, // 011A GETMBR R10 R5 K30 + 0x542E000F, // 011B LDINT R11 16 + 0x1C28140B, // 011C EQ R10 R10 R11 + 0x782A0009, // 011D JMPF R10 #0128 + 0x88280139, // 011E GETMBR R10 R0 K57 + 0x8C28153A, // 011F GETMET R10 R10 K58 + 0x5C300A00, // 0120 MOVE R12 R5 + 0x7C280400, // 0121 CALL R10 2 + 0x5C101400, // 0122 MOVE R4 R10 + 0x78120003, // 0123 JMPF R4 #0128 + 0x88280139, // 0124 GETMBR R10 R0 K57 + 0x8C28153B, // 0125 GETMET R10 R10 K59 + 0x5C300000, // 0126 MOVE R12 R0 + 0x7C280400, // 0127 CALL R10 2 + 0x50100200, // 0128 LDBOOL R4 1 0 + 0x70020024, // 0129 JMP #014F + 0x1C28133C, // 012A EQ R10 R9 K60 + 0x782A001A, // 012B JMPF R10 #0147 + 0xB82A0000, // 012C GETNGBL R10 K0 + 0x88281501, // 012D GETMBR R10 R10 K1 + 0x8C281502, // 012E GETMET R10 R10 K2 + 0x5830003D, // 012F LDCONST R12 K61 + 0x7C280400, // 0130 CALL R10 2 + 0x88280139, // 0131 GETMBR R10 R0 K57 + 0x8C28152A, // 0132 GETMET R10 R10 K42 + 0x5C300A00, // 0133 MOVE R12 R5 + 0x7C280400, // 0134 CALL R10 2 + 0x5C101400, // 0135 MOVE R4 R10 + 0xB82A0000, // 0136 GETNGBL R10 K0 + 0x88281501, // 0137 GETMBR R10 R10 K1 + 0x8C281502, // 0138 GETMET R10 R10 K2 + 0x5830003E, // 0139 LDCONST R12 K62 + 0x7C280400, // 013A CALL R10 2 + 0x78120004, // 013B JMPF R4 #0141 + 0x88280139, // 013C GETMBR R10 R0 K57 + 0x8C28153B, // 013D GETMET R10 R10 K59 + 0x5C300000, // 013E MOVE R12 R0 + 0x7C280400, // 013F CALL R10 2 + 0x70020003, // 0140 JMP #0145 + 0x8C280132, // 0141 GETMET R10 R0 K50 + 0x5C300A00, // 0142 MOVE R12 R5 + 0x50340200, // 0143 LDBOOL R13 1 0 + 0x7C280600, // 0144 CALL R10 3 + 0x50100200, // 0145 LDBOOL R4 1 0 + 0x70020007, // 0146 JMP #014F + 0xB82A2E00, // 0147 GETNGBL R10 K23 + 0x8C281502, // 0148 GETMET R10 R10 K2 + 0x60300008, // 0149 GETGBL R12 G8 + 0x5C341200, // 014A MOVE R13 R9 + 0x7C300200, // 014B CALL R12 1 + 0x00327E0C, // 014C ADD R12 K63 R12 + 0x58340021, // 014D LDCONST R13 K33 + 0x7C280600, // 014E CALL R10 3 + 0xA8040001, // 014F EXBLK 1 1 + 0x80040800, // 0150 RET 1 R4 + 0xA8040001, // 0151 EXBLK 1 1 + 0x70020018, // 0152 JMP #016C + 0xAC140002, // 0153 CATCH R5 0 2 + 0x70020015, // 0154 JMP #016B + 0xB81E2E00, // 0155 GETNGBL R7 K23 + 0x8C1C0F02, // 0156 GETMET R7 R7 K2 + 0x60240008, // 0157 GETGBL R9 G8 + 0x5C280A00, // 0158 MOVE R10 R5 + 0x7C240200, // 0159 CALL R9 1 + 0x00268009, // 015A ADD R9 K64 R9 + 0x00241341, // 015B ADD R9 R9 K65 + 0x60280008, // 015C GETGBL R10 G8 + 0x5C2C0C00, // 015D MOVE R11 R6 + 0x7C280200, // 015E CALL R10 1 + 0x0024120A, // 015F ADD R9 R9 R10 + 0x58280042, // 0160 LDCONST R10 K66 + 0x7C1C0600, // 0161 CALL R7 3 + 0xB81E2E00, // 0162 GETNGBL R7 K23 + 0x881C0F43, // 0163 GETMBR R7 R7 K67 + 0x781E0002, // 0164 JMPF R7 #0168 + 0xA41E8800, // 0165 IMPORT R7 K68 + 0x8C200F45, // 0166 GETMET R8 R7 K69 + 0x7C200200, // 0167 CALL R8 1 + 0x501C0000, // 0168 LDBOOL R7 0 0 + 0x80040E00, // 0169 RET 1 R7 + 0x70020000, // 016A JMP #016C + 0xB0080000, // 016B RAISE 2 R0 R0 + 0x80000000, // 016C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_response_frame +********************************************************************/ +be_local_closure(Matter_MessageHandler_send_response_frame, /* 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[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(profiler), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(send_response_frame), + /* K4 */ be_nested_str_weak(device), + /* K5 */ be_nested_str_weak(msg_send), + }), + be_str_weak(send_response_frame), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x88080501, // 0001 GETMBR R2 R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x58100003, // 0003 LDCONST R4 K3 + 0x7C080400, // 0004 CALL R2 2 + 0x88080104, // 0005 GETMBR R2 R0 K4 + 0x8C080505, // 0006 GETMET R2 R2 K5 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_simple_ack +********************************************************************/ +be_local_closure(Matter_MessageHandler_send_simple_ack, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* 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(x_flag_r), + /* K1 */ be_nested_str_weak(build_standalone_ack), + /* K2 */ be_nested_str_weak(encode_frame), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(loglevel), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s), + /* K7 */ be_nested_str_weak(session), + /* K8 */ be_nested_str_weak(local_session_id), + /* K9 */ be_nested_str_weak(ack_message_counter), + /* K10 */ be_nested_str_weak(message_counter), + /* K11 */ be_nested_str_weak(_X7Breliable_X7D), + /* K12 */ be_nested_str_weak(), + /* K13 */ be_nested_str_weak(send_response_frame), + }), + be_str_weak(send_simple_ack), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x780E001B, // 0001 JMPF R3 #001E + 0x8C0C0301, // 0002 GETMET R3 R1 K1 + 0x5C140400, // 0003 MOVE R5 R2 + 0x7C0C0400, // 0004 CALL R3 2 + 0x8C100702, // 0005 GETMET R4 R3 K2 + 0x7C100200, // 0006 CALL R4 1 + 0xB8120600, // 0007 GETNGBL R4 K3 + 0x8C100904, // 0008 GETMET R4 R4 K4 + 0x541A0003, // 0009 LDINT R6 4 + 0x7C100400, // 000A CALL R4 2 + 0x7812000E, // 000B JMPF R4 #001B + 0xB8120600, // 000C GETNGBL R4 K3 + 0x8C100905, // 000D GETMET R4 R4 K5 + 0x60180018, // 000E GETGBL R6 G24 + 0x581C0006, // 000F LDCONST R7 K6 + 0x88200707, // 0010 GETMBR R8 R3 K7 + 0x88201108, // 0011 GETMBR R8 R8 K8 + 0x88240709, // 0012 GETMBR R9 R3 K9 + 0x8828070A, // 0013 GETMBR R10 R3 K10 + 0x780A0001, // 0014 JMPF R2 #0017 + 0x582C000B, // 0015 LDCONST R11 K11 + 0x70020000, // 0016 JMP #0018 + 0x582C000C, // 0017 LDCONST R11 K12 + 0x7C180A00, // 0018 CALL R6 5 + 0x541E0003, // 0019 LDINT R7 4 + 0x7C100600, // 001A CALL R4 3 + 0x8C10010D, // 001B GETMET R4 R0 K13 + 0x5C180600, // 001C MOVE R6 R3 + 0x7C100400, // 001D CALL R4 2 + 0x80000000, // 001E RET 0 }) ) ); @@ -665,48 +731,33 @@ be_local_closure(Matter_MessageHandler_every_250ms, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: every_second ********************************************************************/ -be_local_closure(Matter_MessageHandler_init, /* name */ +be_local_closure(Matter_MessageHandler_every_second, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ + 3, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(commissioning), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(Commisioning_Context), - /* K4 */ be_nested_str_weak(im), - /* K5 */ be_nested_str_weak(IM), - /* K6 */ be_nested_str_weak(control_message), - /* K7 */ be_nested_str_weak(Control_Message), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(commissioning), + /* K1 */ be_nested_str_weak(every_second), + /* K2 */ be_nested_str_weak(im), }), - be_str_weak(init), + be_str_weak(every_second), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0xB80A0400, // 0001 GETNGBL R2 K2 - 0x8C080503, // 0002 GETMET R2 R2 K3 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C080400, // 0004 CALL R2 2 - 0x90020202, // 0005 SETMBR R0 K1 R2 - 0xB80A0400, // 0006 GETNGBL R2 K2 - 0x8C080505, // 0007 GETMET R2 R2 K5 - 0x5C100200, // 0008 MOVE R4 R1 - 0x7C080400, // 0009 CALL R2 2 - 0x90020802, // 000A SETMBR R0 K4 R2 - 0xB80A0400, // 000B GETNGBL R2 K2 - 0x8C080507, // 000C GETMET R2 R2 K7 - 0x5C100000, // 000D MOVE R4 R0 - 0x7C080400, // 000E CALL R2 2 - 0x90020C02, // 000F SETMBR R0 K6 R2 - 0x80000000, // 0010 RET 0 + ( &(const binstruction[ 7]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C040301, // 0004 GETMET R1 R1 K1 + 0x7C040200, // 0005 CALL R1 1 + 0x80000000, // 0006 RET 0 }) ) ); @@ -717,21 +768,22 @@ be_local_closure(Matter_MessageHandler_init, /* name */ ** Solidified class: Matter_MessageHandler ********************************************************************/ be_local_class(Matter_MessageHandler, - 4, + 5, NULL, - be_nested_map(11, + be_nested_map(12, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(im, 3), be_const_var(2) }, - { be_const_key_weak(init, -1), be_const_closure(Matter_MessageHandler_init_closure) }, + { be_const_key_weak(commissioning, -1), be_const_var(1) }, + { be_const_key_weak(_n_bytes, 7), be_const_var(4) }, { be_const_key_weak(send_encrypted_ack, -1), be_const_closure(Matter_MessageHandler_send_encrypted_ack_closure) }, + { be_const_key_weak(init, 5), be_const_closure(Matter_MessageHandler_init_closure) }, + { be_const_key_weak(msg_received, -1), be_const_closure(Matter_MessageHandler_msg_received_closure) }, + { be_const_key_weak(im, 11), be_const_var(2) }, { be_const_key_weak(every_second, -1), be_const_closure(Matter_MessageHandler_every_second_closure) }, { be_const_key_weak(every_250ms, -1), be_const_closure(Matter_MessageHandler_every_250ms_closure) }, - { be_const_key_weak(device, -1), be_const_var(0) }, - { be_const_key_weak(msg_received, -1), be_const_closure(Matter_MessageHandler_msg_received_closure) }, - { be_const_key_weak(control_message, 4), be_const_var(3) }, - { be_const_key_weak(commissioning, -1), be_const_var(1) }, { be_const_key_weak(send_simple_ack, 1), be_const_closure(Matter_MessageHandler_send_simple_ack_closure) }, - { be_const_key_weak(send_response_frame, 0), be_const_closure(Matter_MessageHandler_send_response_frame_closure) }, + { be_const_key_weak(send_response_frame, 6), be_const_closure(Matter_MessageHandler_send_response_frame_closure) }, + { be_const_key_weak(control_message, -1), be_const_var(3) }, + { be_const_key_weak(device, -1), be_const_var(0) }, })), be_str_weak(Matter_MessageHandler) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path.h index 3fa3881cc15d..b299cc24bfa2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path.h @@ -6,46 +6,6 @@ extern const bclass be_class_Matter_Path; -/******************************************************************** -** Solidified function: clear -********************************************************************/ -be_local_closure(Matter_Path_clear, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - /* K3 */ be_nested_str_weak(command), - /* K4 */ be_nested_str_weak(status), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(msh), - }), - be_str_weak(clear), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x90020201, // 0002 SETMBR R0 K1 R1 - 0x90020401, // 0003 SETMBR R0 K2 R1 - 0x90020601, // 0004 SETMBR R0 K3 R1 - 0x90020801, // 0005 SETMBR R0 K4 R1 - 0x90020A01, // 0006 SETMBR R0 K5 R1 - 0x90020C01, // 0007 SETMBR R0 K6 R1 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: tostring ********************************************************************/ @@ -157,23 +117,66 @@ be_local_closure(Matter_Path_tostring, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: reset +********************************************************************/ +be_local_closure(Matter_Path_reset, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + /* K3 */ be_nested_str_weak(fabric_filtered), + /* K4 */ be_nested_str_weak(command), + /* K5 */ be_nested_str_weak(status), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(msg), + }), + be_str_weak(reset), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x90020201, // 0002 SETMBR R0 K1 R1 + 0x90020401, // 0003 SETMBR R0 K2 R1 + 0x90020601, // 0004 SETMBR R0 K3 R1 + 0x90020801, // 0005 SETMBR R0 K4 R1 + 0x90020A01, // 0006 SETMBR R0 K5 R1 + 0x90020C01, // 0007 SETMBR R0 K6 R1 + 0x90020E01, // 0008 SETMBR R0 K7 R1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Path ********************************************************************/ be_local_class(Matter_Path, - 7, + 8, NULL, - be_nested_map(9, + be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(log, -1), be_const_var(5) }, - { be_const_key_weak(cluster, -1), be_const_var(1) }, - { be_const_key_weak(command, -1), be_const_var(3) }, + { be_const_key_weak(attribute, -1), be_const_var(2) }, + { be_const_key_weak(log, 0), be_const_var(6) }, + { be_const_key_weak(fabric_filtered, 6), be_const_var(3) }, + { be_const_key_weak(command, -1), be_const_var(4) }, + { be_const_key_weak(msg, -1), be_const_var(7) }, { be_const_key_weak(tostring, -1), be_const_closure(Matter_Path_tostring_closure) }, - { be_const_key_weak(status, 1), be_const_var(4) }, - { be_const_key_weak(attribute, 6), be_const_var(2) }, - { be_const_key_weak(clear, -1), be_const_closure(Matter_Path_clear_closure) }, + { be_const_key_weak(reset, -1), be_const_closure(Matter_Path_reset_closure) }, + { be_const_key_weak(cluster, -1), be_const_var(1) }, { be_const_key_weak(endpoint, 3), be_const_var(0) }, - { be_const_key_weak(msg, -1), be_const_var(6) }, + { be_const_key_weak(status, -1), be_const_var(5) }, })), be_str_weak(Matter_Path) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h index 59b285408bdc..1796b621680d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h @@ -7,23 +7,37 @@ extern const bclass be_class_Matter_Plugin; /******************************************************************** -** Solidified function: parse_sensors +** Solidified function: init ********************************************************************/ -be_local_closure(Matter_Plugin_parse_sensors, /* name */ +be_local_closure(Matter_Plugin_init, /* name */ be_nested_proto( - 2, /* nstack */ - 2, /* argc */ + 7, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(parse_sensors), + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(endpoint), + /* K2 */ be_nested_str_weak(clusters), + /* K3 */ be_nested_str_weak(consolidate_clusters), + /* K4 */ be_nested_str_weak(parse_configuration), + }), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 + ( &(const binstruction[ 9]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x8C100103, // 0002 GETMET R4 R0 K3 + 0x7C100200, // 0003 CALL R4 1 + 0x90020404, // 0004 SETMBR R0 K2 R4 + 0x8C100104, // 0005 GETMET R4 R0 K4 + 0x5C180600, // 0006 MOVE R6 R3 + 0x7C100400, // 0007 CALL R4 2 + 0x80000000, // 0008 RET 0 }) ) ); @@ -31,45 +45,24 @@ be_local_closure(Matter_Plugin_parse_sensors, /* name */ /******************************************************************** -** Solidified function: get_cluster_list +** Solidified function: read_event ********************************************************************/ -be_local_closure(Matter_Plugin_get_cluster_list, /* name */ +be_local_closure(Matter_Plugin_read_event, /* name */ be_nested_proto( - 8, /* nstack */ - 2, /* argc */ + 6, /* nstack */ + 5, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(get_cluster_list), + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(read_event), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x88100100, // 0003 GETMBR R4 R0 K0 - 0x8C100901, // 0004 GETMET R4 R4 K1 - 0x7C100200, // 0005 CALL R4 1 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA8020005, // 0007 EXBLK 0 #000E - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x8C140502, // 000A GETMET R5 R2 K2 - 0x5C1C0800, // 000B MOVE R7 R4 - 0x7C140400, // 000C CALL R5 2 - 0x7001FFF9, // 000D JMP #0008 - 0x580C0003, // 000E LDCONST R3 K3 - 0xAC0C0200, // 000F CATCH R3 1 0 - 0xB0080000, // 0010 RAISE 2 R0 R0 - 0x80040400, // 0011 RET 1 R2 + ( &(const binstruction[ 2]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 }) ) ); @@ -77,12 +70,12 @@ be_local_closure(Matter_Plugin_get_cluster_list, /* name */ /******************************************************************** -** Solidified function: write_attribute +** Solidified function: is_local_device ********************************************************************/ -be_local_closure(Matter_Plugin_write_attribute, /* name */ +be_local_closure(Matter_Plugin_is_local_device, /* name */ be_nested_proto( - 5, /* nstack */ - 4, /* argc */ + 2, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -90,11 +83,11 @@ be_local_closure(Matter_Plugin_write_attribute, /* name */ NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ - be_str_weak(write_attribute), + be_str_weak(is_local_device), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 + 0x50040200, // 0000 LDBOOL R1 1 0 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -102,12 +95,12 @@ be_local_closure(Matter_Plugin_write_attribute, /* name */ /******************************************************************** -** Solidified function: parse_configuration +** Solidified function: write_attribute ********************************************************************/ -be_local_closure(Matter_Plugin_parse_configuration, /* name */ +be_local_closure(Matter_Plugin_write_attribute, /* name */ be_nested_proto( - 2, /* nstack */ - 2, /* argc */ + 5, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -115,10 +108,11 @@ be_local_closure(Matter_Plugin_parse_configuration, /* name */ NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ - be_str_weak(parse_configuration), + be_str_weak(write_attribute), &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 + ( &(const binstruction[ 2]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 }) ) ); @@ -166,156 +160,61 @@ be_local_closure(Matter_Plugin_ui_conf_to_string, /* name */ /******************************************************************** -** Solidified function: read_attribute +** Solidified function: every_250ms ********************************************************************/ -be_local_closure(Matter_Plugin_read_attribute, /* name */ +be_local_closure(Matter_Plugin_every_250ms, /* name */ be_nested_proto( - 16, /* nstack */ - 3, /* argc */ + 4, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(Matter_TLV_array), - /* K6 */ be_nested_str_weak(TYPES), - /* K7 */ be_nested_str_weak(keys), - /* K8 */ be_nested_str_weak(add_struct), - /* K9 */ be_nested_str_weak(add_TLV), - /* K10 */ be_nested_str_weak(U2), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(stop_iteration), - /* K13 */ be_nested_str_weak(get_cluster_list), - /* K14 */ be_nested_str_weak(U4), - /* K15 */ be_const_int(2), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(create_TLV), - /* K18 */ be_nested_str_weak(BOOL), - /* K19 */ be_nested_str_weak(read_attribute), + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(update_next), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(jitter), + /* K3 */ be_nested_str_weak(UPDATE_TIME), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(time_reached), + /* K6 */ be_nested_str_weak(tick), + /* K7 */ be_nested_str_weak(device), + /* K8 */ be_nested_str_weak(update_shadow), + /* K9 */ be_nested_str_weak(millis), }), - be_str_weak(read_attribute), + be_str_weak(every_250ms), &be_const_str_solidified, - ( &(const binstruction[113]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A001C, // 0004 LDINT R6 29 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0051, // 0006 JMPF R6 #0059 - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A001B, // 0008 JMPF R6 #0025 - 0x8C180705, // 0009 GETMET R6 R3 K5 - 0x7C180200, // 000A CALL R6 1 - 0x881C0106, // 000B GETMBR R7 R0 K6 - 0x60200010, // 000C GETGBL R8 G16 - 0x8C240F07, // 000D GETMET R9 R7 K7 - 0x7C240200, // 000E CALL R9 1 - 0x7C200200, // 000F CALL R8 1 - 0xA802000E, // 0010 EXBLK 0 #0020 - 0x5C241000, // 0011 MOVE R9 R8 - 0x7C240000, // 0012 CALL R9 0 - 0x8C280D08, // 0013 GETMET R10 R6 K8 - 0x7C280200, // 0014 CALL R10 1 - 0x8C2C1509, // 0015 GETMET R11 R10 K9 - 0x58340004, // 0016 LDCONST R13 K4 - 0x8838070A, // 0017 GETMBR R14 R3 K10 - 0x5C3C1200, // 0018 MOVE R15 R9 - 0x7C2C0800, // 0019 CALL R11 4 - 0x8C2C1509, // 001A GETMET R11 R10 K9 - 0x5834000B, // 001B LDCONST R13 K11 - 0x8838070A, // 001C GETMBR R14 R3 K10 - 0x943C0E09, // 001D GETIDX R15 R7 R9 - 0x7C2C0800, // 001E CALL R11 4 - 0x7001FFF0, // 001F JMP #0011 - 0x5820000C, // 0020 LDCONST R8 K12 - 0xAC200200, // 0021 CATCH R8 1 0 - 0xB0080000, // 0022 RAISE 2 R0 R0 - 0x80040C00, // 0023 RET 1 R6 - 0x70020032, // 0024 JMP #0058 - 0x1C180B0B, // 0025 EQ R6 R5 K11 - 0x781A0013, // 0026 JMPF R6 #003B - 0x8C180705, // 0027 GETMET R6 R3 K5 - 0x7C180200, // 0028 CALL R6 1 - 0x601C0010, // 0029 GETGBL R7 G16 - 0x8C20010D, // 002A GETMET R8 R0 K13 - 0x7C200200, // 002B CALL R8 1 - 0x7C1C0200, // 002C CALL R7 1 - 0xA8020007, // 002D EXBLK 0 #0036 - 0x5C200E00, // 002E MOVE R8 R7 - 0x7C200000, // 002F CALL R8 0 - 0x8C240D09, // 0030 GETMET R9 R6 K9 - 0x4C2C0000, // 0031 LDNIL R11 - 0x8830070E, // 0032 GETMBR R12 R3 K14 - 0x5C341000, // 0033 MOVE R13 R8 - 0x7C240800, // 0034 CALL R9 4 - 0x7001FFF7, // 0035 JMP #002E - 0x581C000C, // 0036 LDCONST R7 K12 - 0xAC1C0200, // 0037 CATCH R7 1 0 - 0xB0080000, // 0038 RAISE 2 R0 R0 - 0x80040C00, // 0039 RET 1 R6 - 0x7002001C, // 003A JMP #0058 - 0x1C180B0F, // 003B EQ R6 R5 K15 - 0x781A0003, // 003C JMPF R6 #0041 - 0x8C180705, // 003D GETMET R6 R3 K5 - 0x7C180200, // 003E CALL R6 1 - 0x80040C00, // 003F RET 1 R6 - 0x70020016, // 0040 JMP #0058 - 0x1C180B10, // 0041 EQ R6 R5 K16 - 0x781A0003, // 0042 JMPF R6 #0047 - 0x8C180705, // 0043 GETMET R6 R3 K5 - 0x7C180200, // 0044 CALL R6 1 - 0x80040C00, // 0045 RET 1 R6 - 0x70020010, // 0046 JMP #0058 - 0x541AFFFB, // 0047 LDINT R6 65532 - 0x1C180A06, // 0048 EQ R6 R5 R6 - 0x781A0005, // 0049 JMPF R6 #0050 - 0x8C180711, // 004A GETMET R6 R3 K17 - 0x8820070E, // 004B GETMBR R8 R3 K14 - 0x58240004, // 004C LDCONST R9 K4 - 0x7C180600, // 004D CALL R6 3 - 0x80040C00, // 004E RET 1 R6 - 0x70020007, // 004F JMP #0058 - 0x541AFFFC, // 0050 LDINT R6 65533 - 0x1C180A06, // 0051 EQ R6 R5 R6 - 0x781A0004, // 0052 JMPF R6 #0058 - 0x8C180711, // 0053 GETMET R6 R3 K17 - 0x8820070E, // 0054 GETMBR R8 R3 K14 - 0x5824000B, // 0055 LDCONST R9 K11 - 0x7C180600, // 0056 CALL R6 3 - 0x80040C00, // 0057 RET 1 R6 - 0x70020016, // 0058 JMP #0070 - 0x541A0038, // 0059 LDINT R6 57 - 0x1C180806, // 005A EQ R6 R4 R6 - 0x781A0011, // 005B JMPF R6 #006E - 0x541A0010, // 005C LDINT R6 17 - 0x1C180A06, // 005D EQ R6 R5 R6 - 0x781A0005, // 005E JMPF R6 #0065 - 0x8C180711, // 005F GETMET R6 R3 K17 - 0x88200712, // 0060 GETMBR R8 R3 K18 - 0x5824000B, // 0061 LDCONST R9 K11 - 0x7C180600, // 0062 CALL R6 3 - 0x80040C00, // 0063 RET 1 R6 - 0x70020007, // 0064 JMP #006D - 0x60180003, // 0065 GETGBL R6 G3 - 0x5C1C0000, // 0066 MOVE R7 R0 - 0x7C180200, // 0067 CALL R6 1 - 0x8C180D13, // 0068 GETMET R6 R6 K19 - 0x5C200200, // 0069 MOVE R8 R1 - 0x5C240400, // 006A MOVE R9 R2 - 0x7C180600, // 006B CALL R6 3 - 0x80040C00, // 006C RET 1 R6 - 0x70020001, // 006D JMP #0070 - 0x4C180000, // 006E LDNIL R6 - 0x80040C00, // 006F RET 1 R6 - 0x80000000, // 0070 RET 0 + ( &(const binstruction[28]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060005, // 0003 JMPF R1 #000A + 0xB8060200, // 0004 GETNGBL R1 K1 + 0x8C040302, // 0005 GETMET R1 R1 K2 + 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0x7C040400, // 0007 CALL R1 2 + 0x90020001, // 0008 SETMBR R0 K0 R1 + 0x70020010, // 0009 JMP #001B + 0xB8060800, // 000A GETNGBL R1 K4 + 0x8C040305, // 000B GETMET R1 R1 K5 + 0x880C0100, // 000C GETMBR R3 R0 K0 + 0x7C040400, // 000D CALL R1 2 + 0x7806000B, // 000E JMPF R1 #001B + 0x88040106, // 000F GETMBR R1 R0 K6 + 0x88080107, // 0010 GETMBR R2 R0 K7 + 0x88080506, // 0011 GETMBR R2 R2 K6 + 0x20040202, // 0012 NE R1 R1 R2 + 0x78060001, // 0013 JMPF R1 #0016 + 0x8C040108, // 0014 GETMET R1 R0 K8 + 0x7C040200, // 0015 CALL R1 1 + 0xB8060800, // 0016 GETNGBL R1 K4 + 0x8C040309, // 0017 GETMET R1 R1 K9 + 0x880C0103, // 0018 GETMBR R3 R0 K3 + 0x7C040400, // 0019 CALL R1 2 + 0x90020001, // 001A SETMBR R0 K0 R1 + 0x80000000, // 001B RET 0 }) ) ); @@ -323,37 +222,49 @@ be_local_closure(Matter_Plugin_read_attribute, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: contains_attribute ********************************************************************/ -be_local_closure(Matter_Plugin_init, /* name */ +be_local_closure(Matter_Plugin_contains_attribute, /* name */ be_nested_proto( 7, /* nstack */ - 4, /* argc */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(clusters), - /* K3 */ be_nested_str_weak(consolidate_clusters), - /* K4 */ be_nested_str_weak(parse_configuration), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_const_int(0), + /* K3 */ be_const_int(1), }), - be_str_weak(init), + be_str_weak(contains_attribute), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x8C100103, // 0002 GETMET R4 R0 K3 - 0x7C100200, // 0003 CALL R4 1 - 0x90020404, // 0004 SETMBR R0 K2 R4 - 0x8C100104, // 0005 GETMET R4 R0 K4 - 0x5C180600, // 0006 MOVE R6 R3 - 0x7C100400, // 0007 CALL R4 2 - 0x80000000, // 0008 RET 0 + ( &(const binstruction[22]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x4C100000, // 0004 LDNIL R4 + 0x20100604, // 0005 NE R4 R3 R4 + 0x7812000C, // 0006 JMPF R4 #0014 + 0x58100002, // 0007 LDCONST R4 K2 + 0x6014000C, // 0008 GETGBL R5 G12 + 0x5C180600, // 0009 MOVE R6 R3 + 0x7C140200, // 000A CALL R5 1 + 0x14140805, // 000B LT R5 R4 R5 + 0x78160006, // 000C JMPF R5 #0014 + 0x94140604, // 000D GETIDX R5 R3 R4 + 0x1C140A02, // 000E EQ R5 R5 R2 + 0x78160001, // 000F JMPF R5 #0012 + 0x50140200, // 0010 LDBOOL R5 1 0 + 0x80040A00, // 0011 RET 1 R5 + 0x00100903, // 0012 ADD R4 R4 K3 + 0x7001FFF3, // 0013 JMP #0008 + 0x50100000, // 0014 LDBOOL R4 0 0 + 0x80040800, // 0015 RET 1 R4 }) ) ); @@ -361,26 +272,23 @@ be_local_closure(Matter_Plugin_init, /* name */ /******************************************************************** -** Solidified function: +** Solidified function: parse_sensors ********************************************************************/ -be_local_closure(Matter_Plugin__X3Clambda_X3E, /* name */ +be_local_closure(Matter_Plugin_parse_sensors, /* name */ be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ + 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(_X3Clambda_X3E), + be_str_weak(parse_sensors), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040008, // 0000 GETGBL R1 G8 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 }) ) ); @@ -388,42 +296,60 @@ be_local_closure(Matter_Plugin__X3Clambda_X3E, /* name */ /******************************************************************** -** Solidified function: has +** Solidified function: parse_configuration ********************************************************************/ -be_local_closure(Matter_Plugin_has, /* name */ +be_local_closure(Matter_Plugin_parse_configuration, /* name */ be_nested_proto( - 6, /* nstack */ - 3, /* argc */ + 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(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: ui_string_to_conf +********************************************************************/ +be_local_closure(Matter_Plugin_ui_string_to_conf, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(endpoints), - /* K3 */ be_nested_str_weak(find), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Plugin), + /* K1 */ be_nested_str_weak(ARG), + /* K2 */ be_nested_str_weak(ARG_TYPE), }), - be_str_weak(has), + be_str_weak(ui_string_to_conf), &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x780E0006, // 0004 JMPF R3 #000C - 0x880C0102, // 0005 GETMBR R3 R0 K2 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x5C140400, // 0007 MOVE R5 R2 - 0x7C0C0400, // 0008 CALL R3 2 - 0x4C100000, // 0009 LDNIL R4 - 0x200C0604, // 000A NE R3 R3 R4 - 0x740E0000, // 000B JMPT R3 #000D - 0x500C0001, // 000C LDBOOL R3 0 1 - 0x500C0200, // 000D LDBOOL R3 1 0 - 0x80040600, // 000E RET 1 R3 + ( &(const binstruction[10]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x780A0004, // 0003 JMPF R2 #0009 + 0x78120003, // 0004 JMPF R4 #0009 + 0x5C180A00, // 0005 MOVE R6 R5 + 0x5C1C0400, // 0006 MOVE R7 R2 + 0x7C180200, // 0007 CALL R6 1 + 0x98040806, // 0008 SETIDX R1 R4 R6 + 0x80040200, // 0009 RET 1 R1 }) ) ); @@ -431,9 +357,9 @@ be_local_closure(Matter_Plugin_has, /* name */ /******************************************************************** -** Solidified function: subscribe_event +** Solidified function: subscribe_attribute ********************************************************************/ -be_local_closure(Matter_Plugin_subscribe_event, /* name */ +be_local_closure(Matter_Plugin_subscribe_attribute, /* name */ be_nested_proto( 6, /* nstack */ 5, /* argc */ @@ -444,7 +370,7 @@ be_local_closure(Matter_Plugin_subscribe_event, /* name */ NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ - be_str_weak(subscribe_event), + be_str_weak(subscribe_attribute), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x4C140000, // 0000 LDNIL R5 @@ -456,36 +382,42 @@ be_local_closure(Matter_Plugin_subscribe_event, /* name */ /******************************************************************** -** Solidified function: ui_string_to_conf +** Solidified function: has ********************************************************************/ -be_local_closure(Matter_Plugin_ui_string_to_conf, /* name */ +be_local_closure(Matter_Plugin_has, /* name */ be_nested_proto( - 8, /* nstack */ + 6, /* nstack */ 3, /* argc */ - 4, /* varg */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Plugin), - /* K1 */ be_nested_str_weak(ARG), - /* K2 */ be_nested_str_weak(ARG_TYPE), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(endpoints), + /* K3 */ be_nested_str_weak(find), }), - be_str_weak(ui_string_to_conf), + be_str_weak(has), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x780A0004, // 0003 JMPF R2 #0009 - 0x78120003, // 0004 JMPF R4 #0009 - 0x5C180A00, // 0005 MOVE R6 R5 - 0x5C1C0400, // 0006 MOVE R7 R2 - 0x7C180200, // 0007 CALL R6 1 - 0x98040806, // 0008 SETIDX R1 R4 R6 - 0x80040200, // 0009 RET 1 R1 + ( &(const binstruction[15]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x780E0006, // 0004 JMPF R3 #000C + 0x880C0102, // 0005 GETMBR R3 R0 K2 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x5C140400, // 0007 MOVE R5 R2 + 0x7C0C0400, // 0008 CALL R3 2 + 0x4C100000, // 0009 LDNIL R4 + 0x200C0604, // 000A NE R3 R3 R4 + 0x740E0000, // 000B JMPT R3 #000D + 0x500C0001, // 000C LDBOOL R3 0 1 + 0x500C0200, // 000D LDBOOL R3 1 0 + 0x80040600, // 000E RET 1 R3 }) ) ); @@ -493,9 +425,9 @@ be_local_closure(Matter_Plugin_ui_string_to_conf, /* name */ /******************************************************************** -** Solidified function: update_shadow +** Solidified function: get_endpoint ********************************************************************/ -be_local_closure(Matter_Plugin_update_shadow, /* name */ +be_local_closure(Matter_Plugin_get_endpoint, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -505,17 +437,14 @@ be_local_closure(Matter_Plugin_update_shadow, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_nested_str_weak(device), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), }), - be_str_weak(update_shadow), + be_str_weak(get_endpoint), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x88040300, // 0001 GETMBR R1 R1 K0 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x80000000, // 0003 RET 0 + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -523,11 +452,11 @@ be_local_closure(Matter_Plugin_update_shadow, /* name */ /******************************************************************** -** Solidified function: every_250ms +** Solidified function: get_cluster_list ********************************************************************/ -be_local_closure(Matter_Plugin_every_250ms, /* name */ +be_local_closure(Matter_Plugin_get_cluster_list, /* name */ be_nested_proto( - 4, /* nstack */ + 7, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -535,49 +464,191 @@ be_local_closure(Matter_Plugin_every_250ms, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(update_next), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(jitter), - /* K3 */ be_nested_str_weak(UPDATE_TIME), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(time_reached), - /* K6 */ be_nested_str_weak(tick), - /* K7 */ be_nested_str_weak(device), - /* K8 */ be_nested_str_weak(update_shadow), - /* K9 */ be_nested_str_weak(millis), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(every_250ms), + be_str_weak(get_cluster_list), &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060005, // 0003 JMPF R1 #000A - 0xB8060200, // 0004 GETNGBL R1 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x7C040400, // 0007 CALL R1 2 - 0x90020001, // 0008 SETMBR R0 K0 R1 - 0x70020010, // 0009 JMP #001B - 0xB8060800, // 000A GETNGBL R1 K4 - 0x8C040305, // 000B GETMET R1 R1 K5 - 0x880C0100, // 000C GETMBR R3 R0 K0 - 0x7C040400, // 000D CALL R1 2 - 0x7806000B, // 000E JMPF R1 #001B - 0x88040106, // 000F GETMBR R1 R0 K6 - 0x88080107, // 0010 GETMBR R2 R0 K7 - 0x88080506, // 0011 GETMBR R2 R2 K6 - 0x20040202, // 0012 NE R1 R1 R2 - 0x78060001, // 0013 JMPF R1 #0016 - 0x8C040108, // 0014 GETMET R1 R0 K8 - 0x7C040200, // 0015 CALL R1 1 - 0xB8060800, // 0016 GETNGBL R1 K4 - 0x8C040309, // 0017 GETMET R1 R1 K9 - 0x880C0103, // 0018 GETMBR R3 R0 K3 - 0x7C040400, // 0019 CALL R1 2 - 0x90020001, // 001A SETMBR R0 K0 R1 - 0x80000000, // 001B RET 0 + ( &(const binstruction[18]) { /* code */ + 0x60040012, // 0000 GETGBL R1 G18 + 0x7C040000, // 0001 CALL R1 0 + 0x60080010, // 0002 GETGBL R2 G16 + 0x880C0100, // 0003 GETMBR R3 R0 K0 + 0x8C0C0701, // 0004 GETMET R3 R3 K1 + 0x7C0C0200, // 0005 CALL R3 1 + 0x7C080200, // 0006 CALL R2 1 + 0xA8020005, // 0007 EXBLK 0 #000E + 0x5C0C0400, // 0008 MOVE R3 R2 + 0x7C0C0000, // 0009 CALL R3 0 + 0x8C100302, // 000A GETMET R4 R1 K2 + 0x5C180600, // 000B MOVE R6 R3 + 0x7C100400, // 000C CALL R4 2 + 0x7001FFF9, // 000D JMP #0008 + 0x58080003, // 000E LDCONST R2 K3 + 0xAC080200, // 000F CATCH R2 1 0 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x80040200, // 0011 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_attribute +********************************************************************/ +be_local_closure(Matter_Plugin_read_attribute, /* name */ + be_nested_proto( + 17, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[20]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(Matter_TLV_array), + /* K6 */ be_nested_str_weak(TYPES), + /* K7 */ be_nested_str_weak(keys), + /* K8 */ be_nested_str_weak(add_struct), + /* K9 */ be_nested_str_weak(add_TLV), + /* K10 */ be_nested_str_weak(U2), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(stop_iteration), + /* K13 */ be_nested_str_weak(get_cluster_list), + /* K14 */ be_nested_str_weak(U4), + /* K15 */ be_const_int(2), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(set), + /* K18 */ be_nested_str_weak(BOOL), + /* K19 */ be_nested_str_weak(read_attribute), + }), + be_str_weak(read_attribute), + &be_const_str_solidified, + ( &(const binstruction[114]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E001C, // 0004 LDINT R7 29 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0051, // 0006 JMPF R7 #0059 + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E001B, // 0008 JMPF R7 #0025 + 0x8C1C0905, // 0009 GETMET R7 R4 K5 + 0x7C1C0200, // 000A CALL R7 1 + 0x88200106, // 000B GETMBR R8 R0 K6 + 0x60240010, // 000C GETGBL R9 G16 + 0x8C281107, // 000D GETMET R10 R8 K7 + 0x7C280200, // 000E CALL R10 1 + 0x7C240200, // 000F CALL R9 1 + 0xA802000E, // 0010 EXBLK 0 #0020 + 0x5C281200, // 0011 MOVE R10 R9 + 0x7C280000, // 0012 CALL R10 0 + 0x8C2C0F08, // 0013 GETMET R11 R7 K8 + 0x7C2C0200, // 0014 CALL R11 1 + 0x8C301709, // 0015 GETMET R12 R11 K9 + 0x58380004, // 0016 LDCONST R14 K4 + 0x883C090A, // 0017 GETMBR R15 R4 K10 + 0x5C401400, // 0018 MOVE R16 R10 + 0x7C300800, // 0019 CALL R12 4 + 0x8C301709, // 001A GETMET R12 R11 K9 + 0x5838000B, // 001B LDCONST R14 K11 + 0x883C090A, // 001C GETMBR R15 R4 K10 + 0x9440100A, // 001D GETIDX R16 R8 R10 + 0x7C300800, // 001E CALL R12 4 + 0x7001FFF0, // 001F JMP #0011 + 0x5824000C, // 0020 LDCONST R9 K12 + 0xAC240200, // 0021 CATCH R9 1 0 + 0xB0080000, // 0022 RAISE 2 R0 R0 + 0x80040E00, // 0023 RET 1 R7 + 0x70020032, // 0024 JMP #0058 + 0x1C1C0D0B, // 0025 EQ R7 R6 K11 + 0x781E0013, // 0026 JMPF R7 #003B + 0x8C1C0905, // 0027 GETMET R7 R4 K5 + 0x7C1C0200, // 0028 CALL R7 1 + 0x60200010, // 0029 GETGBL R8 G16 + 0x8C24010D, // 002A GETMET R9 R0 K13 + 0x7C240200, // 002B CALL R9 1 + 0x7C200200, // 002C CALL R8 1 + 0xA8020007, // 002D EXBLK 0 #0036 + 0x5C241000, // 002E MOVE R9 R8 + 0x7C240000, // 002F CALL R9 0 + 0x8C280F09, // 0030 GETMET R10 R7 K9 + 0x4C300000, // 0031 LDNIL R12 + 0x8834090E, // 0032 GETMBR R13 R4 K14 + 0x5C381200, // 0033 MOVE R14 R9 + 0x7C280800, // 0034 CALL R10 4 + 0x7001FFF7, // 0035 JMP #002E + 0x5820000C, // 0036 LDCONST R8 K12 + 0xAC200200, // 0037 CATCH R8 1 0 + 0xB0080000, // 0038 RAISE 2 R0 R0 + 0x80040E00, // 0039 RET 1 R7 + 0x7002001C, // 003A JMP #0058 + 0x1C1C0D0F, // 003B EQ R7 R6 K15 + 0x781E0003, // 003C JMPF R7 #0041 + 0x8C1C0905, // 003D GETMET R7 R4 K5 + 0x7C1C0200, // 003E CALL R7 1 + 0x80040E00, // 003F RET 1 R7 + 0x70020016, // 0040 JMP #0058 + 0x1C1C0D10, // 0041 EQ R7 R6 K16 + 0x781E0003, // 0042 JMPF R7 #0047 + 0x8C1C0905, // 0043 GETMET R7 R4 K5 + 0x7C1C0200, // 0044 CALL R7 1 + 0x80040E00, // 0045 RET 1 R7 + 0x70020010, // 0046 JMP #0058 + 0x541EFFFB, // 0047 LDINT R7 65532 + 0x1C1C0C07, // 0048 EQ R7 R6 R7 + 0x781E0005, // 0049 JMPF R7 #0050 + 0x8C1C0711, // 004A GETMET R7 R3 K17 + 0x8824090E, // 004B GETMBR R9 R4 K14 + 0x58280004, // 004C LDCONST R10 K4 + 0x7C1C0600, // 004D CALL R7 3 + 0x80040E00, // 004E RET 1 R7 + 0x70020007, // 004F JMP #0058 + 0x541EFFFC, // 0050 LDINT R7 65533 + 0x1C1C0C07, // 0051 EQ R7 R6 R7 + 0x781E0004, // 0052 JMPF R7 #0058 + 0x8C1C0711, // 0053 GETMET R7 R3 K17 + 0x8824090E, // 0054 GETMBR R9 R4 K14 + 0x5828000B, // 0055 LDCONST R10 K11 + 0x7C1C0600, // 0056 CALL R7 3 + 0x80040E00, // 0057 RET 1 R7 + 0x70020017, // 0058 JMP #0071 + 0x541E0038, // 0059 LDINT R7 57 + 0x1C1C0A07, // 005A EQ R7 R5 R7 + 0x781E0012, // 005B JMPF R7 #006F + 0x541E0010, // 005C LDINT R7 17 + 0x1C1C0C07, // 005D EQ R7 R6 R7 + 0x781E0005, // 005E JMPF R7 #0065 + 0x8C1C0711, // 005F GETMET R7 R3 K17 + 0x88240912, // 0060 GETMBR R9 R4 K18 + 0x5828000B, // 0061 LDCONST R10 K11 + 0x7C1C0600, // 0062 CALL R7 3 + 0x80040E00, // 0063 RET 1 R7 + 0x70020008, // 0064 JMP #006E + 0x601C0003, // 0065 GETGBL R7 G3 + 0x5C200000, // 0066 MOVE R8 R0 + 0x7C1C0200, // 0067 CALL R7 1 + 0x8C1C0F13, // 0068 GETMET R7 R7 K19 + 0x5C240200, // 0069 MOVE R9 R1 + 0x5C280400, // 006A MOVE R10 R2 + 0x5C2C0600, // 006B MOVE R11 R3 + 0x7C1C0800, // 006C CALL R7 4 + 0x80040E00, // 006D RET 1 R7 + 0x70020001, // 006E JMP #0071 + 0x4C1C0000, // 006F LDNIL R7 + 0x80040E00, // 0070 RET 1 R7 + 0x80000000, // 0071 RET 0 }) ) ); @@ -585,26 +656,30 @@ be_local_closure(Matter_Plugin_every_250ms, /* name */ /******************************************************************** -** Solidified function: get_endpoint +** Solidified function: contains_cluster ********************************************************************/ -be_local_closure(Matter_Plugin_get_endpoint, /* name */ +be_local_closure(Matter_Plugin_contains_cluster, /* name */ be_nested_proto( - 2, /* nstack */ - 1, /* argc */ + 5, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(contains), }), - be_str_weak(get_endpoint), + be_str_weak(contains_cluster), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -612,24 +687,34 @@ be_local_closure(Matter_Plugin_get_endpoint, /* name */ /******************************************************************** -** Solidified function: subscribe_attribute +** Solidified function: send_ack_now ********************************************************************/ -be_local_closure(Matter_Plugin_subscribe_attribute, /* name */ +be_local_closure(Matter_Plugin_send_ack_now, /* name */ be_nested_proto( - 6, /* nstack */ - 5, /* argc */ + 5, /* 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(subscribe_attribute), + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(message_handler), + /* K2 */ be_nested_str_weak(im), + /* K3 */ be_nested_str_weak(send_ack_now), + }), + be_str_weak(send_ack_now), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 + ( &(const binstruction[ 7]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080501, // 0001 GETMBR R2 R2 K1 + 0x88080502, // 0002 GETMBR R2 R2 K2 + 0x8C080503, // 0003 GETMET R2 R2 K3 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x80000000, // 0006 RET 0 }) ) ); @@ -637,24 +722,34 @@ be_local_closure(Matter_Plugin_subscribe_attribute, /* name */ /******************************************************************** -** Solidified function: timed_request +** Solidified function: attribute_updated ********************************************************************/ -be_local_closure(Matter_Plugin_timed_request, /* name */ +be_local_closure(Matter_Plugin_attribute_updated, /* name */ be_nested_proto( - 5, /* nstack */ + 10, /* nstack */ 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(timed_request), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(attribute_updated), + /* K2 */ be_nested_str_weak(endpoint), + }), + be_str_weak(attribute_updated), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 + ( &(const binstruction[ 8]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0x88180102, // 0002 GETMBR R6 R0 K2 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80000000, // 0007 RET 0 }) ) ); @@ -725,34 +820,51 @@ be_local_closure(Matter_Plugin_update_shadow_lazy, /* name */ /******************************************************************** -** Solidified function: attribute_updated +** Solidified function: ********************************************************************/ -be_local_closure(Matter_Plugin_attribute_updated, /* name */ +be_local_closure(Matter_Plugin__X3Clambda_X3E, /* name */ be_nested_proto( - 10, /* nstack */ + 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 */ + 0x60040008, // 0000 GETGBL R1 G8 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: timed_request +********************************************************************/ +be_local_closure(Matter_Plugin_timed_request, /* name */ + be_nested_proto( + 5, /* nstack */ 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(attribute_updated), - /* K2 */ be_nested_str_weak(endpoint), - }), - be_str_weak(attribute_updated), + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(timed_request), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x88180102, // 0002 GETMBR R6 R0 K2 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80000000, // 0007 RET 0 + ( &(const binstruction[ 2]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 }) ) ); @@ -760,9 +872,9 @@ be_local_closure(Matter_Plugin_attribute_updated, /* name */ /******************************************************************** -** Solidified function: read_event +** Solidified function: subscribe_event ********************************************************************/ -be_local_closure(Matter_Plugin_read_event, /* name */ +be_local_closure(Matter_Plugin_subscribe_event, /* name */ be_nested_proto( 6, /* nstack */ 5, /* argc */ @@ -773,7 +885,7 @@ be_local_closure(Matter_Plugin_read_event, /* name */ NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ - be_str_weak(read_event), + be_str_weak(subscribe_event), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x4C140000, // 0000 LDNIL R5 @@ -785,12 +897,12 @@ be_local_closure(Matter_Plugin_read_event, /* name */ /******************************************************************** -** Solidified function: get_attribute_list +** Solidified function: update_shadow ********************************************************************/ -be_local_closure(Matter_Plugin_get_attribute_list, /* name */ +be_local_closure(Matter_Plugin_update_shadow, /* name */ be_nested_proto( - 7, /* nstack */ - 3, /* argc */ + 2, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -798,19 +910,16 @@ be_local_closure(Matter_Plugin_get_attribute_list, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(find), + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_nested_str_weak(device), }), - be_str_weak(get_attribute_list), + be_str_weak(update_shadow), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140400, // 0002 MOVE R5 R2 - 0x60180012, // 0003 GETGBL R6 G18 - 0x7C180000, // 0004 CALL R6 0 - 0x7C0C0600, // 0005 CALL R3 3 - 0x80040600, // 0006 RET 1 R3 + ( &(const binstruction[ 4]) { /* code */ + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x88040300, // 0001 GETMBR R1 R1 K0 + 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x80000000, // 0003 RET 0 }) ) ); @@ -921,36 +1030,11 @@ be_local_closure(Matter_Plugin_consolidate_clusters, /* name */ /******************************************************************** -** Solidified function: is_local_device -********************************************************************/ -be_local_closure(Matter_Plugin_is_local_device, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(is_local_device), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x50040200, // 0000 LDBOOL R1 1 0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_ack_now +** Solidified function: get_attribute_list ********************************************************************/ -be_local_closure(Matter_Plugin_send_ack_now, /* name */ +be_local_closure(Matter_Plugin_get_attribute_list, /* name */ be_nested_proto( - 5, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -958,22 +1042,20 @@ be_local_closure(Matter_Plugin_send_ack_now, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(message_handler), - /* K2 */ be_nested_str_weak(im), - /* K3 */ be_nested_str_weak(send_ack_now), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(find), }), - be_str_weak(send_ack_now), + be_str_weak(get_attribute_list), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x88080502, // 0002 GETMBR R2 R2 K2 - 0x8C080503, // 0003 GETMET R2 R2 K3 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x80000000, // 0006 RET 0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x60140012, // 0003 GETGBL R5 G18 + 0x7C140000, // 0004 CALL R5 0 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 }) ) ); @@ -986,23 +1068,17 @@ be_local_closure(Matter_Plugin_send_ack_now, /* name */ be_local_class(Matter_Plugin, 5, NULL, - be_nested_map(35, + be_nested_map(37, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(send_ack_now, 22), be_const_closure(Matter_Plugin_send_ack_now_closure) }, - { be_const_key_weak(parse_sensors, -1), be_const_closure(Matter_Plugin_parse_sensors_closure) }, - { be_const_key_weak(get_cluster_list, -1), be_const_closure(Matter_Plugin_get_cluster_list_closure) }, - { be_const_key_weak(NAME, 19), be_nested_str_weak() }, - { be_const_key_weak(parse_configuration, 32), be_const_closure(Matter_Plugin_parse_configuration_closure) }, - { be_const_key_weak(ui_conf_to_string, 34), be_const_static_closure(Matter_Plugin_ui_conf_to_string_closure) }, - { be_const_key_weak(device, -1), be_const_var(1) }, - { be_const_key_weak(read_attribute, 18), be_const_closure(Matter_Plugin_read_attribute_closure) }, - { be_const_key_weak(update_next, -1), be_const_var(0) }, - { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(Matter_Plugin__X3Clambda_X3E_closure) }, - { be_const_key_weak(has, -1), be_const_closure(Matter_Plugin_has_closure) }, - { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, - { be_const_key_weak(subscribe_event, -1), be_const_closure(Matter_Plugin_subscribe_event_closure) }, - { be_const_key_weak(ui_string_to_conf, -1), be_const_static_closure(Matter_Plugin_ui_string_to_conf_closure) }, - { be_const_key_weak(CLUSTERS, 33), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_init_closure) }, + { be_const_key_weak(read_event, 8), be_const_closure(Matter_Plugin_read_event_closure) }, + { be_const_key_weak(tick, -1), be_const_var(4) }, + { be_const_key_weak(is_local_device, 18), be_const_closure(Matter_Plugin_is_local_device_closure) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, + { be_const_key_weak(get_attribute_list, -1), be_const_closure(Matter_Plugin_get_attribute_list_closure) }, + { be_const_key_weak(ui_conf_to_string, 28), be_const_static_closure(Matter_Plugin_ui_conf_to_string_closure) }, + { be_const_key_weak(every_250ms, -1), be_const_closure(Matter_Plugin_every_250ms_closure) }, + { be_const_key_weak(CLUSTERS, 36), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(2, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -1021,26 +1097,34 @@ be_local_class(Matter_Plugin, be_const_int(17), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(every_250ms, 0), be_const_closure(Matter_Plugin_every_250ms_closure) }, - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, + { be_const_key_weak(NAME, -1), be_nested_str_weak() }, + { be_const_key_weak(parse_sensors, -1), be_const_closure(Matter_Plugin_parse_sensors_closure) }, { be_const_key_weak(get_endpoint, -1), be_const_closure(Matter_Plugin_get_endpoint_closure) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_invoke_request_closure) }, - { be_const_key_weak(get_attribute_list, -1), be_const_closure(Matter_Plugin_get_attribute_list_closure) }, - { be_const_key_weak(tick, -1), be_const_var(4) }, + { be_const_key_weak(parse_configuration, -1), be_const_closure(Matter_Plugin_parse_configuration_closure) }, + { be_const_key_weak(ui_string_to_conf, -1), be_const_static_closure(Matter_Plugin_ui_string_to_conf_closure) }, + { be_const_key_weak(contains_cluster, -1), be_const_closure(Matter_Plugin_contains_cluster_closure) }, + { be_const_key_weak(attribute_updated, 11), be_const_closure(Matter_Plugin_attribute_updated_closure) }, + { be_const_key_weak(has, -1), be_const_closure(Matter_Plugin_has_closure) }, + { be_const_key_weak(device, 4), be_const_var(1) }, { be_const_key_weak(timed_request, -1), be_const_closure(Matter_Plugin_timed_request_closure) }, - { be_const_key_weak(read_event, -1), be_const_closure(Matter_Plugin_read_event_closure) }, - { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(Matter_Plugin_update_shadow_lazy_closure) }, - { be_const_key_weak(TYPE, 20), be_nested_str_weak() }, - { be_const_key_weak(write_attribute, 27), be_const_closure(Matter_Plugin_write_attribute_closure) }, + { be_const_key_weak(get_cluster_list, -1), be_const_closure(Matter_Plugin_get_cluster_list_closure) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_read_attribute_closure) }, + { be_const_key_weak(ARG, 14), be_nested_str_weak() }, + { be_const_key_weak(send_ack_now, -1), be_const_closure(Matter_Plugin_send_ack_now_closure) }, + { be_const_key_weak(subscribe_attribute, 26), be_const_closure(Matter_Plugin_subscribe_attribute_closure) }, { be_const_key_weak(clusters, -1), be_const_var(3) }, - { be_const_key_weak(attribute_updated, 11), be_const_closure(Matter_Plugin_attribute_updated_closure) }, + { be_const_key_weak(write_attribute, 24), be_const_closure(Matter_Plugin_write_attribute_closure) }, + { be_const_key_weak(ARG_TYPE, 15), be_const_static_closure(Matter_Plugin__X3Clambda_X3E_closure) }, + { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(Matter_Plugin_update_shadow_lazy_closure) }, + { be_const_key_weak(invoke_request, 30), be_const_closure(Matter_Plugin_invoke_request_closure) }, { be_const_key_weak(endpoint, -1), be_const_var(2) }, - { be_const_key_weak(ARG, 3), be_nested_str_weak() }, - { be_const_key_weak(consolidate_clusters, 8), be_const_closure(Matter_Plugin_consolidate_clusters_closure) }, - { be_const_key_weak(is_local_device, -1), be_const_closure(Matter_Plugin_is_local_device_closure) }, - { be_const_key_weak(subscribe_attribute, -1), be_const_closure(Matter_Plugin_subscribe_attribute_closure) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, + { be_const_key_weak(subscribe_event, -1), be_const_closure(Matter_Plugin_subscribe_event_closure) }, { be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_update_shadow_closure) }, - { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_init_closure) }, + { be_const_key_weak(consolidate_clusters, -1), be_const_closure(Matter_Plugin_consolidate_clusters_closure) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak() }, + { be_const_key_weak(update_next, 5), be_const_var(0) }, + { be_const_key_weak(contains_attribute, -1), be_const_closure(Matter_Plugin_contains_attribute_closure) }, })), be_str_weak(Matter_Plugin) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Aggregator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Aggregator.h index 79fc33df13c0..f681758cc658 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Aggregator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Aggregator.h @@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Aggregator; ********************************************************************/ be_local_closure(Matter_Plugin_Aggregator_read_attribute, /* name */ be_nested_proto( - 15, /* nstack */ - 3, /* argc */ + 16, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -35,60 +35,62 @@ be_local_closure(Matter_Plugin_Aggregator_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A001C, // 0004 LDINT R6 29 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0024, // 0006 JMPF R6 #002C - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A0019, // 0008 JMPF R6 #0023 - 0x8C180705, // 0009 GETMET R6 R3 K5 - 0x7C180200, // 000A CALL R6 1 - 0x881C0106, // 000B GETMBR R7 R0 K6 - 0x8C1C0F07, // 000C GETMET R7 R7 K7 - 0x50240200, // 000D LDBOOL R9 1 0 - 0x7C1C0400, // 000E CALL R7 2 - 0x60200010, // 000F GETGBL R8 G16 - 0x5C240E00, // 0010 MOVE R9 R7 - 0x7C200200, // 0011 CALL R8 1 + ( &(const binstruction[55]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E001C, // 0004 LDINT R7 29 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0025, // 0006 JMPF R7 #002D + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E0019, // 0008 JMPF R7 #0023 + 0x8C1C0905, // 0009 GETMET R7 R4 K5 + 0x7C1C0200, // 000A CALL R7 1 + 0x88200106, // 000B GETMBR R8 R0 K6 + 0x8C201107, // 000C GETMET R8 R8 K7 + 0x50280200, // 000D LDBOOL R10 1 0 + 0x7C200400, // 000E CALL R8 2 + 0x60240010, // 000F GETGBL R9 G16 + 0x5C281000, // 0010 MOVE R10 R8 + 0x7C240200, // 0011 CALL R9 1 0xA802000A, // 0012 EXBLK 0 #001E - 0x5C241000, // 0013 MOVE R9 R8 - 0x7C240000, // 0014 CALL R9 0 - 0x542AFEFF, // 0015 LDINT R10 65280 - 0x1428120A, // 0016 LT R10 R9 R10 - 0x782A0004, // 0017 JMPF R10 #001D - 0x8C280D08, // 0018 GETMET R10 R6 K8 - 0x4C300000, // 0019 LDNIL R12 - 0x88340709, // 001A GETMBR R13 R3 K9 - 0x5C381200, // 001B MOVE R14 R9 - 0x7C280800, // 001C CALL R10 4 + 0x5C281200, // 0013 MOVE R10 R9 + 0x7C280000, // 0014 CALL R10 0 + 0x542EFEFF, // 0015 LDINT R11 65280 + 0x142C140B, // 0016 LT R11 R10 R11 + 0x782E0004, // 0017 JMPF R11 #001D + 0x8C2C0F08, // 0018 GETMET R11 R7 K8 + 0x4C340000, // 0019 LDNIL R13 + 0x88380909, // 001A GETMBR R14 R4 K9 + 0x5C3C1400, // 001B MOVE R15 R10 + 0x7C2C0800, // 001C CALL R11 4 0x7001FFF4, // 001D JMP #0013 - 0x5820000A, // 001E LDCONST R8 K10 - 0xAC200200, // 001F CATCH R8 1 0 + 0x5824000A, // 001E LDCONST R9 K10 + 0xAC240200, // 001F CATCH R9 1 0 0xB0080000, // 0020 RAISE 2 R0 R0 - 0x80040C00, // 0021 RET 1 R6 - 0x70020007, // 0022 JMP #002B - 0x60180003, // 0023 GETGBL R6 G3 - 0x5C1C0000, // 0024 MOVE R7 R0 - 0x7C180200, // 0025 CALL R6 1 - 0x8C180D0B, // 0026 GETMET R6 R6 K11 - 0x5C200200, // 0027 MOVE R8 R1 - 0x5C240400, // 0028 MOVE R9 R2 - 0x7C180600, // 0029 CALL R6 3 - 0x80040C00, // 002A RET 1 R6 - 0x70020007, // 002B JMP #0034 - 0x60180003, // 002C GETGBL R6 G3 - 0x5C1C0000, // 002D MOVE R7 R0 - 0x7C180200, // 002E CALL R6 1 - 0x8C180D0B, // 002F GETMET R6 R6 K11 - 0x5C200200, // 0030 MOVE R8 R1 - 0x5C240400, // 0031 MOVE R9 R2 - 0x7C180600, // 0032 CALL R6 3 - 0x80040C00, // 0033 RET 1 R6 - 0x80000000, // 0034 RET 0 + 0x80040E00, // 0021 RET 1 R7 + 0x70020008, // 0022 JMP #002C + 0x601C0003, // 0023 GETGBL R7 G3 + 0x5C200000, // 0024 MOVE R8 R0 + 0x7C1C0200, // 0025 CALL R7 1 + 0x8C1C0F0B, // 0026 GETMET R7 R7 K11 + 0x5C240200, // 0027 MOVE R9 R1 + 0x5C280400, // 0028 MOVE R10 R2 + 0x5C2C0600, // 0029 MOVE R11 R3 + 0x7C1C0800, // 002A CALL R7 4 + 0x80040E00, // 002B RET 1 R7 + 0x70020008, // 002C JMP #0036 + 0x601C0003, // 002D GETGBL R7 G3 + 0x5C200000, // 002E MOVE R8 R0 + 0x7C1C0200, // 002F CALL R7 1 + 0x8C1C0F0B, // 0030 GETMET R7 R7 K11 + 0x5C240200, // 0031 MOVE R9 R1 + 0x5C280400, // 0032 MOVE R10 R2 + 0x5C2C0600, // 0033 MOVE R11 R3 + 0x7C1C0800, // 0034 CALL R7 4 + 0x80040E00, // 0035 RET 1 R7 + 0x80000000, // 0036 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_HTTP.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_HTTP.h index e35ae514d0f9..32305eea5475 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_HTTP.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_HTTP.h @@ -567,8 +567,8 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_web_values_prefix, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */ be_nested_proto( - 13, /* nstack */ - 3, /* argc */ + 14, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -586,7 +586,7 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */ /* K7 */ be_nested_str_weak(get_info), /* K8 */ be_nested_str_weak(find), /* K9 */ be_nested_str_weak(name), - /* K10 */ be_nested_str_weak(create_TLV), + /* K10 */ be_nested_str_weak(set), /* K11 */ be_nested_str_weak(UTF1), /* K12 */ be_nested_str_weak(NULL), /* K13 */ be_nested_str_weak(version), @@ -600,120 +600,122 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[113]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0038, // 0004 LDINT R6 57 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0060, // 0006 JMPF R6 #0068 - 0xA41A0800, // 0007 IMPORT R6 K4 - 0x1C1C0B05, // 0008 EQ R7 R5 K5 - 0x781E0012, // 0009 JMPF R7 #001D - 0x881C0106, // 000A GETMBR R7 R0 K6 - 0x8C1C0F07, // 000B GETMET R7 R7 K7 - 0x7C1C0200, // 000C CALL R7 1 - 0x8C1C0F08, // 000D GETMET R7 R7 K8 - 0x58240009, // 000E LDCONST R9 K9 - 0x7C1C0400, // 000F CALL R7 2 - 0x781E0005, // 0010 JMPF R7 #0017 - 0x8C20070A, // 0011 GETMET R8 R3 K10 - 0x8828070B, // 0012 GETMBR R10 R3 K11 - 0x5C2C0E00, // 0013 MOVE R11 R7 - 0x7C200600, // 0014 CALL R8 3 - 0x80041000, // 0015 RET 1 R8 + ( &(const binstruction[115]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0038, // 0004 LDINT R7 57 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0061, // 0006 JMPF R7 #0069 + 0xA41E0800, // 0007 IMPORT R7 K4 + 0x1C200D05, // 0008 EQ R8 R6 K5 + 0x78220012, // 0009 JMPF R8 #001D + 0x88200106, // 000A GETMBR R8 R0 K6 + 0x8C201107, // 000B GETMET R8 R8 K7 + 0x7C200200, // 000C CALL R8 1 + 0x8C201108, // 000D GETMET R8 R8 K8 + 0x58280009, // 000E LDCONST R10 K9 + 0x7C200400, // 000F CALL R8 2 + 0x78220005, // 0010 JMPF R8 #0017 + 0x8C24070A, // 0011 GETMET R9 R3 K10 + 0x882C090B, // 0012 GETMBR R11 R4 K11 + 0x5C301000, // 0013 MOVE R12 R8 + 0x7C240600, // 0014 CALL R9 3 + 0x80041200, // 0015 RET 1 R9 0x70020004, // 0016 JMP #001C - 0x8C20070A, // 0017 GETMET R8 R3 K10 - 0x8828070C, // 0018 GETMBR R10 R3 K12 - 0x4C2C0000, // 0019 LDNIL R11 - 0x7C200600, // 001A CALL R8 3 - 0x80041000, // 001B RET 1 R8 - 0x70020049, // 001C JMP #0067 - 0x541E0009, // 001D LDINT R7 10 - 0x1C1C0A07, // 001E EQ R7 R5 R7 - 0x781E001B, // 001F JMPF R7 #003C - 0x881C0106, // 0020 GETMBR R7 R0 K6 - 0x8C1C0F07, // 0021 GETMET R7 R7 K7 - 0x7C1C0200, // 0022 CALL R7 1 - 0x8C1C0F08, // 0023 GETMET R7 R7 K8 - 0x5824000D, // 0024 LDCONST R9 K13 - 0x7C1C0400, // 0025 CALL R7 2 - 0x781E000E, // 0026 JMPF R7 #0036 - 0x8C200D08, // 0027 GETMET R8 R6 K8 - 0x5C280E00, // 0028 MOVE R10 R7 - 0x582C000E, // 0029 LDCONST R11 K14 - 0x7C200600, // 002A CALL R8 3 - 0x2424110F, // 002B GT R9 R8 K15 - 0x78260002, // 002C JMPF R9 #0030 - 0x04241110, // 002D SUB R9 R8 K16 - 0x40261E09, // 002E CONNECT R9 K15 R9 - 0x941C0E09, // 002F GETIDX R7 R7 R9 - 0x8C24070A, // 0030 GETMET R9 R3 K10 - 0x882C070B, // 0031 GETMBR R11 R3 K11 - 0x5C300E00, // 0032 MOVE R12 R7 - 0x7C240600, // 0033 CALL R9 3 - 0x80041200, // 0034 RET 1 R9 + 0x8C24070A, // 0017 GETMET R9 R3 K10 + 0x882C090C, // 0018 GETMBR R11 R4 K12 + 0x4C300000, // 0019 LDNIL R12 + 0x7C240600, // 001A CALL R9 3 + 0x80041200, // 001B RET 1 R9 + 0x7002004A, // 001C JMP #0068 + 0x54220009, // 001D LDINT R8 10 + 0x1C200C08, // 001E EQ R8 R6 R8 + 0x7822001B, // 001F JMPF R8 #003C + 0x88200106, // 0020 GETMBR R8 R0 K6 + 0x8C201107, // 0021 GETMET R8 R8 K7 + 0x7C200200, // 0022 CALL R8 1 + 0x8C201108, // 0023 GETMET R8 R8 K8 + 0x5828000D, // 0024 LDCONST R10 K13 + 0x7C200400, // 0025 CALL R8 2 + 0x7822000E, // 0026 JMPF R8 #0036 + 0x8C240F08, // 0027 GETMET R9 R7 K8 + 0x5C2C1000, // 0028 MOVE R11 R8 + 0x5830000E, // 0029 LDCONST R12 K14 + 0x7C240600, // 002A CALL R9 3 + 0x2428130F, // 002B GT R10 R9 K15 + 0x782A0002, // 002C JMPF R10 #0030 + 0x04281310, // 002D SUB R10 R9 K16 + 0x402A1E0A, // 002E CONNECT R10 K15 R10 + 0x9420100A, // 002F GETIDX R8 R8 R10 + 0x8C28070A, // 0030 GETMET R10 R3 K10 + 0x8830090B, // 0031 GETMBR R12 R4 K11 + 0x5C341000, // 0032 MOVE R13 R8 + 0x7C280600, // 0033 CALL R10 3 + 0x80041400, // 0034 RET 1 R10 0x70020004, // 0035 JMP #003B - 0x8C20070A, // 0036 GETMET R8 R3 K10 - 0x8828070C, // 0037 GETMBR R10 R3 K12 - 0x4C2C0000, // 0038 LDNIL R11 - 0x7C200600, // 0039 CALL R8 3 - 0x80041000, // 003A RET 1 R8 - 0x7002002A, // 003B JMP #0067 - 0x541E000E, // 003C LDINT R7 15 - 0x1C1C0A07, // 003D EQ R7 R5 R7 - 0x741E0002, // 003E JMPT R7 #0042 - 0x541E0011, // 003F LDINT R7 18 - 0x1C1C0A07, // 0040 EQ R7 R5 R7 - 0x781E0012, // 0041 JMPF R7 #0055 - 0x881C0106, // 0042 GETMBR R7 R0 K6 - 0x8C1C0F07, // 0043 GETMET R7 R7 K7 - 0x7C1C0200, // 0044 CALL R7 1 - 0x8C1C0F08, // 0045 GETMET R7 R7 K8 - 0x58240011, // 0046 LDCONST R9 K17 - 0x7C1C0400, // 0047 CALL R7 2 - 0x781E0005, // 0048 JMPF R7 #004F - 0x8C20070A, // 0049 GETMET R8 R3 K10 - 0x8828070B, // 004A GETMBR R10 R3 K11 - 0x5C2C0E00, // 004B MOVE R11 R7 - 0x7C200600, // 004C CALL R8 3 - 0x80041000, // 004D RET 1 R8 + 0x8C24070A, // 0036 GETMET R9 R3 K10 + 0x882C090C, // 0037 GETMBR R11 R4 K12 + 0x4C300000, // 0038 LDNIL R12 + 0x7C240600, // 0039 CALL R9 3 + 0x80041200, // 003A RET 1 R9 + 0x7002002B, // 003B JMP #0068 + 0x5422000E, // 003C LDINT R8 15 + 0x1C200C08, // 003D EQ R8 R6 R8 + 0x74220002, // 003E JMPT R8 #0042 + 0x54220011, // 003F LDINT R8 18 + 0x1C200C08, // 0040 EQ R8 R6 R8 + 0x78220012, // 0041 JMPF R8 #0055 + 0x88200106, // 0042 GETMBR R8 R0 K6 + 0x8C201107, // 0043 GETMET R8 R8 K7 + 0x7C200200, // 0044 CALL R8 1 + 0x8C201108, // 0045 GETMET R8 R8 K8 + 0x58280011, // 0046 LDCONST R10 K17 + 0x7C200400, // 0047 CALL R8 2 + 0x78220005, // 0048 JMPF R8 #004F + 0x8C24070A, // 0049 GETMET R9 R3 K10 + 0x882C090B, // 004A GETMBR R11 R4 K11 + 0x5C301000, // 004B MOVE R12 R8 + 0x7C240600, // 004C CALL R9 3 + 0x80041200, // 004D RET 1 R9 0x70020004, // 004E JMP #0054 - 0x8C20070A, // 004F GETMET R8 R3 K10 - 0x8828070C, // 0050 GETMBR R10 R3 K12 - 0x4C2C0000, // 0051 LDNIL R11 - 0x7C200600, // 0052 CALL R8 3 - 0x80041000, // 0053 RET 1 R8 - 0x70020011, // 0054 JMP #0067 - 0x541E0010, // 0055 LDINT R7 17 - 0x1C1C0A07, // 0056 EQ R7 R5 R7 - 0x781E0006, // 0057 JMPF R7 #005F - 0x8C1C070A, // 0058 GETMET R7 R3 K10 - 0x88240712, // 0059 GETMBR R9 R3 K18 - 0x88280106, // 005A GETMBR R10 R0 K6 - 0x88281513, // 005B GETMBR R10 R10 K19 - 0x7C1C0600, // 005C CALL R7 3 - 0x80040E00, // 005D RET 1 R7 - 0x70020007, // 005E JMP #0067 - 0x601C0003, // 005F GETGBL R7 G3 - 0x5C200000, // 0060 MOVE R8 R0 - 0x7C1C0200, // 0061 CALL R7 1 - 0x8C1C0F14, // 0062 GETMET R7 R7 K20 - 0x5C240200, // 0063 MOVE R9 R1 - 0x5C280400, // 0064 MOVE R10 R2 - 0x7C1C0600, // 0065 CALL R7 3 - 0x80040E00, // 0066 RET 1 R7 - 0x70020007, // 0067 JMP #0070 - 0x60180003, // 0068 GETGBL R6 G3 - 0x5C1C0000, // 0069 MOVE R7 R0 - 0x7C180200, // 006A CALL R6 1 - 0x8C180D14, // 006B GETMET R6 R6 K20 - 0x5C200200, // 006C MOVE R8 R1 - 0x5C240400, // 006D MOVE R9 R2 - 0x7C180600, // 006E CALL R6 3 - 0x80040C00, // 006F RET 1 R6 - 0x80000000, // 0070 RET 0 + 0x8C24070A, // 004F GETMET R9 R3 K10 + 0x882C090C, // 0050 GETMBR R11 R4 K12 + 0x4C300000, // 0051 LDNIL R12 + 0x7C240600, // 0052 CALL R9 3 + 0x80041200, // 0053 RET 1 R9 + 0x70020012, // 0054 JMP #0068 + 0x54220010, // 0055 LDINT R8 17 + 0x1C200C08, // 0056 EQ R8 R6 R8 + 0x78220006, // 0057 JMPF R8 #005F + 0x8C20070A, // 0058 GETMET R8 R3 K10 + 0x88280912, // 0059 GETMBR R10 R4 K18 + 0x882C0106, // 005A GETMBR R11 R0 K6 + 0x882C1713, // 005B GETMBR R11 R11 K19 + 0x7C200600, // 005C CALL R8 3 + 0x80041000, // 005D RET 1 R8 + 0x70020008, // 005E JMP #0068 + 0x60200003, // 005F GETGBL R8 G3 + 0x5C240000, // 0060 MOVE R9 R0 + 0x7C200200, // 0061 CALL R8 1 + 0x8C201114, // 0062 GETMET R8 R8 K20 + 0x5C280200, // 0063 MOVE R10 R1 + 0x5C2C0400, // 0064 MOVE R11 R2 + 0x5C300600, // 0065 MOVE R12 R3 + 0x7C200800, // 0066 CALL R8 4 + 0x80041000, // 0067 RET 1 R8 + 0x70020008, // 0068 JMP #0072 + 0x601C0003, // 0069 GETGBL R7 G3 + 0x5C200000, // 006A MOVE R8 R0 + 0x7C1C0200, // 006B CALL R7 1 + 0x8C1C0F14, // 006C GETMET R7 R7 K20 + 0x5C240200, // 006D MOVE R9 R1 + 0x5C280400, // 006E MOVE R10 R2 + 0x5C2C0600, // 006F MOVE R11 R3 + 0x7C1C0800, // 0070 CALL R7 4 + 0x80040E00, // 0071 RET 1 R7 + 0x80000000, // 0072 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light0.h index 74131ca6d75f..635323adf6d9 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light0.h @@ -139,8 +139,8 @@ be_local_closure(Matter_Plugin_Bridge_Light0_init, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Bridge_Light0_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -154,7 +154,7 @@ be_local_closure(Matter_Plugin_Bridge_Light0_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_nested_str_weak(update_shadow_lazy), /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(BOOL), /* K8 */ be_nested_str_weak(shadow_onoff), /* K9 */ be_nested_str_weak(U4), @@ -162,51 +162,52 @@ be_local_closure(Matter_Plugin_Bridge_Light0_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0005, // 0004 LDINT R6 6 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A001B, // 0006 JMPF R6 #0023 - 0x8C180104, // 0007 GETMET R6 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x1C180B05, // 0009 EQ R6 R5 K5 - 0x781A0005, // 000A JMPF R6 #0011 - 0x8C180706, // 000B GETMET R6 R3 K6 - 0x88200707, // 000C GETMBR R8 R3 K7 - 0x88240108, // 000D GETMBR R9 R0 K8 - 0x7C180600, // 000E CALL R6 3 - 0x80040C00, // 000F RET 1 R6 + ( &(const binstruction[45]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0005, // 0004 LDINT R7 6 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E001B, // 0006 JMPF R7 #0023 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E0005, // 000A JMPF R7 #0011 + 0x8C1C0706, // 000B GETMET R7 R3 K6 + 0x88240907, // 000C GETMBR R9 R4 K7 + 0x88280108, // 000D GETMBR R10 R0 K8 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 0x70020010, // 0010 JMP #0022 - 0x541AFFFB, // 0011 LDINT R6 65532 - 0x1C180A06, // 0012 EQ R6 R5 R6 - 0x781A0005, // 0013 JMPF R6 #001A - 0x8C180706, // 0014 GETMET R6 R3 K6 - 0x88200709, // 0015 GETMBR R8 R3 K9 - 0x58240005, // 0016 LDCONST R9 K5 - 0x7C180600, // 0017 CALL R6 3 - 0x80040C00, // 0018 RET 1 R6 + 0x541EFFFB, // 0011 LDINT R7 65532 + 0x1C1C0C07, // 0012 EQ R7 R6 R7 + 0x781E0005, // 0013 JMPF R7 #001A + 0x8C1C0706, // 0014 GETMET R7 R3 K6 + 0x88240909, // 0015 GETMBR R9 R4 K9 + 0x58280005, // 0016 LDCONST R10 K5 + 0x7C1C0600, // 0017 CALL R7 3 + 0x80040E00, // 0018 RET 1 R7 0x70020007, // 0019 JMP #0022 - 0x541AFFFC, // 001A LDINT R6 65533 - 0x1C180A06, // 001B EQ R6 R5 R6 - 0x781A0004, // 001C JMPF R6 #0022 - 0x8C180706, // 001D GETMET R6 R3 K6 - 0x88200709, // 001E GETMBR R8 R3 K9 - 0x54260003, // 001F LDINT R9 4 - 0x7C180600, // 0020 CALL R6 3 - 0x80040C00, // 0021 RET 1 R6 - 0x70020007, // 0022 JMP #002B - 0x60180003, // 0023 GETGBL R6 G3 - 0x5C1C0000, // 0024 MOVE R7 R0 - 0x7C180200, // 0025 CALL R6 1 - 0x8C180D0A, // 0026 GETMET R6 R6 K10 - 0x5C200200, // 0027 MOVE R8 R1 - 0x5C240400, // 0028 MOVE R9 R2 - 0x7C180600, // 0029 CALL R6 3 - 0x80040C00, // 002A RET 1 R6 - 0x80000000, // 002B RET 0 + 0x541EFFFC, // 001A LDINT R7 65533 + 0x1C1C0C07, // 001B EQ R7 R6 R7 + 0x781E0004, // 001C JMPF R7 #0022 + 0x8C1C0706, // 001D GETMET R7 R3 K6 + 0x88240909, // 001E GETMBR R9 R4 K9 + 0x542A0003, // 001F LDINT R10 4 + 0x7C1C0600, // 0020 CALL R7 3 + 0x80040E00, // 0021 RET 1 R7 + 0x70020008, // 0022 JMP #002C + 0x601C0003, // 0023 GETGBL R7 G3 + 0x5C200000, // 0024 MOVE R8 R0 + 0x7C1C0200, // 0025 CALL R7 1 + 0x8C1C0F0A, // 0026 GETMET R7 R7 K10 + 0x5C240200, // 0027 MOVE R9 R1 + 0x5C280400, // 0028 MOVE R10 R2 + 0x5C2C0600, // 0029 MOVE R11 R3 + 0x7C1C0800, // 002A CALL R7 4 + 0x80040E00, // 002B RET 1 R7 + 0x80000000, // 002C RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light1.h index 13635eabaa4e..e14326c29626 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light1.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light1.h @@ -136,8 +136,8 @@ be_local_closure(Matter_Plugin_Bridge_Light1_invoke_request, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -152,7 +152,7 @@ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */ /* K4 */ be_nested_str_weak(update_shadow_lazy), /* K5 */ be_const_int(0), /* K6 */ be_nested_str_weak(shadow_bri), - /* K7 */ be_nested_str_weak(create_TLV), + /* K7 */ be_nested_str_weak(set), /* K8 */ be_nested_str_weak(U1), /* K9 */ be_nested_str_weak(NULL), /* K10 */ be_const_int(2), @@ -163,105 +163,106 @@ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[98]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0007, // 0004 LDINT R6 8 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0051, // 0006 JMPF R6 #0059 - 0x8C180104, // 0007 GETMET R6 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x1C180B05, // 0009 EQ R6 R5 K5 - 0x781A000F, // 000A JMPF R6 #001B - 0x88180106, // 000B GETMBR R6 R0 K6 - 0x4C1C0000, // 000C LDNIL R7 - 0x20180C07, // 000D NE R6 R6 R7 - 0x781A0005, // 000E JMPF R6 #0015 - 0x8C180707, // 000F GETMET R6 R3 K7 - 0x88200708, // 0010 GETMBR R8 R3 K8 - 0x88240106, // 0011 GETMBR R9 R0 K6 - 0x7C180600, // 0012 CALL R6 3 - 0x80040C00, // 0013 RET 1 R6 + ( &(const binstruction[99]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0007, // 0004 LDINT R7 8 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0051, // 0006 JMPF R7 #0059 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E000F, // 000A JMPF R7 #001B + 0x881C0106, // 000B GETMBR R7 R0 K6 + 0x4C200000, // 000C LDNIL R8 + 0x201C0E08, // 000D NE R7 R7 R8 + 0x781E0005, // 000E JMPF R7 #0015 + 0x8C1C0707, // 000F GETMET R7 R3 K7 + 0x88240908, // 0010 GETMBR R9 R4 K8 + 0x88280106, // 0011 GETMBR R10 R0 K6 + 0x7C1C0600, // 0012 CALL R7 3 + 0x80040E00, // 0013 RET 1 R7 0x70020004, // 0014 JMP #001A - 0x8C180707, // 0015 GETMET R6 R3 K7 - 0x88200709, // 0016 GETMBR R8 R3 K9 - 0x4C240000, // 0017 LDNIL R9 - 0x7C180600, // 0018 CALL R6 3 - 0x80040C00, // 0019 RET 1 R6 + 0x8C1C0707, // 0015 GETMET R7 R3 K7 + 0x88240909, // 0016 GETMBR R9 R4 K9 + 0x4C280000, // 0017 LDNIL R10 + 0x7C1C0600, // 0018 CALL R7 3 + 0x80040E00, // 0019 RET 1 R7 0x7002003C, // 001A JMP #0058 - 0x1C180B0A, // 001B EQ R6 R5 K10 - 0x781A0005, // 001C JMPF R6 #0023 - 0x8C180707, // 001D GETMET R6 R3 K7 - 0x88200708, // 001E GETMBR R8 R3 K8 - 0x58240005, // 001F LDCONST R9 K5 - 0x7C180600, // 0020 CALL R6 3 - 0x80040C00, // 0021 RET 1 R6 + 0x1C1C0D0A, // 001B EQ R7 R6 K10 + 0x781E0005, // 001C JMPF R7 #0023 + 0x8C1C0707, // 001D GETMET R7 R3 K7 + 0x88240908, // 001E GETMBR R9 R4 K8 + 0x58280005, // 001F LDCONST R10 K5 + 0x7C1C0600, // 0020 CALL R7 3 + 0x80040E00, // 0021 RET 1 R7 0x70020034, // 0022 JMP #0058 - 0x1C180B0B, // 0023 EQ R6 R5 K11 - 0x781A0005, // 0024 JMPF R6 #002B - 0x8C180707, // 0025 GETMET R6 R3 K7 - 0x88200708, // 0026 GETMBR R8 R3 K8 - 0x542600FD, // 0027 LDINT R9 254 - 0x7C180600, // 0028 CALL R6 3 - 0x80040C00, // 0029 RET 1 R6 + 0x1C1C0D0B, // 0023 EQ R7 R6 K11 + 0x781E0005, // 0024 JMPF R7 #002B + 0x8C1C0707, // 0025 GETMET R7 R3 K7 + 0x88240908, // 0026 GETMBR R9 R4 K8 + 0x542A00FD, // 0027 LDINT R10 254 + 0x7C1C0600, // 0028 CALL R7 3 + 0x80040E00, // 0029 RET 1 R7 0x7002002C, // 002A JMP #0058 - 0x541A000E, // 002B LDINT R6 15 - 0x1C180A06, // 002C EQ R6 R5 R6 - 0x781A0005, // 002D JMPF R6 #0034 - 0x8C180707, // 002E GETMET R6 R3 K7 - 0x88200708, // 002F GETMBR R8 R3 K8 - 0x58240005, // 0030 LDCONST R9 K5 - 0x7C180600, // 0031 CALL R6 3 - 0x80040C00, // 0032 RET 1 R6 + 0x541E000E, // 002B LDINT R7 15 + 0x1C1C0C07, // 002C EQ R7 R6 R7 + 0x781E0005, // 002D JMPF R7 #0034 + 0x8C1C0707, // 002E GETMET R7 R3 K7 + 0x88240908, // 002F GETMBR R9 R4 K8 + 0x58280005, // 0030 LDCONST R10 K5 + 0x7C1C0600, // 0031 CALL R7 3 + 0x80040E00, // 0032 RET 1 R7 0x70020023, // 0033 JMP #0058 - 0x541A0010, // 0034 LDINT R6 17 - 0x1C180A06, // 0035 EQ R6 R5 R6 - 0x781A000F, // 0036 JMPF R6 #0047 - 0x88180106, // 0037 GETMBR R6 R0 K6 - 0x4C1C0000, // 0038 LDNIL R7 - 0x20180C07, // 0039 NE R6 R6 R7 - 0x781A0005, // 003A JMPF R6 #0041 - 0x8C180707, // 003B GETMET R6 R3 K7 - 0x88200708, // 003C GETMBR R8 R3 K8 - 0x88240106, // 003D GETMBR R9 R0 K6 - 0x7C180600, // 003E CALL R6 3 - 0x80040C00, // 003F RET 1 R6 + 0x541E0010, // 0034 LDINT R7 17 + 0x1C1C0C07, // 0035 EQ R7 R6 R7 + 0x781E000F, // 0036 JMPF R7 #0047 + 0x881C0106, // 0037 GETMBR R7 R0 K6 + 0x4C200000, // 0038 LDNIL R8 + 0x201C0E08, // 0039 NE R7 R7 R8 + 0x781E0005, // 003A JMPF R7 #0041 + 0x8C1C0707, // 003B GETMET R7 R3 K7 + 0x88240908, // 003C GETMBR R9 R4 K8 + 0x88280106, // 003D GETMBR R10 R0 K6 + 0x7C1C0600, // 003E CALL R7 3 + 0x80040E00, // 003F RET 1 R7 0x70020004, // 0040 JMP #0046 - 0x8C180707, // 0041 GETMET R6 R3 K7 - 0x88200709, // 0042 GETMBR R8 R3 K9 - 0x4C240000, // 0043 LDNIL R9 - 0x7C180600, // 0044 CALL R6 3 - 0x80040C00, // 0045 RET 1 R6 + 0x8C1C0707, // 0041 GETMET R7 R3 K7 + 0x88240909, // 0042 GETMBR R9 R4 K9 + 0x4C280000, // 0043 LDNIL R10 + 0x7C1C0600, // 0044 CALL R7 3 + 0x80040E00, // 0045 RET 1 R7 0x70020010, // 0046 JMP #0058 - 0x541AFFFB, // 0047 LDINT R6 65532 - 0x1C180A06, // 0048 EQ R6 R5 R6 - 0x781A0005, // 0049 JMPF R6 #0050 - 0x8C180707, // 004A GETMET R6 R3 K7 - 0x8820070C, // 004B GETMBR R8 R3 K12 - 0x5824000D, // 004C LDCONST R9 K13 - 0x7C180600, // 004D CALL R6 3 - 0x80040C00, // 004E RET 1 R6 + 0x541EFFFB, // 0047 LDINT R7 65532 + 0x1C1C0C07, // 0048 EQ R7 R6 R7 + 0x781E0005, // 0049 JMPF R7 #0050 + 0x8C1C0707, // 004A GETMET R7 R3 K7 + 0x8824090C, // 004B GETMBR R9 R4 K12 + 0x5828000D, // 004C LDCONST R10 K13 + 0x7C1C0600, // 004D CALL R7 3 + 0x80040E00, // 004E RET 1 R7 0x70020007, // 004F JMP #0058 - 0x541AFFFC, // 0050 LDINT R6 65533 - 0x1C180A06, // 0051 EQ R6 R5 R6 - 0x781A0004, // 0052 JMPF R6 #0058 - 0x8C180707, // 0053 GETMET R6 R3 K7 - 0x8820070C, // 0054 GETMBR R8 R3 K12 - 0x54260004, // 0055 LDINT R9 5 - 0x7C180600, // 0056 CALL R6 3 - 0x80040C00, // 0057 RET 1 R6 - 0x70020007, // 0058 JMP #0061 - 0x60180003, // 0059 GETGBL R6 G3 - 0x5C1C0000, // 005A MOVE R7 R0 - 0x7C180200, // 005B CALL R6 1 - 0x8C180D0E, // 005C GETMET R6 R6 K14 - 0x5C200200, // 005D MOVE R8 R1 - 0x5C240400, // 005E MOVE R9 R2 - 0x7C180600, // 005F CALL R6 3 - 0x80040C00, // 0060 RET 1 R6 - 0x80000000, // 0061 RET 0 + 0x541EFFFC, // 0050 LDINT R7 65533 + 0x1C1C0C07, // 0051 EQ R7 R6 R7 + 0x781E0004, // 0052 JMPF R7 #0058 + 0x8C1C0707, // 0053 GETMET R7 R3 K7 + 0x8824090C, // 0054 GETMBR R9 R4 K12 + 0x542A0004, // 0055 LDINT R10 5 + 0x7C1C0600, // 0056 CALL R7 3 + 0x80040E00, // 0057 RET 1 R7 + 0x70020008, // 0058 JMP #0062 + 0x601C0003, // 0059 GETGBL R7 G3 + 0x5C200000, // 005A MOVE R8 R0 + 0x7C1C0200, // 005B CALL R7 1 + 0x8C1C0F0E, // 005C GETMET R7 R7 K14 + 0x5C240200, // 005D MOVE R9 R1 + 0x5C280400, // 005E MOVE R10 R2 + 0x5C2C0600, // 005F MOVE R11 R3 + 0x7C1C0800, // 0060 CALL R7 4 + 0x80040E00, // 0061 RET 1 R7 + 0x80000000, // 0062 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light2.h index ca2c968797b1..1dc7e126f312 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light2.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light2.h @@ -391,8 +391,8 @@ be_local_closure(Matter_Plugin_Bridge_Light2_update_ct_minmax, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -406,7 +406,7 @@ be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_nested_str_weak(update_shadow_lazy), /* K5 */ be_nested_str_weak(shadow_ct), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(U1), /* K8 */ be_nested_str_weak(NULL), /* K9 */ be_const_int(2), @@ -418,107 +418,108 @@ be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[100]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A02FF, // 0004 LDINT R6 768 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0053, // 0006 JMPF R6 #005B - 0x8C180104, // 0007 GETMET R6 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x541A0006, // 0009 LDINT R6 7 - 0x1C180A06, // 000A EQ R6 R5 R6 - 0x781A000F, // 000B JMPF R6 #001C - 0x88180105, // 000C GETMBR R6 R0 K5 - 0x4C1C0000, // 000D LDNIL R7 - 0x20180C07, // 000E NE R6 R6 R7 - 0x781A0005, // 000F JMPF R6 #0016 - 0x8C180706, // 0010 GETMET R6 R3 K6 - 0x88200707, // 0011 GETMBR R8 R3 K7 - 0x88240105, // 0012 GETMBR R9 R0 K5 - 0x7C180600, // 0013 CALL R6 3 - 0x80040C00, // 0014 RET 1 R6 + ( &(const binstruction[101]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E02FF, // 0004 LDINT R7 768 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0053, // 0006 JMPF R7 #005B + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x541E0006, // 0009 LDINT R7 7 + 0x1C1C0C07, // 000A EQ R7 R6 R7 + 0x781E000F, // 000B JMPF R7 #001C + 0x881C0105, // 000C GETMBR R7 R0 K5 + 0x4C200000, // 000D LDNIL R8 + 0x201C0E08, // 000E NE R7 R7 R8 + 0x781E0005, // 000F JMPF R7 #0016 + 0x8C1C0706, // 0010 GETMET R7 R3 K6 + 0x88240907, // 0011 GETMBR R9 R4 K7 + 0x88280105, // 0012 GETMBR R10 R0 K5 + 0x7C1C0600, // 0013 CALL R7 3 + 0x80040E00, // 0014 RET 1 R7 0x70020004, // 0015 JMP #001B - 0x8C180706, // 0016 GETMET R6 R3 K6 - 0x88200708, // 0017 GETMBR R8 R3 K8 - 0x4C240000, // 0018 LDNIL R9 - 0x7C180600, // 0019 CALL R6 3 - 0x80040C00, // 001A RET 1 R6 + 0x8C1C0706, // 0016 GETMET R7 R3 K6 + 0x88240908, // 0017 GETMBR R9 R4 K8 + 0x4C280000, // 0018 LDNIL R10 + 0x7C1C0600, // 0019 CALL R7 3 + 0x80040E00, // 001A RET 1 R7 0x7002003D, // 001B JMP #005A - 0x541A0007, // 001C LDINT R6 8 - 0x1C180A06, // 001D EQ R6 R5 R6 - 0x781A0005, // 001E JMPF R6 #0025 - 0x8C180706, // 001F GETMET R6 R3 K6 - 0x88200707, // 0020 GETMBR R8 R3 K7 - 0x58240009, // 0021 LDCONST R9 K9 - 0x7C180600, // 0022 CALL R6 3 - 0x80040C00, // 0023 RET 1 R6 + 0x541E0007, // 001C LDINT R7 8 + 0x1C1C0C07, // 001D EQ R7 R6 R7 + 0x781E0005, // 001E JMPF R7 #0025 + 0x8C1C0706, // 001F GETMET R7 R3 K6 + 0x88240907, // 0020 GETMBR R9 R4 K7 + 0x58280009, // 0021 LDCONST R10 K9 + 0x7C1C0600, // 0022 CALL R7 3 + 0x80040E00, // 0023 RET 1 R7 0x70020034, // 0024 JMP #005A - 0x541A000E, // 0025 LDINT R6 15 - 0x1C180A06, // 0026 EQ R6 R5 R6 - 0x781A0005, // 0027 JMPF R6 #002E - 0x8C180706, // 0028 GETMET R6 R3 K6 - 0x88200707, // 0029 GETMBR R8 R3 K7 - 0x5824000A, // 002A LDCONST R9 K10 - 0x7C180600, // 002B CALL R6 3 - 0x80040C00, // 002C RET 1 R6 + 0x541E000E, // 0025 LDINT R7 15 + 0x1C1C0C07, // 0026 EQ R7 R6 R7 + 0x781E0005, // 0027 JMPF R7 #002E + 0x8C1C0706, // 0028 GETMET R7 R3 K6 + 0x88240907, // 0029 GETMBR R9 R4 K7 + 0x5828000A, // 002A LDCONST R10 K10 + 0x7C1C0600, // 002B CALL R7 3 + 0x80040E00, // 002C RET 1 R7 0x7002002B, // 002D JMP #005A - 0x541A400A, // 002E LDINT R6 16395 - 0x1C180A06, // 002F EQ R6 R5 R6 - 0x781A0005, // 0030 JMPF R6 #0037 - 0x8C180706, // 0031 GETMET R6 R3 K6 - 0x88200707, // 0032 GETMBR R8 R3 K7 - 0x8824010B, // 0033 GETMBR R9 R0 K11 - 0x7C180600, // 0034 CALL R6 3 - 0x80040C00, // 0035 RET 1 R6 + 0x541E400A, // 002E LDINT R7 16395 + 0x1C1C0C07, // 002F EQ R7 R6 R7 + 0x781E0005, // 0030 JMPF R7 #0037 + 0x8C1C0706, // 0031 GETMET R7 R3 K6 + 0x88240907, // 0032 GETMBR R9 R4 K7 + 0x8828010B, // 0033 GETMBR R10 R0 K11 + 0x7C1C0600, // 0034 CALL R7 3 + 0x80040E00, // 0035 RET 1 R7 0x70020022, // 0036 JMP #005A - 0x541A400B, // 0037 LDINT R6 16396 - 0x1C180A06, // 0038 EQ R6 R5 R6 - 0x781A0005, // 0039 JMPF R6 #0040 - 0x8C180706, // 003A GETMET R6 R3 K6 - 0x88200707, // 003B GETMBR R8 R3 K7 - 0x8824010C, // 003C GETMBR R9 R0 K12 - 0x7C180600, // 003D CALL R6 3 - 0x80040C00, // 003E RET 1 R6 + 0x541E400B, // 0037 LDINT R7 16396 + 0x1C1C0C07, // 0038 EQ R7 R6 R7 + 0x781E0005, // 0039 JMPF R7 #0040 + 0x8C1C0706, // 003A GETMET R7 R3 K6 + 0x88240907, // 003B GETMBR R9 R4 K7 + 0x8828010C, // 003C GETMBR R10 R0 K12 + 0x7C1C0600, // 003D CALL R7 3 + 0x80040E00, // 003E RET 1 R7 0x70020019, // 003F JMP #005A - 0x541A4009, // 0040 LDINT R6 16394 - 0x1C180A06, // 0041 EQ R6 R5 R6 - 0x781A0005, // 0042 JMPF R6 #0049 - 0x8C180706, // 0043 GETMET R6 R3 K6 - 0x8820070D, // 0044 GETMBR R8 R3 K13 - 0x5426000F, // 0045 LDINT R9 16 - 0x7C180600, // 0046 CALL R6 3 - 0x80040C00, // 0047 RET 1 R6 + 0x541E4009, // 0040 LDINT R7 16394 + 0x1C1C0C07, // 0041 EQ R7 R6 R7 + 0x781E0005, // 0042 JMPF R7 #0049 + 0x8C1C0706, // 0043 GETMET R7 R3 K6 + 0x8824090D, // 0044 GETMBR R9 R4 K13 + 0x542A000F, // 0045 LDINT R10 16 + 0x7C1C0600, // 0046 CALL R7 3 + 0x80040E00, // 0047 RET 1 R7 0x70020010, // 0048 JMP #005A - 0x541AFFFB, // 0049 LDINT R6 65532 - 0x1C180A06, // 004A EQ R6 R5 R6 - 0x781A0005, // 004B JMPF R6 #0052 - 0x8C180706, // 004C GETMET R6 R3 K6 - 0x8820070D, // 004D GETMBR R8 R3 K13 - 0x5426000F, // 004E LDINT R9 16 - 0x7C180600, // 004F CALL R6 3 - 0x80040C00, // 0050 RET 1 R6 + 0x541EFFFB, // 0049 LDINT R7 65532 + 0x1C1C0C07, // 004A EQ R7 R6 R7 + 0x781E0005, // 004B JMPF R7 #0052 + 0x8C1C0706, // 004C GETMET R7 R3 K6 + 0x8824090D, // 004D GETMBR R9 R4 K13 + 0x542A000F, // 004E LDINT R10 16 + 0x7C1C0600, // 004F CALL R7 3 + 0x80040E00, // 0050 RET 1 R7 0x70020007, // 0051 JMP #005A - 0x541AFFFC, // 0052 LDINT R6 65533 - 0x1C180A06, // 0053 EQ R6 R5 R6 - 0x781A0004, // 0054 JMPF R6 #005A - 0x8C180706, // 0055 GETMET R6 R3 K6 - 0x8820070D, // 0056 GETMBR R8 R3 K13 - 0x54260004, // 0057 LDINT R9 5 - 0x7C180600, // 0058 CALL R6 3 - 0x80040C00, // 0059 RET 1 R6 - 0x70020007, // 005A JMP #0063 - 0x60180003, // 005B GETGBL R6 G3 - 0x5C1C0000, // 005C MOVE R7 R0 - 0x7C180200, // 005D CALL R6 1 - 0x8C180D0E, // 005E GETMET R6 R6 K14 - 0x5C200200, // 005F MOVE R8 R1 - 0x5C240400, // 0060 MOVE R9 R2 - 0x7C180600, // 0061 CALL R6 3 - 0x80040C00, // 0062 RET 1 R6 - 0x80000000, // 0063 RET 0 + 0x541EFFFC, // 0052 LDINT R7 65533 + 0x1C1C0C07, // 0053 EQ R7 R6 R7 + 0x781E0004, // 0054 JMPF R7 #005A + 0x8C1C0706, // 0055 GETMET R7 R3 K6 + 0x8824090D, // 0056 GETMBR R9 R4 K13 + 0x542A0004, // 0057 LDINT R10 5 + 0x7C1C0600, // 0058 CALL R7 3 + 0x80040E00, // 0059 RET 1 R7 + 0x70020008, // 005A JMP #0064 + 0x601C0003, // 005B GETGBL R7 G3 + 0x5C200000, // 005C MOVE R8 R0 + 0x7C1C0200, // 005D CALL R7 1 + 0x8C1C0F0E, // 005E GETMET R7 R7 K14 + 0x5C240200, // 005F MOVE R9 R1 + 0x5C280400, // 0060 MOVE R10 R2 + 0x5C2C0600, // 0061 MOVE R11 R3 + 0x7C1C0800, // 0062 CALL R7 4 + 0x80040E00, // 0063 RET 1 R7 + 0x80000000, // 0064 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light3.h index e73b1bd35279..f5cd9c4aeb96 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light3.h @@ -445,8 +445,8 @@ be_local_closure(Matter_Plugin_Bridge_Light3_invoke_request, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -461,7 +461,7 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */ /* K4 */ be_nested_str_weak(update_shadow_lazy), /* K5 */ be_const_int(0), /* K6 */ be_nested_str_weak(shadow_hue), - /* K7 */ be_nested_str_weak(create_TLV), + /* K7 */ be_nested_str_weak(set), /* K8 */ be_nested_str_weak(U1), /* K9 */ be_nested_str_weak(NULL), /* K10 */ be_const_int(1), @@ -471,133 +471,134 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[126]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A02FF, // 0004 LDINT R6 768 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A006D, // 0006 JMPF R6 #0075 - 0x8C180104, // 0007 GETMET R6 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x1C180B05, // 0009 EQ R6 R5 K5 - 0x781A000F, // 000A JMPF R6 #001B - 0x88180106, // 000B GETMBR R6 R0 K6 - 0x4C1C0000, // 000C LDNIL R7 - 0x20180C07, // 000D NE R6 R6 R7 - 0x781A0005, // 000E JMPF R6 #0015 - 0x8C180707, // 000F GETMET R6 R3 K7 - 0x88200708, // 0010 GETMBR R8 R3 K8 - 0x88240106, // 0011 GETMBR R9 R0 K6 - 0x7C180600, // 0012 CALL R6 3 - 0x80040C00, // 0013 RET 1 R6 + ( &(const binstruction[127]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E02FF, // 0004 LDINT R7 768 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E006D, // 0006 JMPF R7 #0075 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E000F, // 000A JMPF R7 #001B + 0x881C0106, // 000B GETMBR R7 R0 K6 + 0x4C200000, // 000C LDNIL R8 + 0x201C0E08, // 000D NE R7 R7 R8 + 0x781E0005, // 000E JMPF R7 #0015 + 0x8C1C0707, // 000F GETMET R7 R3 K7 + 0x88240908, // 0010 GETMBR R9 R4 K8 + 0x88280106, // 0011 GETMBR R10 R0 K6 + 0x7C1C0600, // 0012 CALL R7 3 + 0x80040E00, // 0013 RET 1 R7 0x70020004, // 0014 JMP #001A - 0x8C180707, // 0015 GETMET R6 R3 K7 - 0x88200709, // 0016 GETMBR R8 R3 K9 - 0x4C240000, // 0017 LDNIL R9 - 0x7C180600, // 0018 CALL R6 3 - 0x80040C00, // 0019 RET 1 R6 + 0x8C1C0707, // 0015 GETMET R7 R3 K7 + 0x88240909, // 0016 GETMBR R9 R4 K9 + 0x4C280000, // 0017 LDNIL R10 + 0x7C1C0600, // 0018 CALL R7 3 + 0x80040E00, // 0019 RET 1 R7 0x70020058, // 001A JMP #0074 - 0x1C180B0A, // 001B EQ R6 R5 K10 - 0x781A000F, // 001C JMPF R6 #002D - 0x8818010B, // 001D GETMBR R6 R0 K11 - 0x4C1C0000, // 001E LDNIL R7 - 0x20180C07, // 001F NE R6 R6 R7 - 0x781A0005, // 0020 JMPF R6 #0027 - 0x8C180707, // 0021 GETMET R6 R3 K7 - 0x88200708, // 0022 GETMBR R8 R3 K8 - 0x8824010B, // 0023 GETMBR R9 R0 K11 - 0x7C180600, // 0024 CALL R6 3 - 0x80040C00, // 0025 RET 1 R6 + 0x1C1C0D0A, // 001B EQ R7 R6 K10 + 0x781E000F, // 001C JMPF R7 #002D + 0x881C010B, // 001D GETMBR R7 R0 K11 + 0x4C200000, // 001E LDNIL R8 + 0x201C0E08, // 001F NE R7 R7 R8 + 0x781E0005, // 0020 JMPF R7 #0027 + 0x8C1C0707, // 0021 GETMET R7 R3 K7 + 0x88240908, // 0022 GETMBR R9 R4 K8 + 0x8828010B, // 0023 GETMBR R10 R0 K11 + 0x7C1C0600, // 0024 CALL R7 3 + 0x80040E00, // 0025 RET 1 R7 0x70020004, // 0026 JMP #002C - 0x8C180707, // 0027 GETMET R6 R3 K7 - 0x88200709, // 0028 GETMBR R8 R3 K9 - 0x4C240000, // 0029 LDNIL R9 - 0x7C180600, // 002A CALL R6 3 - 0x80040C00, // 002B RET 1 R6 + 0x8C1C0707, // 0027 GETMET R7 R3 K7 + 0x88240909, // 0028 GETMBR R9 R4 K9 + 0x4C280000, // 0029 LDNIL R10 + 0x7C1C0600, // 002A CALL R7 3 + 0x80040E00, // 002B RET 1 R7 0x70020046, // 002C JMP #0074 - 0x541A0006, // 002D LDINT R6 7 - 0x1C180A06, // 002E EQ R6 R5 R6 - 0x781A0005, // 002F JMPF R6 #0036 - 0x8C180707, // 0030 GETMET R6 R3 K7 - 0x88200708, // 0031 GETMBR R8 R3 K8 - 0x58240005, // 0032 LDCONST R9 K5 - 0x7C180600, // 0033 CALL R6 3 - 0x80040C00, // 0034 RET 1 R6 + 0x541E0006, // 002D LDINT R7 7 + 0x1C1C0C07, // 002E EQ R7 R6 R7 + 0x781E0005, // 002F JMPF R7 #0036 + 0x8C1C0707, // 0030 GETMET R7 R3 K7 + 0x88240908, // 0031 GETMBR R9 R4 K8 + 0x58280005, // 0032 LDCONST R10 K5 + 0x7C1C0600, // 0033 CALL R7 3 + 0x80040E00, // 0034 RET 1 R7 0x7002003D, // 0035 JMP #0074 - 0x541A0007, // 0036 LDINT R6 8 - 0x1C180A06, // 0037 EQ R6 R5 R6 - 0x781A0005, // 0038 JMPF R6 #003F - 0x8C180707, // 0039 GETMET R6 R3 K7 - 0x88200708, // 003A GETMBR R8 R3 K8 - 0x58240005, // 003B LDCONST R9 K5 - 0x7C180600, // 003C CALL R6 3 - 0x80040C00, // 003D RET 1 R6 + 0x541E0007, // 0036 LDINT R7 8 + 0x1C1C0C07, // 0037 EQ R7 R6 R7 + 0x781E0005, // 0038 JMPF R7 #003F + 0x8C1C0707, // 0039 GETMET R7 R3 K7 + 0x88240908, // 003A GETMBR R9 R4 K8 + 0x58280005, // 003B LDCONST R10 K5 + 0x7C1C0600, // 003C CALL R7 3 + 0x80040E00, // 003D RET 1 R7 0x70020034, // 003E JMP #0074 - 0x541A000E, // 003F LDINT R6 15 - 0x1C180A06, // 0040 EQ R6 R5 R6 - 0x781A0005, // 0041 JMPF R6 #0048 - 0x8C180707, // 0042 GETMET R6 R3 K7 - 0x88200708, // 0043 GETMBR R8 R3 K8 - 0x58240005, // 0044 LDCONST R9 K5 - 0x7C180600, // 0045 CALL R6 3 - 0x80040C00, // 0046 RET 1 R6 + 0x541E000E, // 003F LDINT R7 15 + 0x1C1C0C07, // 0040 EQ R7 R6 R7 + 0x781E0005, // 0041 JMPF R7 #0048 + 0x8C1C0707, // 0042 GETMET R7 R3 K7 + 0x88240908, // 0043 GETMBR R9 R4 K8 + 0x58280005, // 0044 LDCONST R10 K5 + 0x7C1C0600, // 0045 CALL R7 3 + 0x80040E00, // 0046 RET 1 R7 0x7002002B, // 0047 JMP #0074 - 0x541A4000, // 0048 LDINT R6 16385 - 0x1C180A06, // 0049 EQ R6 R5 R6 - 0x781A0005, // 004A JMPF R6 #0051 - 0x8C180707, // 004B GETMET R6 R3 K7 - 0x88200708, // 004C GETMBR R8 R3 K8 - 0x58240005, // 004D LDCONST R9 K5 - 0x7C180600, // 004E CALL R6 3 - 0x80040C00, // 004F RET 1 R6 + 0x541E4000, // 0048 LDINT R7 16385 + 0x1C1C0C07, // 0049 EQ R7 R6 R7 + 0x781E0005, // 004A JMPF R7 #0051 + 0x8C1C0707, // 004B GETMET R7 R3 K7 + 0x88240908, // 004C GETMBR R9 R4 K8 + 0x58280005, // 004D LDCONST R10 K5 + 0x7C1C0600, // 004E CALL R7 3 + 0x80040E00, // 004F RET 1 R7 0x70020022, // 0050 JMP #0074 - 0x541A4009, // 0051 LDINT R6 16394 - 0x1C180A06, // 0052 EQ R6 R5 R6 - 0x781A0005, // 0053 JMPF R6 #005A - 0x8C180707, // 0054 GETMET R6 R3 K7 - 0x8820070C, // 0055 GETMBR R8 R3 K12 - 0x5824000A, // 0056 LDCONST R9 K10 - 0x7C180600, // 0057 CALL R6 3 - 0x80040C00, // 0058 RET 1 R6 + 0x541E4009, // 0051 LDINT R7 16394 + 0x1C1C0C07, // 0052 EQ R7 R6 R7 + 0x781E0005, // 0053 JMPF R7 #005A + 0x8C1C0707, // 0054 GETMET R7 R3 K7 + 0x8824090C, // 0055 GETMBR R9 R4 K12 + 0x5828000A, // 0056 LDCONST R10 K10 + 0x7C1C0600, // 0057 CALL R7 3 + 0x80040E00, // 0058 RET 1 R7 0x70020019, // 0059 JMP #0074 - 0x541A000F, // 005A LDINT R6 16 - 0x1C180A06, // 005B EQ R6 R5 R6 - 0x781A0005, // 005C JMPF R6 #0063 - 0x8C180707, // 005D GETMET R6 R3 K7 - 0x88200708, // 005E GETMBR R8 R3 K8 - 0x58240005, // 005F LDCONST R9 K5 - 0x7C180600, // 0060 CALL R6 3 - 0x80040C00, // 0061 RET 1 R6 + 0x541E000F, // 005A LDINT R7 16 + 0x1C1C0C07, // 005B EQ R7 R6 R7 + 0x781E0005, // 005C JMPF R7 #0063 + 0x8C1C0707, // 005D GETMET R7 R3 K7 + 0x88240908, // 005E GETMBR R9 R4 K8 + 0x58280005, // 005F LDCONST R10 K5 + 0x7C1C0600, // 0060 CALL R7 3 + 0x80040E00, // 0061 RET 1 R7 0x70020010, // 0062 JMP #0074 - 0x541AFFFB, // 0063 LDINT R6 65532 - 0x1C180A06, // 0064 EQ R6 R5 R6 - 0x781A0005, // 0065 JMPF R6 #006C - 0x8C180707, // 0066 GETMET R6 R3 K7 - 0x8820070C, // 0067 GETMBR R8 R3 K12 - 0x5824000A, // 0068 LDCONST R9 K10 - 0x7C180600, // 0069 CALL R6 3 - 0x80040C00, // 006A RET 1 R6 + 0x541EFFFB, // 0063 LDINT R7 65532 + 0x1C1C0C07, // 0064 EQ R7 R6 R7 + 0x781E0005, // 0065 JMPF R7 #006C + 0x8C1C0707, // 0066 GETMET R7 R3 K7 + 0x8824090C, // 0067 GETMBR R9 R4 K12 + 0x5828000A, // 0068 LDCONST R10 K10 + 0x7C1C0600, // 0069 CALL R7 3 + 0x80040E00, // 006A RET 1 R7 0x70020007, // 006B JMP #0074 - 0x541AFFFC, // 006C LDINT R6 65533 - 0x1C180A06, // 006D EQ R6 R5 R6 - 0x781A0004, // 006E JMPF R6 #0074 - 0x8C180707, // 006F GETMET R6 R3 K7 - 0x8820070C, // 0070 GETMBR R8 R3 K12 - 0x54260004, // 0071 LDINT R9 5 - 0x7C180600, // 0072 CALL R6 3 - 0x80040C00, // 0073 RET 1 R6 - 0x70020007, // 0074 JMP #007D - 0x60180003, // 0075 GETGBL R6 G3 - 0x5C1C0000, // 0076 MOVE R7 R0 - 0x7C180200, // 0077 CALL R6 1 - 0x8C180D0D, // 0078 GETMET R6 R6 K13 - 0x5C200200, // 0079 MOVE R8 R1 - 0x5C240400, // 007A MOVE R9 R2 - 0x7C180600, // 007B CALL R6 3 - 0x80040C00, // 007C RET 1 R6 - 0x80000000, // 007D RET 0 + 0x541EFFFC, // 006C LDINT R7 65533 + 0x1C1C0C07, // 006D EQ R7 R6 R7 + 0x781E0004, // 006E JMPF R7 #0074 + 0x8C1C0707, // 006F GETMET R7 R3 K7 + 0x8824090C, // 0070 GETMBR R9 R4 K12 + 0x542A0004, // 0071 LDINT R10 5 + 0x7C1C0600, // 0072 CALL R7 3 + 0x80040E00, // 0073 RET 1 R7 + 0x70020008, // 0074 JMP #007E + 0x601C0003, // 0075 GETGBL R7 G3 + 0x5C200000, // 0076 MOVE R8 R0 + 0x7C1C0200, // 0077 CALL R7 1 + 0x8C1C0F0D, // 0078 GETMET R7 R7 K13 + 0x5C240200, // 0079 MOVE R9 R1 + 0x5C280400, // 007A MOVE R10 R2 + 0x5C2C0600, // 007B MOVE R11 R3 + 0x7C1C0800, // 007C CALL R7 4 + 0x80040E00, // 007D RET 1 R7 + 0x80000000, // 007E RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Contact.h index 7cbc1c9a3f99..00465b9d9bff 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Contact.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Contact.h @@ -201,8 +201,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_parse_update, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -216,7 +216,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name * /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(shadow_contact), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(BOOL), /* K8 */ be_nested_str_weak(NULL), /* K9 */ be_nested_str_weak(U4), @@ -225,59 +225,60 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name * }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0044, // 0004 LDINT R6 69 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0023, // 0006 JMPF R6 #002B - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A000F, // 0008 JMPF R6 #0019 - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x4C1C0000, // 000A LDNIL R7 - 0x20180C07, // 000B NE R6 R6 R7 - 0x781A0005, // 000C JMPF R6 #0013 - 0x8C180706, // 000D GETMET R6 R3 K6 - 0x88200707, // 000E GETMBR R8 R3 K7 - 0x88240105, // 000F GETMBR R9 R0 K5 - 0x7C180600, // 0010 CALL R6 3 - 0x80040C00, // 0011 RET 1 R6 + ( &(const binstruction[53]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0044, // 0004 LDINT R7 69 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0023, // 0006 JMPF R7 #002B + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E000F, // 0008 JMPF R7 #0019 + 0x881C0105, // 0009 GETMBR R7 R0 K5 + 0x4C200000, // 000A LDNIL R8 + 0x201C0E08, // 000B NE R7 R7 R8 + 0x781E0005, // 000C JMPF R7 #0013 + 0x8C1C0706, // 000D GETMET R7 R3 K6 + 0x88240907, // 000E GETMBR R9 R4 K7 + 0x88280105, // 000F GETMBR R10 R0 K5 + 0x7C1C0600, // 0010 CALL R7 3 + 0x80040E00, // 0011 RET 1 R7 0x70020004, // 0012 JMP #0018 - 0x8C180706, // 0013 GETMET R6 R3 K6 - 0x88200708, // 0014 GETMBR R8 R3 K8 - 0x4C240000, // 0015 LDNIL R9 - 0x7C180600, // 0016 CALL R6 3 - 0x80040C00, // 0017 RET 1 R6 + 0x8C1C0706, // 0013 GETMET R7 R3 K6 + 0x88240908, // 0014 GETMBR R9 R4 K8 + 0x4C280000, // 0015 LDNIL R10 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 0x70020010, // 0018 JMP #002A - 0x541AFFFB, // 0019 LDINT R6 65532 - 0x1C180A06, // 001A EQ R6 R5 R6 - 0x781A0005, // 001B JMPF R6 #0022 - 0x8C180706, // 001C GETMET R6 R3 K6 - 0x88200709, // 001D GETMBR R8 R3 K9 - 0x58240004, // 001E LDCONST R9 K4 - 0x7C180600, // 001F CALL R6 3 - 0x80040C00, // 0020 RET 1 R6 + 0x541EFFFB, // 0019 LDINT R7 65532 + 0x1C1C0C07, // 001A EQ R7 R6 R7 + 0x781E0005, // 001B JMPF R7 #0022 + 0x8C1C0706, // 001C GETMET R7 R3 K6 + 0x88240909, // 001D GETMBR R9 R4 K9 + 0x58280004, // 001E LDCONST R10 K4 + 0x7C1C0600, // 001F CALL R7 3 + 0x80040E00, // 0020 RET 1 R7 0x70020007, // 0021 JMP #002A - 0x541AFFFC, // 0022 LDINT R6 65533 - 0x1C180A06, // 0023 EQ R6 R5 R6 - 0x781A0004, // 0024 JMPF R6 #002A - 0x8C180706, // 0025 GETMET R6 R3 K6 - 0x88200709, // 0026 GETMBR R8 R3 K9 - 0x5824000A, // 0027 LDCONST R9 K10 - 0x7C180600, // 0028 CALL R6 3 - 0x80040C00, // 0029 RET 1 R6 - 0x70020007, // 002A JMP #0033 - 0x60180003, // 002B GETGBL R6 G3 - 0x5C1C0000, // 002C MOVE R7 R0 - 0x7C180200, // 002D CALL R6 1 - 0x8C180D0B, // 002E GETMET R6 R6 K11 - 0x5C200200, // 002F MOVE R8 R1 - 0x5C240400, // 0030 MOVE R9 R2 - 0x7C180600, // 0031 CALL R6 3 - 0x80040C00, // 0032 RET 1 R6 - 0x80000000, // 0033 RET 0 + 0x541EFFFC, // 0022 LDINT R7 65533 + 0x1C1C0C07, // 0023 EQ R7 R6 R7 + 0x781E0004, // 0024 JMPF R7 #002A + 0x8C1C0706, // 0025 GETMET R7 R3 K6 + 0x88240909, // 0026 GETMBR R9 R4 K9 + 0x5828000A, // 0027 LDCONST R10 K10 + 0x7C1C0600, // 0028 CALL R7 3 + 0x80040E00, // 0029 RET 1 R7 + 0x70020008, // 002A JMP #0034 + 0x601C0003, // 002B GETGBL R7 G3 + 0x5C200000, // 002C MOVE R8 R0 + 0x7C1C0200, // 002D CALL R7 1 + 0x8C1C0F0B, // 002E GETMET R7 R7 K11 + 0x5C240200, // 002F MOVE R9 R1 + 0x5C280400, // 0030 MOVE R10 R2 + 0x5C2C0600, // 0031 MOVE R11 R3 + 0x7C1C0800, // 0032 CALL R7 4 + 0x80040E00, // 0033 RET 1 R7 + 0x80000000, // 0034 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h index a1f03d75c7ec..999d0b35d4f9 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h @@ -44,8 +44,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_pre_value, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name */ be_nested_proto( - 11, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -59,7 +59,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(U2), /* K8 */ be_nested_str_weak(NULL), /* K9 */ be_const_int(1), @@ -70,77 +70,78 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[70]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0404, // 0004 LDINT R6 1029 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0035, // 0006 JMPF R6 #003D - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A0011, // 0008 JMPF R6 #001B - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x4C1C0000, // 000A LDNIL R7 - 0x20180C07, // 000B NE R6 R6 R7 - 0x781A0007, // 000C JMPF R6 #0015 - 0x8C180706, // 000D GETMET R6 R3 K6 - 0x88200707, // 000E GETMBR R8 R3 K7 - 0x60240009, // 000F GETGBL R9 G9 - 0x88280105, // 0010 GETMBR R10 R0 K5 - 0x7C240200, // 0011 CALL R9 1 - 0x7C180600, // 0012 CALL R6 3 - 0x80040C00, // 0013 RET 1 R6 + ( &(const binstruction[71]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0404, // 0004 LDINT R7 1029 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0035, // 0006 JMPF R7 #003D + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E0011, // 0008 JMPF R7 #001B + 0x881C0105, // 0009 GETMBR R7 R0 K5 + 0x4C200000, // 000A LDNIL R8 + 0x201C0E08, // 000B NE R7 R7 R8 + 0x781E0007, // 000C JMPF R7 #0015 + 0x8C1C0706, // 000D GETMET R7 R3 K6 + 0x88240907, // 000E GETMBR R9 R4 K7 + 0x60280009, // 000F GETGBL R10 G9 + 0x882C0105, // 0010 GETMBR R11 R0 K5 + 0x7C280200, // 0011 CALL R10 1 + 0x7C1C0600, // 0012 CALL R7 3 + 0x80040E00, // 0013 RET 1 R7 0x70020004, // 0014 JMP #001A - 0x8C180706, // 0015 GETMET R6 R3 K6 - 0x88200708, // 0016 GETMBR R8 R3 K8 - 0x4C240000, // 0017 LDNIL R9 - 0x7C180600, // 0018 CALL R6 3 - 0x80040C00, // 0019 RET 1 R6 + 0x8C1C0706, // 0015 GETMET R7 R3 K6 + 0x88240908, // 0016 GETMBR R9 R4 K8 + 0x4C280000, // 0017 LDNIL R10 + 0x7C1C0600, // 0018 CALL R7 3 + 0x80040E00, // 0019 RET 1 R7 0x70020020, // 001A JMP #003C - 0x1C180B09, // 001B EQ R6 R5 K9 - 0x781A0005, // 001C JMPF R6 #0023 - 0x8C180706, // 001D GETMET R6 R3 K6 - 0x88200707, // 001E GETMBR R8 R3 K7 - 0x542601F3, // 001F LDINT R9 500 - 0x7C180600, // 0020 CALL R6 3 - 0x80040C00, // 0021 RET 1 R6 + 0x1C1C0D09, // 001B EQ R7 R6 K9 + 0x781E0005, // 001C JMPF R7 #0023 + 0x8C1C0706, // 001D GETMET R7 R3 K6 + 0x88240907, // 001E GETMBR R9 R4 K7 + 0x542A01F3, // 001F LDINT R10 500 + 0x7C1C0600, // 0020 CALL R7 3 + 0x80040E00, // 0021 RET 1 R7 0x70020018, // 0022 JMP #003C - 0x1C180B0A, // 0023 EQ R6 R5 K10 - 0x781A0005, // 0024 JMPF R6 #002B - 0x8C180706, // 0025 GETMET R6 R3 K6 - 0x88200707, // 0026 GETMBR R8 R3 K7 - 0x5426270F, // 0027 LDINT R9 10000 - 0x7C180600, // 0028 CALL R6 3 - 0x80040C00, // 0029 RET 1 R6 + 0x1C1C0D0A, // 0023 EQ R7 R6 K10 + 0x781E0005, // 0024 JMPF R7 #002B + 0x8C1C0706, // 0025 GETMET R7 R3 K6 + 0x88240907, // 0026 GETMBR R9 R4 K7 + 0x542A270F, // 0027 LDINT R10 10000 + 0x7C1C0600, // 0028 CALL R7 3 + 0x80040E00, // 0029 RET 1 R7 0x70020010, // 002A JMP #003C - 0x541AFFFB, // 002B LDINT R6 65532 - 0x1C180A06, // 002C EQ R6 R5 R6 - 0x781A0005, // 002D JMPF R6 #0034 - 0x8C180706, // 002E GETMET R6 R3 K6 - 0x8820070B, // 002F GETMBR R8 R3 K11 - 0x58240004, // 0030 LDCONST R9 K4 - 0x7C180600, // 0031 CALL R6 3 - 0x80040C00, // 0032 RET 1 R6 + 0x541EFFFB, // 002B LDINT R7 65532 + 0x1C1C0C07, // 002C EQ R7 R6 R7 + 0x781E0005, // 002D JMPF R7 #0034 + 0x8C1C0706, // 002E GETMET R7 R3 K6 + 0x8824090B, // 002F GETMBR R9 R4 K11 + 0x58280004, // 0030 LDCONST R10 K4 + 0x7C1C0600, // 0031 CALL R7 3 + 0x80040E00, // 0032 RET 1 R7 0x70020007, // 0033 JMP #003C - 0x541AFFFC, // 0034 LDINT R6 65533 - 0x1C180A06, // 0035 EQ R6 R5 R6 - 0x781A0004, // 0036 JMPF R6 #003C - 0x8C180706, // 0037 GETMET R6 R3 K6 - 0x8820070B, // 0038 GETMBR R8 R3 K11 - 0x5824000C, // 0039 LDCONST R9 K12 - 0x7C180600, // 003A CALL R6 3 - 0x80040C00, // 003B RET 1 R6 - 0x70020007, // 003C JMP #0045 - 0x60180003, // 003D GETGBL R6 G3 - 0x5C1C0000, // 003E MOVE R7 R0 - 0x7C180200, // 003F CALL R6 1 - 0x8C180D0D, // 0040 GETMET R6 R6 K13 - 0x5C200200, // 0041 MOVE R8 R1 - 0x5C240400, // 0042 MOVE R9 R2 - 0x7C180600, // 0043 CALL R6 3 - 0x80040C00, // 0044 RET 1 R6 - 0x80000000, // 0045 RET 0 + 0x541EFFFC, // 0034 LDINT R7 65533 + 0x1C1C0C07, // 0035 EQ R7 R6 R7 + 0x781E0004, // 0036 JMPF R7 #003C + 0x8C1C0706, // 0037 GETMET R7 R3 K6 + 0x8824090B, // 0038 GETMBR R9 R4 K11 + 0x5828000C, // 0039 LDCONST R10 K12 + 0x7C1C0600, // 003A CALL R7 3 + 0x80040E00, // 003B RET 1 R7 + 0x70020008, // 003C JMP #0046 + 0x601C0003, // 003D GETGBL R7 G3 + 0x5C200000, // 003E MOVE R8 R0 + 0x7C1C0200, // 003F CALL R7 1 + 0x8C1C0F0D, // 0040 GETMET R7 R7 K13 + 0x5C240200, // 0041 MOVE R9 R1 + 0x5C280400, // 0042 MOVE R10 R2 + 0x5C2C0600, // 0043 MOVE R11 R3 + 0x7C1C0800, // 0044 CALL R7 4 + 0x80040E00, // 0045 RET 1 R7 + 0x80000000, // 0046 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h index e732c9cf389f..894d2caafe7c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h @@ -56,8 +56,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_pre_value, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* name */ be_nested_proto( - 11, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -71,7 +71,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* na /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(U2), /* K8 */ be_nested_str_weak(NULL), /* K9 */ be_const_int(1), @@ -82,77 +82,78 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* na }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[70]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A03FF, // 0004 LDINT R6 1024 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0035, // 0006 JMPF R6 #003D - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A0011, // 0008 JMPF R6 #001B - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x4C1C0000, // 000A LDNIL R7 - 0x20180C07, // 000B NE R6 R6 R7 - 0x781A0007, // 000C JMPF R6 #0015 - 0x8C180706, // 000D GETMET R6 R3 K6 - 0x88200707, // 000E GETMBR R8 R3 K7 - 0x60240009, // 000F GETGBL R9 G9 - 0x88280105, // 0010 GETMBR R10 R0 K5 - 0x7C240200, // 0011 CALL R9 1 - 0x7C180600, // 0012 CALL R6 3 - 0x80040C00, // 0013 RET 1 R6 + ( &(const binstruction[71]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E03FF, // 0004 LDINT R7 1024 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0035, // 0006 JMPF R7 #003D + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E0011, // 0008 JMPF R7 #001B + 0x881C0105, // 0009 GETMBR R7 R0 K5 + 0x4C200000, // 000A LDNIL R8 + 0x201C0E08, // 000B NE R7 R7 R8 + 0x781E0007, // 000C JMPF R7 #0015 + 0x8C1C0706, // 000D GETMET R7 R3 K6 + 0x88240907, // 000E GETMBR R9 R4 K7 + 0x60280009, // 000F GETGBL R10 G9 + 0x882C0105, // 0010 GETMBR R11 R0 K5 + 0x7C280200, // 0011 CALL R10 1 + 0x7C1C0600, // 0012 CALL R7 3 + 0x80040E00, // 0013 RET 1 R7 0x70020004, // 0014 JMP #001A - 0x8C180706, // 0015 GETMET R6 R3 K6 - 0x88200708, // 0016 GETMBR R8 R3 K8 - 0x4C240000, // 0017 LDNIL R9 - 0x7C180600, // 0018 CALL R6 3 - 0x80040C00, // 0019 RET 1 R6 + 0x8C1C0706, // 0015 GETMET R7 R3 K6 + 0x88240908, // 0016 GETMBR R9 R4 K8 + 0x4C280000, // 0017 LDNIL R10 + 0x7C1C0600, // 0018 CALL R7 3 + 0x80040E00, // 0019 RET 1 R7 0x70020020, // 001A JMP #003C - 0x1C180B09, // 001B EQ R6 R5 K9 - 0x781A0005, // 001C JMPF R6 #0023 - 0x8C180706, // 001D GETMET R6 R3 K6 - 0x88200707, // 001E GETMBR R8 R3 K7 - 0x58240009, // 001F LDCONST R9 K9 - 0x7C180600, // 0020 CALL R6 3 - 0x80040C00, // 0021 RET 1 R6 + 0x1C1C0D09, // 001B EQ R7 R6 K9 + 0x781E0005, // 001C JMPF R7 #0023 + 0x8C1C0706, // 001D GETMET R7 R3 K6 + 0x88240907, // 001E GETMBR R9 R4 K7 + 0x58280009, // 001F LDCONST R10 K9 + 0x7C1C0600, // 0020 CALL R7 3 + 0x80040E00, // 0021 RET 1 R7 0x70020018, // 0022 JMP #003C - 0x1C180B0A, // 0023 EQ R6 R5 K10 - 0x781A0005, // 0024 JMPF R6 #002B - 0x8C180706, // 0025 GETMET R6 R3 K6 - 0x88200707, // 0026 GETMBR R8 R3 K7 - 0x5426FFFD, // 0027 LDINT R9 65534 - 0x7C180600, // 0028 CALL R6 3 - 0x80040C00, // 0029 RET 1 R6 + 0x1C1C0D0A, // 0023 EQ R7 R6 K10 + 0x781E0005, // 0024 JMPF R7 #002B + 0x8C1C0706, // 0025 GETMET R7 R3 K6 + 0x88240907, // 0026 GETMBR R9 R4 K7 + 0x542AFFFD, // 0027 LDINT R10 65534 + 0x7C1C0600, // 0028 CALL R7 3 + 0x80040E00, // 0029 RET 1 R7 0x70020010, // 002A JMP #003C - 0x541AFFFB, // 002B LDINT R6 65532 - 0x1C180A06, // 002C EQ R6 R5 R6 - 0x781A0005, // 002D JMPF R6 #0034 - 0x8C180706, // 002E GETMET R6 R3 K6 - 0x8820070B, // 002F GETMBR R8 R3 K11 - 0x58240004, // 0030 LDCONST R9 K4 - 0x7C180600, // 0031 CALL R6 3 - 0x80040C00, // 0032 RET 1 R6 + 0x541EFFFB, // 002B LDINT R7 65532 + 0x1C1C0C07, // 002C EQ R7 R6 R7 + 0x781E0005, // 002D JMPF R7 #0034 + 0x8C1C0706, // 002E GETMET R7 R3 K6 + 0x8824090B, // 002F GETMBR R9 R4 K11 + 0x58280004, // 0030 LDCONST R10 K4 + 0x7C1C0600, // 0031 CALL R7 3 + 0x80040E00, // 0032 RET 1 R7 0x70020007, // 0033 JMP #003C - 0x541AFFFC, // 0034 LDINT R6 65533 - 0x1C180A06, // 0035 EQ R6 R5 R6 - 0x781A0004, // 0036 JMPF R6 #003C - 0x8C180706, // 0037 GETMET R6 R3 K6 - 0x8820070B, // 0038 GETMBR R8 R3 K11 - 0x5824000C, // 0039 LDCONST R9 K12 - 0x7C180600, // 003A CALL R6 3 - 0x80040C00, // 003B RET 1 R6 - 0x70020007, // 003C JMP #0045 - 0x60180003, // 003D GETGBL R6 G3 - 0x5C1C0000, // 003E MOVE R7 R0 - 0x7C180200, // 003F CALL R6 1 - 0x8C180D0D, // 0040 GETMET R6 R6 K13 - 0x5C200200, // 0041 MOVE R8 R1 - 0x5C240400, // 0042 MOVE R9 R2 - 0x7C180600, // 0043 CALL R6 3 - 0x80040C00, // 0044 RET 1 R6 - 0x80000000, // 0045 RET 0 + 0x541EFFFC, // 0034 LDINT R7 65533 + 0x1C1C0C07, // 0035 EQ R7 R6 R7 + 0x781E0004, // 0036 JMPF R7 #003C + 0x8C1C0706, // 0037 GETMET R7 R3 K6 + 0x8824090B, // 0038 GETMBR R9 R4 K11 + 0x5828000C, // 0039 LDCONST R10 K12 + 0x7C1C0600, // 003A CALL R7 3 + 0x80040E00, // 003B RET 1 R7 + 0x70020008, // 003C JMP #0046 + 0x601C0003, // 003D GETGBL R7 G3 + 0x5C200000, // 003E MOVE R8 R0 + 0x7C1C0200, // 003F CALL R7 1 + 0x8C1C0F0D, // 0040 GETMET R7 R7 K13 + 0x5C240200, // 0041 MOVE R9 R1 + 0x5C280400, // 0042 MOVE R10 R2 + 0x5C2C0600, // 0043 MOVE R11 R3 + 0x7C1C0800, // 0044 CALL R7 4 + 0x80040E00, // 0045 RET 1 R7 + 0x80000000, // 0046 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h index acce61c30fe4..9f232fc03da0 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h @@ -201,8 +201,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values_prefix, /* n ********************************************************************/ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -216,7 +216,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(shadow_occupancy), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(U1), /* K8 */ be_nested_str_weak(NULL), /* K9 */ be_const_int(1), @@ -227,75 +227,76 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0405, // 0004 LDINT R6 1030 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0033, // 0006 JMPF R6 #003B - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A000F, // 0008 JMPF R6 #0019 - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x4C1C0000, // 000A LDNIL R7 - 0x20180C07, // 000B NE R6 R6 R7 - 0x781A0005, // 000C JMPF R6 #0013 - 0x8C180706, // 000D GETMET R6 R3 K6 - 0x88200707, // 000E GETMBR R8 R3 K7 - 0x88240105, // 000F GETMBR R9 R0 K5 - 0x7C180600, // 0010 CALL R6 3 - 0x80040C00, // 0011 RET 1 R6 + ( &(const binstruction[69]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0405, // 0004 LDINT R7 1030 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0033, // 0006 JMPF R7 #003B + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E000F, // 0008 JMPF R7 #0019 + 0x881C0105, // 0009 GETMBR R7 R0 K5 + 0x4C200000, // 000A LDNIL R8 + 0x201C0E08, // 000B NE R7 R7 R8 + 0x781E0005, // 000C JMPF R7 #0013 + 0x8C1C0706, // 000D GETMET R7 R3 K6 + 0x88240907, // 000E GETMBR R9 R4 K7 + 0x88280105, // 000F GETMBR R10 R0 K5 + 0x7C1C0600, // 0010 CALL R7 3 + 0x80040E00, // 0011 RET 1 R7 0x70020004, // 0012 JMP #0018 - 0x8C180706, // 0013 GETMET R6 R3 K6 - 0x88200708, // 0014 GETMBR R8 R3 K8 - 0x4C240000, // 0015 LDNIL R9 - 0x7C180600, // 0016 CALL R6 3 - 0x80040C00, // 0017 RET 1 R6 + 0x8C1C0706, // 0013 GETMET R7 R3 K6 + 0x88240908, // 0014 GETMBR R9 R4 K8 + 0x4C280000, // 0015 LDNIL R10 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 0x70020020, // 0018 JMP #003A - 0x1C180B09, // 0019 EQ R6 R5 K9 - 0x781A0005, // 001A JMPF R6 #0021 - 0x8C180706, // 001B GETMET R6 R3 K6 - 0x88200707, // 001C GETMBR R8 R3 K7 - 0x5824000A, // 001D LDCONST R9 K10 - 0x7C180600, // 001E CALL R6 3 - 0x80040C00, // 001F RET 1 R6 + 0x1C1C0D09, // 0019 EQ R7 R6 K9 + 0x781E0005, // 001A JMPF R7 #0021 + 0x8C1C0706, // 001B GETMET R7 R3 K6 + 0x88240907, // 001C GETMBR R9 R4 K7 + 0x5828000A, // 001D LDCONST R10 K10 + 0x7C1C0600, // 001E CALL R7 3 + 0x80040E00, // 001F RET 1 R7 0x70020018, // 0020 JMP #003A - 0x1C180B0B, // 0021 EQ R6 R5 K11 - 0x781A0005, // 0022 JMPF R6 #0029 - 0x8C180706, // 0023 GETMET R6 R3 K6 - 0x88200707, // 0024 GETMBR R8 R3 K7 - 0x58240004, // 0025 LDCONST R9 K4 - 0x7C180600, // 0026 CALL R6 3 - 0x80040C00, // 0027 RET 1 R6 + 0x1C1C0D0B, // 0021 EQ R7 R6 K11 + 0x781E0005, // 0022 JMPF R7 #0029 + 0x8C1C0706, // 0023 GETMET R7 R3 K6 + 0x88240907, // 0024 GETMBR R9 R4 K7 + 0x58280004, // 0025 LDCONST R10 K4 + 0x7C1C0600, // 0026 CALL R7 3 + 0x80040E00, // 0027 RET 1 R7 0x70020010, // 0028 JMP #003A - 0x541AFFFB, // 0029 LDINT R6 65532 - 0x1C180A06, // 002A EQ R6 R5 R6 - 0x781A0005, // 002B JMPF R6 #0032 - 0x8C180706, // 002C GETMET R6 R3 K6 - 0x8820070C, // 002D GETMBR R8 R3 K12 - 0x58240004, // 002E LDCONST R9 K4 - 0x7C180600, // 002F CALL R6 3 - 0x80040C00, // 0030 RET 1 R6 + 0x541EFFFB, // 0029 LDINT R7 65532 + 0x1C1C0C07, // 002A EQ R7 R6 R7 + 0x781E0005, // 002B JMPF R7 #0032 + 0x8C1C0706, // 002C GETMET R7 R3 K6 + 0x8824090C, // 002D GETMBR R9 R4 K12 + 0x58280004, // 002E LDCONST R10 K4 + 0x7C1C0600, // 002F CALL R7 3 + 0x80040E00, // 0030 RET 1 R7 0x70020007, // 0031 JMP #003A - 0x541AFFFC, // 0032 LDINT R6 65533 - 0x1C180A06, // 0033 EQ R6 R5 R6 - 0x781A0004, // 0034 JMPF R6 #003A - 0x8C180706, // 0035 GETMET R6 R3 K6 - 0x8820070C, // 0036 GETMBR R8 R3 K12 - 0x5824000A, // 0037 LDCONST R9 K10 - 0x7C180600, // 0038 CALL R6 3 - 0x80040C00, // 0039 RET 1 R6 - 0x70020007, // 003A JMP #0043 - 0x60180003, // 003B GETGBL R6 G3 - 0x5C1C0000, // 003C MOVE R7 R0 - 0x7C180200, // 003D CALL R6 1 - 0x8C180D0D, // 003E GETMET R6 R6 K13 - 0x5C200200, // 003F MOVE R8 R1 - 0x5C240400, // 0040 MOVE R9 R2 - 0x7C180600, // 0041 CALL R6 3 - 0x80040C00, // 0042 RET 1 R6 - 0x80000000, // 0043 RET 0 + 0x541EFFFC, // 0032 LDINT R7 65533 + 0x1C1C0C07, // 0033 EQ R7 R6 R7 + 0x781E0004, // 0034 JMPF R7 #003A + 0x8C1C0706, // 0035 GETMET R7 R3 K6 + 0x8824090C, // 0036 GETMBR R9 R4 K12 + 0x5828000A, // 0037 LDCONST R10 K10 + 0x7C1C0600, // 0038 CALL R7 3 + 0x80040E00, // 0039 RET 1 R7 + 0x70020008, // 003A JMP #0044 + 0x601C0003, // 003B GETGBL R7 G3 + 0x5C200000, // 003C MOVE R8 R0 + 0x7C1C0200, // 003D CALL R7 1 + 0x8C1C0F0D, // 003E GETMET R7 R7 K13 + 0x5C240200, // 003F MOVE R9 R1 + 0x5C280400, // 0040 MOVE R10 R2 + 0x5C2C0600, // 0041 MOVE R11 R3 + 0x7C1C0800, // 0042 CALL R7 4 + 0x80040E00, // 0043 RET 1 R7 + 0x80000000, // 0044 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Pressure.h index 1e89935ec708..a72084820a8d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Pressure.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Pressure.h @@ -43,8 +43,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_pre_value, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name */ be_nested_proto( - 11, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -58,7 +58,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(I2), /* K8 */ be_nested_str_weak(NULL), /* K9 */ be_const_int(1), @@ -69,77 +69,78 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[70]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0402, // 0004 LDINT R6 1027 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0035, // 0006 JMPF R6 #003D - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A0011, // 0008 JMPF R6 #001B - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x4C1C0000, // 000A LDNIL R7 - 0x20180C07, // 000B NE R6 R6 R7 - 0x781A0007, // 000C JMPF R6 #0015 - 0x8C180706, // 000D GETMET R6 R3 K6 - 0x88200707, // 000E GETMBR R8 R3 K7 - 0x60240009, // 000F GETGBL R9 G9 - 0x88280105, // 0010 GETMBR R10 R0 K5 - 0x7C240200, // 0011 CALL R9 1 - 0x7C180600, // 0012 CALL R6 3 - 0x80040C00, // 0013 RET 1 R6 + ( &(const binstruction[71]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0402, // 0004 LDINT R7 1027 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0035, // 0006 JMPF R7 #003D + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E0011, // 0008 JMPF R7 #001B + 0x881C0105, // 0009 GETMBR R7 R0 K5 + 0x4C200000, // 000A LDNIL R8 + 0x201C0E08, // 000B NE R7 R7 R8 + 0x781E0007, // 000C JMPF R7 #0015 + 0x8C1C0706, // 000D GETMET R7 R3 K6 + 0x88240907, // 000E GETMBR R9 R4 K7 + 0x60280009, // 000F GETGBL R10 G9 + 0x882C0105, // 0010 GETMBR R11 R0 K5 + 0x7C280200, // 0011 CALL R10 1 + 0x7C1C0600, // 0012 CALL R7 3 + 0x80040E00, // 0013 RET 1 R7 0x70020004, // 0014 JMP #001A - 0x8C180706, // 0015 GETMET R6 R3 K6 - 0x88200708, // 0016 GETMBR R8 R3 K8 - 0x4C240000, // 0017 LDNIL R9 - 0x7C180600, // 0018 CALL R6 3 - 0x80040C00, // 0019 RET 1 R6 + 0x8C1C0706, // 0015 GETMET R7 R3 K6 + 0x88240908, // 0016 GETMBR R9 R4 K8 + 0x4C280000, // 0017 LDNIL R10 + 0x7C1C0600, // 0018 CALL R7 3 + 0x80040E00, // 0019 RET 1 R7 0x70020020, // 001A JMP #003C - 0x1C180B09, // 001B EQ R6 R5 K9 - 0x781A0005, // 001C JMPF R6 #0023 - 0x8C180706, // 001D GETMET R6 R3 K6 - 0x88200707, // 001E GETMBR R8 R3 K7 - 0x542601F3, // 001F LDINT R9 500 - 0x7C180600, // 0020 CALL R6 3 - 0x80040C00, // 0021 RET 1 R6 + 0x1C1C0D09, // 001B EQ R7 R6 K9 + 0x781E0005, // 001C JMPF R7 #0023 + 0x8C1C0706, // 001D GETMET R7 R3 K6 + 0x88240907, // 001E GETMBR R9 R4 K7 + 0x542A01F3, // 001F LDINT R10 500 + 0x7C1C0600, // 0020 CALL R7 3 + 0x80040E00, // 0021 RET 1 R7 0x70020018, // 0022 JMP #003C - 0x1C180B0A, // 0023 EQ R6 R5 K10 - 0x781A0005, // 0024 JMPF R6 #002B - 0x8C180706, // 0025 GETMET R6 R3 K6 - 0x88200707, // 0026 GETMBR R8 R3 K7 - 0x542605DB, // 0027 LDINT R9 1500 - 0x7C180600, // 0028 CALL R6 3 - 0x80040C00, // 0029 RET 1 R6 + 0x1C1C0D0A, // 0023 EQ R7 R6 K10 + 0x781E0005, // 0024 JMPF R7 #002B + 0x8C1C0706, // 0025 GETMET R7 R3 K6 + 0x88240907, // 0026 GETMBR R9 R4 K7 + 0x542A05DB, // 0027 LDINT R10 1500 + 0x7C1C0600, // 0028 CALL R7 3 + 0x80040E00, // 0029 RET 1 R7 0x70020010, // 002A JMP #003C - 0x541AFFFB, // 002B LDINT R6 65532 - 0x1C180A06, // 002C EQ R6 R5 R6 - 0x781A0005, // 002D JMPF R6 #0034 - 0x8C180706, // 002E GETMET R6 R3 K6 - 0x8820070B, // 002F GETMBR R8 R3 K11 - 0x58240004, // 0030 LDCONST R9 K4 - 0x7C180600, // 0031 CALL R6 3 - 0x80040C00, // 0032 RET 1 R6 + 0x541EFFFB, // 002B LDINT R7 65532 + 0x1C1C0C07, // 002C EQ R7 R6 R7 + 0x781E0005, // 002D JMPF R7 #0034 + 0x8C1C0706, // 002E GETMET R7 R3 K6 + 0x8824090B, // 002F GETMBR R9 R4 K11 + 0x58280004, // 0030 LDCONST R10 K4 + 0x7C1C0600, // 0031 CALL R7 3 + 0x80040E00, // 0032 RET 1 R7 0x70020007, // 0033 JMP #003C - 0x541AFFFC, // 0034 LDINT R6 65533 - 0x1C180A06, // 0035 EQ R6 R5 R6 - 0x781A0004, // 0036 JMPF R6 #003C - 0x8C180706, // 0037 GETMET R6 R3 K6 - 0x8820070B, // 0038 GETMBR R8 R3 K11 - 0x5824000C, // 0039 LDCONST R9 K12 - 0x7C180600, // 003A CALL R6 3 - 0x80040C00, // 003B RET 1 R6 - 0x70020007, // 003C JMP #0045 - 0x60180003, // 003D GETGBL R6 G3 - 0x5C1C0000, // 003E MOVE R7 R0 - 0x7C180200, // 003F CALL R6 1 - 0x8C180D0D, // 0040 GETMET R6 R6 K13 - 0x5C200200, // 0041 MOVE R8 R1 - 0x5C240400, // 0042 MOVE R9 R2 - 0x7C180600, // 0043 CALL R6 3 - 0x80040C00, // 0044 RET 1 R6 - 0x80000000, // 0045 RET 0 + 0x541EFFFC, // 0034 LDINT R7 65533 + 0x1C1C0C07, // 0035 EQ R7 R6 R7 + 0x781E0004, // 0036 JMPF R7 #003C + 0x8C1C0706, // 0037 GETMET R7 R3 K6 + 0x8824090B, // 0038 GETMBR R9 R4 K11 + 0x5828000C, // 0039 LDCONST R10 K12 + 0x7C1C0600, // 003A CALL R7 3 + 0x80040E00, // 003B RET 1 R7 + 0x70020008, // 003C JMP #0046 + 0x601C0003, // 003D GETGBL R7 G3 + 0x5C200000, // 003E MOVE R8 R0 + 0x7C1C0200, // 003F CALL R7 1 + 0x8C1C0F0D, // 0040 GETMET R7 R7 K13 + 0x5C240200, // 0041 MOVE R9 R1 + 0x5C280400, // 0042 MOVE R10 R2 + 0x5C2C0600, // 0043 MOVE R11 R3 + 0x7C1C0800, // 0044 CALL R7 4 + 0x80040E00, // 0045 RET 1 R7 + 0x80000000, // 0046 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Temp.h index c6bd8b6ff93a..ac392119ca72 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Temp.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Temp.h @@ -56,8 +56,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_pre_value, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -71,7 +71,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(I2), /* K8 */ be_nested_str_weak(NULL), /* K9 */ be_const_int(1), @@ -81,75 +81,76 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0401, // 0004 LDINT R6 1026 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0033, // 0006 JMPF R6 #003B - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A000F, // 0008 JMPF R6 #0019 - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x4C1C0000, // 000A LDNIL R7 - 0x20180C07, // 000B NE R6 R6 R7 - 0x781A0005, // 000C JMPF R6 #0013 - 0x8C180706, // 000D GETMET R6 R3 K6 - 0x88200707, // 000E GETMBR R8 R3 K7 - 0x88240105, // 000F GETMBR R9 R0 K5 - 0x7C180600, // 0010 CALL R6 3 - 0x80040C00, // 0011 RET 1 R6 + ( &(const binstruction[69]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0401, // 0004 LDINT R7 1026 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0033, // 0006 JMPF R7 #003B + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E000F, // 0008 JMPF R7 #0019 + 0x881C0105, // 0009 GETMBR R7 R0 K5 + 0x4C200000, // 000A LDNIL R8 + 0x201C0E08, // 000B NE R7 R7 R8 + 0x781E0005, // 000C JMPF R7 #0013 + 0x8C1C0706, // 000D GETMET R7 R3 K6 + 0x88240907, // 000E GETMBR R9 R4 K7 + 0x88280105, // 000F GETMBR R10 R0 K5 + 0x7C1C0600, // 0010 CALL R7 3 + 0x80040E00, // 0011 RET 1 R7 0x70020004, // 0012 JMP #0018 - 0x8C180706, // 0013 GETMET R6 R3 K6 - 0x88200708, // 0014 GETMBR R8 R3 K8 - 0x4C240000, // 0015 LDNIL R9 - 0x7C180600, // 0016 CALL R6 3 - 0x80040C00, // 0017 RET 1 R6 + 0x8C1C0706, // 0013 GETMET R7 R3 K6 + 0x88240908, // 0014 GETMBR R9 R4 K8 + 0x4C280000, // 0015 LDNIL R10 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 0x70020020, // 0018 JMP #003A - 0x1C180B09, // 0019 EQ R6 R5 K9 - 0x781A0005, // 001A JMPF R6 #0021 - 0x8C180706, // 001B GETMET R6 R3 K6 - 0x88200707, // 001C GETMBR R8 R3 K7 - 0x5425EC77, // 001D LDINT R9 -5000 - 0x7C180600, // 001E CALL R6 3 - 0x80040C00, // 001F RET 1 R6 + 0x1C1C0D09, // 0019 EQ R7 R6 K9 + 0x781E0005, // 001A JMPF R7 #0021 + 0x8C1C0706, // 001B GETMET R7 R3 K6 + 0x88240907, // 001C GETMBR R9 R4 K7 + 0x5429EC77, // 001D LDINT R10 -5000 + 0x7C1C0600, // 001E CALL R7 3 + 0x80040E00, // 001F RET 1 R7 0x70020018, // 0020 JMP #003A - 0x1C180B0A, // 0021 EQ R6 R5 K10 - 0x781A0005, // 0022 JMPF R6 #0029 - 0x8C180706, // 0023 GETMET R6 R3 K6 - 0x88200707, // 0024 GETMBR R8 R3 K7 - 0x54263A97, // 0025 LDINT R9 15000 - 0x7C180600, // 0026 CALL R6 3 - 0x80040C00, // 0027 RET 1 R6 + 0x1C1C0D0A, // 0021 EQ R7 R6 K10 + 0x781E0005, // 0022 JMPF R7 #0029 + 0x8C1C0706, // 0023 GETMET R7 R3 K6 + 0x88240907, // 0024 GETMBR R9 R4 K7 + 0x542A3A97, // 0025 LDINT R10 15000 + 0x7C1C0600, // 0026 CALL R7 3 + 0x80040E00, // 0027 RET 1 R7 0x70020010, // 0028 JMP #003A - 0x541AFFFB, // 0029 LDINT R6 65532 - 0x1C180A06, // 002A EQ R6 R5 R6 - 0x781A0005, // 002B JMPF R6 #0032 - 0x8C180706, // 002C GETMET R6 R3 K6 - 0x8820070B, // 002D GETMBR R8 R3 K11 - 0x58240004, // 002E LDCONST R9 K4 - 0x7C180600, // 002F CALL R6 3 - 0x80040C00, // 0030 RET 1 R6 + 0x541EFFFB, // 0029 LDINT R7 65532 + 0x1C1C0C07, // 002A EQ R7 R6 R7 + 0x781E0005, // 002B JMPF R7 #0032 + 0x8C1C0706, // 002C GETMET R7 R3 K6 + 0x8824090B, // 002D GETMBR R9 R4 K11 + 0x58280004, // 002E LDCONST R10 K4 + 0x7C1C0600, // 002F CALL R7 3 + 0x80040E00, // 0030 RET 1 R7 0x70020007, // 0031 JMP #003A - 0x541AFFFC, // 0032 LDINT R6 65533 - 0x1C180A06, // 0033 EQ R6 R5 R6 - 0x781A0004, // 0034 JMPF R6 #003A - 0x8C180706, // 0035 GETMET R6 R3 K6 - 0x8820070B, // 0036 GETMBR R8 R3 K11 - 0x54260003, // 0037 LDINT R9 4 - 0x7C180600, // 0038 CALL R6 3 - 0x80040C00, // 0039 RET 1 R6 - 0x70020007, // 003A JMP #0043 - 0x60180003, // 003B GETGBL R6 G3 - 0x5C1C0000, // 003C MOVE R7 R0 - 0x7C180200, // 003D CALL R6 1 - 0x8C180D0C, // 003E GETMET R6 R6 K12 - 0x5C200200, // 003F MOVE R8 R1 - 0x5C240400, // 0040 MOVE R9 R2 - 0x7C180600, // 0041 CALL R6 3 - 0x80040C00, // 0042 RET 1 R6 - 0x80000000, // 0043 RET 0 + 0x541EFFFC, // 0032 LDINT R7 65533 + 0x1C1C0C07, // 0033 EQ R7 R6 R7 + 0x781E0004, // 0034 JMPF R7 #003A + 0x8C1C0706, // 0035 GETMET R7 R3 K6 + 0x8824090B, // 0036 GETMBR R9 R4 K11 + 0x542A0003, // 0037 LDINT R10 4 + 0x7C1C0600, // 0038 CALL R7 3 + 0x80040E00, // 0039 RET 1 R7 + 0x70020008, // 003A JMP #0044 + 0x601C0003, // 003B GETGBL R7 G3 + 0x5C200000, // 003C MOVE R8 R0 + 0x7C1C0200, // 003D CALL R7 1 + 0x8C1C0F0C, // 003E GETMET R7 R7 K12 + 0x5C240200, // 003F MOVE R9 R1 + 0x5C280400, // 0040 MOVE R10 R2 + 0x5C2C0600, // 0041 MOVE R11 R3 + 0x7C1C0800, // 0042 CALL R7 4 + 0x80040E00, // 0043 RET 1 R7 + 0x80000000, // 0044 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h index 77716f333b25..af4eb7167570 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h @@ -202,8 +202,8 @@ be_local_closure(Matter_Plugin_Device_invoke_request, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */ be_nested_proto( - 16, /* nstack */ - 3, /* argc */ + 17, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -217,7 +217,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(3), /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(U2), /* K8 */ be_const_int(1), /* K9 */ be_nested_str_weak(U1), @@ -251,268 +251,271 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[261]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x1C180904, // 0004 EQ R6 R4 K4 - 0x781A0021, // 0005 JMPF R6 #0028 - 0x1C180B05, // 0006 EQ R6 R5 K5 - 0x781A0005, // 0007 JMPF R6 #000E - 0x8C180706, // 0008 GETMET R6 R3 K6 - 0x88200707, // 0009 GETMBR R8 R3 K7 - 0x58240005, // 000A LDCONST R9 K5 - 0x7C180600, // 000B CALL R6 3 - 0x80040C00, // 000C RET 1 R6 + ( &(const binstruction[264]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x1C1C0B04, // 0004 EQ R7 R5 K4 + 0x781E0021, // 0005 JMPF R7 #0028 + 0x1C1C0D05, // 0006 EQ R7 R6 K5 + 0x781E0005, // 0007 JMPF R7 #000E + 0x8C1C0706, // 0008 GETMET R7 R3 K6 + 0x88240907, // 0009 GETMBR R9 R4 K7 + 0x58280005, // 000A LDCONST R10 K5 + 0x7C1C0600, // 000B CALL R7 3 + 0x80040E00, // 000C RET 1 R7 0x70020018, // 000D JMP #0027 - 0x1C180B08, // 000E EQ R6 R5 K8 - 0x781A0005, // 000F JMPF R6 #0016 - 0x8C180706, // 0010 GETMET R6 R3 K6 - 0x88200709, // 0011 GETMBR R8 R3 K9 - 0x58240005, // 0012 LDCONST R9 K5 - 0x7C180600, // 0013 CALL R6 3 - 0x80040C00, // 0014 RET 1 R6 + 0x1C1C0D08, // 000E EQ R7 R6 K8 + 0x781E0005, // 000F JMPF R7 #0016 + 0x8C1C0706, // 0010 GETMET R7 R3 K6 + 0x88240909, // 0011 GETMBR R9 R4 K9 + 0x58280005, // 0012 LDCONST R10 K5 + 0x7C1C0600, // 0013 CALL R7 3 + 0x80040E00, // 0014 RET 1 R7 0x70020010, // 0015 JMP #0027 - 0x541AFFFB, // 0016 LDINT R6 65532 - 0x1C180A06, // 0017 EQ R6 R5 R6 - 0x781A0005, // 0018 JMPF R6 #001F - 0x8C180706, // 0019 GETMET R6 R3 K6 - 0x8820070A, // 001A GETMBR R8 R3 K10 - 0x58240005, // 001B LDCONST R9 K5 - 0x7C180600, // 001C CALL R6 3 - 0x80040C00, // 001D RET 1 R6 + 0x541EFFFB, // 0016 LDINT R7 65532 + 0x1C1C0C07, // 0017 EQ R7 R6 R7 + 0x781E0005, // 0018 JMPF R7 #001F + 0x8C1C0706, // 0019 GETMET R7 R3 K6 + 0x8824090A, // 001A GETMBR R9 R4 K10 + 0x58280005, // 001B LDCONST R10 K5 + 0x7C1C0600, // 001C CALL R7 3 + 0x80040E00, // 001D RET 1 R7 0x70020007, // 001E JMP #0027 - 0x541AFFFC, // 001F LDINT R6 65533 - 0x1C180A06, // 0020 EQ R6 R5 R6 - 0x781A0004, // 0021 JMPF R6 #0027 - 0x8C180706, // 0022 GETMET R6 R3 K6 - 0x8820070A, // 0023 GETMBR R8 R3 K10 - 0x54260003, // 0024 LDINT R9 4 - 0x7C180600, // 0025 CALL R6 3 - 0x80040C00, // 0026 RET 1 R6 - 0x700200DB, // 0027 JMP #0104 - 0x541A0003, // 0028 LDINT R6 4 - 0x1C180806, // 0029 EQ R6 R4 R6 - 0x781A0016, // 002A JMPF R6 #0042 - 0x1C180B05, // 002B EQ R6 R5 K5 - 0x781A0002, // 002C JMPF R6 #0030 - 0x4C180000, // 002D LDNIL R6 - 0x80040C00, // 002E RET 1 R6 + 0x541EFFFC, // 001F LDINT R7 65533 + 0x1C1C0C07, // 0020 EQ R7 R6 R7 + 0x781E0004, // 0021 JMPF R7 #0027 + 0x8C1C0706, // 0022 GETMET R7 R3 K6 + 0x8824090A, // 0023 GETMBR R9 R4 K10 + 0x542A0003, // 0024 LDINT R10 4 + 0x7C1C0600, // 0025 CALL R7 3 + 0x80040E00, // 0026 RET 1 R7 + 0x700200DE, // 0027 JMP #0107 + 0x541E0003, // 0028 LDINT R7 4 + 0x1C1C0A07, // 0029 EQ R7 R5 R7 + 0x781E0016, // 002A JMPF R7 #0042 + 0x1C1C0D05, // 002B EQ R7 R6 K5 + 0x781E0002, // 002C JMPF R7 #0030 + 0x4C1C0000, // 002D LDNIL R7 + 0x80040E00, // 002E RET 1 R7 0x70020010, // 002F JMP #0041 - 0x541AFFFB, // 0030 LDINT R6 65532 - 0x1C180A06, // 0031 EQ R6 R5 R6 - 0x781A0005, // 0032 JMPF R6 #0039 - 0x8C180706, // 0033 GETMET R6 R3 K6 - 0x8820070A, // 0034 GETMBR R8 R3 K10 - 0x58240005, // 0035 LDCONST R9 K5 - 0x7C180600, // 0036 CALL R6 3 - 0x80040C00, // 0037 RET 1 R6 + 0x541EFFFB, // 0030 LDINT R7 65532 + 0x1C1C0C07, // 0031 EQ R7 R6 R7 + 0x781E0005, // 0032 JMPF R7 #0039 + 0x8C1C0706, // 0033 GETMET R7 R3 K6 + 0x8824090A, // 0034 GETMBR R9 R4 K10 + 0x58280005, // 0035 LDCONST R10 K5 + 0x7C1C0600, // 0036 CALL R7 3 + 0x80040E00, // 0037 RET 1 R7 0x70020007, // 0038 JMP #0041 - 0x541AFFFC, // 0039 LDINT R6 65533 - 0x1C180A06, // 003A EQ R6 R5 R6 - 0x781A0004, // 003B JMPF R6 #0041 - 0x8C180706, // 003C GETMET R6 R3 K6 - 0x8820070A, // 003D GETMBR R8 R3 K10 - 0x54260003, // 003E LDINT R9 4 - 0x7C180600, // 003F CALL R6 3 - 0x80040C00, // 0040 RET 1 R6 - 0x700200C1, // 0041 JMP #0104 - 0x541A0004, // 0042 LDINT R6 5 - 0x1C180806, // 0043 EQ R6 R4 R6 - 0x781A0011, // 0044 JMPF R6 #0057 - 0x541AFFFB, // 0045 LDINT R6 65532 - 0x1C180A06, // 0046 EQ R6 R5 R6 - 0x781A0005, // 0047 JMPF R6 #004E - 0x8C180706, // 0048 GETMET R6 R3 K6 - 0x8820070A, // 0049 GETMBR R8 R3 K10 - 0x58240005, // 004A LDCONST R9 K5 - 0x7C180600, // 004B CALL R6 3 - 0x80040C00, // 004C RET 1 R6 + 0x541EFFFC, // 0039 LDINT R7 65533 + 0x1C1C0C07, // 003A EQ R7 R6 R7 + 0x781E0004, // 003B JMPF R7 #0041 + 0x8C1C0706, // 003C GETMET R7 R3 K6 + 0x8824090A, // 003D GETMBR R9 R4 K10 + 0x542A0003, // 003E LDINT R10 4 + 0x7C1C0600, // 003F CALL R7 3 + 0x80040E00, // 0040 RET 1 R7 + 0x700200C4, // 0041 JMP #0107 + 0x541E0004, // 0042 LDINT R7 5 + 0x1C1C0A07, // 0043 EQ R7 R5 R7 + 0x781E0011, // 0044 JMPF R7 #0057 + 0x541EFFFB, // 0045 LDINT R7 65532 + 0x1C1C0C07, // 0046 EQ R7 R6 R7 + 0x781E0005, // 0047 JMPF R7 #004E + 0x8C1C0706, // 0048 GETMET R7 R3 K6 + 0x8824090A, // 0049 GETMBR R9 R4 K10 + 0x58280005, // 004A LDCONST R10 K5 + 0x7C1C0600, // 004B CALL R7 3 + 0x80040E00, // 004C RET 1 R7 0x70020007, // 004D JMP #0056 - 0x541AFFFC, // 004E LDINT R6 65533 - 0x1C180A06, // 004F EQ R6 R5 R6 - 0x781A0004, // 0050 JMPF R6 #0056 - 0x8C180706, // 0051 GETMET R6 R3 K6 - 0x8820070A, // 0052 GETMBR R8 R3 K10 - 0x54260003, // 0053 LDINT R9 4 - 0x7C180600, // 0054 CALL R6 3 - 0x80040C00, // 0055 RET 1 R6 - 0x700200AC, // 0056 JMP #0104 - 0x541A001C, // 0057 LDINT R6 29 - 0x1C180806, // 0058 EQ R6 R4 R6 - 0x781A003D, // 0059 JMPF R6 #0098 - 0x1C180B05, // 005A EQ R6 R5 K5 - 0x781A0032, // 005B JMPF R6 #008F - 0x8C18070B, // 005C GETMET R6 R3 K11 - 0x7C180200, // 005D CALL R6 1 - 0x881C010C, // 005E GETMBR R7 R0 K12 - 0x60200010, // 005F GETGBL R8 G16 - 0x8C240F0D, // 0060 GETMET R9 R7 K13 - 0x7C240200, // 0061 CALL R9 1 - 0x7C200200, // 0062 CALL R8 1 + 0x541EFFFC, // 004E LDINT R7 65533 + 0x1C1C0C07, // 004F EQ R7 R6 R7 + 0x781E0004, // 0050 JMPF R7 #0056 + 0x8C1C0706, // 0051 GETMET R7 R3 K6 + 0x8824090A, // 0052 GETMBR R9 R4 K10 + 0x542A0003, // 0053 LDINT R10 4 + 0x7C1C0600, // 0054 CALL R7 3 + 0x80040E00, // 0055 RET 1 R7 + 0x700200AF, // 0056 JMP #0107 + 0x541E001C, // 0057 LDINT R7 29 + 0x1C1C0A07, // 0058 EQ R7 R5 R7 + 0x781E003E, // 0059 JMPF R7 #0099 + 0x1C1C0D05, // 005A EQ R7 R6 K5 + 0x781E0032, // 005B JMPF R7 #008F + 0x8C1C090B, // 005C GETMET R7 R4 K11 + 0x7C1C0200, // 005D CALL R7 1 + 0x8820010C, // 005E GETMBR R8 R0 K12 + 0x60240010, // 005F GETGBL R9 G16 + 0x8C28110D, // 0060 GETMET R10 R8 K13 + 0x7C280200, // 0061 CALL R10 1 + 0x7C240200, // 0062 CALL R9 1 0xA802000E, // 0063 EXBLK 0 #0073 - 0x5C241000, // 0064 MOVE R9 R8 - 0x7C240000, // 0065 CALL R9 0 - 0x8C280D0E, // 0066 GETMET R10 R6 K14 - 0x7C280200, // 0067 CALL R10 1 - 0x8C2C150F, // 0068 GETMET R11 R10 K15 - 0x58340005, // 0069 LDCONST R13 K5 - 0x88380707, // 006A GETMBR R14 R3 K7 - 0x5C3C1200, // 006B MOVE R15 R9 - 0x7C2C0800, // 006C CALL R11 4 - 0x8C2C150F, // 006D GETMET R11 R10 K15 - 0x58340008, // 006E LDCONST R13 K8 - 0x88380707, // 006F GETMBR R14 R3 K7 - 0x943C0E09, // 0070 GETIDX R15 R7 R9 - 0x7C2C0800, // 0071 CALL R11 4 + 0x5C281200, // 0064 MOVE R10 R9 + 0x7C280000, // 0065 CALL R10 0 + 0x8C2C0F0E, // 0066 GETMET R11 R7 K14 + 0x7C2C0200, // 0067 CALL R11 1 + 0x8C30170F, // 0068 GETMET R12 R11 K15 + 0x58380005, // 0069 LDCONST R14 K5 + 0x883C0907, // 006A GETMBR R15 R4 K7 + 0x5C401400, // 006B MOVE R16 R10 + 0x7C300800, // 006C CALL R12 4 + 0x8C30170F, // 006D GETMET R12 R11 K15 + 0x58380008, // 006E LDCONST R14 K8 + 0x883C0907, // 006F GETMBR R15 R4 K7 + 0x9440100A, // 0070 GETIDX R16 R8 R10 + 0x7C300800, // 0071 CALL R12 4 0x7001FFF0, // 0072 JMP #0064 - 0x58200010, // 0073 LDCONST R8 K16 - 0xAC200200, // 0074 CATCH R8 1 0 + 0x58240010, // 0073 LDCONST R9 K16 + 0xAC240200, // 0074 CATCH R9 1 0 0xB0080000, // 0075 RAISE 2 R0 R0 - 0x88200111, // 0076 GETMBR R8 R0 K17 - 0x8C201112, // 0077 GETMET R8 R8 K18 - 0x8C280313, // 0078 GETMET R10 R1 K19 - 0x7C280200, // 0079 CALL R10 1 - 0x7C200400, // 007A CALL R8 2 - 0x4C240000, // 007B LDNIL R9 - 0x1C201009, // 007C EQ R8 R8 R9 - 0x7822000E, // 007D JMPF R8 #008D - 0x88200114, // 007E GETMBR R8 R0 K20 - 0x88201115, // 007F GETMBR R8 R8 K21 - 0x7422000B, // 0080 JMPT R8 #008D - 0x8C200D0E, // 0081 GETMET R8 R6 K14 - 0x7C200200, // 0082 CALL R8 1 - 0x8C24110F, // 0083 GETMET R9 R8 K15 - 0x582C0005, // 0084 LDCONST R11 K5 - 0x88300707, // 0085 GETMBR R12 R3 K7 - 0x54360012, // 0086 LDINT R13 19 - 0x7C240800, // 0087 CALL R9 4 - 0x8C24110F, // 0088 GETMET R9 R8 K15 - 0x582C0008, // 0089 LDCONST R11 K8 - 0x88300707, // 008A GETMBR R12 R3 K7 - 0x58340008, // 008B LDCONST R13 K8 - 0x7C240800, // 008C CALL R9 4 - 0x80040C00, // 008D RET 1 R6 - 0x70020007, // 008E JMP #0097 - 0x60180003, // 008F GETGBL R6 G3 - 0x5C1C0000, // 0090 MOVE R7 R0 - 0x7C180200, // 0091 CALL R6 1 - 0x8C180D16, // 0092 GETMET R6 R6 K22 - 0x5C200200, // 0093 MOVE R8 R1 - 0x5C240400, // 0094 MOVE R9 R2 - 0x7C180600, // 0095 CALL R6 3 - 0x80040C00, // 0096 RET 1 R6 - 0x7002006B, // 0097 JMP #0104 - 0x541A0038, // 0098 LDINT R6 57 - 0x1C180806, // 0099 EQ R6 R4 R6 - 0x781A0060, // 009A JMPF R6 #00FC - 0xA41A2E00, // 009B IMPORT R6 K23 - 0x1C1C0B04, // 009C EQ R7 R5 K4 - 0x781E000A, // 009D JMPF R7 #00A9 - 0x8C1C0706, // 009E GETMET R7 R3 K6 - 0x88240718, // 009F GETMBR R9 R3 K24 - 0xB82A3200, // 00A0 GETNGBL R10 K25 - 0x8C28151A, // 00A1 GETMET R10 R10 K26 - 0x5830001B, // 00A2 LDCONST R12 K27 - 0x50340200, // 00A3 LDBOOL R13 1 0 - 0x7C280600, // 00A4 CALL R10 3 - 0x9428151B, // 00A5 GETIDX R10 R10 K27 - 0x7C1C0600, // 00A6 CALL R7 3 - 0x80040E00, // 00A7 RET 1 R7 - 0x70020051, // 00A8 JMP #00FB - 0x541E0004, // 00A9 LDINT R7 5 - 0x1C1C0A07, // 00AA EQ R7 R5 R7 - 0x781E0006, // 00AB JMPF R7 #00B3 - 0x8C1C0706, // 00AC GETMET R7 R3 K6 - 0x88240718, // 00AD GETMBR R9 R3 K24 - 0x8C28011C, // 00AE GETMET R10 R0 K28 - 0x7C280200, // 00AF CALL R10 1 - 0x7C1C0600, // 00B0 CALL R7 3 - 0x80040E00, // 00B1 RET 1 R7 - 0x70020047, // 00B2 JMP #00FB - 0x541E0009, // 00B3 LDINT R7 10 - 0x1C1C0A07, // 00B4 EQ R7 R5 R7 - 0x781E0015, // 00B5 JMPF R7 #00CC - 0xB81E3200, // 00B6 GETNGBL R7 K25 - 0x8C1C0F1A, // 00B7 GETMET R7 R7 K26 - 0x5824001D, // 00B8 LDCONST R9 K29 - 0x50280200, // 00B9 LDBOOL R10 1 0 - 0x7C1C0600, // 00BA CALL R7 3 - 0x941C0F1E, // 00BB GETIDX R7 R7 K30 - 0x941C0F1F, // 00BC GETIDX R7 R7 K31 - 0x8C200D12, // 00BD GETMET R8 R6 K18 - 0x5C280E00, // 00BE MOVE R10 R7 - 0x582C0020, // 00BF LDCONST R11 K32 - 0x7C200600, // 00C0 CALL R8 3 - 0x24241105, // 00C1 GT R9 R8 K5 - 0x78260002, // 00C2 JMPF R9 #00C6 - 0x04241108, // 00C3 SUB R9 R8 K8 - 0x40260A09, // 00C4 CONNECT R9 K5 R9 - 0x941C0E09, // 00C5 GETIDX R7 R7 R9 - 0x8C240706, // 00C6 GETMET R9 R3 K6 - 0x882C0718, // 00C7 GETMBR R11 R3 K24 - 0x5C300E00, // 00C8 MOVE R12 R7 - 0x7C240600, // 00C9 CALL R9 3 - 0x80041200, // 00CA RET 1 R9 - 0x7002002E, // 00CB JMP #00FB - 0x541E000E, // 00CC LDINT R7 15 - 0x1C1C0A07, // 00CD EQ R7 R5 R7 - 0x781E000B, // 00CE JMPF R7 #00DB - 0x8C1C0706, // 00CF GETMET R7 R3 K6 - 0x88240718, // 00D0 GETMBR R9 R3 K24 - 0xB82A3200, // 00D1 GETNGBL R10 K25 - 0x8C281521, // 00D2 GETMET R10 R10 K33 - 0x7C280200, // 00D3 CALL R10 1 - 0x8C281512, // 00D4 GETMET R10 R10 K18 - 0x58300022, // 00D5 LDCONST R12 K34 - 0x58340023, // 00D6 LDCONST R13 K35 - 0x7C280600, // 00D7 CALL R10 3 - 0x7C1C0600, // 00D8 CALL R7 3 - 0x80040E00, // 00D9 RET 1 R7 - 0x7002001F, // 00DA JMP #00FB - 0x541E0010, // 00DB LDINT R7 17 - 0x1C1C0A07, // 00DC EQ R7 R5 R7 - 0x781E0005, // 00DD JMPF R7 #00E4 - 0x8C1C0706, // 00DE GETMET R7 R3 K6 - 0x88240724, // 00DF GETMBR R9 R3 K36 - 0x58280008, // 00E0 LDCONST R10 K8 - 0x7C1C0600, // 00E1 CALL R7 3 - 0x80040E00, // 00E2 RET 1 R7 - 0x70020016, // 00E3 JMP #00FB - 0x541E0011, // 00E4 LDINT R7 18 - 0x1C1C0A07, // 00E5 EQ R7 R5 R7 - 0x781E000B, // 00E6 JMPF R7 #00F3 - 0x8C1C0706, // 00E7 GETMET R7 R3 K6 - 0x88240718, // 00E8 GETMBR R9 R3 K24 - 0xB82A3200, // 00E9 GETNGBL R10 K25 - 0x8C281521, // 00EA GETMET R10 R10 K33 - 0x7C280200, // 00EB CALL R10 1 - 0x8C281512, // 00EC GETMET R10 R10 K18 - 0x58300022, // 00ED LDCONST R12 K34 - 0x58340023, // 00EE LDCONST R13 K35 - 0x7C280600, // 00EF CALL R10 3 - 0x7C1C0600, // 00F0 CALL R7 3 - 0x80040E00, // 00F1 RET 1 R7 - 0x70020007, // 00F2 JMP #00FB - 0x601C0003, // 00F3 GETGBL R7 G3 - 0x5C200000, // 00F4 MOVE R8 R0 - 0x7C1C0200, // 00F5 CALL R7 1 - 0x8C1C0F16, // 00F6 GETMET R7 R7 K22 - 0x5C240200, // 00F7 MOVE R9 R1 - 0x5C280400, // 00F8 MOVE R10 R2 - 0x7C1C0600, // 00F9 CALL R7 3 - 0x80040E00, // 00FA RET 1 R7 - 0x70020007, // 00FB JMP #0104 - 0x60180003, // 00FC GETGBL R6 G3 - 0x5C1C0000, // 00FD MOVE R7 R0 - 0x7C180200, // 00FE CALL R6 1 - 0x8C180D16, // 00FF GETMET R6 R6 K22 - 0x5C200200, // 0100 MOVE R8 R1 - 0x5C240400, // 0101 MOVE R9 R2 - 0x7C180600, // 0102 CALL R6 3 - 0x80040C00, // 0103 RET 1 R6 - 0x80000000, // 0104 RET 0 + 0x88240111, // 0076 GETMBR R9 R0 K17 + 0x8C241312, // 0077 GETMET R9 R9 K18 + 0x8C2C0313, // 0078 GETMET R11 R1 K19 + 0x7C2C0200, // 0079 CALL R11 1 + 0x7C240400, // 007A CALL R9 2 + 0x4C280000, // 007B LDNIL R10 + 0x1C24120A, // 007C EQ R9 R9 R10 + 0x7826000E, // 007D JMPF R9 #008D + 0x88240114, // 007E GETMBR R9 R0 K20 + 0x88241315, // 007F GETMBR R9 R9 K21 + 0x7426000B, // 0080 JMPT R9 #008D + 0x8C240F0E, // 0081 GETMET R9 R7 K14 + 0x7C240200, // 0082 CALL R9 1 + 0x8C28130F, // 0083 GETMET R10 R9 K15 + 0x58300005, // 0084 LDCONST R12 K5 + 0x88340907, // 0085 GETMBR R13 R4 K7 + 0x543A0012, // 0086 LDINT R14 19 + 0x7C280800, // 0087 CALL R10 4 + 0x8C28130F, // 0088 GETMET R10 R9 K15 + 0x58300008, // 0089 LDCONST R12 K8 + 0x88340907, // 008A GETMBR R13 R4 K7 + 0x58380008, // 008B LDCONST R14 K8 + 0x7C280800, // 008C CALL R10 4 + 0x80040E00, // 008D RET 1 R7 + 0x70020008, // 008E JMP #0098 + 0x601C0003, // 008F GETGBL R7 G3 + 0x5C200000, // 0090 MOVE R8 R0 + 0x7C1C0200, // 0091 CALL R7 1 + 0x8C1C0F16, // 0092 GETMET R7 R7 K22 + 0x5C240200, // 0093 MOVE R9 R1 + 0x5C280400, // 0094 MOVE R10 R2 + 0x5C2C0600, // 0095 MOVE R11 R3 + 0x7C1C0800, // 0096 CALL R7 4 + 0x80040E00, // 0097 RET 1 R7 + 0x7002006D, // 0098 JMP #0107 + 0x541E0038, // 0099 LDINT R7 57 + 0x1C1C0A07, // 009A EQ R7 R5 R7 + 0x781E0061, // 009B JMPF R7 #00FE + 0xA41E2E00, // 009C IMPORT R7 K23 + 0x1C200D04, // 009D EQ R8 R6 K4 + 0x7822000A, // 009E JMPF R8 #00AA + 0x8C200706, // 009F GETMET R8 R3 K6 + 0x88280918, // 00A0 GETMBR R10 R4 K24 + 0xB82E3200, // 00A1 GETNGBL R11 K25 + 0x8C2C171A, // 00A2 GETMET R11 R11 K26 + 0x5834001B, // 00A3 LDCONST R13 K27 + 0x50380200, // 00A4 LDBOOL R14 1 0 + 0x7C2C0600, // 00A5 CALL R11 3 + 0x942C171B, // 00A6 GETIDX R11 R11 K27 + 0x7C200600, // 00A7 CALL R8 3 + 0x80041000, // 00A8 RET 1 R8 + 0x70020052, // 00A9 JMP #00FD + 0x54220004, // 00AA LDINT R8 5 + 0x1C200C08, // 00AB EQ R8 R6 R8 + 0x78220006, // 00AC JMPF R8 #00B4 + 0x8C200706, // 00AD GETMET R8 R3 K6 + 0x88280918, // 00AE GETMBR R10 R4 K24 + 0x8C2C011C, // 00AF GETMET R11 R0 K28 + 0x7C2C0200, // 00B0 CALL R11 1 + 0x7C200600, // 00B1 CALL R8 3 + 0x80041000, // 00B2 RET 1 R8 + 0x70020048, // 00B3 JMP #00FD + 0x54220009, // 00B4 LDINT R8 10 + 0x1C200C08, // 00B5 EQ R8 R6 R8 + 0x78220015, // 00B6 JMPF R8 #00CD + 0xB8223200, // 00B7 GETNGBL R8 K25 + 0x8C20111A, // 00B8 GETMET R8 R8 K26 + 0x5828001D, // 00B9 LDCONST R10 K29 + 0x502C0200, // 00BA LDBOOL R11 1 0 + 0x7C200600, // 00BB CALL R8 3 + 0x9420111E, // 00BC GETIDX R8 R8 K30 + 0x9420111F, // 00BD GETIDX R8 R8 K31 + 0x8C240F12, // 00BE GETMET R9 R7 K18 + 0x5C2C1000, // 00BF MOVE R11 R8 + 0x58300020, // 00C0 LDCONST R12 K32 + 0x7C240600, // 00C1 CALL R9 3 + 0x24281305, // 00C2 GT R10 R9 K5 + 0x782A0002, // 00C3 JMPF R10 #00C7 + 0x04281308, // 00C4 SUB R10 R9 K8 + 0x402A0A0A, // 00C5 CONNECT R10 K5 R10 + 0x9420100A, // 00C6 GETIDX R8 R8 R10 + 0x8C280706, // 00C7 GETMET R10 R3 K6 + 0x88300918, // 00C8 GETMBR R12 R4 K24 + 0x5C341000, // 00C9 MOVE R13 R8 + 0x7C280600, // 00CA CALL R10 3 + 0x80041400, // 00CB RET 1 R10 + 0x7002002F, // 00CC JMP #00FD + 0x5422000E, // 00CD LDINT R8 15 + 0x1C200C08, // 00CE EQ R8 R6 R8 + 0x7822000B, // 00CF JMPF R8 #00DC + 0x8C200706, // 00D0 GETMET R8 R3 K6 + 0x88280918, // 00D1 GETMBR R10 R4 K24 + 0xB82E3200, // 00D2 GETNGBL R11 K25 + 0x8C2C1721, // 00D3 GETMET R11 R11 K33 + 0x7C2C0200, // 00D4 CALL R11 1 + 0x8C2C1712, // 00D5 GETMET R11 R11 K18 + 0x58340022, // 00D6 LDCONST R13 K34 + 0x58380023, // 00D7 LDCONST R14 K35 + 0x7C2C0600, // 00D8 CALL R11 3 + 0x7C200600, // 00D9 CALL R8 3 + 0x80041000, // 00DA RET 1 R8 + 0x70020020, // 00DB JMP #00FD + 0x54220010, // 00DC LDINT R8 17 + 0x1C200C08, // 00DD EQ R8 R6 R8 + 0x78220005, // 00DE JMPF R8 #00E5 + 0x8C200706, // 00DF GETMET R8 R3 K6 + 0x88280924, // 00E0 GETMBR R10 R4 K36 + 0x582C0008, // 00E1 LDCONST R11 K8 + 0x7C200600, // 00E2 CALL R8 3 + 0x80041000, // 00E3 RET 1 R8 + 0x70020017, // 00E4 JMP #00FD + 0x54220011, // 00E5 LDINT R8 18 + 0x1C200C08, // 00E6 EQ R8 R6 R8 + 0x7822000B, // 00E7 JMPF R8 #00F4 + 0x8C200706, // 00E8 GETMET R8 R3 K6 + 0x88280918, // 00E9 GETMBR R10 R4 K24 + 0xB82E3200, // 00EA GETNGBL R11 K25 + 0x8C2C1721, // 00EB GETMET R11 R11 K33 + 0x7C2C0200, // 00EC CALL R11 1 + 0x8C2C1712, // 00ED GETMET R11 R11 K18 + 0x58340022, // 00EE LDCONST R13 K34 + 0x58380023, // 00EF LDCONST R14 K35 + 0x7C2C0600, // 00F0 CALL R11 3 + 0x7C200600, // 00F1 CALL R8 3 + 0x80041000, // 00F2 RET 1 R8 + 0x70020008, // 00F3 JMP #00FD + 0x60200003, // 00F4 GETGBL R8 G3 + 0x5C240000, // 00F5 MOVE R9 R0 + 0x7C200200, // 00F6 CALL R8 1 + 0x8C201116, // 00F7 GETMET R8 R8 K22 + 0x5C280200, // 00F8 MOVE R10 R1 + 0x5C2C0400, // 00F9 MOVE R11 R2 + 0x5C300600, // 00FA MOVE R12 R3 + 0x7C200800, // 00FB CALL R8 4 + 0x80041000, // 00FC RET 1 R8 + 0x70020008, // 00FD JMP #0107 + 0x601C0003, // 00FE GETGBL R7 G3 + 0x5C200000, // 00FF MOVE R8 R0 + 0x7C1C0200, // 0100 CALL R7 1 + 0x8C1C0F16, // 0101 GETMET R7 R7 K22 + 0x5C240200, // 0102 MOVE R9 R1 + 0x5C280400, // 0103 MOVE R10 R2 + 0x5C2C0600, // 0104 MOVE R11 R3 + 0x7C1C0800, // 0105 CALL R7 4 + 0x80040E00, // 0106 RET 1 R7 + 0x80000000, // 0107 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light0.h index a9fd5b727b82..28aa6cea3102 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light0.h @@ -67,8 +67,8 @@ be_local_closure(Matter_Plugin_Light0_update_shadow, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Light0_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -82,7 +82,7 @@ be_local_closure(Matter_Plugin_Light0_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_nested_str_weak(update_shadow_lazy), /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(BOOL), /* K8 */ be_nested_str_weak(shadow_onoff), /* K9 */ be_nested_str_weak(U4), @@ -90,51 +90,52 @@ be_local_closure(Matter_Plugin_Light0_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0005, // 0004 LDINT R6 6 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A001B, // 0006 JMPF R6 #0023 - 0x8C180104, // 0007 GETMET R6 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x1C180B05, // 0009 EQ R6 R5 K5 - 0x781A0005, // 000A JMPF R6 #0011 - 0x8C180706, // 000B GETMET R6 R3 K6 - 0x88200707, // 000C GETMBR R8 R3 K7 - 0x88240108, // 000D GETMBR R9 R0 K8 - 0x7C180600, // 000E CALL R6 3 - 0x80040C00, // 000F RET 1 R6 + ( &(const binstruction[45]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0005, // 0004 LDINT R7 6 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E001B, // 0006 JMPF R7 #0023 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E0005, // 000A JMPF R7 #0011 + 0x8C1C0706, // 000B GETMET R7 R3 K6 + 0x88240907, // 000C GETMBR R9 R4 K7 + 0x88280108, // 000D GETMBR R10 R0 K8 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 0x70020010, // 0010 JMP #0022 - 0x541AFFFB, // 0011 LDINT R6 65532 - 0x1C180A06, // 0012 EQ R6 R5 R6 - 0x781A0005, // 0013 JMPF R6 #001A - 0x8C180706, // 0014 GETMET R6 R3 K6 - 0x88200709, // 0015 GETMBR R8 R3 K9 - 0x58240005, // 0016 LDCONST R9 K5 - 0x7C180600, // 0017 CALL R6 3 - 0x80040C00, // 0018 RET 1 R6 + 0x541EFFFB, // 0011 LDINT R7 65532 + 0x1C1C0C07, // 0012 EQ R7 R6 R7 + 0x781E0005, // 0013 JMPF R7 #001A + 0x8C1C0706, // 0014 GETMET R7 R3 K6 + 0x88240909, // 0015 GETMBR R9 R4 K9 + 0x58280005, // 0016 LDCONST R10 K5 + 0x7C1C0600, // 0017 CALL R7 3 + 0x80040E00, // 0018 RET 1 R7 0x70020007, // 0019 JMP #0022 - 0x541AFFFC, // 001A LDINT R6 65533 - 0x1C180A06, // 001B EQ R6 R5 R6 - 0x781A0004, // 001C JMPF R6 #0022 - 0x8C180706, // 001D GETMET R6 R3 K6 - 0x88200709, // 001E GETMBR R8 R3 K9 - 0x54260003, // 001F LDINT R9 4 - 0x7C180600, // 0020 CALL R6 3 - 0x80040C00, // 0021 RET 1 R6 - 0x70020007, // 0022 JMP #002B - 0x60180003, // 0023 GETGBL R6 G3 - 0x5C1C0000, // 0024 MOVE R7 R0 - 0x7C180200, // 0025 CALL R6 1 - 0x8C180D0A, // 0026 GETMET R6 R6 K10 - 0x5C200200, // 0027 MOVE R8 R1 - 0x5C240400, // 0028 MOVE R9 R2 - 0x7C180600, // 0029 CALL R6 3 - 0x80040C00, // 002A RET 1 R6 - 0x80000000, // 002B RET 0 + 0x541EFFFC, // 001A LDINT R7 65533 + 0x1C1C0C07, // 001B EQ R7 R6 R7 + 0x781E0004, // 001C JMPF R7 #0022 + 0x8C1C0706, // 001D GETMET R7 R3 K6 + 0x88240909, // 001E GETMBR R9 R4 K9 + 0x542A0003, // 001F LDINT R10 4 + 0x7C1C0600, // 0020 CALL R7 3 + 0x80040E00, // 0021 RET 1 R7 + 0x70020008, // 0022 JMP #002C + 0x601C0003, // 0023 GETGBL R7 G3 + 0x5C200000, // 0024 MOVE R8 R0 + 0x7C1C0200, // 0025 CALL R7 1 + 0x8C1C0F0A, // 0026 GETMET R7 R7 K10 + 0x5C240200, // 0027 MOVE R9 R1 + 0x5C280400, // 0028 MOVE R10 R2 + 0x5C2C0600, // 0029 MOVE R11 R3 + 0x7C1C0800, // 002A CALL R7 4 + 0x80040E00, // 002B RET 1 R7 + 0x80000000, // 002C RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light1.h index ca1b2083130d..119611183ccb 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light1.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light1.h @@ -237,8 +237,8 @@ be_local_closure(Matter_Plugin_Light1_invoke_request, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Light1_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -252,7 +252,7 @@ be_local_closure(Matter_Plugin_Light1_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_nested_str_weak(update_shadow_lazy), /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(U1), /* K8 */ be_nested_str_weak(shadow_bri), /* K9 */ be_const_int(2), @@ -263,85 +263,86 @@ be_local_closure(Matter_Plugin_Light1_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[78]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0007, // 0004 LDINT R6 8 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A003D, // 0006 JMPF R6 #0045 - 0x8C180104, // 0007 GETMET R6 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x1C180B05, // 0009 EQ R6 R5 K5 - 0x781A0005, // 000A JMPF R6 #0011 - 0x8C180706, // 000B GETMET R6 R3 K6 - 0x88200707, // 000C GETMBR R8 R3 K7 - 0x88240108, // 000D GETMBR R9 R0 K8 - 0x7C180600, // 000E CALL R6 3 - 0x80040C00, // 000F RET 1 R6 + ( &(const binstruction[79]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0007, // 0004 LDINT R7 8 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E003D, // 0006 JMPF R7 #0045 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E0005, // 000A JMPF R7 #0011 + 0x8C1C0706, // 000B GETMET R7 R3 K6 + 0x88240907, // 000C GETMBR R9 R4 K7 + 0x88280108, // 000D GETMBR R10 R0 K8 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 0x70020032, // 0010 JMP #0044 - 0x1C180B09, // 0011 EQ R6 R5 K9 - 0x781A0005, // 0012 JMPF R6 #0019 - 0x8C180706, // 0013 GETMET R6 R3 K6 - 0x88200707, // 0014 GETMBR R8 R3 K7 - 0x58240005, // 0015 LDCONST R9 K5 - 0x7C180600, // 0016 CALL R6 3 - 0x80040C00, // 0017 RET 1 R6 + 0x1C1C0D09, // 0011 EQ R7 R6 K9 + 0x781E0005, // 0012 JMPF R7 #0019 + 0x8C1C0706, // 0013 GETMET R7 R3 K6 + 0x88240907, // 0014 GETMBR R9 R4 K7 + 0x58280005, // 0015 LDCONST R10 K5 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 0x7002002A, // 0018 JMP #0044 - 0x1C180B0A, // 0019 EQ R6 R5 K10 - 0x781A0005, // 001A JMPF R6 #0021 - 0x8C180706, // 001B GETMET R6 R3 K6 - 0x88200707, // 001C GETMBR R8 R3 K7 - 0x542600FD, // 001D LDINT R9 254 - 0x7C180600, // 001E CALL R6 3 - 0x80040C00, // 001F RET 1 R6 + 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x781E0005, // 001A JMPF R7 #0021 + 0x8C1C0706, // 001B GETMET R7 R3 K6 + 0x88240907, // 001C GETMBR R9 R4 K7 + 0x542A00FD, // 001D LDINT R10 254 + 0x7C1C0600, // 001E CALL R7 3 + 0x80040E00, // 001F RET 1 R7 0x70020022, // 0020 JMP #0044 - 0x541A000E, // 0021 LDINT R6 15 - 0x1C180A06, // 0022 EQ R6 R5 R6 - 0x781A0005, // 0023 JMPF R6 #002A - 0x8C180706, // 0024 GETMET R6 R3 K6 - 0x88200707, // 0025 GETMBR R8 R3 K7 - 0x58240005, // 0026 LDCONST R9 K5 - 0x7C180600, // 0027 CALL R6 3 - 0x80040C00, // 0028 RET 1 R6 + 0x541E000E, // 0021 LDINT R7 15 + 0x1C1C0C07, // 0022 EQ R7 R6 R7 + 0x781E0005, // 0023 JMPF R7 #002A + 0x8C1C0706, // 0024 GETMET R7 R3 K6 + 0x88240907, // 0025 GETMBR R9 R4 K7 + 0x58280005, // 0026 LDCONST R10 K5 + 0x7C1C0600, // 0027 CALL R7 3 + 0x80040E00, // 0028 RET 1 R7 0x70020019, // 0029 JMP #0044 - 0x541A0010, // 002A LDINT R6 17 - 0x1C180A06, // 002B EQ R6 R5 R6 - 0x781A0005, // 002C JMPF R6 #0033 - 0x8C180706, // 002D GETMET R6 R3 K6 - 0x88200707, // 002E GETMBR R8 R3 K7 - 0x88240108, // 002F GETMBR R9 R0 K8 - 0x7C180600, // 0030 CALL R6 3 - 0x80040C00, // 0031 RET 1 R6 + 0x541E0010, // 002A LDINT R7 17 + 0x1C1C0C07, // 002B EQ R7 R6 R7 + 0x781E0005, // 002C JMPF R7 #0033 + 0x8C1C0706, // 002D GETMET R7 R3 K6 + 0x88240907, // 002E GETMBR R9 R4 K7 + 0x88280108, // 002F GETMBR R10 R0 K8 + 0x7C1C0600, // 0030 CALL R7 3 + 0x80040E00, // 0031 RET 1 R7 0x70020010, // 0032 JMP #0044 - 0x541AFFFB, // 0033 LDINT R6 65532 - 0x1C180A06, // 0034 EQ R6 R5 R6 - 0x781A0005, // 0035 JMPF R6 #003C - 0x8C180706, // 0036 GETMET R6 R3 K6 - 0x8820070B, // 0037 GETMBR R8 R3 K11 - 0x5824000C, // 0038 LDCONST R9 K12 - 0x7C180600, // 0039 CALL R6 3 - 0x80040C00, // 003A RET 1 R6 + 0x541EFFFB, // 0033 LDINT R7 65532 + 0x1C1C0C07, // 0034 EQ R7 R6 R7 + 0x781E0005, // 0035 JMPF R7 #003C + 0x8C1C0706, // 0036 GETMET R7 R3 K6 + 0x8824090B, // 0037 GETMBR R9 R4 K11 + 0x5828000C, // 0038 LDCONST R10 K12 + 0x7C1C0600, // 0039 CALL R7 3 + 0x80040E00, // 003A RET 1 R7 0x70020007, // 003B JMP #0044 - 0x541AFFFC, // 003C LDINT R6 65533 - 0x1C180A06, // 003D EQ R6 R5 R6 - 0x781A0004, // 003E JMPF R6 #0044 - 0x8C180706, // 003F GETMET R6 R3 K6 - 0x8820070B, // 0040 GETMBR R8 R3 K11 - 0x54260004, // 0041 LDINT R9 5 - 0x7C180600, // 0042 CALL R6 3 - 0x80040C00, // 0043 RET 1 R6 - 0x70020007, // 0044 JMP #004D - 0x60180003, // 0045 GETGBL R6 G3 - 0x5C1C0000, // 0046 MOVE R7 R0 - 0x7C180200, // 0047 CALL R6 1 - 0x8C180D0D, // 0048 GETMET R6 R6 K13 - 0x5C200200, // 0049 MOVE R8 R1 - 0x5C240400, // 004A MOVE R9 R2 - 0x7C180600, // 004B CALL R6 3 - 0x80040C00, // 004C RET 1 R6 - 0x80000000, // 004D RET 0 + 0x541EFFFC, // 003C LDINT R7 65533 + 0x1C1C0C07, // 003D EQ R7 R6 R7 + 0x781E0004, // 003E JMPF R7 #0044 + 0x8C1C0706, // 003F GETMET R7 R3 K6 + 0x8824090B, // 0040 GETMBR R9 R4 K11 + 0x542A0004, // 0041 LDINT R10 5 + 0x7C1C0600, // 0042 CALL R7 3 + 0x80040E00, // 0043 RET 1 R7 + 0x70020008, // 0044 JMP #004E + 0x601C0003, // 0045 GETGBL R7 G3 + 0x5C200000, // 0046 MOVE R8 R0 + 0x7C1C0200, // 0047 CALL R7 1 + 0x8C1C0F0D, // 0048 GETMET R7 R7 K13 + 0x5C240200, // 0049 MOVE R9 R1 + 0x5C280400, // 004A MOVE R10 R2 + 0x5C2C0600, // 004B MOVE R11 R3 + 0x7C1C0800, // 004C CALL R7 4 + 0x80040E00, // 004D RET 1 R7 + 0x80000000, // 004E RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light2.h index 55b734a1d693..8294b2afaee8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light2.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light2.h @@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Light2; ********************************************************************/ be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -25,7 +25,7 @@ be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */ /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_nested_str_weak(create_TLV), + /* K5 */ be_nested_str_weak(set), /* K6 */ be_nested_str_weak(U1), /* K7 */ be_nested_str_weak(shadow_ct), /* K8 */ be_const_int(2), @@ -37,88 +37,89 @@ be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[81]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A02FF, // 0004 LDINT R6 768 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0040, // 0006 JMPF R6 #0048 - 0x8C180104, // 0007 GETMET R6 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x541A0006, // 0009 LDINT R6 7 - 0x1C180A06, // 000A EQ R6 R5 R6 - 0x781A0005, // 000B JMPF R6 #0012 - 0x8C180705, // 000C GETMET R6 R3 K5 - 0x88200706, // 000D GETMBR R8 R3 K6 - 0x88240107, // 000E GETMBR R9 R0 K7 - 0x7C180600, // 000F CALL R6 3 - 0x80040C00, // 0010 RET 1 R6 + ( &(const binstruction[82]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E02FF, // 0004 LDINT R7 768 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0040, // 0006 JMPF R7 #0048 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x541E0006, // 0009 LDINT R7 7 + 0x1C1C0C07, // 000A EQ R7 R6 R7 + 0x781E0005, // 000B JMPF R7 #0012 + 0x8C1C0705, // 000C GETMET R7 R3 K5 + 0x88240906, // 000D GETMBR R9 R4 K6 + 0x88280107, // 000E GETMBR R10 R0 K7 + 0x7C1C0600, // 000F CALL R7 3 + 0x80040E00, // 0010 RET 1 R7 0x70020034, // 0011 JMP #0047 - 0x541A0007, // 0012 LDINT R6 8 - 0x1C180A06, // 0013 EQ R6 R5 R6 - 0x781A0005, // 0014 JMPF R6 #001B - 0x8C180705, // 0015 GETMET R6 R3 K5 - 0x88200706, // 0016 GETMBR R8 R3 K6 - 0x58240008, // 0017 LDCONST R9 K8 - 0x7C180600, // 0018 CALL R6 3 - 0x80040C00, // 0019 RET 1 R6 + 0x541E0007, // 0012 LDINT R7 8 + 0x1C1C0C07, // 0013 EQ R7 R6 R7 + 0x781E0005, // 0014 JMPF R7 #001B + 0x8C1C0705, // 0015 GETMET R7 R3 K5 + 0x88240906, // 0016 GETMBR R9 R4 K6 + 0x58280008, // 0017 LDCONST R10 K8 + 0x7C1C0600, // 0018 CALL R7 3 + 0x80040E00, // 0019 RET 1 R7 0x7002002B, // 001A JMP #0047 - 0x541A000E, // 001B LDINT R6 15 - 0x1C180A06, // 001C EQ R6 R5 R6 - 0x781A0005, // 001D JMPF R6 #0024 - 0x8C180705, // 001E GETMET R6 R3 K5 - 0x88200706, // 001F GETMBR R8 R3 K6 - 0x58240009, // 0020 LDCONST R9 K9 - 0x7C180600, // 0021 CALL R6 3 - 0x80040C00, // 0022 RET 1 R6 + 0x541E000E, // 001B LDINT R7 15 + 0x1C1C0C07, // 001C EQ R7 R6 R7 + 0x781E0005, // 001D JMPF R7 #0024 + 0x8C1C0705, // 001E GETMET R7 R3 K5 + 0x88240906, // 001F GETMBR R9 R4 K6 + 0x58280009, // 0020 LDCONST R10 K9 + 0x7C1C0600, // 0021 CALL R7 3 + 0x80040E00, // 0022 RET 1 R7 0x70020022, // 0023 JMP #0047 - 0x541A400A, // 0024 LDINT R6 16395 - 0x1C180A06, // 0025 EQ R6 R5 R6 - 0x781A0005, // 0026 JMPF R6 #002D - 0x8C180705, // 0027 GETMET R6 R3 K5 - 0x88200706, // 0028 GETMBR R8 R3 K6 - 0x8824010A, // 0029 GETMBR R9 R0 K10 - 0x7C180600, // 002A CALL R6 3 - 0x80040C00, // 002B RET 1 R6 + 0x541E400A, // 0024 LDINT R7 16395 + 0x1C1C0C07, // 0025 EQ R7 R6 R7 + 0x781E0005, // 0026 JMPF R7 #002D + 0x8C1C0705, // 0027 GETMET R7 R3 K5 + 0x88240906, // 0028 GETMBR R9 R4 K6 + 0x8828010A, // 0029 GETMBR R10 R0 K10 + 0x7C1C0600, // 002A CALL R7 3 + 0x80040E00, // 002B RET 1 R7 0x70020019, // 002C JMP #0047 - 0x541A400B, // 002D LDINT R6 16396 - 0x1C180A06, // 002E EQ R6 R5 R6 - 0x781A0005, // 002F JMPF R6 #0036 - 0x8C180705, // 0030 GETMET R6 R3 K5 - 0x88200706, // 0031 GETMBR R8 R3 K6 - 0x8824010B, // 0032 GETMBR R9 R0 K11 - 0x7C180600, // 0033 CALL R6 3 - 0x80040C00, // 0034 RET 1 R6 + 0x541E400B, // 002D LDINT R7 16396 + 0x1C1C0C07, // 002E EQ R7 R6 R7 + 0x781E0005, // 002F JMPF R7 #0036 + 0x8C1C0705, // 0030 GETMET R7 R3 K5 + 0x88240906, // 0031 GETMBR R9 R4 K6 + 0x8828010B, // 0032 GETMBR R10 R0 K11 + 0x7C1C0600, // 0033 CALL R7 3 + 0x80040E00, // 0034 RET 1 R7 0x70020010, // 0035 JMP #0047 - 0x541AFFFB, // 0036 LDINT R6 65532 - 0x1C180A06, // 0037 EQ R6 R5 R6 - 0x781A0005, // 0038 JMPF R6 #003F - 0x8C180705, // 0039 GETMET R6 R3 K5 - 0x8820070C, // 003A GETMBR R8 R3 K12 - 0x5426000F, // 003B LDINT R9 16 - 0x7C180600, // 003C CALL R6 3 - 0x80040C00, // 003D RET 1 R6 + 0x541EFFFB, // 0036 LDINT R7 65532 + 0x1C1C0C07, // 0037 EQ R7 R6 R7 + 0x781E0005, // 0038 JMPF R7 #003F + 0x8C1C0705, // 0039 GETMET R7 R3 K5 + 0x8824090C, // 003A GETMBR R9 R4 K12 + 0x542A000F, // 003B LDINT R10 16 + 0x7C1C0600, // 003C CALL R7 3 + 0x80040E00, // 003D RET 1 R7 0x70020007, // 003E JMP #0047 - 0x541AFFFC, // 003F LDINT R6 65533 - 0x1C180A06, // 0040 EQ R6 R5 R6 - 0x781A0004, // 0041 JMPF R6 #0047 - 0x8C180705, // 0042 GETMET R6 R3 K5 - 0x8820070C, // 0043 GETMBR R8 R3 K12 - 0x54260004, // 0044 LDINT R9 5 - 0x7C180600, // 0045 CALL R6 3 - 0x80040C00, // 0046 RET 1 R6 - 0x70020007, // 0047 JMP #0050 - 0x60180003, // 0048 GETGBL R6 G3 - 0x5C1C0000, // 0049 MOVE R7 R0 - 0x7C180200, // 004A CALL R6 1 - 0x8C180D0D, // 004B GETMET R6 R6 K13 - 0x5C200200, // 004C MOVE R8 R1 - 0x5C240400, // 004D MOVE R9 R2 - 0x7C180600, // 004E CALL R6 3 - 0x80040C00, // 004F RET 1 R6 - 0x80000000, // 0050 RET 0 + 0x541EFFFC, // 003F LDINT R7 65533 + 0x1C1C0C07, // 0040 EQ R7 R6 R7 + 0x781E0004, // 0041 JMPF R7 #0047 + 0x8C1C0705, // 0042 GETMET R7 R3 K5 + 0x8824090C, // 0043 GETMBR R9 R4 K12 + 0x542A0004, // 0044 LDINT R10 5 + 0x7C1C0600, // 0045 CALL R7 3 + 0x80040E00, // 0046 RET 1 R7 + 0x70020008, // 0047 JMP #0051 + 0x601C0003, // 0048 GETGBL R7 G3 + 0x5C200000, // 0049 MOVE R8 R0 + 0x7C1C0200, // 004A CALL R7 1 + 0x8C1C0F0D, // 004B GETMET R7 R7 K13 + 0x5C240200, // 004C MOVE R9 R1 + 0x5C280400, // 004D MOVE R10 R2 + 0x5C2C0600, // 004E MOVE R11 R3 + 0x7C1C0800, // 004F CALL R7 4 + 0x80040E00, // 0050 RET 1 R7 + 0x80000000, // 0051 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h index 97ac6cc6bf65..284eaf8e6f67 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h @@ -112,8 +112,8 @@ be_local_closure(Matter_Plugin_Light3_update_shadow, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -127,7 +127,7 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_nested_str_weak(update_shadow_lazy), /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(U1), /* K8 */ be_nested_str_weak(shadow_hue), /* K9 */ be_const_int(1), @@ -137,113 +137,114 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[106]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A02FF, // 0004 LDINT R6 768 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0059, // 0006 JMPF R6 #0061 - 0x8C180104, // 0007 GETMET R6 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x1C180B05, // 0009 EQ R6 R5 K5 - 0x781A0005, // 000A JMPF R6 #0011 - 0x8C180706, // 000B GETMET R6 R3 K6 - 0x88200707, // 000C GETMBR R8 R3 K7 - 0x88240108, // 000D GETMBR R9 R0 K8 - 0x7C180600, // 000E CALL R6 3 - 0x80040C00, // 000F RET 1 R6 + ( &(const binstruction[107]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E02FF, // 0004 LDINT R7 768 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0059, // 0006 JMPF R7 #0061 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E0005, // 000A JMPF R7 #0011 + 0x8C1C0706, // 000B GETMET R7 R3 K6 + 0x88240907, // 000C GETMBR R9 R4 K7 + 0x88280108, // 000D GETMBR R10 R0 K8 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 0x7002004E, // 0010 JMP #0060 - 0x1C180B09, // 0011 EQ R6 R5 K9 - 0x781A0005, // 0012 JMPF R6 #0019 - 0x8C180706, // 0013 GETMET R6 R3 K6 - 0x88200707, // 0014 GETMBR R8 R3 K7 - 0x8824010A, // 0015 GETMBR R9 R0 K10 - 0x7C180600, // 0016 CALL R6 3 - 0x80040C00, // 0017 RET 1 R6 + 0x1C1C0D09, // 0011 EQ R7 R6 K9 + 0x781E0005, // 0012 JMPF R7 #0019 + 0x8C1C0706, // 0013 GETMET R7 R3 K6 + 0x88240907, // 0014 GETMBR R9 R4 K7 + 0x8828010A, // 0015 GETMBR R10 R0 K10 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 0x70020046, // 0018 JMP #0060 - 0x541A0006, // 0019 LDINT R6 7 - 0x1C180A06, // 001A EQ R6 R5 R6 - 0x781A0005, // 001B JMPF R6 #0022 - 0x8C180706, // 001C GETMET R6 R3 K6 - 0x88200707, // 001D GETMBR R8 R3 K7 - 0x58240005, // 001E LDCONST R9 K5 - 0x7C180600, // 001F CALL R6 3 - 0x80040C00, // 0020 RET 1 R6 + 0x541E0006, // 0019 LDINT R7 7 + 0x1C1C0C07, // 001A EQ R7 R6 R7 + 0x781E0005, // 001B JMPF R7 #0022 + 0x8C1C0706, // 001C GETMET R7 R3 K6 + 0x88240907, // 001D GETMBR R9 R4 K7 + 0x58280005, // 001E LDCONST R10 K5 + 0x7C1C0600, // 001F CALL R7 3 + 0x80040E00, // 0020 RET 1 R7 0x7002003D, // 0021 JMP #0060 - 0x541A0007, // 0022 LDINT R6 8 - 0x1C180A06, // 0023 EQ R6 R5 R6 - 0x781A0005, // 0024 JMPF R6 #002B - 0x8C180706, // 0025 GETMET R6 R3 K6 - 0x88200707, // 0026 GETMBR R8 R3 K7 - 0x58240005, // 0027 LDCONST R9 K5 - 0x7C180600, // 0028 CALL R6 3 - 0x80040C00, // 0029 RET 1 R6 + 0x541E0007, // 0022 LDINT R7 8 + 0x1C1C0C07, // 0023 EQ R7 R6 R7 + 0x781E0005, // 0024 JMPF R7 #002B + 0x8C1C0706, // 0025 GETMET R7 R3 K6 + 0x88240907, // 0026 GETMBR R9 R4 K7 + 0x58280005, // 0027 LDCONST R10 K5 + 0x7C1C0600, // 0028 CALL R7 3 + 0x80040E00, // 0029 RET 1 R7 0x70020034, // 002A JMP #0060 - 0x541A000E, // 002B LDINT R6 15 - 0x1C180A06, // 002C EQ R6 R5 R6 - 0x781A0005, // 002D JMPF R6 #0034 - 0x8C180706, // 002E GETMET R6 R3 K6 - 0x88200707, // 002F GETMBR R8 R3 K7 - 0x58240005, // 0030 LDCONST R9 K5 - 0x7C180600, // 0031 CALL R6 3 - 0x80040C00, // 0032 RET 1 R6 + 0x541E000E, // 002B LDINT R7 15 + 0x1C1C0C07, // 002C EQ R7 R6 R7 + 0x781E0005, // 002D JMPF R7 #0034 + 0x8C1C0706, // 002E GETMET R7 R3 K6 + 0x88240907, // 002F GETMBR R9 R4 K7 + 0x58280005, // 0030 LDCONST R10 K5 + 0x7C1C0600, // 0031 CALL R7 3 + 0x80040E00, // 0032 RET 1 R7 0x7002002B, // 0033 JMP #0060 - 0x541A4000, // 0034 LDINT R6 16385 - 0x1C180A06, // 0035 EQ R6 R5 R6 - 0x781A0005, // 0036 JMPF R6 #003D - 0x8C180706, // 0037 GETMET R6 R3 K6 - 0x88200707, // 0038 GETMBR R8 R3 K7 - 0x58240005, // 0039 LDCONST R9 K5 - 0x7C180600, // 003A CALL R6 3 - 0x80040C00, // 003B RET 1 R6 + 0x541E4000, // 0034 LDINT R7 16385 + 0x1C1C0C07, // 0035 EQ R7 R6 R7 + 0x781E0005, // 0036 JMPF R7 #003D + 0x8C1C0706, // 0037 GETMET R7 R3 K6 + 0x88240907, // 0038 GETMBR R9 R4 K7 + 0x58280005, // 0039 LDCONST R10 K5 + 0x7C1C0600, // 003A CALL R7 3 + 0x80040E00, // 003B RET 1 R7 0x70020022, // 003C JMP #0060 - 0x541A4009, // 003D LDINT R6 16394 - 0x1C180A06, // 003E EQ R6 R5 R6 - 0x781A0005, // 003F JMPF R6 #0046 - 0x8C180706, // 0040 GETMET R6 R3 K6 - 0x88200707, // 0041 GETMBR R8 R3 K7 - 0x58240009, // 0042 LDCONST R9 K9 - 0x7C180600, // 0043 CALL R6 3 - 0x80040C00, // 0044 RET 1 R6 + 0x541E4009, // 003D LDINT R7 16394 + 0x1C1C0C07, // 003E EQ R7 R6 R7 + 0x781E0005, // 003F JMPF R7 #0046 + 0x8C1C0706, // 0040 GETMET R7 R3 K6 + 0x88240907, // 0041 GETMBR R9 R4 K7 + 0x58280009, // 0042 LDCONST R10 K9 + 0x7C1C0600, // 0043 CALL R7 3 + 0x80040E00, // 0044 RET 1 R7 0x70020019, // 0045 JMP #0060 - 0x541A000F, // 0046 LDINT R6 16 - 0x1C180A06, // 0047 EQ R6 R5 R6 - 0x781A0005, // 0048 JMPF R6 #004F - 0x8C180706, // 0049 GETMET R6 R3 K6 - 0x88200707, // 004A GETMBR R8 R3 K7 - 0x58240005, // 004B LDCONST R9 K5 - 0x7C180600, // 004C CALL R6 3 - 0x80040C00, // 004D RET 1 R6 + 0x541E000F, // 0046 LDINT R7 16 + 0x1C1C0C07, // 0047 EQ R7 R6 R7 + 0x781E0005, // 0048 JMPF R7 #004F + 0x8C1C0706, // 0049 GETMET R7 R3 K6 + 0x88240907, // 004A GETMBR R9 R4 K7 + 0x58280005, // 004B LDCONST R10 K5 + 0x7C1C0600, // 004C CALL R7 3 + 0x80040E00, // 004D RET 1 R7 0x70020010, // 004E JMP #0060 - 0x541AFFFB, // 004F LDINT R6 65532 - 0x1C180A06, // 0050 EQ R6 R5 R6 - 0x781A0005, // 0051 JMPF R6 #0058 - 0x8C180706, // 0052 GETMET R6 R3 K6 - 0x8820070B, // 0053 GETMBR R8 R3 K11 - 0x58240009, // 0054 LDCONST R9 K9 - 0x7C180600, // 0055 CALL R6 3 - 0x80040C00, // 0056 RET 1 R6 + 0x541EFFFB, // 004F LDINT R7 65532 + 0x1C1C0C07, // 0050 EQ R7 R6 R7 + 0x781E0005, // 0051 JMPF R7 #0058 + 0x8C1C0706, // 0052 GETMET R7 R3 K6 + 0x8824090B, // 0053 GETMBR R9 R4 K11 + 0x58280009, // 0054 LDCONST R10 K9 + 0x7C1C0600, // 0055 CALL R7 3 + 0x80040E00, // 0056 RET 1 R7 0x70020007, // 0057 JMP #0060 - 0x541AFFFC, // 0058 LDINT R6 65533 - 0x1C180A06, // 0059 EQ R6 R5 R6 - 0x781A0004, // 005A JMPF R6 #0060 - 0x8C180706, // 005B GETMET R6 R3 K6 - 0x8820070B, // 005C GETMBR R8 R3 K11 - 0x54260004, // 005D LDINT R9 5 - 0x7C180600, // 005E CALL R6 3 - 0x80040C00, // 005F RET 1 R6 - 0x70020007, // 0060 JMP #0069 - 0x60180003, // 0061 GETGBL R6 G3 - 0x5C1C0000, // 0062 MOVE R7 R0 - 0x7C180200, // 0063 CALL R6 1 - 0x8C180D0C, // 0064 GETMET R6 R6 K12 - 0x5C200200, // 0065 MOVE R8 R1 - 0x5C240400, // 0066 MOVE R9 R2 - 0x7C180600, // 0067 CALL R6 3 - 0x80040C00, // 0068 RET 1 R6 - 0x80000000, // 0069 RET 0 + 0x541EFFFC, // 0058 LDINT R7 65533 + 0x1C1C0C07, // 0059 EQ R7 R6 R7 + 0x781E0004, // 005A JMPF R7 #0060 + 0x8C1C0706, // 005B GETMET R7 R3 K6 + 0x8824090B, // 005C GETMBR R9 R4 K11 + 0x542A0004, // 005D LDINT R10 5 + 0x7C1C0600, // 005E CALL R7 3 + 0x80040E00, // 005F RET 1 R7 + 0x70020008, // 0060 JMP #006A + 0x601C0003, // 0061 GETGBL R7 G3 + 0x5C200000, // 0062 MOVE R8 R0 + 0x7C1C0200, // 0063 CALL R7 1 + 0x8C1C0F0C, // 0064 GETMET R7 R7 K12 + 0x5C240200, // 0065 MOVE R9 R1 + 0x5C280400, // 0066 MOVE R10 R2 + 0x5C2C0600, // 0067 MOVE R11 R3 + 0x7C1C0800, // 0068 CALL R7 4 + 0x80040E00, // 0069 RET 1 R7 + 0x80000000, // 006A RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h index 5a8d6ac96865..bf855e11951b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h @@ -190,8 +190,8 @@ be_local_closure(Matter_Plugin_OnOff_parse_configuration, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -205,7 +205,7 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_nested_str_weak(update_shadow_lazy), /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(BOOL), /* K8 */ be_nested_str_weak(shadow_onoff), /* K9 */ be_nested_str_weak(U4), @@ -213,51 +213,52 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0005, // 0004 LDINT R6 6 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A001B, // 0006 JMPF R6 #0023 - 0x8C180104, // 0007 GETMET R6 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x1C180B05, // 0009 EQ R6 R5 K5 - 0x781A0005, // 000A JMPF R6 #0011 - 0x8C180706, // 000B GETMET R6 R3 K6 - 0x88200707, // 000C GETMBR R8 R3 K7 - 0x88240108, // 000D GETMBR R9 R0 K8 - 0x7C180600, // 000E CALL R6 3 - 0x80040C00, // 000F RET 1 R6 + ( &(const binstruction[45]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0005, // 0004 LDINT R7 6 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E001B, // 0006 JMPF R7 #0023 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E0005, // 000A JMPF R7 #0011 + 0x8C1C0706, // 000B GETMET R7 R3 K6 + 0x88240907, // 000C GETMBR R9 R4 K7 + 0x88280108, // 000D GETMBR R10 R0 K8 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 0x70020010, // 0010 JMP #0022 - 0x541AFFFB, // 0011 LDINT R6 65532 - 0x1C180A06, // 0012 EQ R6 R5 R6 - 0x781A0005, // 0013 JMPF R6 #001A - 0x8C180706, // 0014 GETMET R6 R3 K6 - 0x88200709, // 0015 GETMBR R8 R3 K9 - 0x58240005, // 0016 LDCONST R9 K5 - 0x7C180600, // 0017 CALL R6 3 - 0x80040C00, // 0018 RET 1 R6 + 0x541EFFFB, // 0011 LDINT R7 65532 + 0x1C1C0C07, // 0012 EQ R7 R6 R7 + 0x781E0005, // 0013 JMPF R7 #001A + 0x8C1C0706, // 0014 GETMET R7 R3 K6 + 0x88240909, // 0015 GETMBR R9 R4 K9 + 0x58280005, // 0016 LDCONST R10 K5 + 0x7C1C0600, // 0017 CALL R7 3 + 0x80040E00, // 0018 RET 1 R7 0x70020007, // 0019 JMP #0022 - 0x541AFFFC, // 001A LDINT R6 65533 - 0x1C180A06, // 001B EQ R6 R5 R6 - 0x781A0004, // 001C JMPF R6 #0022 - 0x8C180706, // 001D GETMET R6 R3 K6 - 0x88200709, // 001E GETMBR R8 R3 K9 - 0x54260003, // 001F LDINT R9 4 - 0x7C180600, // 0020 CALL R6 3 - 0x80040C00, // 0021 RET 1 R6 - 0x70020007, // 0022 JMP #002B - 0x60180003, // 0023 GETGBL R6 G3 - 0x5C1C0000, // 0024 MOVE R7 R0 - 0x7C180200, // 0025 CALL R6 1 - 0x8C180D0A, // 0026 GETMET R6 R6 K10 - 0x5C200200, // 0027 MOVE R8 R1 - 0x5C240400, // 0028 MOVE R9 R2 - 0x7C180600, // 0029 CALL R6 3 - 0x80040C00, // 002A RET 1 R6 - 0x80000000, // 002B RET 0 + 0x541EFFFC, // 001A LDINT R7 65533 + 0x1C1C0C07, // 001B EQ R7 R6 R7 + 0x781E0004, // 001C JMPF R7 #0022 + 0x8C1C0706, // 001D GETMET R7 R3 K6 + 0x88240909, // 001E GETMBR R9 R4 K9 + 0x542A0003, // 001F LDINT R10 4 + 0x7C1C0600, // 0020 CALL R7 3 + 0x80040E00, // 0021 RET 1 R7 + 0x70020008, // 0022 JMP #002C + 0x601C0003, // 0023 GETGBL R7 G3 + 0x5C200000, // 0024 MOVE R8 R0 + 0x7C1C0200, // 0025 CALL R7 1 + 0x8C1C0F0A, // 0026 GETMET R7 R7 K10 + 0x5C240200, // 0027 MOVE R9 R1 + 0x5C280400, // 0028 MOVE R10 R2 + 0x5C2C0600, // 0029 MOVE R11 R3 + 0x7C1C0800, // 002A CALL R7 4 + 0x80040E00, // 002B RET 1 R7 + 0x80000000, // 002C RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h index 3c5b8c679c38..56c6ff30320b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h @@ -47,7 +47,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[102]) { /* constants */ + ( &(const bvalue[101]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(TLV), @@ -84,76 +84,75 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */ /* K33 */ be_nested_str_weak(B1), /* K34 */ be_nested_str_weak(U4), /* K35 */ be_nested_str_weak(tasmota), - /* K36 */ be_nested_str_weak(rtc), - /* K37 */ be_nested_str_weak(utc), - /* K38 */ be_nested_str_weak(tlv2raw), - /* K39 */ be_nested_str_weak(get_ac), - /* K40 */ be_nested_str_weak(EC_P256), - /* K41 */ be_nested_str_weak(ecdsa_sign_sha256), - /* K42 */ be_nested_str_weak(DAC_Priv_FFF1_8000), - /* K43 */ be_nested_str_weak(gen_CSR), - /* K44 */ be_nested_str_weak(set_temp_ca), - /* K45 */ be_nested_str_weak(SUCCESS), - /* K46 */ be_nested_str_weak(log), - /* K47 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D), - /* K48 */ be_nested_str_weak(get_temp_ca), - /* K49 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA), - /* K50 */ be_nested_str_weak(sessions), - /* K51 */ be_nested_str_weak(create_fabric), - /* K52 */ be_nested_str_weak(set_ca), - /* K53 */ be_nested_str_weak(set_noc_icac), - /* K54 */ be_nested_str_weak(set_ipk_epoch_key), - /* K55 */ be_nested_str_weak(set_admin_subject_vendor), - /* K56 */ be_nested_str_weak(set_pk), - /* K57 */ be_nested_str_weak(get_pk), - /* K58 */ be_nested_str_weak(parse), - /* K59 */ be_nested_str_weak(findsub), - /* K60 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate), - /* K61 */ be_nested_str_weak(int), - /* K62 */ be_nested_str_weak(int64), - /* K63 */ be_nested_str_weak(fromu32), - /* K64 */ be_nested_str_weak(tobytes), - /* K65 */ be_nested_str_weak(get_temp_ca_pub), - /* K66 */ be_const_int(2147483647), - /* K67 */ be_nested_str_weak(fromstring), - /* K68 */ be_nested_str_weak(CompressedFabric), - /* K69 */ be_nested_str_weak(HKDF_SHA256), - /* K70 */ be_nested_str_weak(copy), - /* K71 */ be_nested_str_weak(reverse), - /* K72 */ be_nested_str_weak(derive), - /* K73 */ be_nested_str_weak(commissioning_admin_fabric), - /* K74 */ be_nested_str_weak(set_fabric_device), - /* K75 */ be_nested_str_weak(fabric_candidate), - /* K76 */ be_nested_str_weak(start_operational_discovery_deferred), - /* K77 */ be_nested_str_weak(is_PASE), - /* K78 */ be_nested_str_weak(set_expire_in_seconds), - /* K79 */ be_nested_str_weak(log_new_fabric), - /* K80 */ be_nested_str_weak(set_fabric_label), - /* K81 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27), - /* K82 */ be_nested_str_weak(get_fabric_id), - /* K83 */ be_nested_str_weak(tohex), - /* K84 */ be_nested_str_weak(fabric_index_X3A), - /* K85 */ be_nested_str_weak(active_fabrics), - /* K86 */ be_nested_str_weak(get_fabric_index), - /* K87 */ be_nested_str_weak(set_timer), - /* K88 */ be_nested_str_weak(stop_iteration), - /* K89 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28), - /* K90 */ be_nested_str_weak(_X29_X20not_X20found), - /* K91 */ be_nested_str_weak(INVALID_ACTION), - /* K92 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29), - /* K93 */ be_nested_str_weak(INVALID_DATA_TYPE), - /* K94 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters), - /* K95 */ be_nested_str_weak(CONSTRAINT_ERROR), - /* K96 */ be_nested_str_weak(start_basic_commissioning), - /* K97 */ be_nested_str_weak(get_fabric), - /* K98 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D), - /* K99 */ be_nested_str_weak(start_root_basic_commissioning), - /* K100 */ be_nested_str_weak(stop_basic_commissioning), - /* K101 */ be_nested_str_weak(invoke_request), + /* K36 */ be_nested_str_weak(rtc_utc), + /* K37 */ be_nested_str_weak(tlv2raw), + /* K38 */ be_nested_str_weak(get_ac), + /* K39 */ be_nested_str_weak(EC_P256), + /* K40 */ be_nested_str_weak(ecdsa_sign_sha256), + /* K41 */ be_nested_str_weak(DAC_Priv_FFF1_8000), + /* K42 */ be_nested_str_weak(gen_CSR), + /* K43 */ be_nested_str_weak(set_temp_ca), + /* K44 */ be_nested_str_weak(SUCCESS), + /* K45 */ be_nested_str_weak(log), + /* K46 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D), + /* K47 */ be_nested_str_weak(get_temp_ca), + /* K48 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA), + /* K49 */ be_nested_str_weak(sessions), + /* K50 */ be_nested_str_weak(create_fabric), + /* K51 */ be_nested_str_weak(set_ca), + /* K52 */ be_nested_str_weak(set_noc_icac), + /* K53 */ be_nested_str_weak(set_ipk_epoch_key), + /* K54 */ be_nested_str_weak(set_admin_subject_vendor), + /* K55 */ be_nested_str_weak(set_pk), + /* K56 */ be_nested_str_weak(get_pk), + /* K57 */ be_nested_str_weak(parse), + /* K58 */ be_nested_str_weak(findsub), + /* K59 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate), + /* K60 */ be_nested_str_weak(int), + /* K61 */ be_nested_str_weak(int64), + /* K62 */ be_nested_str_weak(fromu32), + /* K63 */ be_nested_str_weak(tobytes), + /* K64 */ be_nested_str_weak(get_temp_ca_pub), + /* K65 */ be_const_int(2147483647), + /* K66 */ be_nested_str_weak(fromstring), + /* K67 */ be_nested_str_weak(CompressedFabric), + /* K68 */ be_nested_str_weak(HKDF_SHA256), + /* K69 */ be_nested_str_weak(copy), + /* K70 */ be_nested_str_weak(reverse), + /* K71 */ be_nested_str_weak(derive), + /* K72 */ be_nested_str_weak(commissioning_admin_fabric), + /* K73 */ be_nested_str_weak(set_fabric_device), + /* K74 */ be_nested_str_weak(fabric_candidate), + /* K75 */ be_nested_str_weak(start_operational_discovery_deferred), + /* K76 */ be_nested_str_weak(is_PASE), + /* K77 */ be_nested_str_weak(set_expire_in_seconds), + /* K78 */ be_nested_str_weak(log_new_fabric), + /* K79 */ be_nested_str_weak(set_fabric_label), + /* K80 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27), + /* K81 */ be_nested_str_weak(get_fabric_id), + /* K82 */ be_nested_str_weak(tohex), + /* K83 */ be_nested_str_weak(fabric_index_X3A), + /* K84 */ be_nested_str_weak(active_fabrics), + /* K85 */ be_nested_str_weak(get_fabric_index), + /* K86 */ be_nested_str_weak(set_timer), + /* K87 */ be_nested_str_weak(stop_iteration), + /* K88 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28), + /* K89 */ be_nested_str_weak(_X29_X20not_X20found), + /* K90 */ be_nested_str_weak(INVALID_ACTION), + /* K91 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29), + /* K92 */ be_nested_str_weak(INVALID_DATA_TYPE), + /* K93 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters), + /* K94 */ be_nested_str_weak(CONSTRAINT_ERROR), + /* K95 */ be_nested_str_weak(start_basic_commissioning), + /* K96 */ be_nested_str_weak(get_fabric), + /* K97 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D), + /* K98 */ be_nested_str_weak(start_root_basic_commissioning), + /* K99 */ be_nested_str_weak(stop_basic_commissioning), + /* K100 */ be_nested_str_weak(invoke_request), }), be_str_weak(invoke_request), &be_const_str_solidified, - ( &(const binstruction[714]) { /* code */ + ( &(const binstruction[713]) { /* code */ 0xA4120000, // 0000 IMPORT R4 K0 0xB8160200, // 0001 GETNGBL R5 K1 0x88140B02, // 0002 GETMBR R5 R5 K2 @@ -254,10 +253,10 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */ 0x80041000, // 0061 RET 1 R8 0x70020000, // 0062 JMP #0064 0xB006331A, // 0063 RAISE 1 K25 K26 - 0x70020262, // 0064 JMP #02C8 + 0x70020261, // 0064 JMP #02C7 0x5422003D, // 0065 LDINT R8 62 0x1C200C08, // 0066 EQ R8 R6 R8 - 0x782201C3, // 0067 JMPF R8 #022C + 0x782201C2, // 0067 JMPF R8 #022B 0x1C200F0E, // 0068 EQ R8 R7 K14 0x7822001D, // 0069 JMPF R8 #0088 0x8C200506, // 006A GETMET R8 R2 K6 @@ -289,9 +288,9 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */ 0x7C280800, // 0084 CALL R10 4 0x900E0910, // 0085 SETMBR R3 K4 K16 0x80041200, // 0086 RET 1 R9 - 0x700201A2, // 0087 JMP #022B + 0x700201A1, // 0087 JMP #022A 0x1C200F05, // 0088 EQ R8 R7 K5 - 0x7822003D, // 0089 JMPF R8 #00C8 + 0x7822003C, // 0089 JMPF R8 #00C7 0x8C200506, // 008A GETMET R8 R2 K6 0x58280005, // 008B LDCONST R10 K5 0x7C200400, // 008C CALL R8 2 @@ -324,550 +323,549 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */ 0xB83A4600, // 00A7 GETNGBL R14 K35 0x8C381D24, // 00A8 GETMET R14 R14 K36 0x7C380200, // 00A9 CALL R14 1 - 0x94381D25, // 00AA GETIDX R14 R14 K37 - 0x7C280800, // 00AB CALL R10 4 - 0x8C281326, // 00AC GETMET R10 R9 K38 - 0x7C280200, // 00AD CALL R10 1 - 0x8C2C0327, // 00AE GETMET R11 R1 K39 - 0x7C2C0200, // 00AF CALL R11 1 - 0x0030140B, // 00B0 ADD R12 R10 R11 - 0x8C340928, // 00B1 GETMET R13 R4 K40 - 0x7C340200, // 00B2 CALL R13 1 - 0x8C341B29, // 00B3 GETMET R13 R13 K41 - 0xB83E0200, // 00B4 GETNGBL R15 K1 - 0x8C3C1F2A, // 00B5 GETMET R15 R15 K42 - 0x7C3C0200, // 00B6 CALL R15 1 - 0x5C401800, // 00B7 MOVE R16 R12 - 0x7C340600, // 00B8 CALL R13 3 - 0x8C380B09, // 00B9 GETMET R14 R5 K9 - 0x7C380200, // 00BA CALL R14 1 - 0x8C3C1D0A, // 00BB GETMET R15 R14 K10 - 0x58440005, // 00BC LDCONST R17 K5 - 0x88480B1D, // 00BD GETMBR R18 R5 K29 - 0x5C4C1400, // 00BE MOVE R19 R10 - 0x7C3C0800, // 00BF CALL R15 4 - 0x8C3C1D0A, // 00C0 GETMET R15 R14 K10 - 0x58440007, // 00C1 LDCONST R17 K7 - 0x88480B21, // 00C2 GETMBR R18 R5 K33 - 0x5C4C1A00, // 00C3 MOVE R19 R13 - 0x7C3C0800, // 00C4 CALL R15 4 - 0x900E0907, // 00C5 SETMBR R3 K4 K7 - 0x80041C00, // 00C6 RET 1 R14 - 0x70020162, // 00C7 JMP #022B - 0x54220003, // 00C8 LDINT R8 4 - 0x1C200E08, // 00C9 EQ R8 R7 R8 - 0x7822003C, // 00CA JMPF R8 #0108 - 0x8C200111, // 00CB GETMET R8 R0 K17 - 0x88280712, // 00CC GETMBR R10 R3 K18 - 0x7C200400, // 00CD CALL R8 2 - 0x8C200506, // 00CE GETMET R8 R2 K6 - 0x58280005, // 00CF LDCONST R10 K5 - 0x7C200400, // 00D0 CALL R8 2 - 0x6024000C, // 00D1 GETGBL R9 G12 - 0x5C281000, // 00D2 MOVE R10 R8 - 0x7C240200, // 00D3 CALL R9 1 - 0x542A001F, // 00D4 LDINT R10 32 - 0x2024120A, // 00D5 NE R9 R9 R10 - 0x78260001, // 00D6 JMPF R9 #00D9 - 0x4C240000, // 00D7 LDNIL R9 - 0x80041200, // 00D8 RET 1 R9 - 0x8C240506, // 00D9 GETMET R9 R2 K6 - 0x582C0007, // 00DA LDCONST R11 K7 - 0x50300000, // 00DB LDBOOL R12 0 0 - 0x7C240600, // 00DC CALL R9 3 - 0x8C28032B, // 00DD GETMET R10 R1 K43 - 0x7C280200, // 00DE CALL R10 1 - 0x8C2C0B09, // 00DF GETMET R11 R5 K9 - 0x7C2C0200, // 00E0 CALL R11 1 - 0x8C30170A, // 00E1 GETMET R12 R11 K10 - 0x58380007, // 00E2 LDCONST R14 K7 - 0x883C0B1D, // 00E3 GETMBR R15 R5 K29 - 0x5C401400, // 00E4 MOVE R16 R10 - 0x7C300800, // 00E5 CALL R12 4 - 0x8C30170A, // 00E6 GETMET R12 R11 K10 - 0x5838000E, // 00E7 LDCONST R14 K14 - 0x883C0B21, // 00E8 GETMBR R15 R5 K33 - 0x5C401000, // 00E9 MOVE R16 R8 - 0x7C300800, // 00EA CALL R12 4 - 0x8C301726, // 00EB GETMET R12 R11 K38 - 0x7C300200, // 00EC CALL R12 1 - 0x8C340327, // 00ED GETMET R13 R1 K39 - 0x7C340200, // 00EE CALL R13 1 - 0x0034180D, // 00EF ADD R13 R12 R13 - 0x8C380928, // 00F0 GETMET R14 R4 K40 - 0x7C380200, // 00F1 CALL R14 1 - 0x8C381D29, // 00F2 GETMET R14 R14 K41 - 0xB8420200, // 00F3 GETNGBL R16 K1 - 0x8C40212A, // 00F4 GETMET R16 R16 K42 - 0x7C400200, // 00F5 CALL R16 1 - 0x5C441A00, // 00F6 MOVE R17 R13 - 0x7C380600, // 00F7 CALL R14 3 - 0x8C3C0B09, // 00F8 GETMET R15 R5 K9 - 0x7C3C0200, // 00F9 CALL R15 1 - 0x8C401F0A, // 00FA GETMET R16 R15 K10 - 0x58480005, // 00FB LDCONST R18 K5 - 0x884C0B1D, // 00FC GETMBR R19 R5 K29 - 0x5C501800, // 00FD MOVE R20 R12 - 0x7C400800, // 00FE CALL R16 4 - 0x8C401F0A, // 00FF GETMET R16 R15 K10 - 0x58480007, // 0100 LDCONST R18 K7 - 0x884C0B21, // 0101 GETMBR R19 R5 K33 - 0x5C501C00, // 0102 MOVE R20 R14 - 0x7C400800, // 0103 CALL R16 4 - 0x54420004, // 0104 LDINT R16 5 - 0x900E0810, // 0105 SETMBR R3 K4 R16 - 0x80041E00, // 0106 RET 1 R15 - 0x70020122, // 0107 JMP #022B - 0x5422000A, // 0108 LDINT R8 11 - 0x1C200E08, // 0109 EQ R8 R7 R8 - 0x7822000B, // 010A JMPF R8 #0117 - 0x8C200506, // 010B GETMET R8 R2 K6 - 0x58280005, // 010C LDCONST R10 K5 - 0x7C200400, // 010D CALL R8 2 - 0x8C24032C, // 010E GETMET R9 R1 K44 - 0x5C2C1000, // 010F MOVE R11 R8 - 0x7C240400, // 0110 CALL R9 2 - 0xB8260200, // 0111 GETNGBL R9 K1 - 0x8824132D, // 0112 GETMBR R9 R9 K45 - 0x900E3609, // 0113 SETMBR R3 K27 R9 - 0x4C240000, // 0114 LDNIL R9 - 0x80041200, // 0115 RET 1 R9 - 0x70020113, // 0116 JMP #022B - 0x54220005, // 0117 LDINT R8 6 - 0x1C200E08, // 0118 EQ R8 R7 R8 - 0x782200B9, // 0119 JMPF R8 #01D4 - 0xB8224600, // 011A GETNGBL R8 K35 - 0x8C20112E, // 011B GETMET R8 R8 K46 - 0x60280008, // 011C GETGBL R10 G8 - 0x5C2C0400, // 011D MOVE R11 R2 - 0x7C280200, // 011E CALL R10 1 - 0x002A5E0A, // 011F ADD R10 K47 R10 - 0x542E0003, // 0120 LDINT R11 4 - 0x7C200600, // 0121 CALL R8 3 - 0x8C200506, // 0122 GETMET R8 R2 K6 - 0x58280005, // 0123 LDCONST R10 K5 - 0x7C200400, // 0124 CALL R8 2 - 0x8C240506, // 0125 GETMET R9 R2 K6 - 0x582C0007, // 0126 LDCONST R11 K7 - 0x7C240400, // 0127 CALL R9 2 - 0x6028000C, // 0128 GETGBL R10 G12 - 0x5C2C1200, // 0129 MOVE R11 R9 - 0x7C280200, // 012A CALL R10 1 - 0x1C281505, // 012B EQ R10 R10 K5 - 0x782A0000, // 012C JMPF R10 #012E - 0x4C240000, // 012D LDNIL R9 - 0x8C280506, // 012E GETMET R10 R2 K6 - 0x5830000E, // 012F LDCONST R12 K14 - 0x7C280400, // 0130 CALL R10 2 - 0x8C2C0506, // 0131 GETMET R11 R2 K6 - 0x58340010, // 0132 LDCONST R13 K16 - 0x7C2C0400, // 0133 CALL R11 2 - 0x8C300506, // 0134 GETMET R12 R2 K6 - 0x543A0003, // 0135 LDINT R14 4 - 0x7C300400, // 0136 CALL R12 2 - 0x8C340330, // 0137 GETMET R13 R1 K48 - 0x7C340200, // 0138 CALL R13 1 - 0x4C380000, // 0139 LDNIL R14 - 0x1C341A0E, // 013A EQ R13 R13 R14 - 0x78360006, // 013B JMPF R13 #0143 - 0xB8364600, // 013C GETNGBL R13 K35 - 0x8C341B2E, // 013D GETMET R13 R13 K46 - 0x583C0031, // 013E LDCONST R15 K49 - 0x5840000E, // 013F LDCONST R16 K14 - 0x7C340600, // 0140 CALL R13 3 - 0x4C340000, // 0141 LDNIL R13 - 0x80041A00, // 0142 RET 1 R13 - 0x88340117, // 0143 GETMBR R13 R0 K23 - 0x88341B32, // 0144 GETMBR R13 R13 K50 - 0x8C341B33, // 0145 GETMET R13 R13 K51 - 0x7C340200, // 0146 CALL R13 1 - 0x8C381B34, // 0147 GETMET R14 R13 K52 - 0x8C400330, // 0148 GETMET R16 R1 K48 - 0x7C400200, // 0149 CALL R16 1 - 0x7C380400, // 014A CALL R14 2 - 0x8C381B35, // 014B GETMET R14 R13 K53 - 0x5C401000, // 014C MOVE R16 R8 - 0x5C441200, // 014D MOVE R17 R9 - 0x7C380600, // 014E CALL R14 3 - 0x8C381B36, // 014F GETMET R14 R13 K54 - 0x5C401400, // 0150 MOVE R16 R10 - 0x7C380400, // 0151 CALL R14 2 - 0x8C381B37, // 0152 GETMET R14 R13 K55 - 0x5C401600, // 0153 MOVE R16 R11 - 0x5C441800, // 0154 MOVE R17 R12 - 0x7C380600, // 0155 CALL R14 3 - 0x8C381B38, // 0156 GETMET R14 R13 K56 - 0x8C400339, // 0157 GETMET R16 R1 K57 - 0x7C400200, // 0158 CALL R16 1 - 0x7C380400, // 0159 CALL R14 2 - 0xB83A0200, // 015A GETNGBL R14 K1 - 0x88381D02, // 015B GETMBR R14 R14 K2 - 0x8C381D3A, // 015C GETMET R14 R14 K58 - 0x5C401000, // 015D MOVE R16 R8 - 0x7C380400, // 015E CALL R14 2 - 0x8C3C1D3B, // 015F GETMET R15 R14 K59 - 0x54460005, // 0160 LDINT R17 6 - 0x7C3C0400, // 0161 CALL R15 2 - 0x8C401F06, // 0162 GETMET R16 R15 K6 - 0x544A0014, // 0163 LDINT R18 21 - 0x7C400400, // 0164 CALL R16 2 - 0x8C441F06, // 0165 GETMET R17 R15 K6 - 0x544E0010, // 0166 LDINT R19 17 - 0x7C440400, // 0167 CALL R17 2 - 0x5C482000, // 0168 MOVE R18 R16 - 0x784A0001, // 0169 JMPF R18 #016C - 0x5C482200, // 016A MOVE R18 R17 - 0x744A0006, // 016B JMPT R18 #0173 - 0xB84A4600, // 016C GETNGBL R18 K35 - 0x8C48252E, // 016D GETMET R18 R18 K46 - 0x5850003C, // 016E LDCONST R20 K60 - 0x5854000E, // 016F LDCONST R21 K14 - 0x7C480600, // 0170 CALL R18 3 - 0x50480000, // 0171 LDBOOL R18 0 0 - 0x80042400, // 0172 RET 1 R18 - 0x60480004, // 0173 GETGBL R18 G4 - 0x5C4C2000, // 0174 MOVE R19 R16 - 0x7C480200, // 0175 CALL R18 1 - 0x1C48253D, // 0176 EQ R18 R18 K61 - 0x784A0007, // 0177 JMPF R18 #0180 - 0xB84A7C00, // 0178 GETNGBL R18 K62 - 0x8C48253F, // 0179 GETMET R18 R18 K63 - 0x5C502000, // 017A MOVE R20 R16 - 0x7C480400, // 017B CALL R18 2 - 0x8C482540, // 017C GETMET R18 R18 K64 - 0x7C480200, // 017D CALL R18 1 - 0x5C402400, // 017E MOVE R16 R18 - 0x70020002, // 017F JMP #0183 - 0x8C482140, // 0180 GETMET R18 R16 K64 - 0x7C480200, // 0181 CALL R18 1 - 0x5C402400, // 0182 MOVE R16 R18 - 0x60480004, // 0183 GETGBL R18 G4 - 0x5C4C2200, // 0184 MOVE R19 R17 - 0x7C480200, // 0185 CALL R18 1 - 0x1C48253D, // 0186 EQ R18 R18 K61 - 0x784A0007, // 0187 JMPF R18 #0190 - 0xB84A7C00, // 0188 GETNGBL R18 K62 - 0x8C48253F, // 0189 GETMET R18 R18 K63 - 0x5C502200, // 018A MOVE R20 R17 - 0x7C480400, // 018B CALL R18 2 - 0x8C482540, // 018C GETMET R18 R18 K64 - 0x7C480200, // 018D CALL R18 1 - 0x5C442400, // 018E MOVE R17 R18 - 0x70020002, // 018F JMP #0193 - 0x8C482340, // 0190 GETMET R18 R17 K64 - 0x7C480200, // 0191 CALL R18 1 - 0x5C442400, // 0192 MOVE R17 R18 - 0x8C480341, // 0193 GETMET R18 R1 K65 - 0x7C480200, // 0194 CALL R18 1 - 0x404E0F42, // 0195 CONNECT R19 K7 K66 - 0x94482413, // 0196 GETIDX R18 R18 R19 - 0x60500015, // 0197 GETGBL R20 G21 - 0x7C500000, // 0198 CALL R20 0 - 0x8C502943, // 0199 GETMET R20 R20 K67 - 0x58580044, // 019A LDCONST R22 K68 - 0x7C500400, // 019B CALL R20 2 - 0x5C4C2800, // 019C MOVE R19 R20 - 0x8C500945, // 019D GETMET R20 R4 K69 - 0x7C500200, // 019E CALL R20 1 - 0x8C542146, // 019F GETMET R21 R16 K70 - 0x7C540200, // 01A0 CALL R21 1 - 0x8C542B47, // 01A1 GETMET R21 R21 K71 - 0x7C540200, // 01A2 CALL R21 1 - 0x8C582948, // 01A3 GETMET R22 R20 K72 - 0x5C602400, // 01A4 MOVE R24 R18 - 0x5C642A00, // 01A5 MOVE R25 R21 - 0x5C682600, // 01A6 MOVE R26 R19 - 0x546E0007, // 01A7 LDINT R27 8 - 0x7C580A00, // 01A8 CALL R22 5 - 0x885C0313, // 01A9 GETMBR R23 R1 K19 - 0x785E0001, // 01AA JMPF R23 #01AD - 0x885C0313, // 01AB GETMBR R23 R1 K19 - 0x70020001, // 01AC JMP #01AF - 0x885C0117, // 01AD GETMBR R23 R0 K23 - 0x885C2F49, // 01AE GETMBR R23 R23 K73 - 0x8C601B4A, // 01AF GETMET R24 R13 K74 - 0x5C682000, // 01B0 MOVE R26 R16 - 0x5C6C2200, // 01B1 MOVE R27 R17 - 0x5C702C00, // 01B2 MOVE R28 R22 - 0x5C742E00, // 01B3 MOVE R29 R23 - 0x7C600A00, // 01B4 CALL R24 5 - 0x8C601B4B, // 01B5 GETMET R24 R13 K75 - 0x7C600200, // 01B6 CALL R24 1 - 0x88600117, // 01B7 GETMBR R24 R0 K23 - 0x8C60314C, // 01B8 GETMET R24 R24 K76 - 0x5C681A00, // 01B9 MOVE R26 R13 - 0x7C600400, // 01BA CALL R24 2 - 0x8C60034D, // 01BB GETMET R24 R1 K77 - 0x7C600200, // 01BC CALL R24 1 - 0x78620002, // 01BD JMPF R24 #01C1 - 0x8C60034E, // 01BE GETMET R24 R1 K78 - 0x546A003B, // 01BF LDINT R26 60 - 0x7C600400, // 01C0 CALL R24 2 - 0x8C601B4F, // 01C1 GETMET R24 R13 K79 - 0x7C600200, // 01C2 CALL R24 1 - 0x8C600B09, // 01C3 GETMET R24 R5 K9 - 0x7C600200, // 01C4 CALL R24 1 - 0x8C64310A, // 01C5 GETMET R25 R24 K10 - 0x586C0005, // 01C6 LDCONST R27 K5 - 0x88700B0B, // 01C7 GETMBR R28 R5 K11 - 0xB8760200, // 01C8 GETNGBL R29 K1 - 0x88743B2D, // 01C9 GETMBR R29 R29 K45 - 0x7C640800, // 01CA CALL R25 4 - 0x8C64310A, // 01CB GETMET R25 R24 K10 - 0x586C0007, // 01CC LDCONST R27 K7 - 0x88700B0B, // 01CD GETMBR R28 R5 K11 - 0x58740007, // 01CE LDCONST R29 K7 - 0x7C640800, // 01CF CALL R25 4 - 0x54660007, // 01D0 LDINT R25 8 - 0x900E0819, // 01D1 SETMBR R3 K4 R25 - 0x80043000, // 01D2 RET 1 R24 - 0x70020056, // 01D3 JMP #022B - 0x54220008, // 01D4 LDINT R8 9 - 0x1C200E08, // 01D5 EQ R8 R7 R8 - 0x7822001E, // 01D6 JMPF R8 #01F6 - 0x8C200506, // 01D7 GETMET R8 R2 K6 - 0x58280005, // 01D8 LDCONST R10 K5 - 0x7C200400, // 01D9 CALL R8 2 - 0x8C240350, // 01DA GETMET R9 R1 K80 - 0x5C2C1000, // 01DB MOVE R11 R8 - 0x7C240400, // 01DC CALL R9 2 - 0xB8264600, // 01DD GETNGBL R9 K35 - 0x8C24132E, // 01DE GETMET R9 R9 K46 - 0x602C0018, // 01DF GETGBL R11 G24 - 0x58300051, // 01E0 LDCONST R12 K81 - 0x88340313, // 01E1 GETMBR R13 R1 K19 - 0x8C341B52, // 01E2 GETMET R13 R13 K82 - 0x7C340200, // 01E3 CALL R13 1 - 0x8C341B46, // 01E4 GETMET R13 R13 K70 - 0x7C340200, // 01E5 CALL R13 1 - 0x8C341B47, // 01E6 GETMET R13 R13 K71 - 0x7C340200, // 01E7 CALL R13 1 - 0x8C341B53, // 01E8 GETMET R13 R13 K83 - 0x7C340200, // 01E9 CALL R13 1 - 0x60380008, // 01EA GETGBL R14 G8 - 0x5C3C1000, // 01EB MOVE R15 R8 - 0x7C380200, // 01EC CALL R14 1 - 0x7C2C0600, // 01ED CALL R11 3 - 0x58300010, // 01EE LDCONST R12 K16 - 0x7C240600, // 01EF CALL R9 3 - 0xB8260200, // 01F0 GETNGBL R9 K1 - 0x8824132D, // 01F1 GETMBR R9 R9 K45 - 0x900E3609, // 01F2 SETMBR R3 K27 R9 - 0x4C240000, // 01F3 LDNIL R9 - 0x80041200, // 01F4 RET 1 R9 - 0x70020034, // 01F5 JMP #022B - 0x54220009, // 01F6 LDINT R8 10 - 0x1C200E08, // 01F7 EQ R8 R7 R8 - 0x78220031, // 01F8 JMPF R8 #022B - 0x8C200506, // 01F9 GETMET R8 R2 K6 - 0x58280005, // 01FA LDCONST R10 K5 - 0x7C200400, // 01FB CALL R8 2 - 0x60240008, // 01FC GETGBL R9 G8 - 0x5C281000, // 01FD MOVE R10 R8 - 0x7C240200, // 01FE CALL R9 1 - 0x0026A809, // 01FF ADD R9 K84 R9 - 0x900E5C09, // 0200 SETMBR R3 K46 R9 - 0x60240010, // 0201 GETGBL R9 G16 - 0x88280117, // 0202 GETMBR R10 R0 K23 - 0x88281532, // 0203 GETMBR R10 R10 K50 - 0x8C281555, // 0204 GETMET R10 R10 K85 - 0x7C280200, // 0205 CALL R10 1 - 0x7C240200, // 0206 CALL R9 1 - 0xA8020010, // 0207 EXBLK 0 #0219 - 0x5C281200, // 0208 MOVE R10 R9 - 0x7C280000, // 0209 CALL R10 0 - 0x8C2C1556, // 020A GETMET R11 R10 K86 - 0x7C2C0200, // 020B CALL R11 1 - 0x1C2C1608, // 020C EQ R11 R11 R8 - 0x782E0008, // 020D JMPF R11 #0217 - 0xB82E4600, // 020E GETNGBL R11 K35 - 0x8C2C1757, // 020F GETMET R11 R11 K87 - 0x543607CF, // 0210 LDINT R13 2000 - 0x84380000, // 0211 CLOSURE R14 P0 - 0x7C2C0600, // 0212 CALL R11 3 - 0x502C0200, // 0213 LDBOOL R11 1 0 - 0xA0000000, // 0214 CLOSE R0 - 0xA8040001, // 0215 EXBLK 1 1 - 0x80041600, // 0216 RET 1 R11 - 0xA0240000, // 0217 CLOSE R9 - 0x7001FFEE, // 0218 JMP #0208 - 0x58240058, // 0219 LDCONST R9 K88 - 0xAC240200, // 021A CATCH R9 1 0 - 0xB0080000, // 021B RAISE 2 R0 R0 - 0xB8264600, // 021C GETNGBL R9 K35 - 0x8C24132E, // 021D GETMET R9 R9 K46 - 0x602C0008, // 021E GETGBL R11 G8 - 0x5C301000, // 021F MOVE R12 R8 - 0x7C2C0200, // 0220 CALL R11 1 - 0x002EB20B, // 0221 ADD R11 K89 R11 - 0x002C175A, // 0222 ADD R11 R11 K90 - 0x5830000E, // 0223 LDCONST R12 K14 - 0x7C240600, // 0224 CALL R9 3 - 0xB8260200, // 0225 GETNGBL R9 K1 - 0x8824135B, // 0226 GETMBR R9 R9 K91 - 0x900E3609, // 0227 SETMBR R3 K27 R9 - 0x4C240000, // 0228 LDNIL R9 - 0xA0000000, // 0229 CLOSE R0 - 0x80041200, // 022A RET 1 R9 - 0x7002009B, // 022B JMP #02C8 - 0x5422003B, // 022C LDINT R8 60 - 0x1C200C08, // 022D EQ R8 R6 R8 - 0x78220085, // 022E JMPF R8 #02B5 - 0x1C200F05, // 022F EQ R8 R7 K5 - 0x78220065, // 0230 JMPF R8 #0297 - 0x8C200506, // 0231 GETMET R8 R2 K6 - 0x58280005, // 0232 LDCONST R10 K5 - 0x7C200400, // 0233 CALL R8 2 - 0x8C240506, // 0234 GETMET R9 R2 K6 - 0x582C0007, // 0235 LDCONST R11 K7 - 0x7C240400, // 0236 CALL R9 2 - 0x8C280506, // 0237 GETMET R10 R2 K6 - 0x5830000E, // 0238 LDCONST R12 K14 - 0x7C280400, // 0239 CALL R10 2 - 0x8C2C0506, // 023A GETMET R11 R2 K6 - 0x58340010, // 023B LDCONST R13 K16 - 0x7C2C0400, // 023C CALL R11 2 - 0x8C300506, // 023D GETMET R12 R2 K6 - 0x543A0003, // 023E LDINT R14 4 - 0x7C300400, // 023F CALL R12 2 - 0xB8364600, // 0240 GETNGBL R13 K35 - 0x8C341B2E, // 0241 GETMET R13 R13 K46 - 0x603C0018, // 0242 GETGBL R15 G24 - 0x5840005C, // 0243 LDCONST R16 K92 - 0x5C441000, // 0244 MOVE R17 R8 - 0x8C481353, // 0245 GETMET R18 R9 K83 - 0x7C480200, // 0246 CALL R18 1 - 0x5C4C1400, // 0247 MOVE R19 R10 - 0x5C501600, // 0248 MOVE R20 R11 - 0x8C541953, // 0249 GETMET R21 R12 K83 - 0x7C540200, // 024A CALL R21 1 - 0x7C3C0C00, // 024B CALL R15 6 - 0x54420003, // 024C LDINT R16 4 - 0x7C340600, // 024D CALL R13 3 - 0x4C340000, // 024E LDNIL R13 - 0x1C34100D, // 024F EQ R13 R8 R13 - 0x7436000B, // 0250 JMPT R13 #025D - 0x4C340000, // 0251 LDNIL R13 - 0x1C34120D, // 0252 EQ R13 R9 R13 - 0x74360008, // 0253 JMPT R13 #025D - 0x4C340000, // 0254 LDNIL R13 - 0x1C34140D, // 0255 EQ R13 R10 R13 - 0x74360005, // 0256 JMPT R13 #025D - 0x4C340000, // 0257 LDNIL R13 - 0x1C34160D, // 0258 EQ R13 R11 R13 - 0x74360002, // 0259 JMPT R13 #025D - 0x4C340000, // 025A LDNIL R13 - 0x1C34180D, // 025B EQ R13 R12 R13 - 0x78360005, // 025C JMPF R13 #0263 - 0xB8360200, // 025D GETNGBL R13 K1 - 0x88341B5D, // 025E GETMBR R13 R13 K93 - 0x900E360D, // 025F SETMBR R3 K27 R13 - 0x4C340000, // 0260 LDNIL R13 - 0xA0000000, // 0261 CLOSE R0 - 0x80041A00, // 0262 RET 1 R13 - 0x6034000C, // 0263 GETGBL R13 G12 - 0x5C381200, // 0264 MOVE R14 R9 - 0x7C340200, // 0265 CALL R13 1 - 0x543A001F, // 0266 LDINT R14 32 - 0x543E0040, // 0267 LDINT R15 65 - 0x00381C0F, // 0268 ADD R14 R14 R15 - 0x20341A0E, // 0269 NE R13 R13 R14 - 0x7436000B, // 026A JMPT R13 #0277 - 0x6034000C, // 026B GETGBL R13 G12 - 0x5C381800, // 026C MOVE R14 R12 - 0x7C340200, // 026D CALL R13 1 - 0x543A000F, // 026E LDINT R14 16 - 0x14341A0E, // 026F LT R13 R13 R14 - 0x74360005, // 0270 JMPT R13 #0277 - 0x6034000C, // 0271 GETGBL R13 G12 - 0x5C381800, // 0272 MOVE R14 R12 - 0x7C340200, // 0273 CALL R13 1 - 0x543A001F, // 0274 LDINT R14 32 - 0x24341A0E, // 0275 GT R13 R13 R14 - 0x7836000A, // 0276 JMPF R13 #0282 - 0xB8364600, // 0277 GETNGBL R13 K35 - 0x8C341B2E, // 0278 GETMET R13 R13 K46 - 0x583C005E, // 0279 LDCONST R15 K94 - 0x5840000E, // 027A LDCONST R16 K14 - 0x7C340600, // 027B CALL R13 3 - 0xB8360200, // 027C GETNGBL R13 K1 - 0x88341B5F, // 027D GETMBR R13 R13 K95 - 0x900E360D, // 027E SETMBR R3 K27 R13 - 0x4C340000, // 027F LDNIL R13 - 0xA0000000, // 0280 CLOSE R0 - 0x80041A00, // 0281 RET 1 R13 - 0x5436001E, // 0282 LDINT R13 31 - 0x40360A0D, // 0283 CONNECT R13 K5 R13 - 0x9434120D, // 0284 GETIDX R13 R9 R13 - 0x543A001F, // 0285 LDINT R14 32 - 0x40381D42, // 0286 CONNECT R14 R14 K66 - 0x9438120E, // 0287 GETIDX R14 R9 R14 - 0x883C0117, // 0288 GETMBR R15 R0 K23 - 0x8C3C1F60, // 0289 GETMET R15 R15 K96 - 0x5C441000, // 028A MOVE R17 R8 - 0x5C481600, // 028B MOVE R18 R11 - 0x5C4C1400, // 028C MOVE R19 R10 - 0x5C501800, // 028D MOVE R20 R12 - 0x5C541A00, // 028E MOVE R21 R13 - 0x5C581C00, // 028F MOVE R22 R14 - 0x8C5C0361, // 0290 GETMET R23 R1 K97 - 0x7C5C0200, // 0291 CALL R23 1 - 0x7C3C1000, // 0292 CALL R15 8 - 0x503C0200, // 0293 LDBOOL R15 1 0 - 0xA0000000, // 0294 CLOSE R0 - 0x80041E00, // 0295 RET 1 R15 - 0x7002001C, // 0296 JMP #02B4 - 0x1C200F07, // 0297 EQ R8 R7 K7 - 0x78220012, // 0298 JMPF R8 #02AC - 0x8C200506, // 0299 GETMET R8 R2 K6 - 0x58280005, // 029A LDCONST R10 K5 - 0x7C200400, // 029B CALL R8 2 - 0xB8264600, // 029C GETNGBL R9 K35 - 0x8C24132E, // 029D GETMET R9 R9 K46 - 0x602C0008, // 029E GETGBL R11 G8 - 0x5C301000, // 029F MOVE R12 R8 - 0x7C2C0200, // 02A0 CALL R11 1 - 0x002EC40B, // 02A1 ADD R11 K98 R11 - 0x58300010, // 02A2 LDCONST R12 K16 - 0x7C240600, // 02A3 CALL R9 3 - 0x88240117, // 02A4 GETMBR R9 R0 K23 - 0x8C241363, // 02A5 GETMET R9 R9 K99 - 0x5C2C1000, // 02A6 MOVE R11 R8 - 0x7C240400, // 02A7 CALL R9 2 - 0x50240200, // 02A8 LDBOOL R9 1 0 - 0xA0000000, // 02A9 CLOSE R0 - 0x80041200, // 02AA RET 1 R9 - 0x70020007, // 02AB JMP #02B4 - 0x1C200F0E, // 02AC EQ R8 R7 K14 - 0x78220005, // 02AD JMPF R8 #02B4 - 0x88200117, // 02AE GETMBR R8 R0 K23 - 0x8C201164, // 02AF GETMET R8 R8 K100 - 0x7C200200, // 02B0 CALL R8 1 - 0x50200200, // 02B1 LDBOOL R8 1 0 - 0xA0000000, // 02B2 CLOSE R0 - 0x80041000, // 02B3 RET 1 R8 - 0x70020012, // 02B4 JMP #02C8 - 0x54220029, // 02B5 LDINT R8 42 - 0x1C200C08, // 02B6 EQ R8 R6 R8 - 0x78220005, // 02B7 JMPF R8 #02BE - 0x1C200F05, // 02B8 EQ R8 R7 K5 - 0x78220002, // 02B9 JMPF R8 #02BD - 0x50200200, // 02BA LDBOOL R8 1 0 - 0xA0000000, // 02BB CLOSE R0 - 0x80041000, // 02BC RET 1 R8 - 0x70020009, // 02BD JMP #02C8 - 0x60200003, // 02BE GETGBL R8 G3 - 0x5C240000, // 02BF MOVE R9 R0 - 0x7C200200, // 02C0 CALL R8 1 - 0x8C201165, // 02C1 GETMET R8 R8 K101 - 0x5C280200, // 02C2 MOVE R10 R1 - 0x5C2C0400, // 02C3 MOVE R11 R2 - 0x5C300600, // 02C4 MOVE R12 R3 - 0x7C200800, // 02C5 CALL R8 4 - 0xA0000000, // 02C6 CLOSE R0 - 0x80041000, // 02C7 RET 1 R8 - 0xA0000000, // 02C8 CLOSE R0 - 0x80000000, // 02C9 RET 0 + 0x7C280800, // 00AA CALL R10 4 + 0x8C281325, // 00AB GETMET R10 R9 K37 + 0x7C280200, // 00AC CALL R10 1 + 0x8C2C0326, // 00AD GETMET R11 R1 K38 + 0x7C2C0200, // 00AE CALL R11 1 + 0x0030140B, // 00AF ADD R12 R10 R11 + 0x8C340927, // 00B0 GETMET R13 R4 K39 + 0x7C340200, // 00B1 CALL R13 1 + 0x8C341B28, // 00B2 GETMET R13 R13 K40 + 0xB83E0200, // 00B3 GETNGBL R15 K1 + 0x8C3C1F29, // 00B4 GETMET R15 R15 K41 + 0x7C3C0200, // 00B5 CALL R15 1 + 0x5C401800, // 00B6 MOVE R16 R12 + 0x7C340600, // 00B7 CALL R13 3 + 0x8C380B09, // 00B8 GETMET R14 R5 K9 + 0x7C380200, // 00B9 CALL R14 1 + 0x8C3C1D0A, // 00BA GETMET R15 R14 K10 + 0x58440005, // 00BB LDCONST R17 K5 + 0x88480B1D, // 00BC GETMBR R18 R5 K29 + 0x5C4C1400, // 00BD MOVE R19 R10 + 0x7C3C0800, // 00BE CALL R15 4 + 0x8C3C1D0A, // 00BF GETMET R15 R14 K10 + 0x58440007, // 00C0 LDCONST R17 K7 + 0x88480B21, // 00C1 GETMBR R18 R5 K33 + 0x5C4C1A00, // 00C2 MOVE R19 R13 + 0x7C3C0800, // 00C3 CALL R15 4 + 0x900E0907, // 00C4 SETMBR R3 K4 K7 + 0x80041C00, // 00C5 RET 1 R14 + 0x70020162, // 00C6 JMP #022A + 0x54220003, // 00C7 LDINT R8 4 + 0x1C200E08, // 00C8 EQ R8 R7 R8 + 0x7822003C, // 00C9 JMPF R8 #0107 + 0x8C200111, // 00CA GETMET R8 R0 K17 + 0x88280712, // 00CB GETMBR R10 R3 K18 + 0x7C200400, // 00CC CALL R8 2 + 0x8C200506, // 00CD GETMET R8 R2 K6 + 0x58280005, // 00CE LDCONST R10 K5 + 0x7C200400, // 00CF CALL R8 2 + 0x6024000C, // 00D0 GETGBL R9 G12 + 0x5C281000, // 00D1 MOVE R10 R8 + 0x7C240200, // 00D2 CALL R9 1 + 0x542A001F, // 00D3 LDINT R10 32 + 0x2024120A, // 00D4 NE R9 R9 R10 + 0x78260001, // 00D5 JMPF R9 #00D8 + 0x4C240000, // 00D6 LDNIL R9 + 0x80041200, // 00D7 RET 1 R9 + 0x8C240506, // 00D8 GETMET R9 R2 K6 + 0x582C0007, // 00D9 LDCONST R11 K7 + 0x50300000, // 00DA LDBOOL R12 0 0 + 0x7C240600, // 00DB CALL R9 3 + 0x8C28032A, // 00DC GETMET R10 R1 K42 + 0x7C280200, // 00DD CALL R10 1 + 0x8C2C0B09, // 00DE GETMET R11 R5 K9 + 0x7C2C0200, // 00DF CALL R11 1 + 0x8C30170A, // 00E0 GETMET R12 R11 K10 + 0x58380007, // 00E1 LDCONST R14 K7 + 0x883C0B1D, // 00E2 GETMBR R15 R5 K29 + 0x5C401400, // 00E3 MOVE R16 R10 + 0x7C300800, // 00E4 CALL R12 4 + 0x8C30170A, // 00E5 GETMET R12 R11 K10 + 0x5838000E, // 00E6 LDCONST R14 K14 + 0x883C0B21, // 00E7 GETMBR R15 R5 K33 + 0x5C401000, // 00E8 MOVE R16 R8 + 0x7C300800, // 00E9 CALL R12 4 + 0x8C301725, // 00EA GETMET R12 R11 K37 + 0x7C300200, // 00EB CALL R12 1 + 0x8C340326, // 00EC GETMET R13 R1 K38 + 0x7C340200, // 00ED CALL R13 1 + 0x0034180D, // 00EE ADD R13 R12 R13 + 0x8C380927, // 00EF GETMET R14 R4 K39 + 0x7C380200, // 00F0 CALL R14 1 + 0x8C381D28, // 00F1 GETMET R14 R14 K40 + 0xB8420200, // 00F2 GETNGBL R16 K1 + 0x8C402129, // 00F3 GETMET R16 R16 K41 + 0x7C400200, // 00F4 CALL R16 1 + 0x5C441A00, // 00F5 MOVE R17 R13 + 0x7C380600, // 00F6 CALL R14 3 + 0x8C3C0B09, // 00F7 GETMET R15 R5 K9 + 0x7C3C0200, // 00F8 CALL R15 1 + 0x8C401F0A, // 00F9 GETMET R16 R15 K10 + 0x58480005, // 00FA LDCONST R18 K5 + 0x884C0B1D, // 00FB GETMBR R19 R5 K29 + 0x5C501800, // 00FC MOVE R20 R12 + 0x7C400800, // 00FD CALL R16 4 + 0x8C401F0A, // 00FE GETMET R16 R15 K10 + 0x58480007, // 00FF LDCONST R18 K7 + 0x884C0B21, // 0100 GETMBR R19 R5 K33 + 0x5C501C00, // 0101 MOVE R20 R14 + 0x7C400800, // 0102 CALL R16 4 + 0x54420004, // 0103 LDINT R16 5 + 0x900E0810, // 0104 SETMBR R3 K4 R16 + 0x80041E00, // 0105 RET 1 R15 + 0x70020122, // 0106 JMP #022A + 0x5422000A, // 0107 LDINT R8 11 + 0x1C200E08, // 0108 EQ R8 R7 R8 + 0x7822000B, // 0109 JMPF R8 #0116 + 0x8C200506, // 010A GETMET R8 R2 K6 + 0x58280005, // 010B LDCONST R10 K5 + 0x7C200400, // 010C CALL R8 2 + 0x8C24032B, // 010D GETMET R9 R1 K43 + 0x5C2C1000, // 010E MOVE R11 R8 + 0x7C240400, // 010F CALL R9 2 + 0xB8260200, // 0110 GETNGBL R9 K1 + 0x8824132C, // 0111 GETMBR R9 R9 K44 + 0x900E3609, // 0112 SETMBR R3 K27 R9 + 0x4C240000, // 0113 LDNIL R9 + 0x80041200, // 0114 RET 1 R9 + 0x70020113, // 0115 JMP #022A + 0x54220005, // 0116 LDINT R8 6 + 0x1C200E08, // 0117 EQ R8 R7 R8 + 0x782200B9, // 0118 JMPF R8 #01D3 + 0xB8224600, // 0119 GETNGBL R8 K35 + 0x8C20112D, // 011A GETMET R8 R8 K45 + 0x60280008, // 011B GETGBL R10 G8 + 0x5C2C0400, // 011C MOVE R11 R2 + 0x7C280200, // 011D CALL R10 1 + 0x002A5C0A, // 011E ADD R10 K46 R10 + 0x542E0003, // 011F LDINT R11 4 + 0x7C200600, // 0120 CALL R8 3 + 0x8C200506, // 0121 GETMET R8 R2 K6 + 0x58280005, // 0122 LDCONST R10 K5 + 0x7C200400, // 0123 CALL R8 2 + 0x8C240506, // 0124 GETMET R9 R2 K6 + 0x582C0007, // 0125 LDCONST R11 K7 + 0x7C240400, // 0126 CALL R9 2 + 0x6028000C, // 0127 GETGBL R10 G12 + 0x5C2C1200, // 0128 MOVE R11 R9 + 0x7C280200, // 0129 CALL R10 1 + 0x1C281505, // 012A EQ R10 R10 K5 + 0x782A0000, // 012B JMPF R10 #012D + 0x4C240000, // 012C LDNIL R9 + 0x8C280506, // 012D GETMET R10 R2 K6 + 0x5830000E, // 012E LDCONST R12 K14 + 0x7C280400, // 012F CALL R10 2 + 0x8C2C0506, // 0130 GETMET R11 R2 K6 + 0x58340010, // 0131 LDCONST R13 K16 + 0x7C2C0400, // 0132 CALL R11 2 + 0x8C300506, // 0133 GETMET R12 R2 K6 + 0x543A0003, // 0134 LDINT R14 4 + 0x7C300400, // 0135 CALL R12 2 + 0x8C34032F, // 0136 GETMET R13 R1 K47 + 0x7C340200, // 0137 CALL R13 1 + 0x4C380000, // 0138 LDNIL R14 + 0x1C341A0E, // 0139 EQ R13 R13 R14 + 0x78360006, // 013A JMPF R13 #0142 + 0xB8364600, // 013B GETNGBL R13 K35 + 0x8C341B2D, // 013C GETMET R13 R13 K45 + 0x583C0030, // 013D LDCONST R15 K48 + 0x5840000E, // 013E LDCONST R16 K14 + 0x7C340600, // 013F CALL R13 3 + 0x4C340000, // 0140 LDNIL R13 + 0x80041A00, // 0141 RET 1 R13 + 0x88340117, // 0142 GETMBR R13 R0 K23 + 0x88341B31, // 0143 GETMBR R13 R13 K49 + 0x8C341B32, // 0144 GETMET R13 R13 K50 + 0x7C340200, // 0145 CALL R13 1 + 0x8C381B33, // 0146 GETMET R14 R13 K51 + 0x8C40032F, // 0147 GETMET R16 R1 K47 + 0x7C400200, // 0148 CALL R16 1 + 0x7C380400, // 0149 CALL R14 2 + 0x8C381B34, // 014A GETMET R14 R13 K52 + 0x5C401000, // 014B MOVE R16 R8 + 0x5C441200, // 014C MOVE R17 R9 + 0x7C380600, // 014D CALL R14 3 + 0x8C381B35, // 014E GETMET R14 R13 K53 + 0x5C401400, // 014F MOVE R16 R10 + 0x7C380400, // 0150 CALL R14 2 + 0x8C381B36, // 0151 GETMET R14 R13 K54 + 0x5C401600, // 0152 MOVE R16 R11 + 0x5C441800, // 0153 MOVE R17 R12 + 0x7C380600, // 0154 CALL R14 3 + 0x8C381B37, // 0155 GETMET R14 R13 K55 + 0x8C400338, // 0156 GETMET R16 R1 K56 + 0x7C400200, // 0157 CALL R16 1 + 0x7C380400, // 0158 CALL R14 2 + 0xB83A0200, // 0159 GETNGBL R14 K1 + 0x88381D02, // 015A GETMBR R14 R14 K2 + 0x8C381D39, // 015B GETMET R14 R14 K57 + 0x5C401000, // 015C MOVE R16 R8 + 0x7C380400, // 015D CALL R14 2 + 0x8C3C1D3A, // 015E GETMET R15 R14 K58 + 0x54460005, // 015F LDINT R17 6 + 0x7C3C0400, // 0160 CALL R15 2 + 0x8C401F06, // 0161 GETMET R16 R15 K6 + 0x544A0014, // 0162 LDINT R18 21 + 0x7C400400, // 0163 CALL R16 2 + 0x8C441F06, // 0164 GETMET R17 R15 K6 + 0x544E0010, // 0165 LDINT R19 17 + 0x7C440400, // 0166 CALL R17 2 + 0x5C482000, // 0167 MOVE R18 R16 + 0x784A0001, // 0168 JMPF R18 #016B + 0x5C482200, // 0169 MOVE R18 R17 + 0x744A0006, // 016A JMPT R18 #0172 + 0xB84A4600, // 016B GETNGBL R18 K35 + 0x8C48252D, // 016C GETMET R18 R18 K45 + 0x5850003B, // 016D LDCONST R20 K59 + 0x5854000E, // 016E LDCONST R21 K14 + 0x7C480600, // 016F CALL R18 3 + 0x50480000, // 0170 LDBOOL R18 0 0 + 0x80042400, // 0171 RET 1 R18 + 0x60480004, // 0172 GETGBL R18 G4 + 0x5C4C2000, // 0173 MOVE R19 R16 + 0x7C480200, // 0174 CALL R18 1 + 0x1C48253C, // 0175 EQ R18 R18 K60 + 0x784A0007, // 0176 JMPF R18 #017F + 0xB84A7A00, // 0177 GETNGBL R18 K61 + 0x8C48253E, // 0178 GETMET R18 R18 K62 + 0x5C502000, // 0179 MOVE R20 R16 + 0x7C480400, // 017A CALL R18 2 + 0x8C48253F, // 017B GETMET R18 R18 K63 + 0x7C480200, // 017C CALL R18 1 + 0x5C402400, // 017D MOVE R16 R18 + 0x70020002, // 017E JMP #0182 + 0x8C48213F, // 017F GETMET R18 R16 K63 + 0x7C480200, // 0180 CALL R18 1 + 0x5C402400, // 0181 MOVE R16 R18 + 0x60480004, // 0182 GETGBL R18 G4 + 0x5C4C2200, // 0183 MOVE R19 R17 + 0x7C480200, // 0184 CALL R18 1 + 0x1C48253C, // 0185 EQ R18 R18 K60 + 0x784A0007, // 0186 JMPF R18 #018F + 0xB84A7A00, // 0187 GETNGBL R18 K61 + 0x8C48253E, // 0188 GETMET R18 R18 K62 + 0x5C502200, // 0189 MOVE R20 R17 + 0x7C480400, // 018A CALL R18 2 + 0x8C48253F, // 018B GETMET R18 R18 K63 + 0x7C480200, // 018C CALL R18 1 + 0x5C442400, // 018D MOVE R17 R18 + 0x70020002, // 018E JMP #0192 + 0x8C48233F, // 018F GETMET R18 R17 K63 + 0x7C480200, // 0190 CALL R18 1 + 0x5C442400, // 0191 MOVE R17 R18 + 0x8C480340, // 0192 GETMET R18 R1 K64 + 0x7C480200, // 0193 CALL R18 1 + 0x404E0F41, // 0194 CONNECT R19 K7 K65 + 0x94482413, // 0195 GETIDX R18 R18 R19 + 0x60500015, // 0196 GETGBL R20 G21 + 0x7C500000, // 0197 CALL R20 0 + 0x8C502942, // 0198 GETMET R20 R20 K66 + 0x58580043, // 0199 LDCONST R22 K67 + 0x7C500400, // 019A CALL R20 2 + 0x5C4C2800, // 019B MOVE R19 R20 + 0x8C500944, // 019C GETMET R20 R4 K68 + 0x7C500200, // 019D CALL R20 1 + 0x8C542145, // 019E GETMET R21 R16 K69 + 0x7C540200, // 019F CALL R21 1 + 0x8C542B46, // 01A0 GETMET R21 R21 K70 + 0x7C540200, // 01A1 CALL R21 1 + 0x8C582947, // 01A2 GETMET R22 R20 K71 + 0x5C602400, // 01A3 MOVE R24 R18 + 0x5C642A00, // 01A4 MOVE R25 R21 + 0x5C682600, // 01A5 MOVE R26 R19 + 0x546E0007, // 01A6 LDINT R27 8 + 0x7C580A00, // 01A7 CALL R22 5 + 0x885C0313, // 01A8 GETMBR R23 R1 K19 + 0x785E0001, // 01A9 JMPF R23 #01AC + 0x885C0313, // 01AA GETMBR R23 R1 K19 + 0x70020001, // 01AB JMP #01AE + 0x885C0117, // 01AC GETMBR R23 R0 K23 + 0x885C2F48, // 01AD GETMBR R23 R23 K72 + 0x8C601B49, // 01AE GETMET R24 R13 K73 + 0x5C682000, // 01AF MOVE R26 R16 + 0x5C6C2200, // 01B0 MOVE R27 R17 + 0x5C702C00, // 01B1 MOVE R28 R22 + 0x5C742E00, // 01B2 MOVE R29 R23 + 0x7C600A00, // 01B3 CALL R24 5 + 0x8C601B4A, // 01B4 GETMET R24 R13 K74 + 0x7C600200, // 01B5 CALL R24 1 + 0x88600117, // 01B6 GETMBR R24 R0 K23 + 0x8C60314B, // 01B7 GETMET R24 R24 K75 + 0x5C681A00, // 01B8 MOVE R26 R13 + 0x7C600400, // 01B9 CALL R24 2 + 0x8C60034C, // 01BA GETMET R24 R1 K76 + 0x7C600200, // 01BB CALL R24 1 + 0x78620002, // 01BC JMPF R24 #01C0 + 0x8C60034D, // 01BD GETMET R24 R1 K77 + 0x546A003B, // 01BE LDINT R26 60 + 0x7C600400, // 01BF CALL R24 2 + 0x8C601B4E, // 01C0 GETMET R24 R13 K78 + 0x7C600200, // 01C1 CALL R24 1 + 0x8C600B09, // 01C2 GETMET R24 R5 K9 + 0x7C600200, // 01C3 CALL R24 1 + 0x8C64310A, // 01C4 GETMET R25 R24 K10 + 0x586C0005, // 01C5 LDCONST R27 K5 + 0x88700B0B, // 01C6 GETMBR R28 R5 K11 + 0xB8760200, // 01C7 GETNGBL R29 K1 + 0x88743B2C, // 01C8 GETMBR R29 R29 K44 + 0x7C640800, // 01C9 CALL R25 4 + 0x8C64310A, // 01CA GETMET R25 R24 K10 + 0x586C0007, // 01CB LDCONST R27 K7 + 0x88700B0B, // 01CC GETMBR R28 R5 K11 + 0x58740007, // 01CD LDCONST R29 K7 + 0x7C640800, // 01CE CALL R25 4 + 0x54660007, // 01CF LDINT R25 8 + 0x900E0819, // 01D0 SETMBR R3 K4 R25 + 0x80043000, // 01D1 RET 1 R24 + 0x70020056, // 01D2 JMP #022A + 0x54220008, // 01D3 LDINT R8 9 + 0x1C200E08, // 01D4 EQ R8 R7 R8 + 0x7822001E, // 01D5 JMPF R8 #01F5 + 0x8C200506, // 01D6 GETMET R8 R2 K6 + 0x58280005, // 01D7 LDCONST R10 K5 + 0x7C200400, // 01D8 CALL R8 2 + 0x8C24034F, // 01D9 GETMET R9 R1 K79 + 0x5C2C1000, // 01DA MOVE R11 R8 + 0x7C240400, // 01DB CALL R9 2 + 0xB8264600, // 01DC GETNGBL R9 K35 + 0x8C24132D, // 01DD GETMET R9 R9 K45 + 0x602C0018, // 01DE GETGBL R11 G24 + 0x58300050, // 01DF LDCONST R12 K80 + 0x88340313, // 01E0 GETMBR R13 R1 K19 + 0x8C341B51, // 01E1 GETMET R13 R13 K81 + 0x7C340200, // 01E2 CALL R13 1 + 0x8C341B45, // 01E3 GETMET R13 R13 K69 + 0x7C340200, // 01E4 CALL R13 1 + 0x8C341B46, // 01E5 GETMET R13 R13 K70 + 0x7C340200, // 01E6 CALL R13 1 + 0x8C341B52, // 01E7 GETMET R13 R13 K82 + 0x7C340200, // 01E8 CALL R13 1 + 0x60380008, // 01E9 GETGBL R14 G8 + 0x5C3C1000, // 01EA MOVE R15 R8 + 0x7C380200, // 01EB CALL R14 1 + 0x7C2C0600, // 01EC CALL R11 3 + 0x58300010, // 01ED LDCONST R12 K16 + 0x7C240600, // 01EE CALL R9 3 + 0xB8260200, // 01EF GETNGBL R9 K1 + 0x8824132C, // 01F0 GETMBR R9 R9 K44 + 0x900E3609, // 01F1 SETMBR R3 K27 R9 + 0x4C240000, // 01F2 LDNIL R9 + 0x80041200, // 01F3 RET 1 R9 + 0x70020034, // 01F4 JMP #022A + 0x54220009, // 01F5 LDINT R8 10 + 0x1C200E08, // 01F6 EQ R8 R7 R8 + 0x78220031, // 01F7 JMPF R8 #022A + 0x8C200506, // 01F8 GETMET R8 R2 K6 + 0x58280005, // 01F9 LDCONST R10 K5 + 0x7C200400, // 01FA CALL R8 2 + 0x60240008, // 01FB GETGBL R9 G8 + 0x5C281000, // 01FC MOVE R10 R8 + 0x7C240200, // 01FD CALL R9 1 + 0x0026A609, // 01FE ADD R9 K83 R9 + 0x900E5A09, // 01FF SETMBR R3 K45 R9 + 0x60240010, // 0200 GETGBL R9 G16 + 0x88280117, // 0201 GETMBR R10 R0 K23 + 0x88281531, // 0202 GETMBR R10 R10 K49 + 0x8C281554, // 0203 GETMET R10 R10 K84 + 0x7C280200, // 0204 CALL R10 1 + 0x7C240200, // 0205 CALL R9 1 + 0xA8020010, // 0206 EXBLK 0 #0218 + 0x5C281200, // 0207 MOVE R10 R9 + 0x7C280000, // 0208 CALL R10 0 + 0x8C2C1555, // 0209 GETMET R11 R10 K85 + 0x7C2C0200, // 020A CALL R11 1 + 0x1C2C1608, // 020B EQ R11 R11 R8 + 0x782E0008, // 020C JMPF R11 #0216 + 0xB82E4600, // 020D GETNGBL R11 K35 + 0x8C2C1756, // 020E GETMET R11 R11 K86 + 0x543607CF, // 020F LDINT R13 2000 + 0x84380000, // 0210 CLOSURE R14 P0 + 0x7C2C0600, // 0211 CALL R11 3 + 0x502C0200, // 0212 LDBOOL R11 1 0 + 0xA0000000, // 0213 CLOSE R0 + 0xA8040001, // 0214 EXBLK 1 1 + 0x80041600, // 0215 RET 1 R11 + 0xA0240000, // 0216 CLOSE R9 + 0x7001FFEE, // 0217 JMP #0207 + 0x58240057, // 0218 LDCONST R9 K87 + 0xAC240200, // 0219 CATCH R9 1 0 + 0xB0080000, // 021A RAISE 2 R0 R0 + 0xB8264600, // 021B GETNGBL R9 K35 + 0x8C24132D, // 021C GETMET R9 R9 K45 + 0x602C0008, // 021D GETGBL R11 G8 + 0x5C301000, // 021E MOVE R12 R8 + 0x7C2C0200, // 021F CALL R11 1 + 0x002EB00B, // 0220 ADD R11 K88 R11 + 0x002C1759, // 0221 ADD R11 R11 K89 + 0x5830000E, // 0222 LDCONST R12 K14 + 0x7C240600, // 0223 CALL R9 3 + 0xB8260200, // 0224 GETNGBL R9 K1 + 0x8824135A, // 0225 GETMBR R9 R9 K90 + 0x900E3609, // 0226 SETMBR R3 K27 R9 + 0x4C240000, // 0227 LDNIL R9 + 0xA0000000, // 0228 CLOSE R0 + 0x80041200, // 0229 RET 1 R9 + 0x7002009B, // 022A JMP #02C7 + 0x5422003B, // 022B LDINT R8 60 + 0x1C200C08, // 022C EQ R8 R6 R8 + 0x78220085, // 022D JMPF R8 #02B4 + 0x1C200F05, // 022E EQ R8 R7 K5 + 0x78220065, // 022F JMPF R8 #0296 + 0x8C200506, // 0230 GETMET R8 R2 K6 + 0x58280005, // 0231 LDCONST R10 K5 + 0x7C200400, // 0232 CALL R8 2 + 0x8C240506, // 0233 GETMET R9 R2 K6 + 0x582C0007, // 0234 LDCONST R11 K7 + 0x7C240400, // 0235 CALL R9 2 + 0x8C280506, // 0236 GETMET R10 R2 K6 + 0x5830000E, // 0237 LDCONST R12 K14 + 0x7C280400, // 0238 CALL R10 2 + 0x8C2C0506, // 0239 GETMET R11 R2 K6 + 0x58340010, // 023A LDCONST R13 K16 + 0x7C2C0400, // 023B CALL R11 2 + 0x8C300506, // 023C GETMET R12 R2 K6 + 0x543A0003, // 023D LDINT R14 4 + 0x7C300400, // 023E CALL R12 2 + 0xB8364600, // 023F GETNGBL R13 K35 + 0x8C341B2D, // 0240 GETMET R13 R13 K45 + 0x603C0018, // 0241 GETGBL R15 G24 + 0x5840005B, // 0242 LDCONST R16 K91 + 0x5C441000, // 0243 MOVE R17 R8 + 0x8C481352, // 0244 GETMET R18 R9 K82 + 0x7C480200, // 0245 CALL R18 1 + 0x5C4C1400, // 0246 MOVE R19 R10 + 0x5C501600, // 0247 MOVE R20 R11 + 0x8C541952, // 0248 GETMET R21 R12 K82 + 0x7C540200, // 0249 CALL R21 1 + 0x7C3C0C00, // 024A CALL R15 6 + 0x54420003, // 024B LDINT R16 4 + 0x7C340600, // 024C CALL R13 3 + 0x4C340000, // 024D LDNIL R13 + 0x1C34100D, // 024E EQ R13 R8 R13 + 0x7436000B, // 024F JMPT R13 #025C + 0x4C340000, // 0250 LDNIL R13 + 0x1C34120D, // 0251 EQ R13 R9 R13 + 0x74360008, // 0252 JMPT R13 #025C + 0x4C340000, // 0253 LDNIL R13 + 0x1C34140D, // 0254 EQ R13 R10 R13 + 0x74360005, // 0255 JMPT R13 #025C + 0x4C340000, // 0256 LDNIL R13 + 0x1C34160D, // 0257 EQ R13 R11 R13 + 0x74360002, // 0258 JMPT R13 #025C + 0x4C340000, // 0259 LDNIL R13 + 0x1C34180D, // 025A EQ R13 R12 R13 + 0x78360005, // 025B JMPF R13 #0262 + 0xB8360200, // 025C GETNGBL R13 K1 + 0x88341B5C, // 025D GETMBR R13 R13 K92 + 0x900E360D, // 025E SETMBR R3 K27 R13 + 0x4C340000, // 025F LDNIL R13 + 0xA0000000, // 0260 CLOSE R0 + 0x80041A00, // 0261 RET 1 R13 + 0x6034000C, // 0262 GETGBL R13 G12 + 0x5C381200, // 0263 MOVE R14 R9 + 0x7C340200, // 0264 CALL R13 1 + 0x543A001F, // 0265 LDINT R14 32 + 0x543E0040, // 0266 LDINT R15 65 + 0x00381C0F, // 0267 ADD R14 R14 R15 + 0x20341A0E, // 0268 NE R13 R13 R14 + 0x7436000B, // 0269 JMPT R13 #0276 + 0x6034000C, // 026A GETGBL R13 G12 + 0x5C381800, // 026B MOVE R14 R12 + 0x7C340200, // 026C CALL R13 1 + 0x543A000F, // 026D LDINT R14 16 + 0x14341A0E, // 026E LT R13 R13 R14 + 0x74360005, // 026F JMPT R13 #0276 + 0x6034000C, // 0270 GETGBL R13 G12 + 0x5C381800, // 0271 MOVE R14 R12 + 0x7C340200, // 0272 CALL R13 1 + 0x543A001F, // 0273 LDINT R14 32 + 0x24341A0E, // 0274 GT R13 R13 R14 + 0x7836000A, // 0275 JMPF R13 #0281 + 0xB8364600, // 0276 GETNGBL R13 K35 + 0x8C341B2D, // 0277 GETMET R13 R13 K45 + 0x583C005D, // 0278 LDCONST R15 K93 + 0x5840000E, // 0279 LDCONST R16 K14 + 0x7C340600, // 027A CALL R13 3 + 0xB8360200, // 027B GETNGBL R13 K1 + 0x88341B5E, // 027C GETMBR R13 R13 K94 + 0x900E360D, // 027D SETMBR R3 K27 R13 + 0x4C340000, // 027E LDNIL R13 + 0xA0000000, // 027F CLOSE R0 + 0x80041A00, // 0280 RET 1 R13 + 0x5436001E, // 0281 LDINT R13 31 + 0x40360A0D, // 0282 CONNECT R13 K5 R13 + 0x9434120D, // 0283 GETIDX R13 R9 R13 + 0x543A001F, // 0284 LDINT R14 32 + 0x40381D41, // 0285 CONNECT R14 R14 K65 + 0x9438120E, // 0286 GETIDX R14 R9 R14 + 0x883C0117, // 0287 GETMBR R15 R0 K23 + 0x8C3C1F5F, // 0288 GETMET R15 R15 K95 + 0x5C441000, // 0289 MOVE R17 R8 + 0x5C481600, // 028A MOVE R18 R11 + 0x5C4C1400, // 028B MOVE R19 R10 + 0x5C501800, // 028C MOVE R20 R12 + 0x5C541A00, // 028D MOVE R21 R13 + 0x5C581C00, // 028E MOVE R22 R14 + 0x8C5C0360, // 028F GETMET R23 R1 K96 + 0x7C5C0200, // 0290 CALL R23 1 + 0x7C3C1000, // 0291 CALL R15 8 + 0x503C0200, // 0292 LDBOOL R15 1 0 + 0xA0000000, // 0293 CLOSE R0 + 0x80041E00, // 0294 RET 1 R15 + 0x7002001C, // 0295 JMP #02B3 + 0x1C200F07, // 0296 EQ R8 R7 K7 + 0x78220012, // 0297 JMPF R8 #02AB + 0x8C200506, // 0298 GETMET R8 R2 K6 + 0x58280005, // 0299 LDCONST R10 K5 + 0x7C200400, // 029A CALL R8 2 + 0xB8264600, // 029B GETNGBL R9 K35 + 0x8C24132D, // 029C GETMET R9 R9 K45 + 0x602C0008, // 029D GETGBL R11 G8 + 0x5C301000, // 029E MOVE R12 R8 + 0x7C2C0200, // 029F CALL R11 1 + 0x002EC20B, // 02A0 ADD R11 K97 R11 + 0x58300010, // 02A1 LDCONST R12 K16 + 0x7C240600, // 02A2 CALL R9 3 + 0x88240117, // 02A3 GETMBR R9 R0 K23 + 0x8C241362, // 02A4 GETMET R9 R9 K98 + 0x5C2C1000, // 02A5 MOVE R11 R8 + 0x7C240400, // 02A6 CALL R9 2 + 0x50240200, // 02A7 LDBOOL R9 1 0 + 0xA0000000, // 02A8 CLOSE R0 + 0x80041200, // 02A9 RET 1 R9 + 0x70020007, // 02AA JMP #02B3 + 0x1C200F0E, // 02AB EQ R8 R7 K14 + 0x78220005, // 02AC JMPF R8 #02B3 + 0x88200117, // 02AD GETMBR R8 R0 K23 + 0x8C201163, // 02AE GETMET R8 R8 K99 + 0x7C200200, // 02AF CALL R8 1 + 0x50200200, // 02B0 LDBOOL R8 1 0 + 0xA0000000, // 02B1 CLOSE R0 + 0x80041000, // 02B2 RET 1 R8 + 0x70020012, // 02B3 JMP #02C7 + 0x54220029, // 02B4 LDINT R8 42 + 0x1C200C08, // 02B5 EQ R8 R6 R8 + 0x78220005, // 02B6 JMPF R8 #02BD + 0x1C200F05, // 02B7 EQ R8 R7 K5 + 0x78220002, // 02B8 JMPF R8 #02BC + 0x50200200, // 02B9 LDBOOL R8 1 0 + 0xA0000000, // 02BA CLOSE R0 + 0x80041000, // 02BB RET 1 R8 + 0x70020009, // 02BC JMP #02C7 + 0x60200003, // 02BD GETGBL R8 G3 + 0x5C240000, // 02BE MOVE R9 R0 + 0x7C200200, // 02BF CALL R8 1 + 0x8C201164, // 02C0 GETMET R8 R8 K100 + 0x5C280200, // 02C1 MOVE R10 R1 + 0x5C2C0400, // 02C2 MOVE R11 R2 + 0x5C300600, // 02C3 MOVE R12 R3 + 0x7C200800, // 02C4 CALL R8 4 + 0xA0000000, // 02C5 CLOSE R0 + 0x80041000, // 02C6 RET 1 R8 + 0xA0000000, // 02C7 CLOSE R0 + 0x80000000, // 02C8 RET 0 }) ) ); @@ -879,22 +877,22 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ be_nested_proto( - 24, /* nstack */ - 3, /* argc */ + 25, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[88]) { /* constants */ + ( &(const bvalue[91]) { /* constants */ /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(TLV), /* K3 */ be_nested_str_weak(cluster), /* K4 */ be_nested_str_weak(attribute), /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(U8), /* K8 */ be_nested_str_weak(_breadcrumb), /* K9 */ be_const_int(1), @@ -935,955 +933,965 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ /* K44 */ be_nested_str_weak(StatusSTS), /* K45 */ be_nested_str_weak(UptimeSec), /* K46 */ be_nested_str_weak(int64), - /* K47 */ be_nested_str_weak(rtc), - /* K48 */ be_nested_str_weak(utc), - /* K49 */ be_const_int(1000000), + /* K47 */ be_nested_str_weak(rtc_utc), + /* K48 */ be_const_int(1000000), + /* K49 */ be_nested_str_weak(rtc), /* K50 */ be_nested_str_weak(local), - /* K51 */ be_nested_str_weak(device), - /* K52 */ be_nested_str_weak(sessions), - /* K53 */ be_nested_str_weak(active_fabrics), - /* K54 */ be_nested_str_weak(B2), - /* K55 */ be_nested_str_weak(get_noc), - /* K56 */ be_nested_str_weak(get_icac), - /* K57 */ be_nested_str_weak(get_fabric_index), - /* K58 */ be_nested_str_weak(stop_iteration), - /* K59 */ be_nested_str_weak(parse), - /* K60 */ be_nested_str_weak(get_ca), - /* K61 */ be_nested_str_weak(findsubval), - /* K62 */ be_nested_str_weak(get_admin_vendor), - /* K63 */ be_nested_str_weak(get_fabric_id), - /* K64 */ be_nested_str_weak(get_device_id), - /* K65 */ be_nested_str_weak(get_fabric_label), - /* K66 */ be_nested_str_weak(Fabric), - /* K67 */ be_nested_str_weak(_MAX_CASE), - /* K68 */ be_nested_str_weak(count_active_fabrics), - /* K69 */ be_nested_str_weak(_fabric), - /* K70 */ be_nested_str_weak(is_commissioning_open), - /* K71 */ be_nested_str_weak(is_root_commissioning_open), - /* K72 */ be_nested_str_weak(commissioning_admin_fabric), - /* K73 */ be_nested_str_weak(Tasmota), - /* K74 */ be_nested_str_weak(vendorid), - /* K75 */ be_nested_str_weak(DeviceName), - /* K76 */ be_nested_str_weak(FriendlyName), - /* K77 */ be_nested_str_weak(FriendlyName1), - /* K78 */ be_nested_str_weak(XX), - /* K79 */ be_nested_str_weak(Status_X202), - /* K80 */ be_nested_str_weak(StatusFWR), - /* K81 */ be_nested_str_weak(Hardware), - /* K82 */ be_nested_str_weak(Version), - /* K83 */ be_nested_str_weak(_X28), - /* K84 */ be_nested_str_weak(locale), - /* K85 */ be_nested_str_weak(get_active_endpoints), - /* K86 */ be_nested_str_weak(disable_bridge_mode), - /* K87 */ be_nested_str_weak(read_attribute), + /* K51 */ be_nested_str_weak(send_ack_now), + /* K52 */ be_nested_str_weak(msg), + /* K53 */ be_nested_str_weak(device), + /* K54 */ be_nested_str_weak(sessions), + /* K55 */ be_nested_str_weak(active_fabrics), + /* K56 */ be_nested_str_weak(B2), + /* K57 */ be_nested_str_weak(get_noc), + /* K58 */ be_nested_str_weak(get_icac), + /* K59 */ be_nested_str_weak(get_fabric_index), + /* K60 */ be_nested_str_weak(stop_iteration), + /* K61 */ be_nested_str_weak(parse), + /* K62 */ be_nested_str_weak(get_ca), + /* K63 */ be_nested_str_weak(findsubval), + /* K64 */ be_nested_str_weak(get_admin_vendor), + /* K65 */ be_nested_str_weak(get_fabric_id), + /* K66 */ be_nested_str_weak(get_device_id), + /* K67 */ be_nested_str_weak(get_fabric_label), + /* K68 */ be_nested_str_weak(Fabric), + /* K69 */ be_nested_str_weak(_MAX_CASE), + /* K70 */ be_nested_str_weak(count_active_fabrics), + /* K71 */ be_nested_str_weak(_fabric), + /* K72 */ be_nested_str_weak(is_commissioning_open), + /* K73 */ be_nested_str_weak(is_root_commissioning_open), + /* K74 */ be_nested_str_weak(commissioning_admin_fabric), + /* K75 */ be_nested_str_weak(Tasmota), + /* K76 */ be_nested_str_weak(vendorid), + /* K77 */ be_nested_str_weak(DeviceName), + /* K78 */ be_nested_str_weak(FriendlyName), + /* K79 */ be_nested_str_weak(FriendlyName1), + /* K80 */ be_nested_str_weak(XX), + /* K81 */ be_nested_str_weak(Status_X202), + /* K82 */ be_nested_str_weak(StatusFWR), + /* K83 */ be_nested_str_weak(Hardware), + /* K84 */ be_nested_str_weak(Version), + /* K85 */ be_nested_str_weak(_X28), + /* K86 */ be_nested_str_weak(locale), + /* K87 */ be_nested_str_weak(create_TLV), + /* K88 */ be_nested_str_weak(get_active_endpoints), + /* K89 */ be_nested_str_weak(disable_bridge_mode), + /* K90 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[904]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x88100902, // 0002 GETMBR R4 R4 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x88180504, // 0004 GETMBR R6 R2 K4 - 0x541E002F, // 0005 LDINT R7 48 - 0x1C1C0A07, // 0006 EQ R7 R5 R7 - 0x781E0030, // 0007 JMPF R7 #0039 - 0x1C1C0D05, // 0008 EQ R7 R6 K5 - 0x781E0005, // 0009 JMPF R7 #0010 - 0x8C1C0906, // 000A GETMET R7 R4 K6 - 0x88240907, // 000B GETMBR R9 R4 K7 - 0x88280308, // 000C GETMBR R10 R1 K8 - 0x7C1C0600, // 000D CALL R7 3 - 0x80040E00, // 000E RET 1 R7 + ( &(const binstruction[911]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0xB8160200, // 0001 GETNGBL R5 K1 + 0x88140B02, // 0002 GETMBR R5 R5 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x881C0504, // 0004 GETMBR R7 R2 K4 + 0x5422002F, // 0005 LDINT R8 48 + 0x1C200C08, // 0006 EQ R8 R6 R8 + 0x78220030, // 0007 JMPF R8 #0039 + 0x1C200F05, // 0008 EQ R8 R7 K5 + 0x78220005, // 0009 JMPF R8 #0010 + 0x8C200706, // 000A GETMET R8 R3 K6 + 0x88280B07, // 000B GETMBR R10 R5 K7 + 0x882C0308, // 000C GETMBR R11 R1 K8 + 0x7C200600, // 000D CALL R8 3 + 0x80041000, // 000E RET 1 R8 0x70020027, // 000F JMP #0038 - 0x1C1C0D09, // 0010 EQ R7 R6 K9 - 0x781E000D, // 0011 JMPF R7 #0020 - 0x8C1C090A, // 0012 GETMET R7 R4 K10 - 0x7C1C0200, // 0013 CALL R7 1 - 0x8C200F0B, // 0014 GETMET R8 R7 K11 - 0x58280005, // 0015 LDCONST R10 K5 - 0x882C090C, // 0016 GETMBR R11 R4 K12 - 0x5432003B, // 0017 LDINT R12 60 - 0x7C200800, // 0018 CALL R8 4 - 0x8C200F0B, // 0019 GETMET R8 R7 K11 - 0x58280009, // 001A LDCONST R10 K9 - 0x882C090C, // 001B GETMBR R11 R4 K12 - 0x54320383, // 001C LDINT R12 900 - 0x7C200800, // 001D CALL R8 4 - 0x80040E00, // 001E RET 1 R7 + 0x1C200F09, // 0010 EQ R8 R7 K9 + 0x7822000D, // 0011 JMPF R8 #0020 + 0x8C200B0A, // 0012 GETMET R8 R5 K10 + 0x7C200200, // 0013 CALL R8 1 + 0x8C24110B, // 0014 GETMET R9 R8 K11 + 0x582C0005, // 0015 LDCONST R11 K5 + 0x88300B0C, // 0016 GETMBR R12 R5 K12 + 0x5436003B, // 0017 LDINT R13 60 + 0x7C240800, // 0018 CALL R9 4 + 0x8C24110B, // 0019 GETMET R9 R8 K11 + 0x582C0009, // 001A LDCONST R11 K9 + 0x88300B0C, // 001B GETMBR R12 R5 K12 + 0x54360383, // 001C LDINT R13 900 + 0x7C240800, // 001D CALL R9 4 + 0x80041000, // 001E RET 1 R8 0x70020017, // 001F JMP #0038 - 0x1C1C0D0D, // 0020 EQ R7 R6 K13 - 0x781E0005, // 0021 JMPF R7 #0028 - 0x8C1C0906, // 0022 GETMET R7 R4 K6 - 0x8824090E, // 0023 GETMBR R9 R4 K14 - 0x5828000D, // 0024 LDCONST R10 K13 - 0x7C1C0600, // 0025 CALL R7 3 - 0x80040E00, // 0026 RET 1 R7 + 0x1C200F0D, // 0020 EQ R8 R7 K13 + 0x78220005, // 0021 JMPF R8 #0028 + 0x8C200706, // 0022 GETMET R8 R3 K6 + 0x88280B0E, // 0023 GETMBR R10 R5 K14 + 0x582C000D, // 0024 LDCONST R11 K13 + 0x7C200600, // 0025 CALL R8 3 + 0x80041000, // 0026 RET 1 R8 0x7002000F, // 0027 JMP #0038 - 0x1C1C0D0F, // 0028 EQ R7 R6 K15 - 0x781E0005, // 0029 JMPF R7 #0030 - 0x8C1C0906, // 002A GETMET R7 R4 K6 - 0x8824090E, // 002B GETMBR R9 R4 K14 - 0x5828000D, // 002C LDCONST R10 K13 - 0x7C1C0600, // 002D CALL R7 3 - 0x80040E00, // 002E RET 1 R7 + 0x1C200F0F, // 0028 EQ R8 R7 K15 + 0x78220005, // 0029 JMPF R8 #0030 + 0x8C200706, // 002A GETMET R8 R3 K6 + 0x88280B0E, // 002B GETMBR R10 R5 K14 + 0x582C000D, // 002C LDCONST R11 K13 + 0x7C200600, // 002D CALL R8 3 + 0x80041000, // 002E RET 1 R8 0x70020007, // 002F JMP #0038 - 0x541E0003, // 0030 LDINT R7 4 - 0x1C1C0C07, // 0031 EQ R7 R6 R7 - 0x781E0004, // 0032 JMPF R7 #0038 - 0x8C1C0906, // 0033 GETMET R7 R4 K6 - 0x88240910, // 0034 GETMBR R9 R4 K16 - 0x50280000, // 0035 LDBOOL R10 0 0 - 0x7C1C0600, // 0036 CALL R7 3 - 0x80040E00, // 0037 RET 1 R7 - 0x7002034D, // 0038 JMP #0387 - 0x541E0031, // 0039 LDINT R7 50 - 0x1C1C0A07, // 003A EQ R7 R5 R7 - 0x781E0000, // 003B JMPF R7 #003D - 0x70020349, // 003C JMP #0387 - 0x541E0032, // 003D LDINT R7 51 - 0x1C1C0A07, // 003E EQ R7 R5 R7 - 0x781E00DC, // 003F JMPF R7 #011D - 0x1C1C0D05, // 0040 EQ R7 R6 K5 - 0x781E00B5, // 0041 JMPF R7 #00F8 - 0x8C1C0911, // 0042 GETMET R7 R4 K17 - 0x7C1C0200, // 0043 CALL R7 1 - 0xB8222400, // 0044 GETNGBL R8 K18 - 0x8C201113, // 0045 GETMET R8 R8 K19 - 0x7C200200, // 0046 CALL R8 1 - 0x94241114, // 0047 GETIDX R9 R8 K20 - 0x78260053, // 0048 JMPF R9 #009D - 0x8C240F15, // 0049 GETMET R9 R7 K21 - 0x4C2C0000, // 004A LDNIL R11 - 0x7C240400, // 004B CALL R9 2 - 0x8C28130B, // 004C GETMET R10 R9 K11 - 0x58300005, // 004D LDCONST R12 K5 - 0x88340916, // 004E GETMBR R13 R4 K22 - 0x58380017, // 004F LDCONST R14 K23 - 0x7C280800, // 0050 CALL R10 4 - 0x8C28130B, // 0051 GETMET R10 R9 K11 - 0x58300009, // 0052 LDCONST R12 K9 - 0x88340910, // 0053 GETMBR R13 R4 K16 - 0x58380009, // 0054 LDCONST R14 K9 - 0x7C280800, // 0055 CALL R10 4 - 0x8C28130B, // 0056 GETMET R10 R9 K11 - 0x5830000D, // 0057 LDCONST R12 K13 - 0x88340910, // 0058 GETMBR R13 R4 K16 - 0x58380009, // 0059 LDCONST R14 K9 - 0x7C280800, // 005A CALL R10 4 - 0x8C28130B, // 005B GETMET R10 R9 K11 - 0x5830000F, // 005C LDCONST R12 K15 - 0x88340918, // 005D GETMBR R13 R4 K24 - 0x4C380000, // 005E LDNIL R14 - 0x7C280800, // 005F CALL R10 4 - 0x60280015, // 0060 GETGBL R10 G21 - 0x7C280000, // 0061 CALL R10 0 - 0x8C281519, // 0062 GETMET R10 R10 K25 - 0x8C30071A, // 0063 GETMET R12 R3 K26 - 0x8C38111B, // 0064 GETMET R14 R8 K27 - 0x5840001C, // 0065 LDCONST R16 K28 - 0x5844001D, // 0066 LDCONST R17 K29 - 0x7C380600, // 0067 CALL R14 3 - 0x583C001E, // 0068 LDCONST R15 K30 - 0x5840001D, // 0069 LDCONST R16 K29 - 0x7C300800, // 006A CALL R12 4 - 0x7C280400, // 006B CALL R10 2 - 0x8C2C130B, // 006C GETMET R11 R9 K11 - 0x54360003, // 006D LDINT R13 4 - 0x8838091F, // 006E GETMBR R14 R4 K31 - 0x5C3C1400, // 006F MOVE R15 R10 - 0x7C2C0800, // 0070 CALL R11 4 - 0x8C2C1320, // 0071 GETMET R11 R9 K32 - 0x54360004, // 0072 LDINT R13 5 - 0x7C2C0400, // 0073 CALL R11 2 - 0x8C30170B, // 0074 GETMET R12 R11 K11 - 0x4C380000, // 0075 LDNIL R14 - 0x883C091F, // 0076 GETMBR R15 R4 K31 - 0xB8420200, // 0077 GETNGBL R16 K1 - 0x8C402121, // 0078 GETMET R16 R16 K33 - 0x8C48111B, // 0079 GETMET R18 R8 K27 - 0x58500022, // 007A LDCONST R20 K34 - 0x5854001D, // 007B LDCONST R21 K29 - 0x7C480600, // 007C CALL R18 3 - 0x7C400400, // 007D CALL R16 2 - 0x7C300800, // 007E CALL R12 4 - 0x8C301320, // 007F GETMET R12 R9 K32 - 0x543A0005, // 0080 LDINT R14 6 - 0x7C300400, // 0081 CALL R12 2 - 0x8C34190B, // 0082 GETMET R13 R12 K11 - 0x4C3C0000, // 0083 LDNIL R15 - 0x8840091F, // 0084 GETMBR R16 R4 K31 - 0xB8460200, // 0085 GETNGBL R17 K1 - 0x8C442321, // 0086 GETMET R17 R17 K33 - 0x8C4C111B, // 0087 GETMET R19 R8 K27 - 0x58540023, // 0088 LDCONST R21 K35 - 0x5858001D, // 0089 LDCONST R22 K29 - 0x7C4C0600, // 008A CALL R19 3 - 0x7C440400, // 008B CALL R17 2 - 0x7C340800, // 008C CALL R13 4 - 0x8C34190B, // 008D GETMET R13 R12 K11 - 0x4C3C0000, // 008E LDNIL R15 - 0x8840091F, // 008F GETMBR R16 R4 K31 - 0xB8460200, // 0090 GETNGBL R17 K1 - 0x8C442321, // 0091 GETMET R17 R17 K33 - 0x8C4C111B, // 0092 GETMET R19 R8 K27 - 0x58540024, // 0093 LDCONST R21 K36 - 0x5858001D, // 0094 LDCONST R22 K29 - 0x7C4C0600, // 0095 CALL R19 3 - 0x7C440400, // 0096 CALL R17 2 - 0x7C340800, // 0097 CALL R13 4 - 0x8C34130B, // 0098 GETMET R13 R9 K11 - 0x543E0006, // 0099 LDINT R15 7 - 0x8840090E, // 009A GETMBR R16 R4 K14 - 0x5844000D, // 009B LDCONST R17 K13 - 0x7C340800, // 009C CALL R13 4 - 0xB8262400, // 009D GETNGBL R9 K18 - 0x8C241325, // 009E GETMET R9 R9 K37 - 0x7C240200, // 009F CALL R9 1 - 0x94281314, // 00A0 GETIDX R10 R9 K20 - 0x782A0053, // 00A1 JMPF R10 #00F6 - 0x8C280F15, // 00A2 GETMET R10 R7 K21 - 0x4C300000, // 00A3 LDNIL R12 - 0x7C280400, // 00A4 CALL R10 2 - 0x8C2C150B, // 00A5 GETMET R11 R10 K11 - 0x58340005, // 00A6 LDCONST R13 K5 - 0x88380916, // 00A7 GETMBR R14 R4 K22 - 0x583C0025, // 00A8 LDCONST R15 K37 - 0x7C2C0800, // 00A9 CALL R11 4 - 0x8C2C150B, // 00AA GETMET R11 R10 K11 - 0x58340009, // 00AB LDCONST R13 K9 - 0x88380910, // 00AC GETMBR R14 R4 K16 - 0x583C0009, // 00AD LDCONST R15 K9 - 0x7C2C0800, // 00AE CALL R11 4 - 0x8C2C150B, // 00AF GETMET R11 R10 K11 - 0x5834000D, // 00B0 LDCONST R13 K13 - 0x88380910, // 00B1 GETMBR R14 R4 K16 - 0x583C0009, // 00B2 LDCONST R15 K9 - 0x7C2C0800, // 00B3 CALL R11 4 - 0x8C2C150B, // 00B4 GETMET R11 R10 K11 - 0x5834000F, // 00B5 LDCONST R13 K15 - 0x88380918, // 00B6 GETMBR R14 R4 K24 - 0x4C3C0000, // 00B7 LDNIL R15 - 0x7C2C0800, // 00B8 CALL R11 4 - 0x602C0015, // 00B9 GETGBL R11 G21 - 0x7C2C0000, // 00BA CALL R11 0 - 0x8C2C1719, // 00BB GETMET R11 R11 K25 - 0x8C34071A, // 00BC GETMET R13 R3 K26 - 0x8C3C131B, // 00BD GETMET R15 R9 K27 - 0x5844001C, // 00BE LDCONST R17 K28 - 0x5848001D, // 00BF LDCONST R18 K29 - 0x7C3C0600, // 00C0 CALL R15 3 - 0x5840001E, // 00C1 LDCONST R16 K30 - 0x5844001D, // 00C2 LDCONST R17 K29 - 0x7C340800, // 00C3 CALL R13 4 - 0x7C2C0400, // 00C4 CALL R11 2 - 0x8C30150B, // 00C5 GETMET R12 R10 K11 - 0x543A0003, // 00C6 LDINT R14 4 - 0x883C091F, // 00C7 GETMBR R15 R4 K31 - 0x5C401600, // 00C8 MOVE R16 R11 - 0x7C300800, // 00C9 CALL R12 4 - 0x8C301520, // 00CA GETMET R12 R10 K32 - 0x543A0004, // 00CB LDINT R14 5 - 0x7C300400, // 00CC CALL R12 2 - 0x8C34190B, // 00CD GETMET R13 R12 K11 - 0x4C3C0000, // 00CE LDNIL R15 - 0x8840091F, // 00CF GETMBR R16 R4 K31 - 0xB8460200, // 00D0 GETNGBL R17 K1 - 0x8C442321, // 00D1 GETMET R17 R17 K33 - 0x8C4C131B, // 00D2 GETMET R19 R9 K27 - 0x58540022, // 00D3 LDCONST R21 K34 - 0x5858001D, // 00D4 LDCONST R22 K29 - 0x7C4C0600, // 00D5 CALL R19 3 - 0x7C440400, // 00D6 CALL R17 2 - 0x7C340800, // 00D7 CALL R13 4 - 0x8C341520, // 00D8 GETMET R13 R10 K32 - 0x543E0005, // 00D9 LDINT R15 6 - 0x7C340400, // 00DA CALL R13 2 - 0x8C381B0B, // 00DB GETMET R14 R13 K11 - 0x4C400000, // 00DC LDNIL R16 - 0x8844091F, // 00DD GETMBR R17 R4 K31 - 0xB84A0200, // 00DE GETNGBL R18 K1 - 0x8C482521, // 00DF GETMET R18 R18 K33 - 0x8C50131B, // 00E0 GETMET R20 R9 K27 - 0x58580023, // 00E1 LDCONST R22 K35 - 0x585C001D, // 00E2 LDCONST R23 K29 - 0x7C500600, // 00E3 CALL R20 3 - 0x7C480400, // 00E4 CALL R18 2 - 0x7C380800, // 00E5 CALL R14 4 - 0x8C381B0B, // 00E6 GETMET R14 R13 K11 - 0x4C400000, // 00E7 LDNIL R16 - 0x8844091F, // 00E8 GETMBR R17 R4 K31 - 0xB84A0200, // 00E9 GETNGBL R18 K1 - 0x8C482521, // 00EA GETMET R18 R18 K33 - 0x8C50131B, // 00EB GETMET R20 R9 K27 - 0x58580024, // 00EC LDCONST R22 K36 - 0x585C001D, // 00ED LDCONST R23 K29 - 0x7C500600, // 00EE CALL R20 3 - 0x7C480400, // 00EF CALL R18 2 - 0x7C380800, // 00F0 CALL R14 4 - 0x8C38150B, // 00F1 GETMET R14 R10 K11 - 0x54420006, // 00F2 LDINT R16 7 - 0x8844090E, // 00F3 GETMBR R17 R4 K14 - 0x58480009, // 00F4 LDCONST R18 K9 - 0x7C380800, // 00F5 CALL R14 4 - 0x80040E00, // 00F6 RET 1 R7 + 0x54220003, // 0030 LDINT R8 4 + 0x1C200E08, // 0031 EQ R8 R7 R8 + 0x78220004, // 0032 JMPF R8 #0038 + 0x8C200706, // 0033 GETMET R8 R3 K6 + 0x88280B10, // 0034 GETMBR R10 R5 K16 + 0x502C0000, // 0035 LDBOOL R11 0 0 + 0x7C200600, // 0036 CALL R8 3 + 0x80041000, // 0037 RET 1 R8 + 0x70020354, // 0038 JMP #038E + 0x54220031, // 0039 LDINT R8 50 + 0x1C200C08, // 003A EQ R8 R6 R8 + 0x78220000, // 003B JMPF R8 #003D + 0x70020350, // 003C JMP #038E + 0x54220032, // 003D LDINT R8 51 + 0x1C200C08, // 003E EQ R8 R6 R8 + 0x782200DC, // 003F JMPF R8 #011D + 0x1C200F05, // 0040 EQ R8 R7 K5 + 0x782200B5, // 0041 JMPF R8 #00F8 + 0x8C200B11, // 0042 GETMET R8 R5 K17 + 0x7C200200, // 0043 CALL R8 1 + 0xB8262400, // 0044 GETNGBL R9 K18 + 0x8C241313, // 0045 GETMET R9 R9 K19 + 0x7C240200, // 0046 CALL R9 1 + 0x94281314, // 0047 GETIDX R10 R9 K20 + 0x782A0053, // 0048 JMPF R10 #009D + 0x8C281115, // 0049 GETMET R10 R8 K21 + 0x4C300000, // 004A LDNIL R12 + 0x7C280400, // 004B CALL R10 2 + 0x8C2C150B, // 004C GETMET R11 R10 K11 + 0x58340005, // 004D LDCONST R13 K5 + 0x88380B16, // 004E GETMBR R14 R5 K22 + 0x583C0017, // 004F LDCONST R15 K23 + 0x7C2C0800, // 0050 CALL R11 4 + 0x8C2C150B, // 0051 GETMET R11 R10 K11 + 0x58340009, // 0052 LDCONST R13 K9 + 0x88380B10, // 0053 GETMBR R14 R5 K16 + 0x583C0009, // 0054 LDCONST R15 K9 + 0x7C2C0800, // 0055 CALL R11 4 + 0x8C2C150B, // 0056 GETMET R11 R10 K11 + 0x5834000D, // 0057 LDCONST R13 K13 + 0x88380B10, // 0058 GETMBR R14 R5 K16 + 0x583C0009, // 0059 LDCONST R15 K9 + 0x7C2C0800, // 005A CALL R11 4 + 0x8C2C150B, // 005B GETMET R11 R10 K11 + 0x5834000F, // 005C LDCONST R13 K15 + 0x88380B18, // 005D GETMBR R14 R5 K24 + 0x4C3C0000, // 005E LDNIL R15 + 0x7C2C0800, // 005F CALL R11 4 + 0x602C0015, // 0060 GETGBL R11 G21 + 0x7C2C0000, // 0061 CALL R11 0 + 0x8C2C1719, // 0062 GETMET R11 R11 K25 + 0x8C34091A, // 0063 GETMET R13 R4 K26 + 0x8C3C131B, // 0064 GETMET R15 R9 K27 + 0x5844001C, // 0065 LDCONST R17 K28 + 0x5848001D, // 0066 LDCONST R18 K29 + 0x7C3C0600, // 0067 CALL R15 3 + 0x5840001E, // 0068 LDCONST R16 K30 + 0x5844001D, // 0069 LDCONST R17 K29 + 0x7C340800, // 006A CALL R13 4 + 0x7C2C0400, // 006B CALL R11 2 + 0x8C30150B, // 006C GETMET R12 R10 K11 + 0x543A0003, // 006D LDINT R14 4 + 0x883C0B1F, // 006E GETMBR R15 R5 K31 + 0x5C401600, // 006F MOVE R16 R11 + 0x7C300800, // 0070 CALL R12 4 + 0x8C301520, // 0071 GETMET R12 R10 K32 + 0x543A0004, // 0072 LDINT R14 5 + 0x7C300400, // 0073 CALL R12 2 + 0x8C34190B, // 0074 GETMET R13 R12 K11 + 0x4C3C0000, // 0075 LDNIL R15 + 0x88400B1F, // 0076 GETMBR R16 R5 K31 + 0xB8460200, // 0077 GETNGBL R17 K1 + 0x8C442321, // 0078 GETMET R17 R17 K33 + 0x8C4C131B, // 0079 GETMET R19 R9 K27 + 0x58540022, // 007A LDCONST R21 K34 + 0x5858001D, // 007B LDCONST R22 K29 + 0x7C4C0600, // 007C CALL R19 3 + 0x7C440400, // 007D CALL R17 2 + 0x7C340800, // 007E CALL R13 4 + 0x8C341520, // 007F GETMET R13 R10 K32 + 0x543E0005, // 0080 LDINT R15 6 + 0x7C340400, // 0081 CALL R13 2 + 0x8C381B0B, // 0082 GETMET R14 R13 K11 + 0x4C400000, // 0083 LDNIL R16 + 0x88440B1F, // 0084 GETMBR R17 R5 K31 + 0xB84A0200, // 0085 GETNGBL R18 K1 + 0x8C482521, // 0086 GETMET R18 R18 K33 + 0x8C50131B, // 0087 GETMET R20 R9 K27 + 0x58580023, // 0088 LDCONST R22 K35 + 0x585C001D, // 0089 LDCONST R23 K29 + 0x7C500600, // 008A CALL R20 3 + 0x7C480400, // 008B CALL R18 2 + 0x7C380800, // 008C CALL R14 4 + 0x8C381B0B, // 008D GETMET R14 R13 K11 + 0x4C400000, // 008E LDNIL R16 + 0x88440B1F, // 008F GETMBR R17 R5 K31 + 0xB84A0200, // 0090 GETNGBL R18 K1 + 0x8C482521, // 0091 GETMET R18 R18 K33 + 0x8C50131B, // 0092 GETMET R20 R9 K27 + 0x58580024, // 0093 LDCONST R22 K36 + 0x585C001D, // 0094 LDCONST R23 K29 + 0x7C500600, // 0095 CALL R20 3 + 0x7C480400, // 0096 CALL R18 2 + 0x7C380800, // 0097 CALL R14 4 + 0x8C38150B, // 0098 GETMET R14 R10 K11 + 0x54420006, // 0099 LDINT R16 7 + 0x88440B0E, // 009A GETMBR R17 R5 K14 + 0x5848000D, // 009B LDCONST R18 K13 + 0x7C380800, // 009C CALL R14 4 + 0xB82A2400, // 009D GETNGBL R10 K18 + 0x8C281525, // 009E GETMET R10 R10 K37 + 0x7C280200, // 009F CALL R10 1 + 0x942C1514, // 00A0 GETIDX R11 R10 K20 + 0x782E0053, // 00A1 JMPF R11 #00F6 + 0x8C2C1115, // 00A2 GETMET R11 R8 K21 + 0x4C340000, // 00A3 LDNIL R13 + 0x7C2C0400, // 00A4 CALL R11 2 + 0x8C30170B, // 00A5 GETMET R12 R11 K11 + 0x58380005, // 00A6 LDCONST R14 K5 + 0x883C0B16, // 00A7 GETMBR R15 R5 K22 + 0x58400025, // 00A8 LDCONST R16 K37 + 0x7C300800, // 00A9 CALL R12 4 + 0x8C30170B, // 00AA GETMET R12 R11 K11 + 0x58380009, // 00AB LDCONST R14 K9 + 0x883C0B10, // 00AC GETMBR R15 R5 K16 + 0x58400009, // 00AD LDCONST R16 K9 + 0x7C300800, // 00AE CALL R12 4 + 0x8C30170B, // 00AF GETMET R12 R11 K11 + 0x5838000D, // 00B0 LDCONST R14 K13 + 0x883C0B10, // 00B1 GETMBR R15 R5 K16 + 0x58400009, // 00B2 LDCONST R16 K9 + 0x7C300800, // 00B3 CALL R12 4 + 0x8C30170B, // 00B4 GETMET R12 R11 K11 + 0x5838000F, // 00B5 LDCONST R14 K15 + 0x883C0B18, // 00B6 GETMBR R15 R5 K24 + 0x4C400000, // 00B7 LDNIL R16 + 0x7C300800, // 00B8 CALL R12 4 + 0x60300015, // 00B9 GETGBL R12 G21 + 0x7C300000, // 00BA CALL R12 0 + 0x8C301919, // 00BB GETMET R12 R12 K25 + 0x8C38091A, // 00BC GETMET R14 R4 K26 + 0x8C40151B, // 00BD GETMET R16 R10 K27 + 0x5848001C, // 00BE LDCONST R18 K28 + 0x584C001D, // 00BF LDCONST R19 K29 + 0x7C400600, // 00C0 CALL R16 3 + 0x5844001E, // 00C1 LDCONST R17 K30 + 0x5848001D, // 00C2 LDCONST R18 K29 + 0x7C380800, // 00C3 CALL R14 4 + 0x7C300400, // 00C4 CALL R12 2 + 0x8C34170B, // 00C5 GETMET R13 R11 K11 + 0x543E0003, // 00C6 LDINT R15 4 + 0x88400B1F, // 00C7 GETMBR R16 R5 K31 + 0x5C441800, // 00C8 MOVE R17 R12 + 0x7C340800, // 00C9 CALL R13 4 + 0x8C341720, // 00CA GETMET R13 R11 K32 + 0x543E0004, // 00CB LDINT R15 5 + 0x7C340400, // 00CC CALL R13 2 + 0x8C381B0B, // 00CD GETMET R14 R13 K11 + 0x4C400000, // 00CE LDNIL R16 + 0x88440B1F, // 00CF GETMBR R17 R5 K31 + 0xB84A0200, // 00D0 GETNGBL R18 K1 + 0x8C482521, // 00D1 GETMET R18 R18 K33 + 0x8C50151B, // 00D2 GETMET R20 R10 K27 + 0x58580022, // 00D3 LDCONST R22 K34 + 0x585C001D, // 00D4 LDCONST R23 K29 + 0x7C500600, // 00D5 CALL R20 3 + 0x7C480400, // 00D6 CALL R18 2 + 0x7C380800, // 00D7 CALL R14 4 + 0x8C381720, // 00D8 GETMET R14 R11 K32 + 0x54420005, // 00D9 LDINT R16 6 + 0x7C380400, // 00DA CALL R14 2 + 0x8C3C1D0B, // 00DB GETMET R15 R14 K11 + 0x4C440000, // 00DC LDNIL R17 + 0x88480B1F, // 00DD GETMBR R18 R5 K31 + 0xB84E0200, // 00DE GETNGBL R19 K1 + 0x8C4C2721, // 00DF GETMET R19 R19 K33 + 0x8C54151B, // 00E0 GETMET R21 R10 K27 + 0x585C0023, // 00E1 LDCONST R23 K35 + 0x5860001D, // 00E2 LDCONST R24 K29 + 0x7C540600, // 00E3 CALL R21 3 + 0x7C4C0400, // 00E4 CALL R19 2 + 0x7C3C0800, // 00E5 CALL R15 4 + 0x8C3C1D0B, // 00E6 GETMET R15 R14 K11 + 0x4C440000, // 00E7 LDNIL R17 + 0x88480B1F, // 00E8 GETMBR R18 R5 K31 + 0xB84E0200, // 00E9 GETNGBL R19 K1 + 0x8C4C2721, // 00EA GETMET R19 R19 K33 + 0x8C54151B, // 00EB GETMET R21 R10 K27 + 0x585C0024, // 00EC LDCONST R23 K36 + 0x5860001D, // 00ED LDCONST R24 K29 + 0x7C540600, // 00EE CALL R21 3 + 0x7C4C0400, // 00EF CALL R19 2 + 0x7C3C0800, // 00F0 CALL R15 4 + 0x8C3C170B, // 00F1 GETMET R15 R11 K11 + 0x54460006, // 00F2 LDINT R17 7 + 0x88480B0E, // 00F3 GETMBR R18 R5 K14 + 0x584C0009, // 00F4 LDCONST R19 K9 + 0x7C3C0800, // 00F5 CALL R15 4 + 0x80041000, // 00F6 RET 1 R8 0x70020023, // 00F7 JMP #011C - 0x1C1C0D09, // 00F8 EQ R7 R6 K9 - 0x781E000B, // 00F9 JMPF R7 #0106 - 0x8C1C0906, // 00FA GETMET R7 R4 K6 - 0x8824090C, // 00FB GETMBR R9 R4 K12 - 0xB82A2400, // 00FC GETNGBL R10 K18 - 0x8C281526, // 00FD GETMET R10 R10 K38 - 0x58300027, // 00FE LDCONST R12 K39 - 0x50340200, // 00FF LDBOOL R13 1 0 - 0x7C280600, // 0100 CALL R10 3 - 0x94281528, // 0101 GETIDX R10 R10 K40 - 0x94281529, // 0102 GETIDX R10 R10 K41 - 0x7C1C0600, // 0103 CALL R7 3 - 0x80040E00, // 0104 RET 1 R7 + 0x1C200F09, // 00F8 EQ R8 R7 K9 + 0x7822000B, // 00F9 JMPF R8 #0106 + 0x8C200706, // 00FA GETMET R8 R3 K6 + 0x88280B0C, // 00FB GETMBR R10 R5 K12 + 0xB82E2400, // 00FC GETNGBL R11 K18 + 0x8C2C1726, // 00FD GETMET R11 R11 K38 + 0x58340027, // 00FE LDCONST R13 K39 + 0x50380200, // 00FF LDBOOL R14 1 0 + 0x7C2C0600, // 0100 CALL R11 3 + 0x942C1728, // 0101 GETIDX R11 R11 K40 + 0x942C1729, // 0102 GETIDX R11 R11 K41 + 0x7C200600, // 0103 CALL R8 3 + 0x80041000, // 0104 RET 1 R8 0x70020015, // 0105 JMP #011C - 0x1C1C0D0D, // 0106 EQ R7 R6 K13 - 0x781E000B, // 0107 JMPF R7 #0114 - 0x8C1C0906, // 0108 GETMET R7 R4 K6 - 0x8824092A, // 0109 GETMBR R9 R4 K42 - 0xB82A2400, // 010A GETNGBL R10 K18 - 0x8C281526, // 010B GETMET R10 R10 K38 - 0x5830002B, // 010C LDCONST R12 K43 - 0x50340200, // 010D LDBOOL R13 1 0 - 0x7C280600, // 010E CALL R10 3 - 0x9428152C, // 010F GETIDX R10 R10 K44 - 0x9428152D, // 0110 GETIDX R10 R10 K45 - 0x7C1C0600, // 0111 CALL R7 3 - 0x80040E00, // 0112 RET 1 R7 + 0x1C200F0D, // 0106 EQ R8 R7 K13 + 0x7822000B, // 0107 JMPF R8 #0114 + 0x8C200706, // 0108 GETMET R8 R3 K6 + 0x88280B2A, // 0109 GETMBR R10 R5 K42 + 0xB82E2400, // 010A GETNGBL R11 K18 + 0x8C2C1726, // 010B GETMET R11 R11 K38 + 0x5834002B, // 010C LDCONST R13 K43 + 0x50380200, // 010D LDBOOL R14 1 0 + 0x7C2C0600, // 010E CALL R11 3 + 0x942C172C, // 010F GETIDX R11 R11 K44 + 0x942C172D, // 0110 GETIDX R11 R11 K45 + 0x7C200600, // 0111 CALL R8 3 + 0x80041000, // 0112 RET 1 R8 0x70020007, // 0113 JMP #011C - 0x541E0007, // 0114 LDINT R7 8 - 0x1C1C0C07, // 0115 EQ R7 R6 R7 - 0x781E0004, // 0116 JMPF R7 #011C - 0x8C1C0906, // 0117 GETMET R7 R4 K6 - 0x88240910, // 0118 GETMBR R9 R4 K16 - 0x50280000, // 0119 LDBOOL R10 0 0 - 0x7C1C0600, // 011A CALL R7 3 - 0x80040E00, // 011B RET 1 R7 - 0x70020269, // 011C JMP #0387 - 0x541E0033, // 011D LDINT R7 52 - 0x1C1C0A07, // 011E EQ R7 R5 R7 - 0x781E0000, // 011F JMPF R7 #0121 - 0x70020265, // 0120 JMP #0387 - 0x541E0037, // 0121 LDINT R7 56 - 0x1C1C0A07, // 0122 EQ R7 R5 R7 - 0x781E002C, // 0123 JMPF R7 #0151 - 0x1C1C0D05, // 0124 EQ R7 R6 K5 - 0x781E000F, // 0125 JMPF R7 #0136 - 0xB81E5C00, // 0126 GETNGBL R7 K46 - 0xB8222400, // 0127 GETNGBL R8 K18 - 0x8C20112F, // 0128 GETMET R8 R8 K47 - 0x7C200200, // 0129 CALL R8 1 - 0x94201130, // 012A GETIDX R8 R8 K48 - 0x7C1C0200, // 012B CALL R7 1 - 0xB8225C00, // 012C GETNGBL R8 K46 - 0x58240031, // 012D LDCONST R9 K49 - 0x7C200200, // 012E CALL R8 1 - 0x081C0E08, // 012F MUL R7 R7 R8 - 0x8C200906, // 0130 GETMET R8 R4 K6 - 0x88280907, // 0131 GETMBR R10 R4 K7 - 0x5C2C0E00, // 0132 MOVE R11 R7 - 0x7C200600, // 0133 CALL R8 3 - 0x80041000, // 0134 RET 1 R8 - 0x70020019, // 0135 JMP #0150 - 0x1C1C0D09, // 0136 EQ R7 R6 K9 - 0x781E0005, // 0137 JMPF R7 #013E - 0x8C1C0906, // 0138 GETMET R7 R4 K6 - 0x8824090E, // 0139 GETMBR R9 R4 K14 - 0x5828000F, // 013A LDCONST R10 K15 - 0x7C1C0600, // 013B CALL R7 3 - 0x80040E00, // 013C RET 1 R7 - 0x70020011, // 013D JMP #0150 - 0x541E0006, // 013E LDINT R7 7 - 0x1C1C0C07, // 013F EQ R7 R6 R7 - 0x781E000E, // 0140 JMPF R7 #0150 - 0xB81E5C00, // 0141 GETNGBL R7 K46 - 0xB8222400, // 0142 GETNGBL R8 K18 - 0x8C20112F, // 0143 GETMET R8 R8 K47 - 0x7C200200, // 0144 CALL R8 1 - 0x94201132, // 0145 GETIDX R8 R8 K50 - 0x7C1C0200, // 0146 CALL R7 1 - 0xB8225C00, // 0147 GETNGBL R8 K46 - 0x58240031, // 0148 LDCONST R9 K49 - 0x7C200200, // 0149 CALL R8 1 - 0x081C0E08, // 014A MUL R7 R7 R8 - 0x8C200906, // 014B GETMET R8 R4 K6 - 0x88280907, // 014C GETMBR R10 R4 K7 - 0x5C2C0E00, // 014D MOVE R11 R7 - 0x7C200600, // 014E CALL R8 3 - 0x80041000, // 014F RET 1 R8 - 0x70020235, // 0150 JMP #0387 - 0x541E003D, // 0151 LDINT R7 62 - 0x1C1C0A07, // 0152 EQ R7 R5 R7 - 0x781E0090, // 0153 JMPF R7 #01E5 - 0x1C1C0D05, // 0154 EQ R7 R6 K5 - 0x781E0025, // 0155 JMPF R7 #017C - 0x8C1C0911, // 0156 GETMET R7 R4 K17 - 0x7C1C0200, // 0157 CALL R7 1 - 0x60200010, // 0158 GETGBL R8 G16 - 0x88240133, // 0159 GETMBR R9 R0 K51 - 0x88241334, // 015A GETMBR R9 R9 K52 - 0x8C241335, // 015B GETMET R9 R9 K53 - 0x7C240200, // 015C CALL R9 1 - 0x7C200200, // 015D CALL R8 1 - 0xA8020017, // 015E EXBLK 0 #0177 - 0x5C241000, // 015F MOVE R9 R8 - 0x7C240000, // 0160 CALL R9 0 - 0x8C280F15, // 0161 GETMET R10 R7 K21 - 0x4C300000, // 0162 LDNIL R12 - 0x7C280400, // 0163 CALL R10 2 - 0x8C2C150B, // 0164 GETMET R11 R10 K11 - 0x58340009, // 0165 LDCONST R13 K9 - 0x88380936, // 0166 GETMBR R14 R4 K54 - 0x8C3C1337, // 0167 GETMET R15 R9 K55 - 0x7C3C0200, // 0168 CALL R15 1 - 0x7C2C0800, // 0169 CALL R11 4 - 0x8C2C150B, // 016A GETMET R11 R10 K11 - 0x5834000D, // 016B LDCONST R13 K13 - 0x88380936, // 016C GETMBR R14 R4 K54 - 0x8C3C1338, // 016D GETMET R15 R9 K56 - 0x7C3C0200, // 016E CALL R15 1 - 0x7C2C0800, // 016F CALL R11 4 - 0x8C2C150B, // 0170 GETMET R11 R10 K11 - 0x543600FD, // 0171 LDINT R13 254 - 0x8838090C, // 0172 GETMBR R14 R4 K12 - 0x8C3C1339, // 0173 GETMET R15 R9 K57 - 0x7C3C0200, // 0174 CALL R15 1 - 0x7C2C0800, // 0175 CALL R11 4 - 0x7001FFE7, // 0176 JMP #015F - 0x5820003A, // 0177 LDCONST R8 K58 - 0xAC200200, // 0178 CATCH R8 1 0 - 0xB0080000, // 0179 RAISE 2 R0 R0 - 0x80040E00, // 017A RET 1 R7 - 0x70020067, // 017B JMP #01E4 - 0x1C1C0D09, // 017C EQ R7 R6 K9 - 0x781E003C, // 017D JMPF R7 #01BB - 0x8C1C0911, // 017E GETMET R7 R4 K17 - 0x7C1C0200, // 017F CALL R7 1 - 0x60200010, // 0180 GETGBL R8 G16 - 0x88240133, // 0181 GETMBR R9 R0 K51 - 0x88241334, // 0182 GETMBR R9 R9 K52 - 0x8C241335, // 0183 GETMET R9 R9 K53 - 0x7C240200, // 0184 CALL R9 1 - 0x7C200200, // 0185 CALL R8 1 - 0xA802002E, // 0186 EXBLK 0 #01B6 - 0x5C241000, // 0187 MOVE R9 R8 - 0x7C240000, // 0188 CALL R9 0 - 0x8C28093B, // 0189 GETMET R10 R4 K59 - 0x8C30133C, // 018A GETMET R12 R9 K60 - 0x7C300200, // 018B CALL R12 1 - 0x7C280400, // 018C CALL R10 2 - 0x8C2C0F15, // 018D GETMET R11 R7 K21 - 0x4C340000, // 018E LDNIL R13 - 0x7C2C0400, // 018F CALL R11 2 - 0x8C30170B, // 0190 GETMET R12 R11 K11 - 0x58380009, // 0191 LDCONST R14 K9 - 0x883C0936, // 0192 GETMBR R15 R4 K54 - 0x8C40153D, // 0193 GETMET R16 R10 K61 - 0x544A0008, // 0194 LDINT R18 9 - 0x7C400400, // 0195 CALL R16 2 - 0x7C300800, // 0196 CALL R12 4 - 0x8C30170B, // 0197 GETMET R12 R11 K11 - 0x5838000D, // 0198 LDCONST R14 K13 - 0x883C090C, // 0199 GETMBR R15 R4 K12 - 0x8C40133E, // 019A GETMET R16 R9 K62 - 0x7C400200, // 019B CALL R16 1 - 0x7C300800, // 019C CALL R12 4 - 0x8C30170B, // 019D GETMET R12 R11 K11 - 0x5838000F, // 019E LDCONST R14 K15 - 0x883C0907, // 019F GETMBR R15 R4 K7 - 0x8C40133F, // 01A0 GETMET R16 R9 K63 - 0x7C400200, // 01A1 CALL R16 1 - 0x7C300800, // 01A2 CALL R12 4 - 0x8C30170B, // 01A3 GETMET R12 R11 K11 - 0x543A0003, // 01A4 LDINT R14 4 - 0x883C0907, // 01A5 GETMBR R15 R4 K7 - 0x8C401340, // 01A6 GETMET R16 R9 K64 - 0x7C400200, // 01A7 CALL R16 1 - 0x7C300800, // 01A8 CALL R12 4 - 0x8C30170B, // 01A9 GETMET R12 R11 K11 - 0x543A0004, // 01AA LDINT R14 5 - 0x883C0916, // 01AB GETMBR R15 R4 K22 - 0x8C401341, // 01AC GETMET R16 R9 K65 - 0x7C400200, // 01AD CALL R16 1 - 0x7C300800, // 01AE CALL R12 4 - 0x8C30170B, // 01AF GETMET R12 R11 K11 - 0x543A00FD, // 01B0 LDINT R14 254 - 0x883C090C, // 01B1 GETMBR R15 R4 K12 - 0x8C401339, // 01B2 GETMET R16 R9 K57 - 0x7C400200, // 01B3 CALL R16 1 - 0x7C300800, // 01B4 CALL R12 4 - 0x7001FFD0, // 01B5 JMP #0187 - 0x5820003A, // 01B6 LDCONST R8 K58 - 0xAC200200, // 01B7 CATCH R8 1 0 - 0xB0080000, // 01B8 RAISE 2 R0 R0 - 0x80040E00, // 01B9 RET 1 R7 - 0x70020028, // 01BA JMP #01E4 - 0x1C1C0D0D, // 01BB EQ R7 R6 K13 - 0x781E0007, // 01BC JMPF R7 #01C5 - 0x8C1C0906, // 01BD GETMET R7 R4 K6 - 0x8824090E, // 01BE GETMBR R9 R4 K14 - 0xB82A0200, // 01BF GETNGBL R10 K1 - 0x88281542, // 01C0 GETMBR R10 R10 K66 - 0x88281543, // 01C1 GETMBR R10 R10 K67 - 0x7C1C0600, // 01C2 CALL R7 3 - 0x80040E00, // 01C3 RET 1 R7 - 0x7002001E, // 01C4 JMP #01E4 - 0x1C1C0D0F, // 01C5 EQ R7 R6 K15 - 0x781E0009, // 01C6 JMPF R7 #01D1 - 0x881C0133, // 01C7 GETMBR R7 R0 K51 - 0x881C0F34, // 01C8 GETMBR R7 R7 K52 - 0x8C1C0F44, // 01C9 GETMET R7 R7 K68 - 0x7C1C0200, // 01CA CALL R7 1 - 0x8C200906, // 01CB GETMET R8 R4 K6 - 0x8828090E, // 01CC GETMBR R10 R4 K14 - 0x5C2C0E00, // 01CD MOVE R11 R7 - 0x7C200600, // 01CE CALL R8 3 - 0x80041000, // 01CF RET 1 R8 - 0x70020012, // 01D0 JMP #01E4 - 0x541E0003, // 01D1 LDINT R7 4 - 0x1C1C0C07, // 01D2 EQ R7 R6 R7 - 0x781E0000, // 01D3 JMPF R7 #01D5 - 0x7002000E, // 01D4 JMP #01E4 - 0x541E0004, // 01D5 LDINT R7 5 - 0x1C1C0C07, // 01D6 EQ R7 R6 R7 - 0x781E000B, // 01D7 JMPF R7 #01E4 - 0x881C0345, // 01D8 GETMBR R7 R1 K69 - 0x8C1C0F39, // 01D9 GETMET R7 R7 K57 - 0x7C1C0200, // 01DA CALL R7 1 - 0x4C200000, // 01DB LDNIL R8 - 0x1C200E08, // 01DC EQ R8 R7 R8 - 0x78220000, // 01DD JMPF R8 #01DF - 0x581C0005, // 01DE LDCONST R7 K5 - 0x8C200906, // 01DF GETMET R8 R4 K6 - 0x8828090E, // 01E0 GETMBR R10 R4 K14 - 0x5C2C0E00, // 01E1 MOVE R11 R7 - 0x7C200600, // 01E2 CALL R8 3 - 0x80041000, // 01E3 RET 1 R8 - 0x700201A1, // 01E4 JMP #0387 - 0x541E003B, // 01E5 LDINT R7 60 - 0x1C1C0A07, // 01E6 EQ R7 R5 R7 - 0x781E003C, // 01E7 JMPF R7 #0225 - 0x1C1C0D05, // 01E8 EQ R7 R6 K5 - 0x781E0012, // 01E9 JMPF R7 #01FD - 0x881C0133, // 01EA GETMBR R7 R0 K51 - 0x8C1C0F46, // 01EB GETMET R7 R7 K70 - 0x7C1C0200, // 01EC CALL R7 1 - 0x88200133, // 01ED GETMBR R8 R0 K51 - 0x8C201147, // 01EE GETMET R8 R8 K71 - 0x7C200200, // 01EF CALL R8 1 - 0x781E0004, // 01F0 JMPF R7 #01F6 - 0x78220001, // 01F1 JMPF R8 #01F4 - 0x5824000D, // 01F2 LDCONST R9 K13 - 0x70020000, // 01F3 JMP #01F5 - 0x58240009, // 01F4 LDCONST R9 K9 + 0x54220007, // 0114 LDINT R8 8 + 0x1C200E08, // 0115 EQ R8 R7 R8 + 0x78220004, // 0116 JMPF R8 #011C + 0x8C200706, // 0117 GETMET R8 R3 K6 + 0x88280B10, // 0118 GETMBR R10 R5 K16 + 0x502C0000, // 0119 LDBOOL R11 0 0 + 0x7C200600, // 011A CALL R8 3 + 0x80041000, // 011B RET 1 R8 + 0x70020270, // 011C JMP #038E + 0x54220033, // 011D LDINT R8 52 + 0x1C200C08, // 011E EQ R8 R6 R8 + 0x78220000, // 011F JMPF R8 #0121 + 0x7002026C, // 0120 JMP #038E + 0x54220037, // 0121 LDINT R8 56 + 0x1C200C08, // 0122 EQ R8 R6 R8 + 0x7822002B, // 0123 JMPF R8 #0150 + 0x1C200F05, // 0124 EQ R8 R7 K5 + 0x7822000E, // 0125 JMPF R8 #0135 + 0xB8225C00, // 0126 GETNGBL R8 K46 + 0xB8262400, // 0127 GETNGBL R9 K18 + 0x8C24132F, // 0128 GETMET R9 R9 K47 + 0x7C240200, // 0129 CALL R9 1 + 0x7C200200, // 012A CALL R8 1 + 0xB8265C00, // 012B GETNGBL R9 K46 + 0x58280030, // 012C LDCONST R10 K48 + 0x7C240200, // 012D CALL R9 1 + 0x08201009, // 012E MUL R8 R8 R9 + 0x8C240706, // 012F GETMET R9 R3 K6 + 0x882C0B07, // 0130 GETMBR R11 R5 K7 + 0x5C301000, // 0131 MOVE R12 R8 + 0x7C240600, // 0132 CALL R9 3 + 0x80041200, // 0133 RET 1 R9 + 0x70020019, // 0134 JMP #014F + 0x1C200F09, // 0135 EQ R8 R7 K9 + 0x78220005, // 0136 JMPF R8 #013D + 0x8C200706, // 0137 GETMET R8 R3 K6 + 0x88280B0E, // 0138 GETMBR R10 R5 K14 + 0x582C000F, // 0139 LDCONST R11 K15 + 0x7C200600, // 013A CALL R8 3 + 0x80041000, // 013B RET 1 R8 + 0x70020011, // 013C JMP #014F + 0x54220006, // 013D LDINT R8 7 + 0x1C200E08, // 013E EQ R8 R7 R8 + 0x7822000E, // 013F JMPF R8 #014F + 0xB8225C00, // 0140 GETNGBL R8 K46 + 0xB8262400, // 0141 GETNGBL R9 K18 + 0x8C241331, // 0142 GETMET R9 R9 K49 + 0x7C240200, // 0143 CALL R9 1 + 0x94241332, // 0144 GETIDX R9 R9 K50 + 0x7C200200, // 0145 CALL R8 1 + 0xB8265C00, // 0146 GETNGBL R9 K46 + 0x58280030, // 0147 LDCONST R10 K48 + 0x7C240200, // 0148 CALL R9 1 + 0x08201009, // 0149 MUL R8 R8 R9 + 0x8C240706, // 014A GETMET R9 R3 K6 + 0x882C0B07, // 014B GETMBR R11 R5 K7 + 0x5C301000, // 014C MOVE R12 R8 + 0x7C240600, // 014D CALL R9 3 + 0x80041200, // 014E RET 1 R9 + 0x7002023D, // 014F JMP #038E + 0x5422003D, // 0150 LDINT R8 62 + 0x1C200C08, // 0151 EQ R8 R6 R8 + 0x78220093, // 0152 JMPF R8 #01E7 + 0x8C200133, // 0153 GETMET R8 R0 K51 + 0x88280534, // 0154 GETMBR R10 R2 K52 + 0x7C200400, // 0155 CALL R8 2 + 0x1C200F05, // 0156 EQ R8 R7 K5 + 0x78220025, // 0157 JMPF R8 #017E + 0x8C200B11, // 0158 GETMET R8 R5 K17 + 0x7C200200, // 0159 CALL R8 1 + 0x60240010, // 015A GETGBL R9 G16 + 0x88280135, // 015B GETMBR R10 R0 K53 + 0x88281536, // 015C GETMBR R10 R10 K54 + 0x8C281537, // 015D GETMET R10 R10 K55 + 0x7C280200, // 015E CALL R10 1 + 0x7C240200, // 015F CALL R9 1 + 0xA8020017, // 0160 EXBLK 0 #0179 + 0x5C281200, // 0161 MOVE R10 R9 + 0x7C280000, // 0162 CALL R10 0 + 0x8C2C1115, // 0163 GETMET R11 R8 K21 + 0x4C340000, // 0164 LDNIL R13 + 0x7C2C0400, // 0165 CALL R11 2 + 0x8C30170B, // 0166 GETMET R12 R11 K11 + 0x58380009, // 0167 LDCONST R14 K9 + 0x883C0B38, // 0168 GETMBR R15 R5 K56 + 0x8C401539, // 0169 GETMET R16 R10 K57 + 0x7C400200, // 016A CALL R16 1 + 0x7C300800, // 016B CALL R12 4 + 0x8C30170B, // 016C GETMET R12 R11 K11 + 0x5838000D, // 016D LDCONST R14 K13 + 0x883C0B38, // 016E GETMBR R15 R5 K56 + 0x8C40153A, // 016F GETMET R16 R10 K58 + 0x7C400200, // 0170 CALL R16 1 + 0x7C300800, // 0171 CALL R12 4 + 0x8C30170B, // 0172 GETMET R12 R11 K11 + 0x543A00FD, // 0173 LDINT R14 254 + 0x883C0B0C, // 0174 GETMBR R15 R5 K12 + 0x8C40153B, // 0175 GETMET R16 R10 K59 + 0x7C400200, // 0176 CALL R16 1 + 0x7C300800, // 0177 CALL R12 4 + 0x7001FFE7, // 0178 JMP #0161 + 0x5824003C, // 0179 LDCONST R9 K60 + 0xAC240200, // 017A CATCH R9 1 0 + 0xB0080000, // 017B RAISE 2 R0 R0 + 0x80041000, // 017C RET 1 R8 + 0x70020067, // 017D JMP #01E6 + 0x1C200F09, // 017E EQ R8 R7 K9 + 0x7822003C, // 017F JMPF R8 #01BD + 0x8C200B11, // 0180 GETMET R8 R5 K17 + 0x7C200200, // 0181 CALL R8 1 + 0x60240010, // 0182 GETGBL R9 G16 + 0x88280135, // 0183 GETMBR R10 R0 K53 + 0x88281536, // 0184 GETMBR R10 R10 K54 + 0x8C281537, // 0185 GETMET R10 R10 K55 + 0x7C280200, // 0186 CALL R10 1 + 0x7C240200, // 0187 CALL R9 1 + 0xA802002E, // 0188 EXBLK 0 #01B8 + 0x5C281200, // 0189 MOVE R10 R9 + 0x7C280000, // 018A CALL R10 0 + 0x8C2C0B3D, // 018B GETMET R11 R5 K61 + 0x8C34153E, // 018C GETMET R13 R10 K62 + 0x7C340200, // 018D CALL R13 1 + 0x7C2C0400, // 018E CALL R11 2 + 0x8C301115, // 018F GETMET R12 R8 K21 + 0x4C380000, // 0190 LDNIL R14 + 0x7C300400, // 0191 CALL R12 2 + 0x8C34190B, // 0192 GETMET R13 R12 K11 + 0x583C0009, // 0193 LDCONST R15 K9 + 0x88400B38, // 0194 GETMBR R16 R5 K56 + 0x8C44173F, // 0195 GETMET R17 R11 K63 + 0x544E0008, // 0196 LDINT R19 9 + 0x7C440400, // 0197 CALL R17 2 + 0x7C340800, // 0198 CALL R13 4 + 0x8C34190B, // 0199 GETMET R13 R12 K11 + 0x583C000D, // 019A LDCONST R15 K13 + 0x88400B0C, // 019B GETMBR R16 R5 K12 + 0x8C441540, // 019C GETMET R17 R10 K64 + 0x7C440200, // 019D CALL R17 1 + 0x7C340800, // 019E CALL R13 4 + 0x8C34190B, // 019F GETMET R13 R12 K11 + 0x583C000F, // 01A0 LDCONST R15 K15 + 0x88400B07, // 01A1 GETMBR R16 R5 K7 + 0x8C441541, // 01A2 GETMET R17 R10 K65 + 0x7C440200, // 01A3 CALL R17 1 + 0x7C340800, // 01A4 CALL R13 4 + 0x8C34190B, // 01A5 GETMET R13 R12 K11 + 0x543E0003, // 01A6 LDINT R15 4 + 0x88400B07, // 01A7 GETMBR R16 R5 K7 + 0x8C441542, // 01A8 GETMET R17 R10 K66 + 0x7C440200, // 01A9 CALL R17 1 + 0x7C340800, // 01AA CALL R13 4 + 0x8C34190B, // 01AB GETMET R13 R12 K11 + 0x543E0004, // 01AC LDINT R15 5 + 0x88400B16, // 01AD GETMBR R16 R5 K22 + 0x8C441543, // 01AE GETMET R17 R10 K67 + 0x7C440200, // 01AF CALL R17 1 + 0x7C340800, // 01B0 CALL R13 4 + 0x8C34190B, // 01B1 GETMET R13 R12 K11 + 0x543E00FD, // 01B2 LDINT R15 254 + 0x88400B0C, // 01B3 GETMBR R16 R5 K12 + 0x8C44153B, // 01B4 GETMET R17 R10 K59 + 0x7C440200, // 01B5 CALL R17 1 + 0x7C340800, // 01B6 CALL R13 4 + 0x7001FFD0, // 01B7 JMP #0189 + 0x5824003C, // 01B8 LDCONST R9 K60 + 0xAC240200, // 01B9 CATCH R9 1 0 + 0xB0080000, // 01BA RAISE 2 R0 R0 + 0x80041000, // 01BB RET 1 R8 + 0x70020028, // 01BC JMP #01E6 + 0x1C200F0D, // 01BD EQ R8 R7 K13 + 0x78220007, // 01BE JMPF R8 #01C7 + 0x8C200706, // 01BF GETMET R8 R3 K6 + 0x88280B0E, // 01C0 GETMBR R10 R5 K14 + 0xB82E0200, // 01C1 GETNGBL R11 K1 + 0x882C1744, // 01C2 GETMBR R11 R11 K68 + 0x882C1745, // 01C3 GETMBR R11 R11 K69 + 0x7C200600, // 01C4 CALL R8 3 + 0x80041000, // 01C5 RET 1 R8 + 0x7002001E, // 01C6 JMP #01E6 + 0x1C200F0F, // 01C7 EQ R8 R7 K15 + 0x78220009, // 01C8 JMPF R8 #01D3 + 0x88200135, // 01C9 GETMBR R8 R0 K53 + 0x88201136, // 01CA GETMBR R8 R8 K54 + 0x8C201146, // 01CB GETMET R8 R8 K70 + 0x7C200200, // 01CC CALL R8 1 + 0x8C240706, // 01CD GETMET R9 R3 K6 + 0x882C0B0E, // 01CE GETMBR R11 R5 K14 + 0x5C301000, // 01CF MOVE R12 R8 + 0x7C240600, // 01D0 CALL R9 3 + 0x80041200, // 01D1 RET 1 R9 + 0x70020012, // 01D2 JMP #01E6 + 0x54220003, // 01D3 LDINT R8 4 + 0x1C200E08, // 01D4 EQ R8 R7 R8 + 0x78220000, // 01D5 JMPF R8 #01D7 + 0x7002000E, // 01D6 JMP #01E6 + 0x54220004, // 01D7 LDINT R8 5 + 0x1C200E08, // 01D8 EQ R8 R7 R8 + 0x7822000B, // 01D9 JMPF R8 #01E6 + 0x88200347, // 01DA GETMBR R8 R1 K71 + 0x8C20113B, // 01DB GETMET R8 R8 K59 + 0x7C200200, // 01DC CALL R8 1 + 0x4C240000, // 01DD LDNIL R9 + 0x1C241009, // 01DE EQ R9 R8 R9 + 0x78260000, // 01DF JMPF R9 #01E1 + 0x58200005, // 01E0 LDCONST R8 K5 + 0x8C240706, // 01E1 GETMET R9 R3 K6 + 0x882C0B0E, // 01E2 GETMBR R11 R5 K14 + 0x5C301000, // 01E3 MOVE R12 R8 + 0x7C240600, // 01E4 CALL R9 3 + 0x80041200, // 01E5 RET 1 R9 + 0x700201A6, // 01E6 JMP #038E + 0x5422003B, // 01E7 LDINT R8 60 + 0x1C200C08, // 01E8 EQ R8 R6 R8 + 0x7822003C, // 01E9 JMPF R8 #0227 + 0x1C200F05, // 01EA EQ R8 R7 K5 + 0x78220012, // 01EB JMPF R8 #01FF + 0x88200135, // 01EC GETMBR R8 R0 K53 + 0x8C201148, // 01ED GETMET R8 R8 K72 + 0x7C200200, // 01EE CALL R8 1 + 0x88240135, // 01EF GETMBR R9 R0 K53 + 0x8C241349, // 01F0 GETMET R9 R9 K73 + 0x7C240200, // 01F1 CALL R9 1 + 0x78220004, // 01F2 JMPF R8 #01F8 + 0x78260001, // 01F3 JMPF R9 #01F6 + 0x5828000D, // 01F4 LDCONST R10 K13 0x70020000, // 01F5 JMP #01F7 - 0x58240005, // 01F6 LDCONST R9 K5 - 0x8C280906, // 01F7 GETMET R10 R4 K6 - 0x8830090E, // 01F8 GETMBR R12 R4 K14 - 0x5C341200, // 01F9 MOVE R13 R9 - 0x7C280600, // 01FA CALL R10 3 - 0x80041400, // 01FB RET 1 R10 - 0x70020026, // 01FC JMP #0224 - 0x1C1C0D09, // 01FD EQ R7 R6 K9 - 0x781E0011, // 01FE JMPF R7 #0211 - 0x881C0133, // 01FF GETMBR R7 R0 K51 - 0x881C0F48, // 0200 GETMBR R7 R7 K72 - 0x4C200000, // 0201 LDNIL R8 - 0x20200E08, // 0202 NE R8 R7 R8 - 0x78220006, // 0203 JMPF R8 #020B - 0x8C200906, // 0204 GETMET R8 R4 K6 - 0x8828090C, // 0205 GETMBR R10 R4 K12 - 0x8C2C0F39, // 0206 GETMET R11 R7 K57 - 0x7C2C0200, // 0207 CALL R11 1 - 0x7C200600, // 0208 CALL R8 3 - 0x80041000, // 0209 RET 1 R8 - 0x70020004, // 020A JMP #0210 - 0x8C200906, // 020B GETMET R8 R4 K6 - 0x88280918, // 020C GETMBR R10 R4 K24 - 0x4C2C0000, // 020D LDNIL R11 - 0x7C200600, // 020E CALL R8 3 - 0x80041000, // 020F RET 1 R8 - 0x70020012, // 0210 JMP #0224 - 0x1C1C0D0D, // 0211 EQ R7 R6 K13 - 0x781E0010, // 0212 JMPF R7 #0224 - 0x881C0133, // 0213 GETMBR R7 R0 K51 - 0x881C0F48, // 0214 GETMBR R7 R7 K72 - 0x4C200000, // 0215 LDNIL R8 - 0x20200E08, // 0216 NE R8 R7 R8 - 0x78220006, // 0217 JMPF R8 #021F - 0x8C200906, // 0218 GETMET R8 R4 K6 - 0x8828090C, // 0219 GETMBR R10 R4 K12 - 0x8C2C0F3E, // 021A GETMET R11 R7 K62 - 0x7C2C0200, // 021B CALL R11 1 - 0x7C200600, // 021C CALL R8 3 - 0x80041000, // 021D RET 1 R8 - 0x70020004, // 021E JMP #0224 - 0x8C200906, // 021F GETMET R8 R4 K6 - 0x88280918, // 0220 GETMBR R10 R4 K24 - 0x4C2C0000, // 0221 LDNIL R11 - 0x7C200600, // 0222 CALL R8 3 - 0x80041000, // 0223 RET 1 R8 - 0x70020161, // 0224 JMP #0387 - 0x541E0027, // 0225 LDINT R7 40 - 0x1C1C0A07, // 0226 EQ R7 R5 R7 - 0x781E00B7, // 0227 JMPF R7 #02E0 - 0x1C1C0D05, // 0228 EQ R7 R6 K5 - 0x781E0005, // 0229 JMPF R7 #0230 - 0x8C1C0906, // 022A GETMET R7 R4 K6 - 0x8824090C, // 022B GETMBR R9 R4 K12 - 0x58280009, // 022C LDCONST R10 K9 - 0x7C1C0600, // 022D CALL R7 3 - 0x80040E00, // 022E RET 1 R7 - 0x700200AE, // 022F JMP #02DF - 0x1C1C0D09, // 0230 EQ R7 R6 K9 - 0x781E0005, // 0231 JMPF R7 #0238 - 0x8C1C0906, // 0232 GETMET R7 R4 K6 - 0x88240916, // 0233 GETMBR R9 R4 K22 - 0x58280049, // 0234 LDCONST R10 K73 - 0x7C1C0600, // 0235 CALL R7 3 - 0x80040E00, // 0236 RET 1 R7 - 0x700200A6, // 0237 JMP #02DF - 0x1C1C0D0D, // 0238 EQ R7 R6 K13 - 0x781E0006, // 0239 JMPF R7 #0241 - 0x8C1C0906, // 023A GETMET R7 R4 K6 - 0x8824090C, // 023B GETMBR R9 R4 K12 - 0x88280133, // 023C GETMBR R10 R0 K51 - 0x8828154A, // 023D GETMBR R10 R10 K74 - 0x7C1C0600, // 023E CALL R7 3 - 0x80040E00, // 023F RET 1 R7 - 0x7002009D, // 0240 JMP #02DF - 0x1C1C0D0F, // 0241 EQ R7 R6 K15 - 0x781E000A, // 0242 JMPF R7 #024E - 0x8C1C0906, // 0243 GETMET R7 R4 K6 - 0x88240916, // 0244 GETMBR R9 R4 K22 - 0xB82A2400, // 0245 GETNGBL R10 K18 - 0x8C281526, // 0246 GETMET R10 R10 K38 - 0x5830004B, // 0247 LDCONST R12 K75 - 0x50340200, // 0248 LDBOOL R13 1 0 - 0x7C280600, // 0249 CALL R10 3 - 0x9428154B, // 024A GETIDX R10 R10 K75 - 0x7C1C0600, // 024B CALL R7 3 - 0x80040E00, // 024C RET 1 R7 - 0x70020090, // 024D JMP #02DF - 0x541E0003, // 024E LDINT R7 4 - 0x1C1C0C07, // 024F EQ R7 R6 R7 - 0x781E0005, // 0250 JMPF R7 #0257 - 0x8C1C0906, // 0251 GETMET R7 R4 K6 - 0x8824090C, // 0252 GETMBR R9 R4 K12 - 0x542A7FFF, // 0253 LDINT R10 32768 - 0x7C1C0600, // 0254 CALL R7 3 - 0x80040E00, // 0255 RET 1 R7 - 0x70020087, // 0256 JMP #02DF - 0x541E0004, // 0257 LDINT R7 5 - 0x1C1C0C07, // 0258 EQ R7 R6 R7 - 0x781E000A, // 0259 JMPF R7 #0265 - 0x8C1C0906, // 025A GETMET R7 R4 K6 - 0x88240916, // 025B GETMBR R9 R4 K22 - 0xB82A2400, // 025C GETNGBL R10 K18 - 0x8C281526, // 025D GETMET R10 R10 K38 - 0x5830004C, // 025E LDCONST R12 K76 - 0x50340200, // 025F LDBOOL R13 1 0 - 0x7C280600, // 0260 CALL R10 3 - 0x9428154D, // 0261 GETIDX R10 R10 K77 - 0x7C1C0600, // 0262 CALL R7 3 - 0x80040E00, // 0263 RET 1 R7 - 0x70020079, // 0264 JMP #02DF - 0x541E0005, // 0265 LDINT R7 6 - 0x1C1C0C07, // 0266 EQ R7 R6 R7 - 0x781E0005, // 0267 JMPF R7 #026E - 0x8C1C0906, // 0268 GETMET R7 R4 K6 - 0x88240916, // 0269 GETMBR R9 R4 K22 - 0x5828004E, // 026A LDCONST R10 K78 - 0x7C1C0600, // 026B CALL R7 3 - 0x80040E00, // 026C RET 1 R7 - 0x70020070, // 026D JMP #02DF - 0x541E0006, // 026E LDINT R7 7 - 0x1C1C0C07, // 026F EQ R7 R6 R7 - 0x781E0005, // 0270 JMPF R7 #0277 - 0x8C1C0906, // 0271 GETMET R7 R4 K6 - 0x8824090C, // 0272 GETMBR R9 R4 K12 - 0x58280005, // 0273 LDCONST R10 K5 - 0x7C1C0600, // 0274 CALL R7 3 - 0x80040E00, // 0275 RET 1 R7 - 0x70020067, // 0276 JMP #02DF - 0x541E0007, // 0277 LDINT R7 8 - 0x1C1C0C07, // 0278 EQ R7 R6 R7 - 0x781E000B, // 0279 JMPF R7 #0286 - 0x8C1C0906, // 027A GETMET R7 R4 K6 - 0x88240916, // 027B GETMBR R9 R4 K22 - 0xB82A2400, // 027C GETNGBL R10 K18 - 0x8C281526, // 027D GETMET R10 R10 K38 - 0x5830004F, // 027E LDCONST R12 K79 - 0x50340200, // 027F LDBOOL R13 1 0 - 0x7C280600, // 0280 CALL R10 3 - 0x94281550, // 0281 GETIDX R10 R10 K80 - 0x94281551, // 0282 GETIDX R10 R10 K81 - 0x7C1C0600, // 0283 CALL R7 3 - 0x80040E00, // 0284 RET 1 R7 - 0x70020058, // 0285 JMP #02DF - 0x541E0008, // 0286 LDINT R7 9 - 0x1C1C0C07, // 0287 EQ R7 R6 R7 - 0x781E0005, // 0288 JMPF R7 #028F - 0x8C1C0906, // 0289 GETMET R7 R4 K6 - 0x8824090C, // 028A GETMBR R9 R4 K12 - 0x58280009, // 028B LDCONST R10 K9 - 0x7C1C0600, // 028C CALL R7 3 - 0x80040E00, // 028D RET 1 R7 - 0x7002004F, // 028E JMP #02DF - 0x541E0009, // 028F LDINT R7 10 - 0x1C1C0C07, // 0290 EQ R7 R6 R7 - 0x781E0015, // 0291 JMPF R7 #02A8 - 0xB81E2400, // 0292 GETNGBL R7 K18 - 0x8C1C0F26, // 0293 GETMET R7 R7 K38 - 0x5824004F, // 0294 LDCONST R9 K79 - 0x50280200, // 0295 LDBOOL R10 1 0 - 0x7C1C0600, // 0296 CALL R7 3 - 0x941C0F50, // 0297 GETIDX R7 R7 K80 - 0x941C0F52, // 0298 GETIDX R7 R7 K82 - 0x8C20071B, // 0299 GETMET R8 R3 K27 - 0x5C280E00, // 029A MOVE R10 R7 - 0x582C0053, // 029B LDCONST R11 K83 - 0x7C200600, // 029C CALL R8 3 - 0x24241105, // 029D GT R9 R8 K5 - 0x78260002, // 029E JMPF R9 #02A2 - 0x04241109, // 029F SUB R9 R8 K9 - 0x40260A09, // 02A0 CONNECT R9 K5 R9 - 0x941C0E09, // 02A1 GETIDX R7 R7 R9 - 0x8C240906, // 02A2 GETMET R9 R4 K6 - 0x882C0916, // 02A3 GETMBR R11 R4 K22 - 0x5C300E00, // 02A4 MOVE R12 R7 - 0x7C240600, // 02A5 CALL R9 3 - 0x80041200, // 02A6 RET 1 R9 - 0x70020036, // 02A7 JMP #02DF - 0x541E000E, // 02A8 LDINT R7 15 - 0x1C1C0C07, // 02A9 EQ R7 R6 R7 - 0x781E000B, // 02AA JMPF R7 #02B7 - 0x8C1C0906, // 02AB GETMET R7 R4 K6 - 0x88240916, // 02AC GETMBR R9 R4 K22 - 0xB82A2400, // 02AD GETNGBL R10 K18 - 0x8C281525, // 02AE GETMET R10 R10 K37 - 0x7C280200, // 02AF CALL R10 1 - 0x8C28151B, // 02B0 GETMET R10 R10 K27 - 0x5830001C, // 02B1 LDCONST R12 K28 - 0x5834001D, // 02B2 LDCONST R13 K29 - 0x7C280600, // 02B3 CALL R10 3 - 0x7C1C0600, // 02B4 CALL R7 3 - 0x80040E00, // 02B5 RET 1 R7 - 0x70020027, // 02B6 JMP #02DF - 0x541E0010, // 02B7 LDINT R7 17 - 0x1C1C0C07, // 02B8 EQ R7 R6 R7 - 0x781E0005, // 02B9 JMPF R7 #02C0 - 0x8C1C0906, // 02BA GETMET R7 R4 K6 - 0x88240910, // 02BB GETMBR R9 R4 K16 - 0x58280009, // 02BC LDCONST R10 K9 - 0x7C1C0600, // 02BD CALL R7 3 - 0x80040E00, // 02BE RET 1 R7 - 0x7002001E, // 02BF JMP #02DF - 0x541E0011, // 02C0 LDINT R7 18 - 0x1C1C0C07, // 02C1 EQ R7 R6 R7 - 0x781E000B, // 02C2 JMPF R7 #02CF - 0x8C1C0906, // 02C3 GETMET R7 R4 K6 - 0x88240916, // 02C4 GETMBR R9 R4 K22 - 0xB82A2400, // 02C5 GETNGBL R10 K18 - 0x8C281525, // 02C6 GETMET R10 R10 K37 - 0x7C280200, // 02C7 CALL R10 1 - 0x8C28151B, // 02C8 GETMET R10 R10 K27 - 0x5830001C, // 02C9 LDCONST R12 K28 - 0x5834001D, // 02CA LDCONST R13 K29 - 0x7C280600, // 02CB CALL R10 3 - 0x7C1C0600, // 02CC CALL R7 3 - 0x80040E00, // 02CD RET 1 R7 - 0x7002000F, // 02CE JMP #02DF - 0x541E0012, // 02CF LDINT R7 19 - 0x1C1C0C07, // 02D0 EQ R7 R6 R7 - 0x781E000C, // 02D1 JMPF R7 #02DF - 0x8C1C090A, // 02D2 GETMET R7 R4 K10 - 0x7C1C0200, // 02D3 CALL R7 1 - 0x8C200F0B, // 02D4 GETMET R8 R7 K11 - 0x58280005, // 02D5 LDCONST R10 K5 - 0x882C090C, // 02D6 GETMBR R11 R4 K12 - 0x5830000F, // 02D7 LDCONST R12 K15 - 0x7C200800, // 02D8 CALL R8 4 - 0x8C200F0B, // 02D9 GETMET R8 R7 K11 - 0x58280009, // 02DA LDCONST R10 K9 - 0x882C090C, // 02DB GETMBR R11 R4 K12 - 0x5830000F, // 02DC LDCONST R12 K15 - 0x7C200800, // 02DD CALL R8 4 - 0x80040E00, // 02DE RET 1 R7 - 0x700200A6, // 02DF JMP #0387 - 0x541E003E, // 02E0 LDINT R7 63 - 0x1C1C0A07, // 02E1 EQ R7 R5 R7 - 0x781E0000, // 02E2 JMPF R7 #02E4 - 0x700200A2, // 02E3 JMP #0387 - 0x541E0029, // 02E4 LDINT R7 42 - 0x1C1C0A07, // 02E5 EQ R7 R5 R7 - 0x781E001D, // 02E6 JMPF R7 #0305 - 0x1C1C0D05, // 02E7 EQ R7 R6 K5 - 0x781E0003, // 02E8 JMPF R7 #02ED - 0x8C1C0911, // 02E9 GETMET R7 R4 K17 - 0x7C1C0200, // 02EA CALL R7 1 - 0x80040E00, // 02EB RET 1 R7 - 0x70020016, // 02EC JMP #0304 - 0x1C1C0D09, // 02ED EQ R7 R6 K9 - 0x781E0005, // 02EE JMPF R7 #02F5 - 0x8C1C0906, // 02EF GETMET R7 R4 K6 - 0x88240910, // 02F0 GETMBR R9 R4 K16 - 0x58280005, // 02F1 LDCONST R10 K5 - 0x7C1C0600, // 02F2 CALL R7 3 - 0x80040E00, // 02F3 RET 1 R7 - 0x7002000E, // 02F4 JMP #0304 - 0x1C1C0D0D, // 02F5 EQ R7 R6 K13 - 0x781E0005, // 02F6 JMPF R7 #02FD - 0x8C1C0906, // 02F7 GETMET R7 R4 K6 - 0x8824090E, // 02F8 GETMBR R9 R4 K14 - 0x58280009, // 02F9 LDCONST R10 K9 - 0x7C1C0600, // 02FA CALL R7 3 - 0x80040E00, // 02FB RET 1 R7 - 0x70020006, // 02FC JMP #0304 - 0x1C1C0D0F, // 02FD EQ R7 R6 K15 - 0x781E0004, // 02FE JMPF R7 #0304 - 0x8C1C0906, // 02FF GETMET R7 R4 K6 - 0x88240918, // 0300 GETMBR R9 R4 K24 - 0x4C280000, // 0301 LDNIL R10 - 0x7C1C0600, // 0302 CALL R7 3 - 0x80040E00, // 0303 RET 1 R7 - 0x70020081, // 0304 JMP #0387 - 0x541E002A, // 0305 LDINT R7 43 - 0x1C1C0A07, // 0306 EQ R7 R5 R7 - 0x781E0016, // 0307 JMPF R7 #031F - 0x1C1C0D05, // 0308 EQ R7 R6 K5 - 0x781E0007, // 0309 JMPF R7 #0312 - 0x8C1C0906, // 030A GETMET R7 R4 K6 - 0x88240916, // 030B GETMBR R9 R4 K22 - 0xB82A2400, // 030C GETNGBL R10 K18 - 0x8C281554, // 030D GETMET R10 R10 K84 - 0x7C280200, // 030E CALL R10 1 - 0x7C1C0600, // 030F CALL R7 3 - 0x80040E00, // 0310 RET 1 R7 - 0x7002000B, // 0311 JMP #031E - 0x1C1C0D09, // 0312 EQ R7 R6 K9 - 0x781E0009, // 0313 JMPF R7 #031E - 0x8C1C0911, // 0314 GETMET R7 R4 K17 - 0x7C1C0200, // 0315 CALL R7 1 - 0x8C200F0B, // 0316 GETMET R8 R7 K11 - 0x4C280000, // 0317 LDNIL R10 - 0x882C0916, // 0318 GETMBR R11 R4 K22 - 0xB8322400, // 0319 GETNGBL R12 K18 - 0x8C301954, // 031A GETMET R12 R12 K84 - 0x7C300200, // 031B CALL R12 1 - 0x7C200800, // 031C CALL R8 4 - 0x80040E00, // 031D RET 1 R7 - 0x70020067, // 031E JMP #0387 - 0x541E002B, // 031F LDINT R7 44 - 0x1C1C0A07, // 0320 EQ R7 R5 R7 - 0x781E001C, // 0321 JMPF R7 #033F - 0x1C1C0D05, // 0322 EQ R7 R6 K5 - 0x781E0005, // 0323 JMPF R7 #032A - 0x8C1C0906, // 0324 GETMET R7 R4 K6 - 0x8824090E, // 0325 GETMBR R9 R4 K14 - 0x58280009, // 0326 LDCONST R10 K9 - 0x7C1C0600, // 0327 CALL R7 3 - 0x80040E00, // 0328 RET 1 R7 - 0x70020013, // 0329 JMP #033E - 0x1C1C0D09, // 032A EQ R7 R6 K9 - 0x781E0005, // 032B JMPF R7 #0332 - 0x8C1C0906, // 032C GETMET R7 R4 K6 - 0x8824090E, // 032D GETMBR R9 R4 K14 - 0x542A0003, // 032E LDINT R10 4 - 0x7C1C0600, // 032F CALL R7 3 - 0x80040E00, // 0330 RET 1 R7 - 0x7002000B, // 0331 JMP #033E - 0x1C1C0D0D, // 0332 EQ R7 R6 K13 - 0x781E0009, // 0333 JMPF R7 #033E - 0x8C1C0911, // 0334 GETMET R7 R4 K17 - 0x7C1C0200, // 0335 CALL R7 1 - 0x8C200F0B, // 0336 GETMET R8 R7 K11 - 0x4C280000, // 0337 LDNIL R10 - 0x8C2C0906, // 0338 GETMET R11 R4 K6 - 0x8834090E, // 0339 GETMBR R13 R4 K14 - 0x543A0003, // 033A LDINT R14 4 - 0x7C2C0600, // 033B CALL R11 3 - 0x7C200600, // 033C CALL R8 3 - 0x80040E00, // 033D RET 1 R7 - 0x70020047, // 033E JMP #0387 - 0x541E0030, // 033F LDINT R7 49 - 0x1C1C0A07, // 0340 EQ R7 R5 R7 - 0x781E0010, // 0341 JMPF R7 #0353 - 0x1C1C0D0F, // 0342 EQ R7 R6 K15 - 0x781E0005, // 0343 JMPF R7 #034A - 0x8C1C0906, // 0344 GETMET R7 R4 K6 - 0x8824090E, // 0345 GETMBR R9 R4 K14 - 0x542A001D, // 0346 LDINT R10 30 - 0x7C1C0600, // 0347 CALL R7 3 - 0x80040E00, // 0348 RET 1 R7 - 0x70020007, // 0349 JMP #0352 - 0x541EFFFB, // 034A LDINT R7 65532 - 0x1C1C0C07, // 034B EQ R7 R6 R7 - 0x781E0004, // 034C JMPF R7 #0352 - 0x8C1C0906, // 034D GETMET R7 R4 K6 - 0x8824092A, // 034E GETMBR R9 R4 K42 - 0x542A0003, // 034F LDINT R10 4 - 0x7C1C0600, // 0350 CALL R7 3 - 0x80040E00, // 0351 RET 1 R7 - 0x70020033, // 0352 JMP #0387 - 0x541E001C, // 0353 LDINT R7 29 - 0x1C1C0A07, // 0354 EQ R7 R5 R7 - 0x781E0028, // 0355 JMPF R7 #037F - 0x1C1C0D0F, // 0356 EQ R7 R6 K15 - 0x781E001D, // 0357 JMPF R7 #0376 - 0x8C1C0911, // 0358 GETMET R7 R4 K17 - 0x7C1C0200, // 0359 CALL R7 1 - 0x88200133, // 035A GETMBR R8 R0 K51 - 0x8C201155, // 035B GETMET R8 R8 K85 - 0x50280200, // 035C LDBOOL R10 1 0 - 0x7C200400, // 035D CALL R8 2 - 0x88240133, // 035E GETMBR R9 R0 K51 - 0x88241356, // 035F GETMBR R9 R9 K86 - 0x60280010, // 0360 GETGBL R10 G16 - 0x5C2C1000, // 0361 MOVE R11 R8 - 0x7C280200, // 0362 CALL R10 1 - 0xA802000C, // 0363 EXBLK 0 #0371 - 0x5C2C1400, // 0364 MOVE R11 R10 - 0x7C2C0000, // 0365 CALL R11 0 + 0x58280009, // 01F6 LDCONST R10 K9 + 0x70020000, // 01F7 JMP #01F9 + 0x58280005, // 01F8 LDCONST R10 K5 + 0x8C2C0706, // 01F9 GETMET R11 R3 K6 + 0x88340B0E, // 01FA GETMBR R13 R5 K14 + 0x5C381400, // 01FB MOVE R14 R10 + 0x7C2C0600, // 01FC CALL R11 3 + 0x80041600, // 01FD RET 1 R11 + 0x70020026, // 01FE JMP #0226 + 0x1C200F09, // 01FF EQ R8 R7 K9 + 0x78220011, // 0200 JMPF R8 #0213 + 0x88200135, // 0201 GETMBR R8 R0 K53 + 0x8820114A, // 0202 GETMBR R8 R8 K74 + 0x4C240000, // 0203 LDNIL R9 + 0x20241009, // 0204 NE R9 R8 R9 + 0x78260006, // 0205 JMPF R9 #020D + 0x8C240706, // 0206 GETMET R9 R3 K6 + 0x882C0B0C, // 0207 GETMBR R11 R5 K12 + 0x8C30113B, // 0208 GETMET R12 R8 K59 + 0x7C300200, // 0209 CALL R12 1 + 0x7C240600, // 020A CALL R9 3 + 0x80041200, // 020B RET 1 R9 + 0x70020004, // 020C JMP #0212 + 0x8C240706, // 020D GETMET R9 R3 K6 + 0x882C0B18, // 020E GETMBR R11 R5 K24 + 0x4C300000, // 020F LDNIL R12 + 0x7C240600, // 0210 CALL R9 3 + 0x80041200, // 0211 RET 1 R9 + 0x70020012, // 0212 JMP #0226 + 0x1C200F0D, // 0213 EQ R8 R7 K13 + 0x78220010, // 0214 JMPF R8 #0226 + 0x88200135, // 0215 GETMBR R8 R0 K53 + 0x8820114A, // 0216 GETMBR R8 R8 K74 + 0x4C240000, // 0217 LDNIL R9 + 0x20241009, // 0218 NE R9 R8 R9 + 0x78260006, // 0219 JMPF R9 #0221 + 0x8C240706, // 021A GETMET R9 R3 K6 + 0x882C0B0C, // 021B GETMBR R11 R5 K12 + 0x8C301140, // 021C GETMET R12 R8 K64 + 0x7C300200, // 021D CALL R12 1 + 0x7C240600, // 021E CALL R9 3 + 0x80041200, // 021F RET 1 R9 + 0x70020004, // 0220 JMP #0226 + 0x8C240706, // 0221 GETMET R9 R3 K6 + 0x882C0B18, // 0222 GETMBR R11 R5 K24 + 0x4C300000, // 0223 LDNIL R12 + 0x7C240600, // 0224 CALL R9 3 + 0x80041200, // 0225 RET 1 R9 + 0x70020166, // 0226 JMP #038E + 0x54220027, // 0227 LDINT R8 40 + 0x1C200C08, // 0228 EQ R8 R6 R8 + 0x782200BA, // 0229 JMPF R8 #02E5 + 0x8C200133, // 022A GETMET R8 R0 K51 + 0x88280534, // 022B GETMBR R10 R2 K52 + 0x7C200400, // 022C CALL R8 2 + 0x1C200F05, // 022D EQ R8 R7 K5 + 0x78220005, // 022E JMPF R8 #0235 + 0x8C200706, // 022F GETMET R8 R3 K6 + 0x88280B0C, // 0230 GETMBR R10 R5 K12 + 0x582C0009, // 0231 LDCONST R11 K9 + 0x7C200600, // 0232 CALL R8 3 + 0x80041000, // 0233 RET 1 R8 + 0x700200AE, // 0234 JMP #02E4 + 0x1C200F09, // 0235 EQ R8 R7 K9 + 0x78220005, // 0236 JMPF R8 #023D + 0x8C200706, // 0237 GETMET R8 R3 K6 + 0x88280B16, // 0238 GETMBR R10 R5 K22 + 0x582C004B, // 0239 LDCONST R11 K75 + 0x7C200600, // 023A CALL R8 3 + 0x80041000, // 023B RET 1 R8 + 0x700200A6, // 023C JMP #02E4 + 0x1C200F0D, // 023D EQ R8 R7 K13 + 0x78220006, // 023E JMPF R8 #0246 + 0x8C200706, // 023F GETMET R8 R3 K6 + 0x88280B0C, // 0240 GETMBR R10 R5 K12 + 0x882C0135, // 0241 GETMBR R11 R0 K53 + 0x882C174C, // 0242 GETMBR R11 R11 K76 + 0x7C200600, // 0243 CALL R8 3 + 0x80041000, // 0244 RET 1 R8 + 0x7002009D, // 0245 JMP #02E4 + 0x1C200F0F, // 0246 EQ R8 R7 K15 + 0x7822000A, // 0247 JMPF R8 #0253 + 0x8C200706, // 0248 GETMET R8 R3 K6 + 0x88280B16, // 0249 GETMBR R10 R5 K22 + 0xB82E2400, // 024A GETNGBL R11 K18 + 0x8C2C1726, // 024B GETMET R11 R11 K38 + 0x5834004D, // 024C LDCONST R13 K77 + 0x50380200, // 024D LDBOOL R14 1 0 + 0x7C2C0600, // 024E CALL R11 3 + 0x942C174D, // 024F GETIDX R11 R11 K77 + 0x7C200600, // 0250 CALL R8 3 + 0x80041000, // 0251 RET 1 R8 + 0x70020090, // 0252 JMP #02E4 + 0x54220003, // 0253 LDINT R8 4 + 0x1C200E08, // 0254 EQ R8 R7 R8 + 0x78220005, // 0255 JMPF R8 #025C + 0x8C200706, // 0256 GETMET R8 R3 K6 + 0x88280B0C, // 0257 GETMBR R10 R5 K12 + 0x542E7FFF, // 0258 LDINT R11 32768 + 0x7C200600, // 0259 CALL R8 3 + 0x80041000, // 025A RET 1 R8 + 0x70020087, // 025B JMP #02E4 + 0x54220004, // 025C LDINT R8 5 + 0x1C200E08, // 025D EQ R8 R7 R8 + 0x7822000A, // 025E JMPF R8 #026A + 0x8C200706, // 025F GETMET R8 R3 K6 + 0x88280B16, // 0260 GETMBR R10 R5 K22 + 0xB82E2400, // 0261 GETNGBL R11 K18 + 0x8C2C1726, // 0262 GETMET R11 R11 K38 + 0x5834004E, // 0263 LDCONST R13 K78 + 0x50380200, // 0264 LDBOOL R14 1 0 + 0x7C2C0600, // 0265 CALL R11 3 + 0x942C174F, // 0266 GETIDX R11 R11 K79 + 0x7C200600, // 0267 CALL R8 3 + 0x80041000, // 0268 RET 1 R8 + 0x70020079, // 0269 JMP #02E4 + 0x54220005, // 026A LDINT R8 6 + 0x1C200E08, // 026B EQ R8 R7 R8 + 0x78220005, // 026C JMPF R8 #0273 + 0x8C200706, // 026D GETMET R8 R3 K6 + 0x88280B16, // 026E GETMBR R10 R5 K22 + 0x582C0050, // 026F LDCONST R11 K80 + 0x7C200600, // 0270 CALL R8 3 + 0x80041000, // 0271 RET 1 R8 + 0x70020070, // 0272 JMP #02E4 + 0x54220006, // 0273 LDINT R8 7 + 0x1C200E08, // 0274 EQ R8 R7 R8 + 0x78220005, // 0275 JMPF R8 #027C + 0x8C200706, // 0276 GETMET R8 R3 K6 + 0x88280B0C, // 0277 GETMBR R10 R5 K12 + 0x582C0005, // 0278 LDCONST R11 K5 + 0x7C200600, // 0279 CALL R8 3 + 0x80041000, // 027A RET 1 R8 + 0x70020067, // 027B JMP #02E4 + 0x54220007, // 027C LDINT R8 8 + 0x1C200E08, // 027D EQ R8 R7 R8 + 0x7822000B, // 027E JMPF R8 #028B + 0x8C200706, // 027F GETMET R8 R3 K6 + 0x88280B16, // 0280 GETMBR R10 R5 K22 + 0xB82E2400, // 0281 GETNGBL R11 K18 + 0x8C2C1726, // 0282 GETMET R11 R11 K38 + 0x58340051, // 0283 LDCONST R13 K81 + 0x50380200, // 0284 LDBOOL R14 1 0 + 0x7C2C0600, // 0285 CALL R11 3 + 0x942C1752, // 0286 GETIDX R11 R11 K82 + 0x942C1753, // 0287 GETIDX R11 R11 K83 + 0x7C200600, // 0288 CALL R8 3 + 0x80041000, // 0289 RET 1 R8 + 0x70020058, // 028A JMP #02E4 + 0x54220008, // 028B LDINT R8 9 + 0x1C200E08, // 028C EQ R8 R7 R8 + 0x78220005, // 028D JMPF R8 #0294 + 0x8C200706, // 028E GETMET R8 R3 K6 + 0x88280B0C, // 028F GETMBR R10 R5 K12 + 0x582C0009, // 0290 LDCONST R11 K9 + 0x7C200600, // 0291 CALL R8 3 + 0x80041000, // 0292 RET 1 R8 + 0x7002004F, // 0293 JMP #02E4 + 0x54220009, // 0294 LDINT R8 10 + 0x1C200E08, // 0295 EQ R8 R7 R8 + 0x78220015, // 0296 JMPF R8 #02AD + 0xB8222400, // 0297 GETNGBL R8 K18 + 0x8C201126, // 0298 GETMET R8 R8 K38 + 0x58280051, // 0299 LDCONST R10 K81 + 0x502C0200, // 029A LDBOOL R11 1 0 + 0x7C200600, // 029B CALL R8 3 + 0x94201152, // 029C GETIDX R8 R8 K82 + 0x94201154, // 029D GETIDX R8 R8 K84 + 0x8C24091B, // 029E GETMET R9 R4 K27 + 0x5C2C1000, // 029F MOVE R11 R8 + 0x58300055, // 02A0 LDCONST R12 K85 + 0x7C240600, // 02A1 CALL R9 3 + 0x24281305, // 02A2 GT R10 R9 K5 + 0x782A0002, // 02A3 JMPF R10 #02A7 + 0x04281309, // 02A4 SUB R10 R9 K9 + 0x402A0A0A, // 02A5 CONNECT R10 K5 R10 + 0x9420100A, // 02A6 GETIDX R8 R8 R10 + 0x8C280706, // 02A7 GETMET R10 R3 K6 + 0x88300B16, // 02A8 GETMBR R12 R5 K22 + 0x5C341000, // 02A9 MOVE R13 R8 + 0x7C280600, // 02AA CALL R10 3 + 0x80041400, // 02AB RET 1 R10 + 0x70020036, // 02AC JMP #02E4 + 0x5422000E, // 02AD LDINT R8 15 + 0x1C200E08, // 02AE EQ R8 R7 R8 + 0x7822000B, // 02AF JMPF R8 #02BC + 0x8C200706, // 02B0 GETMET R8 R3 K6 + 0x88280B16, // 02B1 GETMBR R10 R5 K22 + 0xB82E2400, // 02B2 GETNGBL R11 K18 + 0x8C2C1725, // 02B3 GETMET R11 R11 K37 + 0x7C2C0200, // 02B4 CALL R11 1 + 0x8C2C171B, // 02B5 GETMET R11 R11 K27 + 0x5834001C, // 02B6 LDCONST R13 K28 + 0x5838001D, // 02B7 LDCONST R14 K29 + 0x7C2C0600, // 02B8 CALL R11 3 + 0x7C200600, // 02B9 CALL R8 3 + 0x80041000, // 02BA RET 1 R8 + 0x70020027, // 02BB JMP #02E4 + 0x54220010, // 02BC LDINT R8 17 + 0x1C200E08, // 02BD EQ R8 R7 R8 + 0x78220005, // 02BE JMPF R8 #02C5 + 0x8C200706, // 02BF GETMET R8 R3 K6 + 0x88280B10, // 02C0 GETMBR R10 R5 K16 + 0x582C0009, // 02C1 LDCONST R11 K9 + 0x7C200600, // 02C2 CALL R8 3 + 0x80041000, // 02C3 RET 1 R8 + 0x7002001E, // 02C4 JMP #02E4 + 0x54220011, // 02C5 LDINT R8 18 + 0x1C200E08, // 02C6 EQ R8 R7 R8 + 0x7822000B, // 02C7 JMPF R8 #02D4 + 0x8C200706, // 02C8 GETMET R8 R3 K6 + 0x88280B16, // 02C9 GETMBR R10 R5 K22 + 0xB82E2400, // 02CA GETNGBL R11 K18 + 0x8C2C1725, // 02CB GETMET R11 R11 K37 + 0x7C2C0200, // 02CC CALL R11 1 + 0x8C2C171B, // 02CD GETMET R11 R11 K27 + 0x5834001C, // 02CE LDCONST R13 K28 + 0x5838001D, // 02CF LDCONST R14 K29 + 0x7C2C0600, // 02D0 CALL R11 3 + 0x7C200600, // 02D1 CALL R8 3 + 0x80041000, // 02D2 RET 1 R8 + 0x7002000F, // 02D3 JMP #02E4 + 0x54220012, // 02D4 LDINT R8 19 + 0x1C200E08, // 02D5 EQ R8 R7 R8 + 0x7822000C, // 02D6 JMPF R8 #02E4 + 0x8C200B0A, // 02D7 GETMET R8 R5 K10 + 0x7C200200, // 02D8 CALL R8 1 + 0x8C24110B, // 02D9 GETMET R9 R8 K11 + 0x582C0005, // 02DA LDCONST R11 K5 + 0x88300B0C, // 02DB GETMBR R12 R5 K12 + 0x5834000F, // 02DC LDCONST R13 K15 + 0x7C240800, // 02DD CALL R9 4 + 0x8C24110B, // 02DE GETMET R9 R8 K11 + 0x582C0009, // 02DF LDCONST R11 K9 + 0x88300B0C, // 02E0 GETMBR R12 R5 K12 + 0x5834000F, // 02E1 LDCONST R13 K15 + 0x7C240800, // 02E2 CALL R9 4 + 0x80041000, // 02E3 RET 1 R8 + 0x700200A8, // 02E4 JMP #038E + 0x5422003E, // 02E5 LDINT R8 63 + 0x1C200C08, // 02E6 EQ R8 R6 R8 + 0x78220000, // 02E7 JMPF R8 #02E9 + 0x700200A4, // 02E8 JMP #038E + 0x54220029, // 02E9 LDINT R8 42 + 0x1C200C08, // 02EA EQ R8 R6 R8 + 0x7822001D, // 02EB JMPF R8 #030A + 0x1C200F05, // 02EC EQ R8 R7 K5 + 0x78220003, // 02ED JMPF R8 #02F2 + 0x8C200B11, // 02EE GETMET R8 R5 K17 + 0x7C200200, // 02EF CALL R8 1 + 0x80041000, // 02F0 RET 1 R8 + 0x70020016, // 02F1 JMP #0309 + 0x1C200F09, // 02F2 EQ R8 R7 K9 + 0x78220005, // 02F3 JMPF R8 #02FA + 0x8C200706, // 02F4 GETMET R8 R3 K6 + 0x88280B10, // 02F5 GETMBR R10 R5 K16 + 0x582C0005, // 02F6 LDCONST R11 K5 + 0x7C200600, // 02F7 CALL R8 3 + 0x80041000, // 02F8 RET 1 R8 + 0x7002000E, // 02F9 JMP #0309 + 0x1C200F0D, // 02FA EQ R8 R7 K13 + 0x78220005, // 02FB JMPF R8 #0302 + 0x8C200706, // 02FC GETMET R8 R3 K6 + 0x88280B0E, // 02FD GETMBR R10 R5 K14 + 0x582C0009, // 02FE LDCONST R11 K9 + 0x7C200600, // 02FF CALL R8 3 + 0x80041000, // 0300 RET 1 R8 + 0x70020006, // 0301 JMP #0309 + 0x1C200F0F, // 0302 EQ R8 R7 K15 + 0x78220004, // 0303 JMPF R8 #0309 + 0x8C200706, // 0304 GETMET R8 R3 K6 + 0x88280B18, // 0305 GETMBR R10 R5 K24 + 0x4C2C0000, // 0306 LDNIL R11 + 0x7C200600, // 0307 CALL R8 3 + 0x80041000, // 0308 RET 1 R8 + 0x70020083, // 0309 JMP #038E + 0x5422002A, // 030A LDINT R8 43 + 0x1C200C08, // 030B EQ R8 R6 R8 + 0x78220016, // 030C JMPF R8 #0324 + 0x1C200F05, // 030D EQ R8 R7 K5 + 0x78220007, // 030E JMPF R8 #0317 + 0x8C200706, // 030F GETMET R8 R3 K6 + 0x88280B16, // 0310 GETMBR R10 R5 K22 + 0xB82E2400, // 0311 GETNGBL R11 K18 + 0x8C2C1756, // 0312 GETMET R11 R11 K86 + 0x7C2C0200, // 0313 CALL R11 1 + 0x7C200600, // 0314 CALL R8 3 + 0x80041000, // 0315 RET 1 R8 + 0x7002000B, // 0316 JMP #0323 + 0x1C200F09, // 0317 EQ R8 R7 K9 + 0x78220009, // 0318 JMPF R8 #0323 + 0x8C200B11, // 0319 GETMET R8 R5 K17 + 0x7C200200, // 031A CALL R8 1 + 0x8C24110B, // 031B GETMET R9 R8 K11 + 0x4C2C0000, // 031C LDNIL R11 + 0x88300B16, // 031D GETMBR R12 R5 K22 + 0xB8362400, // 031E GETNGBL R13 K18 + 0x8C341B56, // 031F GETMET R13 R13 K86 + 0x7C340200, // 0320 CALL R13 1 + 0x7C240800, // 0321 CALL R9 4 + 0x80041000, // 0322 RET 1 R8 + 0x70020069, // 0323 JMP #038E + 0x5422002B, // 0324 LDINT R8 44 + 0x1C200C08, // 0325 EQ R8 R6 R8 + 0x7822001C, // 0326 JMPF R8 #0344 + 0x1C200F05, // 0327 EQ R8 R7 K5 + 0x78220005, // 0328 JMPF R8 #032F + 0x8C200706, // 0329 GETMET R8 R3 K6 + 0x88280B0E, // 032A GETMBR R10 R5 K14 + 0x582C0009, // 032B LDCONST R11 K9 + 0x7C200600, // 032C CALL R8 3 + 0x80041000, // 032D RET 1 R8 + 0x70020013, // 032E JMP #0343 + 0x1C200F09, // 032F EQ R8 R7 K9 + 0x78220005, // 0330 JMPF R8 #0337 + 0x8C200706, // 0331 GETMET R8 R3 K6 + 0x88280B0E, // 0332 GETMBR R10 R5 K14 + 0x542E0003, // 0333 LDINT R11 4 + 0x7C200600, // 0334 CALL R8 3 + 0x80041000, // 0335 RET 1 R8 + 0x7002000B, // 0336 JMP #0343 + 0x1C200F0D, // 0337 EQ R8 R7 K13 + 0x78220009, // 0338 JMPF R8 #0343 + 0x8C200B11, // 0339 GETMET R8 R5 K17 + 0x7C200200, // 033A CALL R8 1 + 0x8C24110B, // 033B GETMET R9 R8 K11 + 0x4C2C0000, // 033C LDNIL R11 + 0x8C300B57, // 033D GETMET R12 R5 K87 + 0x88380B0E, // 033E GETMBR R14 R5 K14 + 0x543E0003, // 033F LDINT R15 4 + 0x7C300600, // 0340 CALL R12 3 + 0x7C240600, // 0341 CALL R9 3 + 0x80041000, // 0342 RET 1 R8 + 0x70020049, // 0343 JMP #038E + 0x54220030, // 0344 LDINT R8 49 + 0x1C200C08, // 0345 EQ R8 R6 R8 + 0x78220010, // 0346 JMPF R8 #0358 + 0x1C200F0F, // 0347 EQ R8 R7 K15 + 0x78220005, // 0348 JMPF R8 #034F + 0x8C200706, // 0349 GETMET R8 R3 K6 + 0x88280B0E, // 034A GETMBR R10 R5 K14 + 0x542E001D, // 034B LDINT R11 30 + 0x7C200600, // 034C CALL R8 3 + 0x80041000, // 034D RET 1 R8 + 0x70020007, // 034E JMP #0357 + 0x5422FFFB, // 034F LDINT R8 65532 + 0x1C200E08, // 0350 EQ R8 R7 R8 + 0x78220004, // 0351 JMPF R8 #0357 + 0x8C200706, // 0352 GETMET R8 R3 K6 + 0x88280B2A, // 0353 GETMBR R10 R5 K42 + 0x542E0003, // 0354 LDINT R11 4 + 0x7C200600, // 0355 CALL R8 3 + 0x80041000, // 0356 RET 1 R8 + 0x70020035, // 0357 JMP #038E + 0x5422001C, // 0358 LDINT R8 29 + 0x1C200C08, // 0359 EQ R8 R6 R8 + 0x78220029, // 035A JMPF R8 #0385 + 0x1C200F0F, // 035B EQ R8 R7 K15 + 0x7822001D, // 035C JMPF R8 #037B + 0x8C200B11, // 035D GETMET R8 R5 K17 + 0x7C200200, // 035E CALL R8 1 + 0x88240135, // 035F GETMBR R9 R0 K53 + 0x8C241358, // 0360 GETMET R9 R9 K88 + 0x502C0200, // 0361 LDBOOL R11 1 0 + 0x7C240400, // 0362 CALL R9 2 + 0x88280135, // 0363 GETMBR R10 R0 K53 + 0x88281559, // 0364 GETMBR R10 R10 K89 + 0x602C0010, // 0365 GETGBL R11 G16 0x5C301200, // 0366 MOVE R12 R9 - 0x78320002, // 0367 JMPF R12 #036B - 0x5432FEFF, // 0368 LDINT R12 65280 - 0x1430160C, // 0369 LT R12 R11 R12 - 0x78320004, // 036A JMPF R12 #0370 - 0x8C300F0B, // 036B GETMET R12 R7 K11 - 0x4C380000, // 036C LDNIL R14 - 0x883C090C, // 036D GETMBR R15 R4 K12 - 0x5C401600, // 036E MOVE R16 R11 - 0x7C300800, // 036F CALL R12 4 - 0x7001FFF2, // 0370 JMP #0364 - 0x5828003A, // 0371 LDCONST R10 K58 - 0xAC280200, // 0372 CATCH R10 1 0 - 0xB0080000, // 0373 RAISE 2 R0 R0 - 0x80040E00, // 0374 RET 1 R7 - 0x70020007, // 0375 JMP #037E - 0x601C0003, // 0376 GETGBL R7 G3 - 0x5C200000, // 0377 MOVE R8 R0 - 0x7C1C0200, // 0378 CALL R7 1 - 0x8C1C0F57, // 0379 GETMET R7 R7 K87 - 0x5C240200, // 037A MOVE R9 R1 - 0x5C280400, // 037B MOVE R10 R2 - 0x7C1C0600, // 037C CALL R7 3 - 0x80040E00, // 037D RET 1 R7 - 0x70020007, // 037E JMP #0387 - 0x601C0003, // 037F GETGBL R7 G3 - 0x5C200000, // 0380 MOVE R8 R0 - 0x7C1C0200, // 0381 CALL R7 1 - 0x8C1C0F57, // 0382 GETMET R7 R7 K87 - 0x5C240200, // 0383 MOVE R9 R1 - 0x5C280400, // 0384 MOVE R10 R2 - 0x7C1C0600, // 0385 CALL R7 3 - 0x80040E00, // 0386 RET 1 R7 - 0x80000000, // 0387 RET 0 + 0x7C2C0200, // 0367 CALL R11 1 + 0xA802000C, // 0368 EXBLK 0 #0376 + 0x5C301600, // 0369 MOVE R12 R11 + 0x7C300000, // 036A CALL R12 0 + 0x5C341400, // 036B MOVE R13 R10 + 0x78360002, // 036C JMPF R13 #0370 + 0x5436FEFF, // 036D LDINT R13 65280 + 0x1434180D, // 036E LT R13 R12 R13 + 0x78360004, // 036F JMPF R13 #0375 + 0x8C34110B, // 0370 GETMET R13 R8 K11 + 0x4C3C0000, // 0371 LDNIL R15 + 0x88400B0C, // 0372 GETMBR R16 R5 K12 + 0x5C441800, // 0373 MOVE R17 R12 + 0x7C340800, // 0374 CALL R13 4 + 0x7001FFF2, // 0375 JMP #0369 + 0x582C003C, // 0376 LDCONST R11 K60 + 0xAC2C0200, // 0377 CATCH R11 1 0 + 0xB0080000, // 0378 RAISE 2 R0 R0 + 0x80041000, // 0379 RET 1 R8 + 0x70020008, // 037A JMP #0384 + 0x60200003, // 037B GETGBL R8 G3 + 0x5C240000, // 037C MOVE R9 R0 + 0x7C200200, // 037D CALL R8 1 + 0x8C20115A, // 037E GETMET R8 R8 K90 + 0x5C280200, // 037F MOVE R10 R1 + 0x5C2C0400, // 0380 MOVE R11 R2 + 0x5C300600, // 0381 MOVE R12 R3 + 0x7C200800, // 0382 CALL R8 4 + 0x80041000, // 0383 RET 1 R8 + 0x70020008, // 0384 JMP #038E + 0x60200003, // 0385 GETGBL R8 G3 + 0x5C240000, // 0386 MOVE R9 R0 + 0x7C200200, // 0387 CALL R8 1 + 0x8C20115A, // 0388 GETMET R8 R8 K90 + 0x5C280200, // 0389 MOVE R10 R1 + 0x5C2C0400, // 038A MOVE R11 R2 + 0x5C300600, // 038B MOVE R12 R3 + 0x7C200800, // 038C CALL R8 4 + 0x80041000, // 038D RET 1 R8 + 0x80000000, // 038E RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Contact.h index c52c654e99c1..3382434a33e6 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Contact.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Contact.h @@ -79,8 +79,8 @@ be_local_closure(Matter_Plugin_Sensor_Contact_parse_configuration, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Sensor_Contact_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -94,7 +94,7 @@ be_local_closure(Matter_Plugin_Sensor_Contact_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(shadow_contact), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(BOOL), /* K8 */ be_nested_str_weak(NULL), /* K9 */ be_nested_str_weak(U4), @@ -103,59 +103,60 @@ be_local_closure(Matter_Plugin_Sensor_Contact_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0044, // 0004 LDINT R6 69 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0023, // 0006 JMPF R6 #002B - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A000F, // 0008 JMPF R6 #0019 - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x4C1C0000, // 000A LDNIL R7 - 0x20180C07, // 000B NE R6 R6 R7 - 0x781A0005, // 000C JMPF R6 #0013 - 0x8C180706, // 000D GETMET R6 R3 K6 - 0x88200707, // 000E GETMBR R8 R3 K7 - 0x88240105, // 000F GETMBR R9 R0 K5 - 0x7C180600, // 0010 CALL R6 3 - 0x80040C00, // 0011 RET 1 R6 + ( &(const binstruction[53]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0044, // 0004 LDINT R7 69 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0023, // 0006 JMPF R7 #002B + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E000F, // 0008 JMPF R7 #0019 + 0x881C0105, // 0009 GETMBR R7 R0 K5 + 0x4C200000, // 000A LDNIL R8 + 0x201C0E08, // 000B NE R7 R7 R8 + 0x781E0005, // 000C JMPF R7 #0013 + 0x8C1C0706, // 000D GETMET R7 R3 K6 + 0x88240907, // 000E GETMBR R9 R4 K7 + 0x88280105, // 000F GETMBR R10 R0 K5 + 0x7C1C0600, // 0010 CALL R7 3 + 0x80040E00, // 0011 RET 1 R7 0x70020004, // 0012 JMP #0018 - 0x8C180706, // 0013 GETMET R6 R3 K6 - 0x88200708, // 0014 GETMBR R8 R3 K8 - 0x4C240000, // 0015 LDNIL R9 - 0x7C180600, // 0016 CALL R6 3 - 0x80040C00, // 0017 RET 1 R6 + 0x8C1C0706, // 0013 GETMET R7 R3 K6 + 0x88240908, // 0014 GETMBR R9 R4 K8 + 0x4C280000, // 0015 LDNIL R10 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 0x70020010, // 0018 JMP #002A - 0x541AFFFB, // 0019 LDINT R6 65532 - 0x1C180A06, // 001A EQ R6 R5 R6 - 0x781A0005, // 001B JMPF R6 #0022 - 0x8C180706, // 001C GETMET R6 R3 K6 - 0x88200709, // 001D GETMBR R8 R3 K9 - 0x58240004, // 001E LDCONST R9 K4 - 0x7C180600, // 001F CALL R6 3 - 0x80040C00, // 0020 RET 1 R6 + 0x541EFFFB, // 0019 LDINT R7 65532 + 0x1C1C0C07, // 001A EQ R7 R6 R7 + 0x781E0005, // 001B JMPF R7 #0022 + 0x8C1C0706, // 001C GETMET R7 R3 K6 + 0x88240909, // 001D GETMBR R9 R4 K9 + 0x58280004, // 001E LDCONST R10 K4 + 0x7C1C0600, // 001F CALL R7 3 + 0x80040E00, // 0020 RET 1 R7 0x70020007, // 0021 JMP #002A - 0x541AFFFC, // 0022 LDINT R6 65533 - 0x1C180A06, // 0023 EQ R6 R5 R6 - 0x781A0004, // 0024 JMPF R6 #002A - 0x8C180706, // 0025 GETMET R6 R3 K6 - 0x88200709, // 0026 GETMBR R8 R3 K9 - 0x5824000A, // 0027 LDCONST R9 K10 - 0x7C180600, // 0028 CALL R6 3 - 0x80040C00, // 0029 RET 1 R6 - 0x70020007, // 002A JMP #0033 - 0x60180003, // 002B GETGBL R6 G3 - 0x5C1C0000, // 002C MOVE R7 R0 - 0x7C180200, // 002D CALL R6 1 - 0x8C180D0B, // 002E GETMET R6 R6 K11 - 0x5C200200, // 002F MOVE R8 R1 - 0x5C240400, // 0030 MOVE R9 R2 - 0x7C180600, // 0031 CALL R6 3 - 0x80040C00, // 0032 RET 1 R6 - 0x80000000, // 0033 RET 0 + 0x541EFFFC, // 0022 LDINT R7 65533 + 0x1C1C0C07, // 0023 EQ R7 R6 R7 + 0x781E0004, // 0024 JMPF R7 #002A + 0x8C1C0706, // 0025 GETMET R7 R3 K6 + 0x88240909, // 0026 GETMBR R9 R4 K9 + 0x5828000A, // 0027 LDCONST R10 K10 + 0x7C1C0600, // 0028 CALL R7 3 + 0x80040E00, // 0029 RET 1 R7 + 0x70020008, // 002A JMP #0034 + 0x601C0003, // 002B GETGBL R7 G3 + 0x5C200000, // 002C MOVE R8 R0 + 0x7C1C0200, // 002D CALL R7 1 + 0x8C1C0F0B, // 002E GETMET R7 R7 K11 + 0x5C240200, // 002F MOVE R9 R1 + 0x5C280400, // 0030 MOVE R10 R2 + 0x5C2C0600, // 0031 MOVE R11 R3 + 0x7C1C0800, // 0032 CALL R7 4 + 0x80040E00, // 0033 RET 1 R7 + 0x80000000, // 0034 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Humidity.h index 3cb1f9110ece..77df755f2a89 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Humidity.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Humidity.h @@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Sensor_Humidity; ********************************************************************/ be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */ be_nested_proto( - 11, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -26,7 +26,7 @@ be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(U2), /* K8 */ be_nested_str_weak(NULL), /* K9 */ be_const_int(1), @@ -37,77 +37,78 @@ be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[70]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0404, // 0004 LDINT R6 1029 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0035, // 0006 JMPF R6 #003D - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A0011, // 0008 JMPF R6 #001B - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x4C1C0000, // 000A LDNIL R7 - 0x20180C07, // 000B NE R6 R6 R7 - 0x781A0007, // 000C JMPF R6 #0015 - 0x8C180706, // 000D GETMET R6 R3 K6 - 0x88200707, // 000E GETMBR R8 R3 K7 - 0x60240009, // 000F GETGBL R9 G9 - 0x88280105, // 0010 GETMBR R10 R0 K5 - 0x7C240200, // 0011 CALL R9 1 - 0x7C180600, // 0012 CALL R6 3 - 0x80040C00, // 0013 RET 1 R6 + ( &(const binstruction[71]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0404, // 0004 LDINT R7 1029 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0035, // 0006 JMPF R7 #003D + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E0011, // 0008 JMPF R7 #001B + 0x881C0105, // 0009 GETMBR R7 R0 K5 + 0x4C200000, // 000A LDNIL R8 + 0x201C0E08, // 000B NE R7 R7 R8 + 0x781E0007, // 000C JMPF R7 #0015 + 0x8C1C0706, // 000D GETMET R7 R3 K6 + 0x88240907, // 000E GETMBR R9 R4 K7 + 0x60280009, // 000F GETGBL R10 G9 + 0x882C0105, // 0010 GETMBR R11 R0 K5 + 0x7C280200, // 0011 CALL R10 1 + 0x7C1C0600, // 0012 CALL R7 3 + 0x80040E00, // 0013 RET 1 R7 0x70020004, // 0014 JMP #001A - 0x8C180706, // 0015 GETMET R6 R3 K6 - 0x88200708, // 0016 GETMBR R8 R3 K8 - 0x4C240000, // 0017 LDNIL R9 - 0x7C180600, // 0018 CALL R6 3 - 0x80040C00, // 0019 RET 1 R6 + 0x8C1C0706, // 0015 GETMET R7 R3 K6 + 0x88240908, // 0016 GETMBR R9 R4 K8 + 0x4C280000, // 0017 LDNIL R10 + 0x7C1C0600, // 0018 CALL R7 3 + 0x80040E00, // 0019 RET 1 R7 0x70020020, // 001A JMP #003C - 0x1C180B09, // 001B EQ R6 R5 K9 - 0x781A0005, // 001C JMPF R6 #0023 - 0x8C180706, // 001D GETMET R6 R3 K6 - 0x88200707, // 001E GETMBR R8 R3 K7 - 0x542601F3, // 001F LDINT R9 500 - 0x7C180600, // 0020 CALL R6 3 - 0x80040C00, // 0021 RET 1 R6 + 0x1C1C0D09, // 001B EQ R7 R6 K9 + 0x781E0005, // 001C JMPF R7 #0023 + 0x8C1C0706, // 001D GETMET R7 R3 K6 + 0x88240907, // 001E GETMBR R9 R4 K7 + 0x542A01F3, // 001F LDINT R10 500 + 0x7C1C0600, // 0020 CALL R7 3 + 0x80040E00, // 0021 RET 1 R7 0x70020018, // 0022 JMP #003C - 0x1C180B0A, // 0023 EQ R6 R5 K10 - 0x781A0005, // 0024 JMPF R6 #002B - 0x8C180706, // 0025 GETMET R6 R3 K6 - 0x88200707, // 0026 GETMBR R8 R3 K7 - 0x5426270F, // 0027 LDINT R9 10000 - 0x7C180600, // 0028 CALL R6 3 - 0x80040C00, // 0029 RET 1 R6 + 0x1C1C0D0A, // 0023 EQ R7 R6 K10 + 0x781E0005, // 0024 JMPF R7 #002B + 0x8C1C0706, // 0025 GETMET R7 R3 K6 + 0x88240907, // 0026 GETMBR R9 R4 K7 + 0x542A270F, // 0027 LDINT R10 10000 + 0x7C1C0600, // 0028 CALL R7 3 + 0x80040E00, // 0029 RET 1 R7 0x70020010, // 002A JMP #003C - 0x541AFFFB, // 002B LDINT R6 65532 - 0x1C180A06, // 002C EQ R6 R5 R6 - 0x781A0005, // 002D JMPF R6 #0034 - 0x8C180706, // 002E GETMET R6 R3 K6 - 0x8820070B, // 002F GETMBR R8 R3 K11 - 0x58240004, // 0030 LDCONST R9 K4 - 0x7C180600, // 0031 CALL R6 3 - 0x80040C00, // 0032 RET 1 R6 + 0x541EFFFB, // 002B LDINT R7 65532 + 0x1C1C0C07, // 002C EQ R7 R6 R7 + 0x781E0005, // 002D JMPF R7 #0034 + 0x8C1C0706, // 002E GETMET R7 R3 K6 + 0x8824090B, // 002F GETMBR R9 R4 K11 + 0x58280004, // 0030 LDCONST R10 K4 + 0x7C1C0600, // 0031 CALL R7 3 + 0x80040E00, // 0032 RET 1 R7 0x70020007, // 0033 JMP #003C - 0x541AFFFC, // 0034 LDINT R6 65533 - 0x1C180A06, // 0035 EQ R6 R5 R6 - 0x781A0004, // 0036 JMPF R6 #003C - 0x8C180706, // 0037 GETMET R6 R3 K6 - 0x8820070B, // 0038 GETMBR R8 R3 K11 - 0x5824000C, // 0039 LDCONST R9 K12 - 0x7C180600, // 003A CALL R6 3 - 0x80040C00, // 003B RET 1 R6 - 0x70020007, // 003C JMP #0045 - 0x60180003, // 003D GETGBL R6 G3 - 0x5C1C0000, // 003E MOVE R7 R0 - 0x7C180200, // 003F CALL R6 1 - 0x8C180D0D, // 0040 GETMET R6 R6 K13 - 0x5C200200, // 0041 MOVE R8 R1 - 0x5C240400, // 0042 MOVE R9 R2 - 0x7C180600, // 0043 CALL R6 3 - 0x80040C00, // 0044 RET 1 R6 - 0x80000000, // 0045 RET 0 + 0x541EFFFC, // 0034 LDINT R7 65533 + 0x1C1C0C07, // 0035 EQ R7 R6 R7 + 0x781E0004, // 0036 JMPF R7 #003C + 0x8C1C0706, // 0037 GETMET R7 R3 K6 + 0x8824090B, // 0038 GETMBR R9 R4 K11 + 0x5828000C, // 0039 LDCONST R10 K12 + 0x7C1C0600, // 003A CALL R7 3 + 0x80040E00, // 003B RET 1 R7 + 0x70020008, // 003C JMP #0046 + 0x601C0003, // 003D GETGBL R7 G3 + 0x5C200000, // 003E MOVE R8 R0 + 0x7C1C0200, // 003F CALL R7 1 + 0x8C1C0F0D, // 0040 GETMET R7 R7 K13 + 0x5C240200, // 0041 MOVE R9 R1 + 0x5C280400, // 0042 MOVE R10 R2 + 0x5C2C0600, // 0043 MOVE R11 R3 + 0x7C1C0800, // 0044 CALL R7 4 + 0x80040E00, // 0045 RET 1 R7 + 0x80000000, // 0046 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Illuminance.h index 01b62792a11c..6da510376dc6 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Illuminance.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Illuminance.h @@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Sensor_Illuminance; ********************************************************************/ be_local_closure(Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */ be_nested_proto( - 11, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -26,7 +26,7 @@ be_local_closure(Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(U2), /* K8 */ be_nested_str_weak(NULL), /* K9 */ be_const_int(1), @@ -37,77 +37,78 @@ be_local_closure(Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[70]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A03FF, // 0004 LDINT R6 1024 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0035, // 0006 JMPF R6 #003D - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A0011, // 0008 JMPF R6 #001B - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x4C1C0000, // 000A LDNIL R7 - 0x20180C07, // 000B NE R6 R6 R7 - 0x781A0007, // 000C JMPF R6 #0015 - 0x8C180706, // 000D GETMET R6 R3 K6 - 0x88200707, // 000E GETMBR R8 R3 K7 - 0x60240009, // 000F GETGBL R9 G9 - 0x88280105, // 0010 GETMBR R10 R0 K5 - 0x7C240200, // 0011 CALL R9 1 - 0x7C180600, // 0012 CALL R6 3 - 0x80040C00, // 0013 RET 1 R6 + ( &(const binstruction[71]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E03FF, // 0004 LDINT R7 1024 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0035, // 0006 JMPF R7 #003D + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E0011, // 0008 JMPF R7 #001B + 0x881C0105, // 0009 GETMBR R7 R0 K5 + 0x4C200000, // 000A LDNIL R8 + 0x201C0E08, // 000B NE R7 R7 R8 + 0x781E0007, // 000C JMPF R7 #0015 + 0x8C1C0706, // 000D GETMET R7 R3 K6 + 0x88240907, // 000E GETMBR R9 R4 K7 + 0x60280009, // 000F GETGBL R10 G9 + 0x882C0105, // 0010 GETMBR R11 R0 K5 + 0x7C280200, // 0011 CALL R10 1 + 0x7C1C0600, // 0012 CALL R7 3 + 0x80040E00, // 0013 RET 1 R7 0x70020004, // 0014 JMP #001A - 0x8C180706, // 0015 GETMET R6 R3 K6 - 0x88200708, // 0016 GETMBR R8 R3 K8 - 0x4C240000, // 0017 LDNIL R9 - 0x7C180600, // 0018 CALL R6 3 - 0x80040C00, // 0019 RET 1 R6 + 0x8C1C0706, // 0015 GETMET R7 R3 K6 + 0x88240908, // 0016 GETMBR R9 R4 K8 + 0x4C280000, // 0017 LDNIL R10 + 0x7C1C0600, // 0018 CALL R7 3 + 0x80040E00, // 0019 RET 1 R7 0x70020020, // 001A JMP #003C - 0x1C180B09, // 001B EQ R6 R5 K9 - 0x781A0005, // 001C JMPF R6 #0023 - 0x8C180706, // 001D GETMET R6 R3 K6 - 0x88200707, // 001E GETMBR R8 R3 K7 - 0x58240009, // 001F LDCONST R9 K9 - 0x7C180600, // 0020 CALL R6 3 - 0x80040C00, // 0021 RET 1 R6 + 0x1C1C0D09, // 001B EQ R7 R6 K9 + 0x781E0005, // 001C JMPF R7 #0023 + 0x8C1C0706, // 001D GETMET R7 R3 K6 + 0x88240907, // 001E GETMBR R9 R4 K7 + 0x58280009, // 001F LDCONST R10 K9 + 0x7C1C0600, // 0020 CALL R7 3 + 0x80040E00, // 0021 RET 1 R7 0x70020018, // 0022 JMP #003C - 0x1C180B0A, // 0023 EQ R6 R5 K10 - 0x781A0005, // 0024 JMPF R6 #002B - 0x8C180706, // 0025 GETMET R6 R3 K6 - 0x88200707, // 0026 GETMBR R8 R3 K7 - 0x5426FFFD, // 0027 LDINT R9 65534 - 0x7C180600, // 0028 CALL R6 3 - 0x80040C00, // 0029 RET 1 R6 + 0x1C1C0D0A, // 0023 EQ R7 R6 K10 + 0x781E0005, // 0024 JMPF R7 #002B + 0x8C1C0706, // 0025 GETMET R7 R3 K6 + 0x88240907, // 0026 GETMBR R9 R4 K7 + 0x542AFFFD, // 0027 LDINT R10 65534 + 0x7C1C0600, // 0028 CALL R7 3 + 0x80040E00, // 0029 RET 1 R7 0x70020010, // 002A JMP #003C - 0x541AFFFB, // 002B LDINT R6 65532 - 0x1C180A06, // 002C EQ R6 R5 R6 - 0x781A0005, // 002D JMPF R6 #0034 - 0x8C180706, // 002E GETMET R6 R3 K6 - 0x8820070B, // 002F GETMBR R8 R3 K11 - 0x58240004, // 0030 LDCONST R9 K4 - 0x7C180600, // 0031 CALL R6 3 - 0x80040C00, // 0032 RET 1 R6 + 0x541EFFFB, // 002B LDINT R7 65532 + 0x1C1C0C07, // 002C EQ R7 R6 R7 + 0x781E0005, // 002D JMPF R7 #0034 + 0x8C1C0706, // 002E GETMET R7 R3 K6 + 0x8824090B, // 002F GETMBR R9 R4 K11 + 0x58280004, // 0030 LDCONST R10 K4 + 0x7C1C0600, // 0031 CALL R7 3 + 0x80040E00, // 0032 RET 1 R7 0x70020007, // 0033 JMP #003C - 0x541AFFFC, // 0034 LDINT R6 65533 - 0x1C180A06, // 0035 EQ R6 R5 R6 - 0x781A0004, // 0036 JMPF R6 #003C - 0x8C180706, // 0037 GETMET R6 R3 K6 - 0x8820070B, // 0038 GETMBR R8 R3 K11 - 0x5824000C, // 0039 LDCONST R9 K12 - 0x7C180600, // 003A CALL R6 3 - 0x80040C00, // 003B RET 1 R6 - 0x70020007, // 003C JMP #0045 - 0x60180003, // 003D GETGBL R6 G3 - 0x5C1C0000, // 003E MOVE R7 R0 - 0x7C180200, // 003F CALL R6 1 - 0x8C180D0D, // 0040 GETMET R6 R6 K13 - 0x5C200200, // 0041 MOVE R8 R1 - 0x5C240400, // 0042 MOVE R9 R2 - 0x7C180600, // 0043 CALL R6 3 - 0x80040C00, // 0044 RET 1 R6 - 0x80000000, // 0045 RET 0 + 0x541EFFFC, // 0034 LDINT R7 65533 + 0x1C1C0C07, // 0035 EQ R7 R6 R7 + 0x781E0004, // 0036 JMPF R7 #003C + 0x8C1C0706, // 0037 GETMET R7 R3 K6 + 0x8824090B, // 0038 GETMBR R9 R4 K11 + 0x5828000C, // 0039 LDCONST R10 K12 + 0x7C1C0600, // 003A CALL R7 3 + 0x80040E00, // 003B RET 1 R7 + 0x70020008, // 003C JMP #0046 + 0x601C0003, // 003D GETGBL R7 G3 + 0x5C200000, // 003E MOVE R8 R0 + 0x7C1C0200, // 003F CALL R7 1 + 0x8C1C0F0D, // 0040 GETMET R7 R7 K13 + 0x5C240200, // 0041 MOVE R9 R1 + 0x5C280400, // 0042 MOVE R10 R2 + 0x5C2C0600, // 0043 MOVE R11 R3 + 0x7C1C0800, // 0044 CALL R7 4 + 0x80040E00, // 0045 RET 1 R7 + 0x80000000, // 0046 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Occupancy.h index 82b3c1363058..18a99659f050 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Occupancy.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Occupancy.h @@ -79,8 +79,8 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_parse_configuration, /* name * ********************************************************************/ be_local_closure(Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -94,7 +94,7 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(shadow_occupancy), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(U1), /* K8 */ be_nested_str_weak(NULL), /* K9 */ be_const_int(1), @@ -105,75 +105,76 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0405, // 0004 LDINT R6 1030 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0033, // 0006 JMPF R6 #003B - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A000F, // 0008 JMPF R6 #0019 - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x4C1C0000, // 000A LDNIL R7 - 0x20180C07, // 000B NE R6 R6 R7 - 0x781A0005, // 000C JMPF R6 #0013 - 0x8C180706, // 000D GETMET R6 R3 K6 - 0x88200707, // 000E GETMBR R8 R3 K7 - 0x88240105, // 000F GETMBR R9 R0 K5 - 0x7C180600, // 0010 CALL R6 3 - 0x80040C00, // 0011 RET 1 R6 + ( &(const binstruction[69]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0405, // 0004 LDINT R7 1030 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0033, // 0006 JMPF R7 #003B + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E000F, // 0008 JMPF R7 #0019 + 0x881C0105, // 0009 GETMBR R7 R0 K5 + 0x4C200000, // 000A LDNIL R8 + 0x201C0E08, // 000B NE R7 R7 R8 + 0x781E0005, // 000C JMPF R7 #0013 + 0x8C1C0706, // 000D GETMET R7 R3 K6 + 0x88240907, // 000E GETMBR R9 R4 K7 + 0x88280105, // 000F GETMBR R10 R0 K5 + 0x7C1C0600, // 0010 CALL R7 3 + 0x80040E00, // 0011 RET 1 R7 0x70020004, // 0012 JMP #0018 - 0x8C180706, // 0013 GETMET R6 R3 K6 - 0x88200708, // 0014 GETMBR R8 R3 K8 - 0x4C240000, // 0015 LDNIL R9 - 0x7C180600, // 0016 CALL R6 3 - 0x80040C00, // 0017 RET 1 R6 + 0x8C1C0706, // 0013 GETMET R7 R3 K6 + 0x88240908, // 0014 GETMBR R9 R4 K8 + 0x4C280000, // 0015 LDNIL R10 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 0x70020020, // 0018 JMP #003A - 0x1C180B09, // 0019 EQ R6 R5 K9 - 0x781A0005, // 001A JMPF R6 #0021 - 0x8C180706, // 001B GETMET R6 R3 K6 - 0x88200707, // 001C GETMBR R8 R3 K7 - 0x5824000A, // 001D LDCONST R9 K10 - 0x7C180600, // 001E CALL R6 3 - 0x80040C00, // 001F RET 1 R6 + 0x1C1C0D09, // 0019 EQ R7 R6 K9 + 0x781E0005, // 001A JMPF R7 #0021 + 0x8C1C0706, // 001B GETMET R7 R3 K6 + 0x88240907, // 001C GETMBR R9 R4 K7 + 0x5828000A, // 001D LDCONST R10 K10 + 0x7C1C0600, // 001E CALL R7 3 + 0x80040E00, // 001F RET 1 R7 0x70020018, // 0020 JMP #003A - 0x1C180B0B, // 0021 EQ R6 R5 K11 - 0x781A0005, // 0022 JMPF R6 #0029 - 0x8C180706, // 0023 GETMET R6 R3 K6 - 0x88200707, // 0024 GETMBR R8 R3 K7 - 0x58240004, // 0025 LDCONST R9 K4 - 0x7C180600, // 0026 CALL R6 3 - 0x80040C00, // 0027 RET 1 R6 + 0x1C1C0D0B, // 0021 EQ R7 R6 K11 + 0x781E0005, // 0022 JMPF R7 #0029 + 0x8C1C0706, // 0023 GETMET R7 R3 K6 + 0x88240907, // 0024 GETMBR R9 R4 K7 + 0x58280004, // 0025 LDCONST R10 K4 + 0x7C1C0600, // 0026 CALL R7 3 + 0x80040E00, // 0027 RET 1 R7 0x70020010, // 0028 JMP #003A - 0x541AFFFB, // 0029 LDINT R6 65532 - 0x1C180A06, // 002A EQ R6 R5 R6 - 0x781A0005, // 002B JMPF R6 #0032 - 0x8C180706, // 002C GETMET R6 R3 K6 - 0x8820070C, // 002D GETMBR R8 R3 K12 - 0x58240004, // 002E LDCONST R9 K4 - 0x7C180600, // 002F CALL R6 3 - 0x80040C00, // 0030 RET 1 R6 + 0x541EFFFB, // 0029 LDINT R7 65532 + 0x1C1C0C07, // 002A EQ R7 R6 R7 + 0x781E0005, // 002B JMPF R7 #0032 + 0x8C1C0706, // 002C GETMET R7 R3 K6 + 0x8824090C, // 002D GETMBR R9 R4 K12 + 0x58280004, // 002E LDCONST R10 K4 + 0x7C1C0600, // 002F CALL R7 3 + 0x80040E00, // 0030 RET 1 R7 0x70020007, // 0031 JMP #003A - 0x541AFFFC, // 0032 LDINT R6 65533 - 0x1C180A06, // 0033 EQ R6 R5 R6 - 0x781A0004, // 0034 JMPF R6 #003A - 0x8C180706, // 0035 GETMET R6 R3 K6 - 0x8820070C, // 0036 GETMBR R8 R3 K12 - 0x5824000A, // 0037 LDCONST R9 K10 - 0x7C180600, // 0038 CALL R6 3 - 0x80040C00, // 0039 RET 1 R6 - 0x70020007, // 003A JMP #0043 - 0x60180003, // 003B GETGBL R6 G3 - 0x5C1C0000, // 003C MOVE R7 R0 - 0x7C180200, // 003D CALL R6 1 - 0x8C180D0D, // 003E GETMET R6 R6 K13 - 0x5C200200, // 003F MOVE R8 R1 - 0x5C240400, // 0040 MOVE R9 R2 - 0x7C180600, // 0041 CALL R6 3 - 0x80040C00, // 0042 RET 1 R6 - 0x80000000, // 0043 RET 0 + 0x541EFFFC, // 0032 LDINT R7 65533 + 0x1C1C0C07, // 0033 EQ R7 R6 R7 + 0x781E0004, // 0034 JMPF R7 #003A + 0x8C1C0706, // 0035 GETMET R7 R3 K6 + 0x8824090C, // 0036 GETMBR R9 R4 K12 + 0x5828000A, // 0037 LDCONST R10 K10 + 0x7C1C0600, // 0038 CALL R7 3 + 0x80040E00, // 0039 RET 1 R7 + 0x70020008, // 003A JMP #0044 + 0x601C0003, // 003B GETGBL R7 G3 + 0x5C200000, // 003C MOVE R8 R0 + 0x7C1C0200, // 003D CALL R7 1 + 0x8C1C0F0D, // 003E GETMET R7 R7 K13 + 0x5C240200, // 003F MOVE R9 R1 + 0x5C280400, // 0040 MOVE R10 R2 + 0x5C2C0600, // 0041 MOVE R11 R3 + 0x7C1C0800, // 0042 CALL R7 4 + 0x80040E00, // 0043 RET 1 R7 + 0x80000000, // 0044 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_OnOff.h index c5aa42dbbd71..5e5c6a0548ad 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_OnOff.h @@ -79,8 +79,8 @@ be_local_closure(Matter_Plugin_Sensor_OnOff_parse_configuration, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_Sensor_OnOff_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -94,7 +94,7 @@ be_local_closure(Matter_Plugin_Sensor_OnOff_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_nested_str_weak(update_shadow_lazy), /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(BOOL), /* K8 */ be_nested_str_weak(shadow_onoff), /* K9 */ be_nested_str_weak(U4), @@ -102,51 +102,52 @@ be_local_closure(Matter_Plugin_Sensor_OnOff_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0005, // 0004 LDINT R6 6 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A001B, // 0006 JMPF R6 #0023 - 0x8C180104, // 0007 GETMET R6 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x1C180B05, // 0009 EQ R6 R5 K5 - 0x781A0005, // 000A JMPF R6 #0011 - 0x8C180706, // 000B GETMET R6 R3 K6 - 0x88200707, // 000C GETMBR R8 R3 K7 - 0x88240108, // 000D GETMBR R9 R0 K8 - 0x7C180600, // 000E CALL R6 3 - 0x80040C00, // 000F RET 1 R6 + ( &(const binstruction[45]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0005, // 0004 LDINT R7 6 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E001B, // 0006 JMPF R7 #0023 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E0005, // 000A JMPF R7 #0011 + 0x8C1C0706, // 000B GETMET R7 R3 K6 + 0x88240907, // 000C GETMBR R9 R4 K7 + 0x88280108, // 000D GETMBR R10 R0 K8 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 0x70020010, // 0010 JMP #0022 - 0x541AFFFB, // 0011 LDINT R6 65532 - 0x1C180A06, // 0012 EQ R6 R5 R6 - 0x781A0005, // 0013 JMPF R6 #001A - 0x8C180706, // 0014 GETMET R6 R3 K6 - 0x88200709, // 0015 GETMBR R8 R3 K9 - 0x58240005, // 0016 LDCONST R9 K5 - 0x7C180600, // 0017 CALL R6 3 - 0x80040C00, // 0018 RET 1 R6 + 0x541EFFFB, // 0011 LDINT R7 65532 + 0x1C1C0C07, // 0012 EQ R7 R6 R7 + 0x781E0005, // 0013 JMPF R7 #001A + 0x8C1C0706, // 0014 GETMET R7 R3 K6 + 0x88240909, // 0015 GETMBR R9 R4 K9 + 0x58280005, // 0016 LDCONST R10 K5 + 0x7C1C0600, // 0017 CALL R7 3 + 0x80040E00, // 0018 RET 1 R7 0x70020007, // 0019 JMP #0022 - 0x541AFFFC, // 001A LDINT R6 65533 - 0x1C180A06, // 001B EQ R6 R5 R6 - 0x781A0004, // 001C JMPF R6 #0022 - 0x8C180706, // 001D GETMET R6 R3 K6 - 0x88200709, // 001E GETMBR R8 R3 K9 - 0x54260003, // 001F LDINT R9 4 - 0x7C180600, // 0020 CALL R6 3 - 0x80040C00, // 0021 RET 1 R6 - 0x70020007, // 0022 JMP #002B - 0x60180003, // 0023 GETGBL R6 G3 - 0x5C1C0000, // 0024 MOVE R7 R0 - 0x7C180200, // 0025 CALL R6 1 - 0x8C180D0A, // 0026 GETMET R6 R6 K10 - 0x5C200200, // 0027 MOVE R8 R1 - 0x5C240400, // 0028 MOVE R9 R2 - 0x7C180600, // 0029 CALL R6 3 - 0x80040C00, // 002A RET 1 R6 - 0x80000000, // 002B RET 0 + 0x541EFFFC, // 001A LDINT R7 65533 + 0x1C1C0C07, // 001B EQ R7 R6 R7 + 0x781E0004, // 001C JMPF R7 #0022 + 0x8C1C0706, // 001D GETMET R7 R3 K6 + 0x88240909, // 001E GETMBR R9 R4 K9 + 0x542A0003, // 001F LDINT R10 4 + 0x7C1C0600, // 0020 CALL R7 3 + 0x80040E00, // 0021 RET 1 R7 + 0x70020008, // 0022 JMP #002C + 0x601C0003, // 0023 GETGBL R7 G3 + 0x5C200000, // 0024 MOVE R8 R0 + 0x7C1C0200, // 0025 CALL R7 1 + 0x8C1C0F0A, // 0026 GETMET R7 R7 K10 + 0x5C240200, // 0027 MOVE R9 R1 + 0x5C280400, // 0028 MOVE R10 R2 + 0x5C2C0600, // 0029 MOVE R11 R3 + 0x7C1C0800, // 002A CALL R7 4 + 0x80040E00, // 002B RET 1 R7 + 0x80000000, // 002C RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Pressure.h index d3761e562b54..02d98c5fcbd7 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Pressure.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Pressure.h @@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Sensor_Pressure; ********************************************************************/ be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */ be_nested_proto( - 11, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -26,7 +26,7 @@ be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(I2), /* K8 */ be_nested_str_weak(NULL), /* K9 */ be_const_int(1), @@ -37,77 +37,78 @@ be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[70]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0402, // 0004 LDINT R6 1027 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0035, // 0006 JMPF R6 #003D - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A0011, // 0008 JMPF R6 #001B - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x4C1C0000, // 000A LDNIL R7 - 0x20180C07, // 000B NE R6 R6 R7 - 0x781A0007, // 000C JMPF R6 #0015 - 0x8C180706, // 000D GETMET R6 R3 K6 - 0x88200707, // 000E GETMBR R8 R3 K7 - 0x60240009, // 000F GETGBL R9 G9 - 0x88280105, // 0010 GETMBR R10 R0 K5 - 0x7C240200, // 0011 CALL R9 1 - 0x7C180600, // 0012 CALL R6 3 - 0x80040C00, // 0013 RET 1 R6 + ( &(const binstruction[71]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0402, // 0004 LDINT R7 1027 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0035, // 0006 JMPF R7 #003D + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E0011, // 0008 JMPF R7 #001B + 0x881C0105, // 0009 GETMBR R7 R0 K5 + 0x4C200000, // 000A LDNIL R8 + 0x201C0E08, // 000B NE R7 R7 R8 + 0x781E0007, // 000C JMPF R7 #0015 + 0x8C1C0706, // 000D GETMET R7 R3 K6 + 0x88240907, // 000E GETMBR R9 R4 K7 + 0x60280009, // 000F GETGBL R10 G9 + 0x882C0105, // 0010 GETMBR R11 R0 K5 + 0x7C280200, // 0011 CALL R10 1 + 0x7C1C0600, // 0012 CALL R7 3 + 0x80040E00, // 0013 RET 1 R7 0x70020004, // 0014 JMP #001A - 0x8C180706, // 0015 GETMET R6 R3 K6 - 0x88200708, // 0016 GETMBR R8 R3 K8 - 0x4C240000, // 0017 LDNIL R9 - 0x7C180600, // 0018 CALL R6 3 - 0x80040C00, // 0019 RET 1 R6 + 0x8C1C0706, // 0015 GETMET R7 R3 K6 + 0x88240908, // 0016 GETMBR R9 R4 K8 + 0x4C280000, // 0017 LDNIL R10 + 0x7C1C0600, // 0018 CALL R7 3 + 0x80040E00, // 0019 RET 1 R7 0x70020020, // 001A JMP #003C - 0x1C180B09, // 001B EQ R6 R5 K9 - 0x781A0005, // 001C JMPF R6 #0023 - 0x8C180706, // 001D GETMET R6 R3 K6 - 0x88200707, // 001E GETMBR R8 R3 K7 - 0x542601F3, // 001F LDINT R9 500 - 0x7C180600, // 0020 CALL R6 3 - 0x80040C00, // 0021 RET 1 R6 + 0x1C1C0D09, // 001B EQ R7 R6 K9 + 0x781E0005, // 001C JMPF R7 #0023 + 0x8C1C0706, // 001D GETMET R7 R3 K6 + 0x88240907, // 001E GETMBR R9 R4 K7 + 0x542A01F3, // 001F LDINT R10 500 + 0x7C1C0600, // 0020 CALL R7 3 + 0x80040E00, // 0021 RET 1 R7 0x70020018, // 0022 JMP #003C - 0x1C180B0A, // 0023 EQ R6 R5 K10 - 0x781A0005, // 0024 JMPF R6 #002B - 0x8C180706, // 0025 GETMET R6 R3 K6 - 0x88200707, // 0026 GETMBR R8 R3 K7 - 0x542605DB, // 0027 LDINT R9 1500 - 0x7C180600, // 0028 CALL R6 3 - 0x80040C00, // 0029 RET 1 R6 + 0x1C1C0D0A, // 0023 EQ R7 R6 K10 + 0x781E0005, // 0024 JMPF R7 #002B + 0x8C1C0706, // 0025 GETMET R7 R3 K6 + 0x88240907, // 0026 GETMBR R9 R4 K7 + 0x542A05DB, // 0027 LDINT R10 1500 + 0x7C1C0600, // 0028 CALL R7 3 + 0x80040E00, // 0029 RET 1 R7 0x70020010, // 002A JMP #003C - 0x541AFFFB, // 002B LDINT R6 65532 - 0x1C180A06, // 002C EQ R6 R5 R6 - 0x781A0005, // 002D JMPF R6 #0034 - 0x8C180706, // 002E GETMET R6 R3 K6 - 0x8820070B, // 002F GETMBR R8 R3 K11 - 0x58240004, // 0030 LDCONST R9 K4 - 0x7C180600, // 0031 CALL R6 3 - 0x80040C00, // 0032 RET 1 R6 + 0x541EFFFB, // 002B LDINT R7 65532 + 0x1C1C0C07, // 002C EQ R7 R6 R7 + 0x781E0005, // 002D JMPF R7 #0034 + 0x8C1C0706, // 002E GETMET R7 R3 K6 + 0x8824090B, // 002F GETMBR R9 R4 K11 + 0x58280004, // 0030 LDCONST R10 K4 + 0x7C1C0600, // 0031 CALL R7 3 + 0x80040E00, // 0032 RET 1 R7 0x70020007, // 0033 JMP #003C - 0x541AFFFC, // 0034 LDINT R6 65533 - 0x1C180A06, // 0035 EQ R6 R5 R6 - 0x781A0004, // 0036 JMPF R6 #003C - 0x8C180706, // 0037 GETMET R6 R3 K6 - 0x8820070B, // 0038 GETMBR R8 R3 K11 - 0x5824000C, // 0039 LDCONST R9 K12 - 0x7C180600, // 003A CALL R6 3 - 0x80040C00, // 003B RET 1 R6 - 0x70020007, // 003C JMP #0045 - 0x60180003, // 003D GETGBL R6 G3 - 0x5C1C0000, // 003E MOVE R7 R0 - 0x7C180200, // 003F CALL R6 1 - 0x8C180D0D, // 0040 GETMET R6 R6 K13 - 0x5C200200, // 0041 MOVE R8 R1 - 0x5C240400, // 0042 MOVE R9 R2 - 0x7C180600, // 0043 CALL R6 3 - 0x80040C00, // 0044 RET 1 R6 - 0x80000000, // 0045 RET 0 + 0x541EFFFC, // 0034 LDINT R7 65533 + 0x1C1C0C07, // 0035 EQ R7 R6 R7 + 0x781E0004, // 0036 JMPF R7 #003C + 0x8C1C0706, // 0037 GETMET R7 R3 K6 + 0x8824090B, // 0038 GETMBR R9 R4 K11 + 0x5828000C, // 0039 LDCONST R10 K12 + 0x7C1C0600, // 003A CALL R7 3 + 0x80040E00, // 003B RET 1 R7 + 0x70020008, // 003C JMP #0046 + 0x601C0003, // 003D GETGBL R7 G3 + 0x5C200000, // 003E MOVE R8 R0 + 0x7C1C0200, // 003F CALL R7 1 + 0x8C1C0F0D, // 0040 GETMET R7 R7 K13 + 0x5C240200, // 0041 MOVE R9 R1 + 0x5C280400, // 0042 MOVE R10 R2 + 0x5C2C0600, // 0043 MOVE R11 R3 + 0x7C1C0800, // 0044 CALL R7 4 + 0x80040E00, // 0045 RET 1 R7 + 0x80000000, // 0046 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Temp.h index a1deb8b75975..4213f69d30c6 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Temp.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Temp.h @@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Sensor_Temp; ********************************************************************/ be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -26,7 +26,7 @@ be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */ /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(create_TLV), + /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(I2), /* K8 */ be_nested_str_weak(NULL), /* K9 */ be_const_int(1), @@ -36,75 +36,76 @@ be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0401, // 0004 LDINT R6 1026 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0033, // 0006 JMPF R6 #003B - 0x1C180B04, // 0007 EQ R6 R5 K4 - 0x781A000F, // 0008 JMPF R6 #0019 - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x4C1C0000, // 000A LDNIL R7 - 0x20180C07, // 000B NE R6 R6 R7 - 0x781A0005, // 000C JMPF R6 #0013 - 0x8C180706, // 000D GETMET R6 R3 K6 - 0x88200707, // 000E GETMBR R8 R3 K7 - 0x88240105, // 000F GETMBR R9 R0 K5 - 0x7C180600, // 0010 CALL R6 3 - 0x80040C00, // 0011 RET 1 R6 + ( &(const binstruction[69]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0401, // 0004 LDINT R7 1026 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0033, // 0006 JMPF R7 #003B + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E000F, // 0008 JMPF R7 #0019 + 0x881C0105, // 0009 GETMBR R7 R0 K5 + 0x4C200000, // 000A LDNIL R8 + 0x201C0E08, // 000B NE R7 R7 R8 + 0x781E0005, // 000C JMPF R7 #0013 + 0x8C1C0706, // 000D GETMET R7 R3 K6 + 0x88240907, // 000E GETMBR R9 R4 K7 + 0x88280105, // 000F GETMBR R10 R0 K5 + 0x7C1C0600, // 0010 CALL R7 3 + 0x80040E00, // 0011 RET 1 R7 0x70020004, // 0012 JMP #0018 - 0x8C180706, // 0013 GETMET R6 R3 K6 - 0x88200708, // 0014 GETMBR R8 R3 K8 - 0x4C240000, // 0015 LDNIL R9 - 0x7C180600, // 0016 CALL R6 3 - 0x80040C00, // 0017 RET 1 R6 + 0x8C1C0706, // 0013 GETMET R7 R3 K6 + 0x88240908, // 0014 GETMBR R9 R4 K8 + 0x4C280000, // 0015 LDNIL R10 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 0x70020020, // 0018 JMP #003A - 0x1C180B09, // 0019 EQ R6 R5 K9 - 0x781A0005, // 001A JMPF R6 #0021 - 0x8C180706, // 001B GETMET R6 R3 K6 - 0x88200707, // 001C GETMBR R8 R3 K7 - 0x5425EC77, // 001D LDINT R9 -5000 - 0x7C180600, // 001E CALL R6 3 - 0x80040C00, // 001F RET 1 R6 + 0x1C1C0D09, // 0019 EQ R7 R6 K9 + 0x781E0005, // 001A JMPF R7 #0021 + 0x8C1C0706, // 001B GETMET R7 R3 K6 + 0x88240907, // 001C GETMBR R9 R4 K7 + 0x5429EC77, // 001D LDINT R10 -5000 + 0x7C1C0600, // 001E CALL R7 3 + 0x80040E00, // 001F RET 1 R7 0x70020018, // 0020 JMP #003A - 0x1C180B0A, // 0021 EQ R6 R5 K10 - 0x781A0005, // 0022 JMPF R6 #0029 - 0x8C180706, // 0023 GETMET R6 R3 K6 - 0x88200707, // 0024 GETMBR R8 R3 K7 - 0x54263A97, // 0025 LDINT R9 15000 - 0x7C180600, // 0026 CALL R6 3 - 0x80040C00, // 0027 RET 1 R6 + 0x1C1C0D0A, // 0021 EQ R7 R6 K10 + 0x781E0005, // 0022 JMPF R7 #0029 + 0x8C1C0706, // 0023 GETMET R7 R3 K6 + 0x88240907, // 0024 GETMBR R9 R4 K7 + 0x542A3A97, // 0025 LDINT R10 15000 + 0x7C1C0600, // 0026 CALL R7 3 + 0x80040E00, // 0027 RET 1 R7 0x70020010, // 0028 JMP #003A - 0x541AFFFB, // 0029 LDINT R6 65532 - 0x1C180A06, // 002A EQ R6 R5 R6 - 0x781A0005, // 002B JMPF R6 #0032 - 0x8C180706, // 002C GETMET R6 R3 K6 - 0x8820070B, // 002D GETMBR R8 R3 K11 - 0x58240004, // 002E LDCONST R9 K4 - 0x7C180600, // 002F CALL R6 3 - 0x80040C00, // 0030 RET 1 R6 + 0x541EFFFB, // 0029 LDINT R7 65532 + 0x1C1C0C07, // 002A EQ R7 R6 R7 + 0x781E0005, // 002B JMPF R7 #0032 + 0x8C1C0706, // 002C GETMET R7 R3 K6 + 0x8824090B, // 002D GETMBR R9 R4 K11 + 0x58280004, // 002E LDCONST R10 K4 + 0x7C1C0600, // 002F CALL R7 3 + 0x80040E00, // 0030 RET 1 R7 0x70020007, // 0031 JMP #003A - 0x541AFFFC, // 0032 LDINT R6 65533 - 0x1C180A06, // 0033 EQ R6 R5 R6 - 0x781A0004, // 0034 JMPF R6 #003A - 0x8C180706, // 0035 GETMET R6 R3 K6 - 0x8820070B, // 0036 GETMBR R8 R3 K11 - 0x54260003, // 0037 LDINT R9 4 - 0x7C180600, // 0038 CALL R6 3 - 0x80040C00, // 0039 RET 1 R6 - 0x70020007, // 003A JMP #0043 - 0x60180003, // 003B GETGBL R6 G3 - 0x5C1C0000, // 003C MOVE R7 R0 - 0x7C180200, // 003D CALL R6 1 - 0x8C180D0C, // 003E GETMET R6 R6 K12 - 0x5C200200, // 003F MOVE R8 R1 - 0x5C240400, // 0040 MOVE R9 R2 - 0x7C180600, // 0041 CALL R6 3 - 0x80040C00, // 0042 RET 1 R6 - 0x80000000, // 0043 RET 0 + 0x541EFFFC, // 0032 LDINT R7 65533 + 0x1C1C0C07, // 0033 EQ R7 R6 R7 + 0x781E0004, // 0034 JMPF R7 #003A + 0x8C1C0706, // 0035 GETMET R7 R3 K6 + 0x8824090B, // 0036 GETMBR R9 R4 K11 + 0x542A0003, // 0037 LDINT R10 4 + 0x7C1C0600, // 0038 CALL R7 3 + 0x80040E00, // 0039 RET 1 R7 + 0x70020008, // 003A JMP #0044 + 0x601C0003, // 003B GETGBL R7 G3 + 0x5C200000, // 003C MOVE R8 R0 + 0x7C1C0200, // 003D CALL R7 1 + 0x8C1C0F0C, // 003E GETMET R7 R7 K12 + 0x5C240200, // 003F MOVE R9 R1 + 0x5C280400, // 0040 MOVE R10 R2 + 0x5C2C0600, // 0041 MOVE R11 R3 + 0x7C1C0800, // 0042 CALL R7 4 + 0x80040E00, // 0043 RET 1 R7 + 0x80000000, // 0044 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Shutter.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Shutter.h index 5a9d6576faef..f071d2f260d8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Shutter.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Shutter.h @@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Shutter; ********************************************************************/ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */ be_nested_proto( - 12, /* nstack */ - 3, /* argc */ + 13, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -27,7 +27,7 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */ /* K4 */ be_nested_str_weak(update_shadow_lazy), /* K5 */ be_nested_str_weak(update_inverted), /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(create_TLV), + /* K7 */ be_nested_str_weak(set), /* K8 */ be_nested_str_weak(U1), /* K9 */ be_nested_str_weak(U2), /* K10 */ be_const_int(1), @@ -41,158 +41,159 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[151]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x4C180000, // 0004 LDNIL R6 - 0x541E0101, // 0005 LDINT R7 258 - 0x1C1C0807, // 0006 EQ R7 R4 R7 - 0x781E0085, // 0007 JMPF R7 #008E - 0x8C1C0104, // 0008 GETMET R7 R0 K4 - 0x7C1C0200, // 0009 CALL R7 1 - 0x8C1C0105, // 000A GETMET R7 R0 K5 - 0x7C1C0200, // 000B CALL R7 1 - 0x1C1C0B06, // 000C EQ R7 R5 K6 - 0x781E0005, // 000D JMPF R7 #0014 - 0x8C1C0707, // 000E GETMET R7 R3 K7 - 0x88240708, // 000F GETMBR R9 R3 K8 - 0x542A00FE, // 0010 LDINT R10 255 - 0x7C1C0600, // 0011 CALL R7 3 - 0x80040E00, // 0012 RET 1 R7 + ( &(const binstruction[152]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x4C1C0000, // 0004 LDNIL R7 + 0x54220101, // 0005 LDINT R8 258 + 0x1C200A08, // 0006 EQ R8 R5 R8 + 0x78220085, // 0007 JMPF R8 #008E + 0x8C200104, // 0008 GETMET R8 R0 K4 + 0x7C200200, // 0009 CALL R8 1 + 0x8C200105, // 000A GETMET R8 R0 K5 + 0x7C200200, // 000B CALL R8 1 + 0x1C200D06, // 000C EQ R8 R6 K6 + 0x78220005, // 000D JMPF R8 #0014 + 0x8C200707, // 000E GETMET R8 R3 K7 + 0x88280908, // 000F GETMBR R10 R4 K8 + 0x542E00FE, // 0010 LDINT R11 255 + 0x7C200600, // 0011 CALL R8 3 + 0x80041000, // 0012 RET 1 R8 0x70020078, // 0013 JMP #008D - 0x541E0004, // 0014 LDINT R7 5 - 0x1C1C0A07, // 0015 EQ R7 R5 R7 - 0x781E0005, // 0016 JMPF R7 #001D - 0x8C1C0707, // 0017 GETMET R7 R3 K7 - 0x88240709, // 0018 GETMBR R9 R3 K9 - 0x58280006, // 0019 LDCONST R10 K6 - 0x7C1C0600, // 001A CALL R7 3 - 0x80040E00, // 001B RET 1 R7 + 0x54220004, // 0014 LDINT R8 5 + 0x1C200C08, // 0015 EQ R8 R6 R8 + 0x78220005, // 0016 JMPF R8 #001D + 0x8C200707, // 0017 GETMET R8 R3 K7 + 0x88280909, // 0018 GETMBR R10 R4 K9 + 0x582C0006, // 0019 LDCONST R11 K6 + 0x7C200600, // 001A CALL R8 3 + 0x80041000, // 001B RET 1 R8 0x7002006F, // 001C JMP #008D - 0x541E0006, // 001D LDINT R7 7 - 0x1C1C0A07, // 001E EQ R7 R5 R7 - 0x781E0006, // 001F JMPF R7 #0027 - 0x8C1C0707, // 0020 GETMET R7 R3 K7 - 0x88240708, // 0021 GETMBR R9 R3 K8 - 0x542A0007, // 0022 LDINT R10 8 - 0x002A140A, // 0023 ADD R10 K10 R10 - 0x7C1C0600, // 0024 CALL R7 3 - 0x80040E00, // 0025 RET 1 R7 + 0x54220006, // 001D LDINT R8 7 + 0x1C200C08, // 001E EQ R8 R6 R8 + 0x78220006, // 001F JMPF R8 #0027 + 0x8C200707, // 0020 GETMET R8 R3 K7 + 0x88280908, // 0021 GETMBR R10 R4 K8 + 0x542E0007, // 0022 LDINT R11 8 + 0x002E140B, // 0023 ADD R11 K10 R11 + 0x7C200600, // 0024 CALL R8 3 + 0x80041000, // 0025 RET 1 R8 0x70020065, // 0026 JMP #008D - 0x541E000C, // 0027 LDINT R7 13 - 0x1C1C0A07, // 0028 EQ R7 R5 R7 - 0x781E0005, // 0029 JMPF R7 #0030 - 0x8C1C0707, // 002A GETMET R7 R3 K7 - 0x88240708, // 002B GETMBR R9 R3 K8 - 0x542A00FE, // 002C LDINT R10 255 - 0x7C1C0600, // 002D CALL R7 3 - 0x80040E00, // 002E RET 1 R7 + 0x5422000C, // 0027 LDINT R8 13 + 0x1C200C08, // 0028 EQ R8 R6 R8 + 0x78220005, // 0029 JMPF R8 #0030 + 0x8C200707, // 002A GETMET R8 R3 K7 + 0x88280908, // 002B GETMBR R10 R4 K8 + 0x542E00FE, // 002C LDINT R11 255 + 0x7C200600, // 002D CALL R8 3 + 0x80041000, // 002E RET 1 R8 0x7002005C, // 002F JMP #008D - 0x541E000D, // 0030 LDINT R7 14 - 0x1C1C0A07, // 0031 EQ R7 R5 R7 - 0x781E0013, // 0032 JMPF R7 #0047 - 0x881C010B, // 0033 GETMBR R7 R0 K11 - 0x1C1C0F06, // 0034 EQ R7 R7 K6 - 0x781E0006, // 0035 JMPF R7 #003D - 0x541E0063, // 0036 LDINT R7 100 - 0x8820010C, // 0037 GETMBR R8 R0 K12 - 0x041C0E08, // 0038 SUB R7 R7 R8 - 0x54220063, // 0039 LDINT R8 100 - 0x081C0E08, // 003A MUL R7 R7 R8 - 0x5C180E00, // 003B MOVE R6 R7 + 0x5422000D, // 0030 LDINT R8 14 + 0x1C200C08, // 0031 EQ R8 R6 R8 + 0x78220013, // 0032 JMPF R8 #0047 + 0x8820010B, // 0033 GETMBR R8 R0 K11 + 0x1C201106, // 0034 EQ R8 R8 K6 + 0x78220006, // 0035 JMPF R8 #003D + 0x54220063, // 0036 LDINT R8 100 + 0x8824010C, // 0037 GETMBR R9 R0 K12 + 0x04201009, // 0038 SUB R8 R8 R9 + 0x54260063, // 0039 LDINT R9 100 + 0x08201009, // 003A MUL R8 R8 R9 + 0x5C1C1000, // 003B MOVE R7 R8 0x70020003, // 003C JMP #0041 - 0x881C010C, // 003D GETMBR R7 R0 K12 - 0x54220063, // 003E LDINT R8 100 - 0x081C0E08, // 003F MUL R7 R7 R8 - 0x5C180E00, // 0040 MOVE R6 R7 - 0x8C1C0707, // 0041 GETMET R7 R3 K7 - 0x88240709, // 0042 GETMBR R9 R3 K9 - 0x5C280C00, // 0043 MOVE R10 R6 - 0x7C1C0600, // 0044 CALL R7 3 - 0x80040E00, // 0045 RET 1 R7 + 0x8820010C, // 003D GETMBR R8 R0 K12 + 0x54260063, // 003E LDINT R9 100 + 0x08201009, // 003F MUL R8 R8 R9 + 0x5C1C1000, // 0040 MOVE R7 R8 + 0x8C200707, // 0041 GETMET R8 R3 K7 + 0x88280909, // 0042 GETMBR R10 R4 K9 + 0x5C2C0E00, // 0043 MOVE R11 R7 + 0x7C200600, // 0044 CALL R8 3 + 0x80041000, // 0045 RET 1 R8 0x70020045, // 0046 JMP #008D - 0x541E0009, // 0047 LDINT R7 10 - 0x1C1C0A07, // 0048 EQ R7 R5 R7 - 0x781E0010, // 0049 JMPF R7 #005B - 0x881C010D, // 004A GETMBR R7 R0 K13 - 0x1C1C0F06, // 004B EQ R7 R7 K6 - 0x781E0001, // 004C JMPF R7 #004F - 0x581C0006, // 004D LDCONST R7 K6 + 0x54220009, // 0047 LDINT R8 10 + 0x1C200C08, // 0048 EQ R8 R6 R8 + 0x78220010, // 0049 JMPF R8 #005B + 0x8820010D, // 004A GETMBR R8 R0 K13 + 0x1C201106, // 004B EQ R8 R8 K6 + 0x78220001, // 004C JMPF R8 #004F + 0x58200006, // 004D LDCONST R8 K6 0x70020005, // 004E JMP #0055 - 0x881C010D, // 004F GETMBR R7 R0 K13 - 0x241C0F06, // 0050 GT R7 R7 K6 - 0x781E0001, // 0051 JMPF R7 #0054 - 0x581C000A, // 0052 LDCONST R7 K10 + 0x8820010D, // 004F GETMBR R8 R0 K13 + 0x24201106, // 0050 GT R8 R8 K6 + 0x78220001, // 0051 JMPF R8 #0054 + 0x5820000A, // 0052 LDCONST R8 K10 0x70020000, // 0053 JMP #0055 - 0x581C000E, // 0054 LDCONST R7 K14 - 0x8C200707, // 0055 GETMET R8 R3 K7 - 0x88280708, // 0056 GETMBR R10 R3 K8 - 0x5C2C0E00, // 0057 MOVE R11 R7 - 0x7C200600, // 0058 CALL R8 3 - 0x80041000, // 0059 RET 1 R8 + 0x5820000E, // 0054 LDCONST R8 K14 + 0x8C240707, // 0055 GETMET R9 R3 K7 + 0x882C0908, // 0056 GETMBR R11 R4 K8 + 0x5C301000, // 0057 MOVE R12 R8 + 0x7C240600, // 0058 CALL R9 3 + 0x80041200, // 0059 RET 1 R9 0x70020031, // 005A JMP #008D - 0x541E000A, // 005B LDINT R7 11 - 0x1C1C0A07, // 005C EQ R7 R5 R7 - 0x781E0013, // 005D JMPF R7 #0072 - 0x881C010B, // 005E GETMBR R7 R0 K11 - 0x1C1C0F06, // 005F EQ R7 R7 K6 - 0x781E0006, // 0060 JMPF R7 #0068 - 0x541E0063, // 0061 LDINT R7 100 - 0x8820010F, // 0062 GETMBR R8 R0 K15 - 0x041C0E08, // 0063 SUB R7 R7 R8 - 0x54220063, // 0064 LDINT R8 100 - 0x081C0E08, // 0065 MUL R7 R7 R8 - 0x5C180E00, // 0066 MOVE R6 R7 + 0x5422000A, // 005B LDINT R8 11 + 0x1C200C08, // 005C EQ R8 R6 R8 + 0x78220013, // 005D JMPF R8 #0072 + 0x8820010B, // 005E GETMBR R8 R0 K11 + 0x1C201106, // 005F EQ R8 R8 K6 + 0x78220006, // 0060 JMPF R8 #0068 + 0x54220063, // 0061 LDINT R8 100 + 0x8824010F, // 0062 GETMBR R9 R0 K15 + 0x04201009, // 0063 SUB R8 R8 R9 + 0x54260063, // 0064 LDINT R9 100 + 0x08201009, // 0065 MUL R8 R8 R9 + 0x5C1C1000, // 0066 MOVE R7 R8 0x70020003, // 0067 JMP #006C - 0x881C010F, // 0068 GETMBR R7 R0 K15 - 0x54220063, // 0069 LDINT R8 100 - 0x081C0E08, // 006A MUL R7 R7 R8 - 0x5C180E00, // 006B MOVE R6 R7 - 0x8C1C0707, // 006C GETMET R7 R3 K7 - 0x88240709, // 006D GETMBR R9 R3 K9 - 0x5C280C00, // 006E MOVE R10 R6 - 0x7C1C0600, // 006F CALL R7 3 - 0x80040E00, // 0070 RET 1 R7 + 0x8820010F, // 0068 GETMBR R8 R0 K15 + 0x54260063, // 0069 LDINT R9 100 + 0x08201009, // 006A MUL R8 R8 R9 + 0x5C1C1000, // 006B MOVE R7 R8 + 0x8C200707, // 006C GETMET R8 R3 K7 + 0x88280909, // 006D GETMBR R10 R4 K9 + 0x5C2C0E00, // 006E MOVE R11 R7 + 0x7C200600, // 006F CALL R8 3 + 0x80041000, // 0070 RET 1 R8 0x7002001A, // 0071 JMP #008D - 0x541E0016, // 0072 LDINT R7 23 - 0x1C1C0A07, // 0073 EQ R7 R5 R7 - 0x781E0005, // 0074 JMPF R7 #007B - 0x8C1C0707, // 0075 GETMET R7 R3 K7 - 0x88240708, // 0076 GETMBR R9 R3 K8 - 0x58280006, // 0077 LDCONST R10 K6 - 0x7C1C0600, // 0078 CALL R7 3 - 0x80040E00, // 0079 RET 1 R7 + 0x54220016, // 0072 LDINT R8 23 + 0x1C200C08, // 0073 EQ R8 R6 R8 + 0x78220005, // 0074 JMPF R8 #007B + 0x8C200707, // 0075 GETMET R8 R3 K7 + 0x88280908, // 0076 GETMBR R10 R4 K8 + 0x582C0006, // 0077 LDCONST R11 K6 + 0x7C200600, // 0078 CALL R8 3 + 0x80041000, // 0079 RET 1 R8 0x70020011, // 007A JMP #008D - 0x541EFFFB, // 007B LDINT R7 65532 - 0x1C1C0A07, // 007C EQ R7 R5 R7 - 0x781E0006, // 007D JMPF R7 #0085 - 0x8C1C0707, // 007E GETMET R7 R3 K7 - 0x88240710, // 007F GETMBR R9 R3 K16 - 0x542A0003, // 0080 LDINT R10 4 - 0x002A140A, // 0081 ADD R10 K10 R10 - 0x7C1C0600, // 0082 CALL R7 3 - 0x80040E00, // 0083 RET 1 R7 + 0x5422FFFB, // 007B LDINT R8 65532 + 0x1C200C08, // 007C EQ R8 R6 R8 + 0x78220006, // 007D JMPF R8 #0085 + 0x8C200707, // 007E GETMET R8 R3 K7 + 0x88280910, // 007F GETMBR R10 R4 K16 + 0x542E0003, // 0080 LDINT R11 4 + 0x002E140B, // 0081 ADD R11 K10 R11 + 0x7C200600, // 0082 CALL R8 3 + 0x80041000, // 0083 RET 1 R8 0x70020007, // 0084 JMP #008D - 0x541EFFFC, // 0085 LDINT R7 65533 - 0x1C1C0A07, // 0086 EQ R7 R5 R7 - 0x781E0004, // 0087 JMPF R7 #008D - 0x8C1C0707, // 0088 GETMET R7 R3 K7 - 0x88240710, // 0089 GETMBR R9 R3 K16 - 0x542A0004, // 008A LDINT R10 5 - 0x7C1C0600, // 008B CALL R7 3 - 0x80040E00, // 008C RET 1 R7 - 0x70020007, // 008D JMP #0096 - 0x601C0003, // 008E GETGBL R7 G3 - 0x5C200000, // 008F MOVE R8 R0 - 0x7C1C0200, // 0090 CALL R7 1 - 0x8C1C0F11, // 0091 GETMET R7 R7 K17 - 0x5C240200, // 0092 MOVE R9 R1 - 0x5C280400, // 0093 MOVE R10 R2 - 0x7C1C0600, // 0094 CALL R7 3 - 0x80040E00, // 0095 RET 1 R7 - 0x80000000, // 0096 RET 0 + 0x5422FFFC, // 0085 LDINT R8 65533 + 0x1C200C08, // 0086 EQ R8 R6 R8 + 0x78220004, // 0087 JMPF R8 #008D + 0x8C200707, // 0088 GETMET R8 R3 K7 + 0x88280910, // 0089 GETMBR R10 R4 K16 + 0x542E0004, // 008A LDINT R11 5 + 0x7C200600, // 008B CALL R8 3 + 0x80041000, // 008C RET 1 R8 + 0x70020008, // 008D JMP #0097 + 0x60200003, // 008E GETGBL R8 G3 + 0x5C240000, // 008F MOVE R9 R0 + 0x7C200200, // 0090 CALL R8 1 + 0x8C201111, // 0091 GETMET R8 R8 K17 + 0x5C280200, // 0092 MOVE R10 R1 + 0x5C2C0400, // 0093 MOVE R11 R2 + 0x5C300600, // 0094 MOVE R12 R3 + 0x7C200800, // 0095 CALL R8 4 + 0x80041000, // 0096 RET 1 R8 + 0x80000000, // 0097 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_ShutterTilt.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_ShutterTilt.h index 9e89d19d9050..bfd316679ecc 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_ShutterTilt.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_ShutterTilt.h @@ -207,8 +207,8 @@ be_local_closure(Matter_Plugin_ShutterTilt_invoke_request, /* name */ ********************************************************************/ be_local_closure(Matter_Plugin_ShutterTilt_read_attribute, /* name */ be_nested_proto( - 13, /* nstack */ - 3, /* argc */ + 14, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -221,7 +221,7 @@ be_local_closure(Matter_Plugin_ShutterTilt_read_attribute, /* name */ /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_nested_str_weak(create_TLV), + /* K5 */ be_nested_str_weak(set), /* K6 */ be_nested_str_weak(U1), /* K7 */ be_const_int(1), /* K8 */ be_nested_str_weak(update_tilt_min_max), @@ -239,119 +239,120 @@ be_local_closure(Matter_Plugin_ShutterTilt_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[112]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x88100502, // 0002 GETMBR R4 R2 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x541A0101, // 0004 LDINT R6 258 - 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0060, // 0006 JMPF R6 #0068 - 0x8C180104, // 0007 GETMET R6 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x541A0006, // 0009 LDINT R6 7 - 0x1C180A06, // 000A EQ R6 R5 R6 - 0x781A0008, // 000B JMPF R6 #0015 - 0x8C180705, // 000C GETMET R6 R3 K5 - 0x88200706, // 000D GETMBR R8 R3 K6 - 0x54260007, // 000E LDINT R9 8 - 0x00260E09, // 000F ADD R9 K7 R9 - 0x542A000F, // 0010 LDINT R10 16 - 0x0024120A, // 0011 ADD R9 R9 R10 - 0x7C180600, // 0012 CALL R6 3 - 0x80040C00, // 0013 RET 1 R6 + ( &(const binstruction[113]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0101, // 0004 LDINT R7 258 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0060, // 0006 JMPF R7 #0068 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x541E0006, // 0009 LDINT R7 7 + 0x1C1C0C07, // 000A EQ R7 R6 R7 + 0x781E0008, // 000B JMPF R7 #0015 + 0x8C1C0705, // 000C GETMET R7 R3 K5 + 0x88240906, // 000D GETMBR R9 R4 K6 + 0x542A0007, // 000E LDINT R10 8 + 0x002A0E0A, // 000F ADD R10 K7 R10 + 0x542E000F, // 0010 LDINT R11 16 + 0x0028140B, // 0011 ADD R10 R10 R11 + 0x7C1C0600, // 0012 CALL R7 3 + 0x80040E00, // 0013 RET 1 R7 0x70020052, // 0014 JMP #0068 - 0x541A000E, // 0015 LDINT R6 15 - 0x1C180A06, // 0016 EQ R6 R5 R6 - 0x781A0021, // 0017 JMPF R6 #003A - 0x8C180108, // 0018 GETMET R6 R0 K8 - 0x7C180200, // 0019 CALL R6 1 - 0x88180109, // 001A GETMBR R6 R0 K9 - 0x4C1C0000, // 001B LDNIL R7 - 0x20180C07, // 001C NE R6 R6 R7 - 0x781A0015, // 001D JMPF R6 #0034 - 0x8818010A, // 001E GETMBR R6 R0 K10 - 0x4C1C0000, // 001F LDNIL R7 - 0x20180C07, // 0020 NE R6 R6 R7 - 0x781A0011, // 0021 JMPF R6 #0034 - 0xB81A1600, // 0022 GETNGBL R6 K11 - 0x8C180D0C, // 0023 GETMET R6 R6 K12 - 0x8820010D, // 0024 GETMBR R8 R0 K13 - 0x88240109, // 0025 GETMBR R9 R0 K9 - 0x04201009, // 0026 SUB R8 R8 R9 - 0x5824000E, // 0027 LDCONST R9 K14 - 0x8828010A, // 0028 GETMBR R10 R0 K10 - 0x882C0109, // 0029 GETMBR R11 R0 K9 - 0x0428140B, // 002A SUB R10 R10 R11 - 0x582C000E, // 002B LDCONST R11 K14 - 0x5432270F, // 002C LDINT R12 10000 - 0x7C180C00, // 002D CALL R6 6 - 0x8C1C0705, // 002E GETMET R7 R3 K5 - 0x8824070F, // 002F GETMBR R9 R3 K15 - 0x5C280C00, // 0030 MOVE R10 R6 - 0x7C1C0600, // 0031 CALL R7 3 - 0x80040E00, // 0032 RET 1 R7 + 0x541E000E, // 0015 LDINT R7 15 + 0x1C1C0C07, // 0016 EQ R7 R6 R7 + 0x781E0021, // 0017 JMPF R7 #003A + 0x8C1C0108, // 0018 GETMET R7 R0 K8 + 0x7C1C0200, // 0019 CALL R7 1 + 0x881C0109, // 001A GETMBR R7 R0 K9 + 0x4C200000, // 001B LDNIL R8 + 0x201C0E08, // 001C NE R7 R7 R8 + 0x781E0015, // 001D JMPF R7 #0034 + 0x881C010A, // 001E GETMBR R7 R0 K10 + 0x4C200000, // 001F LDNIL R8 + 0x201C0E08, // 0020 NE R7 R7 R8 + 0x781E0011, // 0021 JMPF R7 #0034 + 0xB81E1600, // 0022 GETNGBL R7 K11 + 0x8C1C0F0C, // 0023 GETMET R7 R7 K12 + 0x8824010D, // 0024 GETMBR R9 R0 K13 + 0x88280109, // 0025 GETMBR R10 R0 K9 + 0x0424120A, // 0026 SUB R9 R9 R10 + 0x5828000E, // 0027 LDCONST R10 K14 + 0x882C010A, // 0028 GETMBR R11 R0 K10 + 0x88300109, // 0029 GETMBR R12 R0 K9 + 0x042C160C, // 002A SUB R11 R11 R12 + 0x5830000E, // 002B LDCONST R12 K14 + 0x5436270F, // 002C LDINT R13 10000 + 0x7C1C0C00, // 002D CALL R7 6 + 0x8C200705, // 002E GETMET R8 R3 K5 + 0x8828090F, // 002F GETMBR R10 R4 K15 + 0x5C2C0E00, // 0030 MOVE R11 R7 + 0x7C200600, // 0031 CALL R8 3 + 0x80041000, // 0032 RET 1 R8 0x70020004, // 0033 JMP #0039 - 0x8C180705, // 0034 GETMET R6 R3 K5 - 0x88200710, // 0035 GETMBR R8 R3 K16 - 0x4C240000, // 0036 LDNIL R9 - 0x7C180600, // 0037 CALL R6 3 - 0x80040C00, // 0038 RET 1 R6 + 0x8C1C0705, // 0034 GETMET R7 R3 K5 + 0x88240910, // 0035 GETMBR R9 R4 K16 + 0x4C280000, // 0036 LDNIL R10 + 0x7C1C0600, // 0037 CALL R7 3 + 0x80040E00, // 0038 RET 1 R7 0x7002002D, // 0039 JMP #0068 - 0x541A000B, // 003A LDINT R6 12 - 0x1C180A06, // 003B EQ R6 R5 R6 - 0x781A001F, // 003C JMPF R6 #005D - 0x88180109, // 003D GETMBR R6 R0 K9 - 0x4C1C0000, // 003E LDNIL R7 - 0x20180C07, // 003F NE R6 R6 R7 - 0x781A0015, // 0040 JMPF R6 #0057 - 0x8818010A, // 0041 GETMBR R6 R0 K10 - 0x4C1C0000, // 0042 LDNIL R7 - 0x20180C07, // 0043 NE R6 R6 R7 - 0x781A0011, // 0044 JMPF R6 #0057 - 0xB81A1600, // 0045 GETNGBL R6 K11 - 0x8C180D0C, // 0046 GETMET R6 R6 K12 - 0x8820010D, // 0047 GETMBR R8 R0 K13 - 0x88240109, // 0048 GETMBR R9 R0 K9 - 0x04201009, // 0049 SUB R8 R8 R9 - 0x5824000E, // 004A LDCONST R9 K14 - 0x8828010A, // 004B GETMBR R10 R0 K10 - 0x882C0109, // 004C GETMBR R11 R0 K9 - 0x0428140B, // 004D SUB R10 R10 R11 - 0x582C000E, // 004E LDCONST R11 K14 - 0x5432270F, // 004F LDINT R12 10000 - 0x7C180C00, // 0050 CALL R6 6 - 0x8C1C0705, // 0051 GETMET R7 R3 K5 - 0x8824070F, // 0052 GETMBR R9 R3 K15 - 0x5C280C00, // 0053 MOVE R10 R6 - 0x7C1C0600, // 0054 CALL R7 3 - 0x80040E00, // 0055 RET 1 R7 + 0x541E000B, // 003A LDINT R7 12 + 0x1C1C0C07, // 003B EQ R7 R6 R7 + 0x781E001F, // 003C JMPF R7 #005D + 0x881C0109, // 003D GETMBR R7 R0 K9 + 0x4C200000, // 003E LDNIL R8 + 0x201C0E08, // 003F NE R7 R7 R8 + 0x781E0015, // 0040 JMPF R7 #0057 + 0x881C010A, // 0041 GETMBR R7 R0 K10 + 0x4C200000, // 0042 LDNIL R8 + 0x201C0E08, // 0043 NE R7 R7 R8 + 0x781E0011, // 0044 JMPF R7 #0057 + 0xB81E1600, // 0045 GETNGBL R7 K11 + 0x8C1C0F0C, // 0046 GETMET R7 R7 K12 + 0x8824010D, // 0047 GETMBR R9 R0 K13 + 0x88280109, // 0048 GETMBR R10 R0 K9 + 0x0424120A, // 0049 SUB R9 R9 R10 + 0x5828000E, // 004A LDCONST R10 K14 + 0x882C010A, // 004B GETMBR R11 R0 K10 + 0x88300109, // 004C GETMBR R12 R0 K9 + 0x042C160C, // 004D SUB R11 R11 R12 + 0x5830000E, // 004E LDCONST R12 K14 + 0x5436270F, // 004F LDINT R13 10000 + 0x7C1C0C00, // 0050 CALL R7 6 + 0x8C200705, // 0051 GETMET R8 R3 K5 + 0x8828090F, // 0052 GETMBR R10 R4 K15 + 0x5C2C0E00, // 0053 MOVE R11 R7 + 0x7C200600, // 0054 CALL R8 3 + 0x80041000, // 0055 RET 1 R8 0x70020004, // 0056 JMP #005C - 0x8C180705, // 0057 GETMET R6 R3 K5 - 0x88200710, // 0058 GETMBR R8 R3 K16 - 0x4C240000, // 0059 LDNIL R9 - 0x7C180600, // 005A CALL R6 3 - 0x80040C00, // 005B RET 1 R6 + 0x8C1C0705, // 0057 GETMET R7 R3 K5 + 0x88240910, // 0058 GETMBR R9 R4 K16 + 0x4C280000, // 0059 LDNIL R10 + 0x7C1C0600, // 005A CALL R7 3 + 0x80040E00, // 005B RET 1 R7 0x7002000A, // 005C JMP #0068 - 0x541AFFFB, // 005D LDINT R6 65532 - 0x1C180A06, // 005E EQ R6 R5 R6 - 0x781A0007, // 005F JMPF R6 #0068 - 0x8C180705, // 0060 GETMET R6 R3 K5 - 0x88200711, // 0061 GETMBR R8 R3 K17 - 0x54260003, // 0062 LDINT R9 4 - 0x00262409, // 0063 ADD R9 K18 R9 - 0x542A000F, // 0064 LDINT R10 16 - 0x0024120A, // 0065 ADD R9 R9 R10 - 0x7C180600, // 0066 CALL R6 3 - 0x80040C00, // 0067 RET 1 R6 - 0x60180003, // 0068 GETGBL R6 G3 - 0x5C1C0000, // 0069 MOVE R7 R0 - 0x7C180200, // 006A CALL R6 1 - 0x8C180D13, // 006B GETMET R6 R6 K19 - 0x5C200200, // 006C MOVE R8 R1 - 0x5C240400, // 006D MOVE R9 R2 - 0x7C180600, // 006E CALL R6 3 - 0x80040C00, // 006F RET 1 R6 + 0x541EFFFB, // 005D LDINT R7 65532 + 0x1C1C0C07, // 005E EQ R7 R6 R7 + 0x781E0007, // 005F JMPF R7 #0068 + 0x8C1C0705, // 0060 GETMET R7 R3 K5 + 0x88240911, // 0061 GETMBR R9 R4 K17 + 0x542A0003, // 0062 LDINT R10 4 + 0x002A240A, // 0063 ADD R10 K18 R10 + 0x542E000F, // 0064 LDINT R11 16 + 0x0028140B, // 0065 ADD R10 R10 R11 + 0x7C1C0600, // 0066 CALL R7 3 + 0x80040E00, // 0067 RET 1 R7 + 0x601C0003, // 0068 GETGBL R7 G3 + 0x5C200000, // 0069 MOVE R8 R0 + 0x7C1C0200, // 006A CALL R7 1 + 0x8C1C0F13, // 006B GETMET R7 R7 K19 + 0x5C240200, // 006C MOVE R9 R1 + 0x5C280400, // 006D MOVE R10 R2 + 0x5C2C0600, // 006E MOVE R11 R3 + 0x7C1C0800, // 006F CALL R7 4 + 0x80040E00, // 0070 RET 1 R7 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h index f4d56bf0422a..4150c0997784 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h @@ -7,29 +7,57 @@ extern const bclass be_class_Matter_Profiler; /******************************************************************** -** Solidified function: set_active +** Solidified function: start ********************************************************************/ -be_local_closure(Matter_Profiler_set_active, /* name */ +be_local_closure(Matter_Profiler_start, /* name */ be_nested_proto( - 4, /* nstack */ - 2, /* argc */ + 5, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ + ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(active), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(PREALLOCATED), + /* K3 */ be_nested_str_weak(millis), + /* K4 */ be_nested_str_weak(names), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(len), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(gc), + /* K9 */ be_nested_str_weak(log), + /* K10 */ be_nested_str_weak(start), }), - be_str_weak(set_active), + be_str_weak(start), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x60080017, // 0000 GETGBL R2 G23 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0x7C080200, // 0002 CALL R2 1 - 0x90020002, // 0003 SETMBR R0 K0 R2 - 0x80000000, // 0004 RET 0 + ( &(const binstruction[23]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x74060000, // 0001 JMPT R1 #0003 + 0x80000200, // 0002 RET 0 + 0x58040001, // 0003 LDCONST R1 K1 + 0x88080102, // 0004 GETMBR R2 R0 K2 + 0x14080202, // 0005 LT R2 R1 R2 + 0x780A0007, // 0006 JMPF R2 #000F + 0x88080103, // 0007 GETMBR R2 R0 K3 + 0x4C0C0000, // 0008 LDNIL R3 + 0x98080203, // 0009 SETIDX R2 R1 R3 + 0x88080104, // 000A GETMBR R2 R0 K4 + 0x4C0C0000, // 000B LDNIL R3 + 0x98080203, // 000C SETIDX R2 R1 R3 + 0x00040305, // 000D ADD R1 R1 K5 + 0x7001FFF4, // 000E JMP #0004 + 0x90020D01, // 000F SETMBR R0 K6 K1 + 0xB80A0E00, // 0010 GETNGBL R2 K7 + 0x8C080508, // 0011 GETMET R2 R2 K8 + 0x7C080200, // 0012 CALL R2 1 + 0x8C080109, // 0013 GETMET R2 R0 K9 + 0x5810000A, // 0014 LDCONST R4 K10 + 0x7C080400, // 0015 CALL R2 2 + 0x80000000, // 0016 RET 0 }) ) ); @@ -37,9 +65,9 @@ be_local_closure(Matter_Profiler_set_active, /* name */ /******************************************************************** -** Solidified function: start +** Solidified function: init ********************************************************************/ -be_local_closure(Matter_Profiler_start, /* name */ +be_local_closure(Matter_Profiler_init, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -49,33 +77,52 @@ be_local_closure(Matter_Profiler_start, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ + ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(active), /* K1 */ be_nested_str_weak(millis), /* K2 */ be_nested_str_weak(resize), - /* K3 */ be_const_int(0), + /* K3 */ be_nested_str_weak(PREALLOCATED), /* K4 */ be_nested_str_weak(names), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(start), + /* K5 */ be_nested_str_weak(allocs), + /* K6 */ be_nested_str_weak(reallocs), + /* K7 */ be_nested_str_weak(len), + /* K8 */ be_const_int(0), }), - be_str_weak(start), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x74060000, // 0001 JMPT R1 #0003 - 0x80000200, // 0002 RET 0 - 0x88040101, // 0003 GETMBR R1 R0 K1 - 0x8C040302, // 0004 GETMET R1 R1 K2 - 0x580C0003, // 0005 LDCONST R3 K3 - 0x7C040400, // 0006 CALL R1 2 - 0x88040104, // 0007 GETMBR R1 R0 K4 - 0x8C040302, // 0008 GETMET R1 R1 K2 - 0x580C0003, // 0009 LDCONST R3 K3 - 0x7C040400, // 000A CALL R1 2 - 0x8C040105, // 000B GETMET R1 R0 K5 - 0x580C0006, // 000C LDCONST R3 K6 - 0x7C040400, // 000D CALL R1 2 - 0x80000000, // 000E RET 0 + ( &(const binstruction[32]) { /* code */ + 0x50040000, // 0000 LDBOOL R1 0 0 + 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x60040012, // 0002 GETGBL R1 G18 + 0x7C040000, // 0003 CALL R1 0 + 0x90020201, // 0004 SETMBR R0 K1 R1 + 0x88040101, // 0005 GETMBR R1 R0 K1 + 0x8C040302, // 0006 GETMET R1 R1 K2 + 0x880C0103, // 0007 GETMBR R3 R0 K3 + 0x7C040400, // 0008 CALL R1 2 + 0x60040012, // 0009 GETGBL R1 G18 + 0x7C040000, // 000A CALL R1 0 + 0x90020801, // 000B SETMBR R0 K4 R1 + 0x88040104, // 000C GETMBR R1 R0 K4 + 0x8C040302, // 000D GETMET R1 R1 K2 + 0x880C0103, // 000E GETMBR R3 R0 K3 + 0x7C040400, // 000F CALL R1 2 + 0x60040012, // 0010 GETGBL R1 G18 + 0x7C040000, // 0011 CALL R1 0 + 0x90020A01, // 0012 SETMBR R0 K5 R1 + 0x88040105, // 0013 GETMBR R1 R0 K5 + 0x8C040302, // 0014 GETMET R1 R1 K2 + 0x880C0103, // 0015 GETMBR R3 R0 K3 + 0x7C040400, // 0016 CALL R1 2 + 0x60040012, // 0017 GETGBL R1 G18 + 0x7C040000, // 0018 CALL R1 0 + 0x90020C01, // 0019 SETMBR R0 K6 R1 + 0x88040106, // 001A GETMBR R1 R0 K6 + 0x8C040302, // 001B GETMET R1 R1 K2 + 0x880C0103, // 001C GETMBR R3 R0 K3 + 0x7C040400, // 001D CALL R1 2 + 0x90020F08, // 001E SETMBR R0 K7 K8 + 0x80000000, // 001F RET 0 }) ) ); @@ -83,11 +130,11 @@ be_local_closure(Matter_Profiler_start, /* name */ /******************************************************************** -** Solidified function: log +** Solidified function: set_active ********************************************************************/ -be_local_closure(Matter_Profiler_log, /* name */ +be_local_closure(Matter_Profiler_set_active, /* name */ be_nested_proto( - 6, /* nstack */ + 4, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -95,30 +142,17 @@ be_local_closure(Matter_Profiler_log, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ + ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(active), - /* K1 */ be_nested_str_weak(millis), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(names), }), - be_str_weak(log), + be_str_weak(set_active), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0000, // 0001 JMPT R2 #0003 - 0x80000400, // 0002 RET 0 - 0x88080101, // 0003 GETMBR R2 R0 K1 - 0x8C080502, // 0004 GETMET R2 R2 K2 - 0xB8120600, // 0005 GETNGBL R4 K3 - 0x8C100901, // 0006 GETMET R4 R4 K1 - 0x7C100200, // 0007 CALL R4 1 - 0x7C080400, // 0008 CALL R2 2 - 0x88080104, // 0009 GETMBR R2 R0 K4 - 0x8C080502, // 000A GETMET R2 R2 K2 - 0x5C100200, // 000B MOVE R4 R1 - 0x7C080400, // 000C CALL R2 2 - 0x80000000, // 000D RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x60080017, // 0000 GETGBL R2 G23 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x7C080200, // 0002 CALL R2 1 + 0x90020002, // 0003 SETMBR R0 K0 R2 + 0x80000000, // 0004 RET 0 }) ) ); @@ -126,45 +160,61 @@ be_local_closure(Matter_Profiler_log, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: log ********************************************************************/ -be_local_closure(Matter_Profiler_init, /* name */ +be_local_closure(Matter_Profiler_log, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ + 7, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ + ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(active), - /* K1 */ be_nested_str_weak(millis), - /* K2 */ be_nested_str_weak(resize), + /* K1 */ be_nested_str_weak(debug), + /* K2 */ be_nested_str_weak(len), /* K3 */ be_nested_str_weak(PREALLOCATED), - /* K4 */ be_nested_str_weak(names), + /* K4 */ be_nested_str_weak(millis), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(names), + /* K7 */ be_nested_str_weak(allocs), + /* K8 */ be_nested_str_weak(reallocs), + /* K9 */ be_const_int(1), }), - be_str_weak(init), + be_str_weak(log), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x60040012, // 0002 GETGBL R1 G18 - 0x7C040000, // 0003 CALL R1 0 - 0x90020201, // 0004 SETMBR R0 K1 R1 - 0x88040101, // 0005 GETMBR R1 R0 K1 - 0x8C040302, // 0006 GETMET R1 R1 K2 - 0x880C0103, // 0007 GETMBR R3 R0 K3 - 0x7C040400, // 0008 CALL R1 2 - 0x60040012, // 0009 GETGBL R1 G18 - 0x7C040000, // 000A CALL R1 0 - 0x90020801, // 000B SETMBR R0 K4 R1 - 0x88040104, // 000C GETMBR R1 R0 K4 - 0x8C040302, // 000D GETMET R1 R1 K2 - 0x880C0103, // 000E GETMBR R3 R0 K3 - 0x7C040400, // 000F CALL R1 2 - 0x80000000, // 0010 RET 0 + ( &(const binstruction[28]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x740A0000, // 0001 JMPT R2 #0003 + 0x80000400, // 0002 RET 0 + 0xA40A0200, // 0003 IMPORT R2 K1 + 0x880C0102, // 0004 GETMBR R3 R0 K2 + 0x88100103, // 0005 GETMBR R4 R0 K3 + 0x28100604, // 0006 GE R4 R3 R4 + 0x78120000, // 0007 JMPF R4 #0009 + 0x80000800, // 0008 RET 0 + 0x88100104, // 0009 GETMBR R4 R0 K4 + 0xB8160A00, // 000A GETNGBL R5 K5 + 0x8C140B04, // 000B GETMET R5 R5 K4 + 0x7C140200, // 000C CALL R5 1 + 0x98100605, // 000D SETIDX R4 R3 R5 + 0x88100106, // 000E GETMBR R4 R0 K6 + 0x98100601, // 000F SETIDX R4 R3 R1 + 0x88100107, // 0010 GETMBR R4 R0 K7 + 0x8C140507, // 0011 GETMET R5 R2 K7 + 0x7C140200, // 0012 CALL R5 1 + 0x98100605, // 0013 SETIDX R4 R3 R5 + 0x88100108, // 0014 GETMBR R4 R0 K8 + 0x8C140508, // 0015 GETMET R5 R2 K8 + 0x7C140200, // 0016 CALL R5 1 + 0x98100605, // 0017 SETIDX R4 R3 R5 + 0x88100102, // 0018 GETMBR R4 R0 K2 + 0x00100909, // 0019 ADD R4 R4 K9 + 0x90020404, // 001A SETMBR R0 K2 R4 + 0x80000000, // 001B RET 0 }) ) ); @@ -176,7 +226,7 @@ be_local_closure(Matter_Profiler_init, /* name */ ********************************************************************/ be_local_closure(Matter_Profiler_dump, /* name */ be_nested_proto( - 10, /* nstack */ + 13, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -184,7 +234,7 @@ be_local_closure(Matter_Profiler_dump, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ + ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(active), /* K1 */ be_nested_str_weak(log), /* K2 */ be_nested_str_weak(_X3C_X2D_X2Dend_X2D_X2D_X3E), @@ -192,13 +242,16 @@ be_local_closure(Matter_Profiler_dump, /* name */ /* K4 */ be_nested_str_weak(MTR_X3A_X20Profiler_X20dump_X3A), /* K5 */ be_nested_str_weak(millis), /* K6 */ be_const_int(0), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X27_X25s_X27), - /* K9 */ be_nested_str_weak(names), + /* K7 */ be_nested_str_weak(allocs), + /* K8 */ be_nested_str_weak(reallocs), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(len), + /* K11 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X5B_X254i_X5D_X27_X25s_X27), + /* K12 */ be_nested_str_weak(names), }), be_str_weak(dump), &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ + ( &(const binstruction[39]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0000, // 0001 JMPT R2 #0003 0x80000400, // 0002 RET 0 @@ -212,27 +265,32 @@ be_local_closure(Matter_Profiler_dump, /* name */ 0x7C080600, // 000A CALL R2 3 0x88080105, // 000B GETMBR R2 R0 K5 0x94080506, // 000C GETIDX R2 R2 K6 - 0x580C0007, // 000D LDCONST R3 K7 - 0x6010000C, // 000E GETGBL R4 G12 - 0x88140105, // 000F GETMBR R5 R0 K5 - 0x7C100200, // 0010 CALL R4 1 - 0x14100604, // 0011 LT R4 R3 R4 - 0x7812000D, // 0012 JMPF R4 #0021 - 0xB8120600, // 0013 GETNGBL R4 K3 - 0x8C100901, // 0014 GETMET R4 R4 K1 - 0x60180018, // 0015 GETGBL R6 G24 - 0x581C0008, // 0016 LDCONST R7 K8 - 0x88200105, // 0017 GETMBR R8 R0 K5 - 0x94201003, // 0018 GETIDX R8 R8 R3 - 0x04201002, // 0019 SUB R8 R8 R2 - 0x88240109, // 001A GETMBR R9 R0 K9 - 0x94241203, // 001B GETIDX R9 R9 R3 - 0x7C180600, // 001C CALL R6 3 - 0x5C1C0200, // 001D MOVE R7 R1 - 0x7C100600, // 001E CALL R4 3 - 0x000C0707, // 001F ADD R3 R3 K7 - 0x7001FFEC, // 0020 JMP #000E - 0x80000000, // 0021 RET 0 + 0x880C0107, // 000D GETMBR R3 R0 K7 + 0x940C0706, // 000E GETIDX R3 R3 K6 + 0x88100108, // 000F GETMBR R4 R0 K8 + 0x94100906, // 0010 GETIDX R4 R4 K6 + 0x58140009, // 0011 LDCONST R5 K9 + 0x8818010A, // 0012 GETMBR R6 R0 K10 + 0x14180A06, // 0013 LT R6 R5 R6 + 0x781A0010, // 0014 JMPF R6 #0026 + 0xB81A0600, // 0015 GETNGBL R6 K3 + 0x8C180D01, // 0016 GETMET R6 R6 K1 + 0x60200018, // 0017 GETGBL R8 G24 + 0x5824000B, // 0018 LDCONST R9 K11 + 0x88280105, // 0019 GETMBR R10 R0 K5 + 0x94281405, // 001A GETIDX R10 R10 R5 + 0x04281402, // 001B SUB R10 R10 R2 + 0x882C0107, // 001C GETMBR R11 R0 K7 + 0x942C1605, // 001D GETIDX R11 R11 R5 + 0x042C1603, // 001E SUB R11 R11 R3 + 0x8830010C, // 001F GETMBR R12 R0 K12 + 0x94301805, // 0020 GETIDX R12 R12 R5 + 0x7C200800, // 0021 CALL R8 4 + 0x5C240200, // 0022 MOVE R9 R1 + 0x7C180600, // 0023 CALL R6 3 + 0x00140B09, // 0024 ADD R5 R5 K9 + 0x7001FFEB, // 0025 JMP #0012 + 0x80000000, // 0026 RET 0 }) ) ); @@ -243,19 +301,22 @@ be_local_closure(Matter_Profiler_dump, /* name */ ** Solidified class: Matter_Profiler ********************************************************************/ be_local_class(Matter_Profiler, - 3, + 6, NULL, - be_nested_map(9, + be_nested_map(12, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(set_active, 5), be_const_closure(Matter_Profiler_set_active_closure) }, - { be_const_key_weak(millis, -1), be_const_var(0) }, - { be_const_key_weak(start, 4), be_const_closure(Matter_Profiler_start_closure) }, - { be_const_key_weak(active, 1), be_const_var(2) }, - { be_const_key_weak(PREALLOCATED, -1), be_const_int(50) }, - { be_const_key_weak(log, -1), be_const_closure(Matter_Profiler_log_closure) }, - { be_const_key_weak(init, -1), be_const_closure(Matter_Profiler_init_closure) }, + { be_const_key_weak(dump, 8), be_const_closure(Matter_Profiler_dump_closure) }, + { be_const_key_weak(millis, 5), be_const_var(0) }, + { be_const_key_weak(reallocs, -1), be_const_var(4) }, + { be_const_key_weak(init, 1), be_const_closure(Matter_Profiler_init_closure) }, + { be_const_key_weak(len, -1), be_const_var(5) }, + { be_const_key_weak(active, -1), be_const_var(2) }, + { be_const_key_weak(set_active, -1), be_const_closure(Matter_Profiler_set_active_closure) }, { be_const_key_weak(names, -1), be_const_var(1) }, - { be_const_key_weak(dump, -1), be_const_closure(Matter_Profiler_dump_closure) }, + { be_const_key_weak(allocs, 10), be_const_var(3) }, + { be_const_key_weak(log, -1), be_const_closure(Matter_Profiler_log_closure) }, + { be_const_key_weak(PREALLOCATED, -1), be_const_int(50) }, + { be_const_key_weak(start, 0), be_const_closure(Matter_Profiler_start_closure) }, })), be_str_weak(Matter_Profiler) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h index b65e1f6fdfd1..d1685288e88e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h @@ -851,21 +851,19 @@ be_local_closure(Matter_Session_update, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ + ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(last_used), /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(rtc), - /* K3 */ be_nested_str_weak(utc), + /* K2 */ be_nested_str_weak(rtc_utc), }), be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ + ( &(const binstruction[ 5]) { /* code */ 0xB8060200, // 0000 GETNGBL R1 K1 0x8C040302, // 0001 GETMET R1 R1 K2 0x7C040200, // 0002 CALL R1 1 - 0x94040303, // 0003 GETIDX R1 R1 K3 - 0x90020001, // 0004 SETMBR R0 K0 R1 - 0x80000000, // 0005 RET 0 + 0x90020001, // 0003 SETMBR R0 K0 R1 + 0x80000000, // 0004 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h index f5bce6577b65..b42a7facfd00 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h @@ -7,106 +7,11 @@ extern const bclass be_class_Matter_TLV_item; /******************************************************************** -** Solidified function: set_parent -********************************************************************/ -be_local_closure(Matter_TLV_item_set_parent, /* name */ - be_nested_proto( - 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[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(parent), - }), - be_str_weak(set_parent), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: create_TLV -********************************************************************/ -be_local_closure(Matter_TLV_item_create_TLV, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_TLV_item), - /* K1 */ be_nested_str_weak(typ), - /* K2 */ be_nested_str_weak(val), - }), - be_str_weak(create_TLV), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x200C0203, // 0002 NE R3 R1 R3 - 0x740E0002, // 0003 JMPT R3 #0007 - 0x540E0013, // 0004 LDINT R3 20 - 0x1C0C0003, // 0005 EQ R3 R0 R3 - 0x780E0004, // 0006 JMPF R3 #000C - 0x5C0C0400, // 0007 MOVE R3 R2 - 0x7C0C0000, // 0008 CALL R3 0 - 0x900E0200, // 0009 SETMBR R3 K1 R0 - 0x900E0401, // 000A SETMBR R3 K2 R1 - 0x80040600, // 000B RET 1 R3 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_anonymoustag -********************************************************************/ -be_local_closure(Matter_TLV_item_set_anonymoustag, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(set_fulltag), - }), - be_str_weak(set_anonymoustag), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_commonprofile +** Solidified function: encode_len ********************************************************************/ -be_local_closure(Matter_TLV_item_set_commonprofile, /* name */ +be_local_closure(Matter_TLV_item_encode_len, /* name */ be_nested_proto( - 6, /* nstack */ + 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -114,340 +19,41 @@ be_local_closure(Matter_TLV_item_set_commonprofile, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(set_fulltag), - }), - be_str_weak(set_commonprofile), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x5411FFFE, // 0002 LDINT R4 -1 - 0x4C140000, // 0003 LDNIL R5 - 0x7C040800, // 0004 CALL R1 4 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _cmp_gt -********************************************************************/ -be_local_closure(Matter_TLV_item__cmp_gt, /* name */ - be_nested_proto( - 4, /* 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(tag_vendor), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(tag_profile), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(tag_number), - /* K5 */ be_nested_str_weak(tag_sub), + ( &(const bvalue[32]) { /* constants */ + /* K0 */ be_nested_str_weak(TLV), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(typ), + /* K3 */ be_nested_str_weak(RAW), + /* K4 */ be_nested_str_weak(val), + /* K5 */ be_nested_str_weak(BFALSE), + /* K6 */ be_nested_str_weak(BTRUE), + /* K7 */ be_nested_str_weak(I2), + /* K8 */ be_nested_str_weak(I4), + /* K9 */ be_nested_str_weak(I1), + /* K10 */ be_nested_str_weak(U2), + /* K11 */ be_nested_str_weak(U4), + /* K12 */ be_nested_str_weak(U1), + /* K13 */ be_nested_str_weak(B1), + /* K14 */ be_nested_str_weak(B8), + /* K15 */ be_nested_str_weak(B2), + /* K16 */ be_nested_str_weak(B4), + /* K17 */ be_nested_str_weak(UTF1), + /* K18 */ be_nested_str_weak(UTF8), + /* K19 */ be_nested_str_weak(UTF2), + /* K20 */ be_nested_str_weak(UTF4), + /* K21 */ be_nested_str_weak(_encode_tag_len), + /* K22 */ be_const_int(1), + /* K23 */ be_const_int(2), + /* K24 */ be_nested_str_weak(I8), + /* K25 */ be_nested_str_weak(U8), + /* K26 */ be_nested_str_weak(FLOAT), + /* K27 */ be_nested_str_weak(DOUBLE), + /* K28 */ be_nested_str_weak(value_error), + /* K29 */ be_nested_str_weak(Unsupported_X20type_X20TLV_X2EDOUBLE), + /* K30 */ be_nested_str_weak(NULL), + /* K31 */ be_nested_str_weak(unsupported_X20type_X20), }), - be_str_weak(_cmp_gt), - &be_const_str_solidified, - ( &(const binstruction[72]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x20080403, // 0002 NE R2 R2 R3 - 0x780A0012, // 0003 JMPF R2 #0017 - 0x88080300, // 0004 GETMBR R2 R1 K0 - 0x4C0C0000, // 0005 LDNIL R3 - 0x1C080403, // 0006 EQ R2 R2 R3 - 0x780A0000, // 0007 JMPF R2 #0009 - 0x80060200, // 0008 RET 1 K1 - 0x88080100, // 0009 GETMBR R2 R0 K0 - 0x880C0300, // 000A GETMBR R3 R1 K0 - 0x24080403, // 000B GT R2 R2 R3 - 0x780A0000, // 000C JMPF R2 #000E - 0x80060200, // 000D RET 1 K1 - 0x88080100, // 000E GETMBR R2 R0 K0 - 0x880C0300, // 000F GETMBR R3 R1 K0 - 0x1C080403, // 0010 EQ R2 R2 R3 - 0x780A0004, // 0011 JMPF R2 #0017 - 0x88080102, // 0012 GETMBR R2 R0 K2 - 0x880C0302, // 0013 GETMBR R3 R1 K2 - 0x24080403, // 0014 GT R2 R2 R3 - 0x780A0000, // 0015 JMPF R2 #0017 - 0x80060200, // 0016 RET 1 K1 - 0x88080102, // 0017 GETMBR R2 R0 K2 - 0x540DFFFE, // 0018 LDINT R3 -1 - 0x1C080403, // 0019 EQ R2 R2 R3 - 0x780A0005, // 001A JMPF R2 #0021 - 0x88080302, // 001B GETMBR R2 R1 K2 - 0x4C0C0000, // 001C LDNIL R3 - 0x1C080403, // 001D EQ R2 R2 R3 - 0x780A0000, // 001E JMPF R2 #0020 - 0x80060200, // 001F RET 1 K1 - 0x70020008, // 0020 JMP #002A - 0x88080102, // 0021 GETMBR R2 R0 K2 - 0x4C0C0000, // 0022 LDNIL R3 - 0x1C080403, // 0023 EQ R2 R2 R3 - 0x780A0004, // 0024 JMPF R2 #002A - 0x88080302, // 0025 GETMBR R2 R1 K2 - 0x540DFFFE, // 0026 LDINT R3 -1 - 0x1C080403, // 0027 EQ R2 R2 R3 - 0x780A0000, // 0028 JMPF R2 #002A - 0x80060600, // 0029 RET 1 K3 - 0x88080104, // 002A GETMBR R2 R0 K4 - 0x4C0C0000, // 002B LDNIL R3 - 0x20080403, // 002C NE R2 R2 R3 - 0x780A000A, // 002D JMPF R2 #0039 - 0x88080304, // 002E GETMBR R2 R1 K4 - 0x4C0C0000, // 002F LDNIL R3 - 0x1C080403, // 0030 EQ R2 R2 R3 - 0x780A0000, // 0031 JMPF R2 #0033 - 0x80060200, // 0032 RET 1 K1 - 0x88080104, // 0033 GETMBR R2 R0 K4 - 0x880C0304, // 0034 GETMBR R3 R1 K4 - 0x24080403, // 0035 GT R2 R2 R3 - 0x780A0000, // 0036 JMPF R2 #0038 - 0x80060200, // 0037 RET 1 K1 - 0x80060600, // 0038 RET 1 K3 - 0x88080105, // 0039 GETMBR R2 R0 K5 - 0x4C0C0000, // 003A LDNIL R3 - 0x20080403, // 003B NE R2 R2 R3 - 0x780A0009, // 003C JMPF R2 #0047 - 0x88080305, // 003D GETMBR R2 R1 K5 - 0x4C0C0000, // 003E LDNIL R3 - 0x1C080403, // 003F EQ R2 R2 R3 - 0x780A0000, // 0040 JMPF R2 #0042 - 0x80060200, // 0041 RET 1 K1 - 0x88080105, // 0042 GETMBR R2 R0 K5 - 0x880C0305, // 0043 GETMBR R3 R1 K5 - 0x24080403, // 0044 GT R2 R2 R3 - 0x780A0000, // 0045 JMPF R2 #0047 - 0x80060200, // 0046 RET 1 K1 - 0x80060600, // 0047 RET 1 K3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _encode_tag -********************************************************************/ -be_local_closure(Matter_TLV_item__encode_tag, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tag_number), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(tag_vendor), - /* K3 */ be_nested_str_weak(add), - /* K4 */ be_nested_str_weak(typ), - /* K5 */ be_const_int(1), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str_weak(tag_profile), - /* K8 */ be_nested_str_weak(tag_sub), - }), - be_str_weak(_encode_tag), - &be_const_str_solidified, - ( &(const binstruction[133]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x20080403, // 0002 NE R2 R2 R3 - 0x780A0001, // 0003 JMPF R2 #0006 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x70020000, // 0005 JMP #0007 - 0x58080001, // 0006 LDCONST R2 K1 - 0x540EFFFF, // 0007 LDINT R3 65536 - 0x280C0403, // 0008 GE R3 R2 R3 - 0x740E0002, // 0009 JMPT R3 #000D - 0x140C0501, // 000A LT R3 R2 K1 - 0x740E0000, // 000B JMPT R3 #000D - 0x500C0001, // 000C LDBOOL R3 0 1 - 0x500C0200, // 000D LDBOOL R3 1 0 - 0x58100001, // 000E LDCONST R4 K1 - 0x88140102, // 000F GETMBR R5 R0 K2 - 0x4C180000, // 0010 LDNIL R6 - 0x20140A06, // 0011 NE R5 R5 R6 - 0x78160026, // 0012 JMPF R5 #003A - 0x780E0012, // 0013 JMPF R3 #0027 - 0x8C140303, // 0014 GETMET R5 R1 K3 - 0x541E00DF, // 0015 LDINT R7 224 - 0x88200104, // 0016 GETMBR R8 R0 K4 - 0x001C0E08, // 0017 ADD R7 R7 R8 - 0x58200005, // 0018 LDCONST R8 K5 - 0x7C140600, // 0019 CALL R5 3 - 0x8C140303, // 001A GETMET R5 R1 K3 - 0x881C0102, // 001B GETMBR R7 R0 K2 - 0x58200006, // 001C LDCONST R8 K6 - 0x7C140600, // 001D CALL R5 3 - 0x8C140303, // 001E GETMET R5 R1 K3 - 0x881C0107, // 001F GETMBR R7 R0 K7 - 0x58200006, // 0020 LDCONST R8 K6 - 0x7C140600, // 0021 CALL R5 3 - 0x8C140303, // 0022 GETMET R5 R1 K3 - 0x881C0100, // 0023 GETMBR R7 R0 K0 - 0x54220003, // 0024 LDINT R8 4 - 0x7C140600, // 0025 CALL R5 3 - 0x70020011, // 0026 JMP #0039 - 0x8C140303, // 0027 GETMET R5 R1 K3 - 0x541E00BF, // 0028 LDINT R7 192 - 0x88200104, // 0029 GETMBR R8 R0 K4 - 0x001C0E08, // 002A ADD R7 R7 R8 - 0x58200005, // 002B LDCONST R8 K5 - 0x7C140600, // 002C CALL R5 3 - 0x8C140303, // 002D GETMET R5 R1 K3 - 0x881C0102, // 002E GETMBR R7 R0 K2 - 0x58200006, // 002F LDCONST R8 K6 - 0x7C140600, // 0030 CALL R5 3 - 0x8C140303, // 0031 GETMET R5 R1 K3 - 0x881C0107, // 0032 GETMBR R7 R0 K7 - 0x58200006, // 0033 LDCONST R8 K6 - 0x7C140600, // 0034 CALL R5 3 - 0x8C140303, // 0035 GETMET R5 R1 K3 - 0x881C0100, // 0036 GETMBR R7 R0 K0 - 0x58200006, // 0037 LDCONST R8 K6 - 0x7C140600, // 0038 CALL R5 3 - 0x70020049, // 0039 JMP #0084 - 0x88140107, // 003A GETMBR R5 R0 K7 - 0x5419FFFE, // 003B LDINT R6 -1 - 0x1C140A06, // 003C EQ R5 R5 R6 - 0x78160016, // 003D JMPF R5 #0055 - 0x780E000A, // 003E JMPF R3 #004A - 0x8C140303, // 003F GETMET R5 R1 K3 - 0x541E005F, // 0040 LDINT R7 96 - 0x88200104, // 0041 GETMBR R8 R0 K4 - 0x001C0E08, // 0042 ADD R7 R7 R8 - 0x58200005, // 0043 LDCONST R8 K5 - 0x7C140600, // 0044 CALL R5 3 - 0x8C140303, // 0045 GETMET R5 R1 K3 - 0x881C0100, // 0046 GETMBR R7 R0 K0 - 0x54220003, // 0047 LDINT R8 4 - 0x7C140600, // 0048 CALL R5 3 - 0x70020009, // 0049 JMP #0054 - 0x8C140303, // 004A GETMET R5 R1 K3 - 0x541E003F, // 004B LDINT R7 64 - 0x88200104, // 004C GETMBR R8 R0 K4 - 0x001C0E08, // 004D ADD R7 R7 R8 - 0x58200005, // 004E LDCONST R8 K5 - 0x7C140600, // 004F CALL R5 3 - 0x8C140303, // 0050 GETMET R5 R1 K3 - 0x881C0100, // 0051 GETMBR R7 R0 K0 - 0x58200006, // 0052 LDCONST R8 K6 - 0x7C140600, // 0053 CALL R5 3 - 0x7002002E, // 0054 JMP #0084 - 0x88140107, // 0055 GETMBR R5 R0 K7 - 0x4C180000, // 0056 LDNIL R6 - 0x20140A06, // 0057 NE R5 R5 R6 - 0x78160016, // 0058 JMPF R5 #0070 - 0x780E000A, // 0059 JMPF R3 #0065 - 0x8C140303, // 005A GETMET R5 R1 K3 - 0x541E009F, // 005B LDINT R7 160 - 0x88200104, // 005C GETMBR R8 R0 K4 - 0x001C0E08, // 005D ADD R7 R7 R8 - 0x58200005, // 005E LDCONST R8 K5 - 0x7C140600, // 005F CALL R5 3 - 0x8C140303, // 0060 GETMET R5 R1 K3 - 0x881C0100, // 0061 GETMBR R7 R0 K0 - 0x54220003, // 0062 LDINT R8 4 - 0x7C140600, // 0063 CALL R5 3 - 0x70020009, // 0064 JMP #006F - 0x8C140303, // 0065 GETMET R5 R1 K3 - 0x541E007F, // 0066 LDINT R7 128 - 0x88200104, // 0067 GETMBR R8 R0 K4 - 0x001C0E08, // 0068 ADD R7 R7 R8 - 0x58200005, // 0069 LDCONST R8 K5 - 0x7C140600, // 006A CALL R5 3 - 0x8C140303, // 006B GETMET R5 R1 K3 - 0x881C0100, // 006C GETMBR R7 R0 K0 - 0x58200006, // 006D LDCONST R8 K6 - 0x7C140600, // 006E CALL R5 3 - 0x70020013, // 006F JMP #0084 - 0x88140108, // 0070 GETMBR R5 R0 K8 - 0x4C180000, // 0071 LDNIL R6 - 0x20140A06, // 0072 NE R5 R5 R6 - 0x7816000A, // 0073 JMPF R5 #007F - 0x8C140303, // 0074 GETMET R5 R1 K3 - 0x541E001F, // 0075 LDINT R7 32 - 0x88200104, // 0076 GETMBR R8 R0 K4 - 0x001C0E08, // 0077 ADD R7 R7 R8 - 0x58200005, // 0078 LDCONST R8 K5 - 0x7C140600, // 0079 CALL R5 3 - 0x8C140303, // 007A GETMET R5 R1 K3 - 0x881C0108, // 007B GETMBR R7 R0 K8 - 0x58200005, // 007C LDCONST R8 K5 - 0x7C140600, // 007D CALL R5 3 - 0x70020004, // 007E JMP #0084 - 0x8C140303, // 007F GETMET R5 R1 K3 - 0x881C0104, // 0080 GETMBR R7 R0 K4 - 0x001E0207, // 0081 ADD R7 K1 R7 - 0x58200005, // 0082 LDCONST R8 K5 - 0x7C140600, // 0083 CALL R5 3 - 0x80000000, // 0084 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: encode_len -********************************************************************/ -be_local_closure(Matter_TLV_item_encode_len, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[32]) { /* constants */ - /* K0 */ be_nested_str_weak(TLV), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(typ), - /* K3 */ be_nested_str_weak(RAW), - /* K4 */ be_nested_str_weak(val), - /* K5 */ be_nested_str_weak(BFALSE), - /* K6 */ be_nested_str_weak(BTRUE), - /* K7 */ be_nested_str_weak(I2), - /* K8 */ be_nested_str_weak(I4), - /* K9 */ be_nested_str_weak(I1), - /* K10 */ be_nested_str_weak(U2), - /* K11 */ be_nested_str_weak(U4), - /* K12 */ be_nested_str_weak(U1), - /* K13 */ be_nested_str_weak(B1), - /* K14 */ be_nested_str_weak(B8), - /* K15 */ be_nested_str_weak(B2), - /* K16 */ be_nested_str_weak(B4), - /* K17 */ be_nested_str_weak(UTF1), - /* K18 */ be_nested_str_weak(UTF8), - /* K19 */ be_nested_str_weak(UTF2), - /* K20 */ be_nested_str_weak(UTF4), - /* K21 */ be_nested_str_weak(_encode_tag_len), - /* K22 */ be_const_int(1), - /* K23 */ be_const_int(2), - /* K24 */ be_nested_str_weak(I8), - /* K25 */ be_nested_str_weak(U8), - /* K26 */ be_nested_str_weak(FLOAT), - /* K27 */ be_nested_str_weak(DOUBLE), - /* K28 */ be_nested_str_weak(value_error), - /* K29 */ be_nested_str_weak(Unsupported_X20type_X20TLV_X2EDOUBLE), - /* K30 */ be_nested_str_weak(NULL), - /* K31 */ be_nested_str_weak(unsupported_X20type_X20), - }), - be_str_weak(encode_len), + be_str_weak(encode_len), &be_const_str_solidified, ( &(const binstruction[258]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -715,32 +321,760 @@ be_local_closure(Matter_TLV_item_encode_len, /* name */ /******************************************************************** -** Solidified function: set_contextspecific +** Solidified function: to_str_val +********************************************************************/ +be_local_closure(Matter_TLV_item_to_str_val, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(val), + /* K1 */ be_nested_str_weak(int), + /* K2 */ be_nested_str_weak(typ), + /* K3 */ be_nested_str_weak(TLV), + /* K4 */ be_nested_str_weak(U1), + /* K5 */ be_nested_str_weak(U8), + /* K6 */ be_nested_str_weak(U), + /* K7 */ be_nested_str_weak(bool), + /* K8 */ be_nested_str_weak(true), + /* K9 */ be_nested_str_weak(false), + /* K10 */ be_nested_str_weak(null), + /* K11 */ be_nested_str_weak(real), + /* K12 */ be_nested_str_weak(string), + /* K13 */ be_nested_str_weak(int64), + /* K14 */ be_nested_str_weak(tostring), + /* K15 */ be_nested_str_weak(instance), + }), + be_str_weak(to_str_val), + &be_const_str_solidified, + ( &(const binstruction[98]) { /* code */ + 0x60040004, // 0000 GETGBL R1 G4 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x1C040301, // 0003 EQ R1 R1 K1 + 0x78060014, // 0004 JMPF R1 #001A + 0x88040102, // 0005 GETMBR R1 R0 K2 + 0x88080103, // 0006 GETMBR R2 R0 K3 + 0x88080504, // 0007 GETMBR R2 R2 K4 + 0x28040202, // 0008 GE R1 R1 R2 + 0x7806000A, // 0009 JMPF R1 #0015 + 0x88040102, // 000A GETMBR R1 R0 K2 + 0x88080103, // 000B GETMBR R2 R0 K3 + 0x88080505, // 000C GETMBR R2 R2 K5 + 0x18040202, // 000D LE R1 R1 R2 + 0x78060005, // 000E JMPF R1 #0015 + 0x60040008, // 000F GETGBL R1 G8 + 0x88080100, // 0010 GETMBR R2 R0 K0 + 0x7C040200, // 0011 CALL R1 1 + 0x00040306, // 0012 ADD R1 R1 K6 + 0x80040200, // 0013 RET 1 R1 + 0x70020003, // 0014 JMP #0019 + 0x60040008, // 0015 GETGBL R1 G8 + 0x88080100, // 0016 GETMBR R2 R0 K0 + 0x7C040200, // 0017 CALL R1 1 + 0x80040200, // 0018 RET 1 R1 + 0x70020046, // 0019 JMP #0061 + 0x60040004, // 001A GETGBL R1 G4 + 0x88080100, // 001B GETMBR R2 R0 K0 + 0x7C040200, // 001C CALL R1 1 + 0x1C040307, // 001D EQ R1 R1 K7 + 0x78060006, // 001E JMPF R1 #0026 + 0x88040100, // 001F GETMBR R1 R0 K0 + 0x78060001, // 0020 JMPF R1 #0023 + 0x58040008, // 0021 LDCONST R1 K8 + 0x70020000, // 0022 JMP #0024 + 0x58040009, // 0023 LDCONST R1 K9 + 0x80040200, // 0024 RET 1 R1 + 0x7002003A, // 0025 JMP #0061 + 0x88040100, // 0026 GETMBR R1 R0 K0 + 0x4C080000, // 0027 LDNIL R2 + 0x1C040202, // 0028 EQ R1 R1 R2 + 0x78060001, // 0029 JMPF R1 #002C + 0x80061400, // 002A RET 1 K10 + 0x70020034, // 002B JMP #0061 + 0x60040004, // 002C GETGBL R1 G4 + 0x88080100, // 002D GETMBR R2 R0 K0 + 0x7C040200, // 002E CALL R1 1 + 0x1C04030B, // 002F EQ R1 R1 K11 + 0x78060004, // 0030 JMPF R1 #0036 + 0x60040008, // 0031 GETGBL R1 G8 + 0x88080100, // 0032 GETMBR R2 R0 K0 + 0x7C040200, // 0033 CALL R1 1 + 0x80040200, // 0034 RET 1 R1 + 0x7002002A, // 0035 JMP #0061 + 0x60040004, // 0036 GETGBL R1 G4 + 0x88080100, // 0037 GETMBR R2 R0 K0 + 0x7C040200, // 0038 CALL R1 1 + 0x1C04030C, // 0039 EQ R1 R1 K12 + 0x78060002, // 003A JMPF R1 #003E + 0x88040100, // 003B GETMBR R1 R0 K0 + 0x80040200, // 003C RET 1 R1 + 0x70020022, // 003D JMP #0061 + 0x6004000F, // 003E GETGBL R1 G15 + 0x88080100, // 003F GETMBR R2 R0 K0 + 0xB80E1A00, // 0040 GETNGBL R3 K13 + 0x7C040400, // 0041 CALL R1 2 + 0x78060014, // 0042 JMPF R1 #0058 + 0x88040102, // 0043 GETMBR R1 R0 K2 + 0x88080103, // 0044 GETMBR R2 R0 K3 + 0x88080504, // 0045 GETMBR R2 R2 K4 + 0x28040202, // 0046 GE R1 R1 R2 + 0x7806000A, // 0047 JMPF R1 #0053 + 0x88040102, // 0048 GETMBR R1 R0 K2 + 0x88080103, // 0049 GETMBR R2 R0 K3 + 0x88080505, // 004A GETMBR R2 R2 K5 + 0x18040202, // 004B LE R1 R1 R2 + 0x78060005, // 004C JMPF R1 #0053 + 0x88040100, // 004D GETMBR R1 R0 K0 + 0x8C04030E, // 004E GETMET R1 R1 K14 + 0x7C040200, // 004F CALL R1 1 + 0x00040306, // 0050 ADD R1 R1 K6 + 0x80040200, // 0051 RET 1 R1 + 0x70020003, // 0052 JMP #0057 + 0x88040100, // 0053 GETMBR R1 R0 K0 + 0x8C04030E, // 0054 GETMET R1 R1 K14 + 0x7C040200, // 0055 CALL R1 1 + 0x80040200, // 0056 RET 1 R1 + 0x70020008, // 0057 JMP #0061 + 0x60040004, // 0058 GETGBL R1 G4 + 0x88080100, // 0059 GETMBR R2 R0 K0 + 0x7C040200, // 005A CALL R1 1 + 0x1C04030F, // 005B EQ R1 R1 K15 + 0x78060003, // 005C JMPF R1 #0061 + 0x8C04010E, // 005D GETMET R1 R0 K14 + 0x500C0200, // 005E LDBOOL R3 1 0 + 0x7C040400, // 005F CALL R1 2 + 0x80040200, // 0060 RET 1 R1 + 0x80000000, // 0061 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse +********************************************************************/ +be_local_closure(Matter_TLV_item_parse, /* name */ + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[25]) { /* constants */ + /* K0 */ be_nested_str_weak(typ), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(_len), + /* K3 */ be_nested_str_weak(val), + /* K4 */ be_nested_str_weak(int64), + /* K5 */ be_nested_str_weak(frombytes), + /* K6 */ be_nested_str_weak(BFALSE), + /* K7 */ be_nested_str_weak(BTRUE), + /* K8 */ be_nested_str_weak(U8), + /* K9 */ be_nested_str_weak(I8), + /* K10 */ be_nested_str_weak(geti), + /* K11 */ be_nested_str_weak(get), + /* K12 */ be_nested_str_weak(FLOAT), + /* K13 */ be_nested_str_weak(getfloat), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(UTF8), + /* K16 */ be_nested_str_weak(asstring), + /* K17 */ be_nested_str_weak(NULL), + /* K18 */ be_nested_str_weak(EOC), + /* K19 */ be_nested_str_weak(tasmota), + /* K20 */ be_nested_str_weak(log), + /* K21 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20eoc), + /* K22 */ be_const_int(3), + /* K23 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20type_X3A_X20), + /* K24 */ be_nested_str_weak(next_idx), + }), + be_str_weak(parse), + &be_const_str_solidified, + ( &(const binstruction[105]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x88140902, // 0002 GETMBR R5 R4 K2 + 0x94140A03, // 0003 GETIDX R5 R5 R3 + 0x541A0007, // 0004 LDINT R6 8 + 0x1C180A06, // 0005 EQ R6 R5 R6 + 0x781A000A, // 0006 JMPF R6 #0012 + 0xB81A0800, // 0007 GETNGBL R6 K4 + 0x7C180000, // 0008 CALL R6 0 + 0x90020606, // 0009 SETMBR R0 K3 R6 + 0x88180103, // 000A GETMBR R6 R0 K3 + 0x8C180D05, // 000B GETMET R6 R6 K5 + 0x5C200200, // 000C MOVE R8 R1 + 0x5C240400, // 000D MOVE R9 R2 + 0x7C180600, // 000E CALL R6 3 + 0x541A0007, // 000F LDINT R6 8 + 0x00080406, // 0010 ADD R2 R2 R6 + 0x70020054, // 0011 JMP #0067 + 0x88180906, // 0012 GETMBR R6 R4 K6 + 0x1C180606, // 0013 EQ R6 R3 R6 + 0x741A0002, // 0014 JMPT R6 #0018 + 0x88180907, // 0015 GETMBR R6 R4 K7 + 0x1C180606, // 0016 EQ R6 R3 R6 + 0x781A0003, // 0017 JMPF R6 #001C + 0x88180907, // 0018 GETMBR R6 R4 K7 + 0x1C180606, // 0019 EQ R6 R3 R6 + 0x90020606, // 001A SETMBR R0 K3 R6 + 0x7002004A, // 001B JMP #0067 + 0x88180908, // 001C GETMBR R6 R4 K8 + 0x14180606, // 001D LT R6 R3 R6 + 0x781A000E, // 001E JMPF R6 #002E + 0x88180909, // 001F GETMBR R6 R4 K9 + 0x18180606, // 0020 LE R6 R3 R6 + 0x781A0004, // 0021 JMPF R6 #0027 + 0x8C18030A, // 0022 GETMET R6 R1 K10 + 0x5C200400, // 0023 MOVE R8 R2 + 0x5C240A00, // 0024 MOVE R9 R5 + 0x7C180600, // 0025 CALL R6 3 + 0x70020003, // 0026 JMP #002B + 0x8C18030B, // 0027 GETMET R6 R1 K11 + 0x5C200400, // 0028 MOVE R8 R2 + 0x5C240A00, // 0029 MOVE R9 R5 + 0x7C180600, // 002A CALL R6 3 + 0x90020606, // 002B SETMBR R0 K3 R6 + 0x00080405, // 002C ADD R2 R2 R5 + 0x70020038, // 002D JMP #0067 + 0x8818090C, // 002E GETMBR R6 R4 K12 + 0x1C180606, // 002F EQ R6 R3 R6 + 0x781A0006, // 0030 JMPF R6 #0038 + 0x8C18030D, // 0031 GETMET R6 R1 K13 + 0x5C200400, // 0032 MOVE R8 R2 + 0x7C180400, // 0033 CALL R6 2 + 0x90020606, // 0034 SETMBR R0 K3 R6 + 0x541A0003, // 0035 LDINT R6 4 + 0x00080406, // 0036 ADD R2 R2 R6 + 0x7002002E, // 0037 JMP #0067 + 0x5419FFF7, // 0038 LDINT R6 -8 + 0x28180A06, // 0039 GE R6 R5 R6 + 0x781A0016, // 003A JMPF R6 #0052 + 0x5419FFFE, // 003B LDINT R6 -1 + 0x18180A06, // 003C LE R6 R5 R6 + 0x781A0013, // 003D JMPF R6 #0052 + 0x8C18030B, // 003E GETMET R6 R1 K11 + 0x5C200400, // 003F MOVE R8 R2 + 0x44240A00, // 0040 NEG R9 R5 + 0x7C180600, // 0041 CALL R6 3 + 0x441C0A00, // 0042 NEG R7 R5 + 0x00080407, // 0043 ADD R2 R2 R7 + 0x001C0406, // 0044 ADD R7 R2 R6 + 0x041C0F0E, // 0045 SUB R7 R7 K14 + 0x401C0407, // 0046 CONNECT R7 R2 R7 + 0x941C0207, // 0047 GETIDX R7 R1 R7 + 0x90020607, // 0048 SETMBR R0 K3 R7 + 0x00080406, // 0049 ADD R2 R2 R6 + 0x881C090F, // 004A GETMBR R7 R4 K15 + 0x181C0607, // 004B LE R7 R3 R7 + 0x781E0003, // 004C JMPF R7 #0051 + 0x881C0103, // 004D GETMBR R7 R0 K3 + 0x8C1C0F10, // 004E GETMET R7 R7 K16 + 0x7C1C0200, // 004F CALL R7 1 + 0x90020607, // 0050 SETMBR R0 K3 R7 + 0x70020014, // 0051 JMP #0067 + 0x88180911, // 0052 GETMBR R6 R4 K17 + 0x1C180606, // 0053 EQ R6 R3 R6 + 0x781A0000, // 0054 JMPF R6 #0056 + 0x70020010, // 0055 JMP #0067 + 0x88180912, // 0056 GETMBR R6 R4 K18 + 0x1C180606, // 0057 EQ R6 R3 R6 + 0x781A0005, // 0058 JMPF R6 #005F + 0xB81A2600, // 0059 GETNGBL R6 K19 + 0x8C180D14, // 005A GETMET R6 R6 K20 + 0x58200015, // 005B LDCONST R8 K21 + 0x58240016, // 005C LDCONST R9 K22 + 0x7C180600, // 005D CALL R6 3 + 0x70020007, // 005E JMP #0067 + 0xB81A2600, // 005F GETNGBL R6 K19 + 0x8C180D14, // 0060 GETMET R6 R6 K20 + 0x60200008, // 0061 GETGBL R8 G8 + 0x5C240600, // 0062 MOVE R9 R3 + 0x7C200200, // 0063 CALL R8 1 + 0x00222E08, // 0064 ADD R8 K23 R8 + 0x58240016, // 0065 LDCONST R9 K22 + 0x7C180600, // 0066 CALL R6 3 + 0x90023002, // 0067 SETMBR R0 K24 R2 + 0x80040400, // 0068 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _cmp_gt +********************************************************************/ +be_local_closure(Matter_TLV_item__cmp_gt, /* name */ + be_nested_proto( + 4, /* 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(tag_vendor), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(tag_profile), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(tag_number), + /* K5 */ be_nested_str_weak(tag_sub), + }), + be_str_weak(_cmp_gt), + &be_const_str_solidified, + ( &(const binstruction[72]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x20080403, // 0002 NE R2 R2 R3 + 0x780A0012, // 0003 JMPF R2 #0017 + 0x88080300, // 0004 GETMBR R2 R1 K0 + 0x4C0C0000, // 0005 LDNIL R3 + 0x1C080403, // 0006 EQ R2 R2 R3 + 0x780A0000, // 0007 JMPF R2 #0009 + 0x80060200, // 0008 RET 1 K1 + 0x88080100, // 0009 GETMBR R2 R0 K0 + 0x880C0300, // 000A GETMBR R3 R1 K0 + 0x24080403, // 000B GT R2 R2 R3 + 0x780A0000, // 000C JMPF R2 #000E + 0x80060200, // 000D RET 1 K1 + 0x88080100, // 000E GETMBR R2 R0 K0 + 0x880C0300, // 000F GETMBR R3 R1 K0 + 0x1C080403, // 0010 EQ R2 R2 R3 + 0x780A0004, // 0011 JMPF R2 #0017 + 0x88080102, // 0012 GETMBR R2 R0 K2 + 0x880C0302, // 0013 GETMBR R3 R1 K2 + 0x24080403, // 0014 GT R2 R2 R3 + 0x780A0000, // 0015 JMPF R2 #0017 + 0x80060200, // 0016 RET 1 K1 + 0x88080102, // 0017 GETMBR R2 R0 K2 + 0x540DFFFE, // 0018 LDINT R3 -1 + 0x1C080403, // 0019 EQ R2 R2 R3 + 0x780A0005, // 001A JMPF R2 #0021 + 0x88080302, // 001B GETMBR R2 R1 K2 + 0x4C0C0000, // 001C LDNIL R3 + 0x1C080403, // 001D EQ R2 R2 R3 + 0x780A0000, // 001E JMPF R2 #0020 + 0x80060200, // 001F RET 1 K1 + 0x70020008, // 0020 JMP #002A + 0x88080102, // 0021 GETMBR R2 R0 K2 + 0x4C0C0000, // 0022 LDNIL R3 + 0x1C080403, // 0023 EQ R2 R2 R3 + 0x780A0004, // 0024 JMPF R2 #002A + 0x88080302, // 0025 GETMBR R2 R1 K2 + 0x540DFFFE, // 0026 LDINT R3 -1 + 0x1C080403, // 0027 EQ R2 R2 R3 + 0x780A0000, // 0028 JMPF R2 #002A + 0x80060600, // 0029 RET 1 K3 + 0x88080104, // 002A GETMBR R2 R0 K4 + 0x4C0C0000, // 002B LDNIL R3 + 0x20080403, // 002C NE R2 R2 R3 + 0x780A000A, // 002D JMPF R2 #0039 + 0x88080304, // 002E GETMBR R2 R1 K4 + 0x4C0C0000, // 002F LDNIL R3 + 0x1C080403, // 0030 EQ R2 R2 R3 + 0x780A0000, // 0031 JMPF R2 #0033 + 0x80060200, // 0032 RET 1 K1 + 0x88080104, // 0033 GETMBR R2 R0 K4 + 0x880C0304, // 0034 GETMBR R3 R1 K4 + 0x24080403, // 0035 GT R2 R2 R3 + 0x780A0000, // 0036 JMPF R2 #0038 + 0x80060200, // 0037 RET 1 K1 + 0x80060600, // 0038 RET 1 K3 + 0x88080105, // 0039 GETMBR R2 R0 K5 + 0x4C0C0000, // 003A LDNIL R3 + 0x20080403, // 003B NE R2 R2 R3 + 0x780A0009, // 003C JMPF R2 #0047 + 0x88080305, // 003D GETMBR R2 R1 K5 + 0x4C0C0000, // 003E LDNIL R3 + 0x1C080403, // 003F EQ R2 R2 R3 + 0x780A0000, // 0040 JMPF R2 #0042 + 0x80060200, // 0041 RET 1 K1 + 0x88080105, // 0042 GETMBR R2 R0 K5 + 0x880C0305, // 0043 GETMBR R3 R1 K5 + 0x24080403, // 0044 GT R2 R2 R3 + 0x780A0000, // 0045 JMPF R2 #0047 + 0x80060200, // 0046 RET 1 K1 + 0x80060600, // 0047 RET 1 K3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_TLV +********************************************************************/ +be_local_closure(Matter_TLV_item_create_TLV, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_TLV_item), + /* K1 */ be_nested_str_weak(typ), + /* K2 */ be_nested_str_weak(val), + }), + be_str_weak(create_TLV), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x200C0203, // 0002 NE R3 R1 R3 + 0x740E0002, // 0003 JMPT R3 #0007 + 0x540E0013, // 0004 LDINT R3 20 + 0x1C0C0003, // 0005 EQ R3 R0 R3 + 0x780E0004, // 0006 JMPF R3 #000C + 0x5C0C0400, // 0007 MOVE R3 R2 + 0x7C0C0000, // 0008 CALL R3 0 + 0x900E0200, // 0009 SETMBR R3 K1 R0 + 0x900E0401, // 000A SETMBR R3 K2 R1 + 0x80040600, // 000B RET 1 R3 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: to_TLV +********************************************************************/ +be_local_closure(Matter_TLV_item_to_TLV, /* name */ + be_nested_proto( + 1, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(to_TLV), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80040000, // 0000 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _encode_tag +********************************************************************/ +be_local_closure(Matter_TLV_item__encode_tag, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(tag_number), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(tag_vendor), + /* K3 */ be_nested_str_weak(add), + /* K4 */ be_nested_str_weak(typ), + /* K5 */ be_const_int(1), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_str_weak(tag_profile), + /* K8 */ be_nested_str_weak(tag_sub), + }), + be_str_weak(_encode_tag), + &be_const_str_solidified, + ( &(const binstruction[133]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x20080403, // 0002 NE R2 R2 R3 + 0x780A0001, // 0003 JMPF R2 #0006 + 0x88080100, // 0004 GETMBR R2 R0 K0 + 0x70020000, // 0005 JMP #0007 + 0x58080001, // 0006 LDCONST R2 K1 + 0x540EFFFF, // 0007 LDINT R3 65536 + 0x280C0403, // 0008 GE R3 R2 R3 + 0x740E0002, // 0009 JMPT R3 #000D + 0x140C0501, // 000A LT R3 R2 K1 + 0x740E0000, // 000B JMPT R3 #000D + 0x500C0001, // 000C LDBOOL R3 0 1 + 0x500C0200, // 000D LDBOOL R3 1 0 + 0x58100001, // 000E LDCONST R4 K1 + 0x88140102, // 000F GETMBR R5 R0 K2 + 0x4C180000, // 0010 LDNIL R6 + 0x20140A06, // 0011 NE R5 R5 R6 + 0x78160026, // 0012 JMPF R5 #003A + 0x780E0012, // 0013 JMPF R3 #0027 + 0x8C140303, // 0014 GETMET R5 R1 K3 + 0x541E00DF, // 0015 LDINT R7 224 + 0x88200104, // 0016 GETMBR R8 R0 K4 + 0x001C0E08, // 0017 ADD R7 R7 R8 + 0x58200005, // 0018 LDCONST R8 K5 + 0x7C140600, // 0019 CALL R5 3 + 0x8C140303, // 001A GETMET R5 R1 K3 + 0x881C0102, // 001B GETMBR R7 R0 K2 + 0x58200006, // 001C LDCONST R8 K6 + 0x7C140600, // 001D CALL R5 3 + 0x8C140303, // 001E GETMET R5 R1 K3 + 0x881C0107, // 001F GETMBR R7 R0 K7 + 0x58200006, // 0020 LDCONST R8 K6 + 0x7C140600, // 0021 CALL R5 3 + 0x8C140303, // 0022 GETMET R5 R1 K3 + 0x881C0100, // 0023 GETMBR R7 R0 K0 + 0x54220003, // 0024 LDINT R8 4 + 0x7C140600, // 0025 CALL R5 3 + 0x70020011, // 0026 JMP #0039 + 0x8C140303, // 0027 GETMET R5 R1 K3 + 0x541E00BF, // 0028 LDINT R7 192 + 0x88200104, // 0029 GETMBR R8 R0 K4 + 0x001C0E08, // 002A ADD R7 R7 R8 + 0x58200005, // 002B LDCONST R8 K5 + 0x7C140600, // 002C CALL R5 3 + 0x8C140303, // 002D GETMET R5 R1 K3 + 0x881C0102, // 002E GETMBR R7 R0 K2 + 0x58200006, // 002F LDCONST R8 K6 + 0x7C140600, // 0030 CALL R5 3 + 0x8C140303, // 0031 GETMET R5 R1 K3 + 0x881C0107, // 0032 GETMBR R7 R0 K7 + 0x58200006, // 0033 LDCONST R8 K6 + 0x7C140600, // 0034 CALL R5 3 + 0x8C140303, // 0035 GETMET R5 R1 K3 + 0x881C0100, // 0036 GETMBR R7 R0 K0 + 0x58200006, // 0037 LDCONST R8 K6 + 0x7C140600, // 0038 CALL R5 3 + 0x70020049, // 0039 JMP #0084 + 0x88140107, // 003A GETMBR R5 R0 K7 + 0x5419FFFE, // 003B LDINT R6 -1 + 0x1C140A06, // 003C EQ R5 R5 R6 + 0x78160016, // 003D JMPF R5 #0055 + 0x780E000A, // 003E JMPF R3 #004A + 0x8C140303, // 003F GETMET R5 R1 K3 + 0x541E005F, // 0040 LDINT R7 96 + 0x88200104, // 0041 GETMBR R8 R0 K4 + 0x001C0E08, // 0042 ADD R7 R7 R8 + 0x58200005, // 0043 LDCONST R8 K5 + 0x7C140600, // 0044 CALL R5 3 + 0x8C140303, // 0045 GETMET R5 R1 K3 + 0x881C0100, // 0046 GETMBR R7 R0 K0 + 0x54220003, // 0047 LDINT R8 4 + 0x7C140600, // 0048 CALL R5 3 + 0x70020009, // 0049 JMP #0054 + 0x8C140303, // 004A GETMET R5 R1 K3 + 0x541E003F, // 004B LDINT R7 64 + 0x88200104, // 004C GETMBR R8 R0 K4 + 0x001C0E08, // 004D ADD R7 R7 R8 + 0x58200005, // 004E LDCONST R8 K5 + 0x7C140600, // 004F CALL R5 3 + 0x8C140303, // 0050 GETMET R5 R1 K3 + 0x881C0100, // 0051 GETMBR R7 R0 K0 + 0x58200006, // 0052 LDCONST R8 K6 + 0x7C140600, // 0053 CALL R5 3 + 0x7002002E, // 0054 JMP #0084 + 0x88140107, // 0055 GETMBR R5 R0 K7 + 0x4C180000, // 0056 LDNIL R6 + 0x20140A06, // 0057 NE R5 R5 R6 + 0x78160016, // 0058 JMPF R5 #0070 + 0x780E000A, // 0059 JMPF R3 #0065 + 0x8C140303, // 005A GETMET R5 R1 K3 + 0x541E009F, // 005B LDINT R7 160 + 0x88200104, // 005C GETMBR R8 R0 K4 + 0x001C0E08, // 005D ADD R7 R7 R8 + 0x58200005, // 005E LDCONST R8 K5 + 0x7C140600, // 005F CALL R5 3 + 0x8C140303, // 0060 GETMET R5 R1 K3 + 0x881C0100, // 0061 GETMBR R7 R0 K0 + 0x54220003, // 0062 LDINT R8 4 + 0x7C140600, // 0063 CALL R5 3 + 0x70020009, // 0064 JMP #006F + 0x8C140303, // 0065 GETMET R5 R1 K3 + 0x541E007F, // 0066 LDINT R7 128 + 0x88200104, // 0067 GETMBR R8 R0 K4 + 0x001C0E08, // 0068 ADD R7 R7 R8 + 0x58200005, // 0069 LDCONST R8 K5 + 0x7C140600, // 006A CALL R5 3 + 0x8C140303, // 006B GETMET R5 R1 K3 + 0x881C0100, // 006C GETMBR R7 R0 K0 + 0x58200006, // 006D LDCONST R8 K6 + 0x7C140600, // 006E CALL R5 3 + 0x70020013, // 006F JMP #0084 + 0x88140108, // 0070 GETMBR R5 R0 K8 + 0x4C180000, // 0071 LDNIL R6 + 0x20140A06, // 0072 NE R5 R5 R6 + 0x7816000A, // 0073 JMPF R5 #007F + 0x8C140303, // 0074 GETMET R5 R1 K3 + 0x541E001F, // 0075 LDINT R7 32 + 0x88200104, // 0076 GETMBR R8 R0 K4 + 0x001C0E08, // 0077 ADD R7 R7 R8 + 0x58200005, // 0078 LDCONST R8 K5 + 0x7C140600, // 0079 CALL R5 3 + 0x8C140303, // 007A GETMET R5 R1 K3 + 0x881C0108, // 007B GETMBR R7 R0 K8 + 0x58200005, // 007C LDCONST R8 K5 + 0x7C140600, // 007D CALL R5 3 + 0x70020004, // 007E JMP #0084 + 0x8C140303, // 007F GETMET R5 R1 K3 + 0x881C0104, // 0080 GETMBR R7 R0 K4 + 0x001E0207, // 0081 ADD R7 K1 R7 + 0x58200005, // 0082 LDCONST R8 K5 + 0x7C140600, // 0083 CALL R5 3 + 0x80000000, // 0084 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_contextspecific +********************************************************************/ +be_local_closure(Matter_TLV_item_set_contextspecific, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(set_fulltag), + /* K1 */ be_nested_str_weak(tag_sub), + }), + be_str_weak(set_contextspecific), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x60080009, // 0002 GETGBL R2 G9 + 0x5C0C0200, // 0003 MOVE R3 R1 + 0x7C080200, // 0004 CALL R2 1 + 0x90020202, // 0005 SETMBR R0 K1 R2 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: reset +********************************************************************/ +be_local_closure(Matter_TLV_item_reset, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(parent), + /* K1 */ be_nested_str_weak(next_idx), + /* K2 */ be_nested_str_weak(tag_vendor), + /* K3 */ be_nested_str_weak(tag_profile), + /* K4 */ be_nested_str_weak(tag_number), + /* K5 */ be_nested_str_weak(tag_sub), + /* K6 */ be_nested_str_weak(typ), + /* K7 */ be_nested_str_weak(val), + }), + be_str_weak(reset), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x90020202, // 0002 SETMBR R0 K1 R2 + 0x90020402, // 0003 SETMBR R0 K2 R2 + 0x90020602, // 0004 SETMBR R0 K3 R2 + 0x90020802, // 0005 SETMBR R0 K4 R2 + 0x90020A02, // 0006 SETMBR R0 K5 R2 + 0x90020C02, // 0007 SETMBR R0 K6 R2 + 0x90020E02, // 0008 SETMBR R0 K7 R2 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: sort ********************************************************************/ -be_local_closure(Matter_TLV_item_set_contextspecific, /* name */ +be_local_closure(Matter_TLV_item_sort, /* name */ be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ + 9, /* nstack */ + 1, /* argc */ + 4, /* 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(set_fulltag), - /* K1 */ be_nested_str_weak(tag_sub), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_TLV_item), + /* K1 */ be_const_int(1), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(_cmp_gt), + /* K4 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(set_contextspecific), + be_str_weak(sort), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x60080009, // 0002 GETGBL R2 G9 - 0x5C0C0200, // 0003 MOVE R3 R1 - 0x7C080200, // 0004 CALL R2 1 - 0x90020202, // 0005 SETMBR R0 K1 R2 - 0x80000000, // 0006 RET 0 + ( &(const binstruction[33]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080010, // 0001 GETGBL R2 G16 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x040C0701, // 0005 SUB R3 R3 K1 + 0x400E0203, // 0006 CONNECT R3 K1 R3 + 0x7C080200, // 0007 CALL R2 1 + 0xA8020013, // 0008 EXBLK 0 #001D + 0x5C0C0400, // 0009 MOVE R3 R2 + 0x7C0C0000, // 000A CALL R3 0 + 0x94100003, // 000B GETIDX R4 R0 R3 + 0x5C140600, // 000C MOVE R5 R3 + 0x24180B02, // 000D GT R6 R5 K2 + 0x781A000B, // 000E JMPF R6 #001B + 0x04180B01, // 000F SUB R6 R5 K1 + 0x94180006, // 0010 GETIDX R6 R0 R6 + 0x8C180D03, // 0011 GETMET R6 R6 K3 + 0x5C200800, // 0012 MOVE R8 R4 + 0x7C180400, // 0013 CALL R6 2 + 0x24180D02, // 0014 GT R6 R6 K2 + 0x781A0004, // 0015 JMPF R6 #001B + 0x04180B01, // 0016 SUB R6 R5 K1 + 0x94180006, // 0017 GETIDX R6 R0 R6 + 0x98000A06, // 0018 SETIDX R0 R5 R6 + 0x04140B01, // 0019 SUB R5 R5 K1 + 0x7001FFF1, // 001A JMP #000D + 0x98000A04, // 001B SETIDX R0 R5 R4 + 0x7001FFEB, // 001C JMP #0009 + 0x58080004, // 001D LDCONST R2 K4 + 0xAC080200, // 001E CATCH R2 1 0 + 0xB0080000, // 001F RAISE 2 R0 R0 + 0x80040000, // 0020 RET 1 R0 }) ) ); @@ -790,13 +1124,40 @@ be_local_closure(Matter_TLV_item_set_fulltag, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: set_parent +********************************************************************/ +be_local_closure(Matter_TLV_item_set_parent, /* name */ + be_nested_proto( + 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[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(parent), + }), + be_str_weak(set_parent), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: tostring ********************************************************************/ be_local_closure(Matter_TLV_item_tostring, /* name */ be_nested_proto( - 6, /* nstack */ - 1, /* argc */ + 7, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -841,171 +1202,202 @@ be_local_closure(Matter_TLV_item_tostring, /* name */ }), be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[164]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0xA8020099, // 0001 EXBLK 0 #009C - 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x540DFFFE, // 0003 LDINT R3 -1 - 0x1C080403, // 0004 EQ R2 R2 R3 - 0x780A000A, // 0005 JMPF R2 #0011 - 0x00040302, // 0006 ADD R1 R1 K2 - 0x88080103, // 0007 GETMBR R2 R0 K3 - 0x4C0C0000, // 0008 LDNIL R3 - 0x20080403, // 0009 NE R2 R2 R3 - 0x780A0004, // 000A JMPF R2 #0010 - 0x60080018, // 000B GETGBL R2 G24 - 0x580C0004, // 000C LDCONST R3 K4 - 0x88100103, // 000D GETMBR R4 R0 K3 - 0x7C080400, // 000E CALL R2 2 - 0x00040202, // 000F ADD R1 R1 R2 - 0x70020023, // 0010 JMP #0035 - 0x88080105, // 0011 GETMBR R2 R0 K5 - 0x4C0C0000, // 0012 LDNIL R3 - 0x20080403, // 0013 NE R2 R2 R3 - 0x780A0004, // 0014 JMPF R2 #001A - 0x60080018, // 0015 GETGBL R2 G24 - 0x580C0006, // 0016 LDCONST R3 K6 - 0x88100105, // 0017 GETMBR R4 R0 K5 - 0x7C080400, // 0018 CALL R2 2 - 0x00040202, // 0019 ADD R1 R1 R2 - 0x88080101, // 001A GETMBR R2 R0 K1 - 0x4C0C0000, // 001B LDNIL R3 - 0x20080403, // 001C NE R2 R2 R3 - 0x780A0004, // 001D JMPF R2 #0023 - 0x60080018, // 001E GETGBL R2 G24 - 0x580C0007, // 001F LDCONST R3 K7 - 0x88100101, // 0020 GETMBR R4 R0 K1 - 0x7C080400, // 0021 CALL R2 2 - 0x00040202, // 0022 ADD R1 R1 R2 - 0x88080103, // 0023 GETMBR R2 R0 K3 - 0x4C0C0000, // 0024 LDNIL R3 - 0x20080403, // 0025 NE R2 R2 R3 - 0x780A0004, // 0026 JMPF R2 #002C - 0x60080018, // 0027 GETGBL R2 G24 - 0x580C0004, // 0028 LDCONST R3 K4 - 0x88100103, // 0029 GETMBR R4 R0 K3 - 0x7C080400, // 002A CALL R2 2 - 0x00040202, // 002B ADD R1 R1 R2 - 0x88080108, // 002C GETMBR R2 R0 K8 - 0x4C0C0000, // 002D LDNIL R3 - 0x20080403, // 002E NE R2 R2 R3 - 0x780A0004, // 002F JMPF R2 #0035 - 0x60080018, // 0030 GETGBL R2 G24 - 0x580C0009, // 0031 LDCONST R3 K9 - 0x88100108, // 0032 GETMBR R4 R0 K8 - 0x7C080400, // 0033 CALL R2 2 - 0x00040202, // 0034 ADD R1 R1 R2 - 0x6008000C, // 0035 GETGBL R2 G12 - 0x5C0C0200, // 0036 MOVE R3 R1 - 0x7C080200, // 0037 CALL R2 1 - 0x2408050A, // 0038 GT R2 R2 K10 - 0x780A0000, // 0039 JMPF R2 #003B - 0x0004030B, // 003A ADD R1 R1 K11 - 0x60080004, // 003B GETGBL R2 G4 - 0x880C010C, // 003C GETMBR R3 R0 K12 - 0x7C080200, // 003D CALL R2 1 - 0x1C08050D, // 003E EQ R2 R2 K13 - 0x780A0010, // 003F JMPF R2 #0051 - 0x60080018, // 0040 GETGBL R2 G24 - 0x580C000E, // 0041 LDCONST R3 K14 - 0x8810010C, // 0042 GETMBR R4 R0 K12 - 0x7C080400, // 0043 CALL R2 2 - 0x00040202, // 0044 ADD R1 R1 R2 - 0x8808010F, // 0045 GETMBR R2 R0 K15 - 0x880C0110, // 0046 GETMBR R3 R0 K16 - 0x880C0711, // 0047 GETMBR R3 R3 K17 - 0x28080403, // 0048 GE R2 R2 R3 - 0x780A0005, // 0049 JMPF R2 #0050 - 0x8808010F, // 004A GETMBR R2 R0 K15 - 0x880C0110, // 004B GETMBR R3 R0 K16 - 0x880C0712, // 004C GETMBR R3 R3 K18 - 0x18080403, // 004D LE R2 R2 R3 - 0x780A0000, // 004E JMPF R2 #0050 - 0x00040313, // 004F ADD R1 R1 K19 - 0x70020048, // 0050 JMP #009A - 0x60080004, // 0051 GETGBL R2 G4 - 0x880C010C, // 0052 GETMBR R3 R0 K12 - 0x7C080200, // 0053 CALL R2 1 - 0x1C080514, // 0054 EQ R2 R2 K20 - 0x780A0006, // 0055 JMPF R2 #005D - 0x8808010C, // 0056 GETMBR R2 R0 K12 - 0x780A0001, // 0057 JMPF R2 #005A - 0x58080015, // 0058 LDCONST R2 K21 - 0x70020000, // 0059 JMP #005B - 0x58080016, // 005A LDCONST R2 K22 - 0x00040202, // 005B ADD R1 R1 R2 - 0x7002003C, // 005C JMP #009A - 0x8808010C, // 005D GETMBR R2 R0 K12 - 0x4C0C0000, // 005E LDNIL R3 - 0x1C080403, // 005F EQ R2 R2 R3 - 0x780A0001, // 0060 JMPF R2 #0063 - 0x00040317, // 0061 ADD R1 R1 K23 - 0x70020036, // 0062 JMP #009A - 0x60080004, // 0063 GETGBL R2 G4 - 0x880C010C, // 0064 GETMBR R3 R0 K12 - 0x7C080200, // 0065 CALL R2 1 - 0x1C080518, // 0066 EQ R2 R2 K24 - 0x780A0005, // 0067 JMPF R2 #006E - 0x60080018, // 0068 GETGBL R2 G24 - 0x580C0019, // 0069 LDCONST R3 K25 - 0x8810010C, // 006A GETMBR R4 R0 K12 - 0x7C080400, // 006B CALL R2 2 - 0x00040202, // 006C ADD R1 R1 R2 - 0x7002002B, // 006D JMP #009A - 0x60080004, // 006E GETGBL R2 G4 - 0x880C010C, // 006F GETMBR R3 R0 K12 - 0x7C080200, // 0070 CALL R2 1 - 0x1C08051A, // 0071 EQ R2 R2 K26 - 0x780A0005, // 0072 JMPF R2 #0079 - 0x60080018, // 0073 GETGBL R2 G24 - 0x580C001B, // 0074 LDCONST R3 K27 - 0x8810010C, // 0075 GETMBR R4 R0 K12 - 0x7C080400, // 0076 CALL R2 2 - 0x00040202, // 0077 ADD R1 R1 R2 - 0x70020020, // 0078 JMP #009A - 0x6008000F, // 0079 GETGBL R2 G15 - 0x880C010C, // 007A GETMBR R3 R0 K12 - 0xB8123800, // 007B GETNGBL R4 K28 - 0x7C080400, // 007C CALL R2 2 - 0x780A000F, // 007D JMPF R2 #008E - 0x8808010C, // 007E GETMBR R2 R0 K12 - 0x8C08051D, // 007F GETMET R2 R2 K29 - 0x7C080200, // 0080 CALL R2 1 - 0x00040202, // 0081 ADD R1 R1 R2 - 0x8808010F, // 0082 GETMBR R2 R0 K15 - 0x880C0110, // 0083 GETMBR R3 R0 K16 - 0x880C0711, // 0084 GETMBR R3 R3 K17 - 0x28080403, // 0085 GE R2 R2 R3 - 0x780A0005, // 0086 JMPF R2 #008D - 0x8808010F, // 0087 GETMBR R2 R0 K15 - 0x880C0110, // 0088 GETMBR R3 R0 K16 - 0x880C0712, // 0089 GETMBR R3 R3 K18 - 0x18080403, // 008A LE R2 R2 R3 - 0x780A0000, // 008B JMPF R2 #008D - 0x00040313, // 008C ADD R1 R1 K19 - 0x7002000B, // 008D JMP #009A - 0x60080004, // 008E GETGBL R2 G4 - 0x880C010C, // 008F GETMBR R3 R0 K12 - 0x7C080200, // 0090 CALL R2 1 - 0x1C08051E, // 0091 EQ R2 R2 K30 - 0x780A0006, // 0092 JMPF R2 #009A - 0x60080018, // 0093 GETGBL R2 G24 - 0x580C001F, // 0094 LDCONST R3 K31 - 0x8810010C, // 0095 GETMBR R4 R0 K12 - 0x8C100920, // 0096 GETMET R4 R4 K32 - 0x7C100200, // 0097 CALL R4 1 - 0x7C080400, // 0098 CALL R2 2 - 0x00040202, // 0099 ADD R1 R1 R2 - 0xA8040001, // 009A EXBLK 1 1 - 0x70020006, // 009B JMP #00A3 - 0xAC080002, // 009C CATCH R2 0 2 - 0x70020003, // 009D JMP #00A2 - 0x00100521, // 009E ADD R4 R2 K33 - 0x00100803, // 009F ADD R4 R4 R3 - 0x80040800, // 00A0 RET 1 R4 - 0x70020000, // 00A1 JMP #00A3 - 0xB0080000, // 00A2 RAISE 2 R0 R0 - 0x80040200, // 00A3 RET 1 R1 + ( &(const binstruction[167]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0xA802009C, // 0001 EXBLK 0 #009F + 0x500C0200, // 0002 LDBOOL R3 1 0 + 0x200C0203, // 0003 NE R3 R1 R3 + 0x780E0038, // 0004 JMPF R3 #003E + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x5411FFFE, // 0006 LDINT R4 -1 + 0x1C0C0604, // 0007 EQ R3 R3 R4 + 0x780E000A, // 0008 JMPF R3 #0014 + 0x00080502, // 0009 ADD R2 R2 K2 + 0x880C0103, // 000A GETMBR R3 R0 K3 + 0x4C100000, // 000B LDNIL R4 + 0x200C0604, // 000C NE R3 R3 R4 + 0x780E0004, // 000D JMPF R3 #0013 + 0x600C0018, // 000E GETGBL R3 G24 + 0x58100004, // 000F LDCONST R4 K4 + 0x88140103, // 0010 GETMBR R5 R0 K3 + 0x7C0C0400, // 0011 CALL R3 2 + 0x00080403, // 0012 ADD R2 R2 R3 + 0x70020023, // 0013 JMP #0038 + 0x880C0105, // 0014 GETMBR R3 R0 K5 + 0x4C100000, // 0015 LDNIL R4 + 0x200C0604, // 0016 NE R3 R3 R4 + 0x780E0004, // 0017 JMPF R3 #001D + 0x600C0018, // 0018 GETGBL R3 G24 + 0x58100006, // 0019 LDCONST R4 K6 + 0x88140105, // 001A GETMBR R5 R0 K5 + 0x7C0C0400, // 001B CALL R3 2 + 0x00080403, // 001C ADD R2 R2 R3 + 0x880C0101, // 001D GETMBR R3 R0 K1 + 0x4C100000, // 001E LDNIL R4 + 0x200C0604, // 001F NE R3 R3 R4 + 0x780E0004, // 0020 JMPF R3 #0026 + 0x600C0018, // 0021 GETGBL R3 G24 + 0x58100007, // 0022 LDCONST R4 K7 + 0x88140101, // 0023 GETMBR R5 R0 K1 + 0x7C0C0400, // 0024 CALL R3 2 + 0x00080403, // 0025 ADD R2 R2 R3 + 0x880C0103, // 0026 GETMBR R3 R0 K3 + 0x4C100000, // 0027 LDNIL R4 + 0x200C0604, // 0028 NE R3 R3 R4 + 0x780E0004, // 0029 JMPF R3 #002F + 0x600C0018, // 002A GETGBL R3 G24 + 0x58100004, // 002B LDCONST R4 K4 + 0x88140103, // 002C GETMBR R5 R0 K3 + 0x7C0C0400, // 002D CALL R3 2 + 0x00080403, // 002E ADD R2 R2 R3 + 0x880C0108, // 002F GETMBR R3 R0 K8 + 0x4C100000, // 0030 LDNIL R4 + 0x200C0604, // 0031 NE R3 R3 R4 + 0x780E0004, // 0032 JMPF R3 #0038 + 0x600C0018, // 0033 GETGBL R3 G24 + 0x58100009, // 0034 LDCONST R4 K9 + 0x88140108, // 0035 GETMBR R5 R0 K8 + 0x7C0C0400, // 0036 CALL R3 2 + 0x00080403, // 0037 ADD R2 R2 R3 + 0x600C000C, // 0038 GETGBL R3 G12 + 0x5C100400, // 0039 MOVE R4 R2 + 0x7C0C0200, // 003A CALL R3 1 + 0x240C070A, // 003B GT R3 R3 K10 + 0x780E0000, // 003C JMPF R3 #003E + 0x0008050B, // 003D ADD R2 R2 K11 + 0x600C0004, // 003E GETGBL R3 G4 + 0x8810010C, // 003F GETMBR R4 R0 K12 + 0x7C0C0200, // 0040 CALL R3 1 + 0x1C0C070D, // 0041 EQ R3 R3 K13 + 0x780E0010, // 0042 JMPF R3 #0054 + 0x600C0018, // 0043 GETGBL R3 G24 + 0x5810000E, // 0044 LDCONST R4 K14 + 0x8814010C, // 0045 GETMBR R5 R0 K12 + 0x7C0C0400, // 0046 CALL R3 2 + 0x00080403, // 0047 ADD R2 R2 R3 + 0x880C010F, // 0048 GETMBR R3 R0 K15 + 0x88100110, // 0049 GETMBR R4 R0 K16 + 0x88100911, // 004A GETMBR R4 R4 K17 + 0x280C0604, // 004B GE R3 R3 R4 + 0x780E0005, // 004C JMPF R3 #0053 + 0x880C010F, // 004D GETMBR R3 R0 K15 + 0x88100110, // 004E GETMBR R4 R0 K16 + 0x88100912, // 004F GETMBR R4 R4 K18 + 0x180C0604, // 0050 LE R3 R3 R4 + 0x780E0000, // 0051 JMPF R3 #0053 + 0x00080513, // 0052 ADD R2 R2 K19 + 0x70020048, // 0053 JMP #009D + 0x600C0004, // 0054 GETGBL R3 G4 + 0x8810010C, // 0055 GETMBR R4 R0 K12 + 0x7C0C0200, // 0056 CALL R3 1 + 0x1C0C0714, // 0057 EQ R3 R3 K20 + 0x780E0006, // 0058 JMPF R3 #0060 + 0x880C010C, // 0059 GETMBR R3 R0 K12 + 0x780E0001, // 005A JMPF R3 #005D + 0x580C0015, // 005B LDCONST R3 K21 + 0x70020000, // 005C JMP #005E + 0x580C0016, // 005D LDCONST R3 K22 + 0x00080403, // 005E ADD R2 R2 R3 + 0x7002003C, // 005F JMP #009D + 0x880C010C, // 0060 GETMBR R3 R0 K12 + 0x4C100000, // 0061 LDNIL R4 + 0x1C0C0604, // 0062 EQ R3 R3 R4 + 0x780E0001, // 0063 JMPF R3 #0066 + 0x00080517, // 0064 ADD R2 R2 K23 + 0x70020036, // 0065 JMP #009D + 0x600C0004, // 0066 GETGBL R3 G4 + 0x8810010C, // 0067 GETMBR R4 R0 K12 + 0x7C0C0200, // 0068 CALL R3 1 + 0x1C0C0718, // 0069 EQ R3 R3 K24 + 0x780E0005, // 006A JMPF R3 #0071 + 0x600C0018, // 006B GETGBL R3 G24 + 0x58100019, // 006C LDCONST R4 K25 + 0x8814010C, // 006D GETMBR R5 R0 K12 + 0x7C0C0400, // 006E CALL R3 2 + 0x00080403, // 006F ADD R2 R2 R3 + 0x7002002B, // 0070 JMP #009D + 0x600C0004, // 0071 GETGBL R3 G4 + 0x8810010C, // 0072 GETMBR R4 R0 K12 + 0x7C0C0200, // 0073 CALL R3 1 + 0x1C0C071A, // 0074 EQ R3 R3 K26 + 0x780E0005, // 0075 JMPF R3 #007C + 0x600C0018, // 0076 GETGBL R3 G24 + 0x5810001B, // 0077 LDCONST R4 K27 + 0x8814010C, // 0078 GETMBR R5 R0 K12 + 0x7C0C0400, // 0079 CALL R3 2 + 0x00080403, // 007A ADD R2 R2 R3 + 0x70020020, // 007B JMP #009D + 0x600C000F, // 007C GETGBL R3 G15 + 0x8810010C, // 007D GETMBR R4 R0 K12 + 0xB8163800, // 007E GETNGBL R5 K28 + 0x7C0C0400, // 007F CALL R3 2 + 0x780E000F, // 0080 JMPF R3 #0091 + 0x880C010C, // 0081 GETMBR R3 R0 K12 + 0x8C0C071D, // 0082 GETMET R3 R3 K29 + 0x7C0C0200, // 0083 CALL R3 1 + 0x00080403, // 0084 ADD R2 R2 R3 + 0x880C010F, // 0085 GETMBR R3 R0 K15 + 0x88100110, // 0086 GETMBR R4 R0 K16 + 0x88100911, // 0087 GETMBR R4 R4 K17 + 0x280C0604, // 0088 GE R3 R3 R4 + 0x780E0005, // 0089 JMPF R3 #0090 + 0x880C010F, // 008A GETMBR R3 R0 K15 + 0x88100110, // 008B GETMBR R4 R0 K16 + 0x88100912, // 008C GETMBR R4 R4 K18 + 0x180C0604, // 008D LE R3 R3 R4 + 0x780E0000, // 008E JMPF R3 #0090 + 0x00080513, // 008F ADD R2 R2 K19 + 0x7002000B, // 0090 JMP #009D + 0x600C0004, // 0091 GETGBL R3 G4 + 0x8810010C, // 0092 GETMBR R4 R0 K12 + 0x7C0C0200, // 0093 CALL R3 1 + 0x1C0C071E, // 0094 EQ R3 R3 K30 + 0x780E0006, // 0095 JMPF R3 #009D + 0x600C0018, // 0096 GETGBL R3 G24 + 0x5810001F, // 0097 LDCONST R4 K31 + 0x8814010C, // 0098 GETMBR R5 R0 K12 + 0x8C140B20, // 0099 GETMET R5 R5 K32 + 0x7C140200, // 009A CALL R5 1 + 0x7C0C0400, // 009B CALL R3 2 + 0x00080403, // 009C ADD R2 R2 R3 + 0xA8040001, // 009D EXBLK 1 1 + 0x70020006, // 009E JMP #00A6 + 0xAC0C0002, // 009F CATCH R3 0 2 + 0x70020003, // 00A0 JMP #00A5 + 0x00140721, // 00A1 ADD R5 R3 K33 + 0x00140A04, // 00A2 ADD R5 R5 R4 + 0x80040A00, // 00A3 RET 1 R5 + 0x70020000, // 00A4 JMP #00A6 + 0xB0080000, // 00A5 RAISE 2 R0 R0 + 0x80040400, // 00A6 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_anonymoustag +********************************************************************/ +be_local_closure(Matter_TLV_item_set_anonymoustag, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(set_fulltag), + }), + be_str_weak(set_anonymoustag), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 }) ) ); @@ -1431,128 +1823,42 @@ be_local_closure(Matter_TLV_item_tlv2raw, /* name */ 0x6014000C, // 0149 GETGBL R5 G12 0x88180103, // 014A GETMBR R6 R0 K3 0x7C140200, // 014B CALL R5 1 - 0x58180017, // 014C LDCONST R6 K23 - 0x7C0C0600, // 014D CALL R3 3 - 0x880C0103, // 014E GETMBR R3 R0 K3 - 0x400C0203, // 014F CONNECT R3 R1 R3 - 0x7002001D, // 0150 JMP #016F - 0x880C0101, // 0151 GETMBR R3 R0 K1 - 0x8810050F, // 0152 GETMBR R4 R2 K15 - 0x1C0C0604, // 0153 EQ R3 R3 R4 - 0x780E000F, // 0154 JMPF R3 #0165 - 0x600C000C, // 0155 GETGBL R3 G12 - 0x88100103, // 0156 GETMBR R4 R0 K3 - 0x7C0C0200, // 0157 CALL R3 1 - 0x5412FFFE, // 0158 LDINT R4 65535 - 0x240C0604, // 0159 GT R3 R3 R4 - 0x780E0000, // 015A JMPF R3 #015C - 0xB0064527, // 015B RAISE 1 K34 K39 - 0x8C0C0316, // 015C GETMET R3 R1 K22 - 0x6014000C, // 015D GETGBL R5 G12 - 0x88180103, // 015E GETMBR R6 R0 K3 - 0x7C140200, // 015F CALL R5 1 - 0x58180018, // 0160 LDCONST R6 K24 - 0x7C0C0600, // 0161 CALL R3 3 - 0x880C0103, // 0162 GETMBR R3 R0 K3 - 0x400C0203, // 0163 CONNECT R3 R1 R3 - 0x70020009, // 0164 JMP #016F - 0x880C0101, // 0165 GETMBR R3 R0 K1 - 0x88100528, // 0166 GETMBR R4 R2 K40 - 0x1C0C0604, // 0167 EQ R3 R3 R4 - 0x780E0000, // 0168 JMPF R3 #016A - 0x70020004, // 0169 JMP #016F - 0x600C0008, // 016A GETGBL R3 G8 - 0x88100101, // 016B GETMBR R4 R0 K1 - 0x7C0C0200, // 016C CALL R3 1 - 0x000E5203, // 016D ADD R3 K41 R3 - 0xB0064403, // 016E RAISE 1 K34 R3 - 0x80040200, // 016F RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _encode_tag_len -********************************************************************/ -be_local_closure(Matter_TLV_item__encode_tag_len, /* 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[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(tag_number), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(tag_vendor), - /* K3 */ be_nested_str_weak(tag_profile), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(tag_sub), - /* K6 */ be_const_int(2), - /* K7 */ be_const_int(1), - }), - be_str_weak(_encode_tag_len), - &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x78060001, // 0003 JMPF R1 #0006 - 0x88040100, // 0004 GETMBR R1 R0 K0 - 0x70020000, // 0005 JMP #0007 - 0x58040001, // 0006 LDCONST R1 K1 - 0x540AFFFF, // 0007 LDINT R2 65536 - 0x28080202, // 0008 GE R2 R1 R2 - 0x740A0002, // 0009 JMPT R2 #000D - 0x14080301, // 000A LT R2 R1 K1 - 0x740A0000, // 000B JMPT R2 #000D - 0x50080001, // 000C LDBOOL R2 0 1 - 0x50080200, // 000D LDBOOL R2 1 0 - 0x580C0001, // 000E LDCONST R3 K1 - 0x88100102, // 000F GETMBR R4 R0 K2 - 0x4C140000, // 0010 LDNIL R5 - 0x20100805, // 0011 NE R4 R4 R5 - 0x78120006, // 0012 JMPF R4 #001A - 0x780A0002, // 0013 JMPF R2 #0017 - 0x54120008, // 0014 LDINT R4 9 - 0x80040800, // 0015 RET 1 R4 - 0x70020001, // 0016 JMP #0019 - 0x54120006, // 0017 LDINT R4 7 - 0x80040800, // 0018 RET 1 R4 - 0x7002001A, // 0019 JMP #0035 - 0x88100103, // 001A GETMBR R4 R0 K3 - 0x5415FFFE, // 001B LDINT R5 -1 - 0x1C100805, // 001C EQ R4 R4 R5 - 0x78120005, // 001D JMPF R4 #0024 - 0x780A0002, // 001E JMPF R2 #0022 - 0x54120004, // 001F LDINT R4 5 - 0x80040800, // 0020 RET 1 R4 - 0x70020000, // 0021 JMP #0023 - 0x80060800, // 0022 RET 1 K4 - 0x70020010, // 0023 JMP #0035 - 0x88100103, // 0024 GETMBR R4 R0 K3 - 0x4C140000, // 0025 LDNIL R5 - 0x20100805, // 0026 NE R4 R4 R5 - 0x78120005, // 0027 JMPF R4 #002E - 0x780A0002, // 0028 JMPF R2 #002C - 0x54120004, // 0029 LDINT R4 5 - 0x80040800, // 002A RET 1 R4 - 0x70020000, // 002B JMP #002D - 0x80060800, // 002C RET 1 K4 - 0x70020006, // 002D JMP #0035 - 0x88100105, // 002E GETMBR R4 R0 K5 - 0x4C140000, // 002F LDNIL R5 - 0x20100805, // 0030 NE R4 R4 R5 - 0x78120001, // 0031 JMPF R4 #0034 - 0x80060C00, // 0032 RET 1 K6 - 0x70020000, // 0033 JMP #0035 - 0x80060E00, // 0034 RET 1 K7 - 0x80000000, // 0035 RET 0 + 0x58180017, // 014C LDCONST R6 K23 + 0x7C0C0600, // 014D CALL R3 3 + 0x880C0103, // 014E GETMBR R3 R0 K3 + 0x400C0203, // 014F CONNECT R3 R1 R3 + 0x7002001D, // 0150 JMP #016F + 0x880C0101, // 0151 GETMBR R3 R0 K1 + 0x8810050F, // 0152 GETMBR R4 R2 K15 + 0x1C0C0604, // 0153 EQ R3 R3 R4 + 0x780E000F, // 0154 JMPF R3 #0165 + 0x600C000C, // 0155 GETGBL R3 G12 + 0x88100103, // 0156 GETMBR R4 R0 K3 + 0x7C0C0200, // 0157 CALL R3 1 + 0x5412FFFE, // 0158 LDINT R4 65535 + 0x240C0604, // 0159 GT R3 R3 R4 + 0x780E0000, // 015A JMPF R3 #015C + 0xB0064527, // 015B RAISE 1 K34 K39 + 0x8C0C0316, // 015C GETMET R3 R1 K22 + 0x6014000C, // 015D GETGBL R5 G12 + 0x88180103, // 015E GETMBR R6 R0 K3 + 0x7C140200, // 015F CALL R5 1 + 0x58180018, // 0160 LDCONST R6 K24 + 0x7C0C0600, // 0161 CALL R3 3 + 0x880C0103, // 0162 GETMBR R3 R0 K3 + 0x400C0203, // 0163 CONNECT R3 R1 R3 + 0x70020009, // 0164 JMP #016F + 0x880C0101, // 0165 GETMBR R3 R0 K1 + 0x88100528, // 0166 GETMBR R4 R2 K40 + 0x1C0C0604, // 0167 EQ R3 R3 R4 + 0x780E0000, // 0168 JMPF R3 #016A + 0x70020004, // 0169 JMP #016F + 0x600C0008, // 016A GETGBL R3 G8 + 0x88100101, // 016B GETMBR R4 R0 K1 + 0x7C0C0200, // 016C CALL R3 1 + 0x000E5203, // 016D ADD R3 K41 R3 + 0xB0064403, // 016E RAISE 1 K34 R3 + 0x80040200, // 016F RET 1 R1 }) ) ); @@ -1560,215 +1866,85 @@ be_local_closure(Matter_TLV_item__encode_tag_len, /* name */ /******************************************************************** -** Solidified function: sort +** Solidified function: _encode_tag_len ********************************************************************/ -be_local_closure(Matter_TLV_item_sort, /* name */ +be_local_closure(Matter_TLV_item__encode_tag_len, /* name */ be_nested_proto( - 9, /* nstack */ + 6, /* nstack */ 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_TLV_item), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(_cmp_gt), - /* K4 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(sort), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080010, // 0001 GETGBL R2 G16 - 0x600C000C, // 0002 GETGBL R3 G12 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C0C0200, // 0004 CALL R3 1 - 0x040C0701, // 0005 SUB R3 R3 K1 - 0x400E0203, // 0006 CONNECT R3 K1 R3 - 0x7C080200, // 0007 CALL R2 1 - 0xA8020013, // 0008 EXBLK 0 #001D - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x94100003, // 000B GETIDX R4 R0 R3 - 0x5C140600, // 000C MOVE R5 R3 - 0x24180B02, // 000D GT R6 R5 K2 - 0x781A000B, // 000E JMPF R6 #001B - 0x04180B01, // 000F SUB R6 R5 K1 - 0x94180006, // 0010 GETIDX R6 R0 R6 - 0x8C180D03, // 0011 GETMET R6 R6 K3 - 0x5C200800, // 0012 MOVE R8 R4 - 0x7C180400, // 0013 CALL R6 2 - 0x24180D02, // 0014 GT R6 R6 K2 - 0x781A0004, // 0015 JMPF R6 #001B - 0x04180B01, // 0016 SUB R6 R5 K1 - 0x94180006, // 0017 GETIDX R6 R0 R6 - 0x98000A06, // 0018 SETIDX R0 R5 R6 - 0x04140B01, // 0019 SUB R5 R5 K1 - 0x7001FFF1, // 001A JMP #000D - 0x98000A04, // 001B SETIDX R0 R5 R4 - 0x7001FFEB, // 001C JMP #0009 - 0x58080004, // 001D LDCONST R2 K4 - 0xAC080200, // 001E CATCH R2 1 0 - 0xB0080000, // 001F RAISE 2 R0 R0 - 0x80040000, // 0020 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse -********************************************************************/ -be_local_closure(Matter_TLV_item_parse, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(typ), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(_len), - /* K3 */ be_nested_str_weak(val), - /* K4 */ be_nested_str_weak(int64), - /* K5 */ be_nested_str_weak(frombytes), - /* K6 */ be_nested_str_weak(BFALSE), - /* K7 */ be_nested_str_weak(BTRUE), - /* K8 */ be_nested_str_weak(U8), - /* K9 */ be_nested_str_weak(I8), - /* K10 */ be_nested_str_weak(geti), - /* K11 */ be_nested_str_weak(get), - /* K12 */ be_nested_str_weak(FLOAT), - /* K13 */ be_nested_str_weak(getfloat), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(UTF8), - /* K16 */ be_nested_str_weak(asstring), - /* K17 */ be_nested_str_weak(NULL), - /* K18 */ be_nested_str_weak(EOC), - /* K19 */ be_nested_str_weak(tasmota), - /* K20 */ be_nested_str_weak(log), - /* K21 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20eoc), - /* K22 */ be_const_int(3), - /* K23 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20type_X3A_X20), - /* K24 */ be_nested_str_weak(next_idx), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(tag_number), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(tag_vendor), + /* K3 */ be_nested_str_weak(tag_profile), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(tag_sub), + /* K6 */ be_const_int(2), + /* K7 */ be_const_int(1), }), - be_str_weak(parse), + be_str_weak(_encode_tag_len), &be_const_str_solidified, - ( &(const binstruction[105]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x88140902, // 0002 GETMBR R5 R4 K2 - 0x94140A03, // 0003 GETIDX R5 R5 R3 - 0x541A0007, // 0004 LDINT R6 8 - 0x1C180A06, // 0005 EQ R6 R5 R6 - 0x781A000A, // 0006 JMPF R6 #0012 - 0xB81A0800, // 0007 GETNGBL R6 K4 - 0x7C180000, // 0008 CALL R6 0 - 0x90020606, // 0009 SETMBR R0 K3 R6 - 0x88180103, // 000A GETMBR R6 R0 K3 - 0x8C180D05, // 000B GETMET R6 R6 K5 - 0x5C200200, // 000C MOVE R8 R1 - 0x5C240400, // 000D MOVE R9 R2 - 0x7C180600, // 000E CALL R6 3 - 0x541A0007, // 000F LDINT R6 8 - 0x00080406, // 0010 ADD R2 R2 R6 - 0x70020054, // 0011 JMP #0067 - 0x88180906, // 0012 GETMBR R6 R4 K6 - 0x1C180606, // 0013 EQ R6 R3 R6 - 0x741A0002, // 0014 JMPT R6 #0018 - 0x88180907, // 0015 GETMBR R6 R4 K7 - 0x1C180606, // 0016 EQ R6 R3 R6 - 0x781A0003, // 0017 JMPF R6 #001C - 0x88180907, // 0018 GETMBR R6 R4 K7 - 0x1C180606, // 0019 EQ R6 R3 R6 - 0x90020606, // 001A SETMBR R0 K3 R6 - 0x7002004A, // 001B JMP #0067 - 0x88180908, // 001C GETMBR R6 R4 K8 - 0x14180606, // 001D LT R6 R3 R6 - 0x781A000E, // 001E JMPF R6 #002E - 0x88180909, // 001F GETMBR R6 R4 K9 - 0x18180606, // 0020 LE R6 R3 R6 - 0x781A0004, // 0021 JMPF R6 #0027 - 0x8C18030A, // 0022 GETMET R6 R1 K10 - 0x5C200400, // 0023 MOVE R8 R2 - 0x5C240A00, // 0024 MOVE R9 R5 - 0x7C180600, // 0025 CALL R6 3 - 0x70020003, // 0026 JMP #002B - 0x8C18030B, // 0027 GETMET R6 R1 K11 - 0x5C200400, // 0028 MOVE R8 R2 - 0x5C240A00, // 0029 MOVE R9 R5 - 0x7C180600, // 002A CALL R6 3 - 0x90020606, // 002B SETMBR R0 K3 R6 - 0x00080405, // 002C ADD R2 R2 R5 - 0x70020038, // 002D JMP #0067 - 0x8818090C, // 002E GETMBR R6 R4 K12 - 0x1C180606, // 002F EQ R6 R3 R6 - 0x781A0006, // 0030 JMPF R6 #0038 - 0x8C18030D, // 0031 GETMET R6 R1 K13 - 0x5C200400, // 0032 MOVE R8 R2 - 0x7C180400, // 0033 CALL R6 2 - 0x90020606, // 0034 SETMBR R0 K3 R6 - 0x541A0003, // 0035 LDINT R6 4 - 0x00080406, // 0036 ADD R2 R2 R6 - 0x7002002E, // 0037 JMP #0067 - 0x5419FFF7, // 0038 LDINT R6 -8 - 0x28180A06, // 0039 GE R6 R5 R6 - 0x781A0016, // 003A JMPF R6 #0052 - 0x5419FFFE, // 003B LDINT R6 -1 - 0x18180A06, // 003C LE R6 R5 R6 - 0x781A0013, // 003D JMPF R6 #0052 - 0x8C18030B, // 003E GETMET R6 R1 K11 - 0x5C200400, // 003F MOVE R8 R2 - 0x44240A00, // 0040 NEG R9 R5 - 0x7C180600, // 0041 CALL R6 3 - 0x441C0A00, // 0042 NEG R7 R5 - 0x00080407, // 0043 ADD R2 R2 R7 - 0x001C0406, // 0044 ADD R7 R2 R6 - 0x041C0F0E, // 0045 SUB R7 R7 K14 - 0x401C0407, // 0046 CONNECT R7 R2 R7 - 0x941C0207, // 0047 GETIDX R7 R1 R7 - 0x90020607, // 0048 SETMBR R0 K3 R7 - 0x00080406, // 0049 ADD R2 R2 R6 - 0x881C090F, // 004A GETMBR R7 R4 K15 - 0x181C0607, // 004B LE R7 R3 R7 - 0x781E0003, // 004C JMPF R7 #0051 - 0x881C0103, // 004D GETMBR R7 R0 K3 - 0x8C1C0F10, // 004E GETMET R7 R7 K16 - 0x7C1C0200, // 004F CALL R7 1 - 0x90020607, // 0050 SETMBR R0 K3 R7 - 0x70020014, // 0051 JMP #0067 - 0x88180911, // 0052 GETMBR R6 R4 K17 - 0x1C180606, // 0053 EQ R6 R3 R6 - 0x781A0000, // 0054 JMPF R6 #0056 - 0x70020010, // 0055 JMP #0067 - 0x88180912, // 0056 GETMBR R6 R4 K18 - 0x1C180606, // 0057 EQ R6 R3 R6 - 0x781A0005, // 0058 JMPF R6 #005F - 0xB81A2600, // 0059 GETNGBL R6 K19 - 0x8C180D14, // 005A GETMET R6 R6 K20 - 0x58200015, // 005B LDCONST R8 K21 - 0x58240016, // 005C LDCONST R9 K22 - 0x7C180600, // 005D CALL R6 3 - 0x70020007, // 005E JMP #0067 - 0xB81A2600, // 005F GETNGBL R6 K19 - 0x8C180D14, // 0060 GETMET R6 R6 K20 - 0x60200008, // 0061 GETGBL R8 G8 - 0x5C240600, // 0062 MOVE R9 R3 - 0x7C200200, // 0063 CALL R8 1 - 0x00222E08, // 0064 ADD R8 K23 R8 - 0x58240016, // 0065 LDCONST R9 K22 - 0x7C180600, // 0066 CALL R6 3 - 0x90023002, // 0067 SETMBR R0 K24 R2 - 0x80040400, // 0068 RET 1 R2 + ( &(const binstruction[54]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060001, // 0003 JMPF R1 #0006 + 0x88040100, // 0004 GETMBR R1 R0 K0 + 0x70020000, // 0005 JMP #0007 + 0x58040001, // 0006 LDCONST R1 K1 + 0x540AFFFF, // 0007 LDINT R2 65536 + 0x28080202, // 0008 GE R2 R1 R2 + 0x740A0002, // 0009 JMPT R2 #000D + 0x14080301, // 000A LT R2 R1 K1 + 0x740A0000, // 000B JMPT R2 #000D + 0x50080001, // 000C LDBOOL R2 0 1 + 0x50080200, // 000D LDBOOL R2 1 0 + 0x580C0001, // 000E LDCONST R3 K1 + 0x88100102, // 000F GETMBR R4 R0 K2 + 0x4C140000, // 0010 LDNIL R5 + 0x20100805, // 0011 NE R4 R4 R5 + 0x78120006, // 0012 JMPF R4 #001A + 0x780A0002, // 0013 JMPF R2 #0017 + 0x54120008, // 0014 LDINT R4 9 + 0x80040800, // 0015 RET 1 R4 + 0x70020001, // 0016 JMP #0019 + 0x54120006, // 0017 LDINT R4 7 + 0x80040800, // 0018 RET 1 R4 + 0x7002001A, // 0019 JMP #0035 + 0x88100103, // 001A GETMBR R4 R0 K3 + 0x5415FFFE, // 001B LDINT R5 -1 + 0x1C100805, // 001C EQ R4 R4 R5 + 0x78120005, // 001D JMPF R4 #0024 + 0x780A0002, // 001E JMPF R2 #0022 + 0x54120004, // 001F LDINT R4 5 + 0x80040800, // 0020 RET 1 R4 + 0x70020000, // 0021 JMP #0023 + 0x80060800, // 0022 RET 1 K4 + 0x70020010, // 0023 JMP #0035 + 0x88100103, // 0024 GETMBR R4 R0 K3 + 0x4C140000, // 0025 LDNIL R5 + 0x20100805, // 0026 NE R4 R4 R5 + 0x78120005, // 0027 JMPF R4 #002E + 0x780A0002, // 0028 JMPF R2 #002C + 0x54120004, // 0029 LDINT R4 5 + 0x80040800, // 002A RET 1 R4 + 0x70020000, // 002B JMP #002D + 0x80060800, // 002C RET 1 K4 + 0x70020006, // 002D JMP #0035 + 0x88100105, // 002E GETMBR R4 R0 K5 + 0x4C140000, // 002F LDNIL R5 + 0x20100805, // 0030 NE R4 R4 R5 + 0x78120001, // 0031 JMPF R4 #0034 + 0x80060C00, // 0032 RET 1 K6 + 0x70020000, // 0033 JMP #0035 + 0x80060E00, // 0034 RET 1 K7 + 0x80000000, // 0035 RET 0 }) ) ); @@ -1776,23 +1952,69 @@ be_local_closure(Matter_TLV_item_parse, /* name */ /******************************************************************** -** Solidified function: to_TLV +** Solidified function: set_commonprofile ********************************************************************/ -be_local_closure(Matter_TLV_item_to_TLV, /* name */ +be_local_closure(Matter_TLV_item_set_commonprofile, /* name */ be_nested_proto( - 1, /* nstack */ + 6, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(to_TLV), + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(set_fulltag), + }), + be_str_weak(set_commonprofile), &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80040000, // 0000 RET 1 R0 + ( &(const binstruction[ 6]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x5411FFFE, // 0002 LDINT R4 -1 + 0x4C140000, // 0003 LDNIL R5 + 0x7C040800, // 0004 CALL R1 4 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set +********************************************************************/ +be_local_closure(Matter_TLV_item_set, /* name */ + be_nested_proto( + 5, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(reset), + /* K1 */ be_nested_str_weak(typ), + /* K2 */ be_nested_str_weak(val), + }), + be_str_weak(set), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x7C0C0200, // 0001 CALL R3 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x200C0403, // 0003 NE R3 R2 R3 + 0x740E0002, // 0004 JMPT R3 #0008 + 0x540E0013, // 0005 LDINT R3 20 + 0x1C0C0203, // 0006 EQ R3 R1 R3 + 0x780E0002, // 0007 JMPF R3 #000B + 0x90020201, // 0008 SETMBR R0 K1 R1 + 0x90020402, // 0009 SETMBR R0 K2 R2 + 0x80040000, // 000A RET 1 R0 + 0x80000000, // 000B RET 0 }) ) ); @@ -1805,33 +2027,36 @@ be_local_closure(Matter_TLV_item_to_TLV, /* name */ be_local_class(Matter_TLV_item, 8, NULL, - be_nested_map(25, + be_nested_map(28, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(set_parent, -1), be_const_closure(Matter_TLV_item_set_parent_closure) }, - { be_const_key_weak(create_TLV, -1), be_const_static_closure(Matter_TLV_item_create_TLV_closure) }, - { be_const_key_weak(next_idx, -1), be_const_var(1) }, - { be_const_key_weak(TLV, -1), be_const_class(be_class_Matter_TLV) }, - { be_const_key_weak(tag_vendor, 22), be_const_var(2) }, - { be_const_key_weak(set_anonymoustag, 17), be_const_closure(Matter_TLV_item_set_anonymoustag_closure) }, - { be_const_key_weak(val, -1), be_const_var(7) }, - { be_const_key_weak(to_TLV, -1), be_const_closure(Matter_TLV_item_to_TLV_closure) }, - { be_const_key_weak(parse, -1), be_const_closure(Matter_TLV_item_parse_closure) }, - { be_const_key_weak(_cmp_gt, 7), be_const_closure(Matter_TLV_item__cmp_gt_closure) }, - { be_const_key_weak(tag_profile, -1), be_const_var(3) }, - { be_const_key_weak(encode_len, 10), be_const_closure(Matter_TLV_item_encode_len_closure) }, - { be_const_key_weak(set_contextspecific, 8), be_const_closure(Matter_TLV_item_set_contextspecific_closure) }, - { be_const_key_weak(set_fulltag, -1), be_const_closure(Matter_TLV_item_set_fulltag_closure) }, { be_const_key_weak(parent, -1), be_const_var(0) }, - { be_const_key_weak(_encode_tag_len, 19), be_const_closure(Matter_TLV_item__encode_tag_len_closure) }, + { be_const_key_weak(TLV, 0), be_const_class(be_class_Matter_TLV) }, { be_const_key_weak(tag_sub, -1), be_const_var(5) }, - { be_const_key_weak(init, 23), be_const_closure(Matter_TLV_item_init_closure) }, + { be_const_key_weak(encode_len, -1), be_const_closure(Matter_TLV_item_encode_len_closure) }, + { be_const_key_weak(val, 5), be_const_var(7) }, + { be_const_key_weak(_cmp_gt, -1), be_const_closure(Matter_TLV_item__cmp_gt_closure) }, + { be_const_key_weak(create_TLV, -1), be_const_static_closure(Matter_TLV_item_create_TLV_closure) }, + { be_const_key_weak(reset, -1), be_const_closure(Matter_TLV_item_reset_closure) }, + { be_const_key_weak(to_str_val, 6), be_const_closure(Matter_TLV_item_to_str_val_closure) }, + { be_const_key_weak(to_TLV, -1), be_const_closure(Matter_TLV_item_to_TLV_closure) }, + { be_const_key_weak(_encode_tag_len, -1), be_const_closure(Matter_TLV_item__encode_tag_len_closure) }, + { be_const_key_weak(set_contextspecific, -1), be_const_closure(Matter_TLV_item_set_contextspecific_closure) }, + { be_const_key_weak(parse, 7), be_const_closure(Matter_TLV_item_parse_closure) }, + { be_const_key_weak(set_anonymoustag, -1), be_const_closure(Matter_TLV_item_set_anonymoustag_closure) }, { be_const_key_weak(tlv2raw, -1), be_const_closure(Matter_TLV_item_tlv2raw_closure) }, + { be_const_key_weak(set_fulltag, 10), be_const_closure(Matter_TLV_item_set_fulltag_closure) }, + { be_const_key_weak(set_parent, -1), be_const_closure(Matter_TLV_item_set_parent_closure) }, + { be_const_key_weak(tag_profile, 23), be_const_var(3) }, + { be_const_key_weak(typ, -1), be_const_var(6) }, + { be_const_key_weak(_encode_tag, 20), be_const_closure(Matter_TLV_item__encode_tag_closure) }, + { be_const_key_weak(init, 13), be_const_closure(Matter_TLV_item_init_closure) }, + { be_const_key_weak(sort, 14), be_const_static_closure(Matter_TLV_item_sort_closure) }, + { be_const_key_weak(tag_vendor, -1), be_const_var(2) }, { be_const_key_weak(tostring, -1), be_const_closure(Matter_TLV_item_tostring_closure) }, - { be_const_key_weak(set_commonprofile, 15), be_const_closure(Matter_TLV_item_set_commonprofile_closure) }, - { be_const_key_weak(sort, -1), be_const_static_closure(Matter_TLV_item_sort_closure) }, - { be_const_key_weak(_encode_tag, -1), be_const_closure(Matter_TLV_item__encode_tag_closure) }, - { be_const_key_weak(tag_number, 16), be_const_var(4) }, - { be_const_key_weak(typ, 3), be_const_var(6) }, + { be_const_key_weak(next_idx, -1), be_const_var(1) }, + { be_const_key_weak(tag_number, -1), be_const_var(4) }, + { be_const_key_weak(set_commonprofile, -1), be_const_closure(Matter_TLV_item_set_commonprofile_closure) }, + { be_const_key_weak(set, -1), be_const_closure(Matter_TLV_item_set_closure) }, })), be_str_weak(Matter_TLV_item) ); @@ -1846,87 +2071,34 @@ void be_load_Matter_TLV_item_class(bvm *vm) { extern const bclass be_class_Matter_TLV_list; /******************************************************************** -** Solidified function: add_obj -********************************************************************/ -be_local_closure(Matter_TLV_list_add_obj, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(val), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(to_TLV), - /* K3 */ be_nested_str_weak(tag_sub), - }), - be_str_weak(add_obj), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x200C0403, // 0001 NE R3 R2 R3 - 0x780E0010, // 0002 JMPF R3 #0014 - 0x600C000F, // 0003 GETGBL R3 G15 - 0x5C100400, // 0004 MOVE R4 R2 - 0x60140015, // 0005 GETGBL R5 G21 - 0x7C0C0400, // 0006 CALL R3 2 - 0x780E0004, // 0007 JMPF R3 #000D - 0x880C0100, // 0008 GETMBR R3 R0 K0 - 0x8C0C0701, // 0009 GETMET R3 R3 K1 - 0x5C140400, // 000A MOVE R5 R2 - 0x7C0C0400, // 000B CALL R3 2 - 0x70020006, // 000C JMP #0014 - 0x8C0C0502, // 000D GETMET R3 R2 K2 - 0x7C0C0200, // 000E CALL R3 1 - 0x900E0601, // 000F SETMBR R3 K3 R1 - 0x88100100, // 0010 GETMBR R4 R0 K0 - 0x8C100901, // 0011 GETMET R4 R4 K1 - 0x5C180600, // 0012 MOVE R6 R3 - 0x7C100400, // 0013 CALL R4 2 - 0x80040000, // 0014 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_struct +** Solidified function: findsubval ********************************************************************/ -be_local_closure(Matter_TLV_list_add_struct, /* name */ +be_local_closure(Matter_TLV_list_findsubval, /* name */ be_nested_proto( 6, /* nstack */ - 2, /* argc */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(TLV), - /* K1 */ be_nested_str_weak(Matter_TLV_struct), - /* K2 */ be_nested_str_weak(tag_sub), - /* K3 */ be_nested_str_weak(val), - /* K4 */ be_nested_str_weak(push), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(findsub), + /* K1 */ be_nested_str_weak(val), }), - be_str_weak(add_struct), + be_str_weak(findsubval), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100000, // 0002 MOVE R4 R0 - 0x7C080400, // 0003 CALL R2 2 - 0x900A0401, // 0004 SETMBR R2 K2 R1 - 0x880C0103, // 0005 GETMBR R3 R0 K3 - 0x8C0C0704, // 0006 GETMET R3 R3 K4 - 0x5C140400, // 0007 MOVE R5 R2 - 0x7C0C0400, // 0008 CALL R3 2 - 0x80040400, // 0009 RET 1 R2 + ( &(const binstruction[ 9]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x5C140200, // 0001 MOVE R5 R1 + 0x7C0C0400, // 0002 CALL R3 2 + 0x4C100000, // 0003 LDNIL R4 + 0x20100604, // 0004 NE R4 R3 R4 + 0x78120001, // 0005 JMPF R4 #0008 + 0x88100701, // 0006 GETMBR R4 R3 K1 + 0x80040800, // 0007 RET 1 R4 + 0x80040400, // 0008 RET 1 R2 }) ) ); @@ -1934,11 +2106,11 @@ be_local_closure(Matter_TLV_list_add_struct, /* name */ /******************************************************************** -** Solidified function: push +** Solidified function: tlv2raw ********************************************************************/ -be_local_closure(Matter_TLV_list_push, /* name */ +be_local_closure(Matter_TLV_list_tlv2raw, /* name */ be_nested_proto( - 5, /* nstack */ + 8, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1946,18 +2118,66 @@ be_local_closure(Matter_TLV_list_push, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(val), - /* K1 */ be_nested_str_weak(push), + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(_encode_tag), + /* K1 */ be_nested_str_weak(val), + /* K2 */ be_nested_str_weak(is_struct), + /* K3 */ be_nested_str_weak(copy), + /* K4 */ be_nested_str_weak(sort), + /* K5 */ be_nested_str_weak(tlv2raw), + /* K6 */ be_nested_str_weak(stop_iteration), + /* K7 */ be_nested_str_weak(add), + /* K8 */ be_nested_str_weak(TLV), + /* K9 */ be_nested_str_weak(EOC), + /* K10 */ be_const_int(1), }), - be_str_weak(push), + be_str_weak(tlv2raw), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80000000, // 0004 RET 0 + ( &(const binstruction[44]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0002, // 0002 JMPF R2 #0006 + 0x60080015, // 0003 GETGBL R2 G21 + 0x7C080000, // 0004 CALL R2 0 + 0x5C040400, // 0005 MOVE R1 R2 + 0x8C080100, // 0006 GETMET R2 R0 K0 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x88080101, // 0009 GETMBR R2 R0 K1 + 0x880C0102, // 000A GETMBR R3 R0 K2 + 0x780E0005, // 000B JMPF R3 #0012 + 0x8C0C0503, // 000C GETMET R3 R2 K3 + 0x7C0C0200, // 000D CALL R3 1 + 0x5C080600, // 000E MOVE R2 R3 + 0x8C0C0104, // 000F GETMET R3 R0 K4 + 0x5C140400, // 0010 MOVE R5 R2 + 0x7C0C0400, // 0011 CALL R3 2 + 0x600C0010, // 0012 GETGBL R3 G16 + 0x5C100400, // 0013 MOVE R4 R2 + 0x7C0C0200, // 0014 CALL R3 1 + 0xA802000C, // 0015 EXBLK 0 #0023 + 0x5C100600, // 0016 MOVE R4 R3 + 0x7C100000, // 0017 CALL R4 0 + 0x6014000F, // 0018 GETGBL R5 G15 + 0x5C180800, // 0019 MOVE R6 R4 + 0x601C0015, // 001A GETGBL R7 G21 + 0x7C140400, // 001B CALL R5 2 + 0x78160001, // 001C JMPF R5 #001F + 0x40140204, // 001D CONNECT R5 R1 R4 + 0x70020002, // 001E JMP #0022 + 0x8C140905, // 001F GETMET R5 R4 K5 + 0x5C1C0200, // 0020 MOVE R7 R1 + 0x7C140400, // 0021 CALL R5 2 + 0x7001FFF2, // 0022 JMP #0016 + 0x580C0006, // 0023 LDCONST R3 K6 + 0xAC0C0200, // 0024 CATCH R3 1 0 + 0xB0080000, // 0025 RAISE 2 R0 R0 + 0x8C0C0307, // 0026 GETMET R3 R1 K7 + 0x88140108, // 0027 GETMBR R5 R0 K8 + 0x88140B09, // 0028 GETMBR R5 R5 K9 + 0x5818000A, // 0029 LDCONST R6 K10 + 0x7C0C0600, // 002A CALL R3 3 + 0x80040200, // 002B RET 1 R1 }) ) ); @@ -1965,30 +2185,28 @@ be_local_closure(Matter_TLV_list_push, /* name */ /******************************************************************** -** Solidified function: getsubval +** Solidified function: to_str_val ********************************************************************/ -be_local_closure(Matter_TLV_list_getsubval, /* name */ +be_local_closure(Matter_TLV_list_to_str_val, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ + 4, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(getsub), - /* K1 */ be_nested_str_weak(val), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(tostring), }), - be_str_weak(getsubval), + be_str_weak(to_str_val), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x88080501, // 0003 GETMBR R2 R2 K1 - 0x80040400, // 0004 RET 1 R2 + ( &(const binstruction[ 4]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x500C0200, // 0001 LDBOOL R3 1 0 + 0x7C040400, // 0002 CALL R1 2 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -1996,27 +2214,33 @@ be_local_closure(Matter_TLV_list_getsubval, /* name */ /******************************************************************** -** Solidified function: setitem +** Solidified function: tostring ********************************************************************/ -be_local_closure(Matter_TLV_list_setitem, /* name */ +be_local_closure(Matter_TLV_list_tostring, /* name */ be_nested_proto( - 4, /* nstack */ - 3, /* argc */ + 8, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(val), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tostring_inner), + /* K1 */ be_nested_str_weak(_X5B_X5B), + /* K2 */ be_nested_str_weak(_X5D_X5D), }), - be_str_weak(setitem), + be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x980C0202, // 0001 SETIDX R3 R1 R2 - 0x80000000, // 0002 RET 0 + ( &(const binstruction[ 7]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x50100000, // 0001 LDBOOL R4 0 0 + 0x58140001, // 0002 LDCONST R5 K1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x7C080A00, // 0005 CALL R2 5 + 0x80040400, // 0006 RET 1 R2 }) ) ); @@ -2024,12 +2248,12 @@ be_local_closure(Matter_TLV_list_setitem, /* name */ /******************************************************************** -** Solidified function: item +** Solidified function: size ********************************************************************/ -be_local_closure(Matter_TLV_list_item, /* name */ +be_local_closure(Matter_TLV_list_size, /* name */ be_nested_proto( 3, /* nstack */ - 2, /* argc */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -2039,12 +2263,13 @@ be_local_closure(Matter_TLV_list_item, /* name */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(val), }), - be_str_weak(item), + be_str_weak(size), &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x94080401, // 0001 GETIDX R2 R2 R1 - 0x80040400, // 0002 RET 1 R2 + ( &(const binstruction[ 4]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -2052,12 +2277,12 @@ be_local_closure(Matter_TLV_list_item, /* name */ /******************************************************************** -** Solidified function: size +** Solidified function: setitem ********************************************************************/ -be_local_closure(Matter_TLV_list_size, /* name */ +be_local_closure(Matter_TLV_list_setitem, /* name */ be_nested_proto( - 3, /* nstack */ - 1, /* argc */ + 4, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -2067,13 +2292,12 @@ be_local_closure(Matter_TLV_list_size, /* name */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(val), }), - be_str_weak(size), + be_str_weak(setitem), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 + ( &(const binstruction[ 3]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x980C0202, // 0001 SETIDX R3 R1 R2 + 0x80000000, // 0002 RET 0 }) ) ); @@ -2081,11 +2305,11 @@ be_local_closure(Matter_TLV_list_size, /* name */ /******************************************************************** -** Solidified function: findsubtyp +** Solidified function: add_struct ********************************************************************/ -be_local_closure(Matter_TLV_list_findsubtyp, /* name */ +be_local_closure(Matter_TLV_list_add_struct, /* name */ be_nested_proto( - 5, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2093,23 +2317,26 @@ be_local_closure(Matter_TLV_list_findsubtyp, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(findsub), - /* K1 */ be_nested_str_weak(typ), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(TLV), + /* K1 */ be_nested_str_weak(Matter_TLV_struct), + /* K2 */ be_nested_str_weak(tag_sub), + /* K3 */ be_nested_str_weak(val), + /* K4 */ be_nested_str_weak(push), }), - be_str_weak(findsubtyp), + be_str_weak(add_struct), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x4C0C0000, // 0003 LDNIL R3 - 0x200C0403, // 0004 NE R3 R2 R3 - 0x780E0001, // 0005 JMPF R3 #0008 - 0x880C0501, // 0006 GETMBR R3 R2 K1 - 0x80040600, // 0007 RET 1 R3 - 0x4C0C0000, // 0008 LDNIL R3 - 0x80040600, // 0009 RET 1 R3 + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100000, // 0002 MOVE R4 R0 + 0x7C080400, // 0003 CALL R2 2 + 0x900A0401, // 0004 SETMBR R2 K2 R1 + 0x880C0103, // 0005 GETMBR R3 R0 K3 + 0x8C0C0704, // 0006 GETMET R3 R3 K4 + 0x5C140400, // 0007 MOVE R5 R2 + 0x7C0C0400, // 0008 CALL R3 2 + 0x80040400, // 0009 RET 1 R2 }) ) ); @@ -2156,123 +2383,50 @@ be_local_closure(Matter_TLV_list_add_list, /* name */ /******************************************************************** -** Solidified function: tostring_inner +** Solidified function: parse ********************************************************************/ -be_local_closure(Matter_TLV_list_tostring_inner, /* name */ +be_local_closure(Matter_TLV_list_parse, /* name */ be_nested_proto( - 9, /* nstack */ - 4, /* argc */ + 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[18]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(tag_profile), - /* K2 */ be_nested_str_weak(Matter_X3A_X3A), - /* K3 */ be_nested_str_weak(tag_number), - /* K4 */ be_nested_str_weak(0x_X2508X_X20), - /* K5 */ be_nested_str_weak(tag_vendor), - /* K6 */ be_nested_str_weak(0x_X2504X_X3A_X3A), - /* K7 */ be_nested_str_weak(0x_X2504X_X3A), - /* K8 */ be_nested_str_weak(tag_sub), - /* K9 */ be_nested_str_weak(_X25i_X20), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(_X3D_X20), - /* K12 */ be_nested_str_weak(val), - /* K13 */ be_nested_str_weak(copy), - /* K14 */ be_nested_str_weak(sort), - /* K15 */ be_nested_str_weak(concat), - /* K16 */ be_nested_str_weak(_X2C_X20), - /* K17 */ be_nested_str_weak(_X20), + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(TLV), + /* K1 */ be_nested_str_weak(EOC), + /* K2 */ be_nested_str_weak(parse), + /* K3 */ be_nested_str_weak(next_idx), + /* K4 */ be_nested_str_weak(val), + /* K5 */ be_nested_str_weak(push), + /* K6 */ be_const_int(1), }), - be_str_weak(tostring_inner), + be_str_weak(parse), &be_const_str_solidified, - ( &(const binstruction[82]) { /* code */ - 0x58100000, // 0000 LDCONST R4 K0 - 0xA8020047, // 0001 EXBLK 0 #004A - 0x88140101, // 0002 GETMBR R5 R0 K1 - 0x5419FFFE, // 0003 LDINT R6 -1 - 0x1C140A06, // 0004 EQ R5 R5 R6 - 0x7816000A, // 0005 JMPF R5 #0011 - 0x00100902, // 0006 ADD R4 R4 K2 - 0x88140103, // 0007 GETMBR R5 R0 K3 - 0x4C180000, // 0008 LDNIL R6 - 0x20140A06, // 0009 NE R5 R5 R6 - 0x78160004, // 000A JMPF R5 #0010 - 0x60140018, // 000B GETGBL R5 G24 - 0x58180004, // 000C LDCONST R6 K4 - 0x881C0103, // 000D GETMBR R7 R0 K3 - 0x7C140400, // 000E CALL R5 2 - 0x00100805, // 000F ADD R4 R4 R5 - 0x70020023, // 0010 JMP #0035 - 0x88140105, // 0011 GETMBR R5 R0 K5 - 0x4C180000, // 0012 LDNIL R6 - 0x20140A06, // 0013 NE R5 R5 R6 - 0x78160004, // 0014 JMPF R5 #001A - 0x60140018, // 0015 GETGBL R5 G24 - 0x58180006, // 0016 LDCONST R6 K6 - 0x881C0105, // 0017 GETMBR R7 R0 K5 - 0x7C140400, // 0018 CALL R5 2 - 0x00100805, // 0019 ADD R4 R4 R5 - 0x88140101, // 001A GETMBR R5 R0 K1 - 0x4C180000, // 001B LDNIL R6 - 0x20140A06, // 001C NE R5 R5 R6 - 0x78160004, // 001D JMPF R5 #0023 - 0x60140018, // 001E GETGBL R5 G24 - 0x58180007, // 001F LDCONST R6 K7 - 0x881C0101, // 0020 GETMBR R7 R0 K1 - 0x7C140400, // 0021 CALL R5 2 - 0x00100805, // 0022 ADD R4 R4 R5 - 0x88140103, // 0023 GETMBR R5 R0 K3 - 0x4C180000, // 0024 LDNIL R6 - 0x20140A06, // 0025 NE R5 R5 R6 - 0x78160004, // 0026 JMPF R5 #002C - 0x60140018, // 0027 GETGBL R5 G24 - 0x58180004, // 0028 LDCONST R6 K4 - 0x881C0103, // 0029 GETMBR R7 R0 K3 - 0x7C140400, // 002A CALL R5 2 - 0x00100805, // 002B ADD R4 R4 R5 - 0x88140108, // 002C GETMBR R5 R0 K8 - 0x4C180000, // 002D LDNIL R6 - 0x20140A06, // 002E NE R5 R5 R6 - 0x78160004, // 002F JMPF R5 #0035 - 0x60140018, // 0030 GETGBL R5 G24 - 0x58180009, // 0031 LDCONST R6 K9 - 0x881C0108, // 0032 GETMBR R7 R0 K8 - 0x7C140400, // 0033 CALL R5 2 - 0x00100805, // 0034 ADD R4 R4 R5 - 0x6014000C, // 0035 GETGBL R5 G12 - 0x5C180800, // 0036 MOVE R6 R4 - 0x7C140200, // 0037 CALL R5 1 - 0x24140B0A, // 0038 GT R5 R5 K10 - 0x78160000, // 0039 JMPF R5 #003B - 0x0010090B, // 003A ADD R4 R4 K11 - 0x00100802, // 003B ADD R4 R4 R2 - 0x8814010C, // 003C GETMBR R5 R0 K12 - 0x8C140B0D, // 003D GETMET R5 R5 K13 - 0x7C140200, // 003E CALL R5 1 - 0x78060002, // 003F JMPF R1 #0043 - 0x8C18010E, // 0040 GETMET R6 R0 K14 - 0x5C200A00, // 0041 MOVE R8 R5 - 0x7C180400, // 0042 CALL R6 2 - 0x8C180B0F, // 0043 GETMET R6 R5 K15 - 0x58200010, // 0044 LDCONST R8 K16 - 0x7C180400, // 0045 CALL R6 2 - 0x00100806, // 0046 ADD R4 R4 R6 - 0x00100803, // 0047 ADD R4 R4 R3 - 0xA8040001, // 0048 EXBLK 1 1 - 0x70020006, // 0049 JMP #0051 - 0xAC140002, // 004A CATCH R5 0 2 - 0x70020003, // 004B JMP #0050 - 0x001C0B11, // 004C ADD R7 R5 K17 - 0x001C0E06, // 004D ADD R7 R7 R6 - 0x80040E00, // 004E RET 1 R7 - 0x70020000, // 004F JMP #0051 - 0xB0080000, // 0050 RAISE 2 R0 R0 - 0x80040800, // 0051 RET 1 R4 + ( &(const binstruction[20]) { /* code */ + 0x940C0202, // 0000 GETIDX R3 R1 R2 + 0x88100100, // 0001 GETMBR R4 R0 K0 + 0x88100901, // 0002 GETMBR R4 R4 K1 + 0x200C0604, // 0003 NE R3 R3 R4 + 0x780E000B, // 0004 JMPF R3 #0011 + 0x880C0100, // 0005 GETMBR R3 R0 K0 + 0x8C0C0702, // 0006 GETMET R3 R3 K2 + 0x5C140200, // 0007 MOVE R5 R1 + 0x5C180400, // 0008 MOVE R6 R2 + 0x5C1C0000, // 0009 MOVE R7 R0 + 0x7C0C0800, // 000A CALL R3 4 + 0x88080703, // 000B GETMBR R2 R3 K3 + 0x88100104, // 000C GETMBR R4 R0 K4 + 0x8C100905, // 000D GETMET R4 R4 K5 + 0x5C180600, // 000E MOVE R6 R3 + 0x7C100400, // 000F CALL R4 2 + 0x7001FFEE, // 0010 JMP #0000 + 0x00080506, // 0011 ADD R2 R2 K6 + 0x90020602, // 0012 SETMBR R0 K3 R2 + 0x80040400, // 0013 RET 1 R2 }) ) ); @@ -2280,12 +2434,12 @@ be_local_closure(Matter_TLV_list_tostring_inner, /* name */ /******************************************************************** -** Solidified function: encode_len +** Solidified function: init ********************************************************************/ -be_local_closure(Matter_TLV_list_encode_len, /* name */ +be_local_closure(Matter_TLV_list_init, /* name */ be_nested_proto( 5, /* nstack */ - 1, /* argc */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -2293,32 +2447,56 @@ be_local_closure(Matter_TLV_list_encode_len, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_encode_tag_len), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(val), - /* K3 */ be_nested_str_weak(encode_len), - /* K4 */ be_const_int(1), + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(typ), + /* K2 */ be_nested_str_weak(TLV), + /* K3 */ be_nested_str_weak(LIST), + /* K4 */ be_nested_str_weak(val), }), - be_str_weak(encode_len), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x58080001, // 0002 LDCONST R2 K1 - 0x600C000C, // 0003 GETGBL R3 G12 - 0x88100102, // 0004 GETMBR R4 R0 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x140C0403, // 0006 LT R3 R2 R3 - 0x780E0006, // 0007 JMPF R3 #000F - 0x880C0102, // 0008 GETMBR R3 R0 K2 - 0x940C0602, // 0009 GETIDX R3 R3 R2 - 0x8C0C0703, // 000A GETMET R3 R3 K3 - 0x7C0C0200, // 000B CALL R3 1 - 0x00040203, // 000C ADD R1 R1 R3 - 0x00080504, // 000D ADD R2 R2 K4 - 0x7001FFF3, // 000E JMP #0003 - 0x00040304, // 000F ADD R1 R1 K4 - 0x80040200, // 0010 RET 1 R1 + ( &(const binstruction[13]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x88080102, // 0006 GETMBR R2 R0 K2 + 0x88080503, // 0007 GETMBR R2 R2 K3 + 0x90020202, // 0008 SETMBR R0 K1 R2 + 0x60080012, // 0009 GETGBL R2 G18 + 0x7C080000, // 000A CALL R2 0 + 0x90020802, // 000B SETMBR R0 K4 R2 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: item +********************************************************************/ +be_local_closure(Matter_TLV_list_item, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(val), + }), + be_str_weak(item), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x94080401, // 0001 GETIDX R2 R2 R1 + 0x80040400, // 0002 RET 1 R2 }) ) ); @@ -2326,11 +2504,11 @@ be_local_closure(Matter_TLV_list_encode_len, /* name */ /******************************************************************** -** Solidified function: findsubval +** Solidified function: add_obj ********************************************************************/ -be_local_closure(Matter_TLV_list_findsubval, /* name */ +be_local_closure(Matter_TLV_list_add_obj, /* name */ be_nested_proto( - 6, /* nstack */ + 7, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2338,22 +2516,36 @@ be_local_closure(Matter_TLV_list_findsubval, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(findsub), - /* K1 */ be_nested_str_weak(val), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(val), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(to_TLV), + /* K3 */ be_nested_str_weak(tag_sub), }), - be_str_weak(findsubval), + be_str_weak(add_obj), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x7C0C0400, // 0002 CALL R3 2 - 0x4C100000, // 0003 LDNIL R4 - 0x20100604, // 0004 NE R4 R3 R4 - 0x78120001, // 0005 JMPF R4 #0008 - 0x88100701, // 0006 GETMBR R4 R3 K1 - 0x80040800, // 0007 RET 1 R4 - 0x80040400, // 0008 RET 1 R2 + ( &(const binstruction[21]) { /* code */ + 0x4C0C0000, // 0000 LDNIL R3 + 0x200C0403, // 0001 NE R3 R2 R3 + 0x780E0010, // 0002 JMPF R3 #0014 + 0x600C000F, // 0003 GETGBL R3 G15 + 0x5C100400, // 0004 MOVE R4 R2 + 0x60140015, // 0005 GETGBL R5 G21 + 0x7C0C0400, // 0006 CALL R3 2 + 0x780E0004, // 0007 JMPF R3 #000D + 0x880C0100, // 0008 GETMBR R3 R0 K0 + 0x8C0C0701, // 0009 GETMET R3 R3 K1 + 0x5C140400, // 000A MOVE R5 R2 + 0x7C0C0400, // 000B CALL R3 2 + 0x70020006, // 000C JMP #0014 + 0x8C0C0502, // 000D GETMET R3 R2 K2 + 0x7C0C0200, // 000E CALL R3 1 + 0x900E0601, // 000F SETMBR R3 K3 R1 + 0x88100100, // 0010 GETMBR R4 R0 K0 + 0x8C100901, // 0011 GETMET R4 R4 K1 + 0x5C180600, // 0012 MOVE R6 R3 + 0x7C100400, // 0013 CALL R4 2 + 0x80040000, // 0014 RET 1 R0 }) ) ); @@ -2361,9 +2553,9 @@ be_local_closure(Matter_TLV_list_findsubval, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: getsubval ********************************************************************/ -be_local_closure(Matter_TLV_list_init, /* name */ +be_local_closure(Matter_TLV_list_getsubval, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -2373,29 +2565,18 @@ be_local_closure(Matter_TLV_list_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(typ), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(LIST), - /* K4 */ be_nested_str_weak(val), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(getsub), + /* K1 */ be_nested_str_weak(val), }), - be_str_weak(init), + be_str_weak(getsubval), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x88080102, // 0006 GETMBR R2 R0 K2 - 0x88080503, // 0007 GETMBR R2 R2 K3 - 0x90020202, // 0008 SETMBR R0 K1 R2 - 0x60080012, // 0009 GETGBL R2 G18 - 0x7C080000, // 000A CALL R2 0 - 0x90020802, // 000B SETMBR R0 K4 R2 - 0x80000000, // 000C RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x88080501, // 0003 GETMBR R2 R2 K1 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -2403,11 +2584,11 @@ be_local_closure(Matter_TLV_list_init, /* name */ /******************************************************************** -** Solidified function: add_array +** Solidified function: getsub ********************************************************************/ -be_local_closure(Matter_TLV_list_add_array, /* name */ +be_local_closure(Matter_TLV_list_getsub, /* name */ be_nested_proto( - 6, /* nstack */ + 5, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2415,26 +2596,22 @@ be_local_closure(Matter_TLV_list_add_array, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(TLV), - /* K1 */ be_nested_str_weak(Matter_TLV_array), - /* K2 */ be_nested_str_weak(tag_sub), - /* K3 */ be_nested_str_weak(val), - /* K4 */ be_nested_str_weak(push), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(findsub), + /* K1 */ be_nested_str_weak(value_error), + /* K2 */ be_nested_str_weak(sub_X20not_X20found), }), - be_str_weak(add_array), + be_str_weak(getsub), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100000, // 0002 MOVE R4 R0 - 0x7C080400, // 0003 CALL R2 2 - 0x900A0401, // 0004 SETMBR R2 K2 R1 - 0x880C0103, // 0005 GETMBR R3 R0 K3 - 0x8C0C0704, // 0006 GETMET R3 R3 K4 - 0x5C140400, // 0007 MOVE R5 R2 - 0x7C0C0400, // 0008 CALL R3 2 - 0x80040400, // 0009 RET 1 R2 + ( &(const binstruction[ 8]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0403, // 0004 EQ R3 R2 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0xB0060302, // 0006 RAISE 1 K1 K2 + 0x80040400, // 0007 RET 1 R2 }) ) ); @@ -2442,51 +2619,42 @@ be_local_closure(Matter_TLV_list_add_array, /* name */ /******************************************************************** -** Solidified function: add_TLV +** Solidified function: findsub ********************************************************************/ -be_local_closure(Matter_TLV_list_add_TLV, /* name */ +be_local_closure(Matter_TLV_list_findsub, /* name */ be_nested_proto( - 8, /* nstack */ - 4, /* argc */ + 6, /* nstack */ + 3, /* 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(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(NULL), - /* K3 */ be_nested_str_weak(Matter_TLV_item), - /* K4 */ be_nested_str_weak(tag_sub), - /* K5 */ be_nested_str_weak(typ), - /* K6 */ be_nested_str_weak(val), - /* K7 */ be_nested_str_weak(push), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(val), + /* K1 */ be_nested_str_weak(tag_sub), + /* K2 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(add_TLV), + be_str_weak(findsub), &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x20100604, // 0001 NE R4 R3 R4 - 0x74120004, // 0002 JMPT R4 #0008 - 0xB8120000, // 0003 GETNGBL R4 K0 - 0x88100901, // 0004 GETMBR R4 R4 K1 - 0x88100902, // 0005 GETMBR R4 R4 K2 - 0x1C100404, // 0006 EQ R4 R2 R4 - 0x7812000A, // 0007 JMPF R4 #0013 - 0x88100101, // 0008 GETMBR R4 R0 K1 - 0x8C100903, // 0009 GETMET R4 R4 K3 - 0x5C180000, // 000A MOVE R6 R0 - 0x7C100400, // 000B CALL R4 2 - 0x90120801, // 000C SETMBR R4 K4 R1 - 0x90120A02, // 000D SETMBR R4 K5 R2 - 0x90120C03, // 000E SETMBR R4 K6 R3 - 0x88140106, // 000F GETMBR R5 R0 K6 - 0x8C140B07, // 0010 GETMET R5 R5 K7 - 0x5C1C0800, // 0011 MOVE R7 R4 - 0x7C140400, // 0012 CALL R5 2 - 0x80040000, // 0013 RET 1 R0 + ( &(const binstruction[16]) { /* code */ + 0x600C0010, // 0000 GETGBL R3 G16 + 0x88100100, // 0001 GETMBR R4 R0 K0 + 0x7C0C0200, // 0002 CALL R3 1 + 0xA8020007, // 0003 EXBLK 0 #000C + 0x5C100600, // 0004 MOVE R4 R3 + 0x7C100000, // 0005 CALL R4 0 + 0x88140901, // 0006 GETMBR R5 R4 K1 + 0x1C140A01, // 0007 EQ R5 R5 R1 + 0x78160001, // 0008 JMPF R5 #000B + 0xA8040001, // 0009 EXBLK 1 1 + 0x80040800, // 000A RET 1 R4 + 0x7001FFF7, // 000B JMP #0004 + 0x580C0002, // 000C LDCONST R3 K2 + 0xAC0C0200, // 000D CATCH R3 1 0 + 0xB0080000, // 000E RAISE 2 R0 R0 + 0x80040400, // 000F RET 1 R2 }) ) ); @@ -2494,78 +2662,51 @@ be_local_closure(Matter_TLV_list_add_TLV, /* name */ /******************************************************************** -** Solidified function: tlv2raw +** Solidified function: add_TLV ********************************************************************/ -be_local_closure(Matter_TLV_list_tlv2raw, /* name */ +be_local_closure(Matter_TLV_list_add_TLV, /* name */ be_nested_proto( 8, /* nstack */ - 2, /* argc */ + 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(_encode_tag), - /* K1 */ be_nested_str_weak(val), - /* K2 */ be_nested_str_weak(is_struct), - /* K3 */ be_nested_str_weak(copy), - /* K4 */ be_nested_str_weak(sort), - /* K5 */ be_nested_str_weak(tlv2raw), - /* K6 */ be_nested_str_weak(stop_iteration), - /* K7 */ be_nested_str_weak(add), - /* K8 */ be_nested_str_weak(TLV), - /* K9 */ be_nested_str_weak(EOC), - /* K10 */ be_const_int(1), - }), - be_str_weak(tlv2raw), - &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0002, // 0002 JMPF R2 #0006 - 0x60080015, // 0003 GETGBL R2 G21 - 0x7C080000, // 0004 CALL R2 0 - 0x5C040400, // 0005 MOVE R1 R2 - 0x8C080100, // 0006 GETMET R2 R0 K0 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C080400, // 0008 CALL R2 2 - 0x88080101, // 0009 GETMBR R2 R0 K1 - 0x880C0102, // 000A GETMBR R3 R0 K2 - 0x780E0005, // 000B JMPF R3 #0012 - 0x8C0C0503, // 000C GETMET R3 R2 K3 - 0x7C0C0200, // 000D CALL R3 1 - 0x5C080600, // 000E MOVE R2 R3 - 0x8C0C0104, // 000F GETMET R3 R0 K4 - 0x5C140400, // 0010 MOVE R5 R2 - 0x7C0C0400, // 0011 CALL R3 2 - 0x600C0010, // 0012 GETGBL R3 G16 - 0x5C100400, // 0013 MOVE R4 R2 - 0x7C0C0200, // 0014 CALL R3 1 - 0xA802000C, // 0015 EXBLK 0 #0023 - 0x5C100600, // 0016 MOVE R4 R3 - 0x7C100000, // 0017 CALL R4 0 - 0x6014000F, // 0018 GETGBL R5 G15 - 0x5C180800, // 0019 MOVE R6 R4 - 0x601C0015, // 001A GETGBL R7 G21 - 0x7C140400, // 001B CALL R5 2 - 0x78160001, // 001C JMPF R5 #001F - 0x40140204, // 001D CONNECT R5 R1 R4 - 0x70020002, // 001E JMP #0022 - 0x8C140905, // 001F GETMET R5 R4 K5 - 0x5C1C0200, // 0020 MOVE R7 R1 - 0x7C140400, // 0021 CALL R5 2 - 0x7001FFF2, // 0022 JMP #0016 - 0x580C0006, // 0023 LDCONST R3 K6 - 0xAC0C0200, // 0024 CATCH R3 1 0 - 0xB0080000, // 0025 RAISE 2 R0 R0 - 0x8C0C0307, // 0026 GETMET R3 R1 K7 - 0x88140108, // 0027 GETMBR R5 R0 K8 - 0x88140B09, // 0028 GETMBR R5 R5 K9 - 0x5818000A, // 0029 LDCONST R6 K10 - 0x7C0C0600, // 002A CALL R3 3 - 0x80040200, // 002B RET 1 R1 + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(NULL), + /* K3 */ be_nested_str_weak(Matter_TLV_item), + /* K4 */ be_nested_str_weak(tag_sub), + /* K5 */ be_nested_str_weak(typ), + /* K6 */ be_nested_str_weak(val), + /* K7 */ be_nested_str_weak(push), + }), + be_str_weak(add_TLV), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x20100604, // 0001 NE R4 R3 R4 + 0x74120004, // 0002 JMPT R4 #0008 + 0xB8120000, // 0003 GETNGBL R4 K0 + 0x88100901, // 0004 GETMBR R4 R4 K1 + 0x88100902, // 0005 GETMBR R4 R4 K2 + 0x1C100404, // 0006 EQ R4 R2 R4 + 0x7812000A, // 0007 JMPF R4 #0013 + 0x88100101, // 0008 GETMBR R4 R0 K1 + 0x8C100903, // 0009 GETMET R4 R4 K3 + 0x5C180000, // 000A MOVE R6 R0 + 0x7C100400, // 000B CALL R4 2 + 0x90120801, // 000C SETMBR R4 K4 R1 + 0x90120A02, // 000D SETMBR R4 K5 R2 + 0x90120C03, // 000E SETMBR R4 K6 R3 + 0x88140106, // 000F GETMBR R5 R0 K6 + 0x8C140B07, // 0010 GETMET R5 R5 K7 + 0x5C1C0800, // 0011 MOVE R7 R4 + 0x7C140400, // 0012 CALL R5 2 + 0x80040000, // 0013 RET 1 R0 }) ) ); @@ -2573,42 +2714,38 @@ be_local_closure(Matter_TLV_list_tlv2raw, /* name */ /******************************************************************** -** Solidified function: findsub +** Solidified function: add_array ********************************************************************/ -be_local_closure(Matter_TLV_list_findsub, /* name */ +be_local_closure(Matter_TLV_list_add_array, /* name */ be_nested_proto( 6, /* nstack */ - 3, /* argc */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(val), - /* K1 */ be_nested_str_weak(tag_sub), - /* K2 */ be_nested_str_weak(stop_iteration), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(TLV), + /* K1 */ be_nested_str_weak(Matter_TLV_array), + /* K2 */ be_nested_str_weak(tag_sub), + /* K3 */ be_nested_str_weak(val), + /* K4 */ be_nested_str_weak(push), }), - be_str_weak(findsub), + be_str_weak(add_array), &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x600C0010, // 0000 GETGBL R3 G16 - 0x88100100, // 0001 GETMBR R4 R0 K0 - 0x7C0C0200, // 0002 CALL R3 1 - 0xA8020007, // 0003 EXBLK 0 #000C - 0x5C100600, // 0004 MOVE R4 R3 - 0x7C100000, // 0005 CALL R4 0 - 0x88140901, // 0006 GETMBR R5 R4 K1 - 0x1C140A01, // 0007 EQ R5 R5 R1 - 0x78160001, // 0008 JMPF R5 #000B - 0xA8040001, // 0009 EXBLK 1 1 - 0x80040800, // 000A RET 1 R4 - 0x7001FFF7, // 000B JMP #0004 - 0x580C0002, // 000C LDCONST R3 K2 - 0xAC0C0200, // 000D CATCH R3 1 0 - 0xB0080000, // 000E RAISE 2 R0 R0 - 0x80040400, // 000F RET 1 R2 + ( &(const binstruction[10]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100000, // 0002 MOVE R4 R0 + 0x7C080400, // 0003 CALL R2 2 + 0x900A0401, // 0004 SETMBR R2 K2 R1 + 0x880C0103, // 0005 GETMBR R3 R0 K3 + 0x8C0C0704, // 0006 GETMET R3 R3 K4 + 0x5C140400, // 0007 MOVE R5 R2 + 0x7C0C0400, // 0008 CALL R3 2 + 0x80040400, // 0009 RET 1 R2 }) ) ); @@ -2616,32 +2753,30 @@ be_local_closure(Matter_TLV_list_findsub, /* name */ /******************************************************************** -** Solidified function: tostring +** Solidified function: push ********************************************************************/ -be_local_closure(Matter_TLV_list_tostring, /* name */ +be_local_closure(Matter_TLV_list_push, /* name */ be_nested_proto( - 6, /* nstack */ - 1, /* argc */ + 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[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tostring_inner), - /* K1 */ be_nested_str_weak(_X5B_X5B), - /* K2 */ be_nested_str_weak(_X5D_X5D), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(val), + /* K1 */ be_nested_str_weak(push), }), - be_str_weak(tostring), + be_str_weak(push), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x500C0000, // 0001 LDBOOL R3 0 0 - 0x58100001, // 0002 LDCONST R4 K1 - 0x58140002, // 0003 LDCONST R5 K2 - 0x7C040800, // 0004 CALL R1 4 - 0x80040200, // 0005 RET 1 R1 + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80000000, // 0004 RET 0 }) ) ); @@ -2649,50 +2784,126 @@ be_local_closure(Matter_TLV_list_tostring, /* name */ /******************************************************************** -** Solidified function: parse +** Solidified function: tostring_inner ********************************************************************/ -be_local_closure(Matter_TLV_list_parse, /* name */ +be_local_closure(Matter_TLV_list_tostring_inner, /* name */ be_nested_proto( - 8, /* nstack */ - 3, /* argc */ + 10, /* nstack */ + 5, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(TLV), - /* K1 */ be_nested_str_weak(EOC), - /* K2 */ be_nested_str_weak(parse), - /* K3 */ be_nested_str_weak(next_idx), - /* K4 */ be_nested_str_weak(val), - /* K5 */ be_nested_str_weak(push), - /* K6 */ be_const_int(1), + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(), + /* K1 */ be_nested_str_weak(tag_profile), + /* K2 */ be_nested_str_weak(Matter_X3A_X3A), + /* K3 */ be_nested_str_weak(tag_number), + /* K4 */ be_nested_str_weak(0x_X2508X_X20), + /* K5 */ be_nested_str_weak(tag_vendor), + /* K6 */ be_nested_str_weak(0x_X2504X_X3A_X3A), + /* K7 */ be_nested_str_weak(0x_X2504X_X3A), + /* K8 */ be_nested_str_weak(tag_sub), + /* K9 */ be_nested_str_weak(_X25i_X20), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(_X3D_X20), + /* K12 */ be_nested_str_weak(val), + /* K13 */ be_nested_str_weak(copy), + /* K14 */ be_nested_str_weak(sort), + /* K15 */ be_nested_str_weak(concat), + /* K16 */ be_nested_str_weak(_X2C_X20), + /* K17 */ be_nested_str_weak(_X20), }), - be_str_weak(parse), + be_str_weak(tostring_inner), &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x940C0202, // 0000 GETIDX R3 R1 R2 - 0x88100100, // 0001 GETMBR R4 R0 K0 - 0x88100901, // 0002 GETMBR R4 R4 K1 - 0x200C0604, // 0003 NE R3 R3 R4 - 0x780E000B, // 0004 JMPF R3 #0011 - 0x880C0100, // 0005 GETMBR R3 R0 K0 - 0x8C0C0702, // 0006 GETMET R3 R3 K2 - 0x5C140200, // 0007 MOVE R5 R1 - 0x5C180400, // 0008 MOVE R6 R2 - 0x5C1C0000, // 0009 MOVE R7 R0 - 0x7C0C0800, // 000A CALL R3 4 - 0x88080703, // 000B GETMBR R2 R3 K3 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x8C100905, // 000D GETMET R4 R4 K5 - 0x5C180600, // 000E MOVE R6 R3 - 0x7C100400, // 000F CALL R4 2 - 0x7001FFEE, // 0010 JMP #0000 - 0x00080506, // 0011 ADD R2 R2 K6 - 0x90020602, // 0012 SETMBR R0 K3 R2 - 0x80040400, // 0013 RET 1 R2 + ( &(const binstruction[85]) { /* code */ + 0x58140000, // 0000 LDCONST R5 K0 + 0xA802004A, // 0001 EXBLK 0 #004D + 0x50180200, // 0002 LDBOOL R6 1 0 + 0x20180806, // 0003 NE R6 R4 R6 + 0x781A0038, // 0004 JMPF R6 #003E + 0x88180101, // 0005 GETMBR R6 R0 K1 + 0x541DFFFE, // 0006 LDINT R7 -1 + 0x1C180C07, // 0007 EQ R6 R6 R7 + 0x781A000A, // 0008 JMPF R6 #0014 + 0x00140B02, // 0009 ADD R5 R5 K2 + 0x88180103, // 000A GETMBR R6 R0 K3 + 0x4C1C0000, // 000B LDNIL R7 + 0x20180C07, // 000C NE R6 R6 R7 + 0x781A0004, // 000D JMPF R6 #0013 + 0x60180018, // 000E GETGBL R6 G24 + 0x581C0004, // 000F LDCONST R7 K4 + 0x88200103, // 0010 GETMBR R8 R0 K3 + 0x7C180400, // 0011 CALL R6 2 + 0x00140A06, // 0012 ADD R5 R5 R6 + 0x70020023, // 0013 JMP #0038 + 0x88180105, // 0014 GETMBR R6 R0 K5 + 0x4C1C0000, // 0015 LDNIL R7 + 0x20180C07, // 0016 NE R6 R6 R7 + 0x781A0004, // 0017 JMPF R6 #001D + 0x60180018, // 0018 GETGBL R6 G24 + 0x581C0006, // 0019 LDCONST R7 K6 + 0x88200105, // 001A GETMBR R8 R0 K5 + 0x7C180400, // 001B CALL R6 2 + 0x00140A06, // 001C ADD R5 R5 R6 + 0x88180101, // 001D GETMBR R6 R0 K1 + 0x4C1C0000, // 001E LDNIL R7 + 0x20180C07, // 001F NE R6 R6 R7 + 0x781A0004, // 0020 JMPF R6 #0026 + 0x60180018, // 0021 GETGBL R6 G24 + 0x581C0007, // 0022 LDCONST R7 K7 + 0x88200101, // 0023 GETMBR R8 R0 K1 + 0x7C180400, // 0024 CALL R6 2 + 0x00140A06, // 0025 ADD R5 R5 R6 + 0x88180103, // 0026 GETMBR R6 R0 K3 + 0x4C1C0000, // 0027 LDNIL R7 + 0x20180C07, // 0028 NE R6 R6 R7 + 0x781A0004, // 0029 JMPF R6 #002F + 0x60180018, // 002A GETGBL R6 G24 + 0x581C0004, // 002B LDCONST R7 K4 + 0x88200103, // 002C GETMBR R8 R0 K3 + 0x7C180400, // 002D CALL R6 2 + 0x00140A06, // 002E ADD R5 R5 R6 + 0x88180108, // 002F GETMBR R6 R0 K8 + 0x4C1C0000, // 0030 LDNIL R7 + 0x20180C07, // 0031 NE R6 R6 R7 + 0x781A0004, // 0032 JMPF R6 #0038 + 0x60180018, // 0033 GETGBL R6 G24 + 0x581C0009, // 0034 LDCONST R7 K9 + 0x88200108, // 0035 GETMBR R8 R0 K8 + 0x7C180400, // 0036 CALL R6 2 + 0x00140A06, // 0037 ADD R5 R5 R6 + 0x6018000C, // 0038 GETGBL R6 G12 + 0x5C1C0A00, // 0039 MOVE R7 R5 + 0x7C180200, // 003A CALL R6 1 + 0x24180D0A, // 003B GT R6 R6 K10 + 0x781A0000, // 003C JMPF R6 #003E + 0x00140B0B, // 003D ADD R5 R5 K11 + 0x00140A02, // 003E ADD R5 R5 R2 + 0x8818010C, // 003F GETMBR R6 R0 K12 + 0x8C180D0D, // 0040 GETMET R6 R6 K13 + 0x7C180200, // 0041 CALL R6 1 + 0x78060002, // 0042 JMPF R1 #0046 + 0x8C1C010E, // 0043 GETMET R7 R0 K14 + 0x5C240C00, // 0044 MOVE R9 R6 + 0x7C1C0400, // 0045 CALL R7 2 + 0x8C1C0D0F, // 0046 GETMET R7 R6 K15 + 0x58240010, // 0047 LDCONST R9 K16 + 0x7C1C0400, // 0048 CALL R7 2 + 0x00140A07, // 0049 ADD R5 R5 R7 + 0x00140A03, // 004A ADD R5 R5 R3 + 0xA8040001, // 004B EXBLK 1 1 + 0x70020006, // 004C JMP #0054 + 0xAC180002, // 004D CATCH R6 0 2 + 0x70020003, // 004E JMP #0053 + 0x00200D11, // 004F ADD R8 R6 K17 + 0x00201007, // 0050 ADD R8 R8 R7 + 0x80041000, // 0051 RET 1 R8 + 0x70020000, // 0052 JMP #0054 + 0xB0080000, // 0053 RAISE 2 R0 R0 + 0x80040A00, // 0054 RET 1 R5 }) ) ); @@ -2700,9 +2911,9 @@ be_local_closure(Matter_TLV_list_parse, /* name */ /******************************************************************** -** Solidified function: getsub +** Solidified function: findsubtyp ********************************************************************/ -be_local_closure(Matter_TLV_list_getsub, /* name */ +be_local_closure(Matter_TLV_list_findsubtyp, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -2712,22 +2923,69 @@ be_local_closure(Matter_TLV_list_getsub, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ + ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(findsub), - /* K1 */ be_nested_str_weak(value_error), - /* K2 */ be_nested_str_weak(sub_X20not_X20found), + /* K1 */ be_nested_str_weak(typ), }), - be_str_weak(getsub), + be_str_weak(findsubtyp), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ + ( &(const binstruction[10]) { /* code */ 0x8C080100, // 0000 GETMET R2 R0 K0 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0403, // 0004 EQ R3 R2 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0xB0060302, // 0006 RAISE 1 K1 K2 - 0x80040400, // 0007 RET 1 R2 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E0001, // 0005 JMPF R3 #0008 + 0x880C0501, // 0006 GETMBR R3 R2 K1 + 0x80040600, // 0007 RET 1 R3 + 0x4C0C0000, // 0008 LDNIL R3 + 0x80040600, // 0009 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: encode_len +********************************************************************/ +be_local_closure(Matter_TLV_list_encode_len, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(_encode_tag_len), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(val), + /* K3 */ be_nested_str_weak(encode_len), + /* K4 */ be_const_int(1), + }), + be_str_weak(encode_len), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x58080001, // 0002 LDCONST R2 K1 + 0x600C000C, // 0003 GETGBL R3 G12 + 0x88100102, // 0004 GETMBR R4 R0 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x140C0403, // 0006 LT R3 R2 R3 + 0x780E0006, // 0007 JMPF R3 #000F + 0x880C0102, // 0008 GETMBR R3 R0 K2 + 0x940C0602, // 0009 GETIDX R3 R3 R2 + 0x8C0C0703, // 000A GETMET R3 R3 K3 + 0x7C0C0200, // 000B CALL R3 1 + 0x00040203, // 000C ADD R1 R1 R3 + 0x00080504, // 000D ADD R2 R2 K4 + 0x7001FFF3, // 000E JMP #0003 + 0x00040304, // 000F ADD R1 R1 K4 + 0x80040200, // 0010 RET 1 R1 }) ) ); @@ -2741,29 +2999,30 @@ extern const bclass be_class_Matter_TLV_item; be_local_class(Matter_TLV_list, 0, &be_class_Matter_TLV_item, - be_nested_map(21, + be_nested_map(22, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(add_obj, -1), be_const_closure(Matter_TLV_list_add_obj_closure) }, - { be_const_key_weak(add_struct, -1), be_const_closure(Matter_TLV_list_add_struct_closure) }, - { be_const_key_weak(push, -1), be_const_closure(Matter_TLV_list_push_closure) }, - { be_const_key_weak(getsubval, 20), be_const_closure(Matter_TLV_list_getsubval_closure) }, - { be_const_key_weak(getsub, -1), be_const_closure(Matter_TLV_list_getsub_closure) }, - { be_const_key_weak(parse, -1), be_const_closure(Matter_TLV_list_parse_closure) }, + { be_const_key_weak(encode_len, 14), be_const_closure(Matter_TLV_list_encode_len_closure) }, + { be_const_key_weak(tlv2raw, -1), be_const_closure(Matter_TLV_list_tlv2raw_closure) }, + { be_const_key_weak(to_str_val, 19), be_const_closure(Matter_TLV_list_to_str_val_closure) }, + { be_const_key_weak(findsubval, 7), be_const_closure(Matter_TLV_list_findsubval_closure) }, { be_const_key_weak(size, -1), be_const_closure(Matter_TLV_list_size_closure) }, - { be_const_key_weak(findsubtyp, -1), be_const_closure(Matter_TLV_list_findsubtyp_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(Matter_TLV_list_tostring_closure) }, - { be_const_key_weak(tostring_inner, 4), be_const_closure(Matter_TLV_list_tostring_inner_closure) }, - { be_const_key_weak(encode_len, 8), be_const_closure(Matter_TLV_list_encode_len_closure) }, - { be_const_key_weak(findsubval, -1), be_const_closure(Matter_TLV_list_findsubval_closure) }, - { be_const_key_weak(init, -1), be_const_closure(Matter_TLV_list_init_closure) }, - { be_const_key_weak(add_array, 16), be_const_closure(Matter_TLV_list_add_array_closure) }, - { be_const_key_weak(setitem, 15), be_const_closure(Matter_TLV_list_setitem_closure) }, - { be_const_key_weak(tlv2raw, 18), be_const_closure(Matter_TLV_list_tlv2raw_closure) }, - { be_const_key_weak(findsub, -1), be_const_closure(Matter_TLV_list_findsub_closure) }, { be_const_key_weak(is_struct, -1), be_const_bool(0) }, + { be_const_key_weak(add_struct, 20), be_const_closure(Matter_TLV_list_add_struct_closure) }, + { be_const_key_weak(findsubtyp, 21), be_const_closure(Matter_TLV_list_findsubtyp_closure) }, + { be_const_key_weak(parse, -1), be_const_closure(Matter_TLV_list_parse_closure) }, + { be_const_key_weak(init, 0), be_const_closure(Matter_TLV_list_init_closure) }, + { be_const_key_weak(item, -1), be_const_closure(Matter_TLV_list_item_closure) }, + { be_const_key_weak(tostring_inner, -1), be_const_closure(Matter_TLV_list_tostring_inner_closure) }, + { be_const_key_weak(getsubval, -1), be_const_closure(Matter_TLV_list_getsubval_closure) }, + { be_const_key_weak(getsub, 5), be_const_closure(Matter_TLV_list_getsub_closure) }, + { be_const_key_weak(push, -1), be_const_closure(Matter_TLV_list_push_closure) }, + { be_const_key_weak(add_list, 17), be_const_closure(Matter_TLV_list_add_list_closure) }, + { be_const_key_weak(add_array, -1), be_const_closure(Matter_TLV_list_add_array_closure) }, { be_const_key_weak(add_TLV, -1), be_const_closure(Matter_TLV_list_add_TLV_closure) }, - { be_const_key_weak(item, 5), be_const_closure(Matter_TLV_list_item_closure) }, - { be_const_key_weak(add_list, -1), be_const_closure(Matter_TLV_list_add_list_closure) }, + { be_const_key_weak(setitem, 11), be_const_closure(Matter_TLV_list_setitem_closure) }, + { be_const_key_weak(findsub, -1), be_const_closure(Matter_TLV_list_findsub_closure) }, + { be_const_key_weak(add_obj, -1), be_const_closure(Matter_TLV_list_add_obj_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(Matter_TLV_list_tostring_closure) }, })), be_str_weak(Matter_TLV_list) ); @@ -2824,8 +3083,8 @@ be_local_closure(Matter_TLV_struct_init, /* name */ ********************************************************************/ be_local_closure(Matter_TLV_struct_tostring, /* name */ be_nested_proto( - 6, /* nstack */ - 1, /* argc */ + 8, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -2839,13 +3098,14 @@ be_local_closure(Matter_TLV_struct_tostring, /* name */ }), be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x500C0200, // 0001 LDBOOL R3 1 0 - 0x58100001, // 0002 LDCONST R4 K1 - 0x58140002, // 0003 LDCONST R5 K2 - 0x7C040800, // 0004 CALL R1 4 - 0x80040200, // 0005 RET 1 R1 + ( &(const binstruction[ 7]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x50100200, // 0001 LDBOOL R4 1 0 + 0x58140001, // 0002 LDCONST R5 K1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x7C080A00, // 0005 CALL R2 5 + 0x80040400, // 0006 RET 1 R2 }) ) ); @@ -2987,8 +3247,8 @@ be_local_closure(Matter_TLV_array_parse, /* name */ ********************************************************************/ be_local_closure(Matter_TLV_array_tostring, /* name */ be_nested_proto( - 6, /* nstack */ - 1, /* argc */ + 8, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -3002,13 +3262,14 @@ be_local_closure(Matter_TLV_array_tostring, /* name */ }), be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x500C0000, // 0001 LDBOOL R3 0 0 - 0x58100001, // 0002 LDCONST R4 K1 - 0x58140002, // 0003 LDCONST R5 K2 - 0x7C040800, // 0004 CALL R1 4 - 0x80040200, // 0005 RET 1 R1 + ( &(const binstruction[ 7]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x50100000, // 0001 LDBOOL R4 0 0 + 0x58140001, // 0002 LDCONST R5 K1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x7C080A00, // 0005 CALL R2 5 + 0x80040400, // 0006 RET 1 R2 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h index 1ae1625fc464..0dd231c3afc2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h @@ -120,110 +120,27 @@ void be_load_Matter_UDPPacket_sent_class(bvm *vm) { extern const bclass be_class_Matter_UDPServer; /******************************************************************** -** Solidified function: _backoff_time -********************************************************************/ -be_local_closure(Matter_UDPServer__backoff_time, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_const_int(1), - /* K1 */ be_const_int(0), - }), - be_str_weak(power_int), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x240C0301, // 0001 GT R3 R1 K1 - 0x780E0002, // 0002 JMPF R3 #0006 - 0x08080400, // 0003 MUL R2 R2 R0 - 0x04040300, // 0004 SUB R1 R1 K0 - 0x7001FFFA, // 0005 JMP #0001 - 0x80040400, // 0006 RET 1 R2 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_UDPServer), - /* K1 */ be_nested_str_weak(math), - /* K2 */ be_nested_str_weak(rand), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(1), - /* K5 */ be_const_real_hex(0x3FCCCCCD), - /* K6 */ be_const_real_hex(0x3F800000), - /* K7 */ be_const_real_hex(0x3E800000), - }), - be_str_weak(_backoff_time), - &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x84080000, // 0001 CLOSURE R2 P0 - 0xA40E0200, // 0002 IMPORT R3 K1 - 0x5412012B, // 0003 LDINT R4 300 - 0x6014000A, // 0004 GETGBL R5 G10 - 0x8C180702, // 0005 GETMET R6 R3 K2 - 0x7C180200, // 0006 CALL R6 1 - 0x541E00FE, // 0007 LDINT R7 255 - 0x2C180C07, // 0008 AND R6 R6 R7 - 0x7C140200, // 0009 CALL R5 1 - 0x541A00FE, // 000A LDINT R6 255 - 0x0C140A06, // 000B DIV R5 R5 R6 - 0x24180103, // 000C GT R6 R0 K3 - 0x781A0001, // 000D JMPF R6 #0010 - 0x04180104, // 000E SUB R6 R0 K4 - 0x70020000, // 000F JMP #0011 - 0x58180003, // 0010 LDCONST R6 K3 - 0x5C1C0400, // 0011 MOVE R7 R2 - 0x58200005, // 0012 LDCONST R8 K5 - 0x5C240C00, // 0013 MOVE R9 R6 - 0x7C1C0400, // 0014 CALL R7 2 - 0x081C0807, // 0015 MUL R7 R4 R7 - 0x08200B07, // 0016 MUL R8 R5 K7 - 0x00220C08, // 0017 ADD R8 K6 R8 - 0x081C0E08, // 0018 MUL R7 R7 R8 - 0x60200009, // 0019 GETGBL R8 G9 - 0x5C240E00, // 001A MOVE R9 R7 - 0x7C200200, // 001B CALL R8 1 - 0x80041000, // 001C RET 1 R8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_second +** Solidified function: every_50ms ********************************************************************/ -be_local_closure(Matter_UDPServer_every_second, /* name */ +be_local_closure(Matter_UDPServer_every_50ms, /* name */ be_nested_proto( - 1, /* nstack */ + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(every_second), + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(loop), + }), + be_str_weak(every_50ms), &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 + ( &(const binstruction[ 3]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 }) ) ); @@ -274,110 +191,6 @@ be_local_closure(Matter_UDPServer_send_UDP, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: _resend_packets -********************************************************************/ -be_local_closure(Matter_UDPServer__resend_packets, /* 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[20]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(packets_sent), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(time_reached), - /* K4 */ be_nested_str_weak(next_try), - /* K5 */ be_nested_str_weak(retries), - /* K6 */ be_nested_str_weak(RETRIES), - /* 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_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(remove), - /* K15 */ 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), - /* K16 */ be_nested_str_weak(session_id), - /* K17 */ be_nested_str_weak(addr), - /* K18 */ be_nested_str_weak(port), - /* K19 */ be_const_int(3), - }), - be_str_weak(_resend_packets), - &be_const_str_solidified, - ( &(const binstruction[60]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x14080202, // 0004 LT R2 R1 R2 - 0x780A0034, // 0005 JMPF R2 #003B - 0x88080101, // 0006 GETMBR R2 R0 K1 - 0x94080401, // 0007 GETIDX R2 R2 R1 - 0xB80E0400, // 0008 GETNGBL R3 K2 - 0x8C0C0703, // 0009 GETMET R3 R3 K3 - 0x88140504, // 000A GETMBR R5 R2 K4 - 0x7C0C0400, // 000B CALL R3 2 - 0x780E002B, // 000C JMPF R3 #0039 - 0x880C0505, // 000D GETMBR R3 R2 K5 - 0x88100106, // 000E GETMBR R4 R0 K6 - 0x180C0604, // 000F LE R3 R3 R4 - 0x780E0017, // 0010 JMPF R3 #0029 - 0xB80E0400, // 0011 GETNGBL R3 K2 - 0x8C0C0707, // 0012 GETMET R3 R3 K7 - 0x60140008, // 0013 GETGBL R5 G8 - 0x88180509, // 0014 GETMBR R6 R2 K9 - 0x7C140200, // 0015 CALL R5 1 - 0x00161005, // 0016 ADD R5 K8 R5 - 0x541A0003, // 0017 LDINT R6 4 - 0x7C0C0600, // 0018 CALL R3 3 - 0x8C0C010A, // 0019 GETMET R3 R0 K10 - 0x5C140400, // 001A MOVE R5 R2 - 0x7C0C0400, // 001B CALL R3 2 - 0xB80E0400, // 001C GETNGBL R3 K2 - 0x8C0C070B, // 001D GETMET R3 R3 K11 - 0x7C0C0200, // 001E CALL R3 1 - 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 - 0x000C070D, // 0025 ADD R3 R3 K13 - 0x900A0A03, // 0026 SETMBR R2 K5 R3 - 0x0004030D, // 0027 ADD R1 R1 K13 - 0x7002000E, // 0028 JMP #0038 - 0x880C0101, // 0029 GETMBR R3 R0 K1 - 0x8C0C070E, // 002A GETMET R3 R3 K14 - 0x5C140200, // 002B MOVE R5 R1 - 0x7C0C0400, // 002C CALL R3 2 - 0xB80E0400, // 002D GETNGBL R3 K2 - 0x8C0C0707, // 002E GETMET R3 R3 K7 - 0x60140018, // 002F GETGBL R5 G24 - 0x5818000F, // 0030 LDCONST R6 K15 - 0x881C0510, // 0031 GETMBR R7 R2 K16 - 0x88200511, // 0032 GETMBR R8 R2 K17 - 0x88240512, // 0033 GETMBR R9 R2 K18 - 0x88280509, // 0034 GETMBR R10 R2 K9 - 0x7C140A00, // 0035 CALL R5 5 - 0x58180013, // 0036 LDCONST R6 K19 - 0x7C0C0600, // 0037 CALL R3 3 - 0x70020000, // 0038 JMP #003A - 0x0004030D, // 0039 ADD R1 R1 K13 - 0x7001FFC5, // 003A JMP #0001 - 0x80000000, // 003B RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: received_ack ********************************************************************/ @@ -391,7 +204,7 @@ be_local_closure(Matter_UDPServer_received_ack, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ + ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(ack_message_counter), /* K1 */ be_nested_str_weak(exchange_id), /* K2 */ be_const_int(0), @@ -399,13 +212,14 @@ be_local_closure(Matter_UDPServer_received_ack, /* name */ /* 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), + /* K7 */ be_nested_str_weak(loglevel), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Removed_X20packet_X20from_X20sending_X20list_X20id_X3D), + /* K10 */ be_const_int(1), }), be_str_weak(received_ack), &be_const_str_solidified, - ( &(const binstruction[36]) { /* code */ + ( &(const binstruction[41]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 0x880C0301, // 0001 GETMBR R3 R1 K1 0x4C100000, // 0002 LDNIL R4 @@ -417,31 +231,36 @@ be_local_closure(Matter_UDPServer_received_ack, /* name */ 0x88180103, // 0008 GETMBR R6 R0 K3 0x7C140200, // 0009 CALL R5 1 0x14140805, // 000A LT R5 R4 R5 - 0x78160016, // 000B JMPF R5 #0023 + 0x7816001B, // 000B JMPF R5 #0028 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 + 0x781A0014, // 0010 JMPF R6 #0026 0x88180B01, // 0011 GETMBR R6 R5 K1 0x1C180C03, // 0012 EQ R6 R6 R3 - 0x781A000C, // 0013 JMPF R6 #0021 + 0x781A0011, // 0013 JMPF R6 #0026 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 + 0x54220003, // 001A LDINT R8 4 + 0x7C180400, // 001B CALL R6 2 + 0x781A0007, // 001C JMPF R6 #0025 + 0xB81A0C00, // 001D GETNGBL R6 K6 + 0x8C180D08, // 001E GETMET R6 R6 K8 + 0x60200008, // 001F GETGBL R8 G8 + 0x5C240400, // 0020 MOVE R9 R2 + 0x7C200200, // 0021 CALL R8 1 + 0x00221208, // 0022 ADD R8 K9 R8 + 0x54260003, // 0023 LDINT R9 4 + 0x7C180600, // 0024 CALL R6 3 + 0x70020000, // 0025 JMP #0027 + 0x0010090A, // 0026 ADD R4 R4 K10 + 0x7001FFDE, // 0027 JMP #0007 + 0x80000000, // 0028 RET 0 }) ) ); @@ -449,41 +268,196 @@ be_local_closure(Matter_UDPServer_received_ack, /* name */ /******************************************************************** -** Solidified function: every_50ms +** Solidified function: start ********************************************************************/ -be_local_closure(Matter_UDPServer_every_50ms, /* name */ +be_local_closure(Matter_UDPServer_start, /* name */ be_nested_proto( - 3, /* nstack */ - 1, /* argc */ + 6, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(loop), + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(listening), + /* K1 */ be_nested_str_weak(udp_socket), + /* K2 */ be_nested_str_weak(udp), + /* K3 */ be_nested_str_weak(begin), + /* K4 */ be_nested_str_weak(addr), + /* K5 */ be_nested_str_weak(port), + /* K6 */ be_nested_str_weak(network_error), + /* K7 */ be_nested_str_weak(could_X20not_X20open_X20UDP_X20server), + /* K8 */ be_nested_str_weak(dispatch_cb), + /* K9 */ be_nested_str_weak(tasmota), + /* K10 */ be_nested_str_weak(add_fast_loop), + /* K11 */ be_nested_str_weak(loop_cb), }), - be_str_weak(every_50ms), + be_str_weak(start), &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Matter_UDPServer_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 4, /* argc */ - 2, /* varg */ + ( &(const binstruction[21]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x740A0011, // 0001 JMPT R2 #0014 + 0xB80A0400, // 0002 GETNGBL R2 K2 + 0x7C080000, // 0003 CALL R2 0 + 0x90020202, // 0004 SETMBR R0 K1 R2 + 0x88080101, // 0005 GETMBR R2 R0 K1 + 0x8C080503, // 0006 GETMET R2 R2 K3 + 0x88100104, // 0007 GETMBR R4 R0 K4 + 0x88140105, // 0008 GETMBR R5 R0 K5 + 0x7C080600, // 0009 CALL R2 3 + 0x5C0C0400, // 000A MOVE R3 R2 + 0x740E0000, // 000B JMPT R3 #000D + 0xB0060D07, // 000C RAISE 1 K6 K7 + 0x500C0200, // 000D LDBOOL R3 1 0 + 0x90020003, // 000E SETMBR R0 K0 R3 + 0x90021001, // 000F SETMBR R0 K8 R1 + 0xB80E1200, // 0010 GETNGBL R3 K9 + 0x8C0C070A, // 0011 GETMET R3 R3 K10 + 0x8814010B, // 0012 GETMBR R5 R0 K11 + 0x7C0C0400, // 0013 CALL R3 2 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send +********************************************************************/ +be_local_closure(Matter_UDPServer_send, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_socket), + /* K1 */ be_nested_str_weak(send), + /* K2 */ be_nested_str_weak(addr), + /* K3 */ be_nested_str_weak(remote_ip), + /* K4 */ be_nested_str_weak(port), + /* K5 */ be_nested_str_weak(remote_port), + /* K6 */ be_nested_str_weak(raw), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(loglevel), + /* K9 */ be_nested_str_weak(log), + /* K10 */ be_nested_str_weak(MTR_X3A_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), + /* K11 */ be_const_int(3), + /* K12 */ be_nested_str_weak(MTR_X3A_X20error_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), + }), + be_str_weak(send), + &be_const_str_solidified, + ( &(const binstruction[47]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88100302, // 0002 GETMBR R4 R1 K2 + 0x78120001, // 0003 JMPF R4 #0006 + 0x88100302, // 0004 GETMBR R4 R1 K2 + 0x70020001, // 0005 JMP #0008 + 0x88100100, // 0006 GETMBR R4 R0 K0 + 0x88100903, // 0007 GETMBR R4 R4 K3 + 0x88140304, // 0008 GETMBR R5 R1 K4 + 0x78160001, // 0009 JMPF R5 #000C + 0x88140304, // 000A GETMBR R5 R1 K4 + 0x70020001, // 000B JMP #000E + 0x88140100, // 000C GETMBR R5 R0 K0 + 0x88140B05, // 000D GETMBR R5 R5 K5 + 0x88180306, // 000E GETMBR R6 R1 K6 + 0x7C080800, // 000F CALL R2 4 + 0x780A000E, // 0010 JMPF R2 #0020 + 0xB80E0E00, // 0011 GETNGBL R3 K7 + 0x8C0C0708, // 0012 GETMET R3 R3 K8 + 0x54160003, // 0013 LDINT R5 4 + 0x7C0C0400, // 0014 CALL R3 2 + 0x780E0008, // 0015 JMPF R3 #001F + 0xB80E0E00, // 0016 GETNGBL R3 K7 + 0x8C0C0709, // 0017 GETMET R3 R3 K9 + 0x60140018, // 0018 GETGBL R5 G24 + 0x5818000A, // 0019 LDCONST R6 K10 + 0x881C0302, // 001A GETMBR R7 R1 K2 + 0x88200304, // 001B GETMBR R8 R1 K4 + 0x7C140600, // 001C CALL R5 3 + 0x541A0003, // 001D LDINT R6 4 + 0x7C0C0600, // 001E CALL R3 3 + 0x7002000D, // 001F JMP #002E + 0xB80E0E00, // 0020 GETNGBL R3 K7 + 0x8C0C0708, // 0021 GETMET R3 R3 K8 + 0x5814000B, // 0022 LDCONST R5 K11 + 0x7C0C0400, // 0023 CALL R3 2 + 0x780E0008, // 0024 JMPF R3 #002E + 0xB80E0E00, // 0025 GETNGBL R3 K7 + 0x8C0C0709, // 0026 GETMET R3 R3 K9 + 0x60140018, // 0027 GETGBL R5 G24 + 0x5818000C, // 0028 LDCONST R6 K12 + 0x881C0302, // 0029 GETMBR R7 R1 K2 + 0x88200304, // 002A GETMBR R8 R1 K4 + 0x7C140600, // 002B CALL R5 3 + 0x5818000B, // 002C LDCONST R6 K11 + 0x7C0C0600, // 002D CALL R3 3 + 0x80040400, // 002E RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop +********************************************************************/ +be_local_closure(Matter_UDPServer_stop, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(listening), + /* K1 */ be_nested_str_weak(udp_socket), + /* K2 */ be_nested_str_weak(stop), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(remove_fast_loop), + /* K5 */ be_nested_str_weak(loop_cb), + }), + be_str_weak(stop), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060008, // 0001 JMPF R1 #000B + 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x8C040302, // 0003 GETMET R1 R1 K2 + 0x7C040200, // 0004 CALL R1 1 + 0x50040000, // 0005 LDBOOL R1 0 0 + 0x90020001, // 0006 SETMBR R0 K0 R1 + 0xB8060600, // 0007 GETNGBL R1 K3 + 0x8C040304, // 0008 GETMET R1 R1 K4 + 0x880C0105, // 0009 GETMBR R3 R0 K5 + 0x7C040400, // 000A CALL R1 2 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(Matter_UDPServer_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 4, /* argc */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -552,72 +526,103 @@ be_local_closure(Matter_UDPServer_init, /* name */ /******************************************************************** -** Solidified function: send +** Solidified function: _resend_packets ********************************************************************/ -be_local_closure(Matter_UDPServer_send, /* name */ +be_local_closure(Matter_UDPServer__resend_packets, /* name */ be_nested_proto( - 9, /* nstack */ - 2, /* argc */ + 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[12]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_socket), - /* K1 */ be_nested_str_weak(send), - /* K2 */ be_nested_str_weak(addr), - /* K3 */ be_nested_str_weak(remote_ip), - /* K4 */ be_nested_str_weak(port), - /* K5 */ be_nested_str_weak(remote_port), - /* K6 */ be_nested_str_weak(raw), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), - /* K10 */ be_nested_str_weak(MTR_X3A_X20error_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), - /* K11 */ be_const_int(3), + ( &(const bvalue[20]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(packets_sent), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(time_reached), + /* K4 */ be_nested_str_weak(next_try), + /* K5 */ be_nested_str_weak(retries), + /* K6 */ be_nested_str_weak(RETRIES), + /* 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_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(remove), + /* K15 */ 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), + /* K16 */ be_nested_str_weak(session_id), + /* K17 */ be_nested_str_weak(addr), + /* K18 */ be_nested_str_weak(port), + /* K19 */ be_const_int(3), }), - be_str_weak(send), + be_str_weak(_resend_packets), &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100302, // 0002 GETMBR R4 R1 K2 - 0x78120001, // 0003 JMPF R4 #0006 - 0x88100302, // 0004 GETMBR R4 R1 K2 - 0x70020001, // 0005 JMP #0008 - 0x88100100, // 0006 GETMBR R4 R0 K0 - 0x88100903, // 0007 GETMBR R4 R4 K3 - 0x88140304, // 0008 GETMBR R5 R1 K4 - 0x78160001, // 0009 JMPF R5 #000C - 0x88140304, // 000A GETMBR R5 R1 K4 - 0x70020001, // 000B JMP #000E - 0x88140100, // 000C GETMBR R5 R0 K0 - 0x88140B05, // 000D GETMBR R5 R5 K5 - 0x88180306, // 000E GETMBR R6 R1 K6 - 0x7C080800, // 000F CALL R2 4 - 0x780A0009, // 0010 JMPF R2 #001B - 0xB80E0E00, // 0011 GETNGBL R3 K7 - 0x8C0C0708, // 0012 GETMET R3 R3 K8 - 0x60140018, // 0013 GETGBL R5 G24 - 0x58180009, // 0014 LDCONST R6 K9 - 0x881C0302, // 0015 GETMBR R7 R1 K2 - 0x88200304, // 0016 GETMBR R8 R1 K4 - 0x7C140600, // 0017 CALL R5 3 - 0x541A0003, // 0018 LDINT R6 4 - 0x7C0C0600, // 0019 CALL R3 3 - 0x70020008, // 001A JMP #0024 - 0xB80E0E00, // 001B GETNGBL R3 K7 - 0x8C0C0708, // 001C GETMET R3 R3 K8 - 0x60140018, // 001D GETGBL R5 G24 - 0x5818000A, // 001E LDCONST R6 K10 - 0x881C0302, // 001F GETMBR R7 R1 K2 - 0x88200304, // 0020 GETMBR R8 R1 K4 - 0x7C140600, // 0021 CALL R5 3 - 0x5818000B, // 0022 LDCONST R6 K11 - 0x7C0C0600, // 0023 CALL R3 3 - 0x80040400, // 0024 RET 1 R2 + ( &(const binstruction[60]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x14080202, // 0004 LT R2 R1 R2 + 0x780A0034, // 0005 JMPF R2 #003B + 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x94080401, // 0007 GETIDX R2 R2 R1 + 0xB80E0400, // 0008 GETNGBL R3 K2 + 0x8C0C0703, // 0009 GETMET R3 R3 K3 + 0x88140504, // 000A GETMBR R5 R2 K4 + 0x7C0C0400, // 000B CALL R3 2 + 0x780E002B, // 000C JMPF R3 #0039 + 0x880C0505, // 000D GETMBR R3 R2 K5 + 0x88100106, // 000E GETMBR R4 R0 K6 + 0x180C0604, // 000F LE R3 R3 R4 + 0x780E0017, // 0010 JMPF R3 #0029 + 0xB80E0400, // 0011 GETNGBL R3 K2 + 0x8C0C0707, // 0012 GETMET R3 R3 K7 + 0x60140008, // 0013 GETGBL R5 G8 + 0x88180509, // 0014 GETMBR R6 R2 K9 + 0x7C140200, // 0015 CALL R5 1 + 0x00161005, // 0016 ADD R5 K8 R5 + 0x541A0003, // 0017 LDINT R6 4 + 0x7C0C0600, // 0018 CALL R3 3 + 0x8C0C010A, // 0019 GETMET R3 R0 K10 + 0x5C140400, // 001A MOVE R5 R2 + 0x7C0C0400, // 001B CALL R3 2 + 0xB80E0400, // 001C GETNGBL R3 K2 + 0x8C0C070B, // 001D GETMET R3 R3 K11 + 0x7C0C0200, // 001E CALL R3 1 + 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 + 0x000C070D, // 0025 ADD R3 R3 K13 + 0x900A0A03, // 0026 SETMBR R2 K5 R3 + 0x0004030D, // 0027 ADD R1 R1 K13 + 0x7002000E, // 0028 JMP #0038 + 0x880C0101, // 0029 GETMBR R3 R0 K1 + 0x8C0C070E, // 002A GETMET R3 R3 K14 + 0x5C140200, // 002B MOVE R5 R1 + 0x7C0C0400, // 002C CALL R3 2 + 0xB80E0400, // 002D GETNGBL R3 K2 + 0x8C0C0707, // 002E GETMET R3 R3 K7 + 0x60140018, // 002F GETGBL R5 G24 + 0x5818000F, // 0030 LDCONST R6 K15 + 0x881C0510, // 0031 GETMBR R7 R2 K16 + 0x88200511, // 0032 GETMBR R8 R2 K17 + 0x88240512, // 0033 GETMBR R9 R2 K18 + 0x88280509, // 0034 GETMBR R10 R2 K9 + 0x7C140A00, // 0035 CALL R5 5 + 0x58180013, // 0036 LDCONST R6 K19 + 0x7C0C0600, // 0037 CALL R3 3 + 0x70020000, // 0038 JMP #003A + 0x0004030D, // 0039 ADD R1 R1 K13 + 0x7001FFC5, // 003A JMP #0001 + 0x80000000, // 003B RET 0 }) ) ); @@ -625,41 +630,86 @@ be_local_closure(Matter_UDPServer_send, /* name */ /******************************************************************** -** Solidified function: stop +** Solidified function: _backoff_time ********************************************************************/ -be_local_closure(Matter_UDPServer_stop, /* name */ +be_local_closure(Matter_UDPServer__backoff_time, /* name */ be_nested_proto( - 4, /* nstack */ + 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 4, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_const_int(1), + /* K1 */ be_const_int(0), + }), + be_str_weak(power_int), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x240C0301, // 0001 GT R3 R1 K1 + 0x780E0002, // 0002 JMPF R3 #0006 + 0x08080400, // 0003 MUL R2 R2 R0 + 0x04040300, // 0004 SUB R1 R1 K0 + 0x7001FFFA, // 0005 JMP #0001 + 0x80040400, // 0006 RET 1 R2 + }) + ), + }), 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(listening), - /* K1 */ be_nested_str_weak(udp_socket), - /* K2 */ be_nested_str_weak(stop), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(remove_fast_loop), - /* K5 */ be_nested_str_weak(loop_cb), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_UDPServer), + /* K1 */ be_nested_str_weak(math), + /* K2 */ be_nested_str_weak(rand), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(1), + /* K5 */ be_const_real_hex(0x3FCCCCCD), + /* K6 */ be_const_real_hex(0x3F800000), + /* K7 */ be_const_real_hex(0x3E800000), }), - be_str_weak(stop), + be_str_weak(_backoff_time), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060008, // 0001 JMPF R1 #000B - 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 - 0x7C040200, // 0004 CALL R1 1 - 0x50040000, // 0005 LDBOOL R1 0 0 - 0x90020001, // 0006 SETMBR R0 K0 R1 - 0xB8060600, // 0007 GETNGBL R1 K3 - 0x8C040304, // 0008 GETMET R1 R1 K4 - 0x880C0105, // 0009 GETMBR R3 R0 K5 - 0x7C040400, // 000A CALL R1 2 - 0x80000000, // 000B RET 0 + ( &(const binstruction[29]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x84080000, // 0001 CLOSURE R2 P0 + 0xA40E0200, // 0002 IMPORT R3 K1 + 0x5412012B, // 0003 LDINT R4 300 + 0x6014000A, // 0004 GETGBL R5 G10 + 0x8C180702, // 0005 GETMET R6 R3 K2 + 0x7C180200, // 0006 CALL R6 1 + 0x541E00FE, // 0007 LDINT R7 255 + 0x2C180C07, // 0008 AND R6 R6 R7 + 0x7C140200, // 0009 CALL R5 1 + 0x541A00FE, // 000A LDINT R6 255 + 0x0C140A06, // 000B DIV R5 R5 R6 + 0x24180103, // 000C GT R6 R0 K3 + 0x781A0001, // 000D JMPF R6 #0010 + 0x04180104, // 000E SUB R6 R0 K4 + 0x70020000, // 000F JMP #0011 + 0x58180003, // 0010 LDCONST R6 K3 + 0x5C1C0400, // 0011 MOVE R7 R2 + 0x58200005, // 0012 LDCONST R8 K5 + 0x5C240C00, // 0013 MOVE R9 R6 + 0x7C1C0400, // 0014 CALL R7 2 + 0x081C0807, // 0015 MUL R7 R4 R7 + 0x08200B07, // 0016 MUL R8 R5 K7 + 0x00220C08, // 0017 ADD R8 K6 R8 + 0x081C0E08, // 0018 MUL R7 R7 R8 + 0x60200009, // 0019 GETGBL R8 G9 + 0x5C240E00, // 001A MOVE R9 R7 + 0x7C200200, // 001B CALL R8 1 + 0x80041000, // 001C RET 1 R8 }) ) ); @@ -679,30 +729,32 @@ be_local_closure(Matter_UDPServer_loop, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(device), + ( &(const bvalue[20]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(profiler), /* K2 */ be_const_int(0), /* K3 */ be_nested_str_weak(udp_socket), /* K4 */ be_nested_str_weak(read), - /* K5 */ be_nested_str_weak(start), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(remote_ip), - /* K8 */ be_nested_str_weak(remote_port), - /* K9 */ be_nested_str_weak(tasmota), - /* K10 */ be_nested_str_weak(log), - /* K11 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K12 */ be_nested_str_weak(dispatch_cb), - /* K13 */ be_nested_str_weak(udp_loop_dispatch), - /* K14 */ be_nested_str_weak(dump), - /* K15 */ be_const_int(2), - /* K16 */ be_nested_str_weak(MAX_PACKETS_READ), - /* K17 */ be_nested_str_weak(_resend_packets), + /* K5 */ be_nested_str_weak(packet), + /* K6 */ be_nested_str_weak(start), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(remote_ip), + /* K9 */ be_nested_str_weak(remote_port), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(loglevel), + /* K12 */ be_nested_str_weak(log), + /* K13 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K14 */ be_nested_str_weak(dispatch_cb), + /* K15 */ be_nested_str_weak(udp_loop_dispatch), + /* K16 */ be_nested_str_weak(dump), + /* K17 */ be_const_int(2), + /* K18 */ be_nested_str_weak(MAX_PACKETS_READ), + /* K19 */ be_nested_str_weak(_resend_packets), }), be_str_weak(loop), &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + ( &(const binstruction[63]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 0x88040301, // 0001 GETMBR R1 R1 K1 0x58080002, // 0002 LDCONST R2 K2 0x880C0103, // 0003 GETMBR R3 R0 K3 @@ -712,52 +764,59 @@ be_local_closure(Matter_UDPServer_loop, /* name */ 0x80000600, // 0007 RET 0 0x880C0103, // 0008 GETMBR R3 R0 K3 0x8C0C0704, // 0009 GETMET R3 R3 K4 - 0x7C0C0200, // 000A CALL R3 1 - 0x4C100000, // 000B LDNIL R4 - 0x20100604, // 000C NE R4 R3 R4 - 0x78120026, // 000D JMPF R4 #0035 - 0x8C100305, // 000E GETMET R4 R1 K5 - 0x7C100200, // 000F CALL R4 1 - 0x00080506, // 0010 ADD R2 R2 K6 - 0x88100103, // 0011 GETMBR R4 R0 K3 - 0x88100907, // 0012 GETMBR R4 R4 K7 - 0x88140103, // 0013 GETMBR R5 R0 K3 - 0x88140B08, // 0014 GETMBR R5 R5 K8 - 0xB81A1200, // 0015 GETNGBL R6 K9 - 0x8C180D0A, // 0016 GETMET R6 R6 K10 - 0x60200018, // 0017 GETGBL R8 G24 - 0x5824000B, // 0018 LDCONST R9 K11 - 0x5C280800, // 0019 MOVE R10 R4 - 0x5C2C0A00, // 001A MOVE R11 R5 - 0x7C200600, // 001B CALL R8 3 - 0x54260003, // 001C LDINT R9 4 - 0x7C180600, // 001D CALL R6 3 - 0x8818010C, // 001E GETMBR R6 R0 K12 - 0x781A0007, // 001F JMPF R6 #0028 - 0x8C18030A, // 0020 GETMET R6 R1 K10 - 0x5820000D, // 0021 LDCONST R8 K13 - 0x7C180400, // 0022 CALL R6 2 - 0x8C18010C, // 0023 GETMET R6 R0 K12 - 0x5C200600, // 0024 MOVE R8 R3 - 0x5C240800, // 0025 MOVE R9 R4 - 0x5C280A00, // 0026 MOVE R10 R5 - 0x7C180800, // 0027 CALL R6 4 - 0x8C18030E, // 0028 GETMET R6 R1 K14 - 0x5820000F, // 0029 LDCONST R8 K15 - 0x7C180400, // 002A CALL R6 2 - 0x88180110, // 002B GETMBR R6 R0 K16 - 0x14180406, // 002C LT R6 R2 R6 - 0x781A0004, // 002D JMPF R6 #0033 - 0x88180103, // 002E GETMBR R6 R0 K3 - 0x8C180D04, // 002F GETMET R6 R6 K4 - 0x7C180200, // 0030 CALL R6 1 - 0x5C0C0C00, // 0031 MOVE R3 R6 - 0x70020000, // 0032 JMP #0034 - 0x4C0C0000, // 0033 LDNIL R3 - 0x7001FFD5, // 0034 JMP #000B - 0x8C100111, // 0035 GETMET R4 R0 K17 - 0x7C100200, // 0036 CALL R4 1 - 0x80000000, // 0037 RET 0 + 0x88140105, // 000A GETMBR R5 R0 K5 + 0x7C0C0400, // 000B CALL R3 2 + 0x4C100000, // 000C LDNIL R4 + 0x20100604, // 000D NE R4 R3 R4 + 0x7812002C, // 000E JMPF R4 #003C + 0x8C100306, // 000F GETMET R4 R1 K6 + 0x7C100200, // 0010 CALL R4 1 + 0x90020A03, // 0011 SETMBR R0 K5 R3 + 0x00080507, // 0012 ADD R2 R2 K7 + 0x88100103, // 0013 GETMBR R4 R0 K3 + 0x88100908, // 0014 GETMBR R4 R4 K8 + 0x88140103, // 0015 GETMBR R5 R0 K3 + 0x88140B09, // 0016 GETMBR R5 R5 K9 + 0xB81A1400, // 0017 GETNGBL R6 K10 + 0x8C180D0B, // 0018 GETMET R6 R6 K11 + 0x54220003, // 0019 LDINT R8 4 + 0x7C180400, // 001A CALL R6 2 + 0x781A0008, // 001B JMPF R6 #0025 + 0xB81A1400, // 001C GETNGBL R6 K10 + 0x8C180D0C, // 001D GETMET R6 R6 K12 + 0x60200018, // 001E GETGBL R8 G24 + 0x5824000D, // 001F LDCONST R9 K13 + 0x5C280800, // 0020 MOVE R10 R4 + 0x5C2C0A00, // 0021 MOVE R11 R5 + 0x7C200600, // 0022 CALL R8 3 + 0x54260003, // 0023 LDINT R9 4 + 0x7C180600, // 0024 CALL R6 3 + 0x8818010E, // 0025 GETMBR R6 R0 K14 + 0x781A0007, // 0026 JMPF R6 #002F + 0x8C18030C, // 0027 GETMET R6 R1 K12 + 0x5820000F, // 0028 LDCONST R8 K15 + 0x7C180400, // 0029 CALL R6 2 + 0x8C18010E, // 002A GETMET R6 R0 K14 + 0x5C200600, // 002B MOVE R8 R3 + 0x5C240800, // 002C MOVE R9 R4 + 0x5C280A00, // 002D MOVE R10 R5 + 0x7C180800, // 002E CALL R6 4 + 0x8C180310, // 002F GETMET R6 R1 K16 + 0x58200011, // 0030 LDCONST R8 K17 + 0x7C180400, // 0031 CALL R6 2 + 0x88180112, // 0032 GETMBR R6 R0 K18 + 0x14180406, // 0033 LT R6 R2 R6 + 0x781A0004, // 0034 JMPF R6 #003A + 0x88180103, // 0035 GETMBR R6 R0 K3 + 0x8C180D04, // 0036 GETMET R6 R6 K4 + 0x7C180200, // 0037 CALL R6 1 + 0x5C0C0C00, // 0038 MOVE R3 R6 + 0x70020000, // 0039 JMP #003B + 0x4C0C0000, // 003A LDNIL R3 + 0x7001FFCF, // 003B JMP #000C + 0x8C100113, // 003C GETMET R4 R0 K19 + 0x7C100200, // 003D CALL R4 1 + 0x80000000, // 003E RET 0 }) ) ); @@ -765,56 +824,23 @@ be_local_closure(Matter_UDPServer_loop, /* name */ /******************************************************************** -** Solidified function: start +** Solidified function: every_second ********************************************************************/ -be_local_closure(Matter_UDPServer_start, /* name */ +be_local_closure(Matter_UDPServer_every_second, /* name */ be_nested_proto( - 6, /* nstack */ - 2, /* argc */ + 1, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(listening), - /* K1 */ be_nested_str_weak(udp_socket), - /* K2 */ be_nested_str_weak(udp), - /* K3 */ be_nested_str_weak(begin), - /* K4 */ be_nested_str_weak(addr), - /* K5 */ be_nested_str_weak(port), - /* K6 */ be_nested_str_weak(network_error), - /* K7 */ be_nested_str_weak(could_X20not_X20open_X20UDP_X20server), - /* K8 */ be_nested_str_weak(dispatch_cb), - /* K9 */ be_nested_str_weak(tasmota), - /* K10 */ be_nested_str_weak(add_fast_loop), - /* K11 */ be_nested_str_weak(loop_cb), - }), - be_str_weak(start), + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(every_second), &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0011, // 0001 JMPT R2 #0014 - 0xB80A0400, // 0002 GETNGBL R2 K2 - 0x7C080000, // 0003 CALL R2 0 - 0x90020202, // 0004 SETMBR R0 K1 R2 - 0x88080101, // 0005 GETMBR R2 R0 K1 - 0x8C080503, // 0006 GETMET R2 R2 K3 - 0x88100104, // 0007 GETMBR R4 R0 K4 - 0x88140105, // 0008 GETMBR R5 R0 K5 - 0x7C080600, // 0009 CALL R2 3 - 0x5C0C0400, // 000A MOVE R3 R2 - 0x740E0000, // 000B JMPT R3 #000D - 0xB0060D07, // 000C RAISE 1 K6 K7 - 0x500C0200, // 000D LDBOOL R3 1 0 - 0x90020003, // 000E SETMBR R0 K0 R3 - 0x90021001, // 000F SETMBR R0 K8 R1 - 0xB80E1200, // 0010 GETNGBL R3 K9 - 0x8C0C070A, // 0011 GETMET R3 R3 K10 - 0x8814010B, // 0012 GETMBR R5 R0 K11 - 0x7C0C0400, // 0013 CALL R3 2 - 0x80000000, // 0014 RET 0 + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 }) ) ); @@ -825,31 +851,32 @@ be_local_closure(Matter_UDPServer_start, /* name */ ** Solidified class: Matter_UDPServer ********************************************************************/ be_local_class(Matter_UDPServer, - 8, + 9, NULL, - be_nested_map(21, + be_nested_map(22, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(loop_cb, -1), be_const_var(7) }, - { be_const_key_weak(addr, -1), be_const_var(0) }, - { be_const_key_weak(dispatch_cb, 10), be_const_var(5) }, - { be_const_key_weak(every_second, -1), be_const_closure(Matter_UDPServer_every_second_closure) }, - { be_const_key_weak(send_UDP, 0), be_const_closure(Matter_UDPServer_send_UDP_closure) }, - { be_const_key_weak(loop, 18), be_const_closure(Matter_UDPServer_loop_closure) }, - { be_const_key_weak(device, 11), be_const_var(2) }, - { be_const_key_weak(_resend_packets, -1), be_const_closure(Matter_UDPServer__resend_packets_closure) }, - { be_const_key_weak(MAX_PACKETS_READ, 14), be_const_int(4) }, - { be_const_key_weak(_backoff_time, 5), be_const_static_closure(Matter_UDPServer__backoff_time_closure) }, { be_const_key_weak(every_50ms, -1), be_const_closure(Matter_UDPServer_every_50ms_closure) }, + { be_const_key_weak(send_UDP, -1), be_const_closure(Matter_UDPServer_send_UDP_closure) }, + { be_const_key_weak(received_ack, -1), be_const_closure(Matter_UDPServer_received_ack_closure) }, + { be_const_key_weak(every_second, -1), be_const_closure(Matter_UDPServer_every_second_closure) }, + { be_const_key_weak(stop, 18), be_const_closure(Matter_UDPServer_stop_closure) }, + { be_const_key_weak(start, 4), be_const_closure(Matter_UDPServer_start_closure) }, { be_const_key_weak(listening, -1), be_const_var(3) }, - { be_const_key_weak(init, -1), be_const_closure(Matter_UDPServer_init_closure) }, - { be_const_key_weak(RETRIES, -1), be_const_int(5) }, - { be_const_key_weak(packets_sent, 1), be_const_var(6) }, - { be_const_key_weak(udp_socket, -1), be_const_var(4) }, { be_const_key_weak(send, -1), be_const_closure(Matter_UDPServer_send_closure) }, - { be_const_key_weak(stop, -1), be_const_closure(Matter_UDPServer_stop_closure) }, - { be_const_key_weak(received_ack, -1), be_const_closure(Matter_UDPServer_received_ack_closure) }, - { be_const_key_weak(port, -1), be_const_var(1) }, - { be_const_key_weak(start, -1), be_const_closure(Matter_UDPServer_start_closure) }, + { be_const_key_weak(loop, -1), be_const_closure(Matter_UDPServer_loop_closure) }, + { be_const_key_weak(init, -1), be_const_closure(Matter_UDPServer_init_closure) }, + { be_const_key_weak(udp_socket, 6), be_const_var(4) }, + { be_const_key_weak(packet, -1), be_const_var(8) }, + { be_const_key_weak(_backoff_time, -1), be_const_static_closure(Matter_UDPServer__backoff_time_closure) }, + { be_const_key_weak(_resend_packets, -1), be_const_closure(Matter_UDPServer__resend_packets_closure) }, + { be_const_key_weak(addr, -1), be_const_var(0) }, + { be_const_key_weak(dispatch_cb, 8), be_const_var(5) }, + { be_const_key_weak(port, 12), be_const_var(1) }, + { be_const_key_weak(packets_sent, -1), be_const_var(6) }, + { be_const_key_weak(device, -1), be_const_var(2) }, + { be_const_key_weak(loop_cb, -1), be_const_var(7) }, + { be_const_key_weak(MAX_PACKETS_READ, -1), be_const_int(4) }, + { be_const_key_weak(RETRIES, 3), be_const_int(5) }, })), be_str_weak(Matter_UDPServer) ); diff --git a/lib/libesp32/berry_tasmota/src/be_crypto_lib.c b/lib/libesp32/berry_tasmota/src/be_crypto_lib.c index fd250e236904..5cb5d7f10f71 100644 --- a/lib/libesp32/berry_tasmota/src/be_crypto_lib.c +++ b/lib/libesp32/berry_tasmota/src/be_crypto_lib.c @@ -15,6 +15,7 @@ extern int m_rsa_rsassa_pkcs1_v1_5(bvm *vm); extern int m_aes_ccm_init(bvm *vm); extern int m_aes_ccm_encrypt(bvm *vm); +extern int m_aes_ccm_encrypt1(bvm *vm); extern int m_aes_ccm_decrypt(bvm *vm); extern int m_aes_ccm_decrypt1(bvm *vm); extern int m_aes_ccm_tag(bvm *vm); @@ -140,6 +141,7 @@ class be_class_aes_ccm (scope: global, name: AES_CCM) { tag, func(m_aes_ccm_tag) decrypt1, static_func(m_aes_ccm_decrypt1) + encrypt1, static_func(m_aes_ccm_encrypt1) } class be_class_aes_gcm (scope: global, name: AES_GCM) { diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_crypto.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_crypto.ino index 7270bd7ae629..6ac2b6ae40f9 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_crypto.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_crypto.ino @@ -358,8 +358,10 @@ extern "C" { // all-in-one decrypt function // decryption in place // - int32_t m_aes_ccm_decrypt1(struct bvm *vm); - int32_t m_aes_ccm_decrypt1(struct bvm *vm) { + int32_t m_aes_ccm_encrypt1_or_decryt1(bvm *vm, int encrypt); + int32_t m_aes_ccm_encrypt1(bvm *vm) { return m_aes_ccm_encrypt1_or_decryt1(vm, 1); } + int32_t m_aes_ccm_decrypt1(bvm *vm) { return m_aes_ccm_encrypt1_or_decryt1(vm, 0); } + int32_t m_aes_ccm_encrypt1_or_decryt1(bvm *vm, int encrypt) { int32_t argc = be_top(vm); // Get the number of arguments if (argc >= 13 && be_isbytes(vm, 1) // secret_key && be_isbytes(vm, 2) && be_isint(vm, 3) && be_isint(vm, 4) // iv, iv_start, iv_len @@ -432,16 +434,24 @@ extern "C" { } br_ccm_flip(&ccm_ctx); - br_ccm_run(&ccm_ctx, 0 /*decrypt*/, data, data_len); // decrypt in place + br_ccm_run(&ccm_ctx, encrypt, data, data_len); // decrypt in place // check tag // create a bytes buffer of 16 bytes uint8_t tag_computed[16] = {}; br_ccm_get_tag(&ccm_ctx, tag_computed); - if (memcmp(tag_computed, tag, tag_len) == 0) { + + if (encrypt) { + // copy the tag back + memcpy(tag, tag_computed, tag_len); be_pushbool(vm, btrue); } else { - be_pushbool(vm, bfalse); + // check that the tag match + if (memcmp(tag_computed, tag, tag_len) == 0) { + be_pushbool(vm, btrue); + } else { + be_pushbool(vm, bfalse); + } } // success