diff --git a/CHANGELOG.md b/CHANGELOG.md index b6cabc8bb..5f65758c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. - Matter add internal debug option (#21634) - Matter add Fan support (virtual only) (#21637) - Matter show event name in logs (#21649) +- Matter full support of events ### Breaking Changed diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index e020ecfac..34d480df3 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -209,7 +209,8 @@ extern int matter_publish_command(bvm *vm); extern const bclass be_class_Matter_TLV; // need to declare it upfront because of circular reference #include "solidify/solidified_Matter_Path_0.h" -#include "solidify/solidified_Matter_Path_1_Generator.h" +#include "solidify/solidified_Matter_Path_1_PathGenerator.h" +#include "solidify/solidified_Matter_Path_1_EventGenerator.h" #include "solidify/solidified_Matter_TLV.h" #include "solidify/solidified_Matter_IM_Data.h" #include "solidify/solidified_Matter_UDPServer.h" @@ -455,6 +456,7 @@ module matter (scope: global, strings: weak) { // Interation Model Path, class(be_class_Matter_Path) PathGenerator, class(be_class_Matter_PathGenerator) + EventGenerator, class(be_class_Matter_EventGenerator) IM_Status, class(be_class_Matter_IM_Status) IM_InvokeResponse, class(be_class_Matter_IM_InvokeResponse) IM_WriteResponse, class(be_class_Matter_IM_WriteResponse) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be index 12145524f..5c1f17434 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be @@ -38,20 +38,70 @@ class Matter_EventQueued var event_id var is_urgent var priority + var data0, data1, data2 var event_no + var epoch_timestamp var raw_tlv # content encoded as full TLV - def init(event_ib) - self.endpoint = event_ib.path.endpoint - self.cluster = event_ib.path.cluster - self.event_id = event_ib.path.event - self.is_urgent = event_ib.path.is_urgent - self.priority = event_ib.priority + def init(event_no, endpoint, cluster, event_id, is_urgent, priority, data0, data1, data2) + self.event_no = event_no + self.endpoint = endpoint + self.cluster = cluster + self.event_id = event_id + self.is_urgent = is_urgent + self.priority = priority + # priority if (self.priority < 0) self.priority = 0 end if (self.priority > matter.EVENT_CRITICAL) self.priority = matter.EVENT_CRITICAL end - self.event_no = int64.toint64(event_ib.event_number) # int64 - self.raw_tlv = event_ib.to_TLV().tlv2raw() # bytes() + # epoch_time + self.epoch_timestamp = tasmota.rtc('utc') + if (self.epoch_timestamp < 1700000000) + self.epoch_timestamp = tasmota.rtc('config_time') # no valid time, take the last config time + end + self.data0 = data0 + self.data1 = data1 + self.data2 = data2 end + + ################################################################################# + # to_raw_bytes + # + # Computes a complete EventReportIB structure as bytes() + # + # It is memoized in self.raw_tlv, but is cleaned after sending messages to + # free up some space + def to_raw_bytes() + if (self.raw_tlv == nil) + var event_report = matter.EventReportIB() + var event_ib = matter.EventDataIB() + event_report.event_data = event_ib + var event_path = matter.EventPathIB() + event_path.endpoint = self.endpoint + event_path.cluster = self.cluster + event_path.event = self.event_id + event_path.is_urgent = self.is_urgent + event_ib.path = event_path + event_ib.priority = self.priority + event_ib.event_number = self.event_no + event_ib.epoch_timestamp = self.epoch_timestamp + event_ib.data = matter.TLV.Matter_TLV_struct() + if (self.data0 != nil) event_ib.data.add_obj(0, self.data0) end + if (self.data1 != nil) event_ib.data.add_obj(1, self.data1) end + if (self.data2 != nil) event_ib.data.add_obj(2, self.data2) end + + self.raw_tlv = event_report.to_TLV().tlv2raw() # bytes() + end + return self.raw_tlv + end + + ################################################################################# + # compact + # + # Remove the local cache of `raw_tlv` to save space (it can always be recreated) + def compact() + self.raw_tlv = nil + end + end matter.EventQueued = Matter_EventQueued @@ -77,11 +127,16 @@ matter.EventQueued = Matter_EventQueued # EVENT_CRITICAL=2 ################################################################################# -# Matter_IM class +# Matter_EventHandler class +# +# Keep track of events in 3 queues for DEBUG/INFO/CRITICAL levels +# +# Invariants: +# All 3 queues (debug/info/critical) have events in sorted order by `event_no` ################################################################################# class Matter_EventHandler - static var EVENT_NO_INCR = 1000 # counter increased when persisting - static var EVENT_NO_FILENAME = "_matter_event_no" + static var EVENT_NO_INCR = 1000 # counter increased when persisting, default value from Matter spec + static var EVENT_NO_KEY = "_matter_event_no" static var EVENT_QUEUE_SIZE_MAX = 10 # each queue is 10 elements depth # circular buffers @@ -109,22 +164,20 @@ class Matter_EventHandler # with a predefined gap `self.EVENT_NO_INCR` (default 1000) def load_event_no_persisted() import persist - var event_no_str = str(persist.find(self.EVENT_NO_FILENAME, "0")) + var event_no_str = str(persist.find(self.EVENT_NO_KEY, "0")) self.counter_event_no = int64.fromstring(event_no_str) self.counter_event_no_persisted = self.counter_event_no.add(self.EVENT_NO_INCR) # save back next slot - persist.setmember(self.EVENT_NO_FILENAME, self.counter_event_no_persisted.tostring()) + persist.setmember(self.EVENT_NO_KEY, self.counter_event_no_persisted.tostring()) persist.save() end ##################################################################### # Enqueue event # - # Takes `Matter_EventDataIB` + # Takes `EventQueued` ##################################################################### - def queue_event(ev_ib) - var ev_queued = matter.EventQueued(ev_ib) - + def queue_event(ev_queued) var cur_prio = ev_queued.priority # we reuse the same logic as connectedhomeip @@ -183,10 +236,37 @@ class Matter_EventHandler end end + ############################################################# + # dispatch every second click to sub-objects that need it + def every_second() + self.compact() + end + + ##################################################################### + # Enqueue event + # + # Remove the cached `raw_tlv` from all events in queues + # to save some space + def compact() + def compact_queue(q) + var i = 0 + while i < size(q) + q[i].compact() + i += 1 + end + end + compact_queue(self.queue_debug) + compact_queue(self.queue_info) + compact_queue(self.queue_critical) + end + ##################################################################### # Events handling ##################################################################### # Get next event number + # + # Also make sure that we don't go above the persisted last number, + # in such case increase the persisted number and use the next chunk def get_next_event_no() self.counter_event_no = self.counter_event_no.add(1) if self.counter_event_no >= self.counter_event_no_persisted @@ -194,7 +274,10 @@ class Matter_EventHandler end return self.counter_event_no end - + # Get last event number (all events sent up to now are lower or equal than this value) + def get_last_event_no() + return self.counter_event_no + end ##################################################################### # Dump events for debugging @@ -208,6 +291,91 @@ class Matter_EventHandler tasmota.log(f"MTR: Events by types: critical {cnt[2]}, info {cnt[1]}, debug {cnt[0]}", 2) end + ##################################################################### + # find_min_no + # + # Find the next event number just above the provided value, + # or the smallest if nil is passed + # + # Arg: + # - event_min: minimal event number (strictly above), + # or `nil` if smallest number + # + # Returns: + # - event_no (int) or `nil` of none found + ##################################################################### + def find_min_no(event_min_no) + # fail fast if `event_min_no` is the same as `counter_event_no` + # meaning that we dont have any more events since last report + if (event_min_no != nil) && (event_min_no >= self.counter_event_no) + return nil + end + + ##################################################################### + # Find the next available event right above `event_min_no` + # + # TODO: since queues are sorted, we can abort searching when we reach + # an event below `event_min_no` + # + # Arg + # - event_smallest: the event found up to now (from previous queues) + # - q: the queue oject + # - event_min_no: minimum acceptable event number (int64) or nil if any + def find_in_queue(event_smallest, q, event_min_no) + var i = size(q) - 1 + while i >= 0 + var cur_event = q[i] + # fail fast: since queues are sorted, we can abort searching when we reach an event below `event_min_no` + if (event_min_no != nil) && (cur_event.event_no <= event_min_no) + return event_smallest + end + + # we know that event_no is in acceptable range, is it smaller? + if (event_smallest == nil) || (cur_event.event_no < event_smallest.event_no) + event_smallest = cur_event + end + + i -= 1 + end + return event_smallest + end + + var event + # look in debug + event = find_in_queue(event, self.queue_debug, event_min_no) + # look in info + event = find_in_queue(event, self.queue_info, event_min_no) + # look in critical + event = find_in_queue(event, self.queue_critical, event_min_no) + + return event + end + + ############################################################# + # generate a new event + # + def publish_event(endpoint, cluster, event_id, is_urgent, priority, data0, data1, data2) + var new_event = matter.EventQueued(self.get_next_event_no(), endpoint, cluster, event_id, is_urgent, priority, data0, data1, data2) + if tasmota.loglevel(3) + var data_str = '' + if (data0 != nil) data_str = str(data0) end + if (data1 != nil) data_str += ", " + str(data1) end + if (data2 != nil) data_str += ", " + str(data2) end + if (cluster == 0x0028) && (event_id == 0x00) + # put the software version in a readable format + var val = data0.val + data_str = format("%i.%i.%i.%i", (val >> 24) & 0xFF, (val >> 16) & 0xFF, (val >> 8) & 0xFF, val & 0xFF) + end + var priority_str = (priority == 2) ? "CRIT " : (priority == 1) ? "INFO " : "DEBUG " + var event_name = matter.get_event_name(cluster, event_id) + event_name = (event_name != nil) ? "(" + event_name + ") " : "" + log(f"MTR: +Add_Event ({priority_str}{new_event.event_no:8s}) [{new_event.endpoint:02X}]{new_event.cluster:04X}/{new_event.event_id:02X} {event_name}- {data_str}", 2) + end + self.queue_event(new_event) + # check if we have an subscription interested in this new event + self.device.message_handler.im.subs_shop.event_published(new_event) + end + end matter.EventHandler = Matter_EventHandler diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index cff1234ab..21de50682 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -601,8 +601,9 @@ class Matter_IM matter.profiler.log("read_request_start_pull") var query = matter.ReadRequestMessage().from_TLV(val) var generator_or_arr = self.process_read_or_subscribe_request_pull(query, msg) + var event_generator_or_arr = self.process_read_or_subscribe_request_event_pull(query, msg) - self.send_report_data_pull(msg, generator_or_arr) # pack into a response structure that will read attributes when expansion is triggered + self.send_queue.push(matter.IM_ReportData_Pull(msg, generator_or_arr, event_generator_or_arr)) return true end @@ -613,15 +614,14 @@ class Matter_IM # # This version lazily reads attributes when building the response packets # - # returns `true` if processed, `false` if silently ignored, - # or raises an exception def process_read_or_subscribe_request_pull(query, msg) - if query.attributes_requests != nil + if (query.attributes_requests != nil) var generator_or_arr # single path generator (common case) or array of generators - var node_id = (msg != nil) ? msg.get_node_id() : nil - # structure is `ReadRequestMessage` 10.6.2 p.558 - if size(query.attributes_requests) > 1 + # structure is `ReadRequestMessage` 10.6.2 p.558 + var size_requests = (query.attributes_requests ? size(query.attributes_requests) : 0) + # log(f"MTR: process_read_or_subscribe_request_pull {size_requests=}") + if (size_requests > 1) generator_or_arr = [] end @@ -629,7 +629,7 @@ class Matter_IM var gen = matter.PathGenerator(self.device) gen.start(q.endpoint, q.cluster, q.attribute, query.fabric_filtered) - if size(query.attributes_requests) > 1 + if (size_requests > 1) generator_or_arr.push(gen) else generator_or_arr = gen @@ -655,6 +655,88 @@ class Matter_IM end end end + + return generator_or_arr + end + return nil + end + + ############################################################# + # parse_event_filters_min_no + # + # Parse an object EventFilters and extract the minimum event + # number (as int64) or nil if none + static def parse_event_filters_min_no(event_filters, node_id) + var event_no_min = nil # do we have a filter for minimum event_no (int64 or nil) + if event_filters != nil + for filter: event_filters # filter is an instance of `EventFilterIB` + # tasmota.log(f"MTR: EventFilter {filter=} {node_id=}", 3) + var filter_node = int64.toint64(filter.node) # nil or int64 + if (filter_node && node_id) # there is a filter on node-id + if filter.node.tobytes() != node_id # the node id doesn't match + tasmota.log(f"MTR: node_id filter {filter_node.tobytes().tohex()} doesn't match {node_id.tohex()}") + continue + end + end + # specified minimum value + var new_event_no_min = int64.toint64(filter.event_min) + if (event_no_min == nil) || (event_no_min < new_event_no_min) + event_no_min = new_event_no_min + end + end + end + return event_no_min + end + + ############################################################# + # process_read_or_subscribe_request_event_pull + # + # This version converts event request to an EventGenerator, a list of EventGenerator or nil + # + # or raises an exception + def process_read_or_subscribe_request_event_pull(query, msg) + if (query.event_requests != nil) + var generator_or_arr # single path generator (common case) or array of generators + var node_id = (msg != nil) ? msg.get_node_id() : nil + + # structure is `ReadRequestMessage` 10.6.2 p.558 + var size_requests = (query.event_requests ? size(query.event_requests) : 0) + # log(f"MTR: process_read_or_subscribe_request_pull {size_requests=}") + if (size_requests > 1) + generator_or_arr = [] + end + + # parse event requests + # scan event filters + var event_no_min = self.parse_event_filters_min_no(query.event_filters, node_id) + + # scan event filters + if query.event_requests + for q : query.event_requests + var gen = matter.EventGenerator(self.device) + gen.start(q.endpoint, q.cluster, q.event, event_no_min) + + if (size_requests > 1) + generator_or_arr.push(gen) + else + generator_or_arr = gen + end + + if tasmota.loglevel(3) + var event_name = "" + if (q.cluster != nil) && (q.event != nil) + event_name = matter.get_event_name(q.cluster, q.event) + event_name = (event_name != nil) ? "(" + event_name + ") " : "" + end + var ep_str = (q.endpoint != nil) ? f"{q.endpoint:02X}" : "**" + var cl_str = (q.cluster != nil) ? f"{q.cluster:04X}" : "****" + var ev_str = (q.event != nil) ? f"{q.event:02X}" : "**" + var event_no_min_str = (event_no_min != nil) ? f" (>{event_no_min})" : "" + log(f"MTR: >Read_Event({msg.session.local_session_id:6i}) [{ep_str}]{cl_str}/{ev_str} {event_name}{event_no_min_str}", 3) + end + end + end + return generator_or_arr end return nil @@ -785,12 +867,10 @@ class Matter_IM self.subs_shop.remove_by_session(msg.session) # if `keep_subscriptions`, kill all subscriptions from current session end - # log("MTR: received SubscribeRequestMessage=" + str(query), 3) - var sub = self.subs_shop.new_subscription(msg.session, query) - + # expand a string with all attributes requested - if tasmota.loglevel(3) + if tasmota.loglevel(3) && (query.attributes_requests != nil) var attr_req = [] var ctx = matter.Path() ctx.msg = msg @@ -800,15 +880,17 @@ class Matter_IM ctx.attribute = q.attribute attr_req.push(str(ctx)) end - log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s attr_req=%s event_req=%s", + log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s", msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0, - sub.subscription_id, query.fabric_filtered, - query.attributes_requests != nil ? size(query.attributes_requests) : "-", - query.event_requests != nil ? size(query.event_requests) : "-"), 3) + sub.subscription_id, query.fabric_filtered), 3) end var generator_or_arr = self.process_read_or_subscribe_request_pull(query, msg) - self.send_subscribe_response_pull(msg, generator_or_arr, sub) # pack into a response structure that will read attributes when expansion is triggered + var event_generator_or_arr = self.process_read_or_subscribe_request_event_pull(query, msg) + + sub.set_event_generator_or_arr(event_generator_or_arr) + + self.send_queue.push(matter.IM_SubscribeResponse_Pull(msg, generator_or_arr, event_generator_or_arr, sub)) return true end @@ -881,7 +963,7 @@ class Matter_IM end if size(ret.invoke_responses) > 0 - self.send_invoke_response(msg, ret) + self.send_queue.push(matter.IM_InvokeResponse(msg, ret)) else return false # we don't send anything, hence the responder sends a simple packet ack end @@ -1052,7 +1134,7 @@ class Matter_IM generator.start(write_path.endpoint, write_path.cluster, write_path.attribute) var direct = generator.is_direct() var ctx - while (ctx := generator.next()) + while (ctx := generator.next_attribute()) ctx.msg = msg # enrich with message if ctx.status != nil # no match, return error because it was direct ctx.status = nil # remove status to silence output @@ -1074,7 +1156,7 @@ class Matter_IM # send the reponse that may need to be chunked if too large to fit in a single UDP message if !suppress_response - self.send_write_response(msg, ret) + self.send_queue.push(matter.IM_WriteResponse(msg, ret)) end end return true @@ -1123,7 +1205,7 @@ class Matter_IM var fake_read = matter.ReadRequestMessage() fake_read.fabric_filtered = false fake_read.attributes_requests = [] - + # build fake read request containing single read requests for all attributes that were changed for ctx: sub.updates var p1 = matter.AttributePathIB() p1.endpoint = ctx.endpoint @@ -1136,8 +1218,9 @@ class Matter_IM sub.is_keep_alive = false # sending an actual data update var generator_or_arr = self.process_read_or_subscribe_request_pull(fake_read, nil #-no msg-#) + var event_generator_or_arr = sub.update_event_generator_array() - var report_data_msg = matter.IM_ReportDataSubscribed_Pull(session._message_handler, session, generator_or_arr, sub) + var report_data_msg = matter.IM_ReportDataSubscribed_Pull(session._message_handler, session, generator_or_arr, event_generator_or_arr, sub) self.send_queue.push(report_data_msg) # push message to queue self.send_enqueued(session._message_handler) # and send queued messages now end @@ -1148,12 +1231,13 @@ class Matter_IM def send_subscribe_heartbeat(sub) var session = sub.session - log(f"MTR: >>: ReportData_Pull send_im start {current_generator.path_in_endpoint}/{current_generator.path_in_cluster}/{current_generator.path_in_attribute}",3) var ctx - while not_full && (ctx := current_generator.next()) # 'not_full' must be first to avoid removing an item when we don't want + while not_full && (ctx := current_generator.next_attribute()) # 'not_full' must be first to avoid removing an item when we don't want # log(f">>>: ReportData_Pull {ctx=}", 3) - var debug = responder.device.debug var force_log = current_generator.is_direct() || debug var elt_bytes = responder.im.read_single_attribute_to_bytes(current_generator.get_pi(), ctx, resp.session, force_log) # TODO adapt no_log if (elt_bytes == nil) continue end # silently ignored, iterate to next @@ -234,23 +240,75 @@ class Matter_IM_ReportData_Pull : Matter_IM_Message end + # do we have left-overs from events, i.e. self.data_ev is non-empty bytes() + if not_full && (self.data_ev != nil) && (size(self.data_ev) > 0) + # try to add self.data_ev + if (size(data) + size(self.data_ev) > self.MAX_MESSAGE) + not_full = false # skip until next iteration + data_ev = nil # don't output any value + else + self.data_ev = nil # we could add it, so remove from left-overs + end + end + + ########## Events + while not_full && (self.event_generator_or_arr != nil) + # get the current generator (first element of list or single object) + var current_generator = isinstance(self.event_generator_or_arr, list) ? self.event_generator_or_arr[0] : self.event_generator_or_arr + # now events + var ev + while not_full && (ev := current_generator.next_event()) # 'not_full' must be first to avoid removing an item when we don't want + # conditional logging + if debug && tasmota.loglevel(3) + var data_str = '' + if (ev.data0 != nil) data_str = " - " + str(ev.data0) end + if (ev.data1 != nil) data_str += ", " + str(ev.data1) end + if (ev.data2 != nil) data_str += ", " + str(ev.data2) end + log(f"MTR: >Read_Event({resp.session.local_session_id:6i}|{ev.event_no:8s}) [{ev.endpoint:02X}]{ev.cluster:04X}/{ev.event_id:02X}{data_str}", 3) + end + # send bytes + var ev_bytes = ev.to_raw_bytes() + if (size(data) + size(data_ev) + size(ev_bytes) > self.MAX_MESSAGE) + self.data_ev = ev_bytes # save for next iteration + not_full = false + else + data_ev.append(ev_bytes) # append response since we have enough room + end + end + + # if we are here, then we exhausted the current generator, and we need to move to the next one + if not_full + if isinstance(self.event_generator_or_arr, list) + self.event_generator_or_arr.remove(0) # remove first element + if size(self.event_generator_or_arr) == 0 + self.event_generator_or_arr = nil # empty array so we put nil + end + else + self.event_generator_or_arr = nil # there was a single entry, so replace with nil + end + end + + end + + ########## Response # prepare the response var ret = matter.ReportDataMessage() ret.subscription_id = self.subscription_id ret.suppress_response = self.suppress_response # ret.suppress_response = true - ret.attribute_reports = [data] - ret.more_chunked_messages = (self.data != nil) # we got more data to send + if (data != nil && size(data) > 0) + ret.attribute_reports = [data] + end + if (data_ev != nil && size(data_ev) > 0) + ret.event_reports = [data_ev] + end + ret.more_chunked_messages = (self.data != nil) || (self.data_ev != nil) # we got more data to send # print(">>>>> send elements before encode") var raw_tlv = ret.to_TLV() - # print(">>>>> send elements before encode 2") var encoded_tlv = raw_tlv.tlv2raw(bytes(self.MAX_MESSAGE)) # takes time - # print(">>>>> send elements before encode 3") resp.encode_frame(encoded_tlv) # payload in cleartext, pre-allocate max buffer - # print(">>>>> send elements after encode") resp.encrypt() - # print(">>>>> send elements after encrypt") # log(format("MTR: {self.path_in_event_min}} event_no={self.event_no} event={matter.inspect(next_event)})", 3) + return next_event + end + end + end + + ################################################################################ + # event_is_match + # + # Returns true if the event passed as argument matches the filter + # but does not check the event number, because it is filtered out before + def event_is_match(next_event) + var match = true + if (self.path_in_endpoint != nil) + match = match && (self.path_in_endpoint == next_event.endpoint) + end + if (self.path_in_cluster != nil) + match = match && (self.path_in_cluster == next_event.cluster) + end + if (self.path_in_event != nil) + match = match && (self.path_in_event == next_event.event_id) + end + return match + end +end +matter.EventGenerator = Matter_EventGenerator diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_Generator.be b/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_PathGenerator.be similarity index 97% rename from lib/libesp32/berry_matter/src/embedded/Matter_Path_1_Generator.be rename to lib/libesp32/berry_matter/src/embedded/Matter_Path_1_PathGenerator.be index b774cfdbb..49be5faac 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_Generator.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_PathGenerator.be @@ -1,5 +1,5 @@ # -# Matter_IM_Path_1.be - suppport for Matter concrete path generator +# Matter_Path_1_Generator.be - suppport for Matter concrete path generator # # Copyright (C) 2023 Stephan Hadinger & Theo Arends # @@ -104,11 +104,11 @@ class Matter_PathGenerator end ################################################################################ - # default_status_error + # _default_status_error # # Get the default error if the read or write fails. # This error is only reported if `direct` is true - def default_status_error() + def _default_status_error() if self.is_direct() if (!self.endpoint_found) return matter.UNSUPPORTED_ENDPOINT end if (!self.cluster_found) return matter.UNSUPPORTED_CLUSTER end @@ -119,15 +119,15 @@ class Matter_PathGenerator end ################################################################################ - # finished + # is_finished # # Returns `true` if we have exhausted the generator - def finished() + def is_finished() return (self.pi != false) end ################################################################################ - # finished + # get_pi # # Returns the endpoint object for the last context returned, or `nil` if not found or exhausted def get_pi() @@ -135,14 +135,14 @@ class Matter_PathGenerator end ################################################################################ - # next + # next_attribute # # Generate next concrete path # Returns: # - a path object (that is valid until next call) # - if 'direct' (concrete path), ctx.status contains the appropriate error code if the path value is not supported # - `nil` if no more objects - def next() + def next_attribute() if (self.pi == true) || (self.pi != nil && self.is_direct()) # if we already answered a succesful or missing context for direct request, abort on second call self.reset() return nil @@ -188,7 +188,7 @@ class Matter_PathGenerator path_concrete.cluster = self.path_in_cluster path_concrete.attribute = self.path_in_attribute path_concrete.fabric_filtered = self.path_in_fabric_filtered - path_concrete.status = self.default_status_error() + path_concrete.status = self._default_status_error() self.pi = true # next call will trigger Generator exhausted # log(f">>>: PathGenerator next path_concrete:{path_concrete} direct", 3) return path_concrete @@ -298,7 +298,7 @@ var gen = matter.PathGenerator(matter_device) def gen_path_dump(endpoint, cluster, attribute) gen.start(endpoint, cluster, attribute) var cp - while (cp := gen.next()) + while (cp := gen.next_attribute()) print(cp) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be index 6c2f19160..32d223593 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be @@ -183,36 +183,12 @@ class Matter_Plugin ############################################################# # generate a new event # - def publish_event(cluster, event, priority, data) - var event_ib = matter.EventDataIB() - var event_path = matter.EventPathIB() - event_path.endpoint = self.endpoint - event_path.cluster = cluster - event_path.event = event - event_ib.path = event_path - event_ib.priority = priority - event_ib.event_number = self.device.events.get_next_event_no() - event_ib.epoch_timestamp = tasmota.rtc('utc') - if (event_ib.epoch_timestamp < 1700000000) event_ib.epoch_timestamp = nil end # no valid time - event_ib.data = data - if tasmota.loglevel(3) - var data_str = str(event_ib.data) - if (cluster == 0x0028) && (event == 0x00) - # put the software version in a readable format - var val = event_ib.data.val - data_str = format("%i.%i.%i.%i", (val >> 24) & 0xFF, (val >> 16) & 0xFF, (val >> 8) & 0xFF, val & 0xFF) - end - var priority_str = (priority == 2) ? "CRIT " : (priority == 1) ? "INFO " : "DEBUG " - var event_name = matter.get_event_name(cluster, event) - event_name = (event_name != nil) ? "(" + event_name + ") " : "" - log(f"MTR: +Add_Event ({priority_str}{event_ib.event_number:8s}) [{event_path.endpoint:02X}]{event_path.cluster:04X}/{event_path.event:02X} {event_name}- {data_str}", 2) - end - if tasmota.loglevel(4) - log(f"MTR: Publishing event {event_ib}", 4) - end - - self.device.events.queue_event(event_ib) + def publish_event(cluster, event_id, priority, data0, data1, data2) + self.device.events.publish_event(self.endpoint, cluster, event_id, true #-urgent-#, priority, data0, data1, data2) end + # def publish_event_non_urgent(cluster, event, priority, data0, data1, data2) + # self.device.events.publish_event(self.endpoint, cluster, event, false #-non_urgent-#, priority, data0, data1, data2) + # end #- testing var root = matter_device.plugins[0] diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be index a01e7bcd2..1dc5b0a6a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be @@ -49,7 +49,6 @@ class Matter_Plugin_Root : Matter_Plugin # Constructor def init(device, endpoint, config) super(self).init(device, endpoint, config) - self.publish_event(0x0028, 0x00, matter.EVENT_CRITICAL, matter.TLV.Matter_TLV_item().set(matter.TLV.U4, tasmota.version())) # Event StartUp - Software Version self.publish_event(0x0033, 0x03, matter.EVENT_CRITICAL, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1)) # Event BootReason - PowerOnReboot - TODO if we need to refine end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be index 4576ebc4d..56c53fe18 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be @@ -313,6 +313,7 @@ class Matter_Device def every_second() self.sessions.every_second() self.message_handler.every_second() + self.events.every_second() # periodically remove bytes() representation of events if self.commissioning_open != nil && tasmota.time_reached(self.commissioning_open) # timeout reached, close provisioning self.commissioning_open = nil end @@ -321,7 +322,6 @@ class Matter_Device ############################################################# # dispatch every 250ms to all plugins def every_250ms() - self.message_handler.every_250ms() # call read_sensors if needed self.read_sensors_scheduler() # call all plugins, use a manual loop to avoid creating a new object @@ -380,9 +380,11 @@ class Matter_Device end ############################################################# + # dispatch every 50ms # ticks def every_50ms() self.tick += 1 + self.message_handler.every_50ms() end ############################################################# @@ -535,7 +537,7 @@ class Matter_Device var direct = path_generator.is_direct() var concrete_path - while ((concrete_path := path_generator.next()) != nil) + while ((concrete_path := path_generator.next_attribute()) != nil) var finished = cb(path_generator.get_pi(), concrete_path) # call the callback with the plugin and the context end end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h index e5659f35c..84a9fb13a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h @@ -6,187 +6,6 @@ extern const bclass be_class_Matter_EventHandler; -/******************************************************************** -** Solidified function: queue_event -********************************************************************/ -extern const bclass be_class_Matter_EventHandler; -be_local_closure(class_Matter_EventHandler_queue_event, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_EventHandler, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(EventQueued), - /* K2 */ be_nested_str_weak(priority), - /* K3 */ be_nested_str_weak(queue_debug), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(EVENT_QUEUE_SIZE_MAX), - /* K6 */ be_nested_str_weak(pop), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(EVENT_DEBUG), - /* K9 */ be_nested_str_weak(queue_info), - /* K10 */ be_nested_str_weak(EVENT_INFO), - /* K11 */ be_nested_str_weak(queue_critical), - }), - be_str_weak(queue_event), - &be_const_str_solidified, - ( &(const binstruction[58]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x880C0502, // 0004 GETMBR R3 R2 K2 - 0x88100103, // 0005 GETMBR R4 R0 K3 - 0x8C100904, // 0006 GETMET R4 R4 K4 - 0x5C180400, // 0007 MOVE R6 R2 - 0x7C100400, // 0008 CALL R4 2 - 0x6010000C, // 0009 GETGBL R4 G12 - 0x88140103, // 000A GETMBR R5 R0 K3 - 0x7C100200, // 000B CALL R4 1 - 0x88140105, // 000C GETMBR R5 R0 K5 - 0x24100805, // 000D GT R4 R4 R5 - 0x78120029, // 000E JMPF R4 #0039 - 0x88100103, // 000F GETMBR R4 R0 K3 - 0x8C100906, // 0010 GETMET R4 R4 K6 - 0x58180007, // 0011 LDCONST R6 K7 - 0x7C100400, // 0012 CALL R4 2 - 0x88140902, // 0013 GETMBR R5 R4 K2 - 0xB81A0000, // 0014 GETNGBL R6 K0 - 0x88180D08, // 0015 GETMBR R6 R6 K8 - 0x24140A06, // 0016 GT R5 R5 R6 - 0x78160020, // 0017 JMPF R5 #0039 - 0x88140109, // 0018 GETMBR R5 R0 K9 - 0x8C140B04, // 0019 GETMET R5 R5 K4 - 0x5C1C0800, // 001A MOVE R7 R4 - 0x7C140400, // 001B CALL R5 2 - 0x6014000C, // 001C GETGBL R5 G12 - 0x88180109, // 001D GETMBR R6 R0 K9 - 0x7C140200, // 001E CALL R5 1 - 0x88180105, // 001F GETMBR R6 R0 K5 - 0x24140A06, // 0020 GT R5 R5 R6 - 0x78160016, // 0021 JMPF R5 #0039 - 0x88140109, // 0022 GETMBR R5 R0 K9 - 0x8C140B06, // 0023 GETMET R5 R5 K6 - 0x581C0007, // 0024 LDCONST R7 K7 - 0x7C140400, // 0025 CALL R5 2 - 0x88180B02, // 0026 GETMBR R6 R5 K2 - 0xB81E0000, // 0027 GETNGBL R7 K0 - 0x881C0F0A, // 0028 GETMBR R7 R7 K10 - 0x24180C07, // 0029 GT R6 R6 R7 - 0x781A000D, // 002A JMPF R6 #0039 - 0x8818010B, // 002B GETMBR R6 R0 K11 - 0x8C180D04, // 002C GETMET R6 R6 K4 - 0x5C200A00, // 002D MOVE R8 R5 - 0x7C180400, // 002E CALL R6 2 - 0x6018000C, // 002F GETGBL R6 G12 - 0x881C010B, // 0030 GETMBR R7 R0 K11 - 0x7C180200, // 0031 CALL R6 1 - 0x881C0105, // 0032 GETMBR R7 R0 K5 - 0x24180C07, // 0033 GT R6 R6 R7 - 0x781A0003, // 0034 JMPF R6 #0039 - 0x8818010B, // 0035 GETMBR R6 R0 K11 - 0x8C180D06, // 0036 GETMET R6 R6 K6 - 0x58200007, // 0037 LDCONST R8 K7 - 0x7C180400, // 0038 CALL R6 2 - 0x80000000, // 0039 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_EventHandler; -be_local_closure(class_Matter_EventHandler_init, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_EventHandler, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(queue_debug), - /* K2 */ be_nested_str_weak(queue_info), - /* K3 */ be_nested_str_weak(queue_critical), - /* K4 */ be_nested_str_weak(load_event_no_persisted), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0x60080012, // 0004 GETGBL R2 G18 - 0x7C080000, // 0005 CALL R2 0 - 0x90020402, // 0006 SETMBR R0 K2 R2 - 0x60080012, // 0007 GETGBL R2 G18 - 0x7C080000, // 0008 CALL R2 0 - 0x90020602, // 0009 SETMBR R0 K3 R2 - 0x8C080104, // 000A GETMET R2 R0 K4 - 0x7C080200, // 000B CALL R2 1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_next_event_no -********************************************************************/ -extern const bclass be_class_Matter_EventHandler; -be_local_closure(class_Matter_EventHandler_get_next_event_no, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_EventHandler, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(counter_event_no), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(counter_event_no_persisted), - /* K4 */ be_nested_str_weak(load_event_no_persisted), - }), - be_str_weak(get_next_event_no), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x580C0002, // 0002 LDCONST R3 K2 - 0x7C040400, // 0003 CALL R1 2 - 0x90020001, // 0004 SETMBR R0 K0 R1 - 0x88040100, // 0005 GETMBR R1 R0 K0 - 0x88080103, // 0006 GETMBR R2 R0 K3 - 0x28040202, // 0007 GE R1 R1 R2 - 0x78060001, // 0008 JMPF R1 #000B - 0x8C040104, // 0009 GETMET R1 R0 K4 - 0x7C040200, // 000A CALL R1 1 - 0x88040100, // 000B GETMBR R1 R0 K0 - 0x80040200, // 000C RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: dump ********************************************************************/ @@ -298,6 +117,77 @@ be_local_closure(class_Matter_EventHandler_dump, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: get_last_event_no +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_get_last_event_no, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(counter_event_no), + }), + be_str_weak(get_last_event_no), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_next_event_no +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_get_next_event_no, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(counter_event_no), + /* K1 */ be_nested_str_weak(add), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(counter_event_no_persisted), + /* K4 */ be_nested_str_weak(load_event_no_persisted), + }), + be_str_weak(get_next_event_no), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x580C0002, // 0002 LDCONST R3 K2 + 0x7C040400, // 0003 CALL R1 2 + 0x90020001, // 0004 SETMBR R0 K0 R1 + 0x88040100, // 0005 GETMBR R1 R0 K0 + 0x88080103, // 0006 GETMBR R2 R0 K3 + 0x28040202, // 0007 GE R1 R1 R2 + 0x78060001, // 0008 JMPF R1 #000B + 0x8C040104, // 0009 GETMET R1 R0 K4 + 0x7C040200, // 000A CALL R1 1 + 0x88040100, // 000B GETMBR R1 R0 K0 + 0x80040200, // 000C RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: load_event_no_persisted ********************************************************************/ @@ -315,7 +205,7 @@ be_local_closure(class_Matter_EventHandler_load_event_no_persisted, /* name */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(persist), /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(EVENT_NO_FILENAME), + /* K2 */ be_nested_str_weak(EVENT_NO_KEY), /* K3 */ be_nested_str_weak(0), /* K4 */ be_nested_str_weak(counter_event_no), /* K5 */ be_nested_str_weak(int64), @@ -362,28 +252,539 @@ be_local_closure(class_Matter_EventHandler_load_event_no_persisted, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: queue_event +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_queue_event, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(priority), + /* K1 */ be_nested_str_weak(queue_debug), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(EVENT_QUEUE_SIZE_MAX), + /* K4 */ be_nested_str_weak(pop), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(EVENT_DEBUG), + /* K8 */ be_nested_str_weak(queue_info), + /* K9 */ be_nested_str_weak(EVENT_INFO), + /* K10 */ be_nested_str_weak(queue_critical), + }), + be_str_weak(queue_event), + &be_const_str_solidified, + ( &(const binstruction[54]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x5C140200, // 0003 MOVE R5 R1 + 0x7C0C0400, // 0004 CALL R3 2 + 0x600C000C, // 0005 GETGBL R3 G12 + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x7C0C0200, // 0007 CALL R3 1 + 0x88100103, // 0008 GETMBR R4 R0 K3 + 0x240C0604, // 0009 GT R3 R3 R4 + 0x780E0029, // 000A JMPF R3 #0035 + 0x880C0101, // 000B GETMBR R3 R0 K1 + 0x8C0C0704, // 000C GETMET R3 R3 K4 + 0x58140005, // 000D LDCONST R5 K5 + 0x7C0C0400, // 000E CALL R3 2 + 0x88100700, // 000F GETMBR R4 R3 K0 + 0xB8160C00, // 0010 GETNGBL R5 K6 + 0x88140B07, // 0011 GETMBR R5 R5 K7 + 0x24100805, // 0012 GT R4 R4 R5 + 0x78120020, // 0013 JMPF R4 #0035 + 0x88100108, // 0014 GETMBR R4 R0 K8 + 0x8C100902, // 0015 GETMET R4 R4 K2 + 0x5C180600, // 0016 MOVE R6 R3 + 0x7C100400, // 0017 CALL R4 2 + 0x6010000C, // 0018 GETGBL R4 G12 + 0x88140108, // 0019 GETMBR R5 R0 K8 + 0x7C100200, // 001A CALL R4 1 + 0x88140103, // 001B GETMBR R5 R0 K3 + 0x24100805, // 001C GT R4 R4 R5 + 0x78120016, // 001D JMPF R4 #0035 + 0x88100108, // 001E GETMBR R4 R0 K8 + 0x8C100904, // 001F GETMET R4 R4 K4 + 0x58180005, // 0020 LDCONST R6 K5 + 0x7C100400, // 0021 CALL R4 2 + 0x88140900, // 0022 GETMBR R5 R4 K0 + 0xB81A0C00, // 0023 GETNGBL R6 K6 + 0x88180D09, // 0024 GETMBR R6 R6 K9 + 0x24140A06, // 0025 GT R5 R5 R6 + 0x7816000D, // 0026 JMPF R5 #0035 + 0x8814010A, // 0027 GETMBR R5 R0 K10 + 0x8C140B02, // 0028 GETMET R5 R5 K2 + 0x5C1C0800, // 0029 MOVE R7 R4 + 0x7C140400, // 002A CALL R5 2 + 0x6014000C, // 002B GETGBL R5 G12 + 0x8818010A, // 002C GETMBR R6 R0 K10 + 0x7C140200, // 002D CALL R5 1 + 0x88180103, // 002E GETMBR R6 R0 K3 + 0x24140A06, // 002F GT R5 R5 R6 + 0x78160003, // 0030 JMPF R5 #0035 + 0x8814010A, // 0031 GETMBR R5 R0 K10 + 0x8C140B04, // 0032 GETMET R5 R5 K4 + 0x581C0005, // 0033 LDCONST R7 K5 + 0x7C140400, // 0034 CALL R5 2 + 0x80000000, // 0035 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_every_second, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(compact), + }), + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_init, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(queue_debug), + /* K2 */ be_nested_str_weak(queue_info), + /* K3 */ be_nested_str_weak(queue_critical), + /* K4 */ be_nested_str_weak(load_event_no_persisted), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x60080012, // 0004 GETGBL R2 G18 + 0x7C080000, // 0005 CALL R2 0 + 0x90020402, // 0006 SETMBR R0 K2 R2 + 0x60080012, // 0007 GETGBL R2 G18 + 0x7C080000, // 0008 CALL R2 0 + 0x90020602, // 0009 SETMBR R0 K3 R2 + 0x8C080104, // 000A GETMET R2 R0 K4 + 0x7C080200, // 000B CALL R2 1 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_min_no +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_find_min_no, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_int(1), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(event_no), + }), + be_str_weak(find_in_queue), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x600C000C, // 0000 GETGBL R3 G12 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x040C0700, // 0003 SUB R3 R3 K0 + 0x28100701, // 0004 GE R4 R3 K1 + 0x78120011, // 0005 JMPF R4 #0018 + 0x94100203, // 0006 GETIDX R4 R1 R3 + 0x4C140000, // 0007 LDNIL R5 + 0x20140405, // 0008 NE R5 R2 R5 + 0x78160003, // 0009 JMPF R5 #000E + 0x88140902, // 000A GETMBR R5 R4 K2 + 0x18140A02, // 000B LE R5 R5 R2 + 0x78160000, // 000C JMPF R5 #000E + 0x80040000, // 000D RET 1 R0 + 0x4C140000, // 000E LDNIL R5 + 0x1C140005, // 000F EQ R5 R0 R5 + 0x74160003, // 0010 JMPT R5 #0015 + 0x88140902, // 0011 GETMBR R5 R4 K2 + 0x88180102, // 0012 GETMBR R6 R0 K2 + 0x14140A06, // 0013 LT R5 R5 R6 + 0x78160000, // 0014 JMPF R5 #0016 + 0x5C000800, // 0015 MOVE R0 R4 + 0x040C0700, // 0016 SUB R3 R3 K0 + 0x7001FFEB, // 0017 JMP #0004 + 0x80040000, // 0018 RET 1 R0 + }) + ), + &be_class_Matter_EventHandler, + }), + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(counter_event_no), + /* K1 */ be_nested_str_weak(queue_debug), + /* K2 */ be_nested_str_weak(queue_info), + /* K3 */ be_nested_str_weak(queue_critical), + }), + be_str_weak(find_min_no), + &be_const_str_solidified, + ( &(const binstruction[29]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0004, // 0002 JMPF R2 #0008 + 0x88080100, // 0003 GETMBR R2 R0 K0 + 0x28080202, // 0004 GE R2 R1 R2 + 0x780A0001, // 0005 JMPF R2 #0008 + 0x4C080000, // 0006 LDNIL R2 + 0x80040400, // 0007 RET 1 R2 + 0x84080000, // 0008 CLOSURE R2 P0 + 0x4C0C0000, // 0009 LDNIL R3 + 0x5C100400, // 000A MOVE R4 R2 + 0x5C140600, // 000B MOVE R5 R3 + 0x88180101, // 000C GETMBR R6 R0 K1 + 0x5C1C0200, // 000D MOVE R7 R1 + 0x7C100600, // 000E CALL R4 3 + 0x5C0C0800, // 000F MOVE R3 R4 + 0x5C100400, // 0010 MOVE R4 R2 + 0x5C140600, // 0011 MOVE R5 R3 + 0x88180102, // 0012 GETMBR R6 R0 K2 + 0x5C1C0200, // 0013 MOVE R7 R1 + 0x7C100600, // 0014 CALL R4 3 + 0x5C0C0800, // 0015 MOVE R3 R4 + 0x5C100400, // 0016 MOVE R4 R2 + 0x5C140600, // 0017 MOVE R5 R3 + 0x88180103, // 0018 GETMBR R6 R0 K3 + 0x5C1C0200, // 0019 MOVE R7 R1 + 0x7C100600, // 001A CALL R4 3 + 0x5C0C0800, // 001B MOVE R3 R4 + 0x80040600, // 001C RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: publish_event +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_publish_event, /* name */ + be_nested_proto( + 23, /* nstack */ + 9, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(EventQueued), + /* K2 */ be_nested_str_weak(get_next_event_no), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(loglevel), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(), + /* K7 */ be_nested_str_weak(_X2C_X20), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(val), + /* K10 */ be_nested_str_weak(_X25i_X2E_X25i_X2E_X25i_X2E_X25i), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(CRIT_X20_X20), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(INFO_X20_X20), + /* K15 */ be_nested_str_weak(DEBUG_X20), + /* K16 */ be_nested_str_weak(get_event_name), + /* K17 */ be_nested_str_weak(_X28), + /* K18 */ be_nested_str_weak(_X29_X20), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X20_X25s_X2D_X20_X25s), + /* K21 */ be_nested_str_weak(event_no), + /* K22 */ be_nested_str_weak(endpoint), + /* K23 */ be_nested_str_weak(cluster), + /* K24 */ be_nested_str_weak(event_id), + /* K25 */ be_nested_str_weak(queue_event), + /* K26 */ be_nested_str_weak(device), + /* K27 */ be_nested_str_weak(message_handler), + /* K28 */ be_nested_str_weak(im), + /* K29 */ be_nested_str_weak(subs_shop), + /* K30 */ be_nested_str_weak(event_published), + }), + be_str_weak(publish_event), + &be_const_str_solidified, + ( &(const binstruction[112]) { /* code */ + 0xB8260000, // 0000 GETNGBL R9 K0 + 0x8C241301, // 0001 GETMET R9 R9 K1 + 0x8C2C0102, // 0002 GETMET R11 R0 K2 + 0x7C2C0200, // 0003 CALL R11 1 + 0x5C300200, // 0004 MOVE R12 R1 + 0x5C340400, // 0005 MOVE R13 R2 + 0x5C380600, // 0006 MOVE R14 R3 + 0x5C3C0800, // 0007 MOVE R15 R4 + 0x5C400A00, // 0008 MOVE R16 R5 + 0x5C440C00, // 0009 MOVE R17 R6 + 0x5C480E00, // 000A MOVE R18 R7 + 0x5C4C1000, // 000B MOVE R19 R8 + 0x7C241400, // 000C CALL R9 10 + 0xB82A0600, // 000D GETNGBL R10 K3 + 0x8C281504, // 000E GETMET R10 R10 K4 + 0x58300005, // 000F LDCONST R12 K5 + 0x7C280400, // 0010 CALL R10 2 + 0x782A0052, // 0011 JMPF R10 #0065 + 0x58280006, // 0012 LDCONST R10 K6 + 0x4C2C0000, // 0013 LDNIL R11 + 0x202C0C0B, // 0014 NE R11 R6 R11 + 0x782E0003, // 0015 JMPF R11 #001A + 0x602C0008, // 0016 GETGBL R11 G8 + 0x5C300C00, // 0017 MOVE R12 R6 + 0x7C2C0200, // 0018 CALL R11 1 + 0x5C281600, // 0019 MOVE R10 R11 + 0x4C2C0000, // 001A LDNIL R11 + 0x202C0E0B, // 001B NE R11 R7 R11 + 0x782E0004, // 001C JMPF R11 #0022 + 0x602C0008, // 001D GETGBL R11 G8 + 0x5C300E00, // 001E MOVE R12 R7 + 0x7C2C0200, // 001F CALL R11 1 + 0x002E0E0B, // 0020 ADD R11 K7 R11 + 0x0028140B, // 0021 ADD R10 R10 R11 + 0x4C2C0000, // 0022 LDNIL R11 + 0x202C100B, // 0023 NE R11 R8 R11 + 0x782E0004, // 0024 JMPF R11 #002A + 0x602C0008, // 0025 GETGBL R11 G8 + 0x5C301000, // 0026 MOVE R12 R8 + 0x7C2C0200, // 0027 CALL R11 1 + 0x002E0E0B, // 0028 ADD R11 K7 R11 + 0x0028140B, // 0029 ADD R10 R10 R11 + 0x542E0027, // 002A LDINT R11 40 + 0x1C2C040B, // 002B EQ R11 R2 R11 + 0x782E0014, // 002C JMPF R11 #0042 + 0x1C2C0708, // 002D EQ R11 R3 K8 + 0x782E0012, // 002E JMPF R11 #0042 + 0x882C0D09, // 002F GETMBR R11 R6 K9 + 0x60300018, // 0030 GETGBL R12 G24 + 0x5834000A, // 0031 LDCONST R13 K10 + 0x543A0017, // 0032 LDINT R14 24 + 0x3C38160E, // 0033 SHR R14 R11 R14 + 0x543E00FE, // 0034 LDINT R15 255 + 0x2C381C0F, // 0035 AND R14 R14 R15 + 0x543E000F, // 0036 LDINT R15 16 + 0x3C3C160F, // 0037 SHR R15 R11 R15 + 0x544200FE, // 0038 LDINT R16 255 + 0x2C3C1E10, // 0039 AND R15 R15 R16 + 0x54420007, // 003A LDINT R16 8 + 0x3C401610, // 003B SHR R16 R11 R16 + 0x544600FE, // 003C LDINT R17 255 + 0x2C402011, // 003D AND R16 R16 R17 + 0x544600FE, // 003E LDINT R17 255 + 0x2C441611, // 003F AND R17 R11 R17 + 0x7C300A00, // 0040 CALL R12 5 + 0x5C281800, // 0041 MOVE R10 R12 + 0x1C2C0B0B, // 0042 EQ R11 R5 K11 + 0x782E0001, // 0043 JMPF R11 #0046 + 0x582C000C, // 0044 LDCONST R11 K12 + 0x70020004, // 0045 JMP #004B + 0x1C2C0B0D, // 0046 EQ R11 R5 K13 + 0x782E0001, // 0047 JMPF R11 #004A + 0x582C000E, // 0048 LDCONST R11 K14 + 0x70020000, // 0049 JMP #004B + 0x582C000F, // 004A LDCONST R11 K15 + 0xB8320000, // 004B GETNGBL R12 K0 + 0x8C301910, // 004C GETMET R12 R12 K16 + 0x5C380400, // 004D MOVE R14 R2 + 0x5C3C0600, // 004E MOVE R15 R3 + 0x7C300600, // 004F CALL R12 3 + 0x4C340000, // 0050 LDNIL R13 + 0x2034180D, // 0051 NE R13 R12 R13 + 0x78360002, // 0052 JMPF R13 #0056 + 0x0036220C, // 0053 ADD R13 K17 R12 + 0x00341B12, // 0054 ADD R13 R13 K18 + 0x70020000, // 0055 JMP #0057 + 0x58340006, // 0056 LDCONST R13 K6 + 0x5C301A00, // 0057 MOVE R12 R13 + 0xB8362600, // 0058 GETNGBL R13 K19 + 0x60380018, // 0059 GETGBL R14 G24 + 0x583C0014, // 005A LDCONST R15 K20 + 0x5C401600, // 005B MOVE R16 R11 + 0x88441315, // 005C GETMBR R17 R9 K21 + 0x88481316, // 005D GETMBR R18 R9 K22 + 0x884C1317, // 005E GETMBR R19 R9 K23 + 0x88501318, // 005F GETMBR R20 R9 K24 + 0x5C541800, // 0060 MOVE R21 R12 + 0x5C581400, // 0061 MOVE R22 R10 + 0x7C381000, // 0062 CALL R14 8 + 0x583C000B, // 0063 LDCONST R15 K11 + 0x7C340400, // 0064 CALL R13 2 + 0x8C280119, // 0065 GETMET R10 R0 K25 + 0x5C301200, // 0066 MOVE R12 R9 + 0x7C280400, // 0067 CALL R10 2 + 0x8828011A, // 0068 GETMBR R10 R0 K26 + 0x8828151B, // 0069 GETMBR R10 R10 K27 + 0x8828151C, // 006A GETMBR R10 R10 K28 + 0x8828151D, // 006B GETMBR R10 R10 K29 + 0x8C28151E, // 006C GETMET R10 R10 K30 + 0x5C301200, // 006D MOVE R12 R9 + 0x7C280400, // 006E CALL R10 2 + 0x80000000, // 006F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: compact +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_compact, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(compact), + /* K2 */ be_const_int(1), + }), + be_str_weak(compact_queue), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C080200, // 0003 CALL R2 1 + 0x14080202, // 0004 LT R2 R1 R2 + 0x780A0004, // 0005 JMPF R2 #000B + 0x94080001, // 0006 GETIDX R2 R0 R1 + 0x8C080501, // 0007 GETMET R2 R2 K1 + 0x7C080200, // 0008 CALL R2 1 + 0x00040302, // 0009 ADD R1 R1 K2 + 0x7001FFF5, // 000A JMP #0001 + 0x80000000, // 000B RET 0 + }) + ), + &be_class_Matter_EventHandler, + }), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(queue_debug), + /* K1 */ be_nested_str_weak(queue_info), + /* K2 */ be_nested_str_weak(queue_critical), + }), + be_str_weak(compact), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x84040000, // 0000 CLOSURE R1 P0 + 0x5C080200, // 0001 MOVE R2 R1 + 0x880C0100, // 0002 GETMBR R3 R0 K0 + 0x7C080200, // 0003 CALL R2 1 + 0x5C080200, // 0004 MOVE R2 R1 + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x7C080200, // 0006 CALL R2 1 + 0x5C080200, // 0007 MOVE R2 R1 + 0x880C0102, // 0008 GETMBR R3 R0 K2 + 0x7C080200, // 0009 CALL R2 1 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_EventHandler ********************************************************************/ be_local_class(Matter_EventHandler, 6, NULL, - be_nested_map(14, + be_nested_map(19, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(EVENT_NO_INCR, -1), be_const_int(1000) }, { be_const_key_weak(queue_info, -1), be_const_var(1) }, - { be_const_key_weak(queue_critical, 11), be_const_var(2) }, - { be_const_key_weak(queue_event, -1), be_const_closure(class_Matter_EventHandler_queue_event_closure) }, - { be_const_key_weak(counter_event_no_persisted, 6), be_const_var(5) }, + { be_const_key_weak(dump, 4), be_const_closure(class_Matter_EventHandler_dump_closure) }, + { be_const_key_weak(compact, -1), be_const_closure(class_Matter_EventHandler_compact_closure) }, { be_const_key_weak(init, -1), be_const_closure(class_Matter_EventHandler_init_closure) }, - { be_const_key_weak(get_next_event_no, -1), be_const_closure(class_Matter_EventHandler_get_next_event_no_closure) }, - { be_const_key_weak(dump, -1), be_const_closure(class_Matter_EventHandler_dump_closure) }, - { be_const_key_weak(queue_debug, 10), be_const_var(0) }, - { be_const_key_weak(EVENT_NO_FILENAME, -1), be_nested_str_weak(_matter_event_no) }, - { be_const_key_weak(counter_event_no, -1), be_const_var(4) }, + { be_const_key_weak(EVENT_NO_INCR, -1), be_const_int(1000) }, + { be_const_key_weak(load_event_no_persisted, 2), be_const_closure(class_Matter_EventHandler_load_event_no_persisted_closure) }, + { be_const_key_weak(EVENT_NO_KEY, -1), be_nested_str_weak(_matter_event_no) }, { be_const_key_weak(EVENT_QUEUE_SIZE_MAX, -1), be_const_int(10) }, - { be_const_key_weak(load_event_no_persisted, -1), be_const_closure(class_Matter_EventHandler_load_event_no_persisted_closure) }, - { be_const_key_weak(device, -1), be_const_var(3) }, + { be_const_key_weak(counter_event_no, -1), be_const_var(4) }, + { be_const_key_weak(queue_debug, -1), be_const_var(0) }, + { be_const_key_weak(publish_event, -1), be_const_closure(class_Matter_EventHandler_publish_event_closure) }, + { be_const_key_weak(queue_event, -1), be_const_closure(class_Matter_EventHandler_queue_event_closure) }, + { be_const_key_weak(get_last_event_no, 18), be_const_closure(class_Matter_EventHandler_get_last_event_no_closure) }, + { be_const_key_weak(get_next_event_no, 3), be_const_closure(class_Matter_EventHandler_get_next_event_no_closure) }, + { be_const_key_weak(counter_event_no_persisted, 16), be_const_var(5) }, + { be_const_key_weak(device, 10), be_const_var(3) }, + { be_const_key_weak(find_min_no, -1), be_const_closure(class_Matter_EventHandler_find_min_no_closure) }, + { be_const_key_weak(queue_critical, -1), be_const_var(2) }, + { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_EventHandler_every_second_closure) }, })), be_str_weak(Matter_EventHandler) ); @@ -391,78 +792,227 @@ be_local_class(Matter_EventHandler, extern const bclass be_class_Matter_EventQueued; /******************************************************************** -** Solidified function: init +** Solidified function: compact ********************************************************************/ extern const bclass be_class_Matter_EventQueued; -be_local_closure(class_Matter_EventQueued_init, /* name */ +be_local_closure(class_Matter_EventQueued_compact, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ + 2, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_EventQueued, 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(path), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(raw_tlv), + }), + be_str_weak(compact), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: to_raw_bytes +********************************************************************/ +extern const bclass be_class_Matter_EventQueued; +be_local_closure(class_Matter_EventQueued_to_raw_bytes, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventQueued, + 1, /* has constants */ + ( &(const bvalue[28]) { /* constants */ + /* K0 */ be_nested_str_weak(raw_tlv), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(EventReportIB), + /* K3 */ be_nested_str_weak(EventDataIB), + /* K4 */ be_nested_str_weak(event_data), + /* K5 */ be_nested_str_weak(EventPathIB), + /* K6 */ be_nested_str_weak(endpoint), + /* K7 */ be_nested_str_weak(cluster), + /* K8 */ be_nested_str_weak(event), + /* K9 */ be_nested_str_weak(event_id), + /* K10 */ be_nested_str_weak(is_urgent), + /* K11 */ be_nested_str_weak(path), + /* K12 */ be_nested_str_weak(priority), + /* K13 */ be_nested_str_weak(event_number), + /* K14 */ be_nested_str_weak(event_no), + /* K15 */ be_nested_str_weak(epoch_timestamp), + /* K16 */ be_nested_str_weak(data), + /* K17 */ be_nested_str_weak(TLV), + /* K18 */ be_nested_str_weak(Matter_TLV_struct), + /* K19 */ be_nested_str_weak(data0), + /* K20 */ be_nested_str_weak(add_obj), + /* K21 */ be_const_int(0), + /* K22 */ be_nested_str_weak(data1), + /* K23 */ be_const_int(1), + /* K24 */ be_nested_str_weak(data2), + /* K25 */ be_const_int(2), + /* K26 */ be_nested_str_weak(to_TLV), + /* K27 */ be_nested_str_weak(tlv2raw), + }), + be_str_weak(to_raw_bytes), + &be_const_str_solidified, + ( &(const binstruction[68]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x7806003D, // 0003 JMPF R1 #0042 + 0xB8060200, // 0004 GETNGBL R1 K1 + 0x8C040302, // 0005 GETMET R1 R1 K2 + 0x7C040200, // 0006 CALL R1 1 + 0xB80A0200, // 0007 GETNGBL R2 K1 + 0x8C080503, // 0008 GETMET R2 R2 K3 + 0x7C080200, // 0009 CALL R2 1 + 0x90060802, // 000A SETMBR R1 K4 R2 + 0xB80E0200, // 000B GETNGBL R3 K1 + 0x8C0C0705, // 000C GETMET R3 R3 K5 + 0x7C0C0200, // 000D CALL R3 1 + 0x88100106, // 000E GETMBR R4 R0 K6 + 0x900E0C04, // 000F SETMBR R3 K6 R4 + 0x88100107, // 0010 GETMBR R4 R0 K7 + 0x900E0E04, // 0011 SETMBR R3 K7 R4 + 0x88100109, // 0012 GETMBR R4 R0 K9 + 0x900E1004, // 0013 SETMBR R3 K8 R4 + 0x8810010A, // 0014 GETMBR R4 R0 K10 + 0x900E1404, // 0015 SETMBR R3 K10 R4 + 0x900A1603, // 0016 SETMBR R2 K11 R3 + 0x8810010C, // 0017 GETMBR R4 R0 K12 + 0x900A1804, // 0018 SETMBR R2 K12 R4 + 0x8810010E, // 0019 GETMBR R4 R0 K14 + 0x900A1A04, // 001A SETMBR R2 K13 R4 + 0x8810010F, // 001B GETMBR R4 R0 K15 + 0x900A1E04, // 001C SETMBR R2 K15 R4 + 0xB8120200, // 001D GETNGBL R4 K1 + 0x88100911, // 001E GETMBR R4 R4 K17 + 0x8C100912, // 001F GETMET R4 R4 K18 + 0x7C100200, // 0020 CALL R4 1 + 0x900A2004, // 0021 SETMBR R2 K16 R4 + 0x88100113, // 0022 GETMBR R4 R0 K19 + 0x4C140000, // 0023 LDNIL R5 + 0x20100805, // 0024 NE R4 R4 R5 + 0x78120004, // 0025 JMPF R4 #002B + 0x88100510, // 0026 GETMBR R4 R2 K16 + 0x8C100914, // 0027 GETMET R4 R4 K20 + 0x58180015, // 0028 LDCONST R6 K21 + 0x881C0113, // 0029 GETMBR R7 R0 K19 + 0x7C100600, // 002A CALL R4 3 + 0x88100116, // 002B GETMBR R4 R0 K22 + 0x4C140000, // 002C LDNIL R5 + 0x20100805, // 002D NE R4 R4 R5 + 0x78120004, // 002E JMPF R4 #0034 + 0x88100510, // 002F GETMBR R4 R2 K16 + 0x8C100914, // 0030 GETMET R4 R4 K20 + 0x58180017, // 0031 LDCONST R6 K23 + 0x881C0116, // 0032 GETMBR R7 R0 K22 + 0x7C100600, // 0033 CALL R4 3 + 0x88100118, // 0034 GETMBR R4 R0 K24 + 0x4C140000, // 0035 LDNIL R5 + 0x20100805, // 0036 NE R4 R4 R5 + 0x78120004, // 0037 JMPF R4 #003D + 0x88100510, // 0038 GETMBR R4 R2 K16 + 0x8C100914, // 0039 GETMET R4 R4 K20 + 0x58180019, // 003A LDCONST R6 K25 + 0x881C0118, // 003B GETMBR R7 R0 K24 + 0x7C100600, // 003C CALL R4 3 + 0x8C10031A, // 003D GETMET R4 R1 K26 + 0x7C100200, // 003E CALL R4 1 + 0x8C10091B, // 003F GETMET R4 R4 K27 + 0x7C100200, // 0040 CALL R4 1 + 0x90020004, // 0041 SETMBR R0 K0 R4 + 0x88040100, // 0042 GETMBR R1 R0 K0 + 0x80040200, // 0043 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_EventQueued; +be_local_closure(class_Matter_EventQueued_init, /* name */ + be_nested_proto( + 13, /* nstack */ + 10, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventQueued, + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(event_no), + /* K1 */ be_nested_str_weak(endpoint), /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(event_id), - /* K4 */ be_nested_str_weak(event), - /* K5 */ be_nested_str_weak(is_urgent), - /* K6 */ be_nested_str_weak(priority), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(matter), - /* K9 */ be_nested_str_weak(EVENT_CRITICAL), - /* K10 */ be_nested_str_weak(event_no), - /* K11 */ be_nested_str_weak(int64), - /* K12 */ be_nested_str_weak(toint64), - /* K13 */ be_nested_str_weak(event_number), - /* K14 */ be_nested_str_weak(raw_tlv), - /* K15 */ be_nested_str_weak(to_TLV), - /* K16 */ be_nested_str_weak(tlv2raw), + /* K4 */ be_nested_str_weak(is_urgent), + /* K5 */ be_nested_str_weak(priority), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(matter), + /* K8 */ be_nested_str_weak(EVENT_CRITICAL), + /* K9 */ be_nested_str_weak(epoch_timestamp), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(rtc), + /* K12 */ be_nested_str_weak(utc), + /* K13 */ be_const_int(1700000000), + /* K14 */ be_nested_str_weak(config_time), + /* K15 */ be_nested_str_weak(data0), + /* K16 */ be_nested_str_weak(data1), + /* K17 */ be_nested_str_weak(data2), }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x88080301, // 0000 GETMBR R2 R1 K1 - 0x88080500, // 0001 GETMBR R2 R2 K0 - 0x90020002, // 0002 SETMBR R0 K0 R2 - 0x88080301, // 0003 GETMBR R2 R1 K1 - 0x88080502, // 0004 GETMBR R2 R2 K2 - 0x90020402, // 0005 SETMBR R0 K2 R2 - 0x88080301, // 0006 GETMBR R2 R1 K1 - 0x88080504, // 0007 GETMBR R2 R2 K4 - 0x90020602, // 0008 SETMBR R0 K3 R2 - 0x88080301, // 0009 GETMBR R2 R1 K1 - 0x88080505, // 000A GETMBR R2 R2 K5 - 0x90020A02, // 000B SETMBR R0 K5 R2 - 0x88080306, // 000C GETMBR R2 R1 K6 - 0x90020C02, // 000D SETMBR R0 K6 R2 - 0x88080106, // 000E GETMBR R2 R0 K6 - 0x14080507, // 000F LT R2 R2 K7 - 0x780A0000, // 0010 JMPF R2 #0012 - 0x90020D07, // 0011 SETMBR R0 K6 K7 - 0x88080106, // 0012 GETMBR R2 R0 K6 - 0xB80E1000, // 0013 GETNGBL R3 K8 - 0x880C0709, // 0014 GETMBR R3 R3 K9 - 0x24080403, // 0015 GT R2 R2 R3 - 0x780A0002, // 0016 JMPF R2 #001A - 0xB80A1000, // 0017 GETNGBL R2 K8 - 0x88080509, // 0018 GETMBR R2 R2 K9 - 0x90020C02, // 0019 SETMBR R0 K6 R2 - 0xB80A1600, // 001A GETNGBL R2 K11 - 0x8C08050C, // 001B GETMET R2 R2 K12 - 0x8810030D, // 001C GETMBR R4 R1 K13 - 0x7C080400, // 001D CALL R2 2 - 0x90021402, // 001E SETMBR R0 K10 R2 - 0x8C08030F, // 001F GETMET R2 R1 K15 - 0x7C080200, // 0020 CALL R2 1 - 0x8C080510, // 0021 GETMET R2 R2 K16 - 0x7C080200, // 0022 CALL R2 1 - 0x90021C02, // 0023 SETMBR R0 K14 R2 - 0x80000000, // 0024 RET 0 + ( &(const binstruction[35]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x90020403, // 0002 SETMBR R0 K2 R3 + 0x90020604, // 0003 SETMBR R0 K3 R4 + 0x90020805, // 0004 SETMBR R0 K4 R5 + 0x90020A06, // 0005 SETMBR R0 K5 R6 + 0x88280105, // 0006 GETMBR R10 R0 K5 + 0x14281506, // 0007 LT R10 R10 K6 + 0x782A0000, // 0008 JMPF R10 #000A + 0x90020B06, // 0009 SETMBR R0 K5 K6 + 0x88280105, // 000A GETMBR R10 R0 K5 + 0xB82E0E00, // 000B GETNGBL R11 K7 + 0x882C1708, // 000C GETMBR R11 R11 K8 + 0x2428140B, // 000D GT R10 R10 R11 + 0x782A0002, // 000E JMPF R10 #0012 + 0xB82A0E00, // 000F GETNGBL R10 K7 + 0x88281508, // 0010 GETMBR R10 R10 K8 + 0x90020A0A, // 0011 SETMBR R0 K5 R10 + 0xB82A1400, // 0012 GETNGBL R10 K10 + 0x8C28150B, // 0013 GETMET R10 R10 K11 + 0x5830000C, // 0014 LDCONST R12 K12 + 0x7C280400, // 0015 CALL R10 2 + 0x9002120A, // 0016 SETMBR R0 K9 R10 + 0x88280109, // 0017 GETMBR R10 R0 K9 + 0x1428150D, // 0018 LT R10 R10 K13 + 0x782A0004, // 0019 JMPF R10 #001F + 0xB82A1400, // 001A GETNGBL R10 K10 + 0x8C28150B, // 001B GETMET R10 R10 K11 + 0x5830000E, // 001C LDCONST R12 K14 + 0x7C280400, // 001D CALL R10 2 + 0x9002120A, // 001E SETMBR R0 K9 R10 + 0x90021E07, // 001F SETMBR R0 K15 R7 + 0x90022008, // 0020 SETMBR R0 K16 R8 + 0x90022209, // 0021 SETMBR R0 K17 R9 + 0x80000000, // 0022 RET 0 }) ) ); @@ -473,18 +1023,24 @@ be_local_closure(class_Matter_EventQueued_init, /* name */ ** Solidified class: Matter_EventQueued ********************************************************************/ be_local_class(Matter_EventQueued, - 7, + 11, NULL, - be_nested_map(8, + be_nested_map(14, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(is_urgent, -1), be_const_var(3) }, - { be_const_key_weak(priority, -1), be_const_var(4) }, { be_const_key_weak(endpoint, -1), be_const_var(0) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_EventQueued_init_closure) }, - { be_const_key_weak(raw_tlv, 2), be_const_var(6) }, - { be_const_key_weak(event_id, 6), be_const_var(2) }, + { be_const_key_weak(epoch_timestamp, -1), be_const_var(9) }, + { be_const_key_weak(compact, -1), be_const_closure(class_Matter_EventQueued_compact_closure) }, + { be_const_key_weak(init, 10), be_const_closure(class_Matter_EventQueued_init_closure) }, + { be_const_key_weak(data2, 11), be_const_var(7) }, + { be_const_key_weak(event_no, 3), be_const_var(8) }, + { be_const_key_weak(raw_tlv, -1), be_const_var(10) }, + { be_const_key_weak(is_urgent, 12), be_const_var(3) }, + { be_const_key_weak(data1, -1), be_const_var(6) }, + { be_const_key_weak(priority, 4), be_const_var(4) }, + { be_const_key_weak(event_id, -1), be_const_var(2) }, + { be_const_key_weak(to_raw_bytes, 1), be_const_closure(class_Matter_EventQueued_to_raw_bytes_closure) }, { be_const_key_weak(cluster, -1), be_const_var(1) }, - { be_const_key_weak(event_no, 0), be_const_var(5) }, + { be_const_key_weak(data0, -1), be_const_var(5) }, })), be_str_weak(Matter_EventQueued) ); 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 cb2d47030..4b4dfe583 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -7,492 +7,12 @@ extern const bclass be_class_Matter_IM; /******************************************************************** -** Solidified function: send_subscribe_response_pull +** Solidified function: process_read_request_pull ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_subscribe_response_pull, /* name */ +be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ be_nested_proto( - 11, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 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_Pull), - }), - be_str_weak(send_subscribe_response_pull), - &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: find_sendqueue_by_exchangeid -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_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 */ - &be_class_Matter_IM, - 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: send_subscribe_update -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_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 */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[23]) { /* 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(log), - /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), - /* K14 */ be_nested_str_weak(local_session_id), - /* K15 */ be_nested_str_weak(subscription_id), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(is_keep_alive), - /* K18 */ be_nested_str_weak(process_read_or_subscribe_request_pull), - /* K19 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull), - /* K20 */ be_nested_str_weak(_message_handler), - /* K21 */ be_nested_str_weak(send_queue), - /* K22 */ be_nested_str_weak(send_enqueued), - }), - be_str_weak(send_subscribe_update), - &be_const_str_solidified, - ( &(const binstruction[61]) { /* 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 - 0x60140018, // 0021 GETGBL R5 G24 - 0x5818000D, // 0022 LDCONST R6 K13 - 0x881C050E, // 0023 GETMBR R7 R2 K14 - 0x8820030F, // 0024 GETMBR R8 R1 K15 - 0x7C140600, // 0025 CALL R5 3 - 0x58180010, // 0026 LDCONST R6 K16 - 0x7C100400, // 0027 CALL R4 2 - 0x50100000, // 0028 LDBOOL R4 0 0 - 0x90062204, // 0029 SETMBR R1 K17 R4 - 0x8C100112, // 002A GETMET R4 R0 K18 - 0x5C180600, // 002B MOVE R6 R3 - 0x4C1C0000, // 002C LDNIL R7 - 0x7C100600, // 002D CALL R4 3 - 0xB8160200, // 002E GETNGBL R5 K1 - 0x8C140B13, // 002F GETMET R5 R5 K19 - 0x881C0514, // 0030 GETMBR R7 R2 K20 - 0x5C200400, // 0031 MOVE R8 R2 - 0x5C240800, // 0032 MOVE R9 R4 - 0x5C280200, // 0033 MOVE R10 R1 - 0x7C140A00, // 0034 CALL R5 5 - 0x88180115, // 0035 GETMBR R6 R0 K21 - 0x8C180D0A, // 0036 GETMET R6 R6 K10 - 0x5C200A00, // 0037 MOVE R8 R5 - 0x7C180400, // 0038 CALL R6 2 - 0x8C180116, // 0039 GETMET R6 R0 K22 - 0x88200514, // 003A GETMBR R8 R2 K20 - 0x7C180400, // 003B CALL R6 2 - 0x80000000, // 003C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_single_attribute_to_bytes -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ - be_nested_proto( - 21, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(loglevel), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(get_attribute_name), - /* K6 */ be_nested_str_weak(cluster), - /* K7 */ be_nested_str_weak(attribute), - /* K8 */ be_nested_str_weak(_X20_X28), - /* K9 */ be_nested_str_weak(_X29), - /* K10 */ be_nested_str_weak(), - /* K11 */ be_nested_str_weak(status), - /* K12 */ be_nested_str_weak(read_attribute), - /* K13 */ be_nested_str_weak(tlv_solo), - /* K14 */ be_nested_str_weak(to_str_val), - /* K15 */ be_nested_str_weak(is_list), - /* K16 */ be_nested_str_weak(is_array), - /* K17 */ be_nested_str_weak(encode_len), - /* K18 */ be_nested_str_weak(IM_ReportData_Pull), - /* K19 */ be_nested_str_weak(MAX_MESSAGE), - /* K20 */ be_nested_str_weak(Matter_TLV_array), - /* K21 */ be_nested_str_weak(attributedata2raw), - /* K22 */ be_nested_str_weak(push), - /* K23 */ be_nested_str_weak(val), - /* K24 */ be_nested_str_weak(stop_iteration), - /* K25 */ be_nested_str_weak(log), - /* K26 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), - /* K27 */ be_nested_str_weak(local_session_id), - /* K28 */ be_nested_str_weak(attributestatus2raw), - /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K30 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - }), - be_str_weak(read_single_attribute_to_bytes), - &be_const_str_solidified, - ( &(const binstruction[165]) { /* code */ - 0xB8160000, // 0000 GETNGBL R5 K0 - 0x88140B01, // 0001 GETMBR R5 R5 K1 - 0x4C180000, // 0002 LDNIL R6 - 0xB81E0400, // 0003 GETNGBL R7 K2 - 0x8C1C0F03, // 0004 GETMET R7 R7 K3 - 0x58240004, // 0005 LDCONST R9 K4 - 0x7C1C0400, // 0006 CALL R7 2 - 0x781E000B, // 0007 JMPF R7 #0014 - 0xB81E0000, // 0008 GETNGBL R7 K0 - 0x8C1C0F05, // 0009 GETMET R7 R7 K5 - 0x88240506, // 000A GETMBR R9 R2 K6 - 0x88280507, // 000B GETMBR R10 R2 K7 - 0x7C1C0600, // 000C CALL R7 3 - 0x5C180E00, // 000D MOVE R6 R7 - 0x781A0002, // 000E JMPF R6 #0012 - 0x001E1006, // 000F ADD R7 K8 R6 - 0x001C0F09, // 0010 ADD R7 R7 K9 - 0x70020000, // 0011 JMP #0013 - 0x581C000A, // 0012 LDCONST R7 K10 - 0x5C180E00, // 0013 MOVE R6 R7 - 0x881C050B, // 0014 GETMBR R7 R2 K11 - 0x4C200000, // 0015 LDNIL R8 - 0x201C0E08, // 0016 NE R7 R7 R8 - 0x4C200000, // 0017 LDNIL R8 - 0x4C240000, // 0018 LDNIL R9 - 0x4C280000, // 0019 LDNIL R10 - 0x2028020A, // 001A NE R10 R1 R10 - 0x782A0005, // 001B JMPF R10 #0022 - 0x8C28030C, // 001C GETMET R10 R1 K12 - 0x5C300600, // 001D MOVE R12 R3 - 0x5C340400, // 001E MOVE R13 R2 - 0x8838010D, // 001F GETMBR R14 R0 K13 - 0x7C280800, // 0020 CALL R10 4 - 0x5C201400, // 0021 MOVE R8 R10 - 0x4C280000, // 0022 LDNIL R10 - 0x2028100A, // 0023 NE R10 R8 R10 - 0x782A0057, // 0024 JMPF R10 #007D - 0x5828000A, // 0025 LDCONST R10 K10 - 0xB82E0400, // 0026 GETNGBL R11 K2 - 0x8C2C1703, // 0027 GETMET R11 R11 K3 - 0x58340004, // 0028 LDCONST R13 K4 - 0x7C2C0400, // 0029 CALL R11 2 - 0x782E0003, // 002A JMPF R11 #002F - 0x78120002, // 002B JMPF R4 #002F - 0x8C2C110E, // 002C GETMET R11 R8 K14 - 0x7C2C0200, // 002D CALL R11 1 - 0x5C281600, // 002E MOVE R10 R11 - 0x882C110F, // 002F GETMBR R11 R8 K15 - 0x742E0001, // 0030 JMPT R11 #0033 - 0x882C1110, // 0031 GETMBR R11 R8 K16 - 0x782E002F, // 0032 JMPF R11 #0063 - 0x8C2C1111, // 0033 GETMET R11 R8 K17 - 0x7C2C0200, // 0034 CALL R11 1 - 0xB8320000, // 0035 GETNGBL R12 K0 - 0x88301912, // 0036 GETMBR R12 R12 K18 - 0x88301913, // 0037 GETMBR R12 R12 K19 - 0x242C160C, // 0038 GT R11 R11 R12 - 0x782E0028, // 0039 JMPF R11 #0063 - 0x602C0012, // 003A GETGBL R11 G18 - 0x7C2C0000, // 003B CALL R11 0 - 0x5C241600, // 003C MOVE R9 R11 - 0x602C0015, // 003D GETGBL R11 G21 - 0x5432002F, // 003E LDINT R12 48 - 0x7C2C0200, // 003F CALL R11 1 - 0x8C300B14, // 0040 GETMET R12 R5 K20 - 0x7C300200, // 0041 CALL R12 1 - 0x8C340115, // 0042 GETMET R13 R0 K21 - 0x5C3C1600, // 0043 MOVE R15 R11 - 0x5C400400, // 0044 MOVE R16 R2 - 0x5C441800, // 0045 MOVE R17 R12 - 0x50480000, // 0046 LDBOOL R18 0 0 - 0x7C340A00, // 0047 CALL R13 5 - 0x8C341316, // 0048 GETMET R13 R9 K22 - 0x5C3C1600, // 0049 MOVE R15 R11 - 0x7C340400, // 004A CALL R13 2 - 0x60340010, // 004B GETGBL R13 G16 - 0x88381117, // 004C GETMBR R14 R8 K23 - 0x7C340200, // 004D CALL R13 1 - 0xA802000F, // 004E EXBLK 0 #005F - 0x5C381A00, // 004F MOVE R14 R13 - 0x7C380000, // 0050 CALL R14 0 - 0x603C0015, // 0051 GETGBL R15 G21 - 0x5442002F, // 0052 LDINT R16 48 - 0x7C3C0200, // 0053 CALL R15 1 - 0x5C2C1E00, // 0054 MOVE R11 R15 - 0x8C3C0115, // 0055 GETMET R15 R0 K21 - 0x5C441600, // 0056 MOVE R17 R11 - 0x5C480400, // 0057 MOVE R18 R2 - 0x5C4C1C00, // 0058 MOVE R19 R14 - 0x50500200, // 0059 LDBOOL R20 1 0 - 0x7C3C0A00, // 005A CALL R15 5 - 0x8C3C1316, // 005B GETMET R15 R9 K22 - 0x5C441600, // 005C MOVE R17 R11 - 0x7C3C0400, // 005D CALL R15 2 - 0x7001FFEF, // 005E JMP #004F - 0x58340018, // 005F LDCONST R13 K24 - 0xAC340200, // 0060 CATCH R13 1 0 - 0xB0080000, // 0061 RAISE 2 R0 R0 - 0x70020008, // 0062 JMP #006C - 0x602C0015, // 0063 GETGBL R11 G21 - 0x5432002F, // 0064 LDINT R12 48 - 0x7C2C0200, // 0065 CALL R11 1 - 0x5C241600, // 0066 MOVE R9 R11 - 0x8C2C0115, // 0067 GETMET R11 R0 K21 - 0x5C341200, // 0068 MOVE R13 R9 - 0x5C380400, // 0069 MOVE R14 R2 - 0x5C3C1000, // 006A MOVE R15 R8 - 0x7C2C0800, // 006B CALL R11 4 - 0xB82E0400, // 006C GETNGBL R11 K2 - 0x8C2C1703, // 006D GETMET R11 R11 K3 - 0x58340004, // 006E LDCONST R13 K4 - 0x7C2C0400, // 006F CALL R11 2 - 0x782E000A, // 0070 JMPF R11 #007C - 0x78120009, // 0071 JMPF R4 #007C - 0xB82E3200, // 0072 GETNGBL R11 K25 - 0x60300018, // 0073 GETGBL R12 G24 - 0x5834001A, // 0074 LDCONST R13 K26 - 0x8838071B, // 0075 GETMBR R14 R3 K27 - 0x5C3C0400, // 0076 MOVE R15 R2 - 0x5C400C00, // 0077 MOVE R16 R6 - 0x5C441400, // 0078 MOVE R17 R10 - 0x7C300A00, // 0079 CALL R12 5 - 0x58340004, // 007A LDCONST R13 K4 - 0x7C2C0400, // 007B CALL R11 2 - 0x70020026, // 007C JMP #00A4 - 0x8828050B, // 007D GETMBR R10 R2 K11 - 0x4C2C0000, // 007E LDNIL R11 - 0x2028140B, // 007F NE R10 R10 R11 - 0x782A0022, // 0080 JMPF R10 #00A4 - 0x781E0021, // 0081 JMPF R7 #00A4 - 0x60280015, // 0082 GETGBL R10 G21 - 0x542E002F, // 0083 LDINT R11 48 - 0x7C280200, // 0084 CALL R10 1 - 0x5C241400, // 0085 MOVE R9 R10 - 0x8C28011C, // 0086 GETMET R10 R0 K28 - 0x5C301200, // 0087 MOVE R12 R9 - 0x5C340400, // 0088 MOVE R13 R2 - 0x8838050B, // 0089 GETMBR R14 R2 K11 - 0x7C280800, // 008A CALL R10 4 - 0xB82A0400, // 008B GETNGBL R10 K2 - 0x8C281503, // 008C GETMET R10 R10 K3 - 0x58300004, // 008D LDCONST R12 K4 - 0x7C280400, // 008E CALL R10 2 - 0x782A0013, // 008F JMPF R10 #00A4 - 0xB82A3200, // 0090 GETNGBL R10 K25 - 0x602C0018, // 0091 GETGBL R11 G24 - 0x5830001D, // 0092 LDCONST R12 K29 - 0x8834071B, // 0093 GETMBR R13 R3 K27 - 0x60380008, // 0094 GETGBL R14 G8 - 0x5C3C0400, // 0095 MOVE R15 R2 - 0x7C380200, // 0096 CALL R14 1 - 0x5C3C0C00, // 0097 MOVE R15 R6 - 0x8840050B, // 0098 GETMBR R16 R2 K11 - 0x8844050B, // 0099 GETMBR R17 R2 K11 - 0xB84A0000, // 009A GETNGBL R18 K0 - 0x8848251E, // 009B GETMBR R18 R18 K30 - 0x1C442212, // 009C EQ R17 R17 R18 - 0x78460001, // 009D JMPF R17 #00A0 - 0x5844001E, // 009E LDCONST R17 K30 - 0x70020000, // 009F JMP #00A1 - 0x5844000A, // 00A0 LDCONST R17 K10 - 0x7C2C0C00, // 00A1 CALL R11 6 - 0x58300004, // 00A2 LDCONST R12 K4 - 0x7C280400, // 00A3 CALL R10 2 - 0x80041200, // 00A4 RET 1 R9 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(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(init), - &be_const_str_solidified, - ( &(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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_status -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_status, /* name */ - be_nested_proto( - 9, /* nstack */ + 13, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -500,24 +20,52 @@ be_local_closure(class_Matter_IM_send_status, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 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), + ( &(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_pull), + /* K4 */ be_nested_str_weak(ReadRequestMessage), + /* K5 */ be_nested_str_weak(from_TLV), + /* K6 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K7 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull), + /* K8 */ be_nested_str_weak(send_queue), + /* K9 */ be_nested_str_weak(push), + /* K10 */ be_nested_str_weak(IM_ReportData_Pull), }), - be_str_weak(send_status), + be_str_weak(process_read_request_pull), &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[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 + 0x8C100106, // 000B GETMET R4 R0 K6 + 0x5C180600, // 000C MOVE R6 R3 + 0x5C1C0200, // 000D MOVE R7 R1 + 0x7C100600, // 000E CALL R4 3 + 0x8C140107, // 000F GETMET R5 R0 K7 + 0x5C1C0600, // 0010 MOVE R7 R3 + 0x5C200200, // 0011 MOVE R8 R1 + 0x7C140600, // 0012 CALL R5 3 + 0x88180108, // 0013 GETMBR R6 R0 K8 + 0x8C180D09, // 0014 GETMET R6 R6 K9 + 0xB8220000, // 0015 GETNGBL R8 K0 + 0x8C20110A, // 0016 GETMET R8 R8 K10 + 0x5C280200, // 0017 MOVE R10 R1 + 0x5C2C0800, // 0018 MOVE R11 R4 + 0x5C300A00, // 0019 MOVE R12 R5 + 0x7C200800, // 001A CALL R8 4 + 0x7C180400, // 001B CALL R6 2 + 0x50180200, // 001C LDBOOL R6 1 0 + 0x80040C00, // 001D RET 1 R6 }) ) ); @@ -562,860 +110,6 @@ be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_every_second, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(expire_sendqueue), - }), - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expire_sendqueue -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 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), - }), - be_str_weak(expire_sendqueue), - &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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_write_response -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_write_response, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 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), - }), - be_str_weak(send_write_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: process_timed_request -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_timed_request, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[11]) { /* 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(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), - /* K5 */ be_nested_str_weak(session), - /* K6 */ be_nested_str_weak(local_session_id), - /* K7 */ be_nested_str_weak(timeout), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(send_status), - /* K10 */ be_nested_str_weak(SUCCESS), - }), - be_str_weak(process_timed_request), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* 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 - 0x60140018, // 0007 GETGBL R5 G24 - 0x58180004, // 0008 LDCONST R6 K4 - 0x881C0305, // 0009 GETMBR R7 R1 K5 - 0x881C0F06, // 000A GETMBR R7 R7 K6 - 0x88200707, // 000B GETMBR R8 R3 K7 - 0x7C140600, // 000C CALL R5 3 - 0x58180008, // 000D LDCONST R6 K8 - 0x7C100400, // 000E CALL R4 2 - 0x8C100109, // 000F GETMET R4 R0 K9 - 0x5C180200, // 0010 MOVE R6 R1 - 0xB81E0000, // 0011 GETNGBL R7 K0 - 0x881C0F0A, // 0012 GETMBR R7 R7 K10 - 0x7C100600, // 0013 CALL R4 3 - 0x50100200, // 0014 LDBOOL R4 1 0 - 0x80040800, // 0015 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: subscribe_request -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_subscribe_request, /* name */ - be_nested_proto( - 20, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[34]) { /* 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(tasmota), - /* K9 */ be_nested_str_weak(loglevel), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(Path), - /* K12 */ be_nested_str_weak(msg), - /* K13 */ be_nested_str_weak(attributes_requests), - /* K14 */ be_nested_str_weak(endpoint), - /* K15 */ be_nested_str_weak(cluster), - /* K16 */ be_nested_str_weak(attribute), - /* K17 */ be_nested_str_weak(push), - /* K18 */ be_nested_str_weak(stop_iteration), - /* K19 */ be_nested_str_weak(log), - /* K20 */ 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_X20fabric_filtered_X3D_X25s_X20attr_req_X3D_X25s_X20event_req_X3D_X25s), - /* K21 */ be_nested_str_weak(local_session_id), - /* K22 */ be_nested_str_weak(concat), - /* K23 */ be_nested_str_weak(_X20), - /* K24 */ be_nested_str_weak(min_interval), - /* K25 */ be_nested_str_weak(max_interval), - /* K26 */ be_const_int(1), - /* K27 */ be_const_int(0), - /* K28 */ be_nested_str_weak(subscription_id), - /* K29 */ be_nested_str_weak(fabric_filtered), - /* K30 */ be_nested_str_weak(_X2D), - /* K31 */ be_nested_str_weak(event_requests), - /* K32 */ be_nested_str_weak(process_read_or_subscribe_request_pull), - /* K33 */ be_nested_str_weak(send_subscribe_response_pull), - }), - be_str_weak(subscribe_request), - &be_const_str_solidified, - ( &(const binstruction[98]) { /* 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 - 0xB8161000, // 0011 GETNGBL R5 K8 - 0x8C140B09, // 0012 GETMET R5 R5 K9 - 0x581C000A, // 0013 LDCONST R7 K10 - 0x7C140400, // 0014 CALL R5 2 - 0x78160040, // 0015 JMPF R5 #0057 - 0x60140012, // 0016 GETGBL R5 G18 - 0x7C140000, // 0017 CALL R5 0 - 0xB81A0000, // 0018 GETNGBL R6 K0 - 0x8C180D0B, // 0019 GETMET R6 R6 K11 - 0x7C180200, // 001A CALL R6 1 - 0x901A1801, // 001B SETMBR R6 K12 R1 - 0x601C0010, // 001C GETGBL R7 G16 - 0x8820070D, // 001D GETMBR R8 R3 K13 - 0x7C1C0200, // 001E CALL R7 1 - 0xA802000D, // 001F EXBLK 0 #002E - 0x5C200E00, // 0020 MOVE R8 R7 - 0x7C200000, // 0021 CALL R8 0 - 0x8824110E, // 0022 GETMBR R9 R8 K14 - 0x901A1C09, // 0023 SETMBR R6 K14 R9 - 0x8824110F, // 0024 GETMBR R9 R8 K15 - 0x901A1E09, // 0025 SETMBR R6 K15 R9 - 0x88241110, // 0026 GETMBR R9 R8 K16 - 0x901A2009, // 0027 SETMBR R6 K16 R9 - 0x8C240B11, // 0028 GETMET R9 R5 K17 - 0x602C0008, // 0029 GETGBL R11 G8 - 0x5C300C00, // 002A MOVE R12 R6 - 0x7C2C0200, // 002B CALL R11 1 - 0x7C240400, // 002C CALL R9 2 - 0x7001FFF1, // 002D JMP #0020 - 0x581C0012, // 002E LDCONST R7 K18 - 0xAC1C0200, // 002F CATCH R7 1 0 - 0xB0080000, // 0030 RAISE 2 R0 R0 - 0xB81E2600, // 0031 GETNGBL R7 K19 - 0x60200018, // 0032 GETGBL R8 G24 - 0x58240014, // 0033 LDCONST R9 K20 - 0x88280306, // 0034 GETMBR R10 R1 K6 - 0x88281515, // 0035 GETMBR R10 R10 K21 - 0x8C2C0B16, // 0036 GETMET R11 R5 K22 - 0x58340017, // 0037 LDCONST R13 K23 - 0x7C2C0400, // 0038 CALL R11 2 - 0x88300918, // 0039 GETMBR R12 R4 K24 - 0x88340919, // 003A GETMBR R13 R4 K25 - 0x88380703, // 003B GETMBR R14 R3 K3 - 0x783A0001, // 003C JMPF R14 #003F - 0x5838001A, // 003D LDCONST R14 K26 - 0x70020000, // 003E JMP #0040 - 0x5838001B, // 003F LDCONST R14 K27 - 0x883C091C, // 0040 GETMBR R15 R4 K28 - 0x8840071D, // 0041 GETMBR R16 R3 K29 - 0x8844070D, // 0042 GETMBR R17 R3 K13 - 0x4C480000, // 0043 LDNIL R18 - 0x20442212, // 0044 NE R17 R17 R18 - 0x78460003, // 0045 JMPF R17 #004A - 0x6044000C, // 0046 GETGBL R17 G12 - 0x8848070D, // 0047 GETMBR R18 R3 K13 - 0x7C440200, // 0048 CALL R17 1 - 0x70020000, // 0049 JMP #004B - 0x5844001E, // 004A LDCONST R17 K30 - 0x8848071F, // 004B GETMBR R18 R3 K31 - 0x4C4C0000, // 004C LDNIL R19 - 0x20482413, // 004D NE R18 R18 R19 - 0x784A0003, // 004E JMPF R18 #0053 - 0x6048000C, // 004F GETGBL R18 G12 - 0x884C071F, // 0050 GETMBR R19 R3 K31 - 0x7C480200, // 0051 CALL R18 1 - 0x70020000, // 0052 JMP #0054 - 0x5848001E, // 0053 LDCONST R18 K30 - 0x7C201400, // 0054 CALL R8 10 - 0x5824000A, // 0055 LDCONST R9 K10 - 0x7C1C0400, // 0056 CALL R7 2 - 0x8C140120, // 0057 GETMET R5 R0 K32 - 0x5C1C0600, // 0058 MOVE R7 R3 - 0x5C200200, // 0059 MOVE R8 R1 - 0x7C140600, // 005A CALL R5 3 - 0x8C180121, // 005B GETMET R6 R0 K33 - 0x5C200200, // 005C MOVE R8 R1 - 0x5C240A00, // 005D MOVE R9 R5 - 0x5C280800, // 005E MOVE R10 R4 - 0x7C180800, // 005F CALL R6 4 - 0x50180200, // 0060 LDBOOL R6 1 0 - 0x80040C00, // 0061 RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_enqueued -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_enqueued, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(finish), - /* K3 */ be_nested_str_weak(ready), - /* K4 */ be_nested_str_weak(send_im), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20remove_X20IM_X20message_X20exch_X3D), - /* K7 */ be_nested_str_weak(resp), - /* K8 */ be_nested_str_weak(exchange_id), - /* K9 */ be_nested_str_weak(remove), - /* K10 */ be_const_int(1), - }), - be_str_weak(send_enqueued), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* 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 - 0x780E0019, // 0005 JMPF R3 #0020 - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x88100702, // 0008 GETMBR R4 R3 K2 - 0x74120004, // 0009 JMPT R4 #000F - 0x88100703, // 000A GETMBR R4 R3 K3 - 0x78120002, // 000B JMPF R4 #000F - 0x8C100704, // 000C GETMET R4 R3 K4 - 0x5C180200, // 000D MOVE R6 R1 - 0x7C100400, // 000E CALL R4 2 - 0x88100702, // 000F GETMBR R4 R3 K2 - 0x7812000C, // 0010 JMPF R4 #001E - 0xB8120A00, // 0011 GETNGBL R4 K5 - 0x60140008, // 0012 GETGBL R5 G8 - 0x88180707, // 0013 GETMBR R6 R3 K7 - 0x88180D08, // 0014 GETMBR R6 R6 K8 - 0x7C140200, // 0015 CALL R5 1 - 0x00160C05, // 0016 ADD R5 K6 R5 - 0x541A0003, // 0017 LDINT R6 4 - 0x7C100400, // 0018 CALL R4 2 - 0x88100101, // 0019 GETMBR R4 R0 K1 - 0x8C100909, // 001A GETMET R4 R4 K9 - 0x5C180400, // 001B MOVE R6 R2 - 0x7C100400, // 001C CALL R4 2 - 0x70020000, // 001D JMP #001F - 0x0008050A, // 001E ADD R2 R2 K10 - 0x7001FFE0, // 001F JMP #0001 - 0x80000000, // 0020 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: path2raw -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_path2raw, /* name */ - be_nested_proto( - 9, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(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(path2raw), - &be_const_str_solidified, - ( &(const binstruction[107]) { /* code */ - 0x8C140300, // 0000 GETMET R5 R1 K0 - 0x541E0036, // 0001 LDINT R7 55 - 0x58200001, // 0002 LDCONST R8 K1 - 0x7C140600, // 0003 CALL R5 3 - 0x8C140300, // 0004 GETMET R5 R1 K0 - 0x5C1C0600, // 0005 MOVE R7 R3 - 0x58200001, // 0006 LDCONST R8 K1 - 0x7C140600, // 0007 CALL R5 3 - 0x88140502, // 0008 GETMBR R5 R2 K2 - 0x541A00FE, // 0009 LDINT R6 255 - 0x18140A06, // 000A LE R5 R5 R6 - 0x78160008, // 000B JMPF R5 #0015 - 0x8C140300, // 000C GETMET R5 R1 K0 - 0x541E2401, // 000D LDINT R7 9218 - 0x5421FFFD, // 000E LDINT R8 -2 - 0x7C140600, // 000F CALL R5 3 - 0x8C140300, // 0010 GETMET R5 R1 K0 - 0x881C0502, // 0011 GETMBR R7 R2 K2 - 0x58200001, // 0012 LDCONST R8 K1 - 0x7C140600, // 0013 CALL R5 3 - 0x70020007, // 0014 JMP #001D - 0x8C140300, // 0015 GETMET R5 R1 K0 - 0x541E2501, // 0016 LDINT R7 9474 - 0x5421FFFD, // 0017 LDINT R8 -2 - 0x7C140600, // 0018 CALL R5 3 - 0x8C140300, // 0019 GETMET R5 R1 K0 - 0x881C0502, // 001A GETMBR R7 R2 K2 - 0x58200003, // 001B LDCONST R8 K3 - 0x7C140600, // 001C CALL R5 3 - 0x88140504, // 001D GETMBR R5 R2 K4 - 0x541A00FE, // 001E LDINT R6 255 - 0x18140A06, // 001F LE R5 R5 R6 - 0x78160008, // 0020 JMPF R5 #002A - 0x8C140300, // 0021 GETMET R5 R1 K0 - 0x541E2402, // 0022 LDINT R7 9219 - 0x5421FFFD, // 0023 LDINT R8 -2 - 0x7C140600, // 0024 CALL R5 3 - 0x8C140300, // 0025 GETMET R5 R1 K0 - 0x881C0504, // 0026 GETMBR R7 R2 K4 - 0x58200001, // 0027 LDCONST R8 K1 - 0x7C140600, // 0028 CALL R5 3 - 0x70020014, // 0029 JMP #003F - 0x88140504, // 002A GETMBR R5 R2 K4 - 0x541AFFFE, // 002B LDINT R6 65535 - 0x18140A06, // 002C LE R5 R5 R6 - 0x78160008, // 002D JMPF R5 #0037 - 0x8C140300, // 002E GETMET R5 R1 K0 - 0x541E2502, // 002F LDINT R7 9475 - 0x5421FFFD, // 0030 LDINT R8 -2 - 0x7C140600, // 0031 CALL R5 3 - 0x8C140300, // 0032 GETMET R5 R1 K0 - 0x881C0504, // 0033 GETMBR R7 R2 K4 - 0x58200003, // 0034 LDCONST R8 K3 - 0x7C140600, // 0035 CALL R5 3 - 0x70020007, // 0036 JMP #003F - 0x8C140300, // 0037 GETMET R5 R1 K0 - 0x541E2602, // 0038 LDINT R7 9731 - 0x5421FFFD, // 0039 LDINT R8 -2 - 0x7C140600, // 003A CALL R5 3 - 0x8C140300, // 003B GETMET R5 R1 K0 - 0x881C0504, // 003C GETMBR R7 R2 K4 - 0x54220003, // 003D LDINT R8 4 - 0x7C140600, // 003E CALL R5 3 - 0x88140505, // 003F GETMBR R5 R2 K5 - 0x541A00FE, // 0040 LDINT R6 255 - 0x18140A06, // 0041 LE R5 R5 R6 - 0x78160008, // 0042 JMPF R5 #004C - 0x8C140300, // 0043 GETMET R5 R1 K0 - 0x541E2403, // 0044 LDINT R7 9220 - 0x5421FFFD, // 0045 LDINT R8 -2 - 0x7C140600, // 0046 CALL R5 3 - 0x8C140300, // 0047 GETMET R5 R1 K0 - 0x881C0505, // 0048 GETMBR R7 R2 K5 - 0x58200001, // 0049 LDCONST R8 K1 - 0x7C140600, // 004A CALL R5 3 - 0x70020014, // 004B JMP #0061 - 0x88140505, // 004C GETMBR R5 R2 K5 - 0x541AFFFE, // 004D LDINT R6 65535 - 0x18140A06, // 004E LE R5 R5 R6 - 0x78160008, // 004F JMPF R5 #0059 - 0x8C140300, // 0050 GETMET R5 R1 K0 - 0x541E2503, // 0051 LDINT R7 9476 - 0x5421FFFD, // 0052 LDINT R8 -2 - 0x7C140600, // 0053 CALL R5 3 - 0x8C140300, // 0054 GETMET R5 R1 K0 - 0x881C0505, // 0055 GETMBR R7 R2 K5 - 0x58200003, // 0056 LDCONST R8 K3 - 0x7C140600, // 0057 CALL R5 3 - 0x70020007, // 0058 JMP #0061 - 0x8C140300, // 0059 GETMET R5 R1 K0 - 0x541E2603, // 005A LDINT R7 9732 - 0x5421FFFD, // 005B LDINT R8 -2 - 0x7C140600, // 005C CALL R5 3 - 0x8C140300, // 005D GETMET R5 R1 K0 - 0x881C0505, // 005E GETMBR R7 R2 K5 - 0x54220003, // 005F LDINT R8 4 - 0x7C140600, // 0060 CALL R5 3 - 0x78120003, // 0061 JMPF R4 #0066 - 0x8C140300, // 0062 GETMET R5 R1 K0 - 0x541E3404, // 0063 LDINT R7 13317 - 0x5421FFFD, // 0064 LDINT R8 -2 - 0x7C140600, // 0065 CALL R5 3 - 0x8C140300, // 0066 GETMET R5 R1 K0 - 0x541E0017, // 0067 LDINT R7 24 - 0x58200001, // 0068 LDCONST R8 K1 - 0x7C140600, // 0069 CALL R5 3 - 0x80000000, // 006A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_status_response -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_status_response, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[15]) { /* 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(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(local_session_id), - /* K11 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str_weak(status_error_received), - /* K14 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), - }), - be_str_weak(process_status_response), - &be_const_str_solidified, - ( &(const binstruction[43]) { /* 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 - 0x7816000F, // 000A JMPF R5 #001B - 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 - 0x70020008, // 0010 JMP #001A - 0xB8160E00, // 0011 GETNGBL R5 K7 - 0x60180018, // 0012 GETGBL R6 G24 - 0x581C0008, // 0013 LDCONST R7 K8 - 0x88200309, // 0014 GETMBR R8 R1 K9 - 0x8820110A, // 0015 GETMBR R8 R8 K10 - 0x88240303, // 0016 GETMBR R9 R1 K3 - 0x7C180600, // 0017 CALL R6 3 - 0x541E0003, // 0018 LDINT R7 4 - 0x7C140400, // 0019 CALL R5 2 - 0x7002000D, // 001A JMP #0029 - 0xB8160E00, // 001B GETNGBL R5 K7 - 0x60180018, // 001C GETGBL R6 G24 - 0x581C000B, // 001D LDCONST R7 K11 - 0x5C200600, // 001E MOVE R8 R3 - 0x7C180400, // 001F CALL R6 2 - 0x581C000C, // 0020 LDCONST R7 K12 - 0x7C140400, // 0021 CALL R5 2 - 0x78120005, // 0022 JMPF R4 #0029 - 0x8C14090D, // 0023 GETMET R5 R4 K13 - 0x5C1C0200, // 0024 MOVE R7 R1 - 0x7C140400, // 0025 CALL R5 2 - 0x8C14010E, // 0026 GETMET R5 R0 K14 - 0x881C0303, // 0027 GETMBR R7 R1 K3 - 0x7C140400, // 0028 CALL R5 2 - 0x50140000, // 0029 LDBOOL R5 0 0 - 0x80040A00, // 002A RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_incoming -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_incoming, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[22]) { /* 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_pull), - /* 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(process_write_request), - /* K19 */ be_nested_str_weak(process_write_response), - /* K20 */ be_nested_str_weak(process_invoke_request), - /* K21 */ be_nested_str_weak(process_timed_request), - }), - be_str_weak(process_incoming), - &be_const_str_solidified, - ( &(const binstruction[124]) { /* 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 - 0x7002004A, // 002E JMP #007A - 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 - 0x70020042, // 0036 JMP #007A - 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 - 0x70020037, // 0041 JMP #007A - 0x54120003, // 0042 LDINT R4 4 - 0x1C100404, // 0043 EQ R4 R2 R4 - 0x78120002, // 0044 JMPF R4 #0048 - 0x50100000, // 0045 LDBOOL R4 0 0 - 0x80040800, // 0046 RET 1 R4 - 0x70020031, // 0047 JMP #007A - 0x54120004, // 0048 LDINT R4 5 - 0x1C100404, // 0049 EQ R4 R2 R4 - 0x78120002, // 004A JMPF R4 #004E - 0x50100000, // 004B LDBOOL R4 0 0 - 0x80040800, // 004C RET 1 R4 - 0x7002002B, // 004D JMP #007A - 0x54120005, // 004E LDINT R4 6 - 0x1C100404, // 004F EQ R4 R2 R4 - 0x78120008, // 0050 JMPF R4 #005A - 0x8C100110, // 0051 GETMET R4 R0 K16 - 0x5C180200, // 0052 MOVE R6 R1 - 0x7C100400, // 0053 CALL R4 2 - 0x8C100112, // 0054 GETMET R4 R0 K18 - 0x5C180200, // 0055 MOVE R6 R1 - 0x5C1C0600, // 0056 MOVE R7 R3 - 0x7C100600, // 0057 CALL R4 3 - 0x80040800, // 0058 RET 1 R4 - 0x7002001F, // 0059 JMP #007A - 0x54120006, // 005A LDINT R4 7 - 0x1C100404, // 005B EQ R4 R2 R4 - 0x78120005, // 005C JMPF R4 #0063 - 0x8C100113, // 005D GETMET R4 R0 K19 - 0x5C180200, // 005E MOVE R6 R1 - 0x5C1C0600, // 005F MOVE R7 R3 - 0x7C100600, // 0060 CALL R4 3 - 0x80040800, // 0061 RET 1 R4 - 0x70020016, // 0062 JMP #007A - 0x54120007, // 0063 LDINT R4 8 - 0x1C100404, // 0064 EQ R4 R2 R4 - 0x78120005, // 0065 JMPF R4 #006C - 0x8C100114, // 0066 GETMET R4 R0 K20 - 0x5C180200, // 0067 MOVE R6 R1 - 0x5C1C0600, // 0068 MOVE R7 R3 - 0x7C100600, // 0069 CALL R4 3 - 0x80040800, // 006A RET 1 R4 - 0x7002000D, // 006B JMP #007A - 0x54120008, // 006C LDINT R4 9 - 0x1C100404, // 006D EQ R4 R2 R4 - 0x78120002, // 006E JMPF R4 #0072 - 0x50100000, // 006F LDBOOL R4 0 0 - 0x80040800, // 0070 RET 1 R4 - 0x70020007, // 0071 JMP #007A - 0x54120009, // 0072 LDINT R4 10 - 0x1C100404, // 0073 EQ R4 R2 R4 - 0x78120004, // 0074 JMPF R4 #007A - 0x8C100115, // 0075 GETMET R4 R0 K21 - 0x5C180200, // 0076 MOVE R6 R1 - 0x5C1C0600, // 0077 MOVE R7 R3 - 0x7C100600, // 0078 CALL R4 3 - 0x80040800, // 0079 RET 1 R4 - 0x50100000, // 007A LDBOOL R4 0 0 - 0x80040800, // 007B RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_sendqueue_by_exchangeid -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(get_exchangeid), - /* K3 */ be_nested_str_weak(remove), - /* K4 */ be_const_int(1), - }), - be_str_weak(remove_sendqueue_by_exchangeid), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x80000400, // 0003 RET 0 - 0x58080000, // 0004 LDCONST R2 K0 - 0x600C000C, // 0005 GETGBL R3 G12 - 0x88100101, // 0006 GETMBR R4 R0 K1 - 0x7C0C0200, // 0007 CALL R3 1 - 0x140C0403, // 0008 LT R3 R2 R3 - 0x780E000C, // 0009 JMPF R3 #0017 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x940C0602, // 000B GETIDX R3 R3 R2 - 0x8C0C0702, // 000C GETMET R3 R3 K2 - 0x7C0C0200, // 000D CALL R3 1 - 0x1C0C0601, // 000E EQ R3 R3 R1 - 0x780E0004, // 000F JMPF R3 #0015 - 0x880C0101, // 0010 GETMBR R3 R0 K1 - 0x8C0C0703, // 0011 GETMET R3 R3 K3 - 0x5C140400, // 0012 MOVE R5 R2 - 0x7C0C0400, // 0013 CALL R3 2 - 0x70020000, // 0014 JMP #0016 - 0x00080504, // 0015 ADD R2 R2 K4 - 0x7001FFED, // 0016 JMP #0005 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: process_invoke_request ********************************************************************/ @@ -1430,7 +124,7 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[43]) { /* constants */ + ( &(const bvalue[44]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(profiler), /* K2 */ be_nested_str_weak(log), @@ -1473,11 +167,12 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ /* K39 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), /* K40 */ be_nested_str_weak(stop_iteration), /* K41 */ be_const_int(0), - /* K42 */ be_nested_str_weak(send_invoke_response), + /* K42 */ be_nested_str_weak(send_queue), + /* K43 */ be_nested_str_weak(IM_InvokeResponse), }), be_str_weak(process_invoke_request), &be_const_str_solidified, - ( &(const binstruction[228]) { /* code */ + ( &(const binstruction[232]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x880C0701, // 0001 GETMBR R3 R3 K1 0x8C0C0702, // 0002 GETMET R3 R3 K2 @@ -1496,7 +191,7 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x88140908, // 000F GETMBR R5 R4 K8 0x4C180000, // 0010 LDNIL R6 0x20140A06, // 0011 NE R5 R5 R6 - 0x781600CF, // 0012 JMPF R5 #00E3 + 0x781600D3, // 0012 JMPF R5 #00E7 0xB8160000, // 0013 GETNGBL R5 K0 0x8C140B09, // 0014 GETMET R5 R5 K9 0x7C140200, // 0015 CALL R5 1 @@ -1695,263 +390,21 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x881C0B0B, // 00D6 GETMBR R7 R5 K11 0x7C180200, // 00D7 CALL R6 1 0x24180D29, // 00D8 GT R6 R6 K41 - 0x781A0004, // 00D9 JMPF R6 #00DF - 0x8C18012A, // 00DA GETMET R6 R0 K42 - 0x5C200200, // 00DB MOVE R8 R1 - 0x5C240A00, // 00DC MOVE R9 R5 - 0x7C180600, // 00DD CALL R6 3 - 0x70020001, // 00DE JMP #00E1 - 0x50180000, // 00DF LDBOOL R6 0 0 - 0x80040C00, // 00E0 RET 1 R6 - 0x50180200, // 00E1 LDBOOL R6 1 0 - 0x80040C00, // 00E2 RET 1 R6 - 0x80000000, // 00E3 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_write_response -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_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 */ - &be_class_Matter_IM, - 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: send_ack_now -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_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 */ - &be_class_Matter_IM, - 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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_read_or_subscribe_request_pull -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* name */ - be_nested_proto( - 16, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(attributes_requests), - /* K1 */ be_nested_str_weak(get_node_id), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(PathGenerator), - /* K5 */ be_nested_str_weak(device), - /* K6 */ be_nested_str_weak(start), - /* K7 */ be_nested_str_weak(endpoint), - /* K8 */ be_nested_str_weak(cluster), - /* K9 */ be_nested_str_weak(attribute), - /* K10 */ be_nested_str_weak(fabric_filtered), - /* K11 */ be_nested_str_weak(push), - /* K12 */ be_nested_str_weak(tasmota), - /* K13 */ be_nested_str_weak(loglevel), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str_weak(Path), - /* K16 */ be_nested_str_weak(get_attribute_name), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), - /* K19 */ be_nested_str_weak(session), - /* K20 */ be_nested_str_weak(local_session_id), - /* K21 */ be_nested_str_weak(_X20_X28), - /* K22 */ be_nested_str_weak(_X29), - /* K23 */ be_nested_str_weak(), - /* K24 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(process_read_or_subscribe_request_pull), - &be_const_str_solidified, - ( &(const binstruction[121]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x4C100000, // 0001 LDNIL R4 - 0x200C0604, // 0002 NE R3 R3 R4 - 0x780E0072, // 0003 JMPF R3 #0077 - 0x4C0C0000, // 0004 LDNIL R3 - 0x4C100000, // 0005 LDNIL R4 - 0x20100404, // 0006 NE R4 R2 R4 - 0x78120002, // 0007 JMPF R4 #000B - 0x8C100501, // 0008 GETMET R4 R2 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x70020000, // 000A JMP #000C - 0x4C100000, // 000B LDNIL R4 - 0x6014000C, // 000C GETGBL R5 G12 - 0x88180300, // 000D GETMBR R6 R1 K0 - 0x7C140200, // 000E CALL R5 1 - 0x24140B02, // 000F GT R5 R5 K2 - 0x78160002, // 0010 JMPF R5 #0014 - 0x60140012, // 0011 GETGBL R5 G18 - 0x7C140000, // 0012 CALL R5 0 - 0x5C0C0A00, // 0013 MOVE R3 R5 - 0x60140010, // 0014 GETGBL R5 G16 - 0x88180300, // 0015 GETMBR R6 R1 K0 - 0x7C140200, // 0016 CALL R5 1 - 0xA802005A, // 0017 EXBLK 0 #0073 - 0x5C180A00, // 0018 MOVE R6 R5 - 0x7C180000, // 0019 CALL R6 0 - 0xB81E0600, // 001A GETNGBL R7 K3 - 0x8C1C0F04, // 001B GETMET R7 R7 K4 - 0x88240105, // 001C GETMBR R9 R0 K5 - 0x7C1C0400, // 001D CALL R7 2 - 0x8C200F06, // 001E GETMET R8 R7 K6 - 0x88280D07, // 001F GETMBR R10 R6 K7 - 0x882C0D08, // 0020 GETMBR R11 R6 K8 - 0x88300D09, // 0021 GETMBR R12 R6 K9 - 0x8834030A, // 0022 GETMBR R13 R1 K10 - 0x7C200A00, // 0023 CALL R8 5 - 0x6020000C, // 0024 GETGBL R8 G12 - 0x88240300, // 0025 GETMBR R9 R1 K0 - 0x7C200200, // 0026 CALL R8 1 - 0x24201102, // 0027 GT R8 R8 K2 - 0x78220003, // 0028 JMPF R8 #002D - 0x8C20070B, // 0029 GETMET R8 R3 K11 - 0x5C280E00, // 002A MOVE R10 R7 - 0x7C200400, // 002B CALL R8 2 - 0x70020000, // 002C JMP #002E - 0x5C0C0E00, // 002D MOVE R3 R7 - 0xB8221800, // 002E GETNGBL R8 K12 - 0x8C20110D, // 002F GETMET R8 R8 K13 - 0x5828000E, // 0030 LDCONST R10 K14 - 0x7C200400, // 0031 CALL R8 2 - 0x7822003E, // 0032 JMPF R8 #0072 - 0x88200D07, // 0033 GETMBR R8 R6 K7 - 0x4C240000, // 0034 LDNIL R9 - 0x1C201009, // 0035 EQ R8 R8 R9 - 0x74220007, // 0036 JMPT R8 #003F - 0x88200D08, // 0037 GETMBR R8 R6 K8 - 0x4C240000, // 0038 LDNIL R9 - 0x1C201009, // 0039 EQ R8 R8 R9 - 0x74220003, // 003A JMPT R8 #003F - 0x88200D09, // 003B GETMBR R8 R6 K9 - 0x4C240000, // 003C LDNIL R9 - 0x1C201009, // 003D EQ R8 R8 R9 - 0x78220032, // 003E JMPF R8 #0072 - 0xB8220600, // 003F GETNGBL R8 K3 - 0x8C20110F, // 0040 GETMET R8 R8 K15 - 0x7C200200, // 0041 CALL R8 1 - 0x88240D07, // 0042 GETMBR R9 R6 K7 - 0x90220E09, // 0043 SETMBR R8 K7 R9 - 0x88240D08, // 0044 GETMBR R9 R6 K8 - 0x90221009, // 0045 SETMBR R8 K8 R9 - 0x88240D09, // 0046 GETMBR R9 R6 K9 - 0x90221209, // 0047 SETMBR R8 K9 R9 - 0x8824030A, // 0048 GETMBR R9 R1 K10 - 0x90221409, // 0049 SETMBR R8 K10 R9 - 0x60240008, // 004A GETGBL R9 G8 - 0x5C281000, // 004B MOVE R10 R8 - 0x7C240200, // 004C CALL R9 1 - 0x88280D08, // 004D GETMBR R10 R6 K8 - 0x4C2C0000, // 004E LDNIL R11 - 0x2028140B, // 004F NE R10 R10 R11 - 0x782A0017, // 0050 JMPF R10 #0069 - 0x88280D09, // 0051 GETMBR R10 R6 K9 - 0x4C2C0000, // 0052 LDNIL R11 - 0x2028140B, // 0053 NE R10 R10 R11 - 0x782A0013, // 0054 JMPF R10 #0069 - 0xB82A0600, // 0055 GETNGBL R10 K3 - 0x8C281510, // 0056 GETMET R10 R10 K16 - 0x88300D08, // 0057 GETMBR R12 R6 K8 - 0x88340D09, // 0058 GETMBR R13 R6 K9 - 0x7C280600, // 0059 CALL R10 3 - 0xB82E2200, // 005A GETNGBL R11 K17 - 0x60300018, // 005B GETGBL R12 G24 - 0x58340012, // 005C LDCONST R13 K18 - 0x88380513, // 005D GETMBR R14 R2 K19 - 0x88381D14, // 005E GETMBR R14 R14 K20 - 0x782A0002, // 005F JMPF R10 #0063 - 0x003E2A0A, // 0060 ADD R15 K21 R10 - 0x003C1F16, // 0061 ADD R15 R15 K22 - 0x70020000, // 0062 JMP #0064 - 0x583C0017, // 0063 LDCONST R15 K23 - 0x003C120F, // 0064 ADD R15 R9 R15 - 0x7C300600, // 0065 CALL R12 3 - 0x5834000E, // 0066 LDCONST R13 K14 - 0x7C2C0400, // 0067 CALL R11 2 - 0x70020008, // 0068 JMP #0072 - 0xB82A2200, // 0069 GETNGBL R10 K17 - 0x602C0018, // 006A GETGBL R11 G24 - 0x58300012, // 006B LDCONST R12 K18 - 0x88340513, // 006C GETMBR R13 R2 K19 - 0x88341B14, // 006D GETMBR R13 R13 K20 - 0x5C381200, // 006E MOVE R14 R9 - 0x7C2C0600, // 006F CALL R11 3 - 0x5830000E, // 0070 LDCONST R12 K14 - 0x7C280400, // 0071 CALL R10 2 - 0x7001FFA4, // 0072 JMP #0018 - 0x58140018, // 0073 LDCONST R5 K24 - 0xAC140200, // 0074 CATCH R5 1 0 - 0xB0080000, // 0075 RAISE 2 R0 R0 - 0x80040600, // 0076 RET 1 R3 - 0x4C0C0000, // 0077 LDNIL R3 - 0x80040600, // 0078 RET 1 R3 + 0x781A0008, // 00D9 JMPF R6 #00E3 + 0x8818012A, // 00DA GETMBR R6 R0 K42 + 0x8C180D20, // 00DB GETMET R6 R6 K32 + 0xB8220000, // 00DC GETNGBL R8 K0 + 0x8C20112B, // 00DD GETMET R8 R8 K43 + 0x5C280200, // 00DE MOVE R10 R1 + 0x5C2C0A00, // 00DF MOVE R11 R5 + 0x7C200600, // 00E0 CALL R8 3 + 0x7C180400, // 00E1 CALL R6 2 + 0x70020001, // 00E2 JMP #00E5 + 0x50180000, // 00E3 LDBOOL R6 0 0 + 0x80040C00, // 00E4 RET 1 R6 + 0x50180200, // 00E5 LDBOOL R6 1 0 + 0x80040C00, // 00E6 RET 1 R6 + 0x80000000, // 00E7 RET 0 }) ) ); @@ -2095,10 +548,331 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na /******************************************************************** -** Solidified function: send_subscribe_heartbeat +** Solidified function: subscribe_request ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ +be_local_closure(class_Matter_IM_subscribe_request, /* name */ + be_nested_proto( + 17, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[35]) { /* 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(tasmota), + /* K9 */ be_nested_str_weak(loglevel), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(attributes_requests), + /* K12 */ be_nested_str_weak(Path), + /* K13 */ be_nested_str_weak(msg), + /* K14 */ be_nested_str_weak(endpoint), + /* K15 */ be_nested_str_weak(cluster), + /* K16 */ be_nested_str_weak(attribute), + /* K17 */ be_nested_str_weak(push), + /* K18 */ be_nested_str_weak(stop_iteration), + /* K19 */ be_nested_str_weak(log), + /* K20 */ 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_X20fabric_filtered_X3D_X25s), + /* K21 */ be_nested_str_weak(local_session_id), + /* K22 */ be_nested_str_weak(concat), + /* K23 */ be_nested_str_weak(_X20), + /* K24 */ be_nested_str_weak(min_interval), + /* K25 */ be_nested_str_weak(max_interval), + /* K26 */ be_const_int(1), + /* K27 */ be_const_int(0), + /* K28 */ be_nested_str_weak(subscription_id), + /* K29 */ be_nested_str_weak(fabric_filtered), + /* K30 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K31 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull), + /* K32 */ be_nested_str_weak(set_event_generator_or_arr), + /* K33 */ be_nested_str_weak(send_queue), + /* K34 */ be_nested_str_weak(IM_SubscribeResponse_Pull), + }), + be_str_weak(subscribe_request), + &be_const_str_solidified, + ( &(const binstruction[96]) { /* 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 + 0xB8161000, // 0011 GETNGBL R5 K8 + 0x8C140B09, // 0012 GETMET R5 R5 K9 + 0x581C000A, // 0013 LDCONST R7 K10 + 0x7C140400, // 0014 CALL R5 2 + 0x78160032, // 0015 JMPF R5 #0049 + 0x8814070B, // 0016 GETMBR R5 R3 K11 + 0x4C180000, // 0017 LDNIL R6 + 0x20140A06, // 0018 NE R5 R5 R6 + 0x7816002E, // 0019 JMPF R5 #0049 + 0x60140012, // 001A GETGBL R5 G18 + 0x7C140000, // 001B CALL R5 0 + 0xB81A0000, // 001C GETNGBL R6 K0 + 0x8C180D0C, // 001D GETMET R6 R6 K12 + 0x7C180200, // 001E CALL R6 1 + 0x901A1A01, // 001F SETMBR R6 K13 R1 + 0x601C0010, // 0020 GETGBL R7 G16 + 0x8820070B, // 0021 GETMBR R8 R3 K11 + 0x7C1C0200, // 0022 CALL R7 1 + 0xA802000D, // 0023 EXBLK 0 #0032 + 0x5C200E00, // 0024 MOVE R8 R7 + 0x7C200000, // 0025 CALL R8 0 + 0x8824110E, // 0026 GETMBR R9 R8 K14 + 0x901A1C09, // 0027 SETMBR R6 K14 R9 + 0x8824110F, // 0028 GETMBR R9 R8 K15 + 0x901A1E09, // 0029 SETMBR R6 K15 R9 + 0x88241110, // 002A GETMBR R9 R8 K16 + 0x901A2009, // 002B SETMBR R6 K16 R9 + 0x8C240B11, // 002C GETMET R9 R5 K17 + 0x602C0008, // 002D GETGBL R11 G8 + 0x5C300C00, // 002E MOVE R12 R6 + 0x7C2C0200, // 002F CALL R11 1 + 0x7C240400, // 0030 CALL R9 2 + 0x7001FFF1, // 0031 JMP #0024 + 0x581C0012, // 0032 LDCONST R7 K18 + 0xAC1C0200, // 0033 CATCH R7 1 0 + 0xB0080000, // 0034 RAISE 2 R0 R0 + 0xB81E2600, // 0035 GETNGBL R7 K19 + 0x60200018, // 0036 GETGBL R8 G24 + 0x58240014, // 0037 LDCONST R9 K20 + 0x88280306, // 0038 GETMBR R10 R1 K6 + 0x88281515, // 0039 GETMBR R10 R10 K21 + 0x8C2C0B16, // 003A GETMET R11 R5 K22 + 0x58340017, // 003B LDCONST R13 K23 + 0x7C2C0400, // 003C CALL R11 2 + 0x88300918, // 003D GETMBR R12 R4 K24 + 0x88340919, // 003E GETMBR R13 R4 K25 + 0x88380703, // 003F GETMBR R14 R3 K3 + 0x783A0001, // 0040 JMPF R14 #0043 + 0x5838001A, // 0041 LDCONST R14 K26 + 0x70020000, // 0042 JMP #0044 + 0x5838001B, // 0043 LDCONST R14 K27 + 0x883C091C, // 0044 GETMBR R15 R4 K28 + 0x8840071D, // 0045 GETMBR R16 R3 K29 + 0x7C201000, // 0046 CALL R8 8 + 0x5824000A, // 0047 LDCONST R9 K10 + 0x7C1C0400, // 0048 CALL R7 2 + 0x8C14011E, // 0049 GETMET R5 R0 K30 + 0x5C1C0600, // 004A MOVE R7 R3 + 0x5C200200, // 004B MOVE R8 R1 + 0x7C140600, // 004C CALL R5 3 + 0x8C18011F, // 004D GETMET R6 R0 K31 + 0x5C200600, // 004E MOVE R8 R3 + 0x5C240200, // 004F MOVE R9 R1 + 0x7C180600, // 0050 CALL R6 3 + 0x8C1C0920, // 0051 GETMET R7 R4 K32 + 0x5C240C00, // 0052 MOVE R9 R6 + 0x7C1C0400, // 0053 CALL R7 2 + 0x881C0121, // 0054 GETMBR R7 R0 K33 + 0x8C1C0F11, // 0055 GETMET R7 R7 K17 + 0xB8260000, // 0056 GETNGBL R9 K0 + 0x8C241322, // 0057 GETMET R9 R9 K34 + 0x5C2C0200, // 0058 MOVE R11 R1 + 0x5C300A00, // 0059 MOVE R12 R5 + 0x5C340C00, // 005A MOVE R13 R6 + 0x5C380800, // 005B MOVE R14 R4 + 0x7C240A00, // 005C CALL R9 5 + 0x7C1C0400, // 005D CALL R7 2 + 0x501C0200, // 005E LDBOOL R7 1 0 + 0x80040E00, // 005F RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_read_or_subscribe_request_pull +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* name */ + be_nested_proto( + 16, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[25]) { /* constants */ + /* K0 */ be_nested_str_weak(attributes_requests), + /* K1 */ be_const_int(0), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(PathGenerator), + /* K5 */ be_nested_str_weak(device), + /* K6 */ be_nested_str_weak(start), + /* K7 */ be_nested_str_weak(endpoint), + /* K8 */ be_nested_str_weak(cluster), + /* K9 */ be_nested_str_weak(attribute), + /* K10 */ be_nested_str_weak(fabric_filtered), + /* K11 */ be_nested_str_weak(push), + /* K12 */ be_nested_str_weak(tasmota), + /* K13 */ be_nested_str_weak(loglevel), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str_weak(Path), + /* K16 */ be_nested_str_weak(get_attribute_name), + /* K17 */ be_nested_str_weak(log), + /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), + /* K19 */ be_nested_str_weak(session), + /* K20 */ be_nested_str_weak(local_session_id), + /* K21 */ be_nested_str_weak(_X20_X28), + /* K22 */ be_nested_str_weak(_X29), + /* K23 */ be_nested_str_weak(), + /* K24 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(process_read_or_subscribe_request_pull), + &be_const_str_solidified, + ( &(const binstruction[115]) { /* code */ + 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x200C0604, // 0002 NE R3 R3 R4 + 0x780E006C, // 0003 JMPF R3 #0071 + 0x4C0C0000, // 0004 LDNIL R3 + 0x88100300, // 0005 GETMBR R4 R1 K0 + 0x78120003, // 0006 JMPF R4 #000B + 0x6010000C, // 0007 GETGBL R4 G12 + 0x88140300, // 0008 GETMBR R5 R1 K0 + 0x7C100200, // 0009 CALL R4 1 + 0x70020000, // 000A JMP #000C + 0x58100001, // 000B LDCONST R4 K1 + 0x24140902, // 000C GT R5 R4 K2 + 0x78160002, // 000D JMPF R5 #0011 + 0x60140012, // 000E GETGBL R5 G18 + 0x7C140000, // 000F CALL R5 0 + 0x5C0C0A00, // 0010 MOVE R3 R5 + 0x60140010, // 0011 GETGBL R5 G16 + 0x88180300, // 0012 GETMBR R6 R1 K0 + 0x7C140200, // 0013 CALL R5 1 + 0xA8020057, // 0014 EXBLK 0 #006D + 0x5C180A00, // 0015 MOVE R6 R5 + 0x7C180000, // 0016 CALL R6 0 + 0xB81E0600, // 0017 GETNGBL R7 K3 + 0x8C1C0F04, // 0018 GETMET R7 R7 K4 + 0x88240105, // 0019 GETMBR R9 R0 K5 + 0x7C1C0400, // 001A CALL R7 2 + 0x8C200F06, // 001B GETMET R8 R7 K6 + 0x88280D07, // 001C GETMBR R10 R6 K7 + 0x882C0D08, // 001D GETMBR R11 R6 K8 + 0x88300D09, // 001E GETMBR R12 R6 K9 + 0x8834030A, // 001F GETMBR R13 R1 K10 + 0x7C200A00, // 0020 CALL R8 5 + 0x24200902, // 0021 GT R8 R4 K2 + 0x78220003, // 0022 JMPF R8 #0027 + 0x8C20070B, // 0023 GETMET R8 R3 K11 + 0x5C280E00, // 0024 MOVE R10 R7 + 0x7C200400, // 0025 CALL R8 2 + 0x70020000, // 0026 JMP #0028 + 0x5C0C0E00, // 0027 MOVE R3 R7 + 0xB8221800, // 0028 GETNGBL R8 K12 + 0x8C20110D, // 0029 GETMET R8 R8 K13 + 0x5828000E, // 002A LDCONST R10 K14 + 0x7C200400, // 002B CALL R8 2 + 0x7822003E, // 002C JMPF R8 #006C + 0x88200D07, // 002D GETMBR R8 R6 K7 + 0x4C240000, // 002E LDNIL R9 + 0x1C201009, // 002F EQ R8 R8 R9 + 0x74220007, // 0030 JMPT R8 #0039 + 0x88200D08, // 0031 GETMBR R8 R6 K8 + 0x4C240000, // 0032 LDNIL R9 + 0x1C201009, // 0033 EQ R8 R8 R9 + 0x74220003, // 0034 JMPT R8 #0039 + 0x88200D09, // 0035 GETMBR R8 R6 K9 + 0x4C240000, // 0036 LDNIL R9 + 0x1C201009, // 0037 EQ R8 R8 R9 + 0x78220032, // 0038 JMPF R8 #006C + 0xB8220600, // 0039 GETNGBL R8 K3 + 0x8C20110F, // 003A GETMET R8 R8 K15 + 0x7C200200, // 003B CALL R8 1 + 0x88240D07, // 003C GETMBR R9 R6 K7 + 0x90220E09, // 003D SETMBR R8 K7 R9 + 0x88240D08, // 003E GETMBR R9 R6 K8 + 0x90221009, // 003F SETMBR R8 K8 R9 + 0x88240D09, // 0040 GETMBR R9 R6 K9 + 0x90221209, // 0041 SETMBR R8 K9 R9 + 0x8824030A, // 0042 GETMBR R9 R1 K10 + 0x90221409, // 0043 SETMBR R8 K10 R9 + 0x60240008, // 0044 GETGBL R9 G8 + 0x5C281000, // 0045 MOVE R10 R8 + 0x7C240200, // 0046 CALL R9 1 + 0x88280D08, // 0047 GETMBR R10 R6 K8 + 0x4C2C0000, // 0048 LDNIL R11 + 0x2028140B, // 0049 NE R10 R10 R11 + 0x782A0017, // 004A JMPF R10 #0063 + 0x88280D09, // 004B GETMBR R10 R6 K9 + 0x4C2C0000, // 004C LDNIL R11 + 0x2028140B, // 004D NE R10 R10 R11 + 0x782A0013, // 004E JMPF R10 #0063 + 0xB82A0600, // 004F GETNGBL R10 K3 + 0x8C281510, // 0050 GETMET R10 R10 K16 + 0x88300D08, // 0051 GETMBR R12 R6 K8 + 0x88340D09, // 0052 GETMBR R13 R6 K9 + 0x7C280600, // 0053 CALL R10 3 + 0xB82E2200, // 0054 GETNGBL R11 K17 + 0x60300018, // 0055 GETGBL R12 G24 + 0x58340012, // 0056 LDCONST R13 K18 + 0x88380513, // 0057 GETMBR R14 R2 K19 + 0x88381D14, // 0058 GETMBR R14 R14 K20 + 0x782A0002, // 0059 JMPF R10 #005D + 0x003E2A0A, // 005A ADD R15 K21 R10 + 0x003C1F16, // 005B ADD R15 R15 K22 + 0x70020000, // 005C JMP #005E + 0x583C0017, // 005D LDCONST R15 K23 + 0x003C120F, // 005E ADD R15 R9 R15 + 0x7C300600, // 005F CALL R12 3 + 0x5834000E, // 0060 LDCONST R13 K14 + 0x7C2C0400, // 0061 CALL R11 2 + 0x70020008, // 0062 JMP #006C + 0xB82A2200, // 0063 GETNGBL R10 K17 + 0x602C0018, // 0064 GETGBL R11 G24 + 0x58300012, // 0065 LDCONST R12 K18 + 0x88340513, // 0066 GETMBR R13 R2 K19 + 0x88341B14, // 0067 GETMBR R13 R13 K20 + 0x5C381200, // 0068 MOVE R14 R9 + 0x7C2C0600, // 0069 CALL R11 3 + 0x5830000E, // 006A LDCONST R12 K14 + 0x7C280400, // 006B CALL R10 2 + 0x7001FFA7, // 006C JMP #0015 + 0x58140018, // 006D LDCONST R5 K24 + 0xAC140200, // 006E CATCH R5 1 0 + 0xB0080000, // 006F RAISE 2 R0 R0 + 0x80040600, // 0070 RET 1 R3 + 0x4C0C0000, // 0071 LDNIL R3 + 0x80040600, // 0072 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_incoming +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_incoming, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ @@ -2108,425 +882,157 @@ be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s), - /* K3 */ be_nested_str_weak(local_session_id), - /* K4 */ be_nested_str_weak(subscription_id), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(is_keep_alive), - /* K7 */ be_nested_str_weak(matter), - /* K8 */ be_nested_str_weak(IM_SubscribedHeartbeat), - /* K9 */ be_nested_str_weak(_message_handler), - /* K10 */ be_nested_str_weak(send_queue), - /* K11 */ be_nested_str_weak(push), - /* K12 */ be_nested_str_weak(send_enqueued), + ( &(const bvalue[22]) { /* 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_pull), + /* 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(process_write_request), + /* K19 */ be_nested_str_weak(process_write_response), + /* K20 */ be_nested_str_weak(process_invoke_request), + /* K21 */ be_nested_str_weak(process_timed_request), }), - be_str_weak(send_subscribe_heartbeat), + be_str_weak(process_incoming), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ + ( &(const binstruction[124]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x60100018, // 0002 GETGBL R4 G24 - 0x58140002, // 0003 LDCONST R5 K2 - 0x88180503, // 0004 GETMBR R6 R2 K3 - 0x881C0304, // 0005 GETMBR R7 R1 K4 - 0x7C100600, // 0006 CALL R4 3 - 0x58140005, // 0007 LDCONST R5 K5 - 0x7C0C0400, // 0008 CALL R3 2 - 0x500C0200, // 0009 LDBOOL R3 1 0 - 0x90060C03, // 000A SETMBR R1 K6 R3 - 0xB80E0E00, // 000B GETNGBL R3 K7 - 0x8C0C0708, // 000C GETMET R3 R3 K8 - 0x88140509, // 000D GETMBR R5 R2 K9 - 0x5C180400, // 000E MOVE R6 R2 - 0x5C1C0200, // 000F MOVE R7 R1 - 0x7C0C0800, // 0010 CALL R3 4 - 0x8810010A, // 0011 GETMBR R4 R0 K10 - 0x8C10090B, // 0012 GETMET R4 R4 K11 - 0x5C180600, // 0013 MOVE R6 R3 - 0x7C100400, // 0014 CALL R4 2 - 0x8C10010C, // 0015 GETMET R4 R0 K12 - 0x88180509, // 0016 GETMBR R6 R2 K9 - 0x7C100400, // 0017 CALL R4 2 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: attributedata2raw -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_attributedata2raw, /* name */ - be_nested_proto( - 11, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 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[23]) { /* code */ - 0x8C140300, // 0000 GETMET R5 R1 K0 - 0x581C0001, // 0001 LDCONST R7 K1 - 0x5421FFFB, // 0002 LDINT R8 -4 - 0x7C140600, // 0003 CALL R5 3 - 0x8C140300, // 0004 GETMET R5 R1 K0 - 0x581C0002, // 0005 LDCONST R7 K2 - 0x5421FFFD, // 0006 LDINT R8 -2 - 0x7C140600, // 0007 CALL R5 3 - 0x8C140103, // 0008 GETMET R5 R0 K3 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x5C200400, // 000A MOVE R8 R2 - 0x58240002, // 000B LDCONST R9 K2 - 0x5C280800, // 000C MOVE R10 R4 - 0x7C140A00, // 000D CALL R5 5 - 0x900E0905, // 000E SETMBR R3 K4 K5 - 0x8C140706, // 000F GETMET R5 R3 K6 - 0x5C1C0200, // 0010 MOVE R7 R1 - 0x7C140400, // 0011 CALL R5 2 - 0x8C140300, // 0012 GETMET R5 R1 K0 - 0x541E1817, // 0013 LDINT R7 6168 - 0x5421FFFD, // 0014 LDINT R8 -2 - 0x7C140600, // 0015 CALL R5 3 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: attributestatus2raw -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_attributestatus2raw, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(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(attributestatus2raw), - &be_const_str_solidified, - ( &(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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_write_request -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_write_request, /* name */ - be_nested_proto( - 21, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[39]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(WriteRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(Path), - /* K4 */ be_nested_str_weak(suppress_response), - /* K5 */ be_nested_str_weak(write_requests), - /* K6 */ be_nested_str_weak(WriteResponseMessage), - /* K7 */ be_nested_str_weak(write_responses), - /* K8 */ be_nested_str_weak(PathGenerator), - /* K9 */ be_nested_str_weak(device), - /* K10 */ be_nested_str_weak(path), - /* K11 */ be_nested_str_weak(data), - /* K12 */ be_nested_str_weak(copy), - /* K13 */ be_nested_str_weak(cluster), - /* K14 */ be_nested_str_weak(attribute), - /* K15 */ be_nested_str_weak(status), - /* K16 */ be_nested_str_weak(INVALID_ACTION), - /* K17 */ be_nested_str_weak(write_single_attribute_status_to_bytes), - /* K18 */ be_nested_str_weak(endpoint), - /* K19 */ be_nested_str_weak(tasmota), - /* K20 */ be_nested_str_weak(loglevel), - /* K21 */ be_const_int(3), - /* K22 */ be_nested_str_weak(get_attribute_name), - /* K23 */ be_nested_str_weak(log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), - /* K25 */ be_nested_str_weak(_X20_X28), - /* K26 */ be_nested_str_weak(_X29), - /* K27 */ be_nested_str_weak(), - /* K28 */ be_nested_str_weak(start), - /* K29 */ be_nested_str_weak(is_direct), - /* K30 */ be_nested_str_weak(next), - /* K31 */ be_nested_str_weak(msg), - /* K32 */ be_nested_str_weak(get_pi), - /* K33 */ be_nested_str_weak(UNSUPPORTED_WRITE), - /* K34 */ be_nested_str_weak(write_attribute), - /* K35 */ be_nested_str_weak(session), - /* K36 */ be_nested_str_weak(SUCCESS), - /* K37 */ be_nested_str_weak(stop_iteration), - /* K38 */ be_nested_str_weak(send_write_response), - }), - be_str_weak(process_write_request), - &be_const_str_solidified, - ( &(const binstruction[141]) { /* 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 - 0xB8120000, // 0006 GETNGBL R4 K0 - 0x8C100903, // 0007 GETMET R4 R4 K3 - 0x7C100200, // 0008 CALL R4 1 - 0x88140704, // 0009 GETMBR R5 R3 K4 - 0x88180705, // 000A GETMBR R6 R3 K5 - 0x4C1C0000, // 000B LDNIL R7 - 0x20180C07, // 000C NE R6 R6 R7 - 0x781A007C, // 000D JMPF R6 #008B - 0xB81A0000, // 000E GETNGBL R6 K0 - 0x8C180D06, // 000F GETMET R6 R6 K6 - 0x7C180200, // 0010 CALL R6 1 - 0x601C0012, // 0011 GETGBL R7 G18 - 0x7C1C0000, // 0012 CALL R7 0 - 0x901A0E07, // 0013 SETMBR R6 K7 R7 - 0xB81E0000, // 0014 GETNGBL R7 K0 - 0x8C1C0F08, // 0015 GETMET R7 R7 K8 - 0x88240109, // 0016 GETMBR R9 R0 K9 - 0x7C1C0400, // 0017 CALL R7 2 - 0x60200010, // 0018 GETGBL R8 G16 - 0x88240705, // 0019 GETMBR R9 R3 K5 - 0x7C200200, // 001A CALL R8 1 - 0xA8020065, // 001B EXBLK 0 #0082 - 0x5C241000, // 001C MOVE R9 R8 - 0x7C240000, // 001D CALL R9 0 - 0x8828130A, // 001E GETMBR R10 R9 K10 - 0x882C130B, // 001F GETMBR R11 R9 K11 - 0x8C30090C, // 0020 GETMET R12 R4 K12 - 0x5C381400, // 0021 MOVE R14 R10 - 0x7C300400, // 0022 CALL R12 2 - 0x8830150D, // 0023 GETMBR R12 R10 K13 - 0x4C340000, // 0024 LDNIL R13 - 0x1C30180D, // 0025 EQ R12 R12 R13 - 0x74320003, // 0026 JMPT R12 #002B - 0x8830150E, // 0027 GETMBR R12 R10 K14 - 0x4C340000, // 0028 LDNIL R13 - 0x1C30180D, // 0029 EQ R12 R12 R13 - 0x78320008, // 002A JMPF R12 #0034 - 0xB8320000, // 002B GETNGBL R12 K0 - 0x88301910, // 002C GETMBR R12 R12 K16 - 0x90121E0C, // 002D SETMBR R4 K15 R12 - 0x8C300111, // 002E GETMET R12 R0 K17 - 0x5C380C00, // 002F MOVE R14 R6 - 0x5C3C0800, // 0030 MOVE R15 R4 - 0x4C400000, // 0031 LDNIL R16 - 0x7C300800, // 0032 CALL R12 4 - 0x7001FFE7, // 0033 JMP #001C - 0x88301512, // 0034 GETMBR R12 R10 K18 - 0x4C340000, // 0035 LDNIL R13 - 0x1C30180D, // 0036 EQ R12 R12 R13 - 0x78320016, // 0037 JMPF R12 #004F - 0xB8322600, // 0038 GETNGBL R12 K19 - 0x8C301914, // 0039 GETMET R12 R12 K20 - 0x58380015, // 003A LDCONST R14 K21 - 0x7C300400, // 003B CALL R12 2 - 0x78320011, // 003C JMPF R12 #004F - 0xB8320000, // 003D GETNGBL R12 K0 - 0x8C301916, // 003E GETMET R12 R12 K22 - 0x8838150D, // 003F GETMBR R14 R10 K13 - 0x883C150E, // 0040 GETMBR R15 R10 K14 - 0x7C300600, // 0041 CALL R12 3 - 0xB8362E00, // 0042 GETNGBL R13 K23 - 0x60380008, // 0043 GETGBL R14 G8 - 0x5C3C0800, // 0044 MOVE R15 R4 - 0x7C380200, // 0045 CALL R14 1 - 0x003A300E, // 0046 ADD R14 K24 R14 - 0x78320002, // 0047 JMPF R12 #004B - 0x003E320C, // 0048 ADD R15 K25 R12 - 0x003C1F1A, // 0049 ADD R15 R15 K26 - 0x70020000, // 004A JMP #004C - 0x583C001B, // 004B LDCONST R15 K27 - 0x00381C0F, // 004C ADD R14 R14 R15 - 0x583C0015, // 004D LDCONST R15 K21 - 0x7C340400, // 004E CALL R13 2 - 0x8C300F1C, // 004F GETMET R12 R7 K28 - 0x88381512, // 0050 GETMBR R14 R10 K18 - 0x883C150D, // 0051 GETMBR R15 R10 K13 - 0x8840150E, // 0052 GETMBR R16 R10 K14 - 0x7C300800, // 0053 CALL R12 4 - 0x8C300F1D, // 0054 GETMET R12 R7 K29 - 0x7C300200, // 0055 CALL R12 1 - 0x4C340000, // 0056 LDNIL R13 - 0x8C380F1E, // 0057 GETMET R14 R7 K30 - 0x7C380200, // 0058 CALL R14 1 - 0x5C341C00, // 0059 MOVE R13 R14 - 0x783A0025, // 005A JMPF R14 #0081 - 0x90363E01, // 005B SETMBR R13 K31 R1 - 0x88381B0F, // 005C GETMBR R14 R13 K15 - 0x4C3C0000, // 005D LDNIL R15 - 0x20381C0F, // 005E NE R14 R14 R15 - 0x783A0007, // 005F JMPF R14 #0068 - 0x4C380000, // 0060 LDNIL R14 - 0x90361E0E, // 0061 SETMBR R13 K15 R14 - 0x8C380111, // 0062 GETMET R14 R0 K17 - 0x5C400C00, // 0063 MOVE R16 R6 - 0x5C441A00, // 0064 MOVE R17 R13 - 0x5C481600, // 0065 MOVE R18 R11 - 0x7C380800, // 0066 CALL R14 4 - 0x70020017, // 0067 JMP #0080 - 0x8C380F20, // 0068 GETMET R14 R7 K32 - 0x7C380200, // 0069 CALL R14 1 - 0xB83E0000, // 006A GETNGBL R15 K0 - 0x883C1F21, // 006B GETMBR R15 R15 K33 - 0x90361E0F, // 006C SETMBR R13 K15 R15 - 0x4C3C0000, // 006D LDNIL R15 - 0x203C1C0F, // 006E NE R15 R14 R15 - 0x783E0005, // 006F JMPF R15 #0076 - 0x8C3C1D22, // 0070 GETMET R15 R14 K34 - 0x88440323, // 0071 GETMBR R17 R1 K35 - 0x5C481A00, // 0072 MOVE R18 R13 - 0x5C4C1600, // 0073 MOVE R19 R11 - 0x7C3C0800, // 0074 CALL R15 4 - 0x70020000, // 0075 JMP #0077 - 0x4C3C0000, // 0076 LDNIL R15 - 0x783E0002, // 0077 JMPF R15 #007B - 0xB8420000, // 0078 GETNGBL R16 K0 - 0x88402124, // 0079 GETMBR R16 R16 K36 - 0x90361E10, // 007A SETMBR R13 K15 R16 - 0x8C400111, // 007B GETMET R16 R0 K17 - 0x5C480C00, // 007C MOVE R18 R6 - 0x5C4C1A00, // 007D MOVE R19 R13 - 0x5C501600, // 007E MOVE R20 R11 - 0x7C400800, // 007F CALL R16 4 - 0x7001FFD5, // 0080 JMP #0057 - 0x7001FF99, // 0081 JMP #001C - 0x58200025, // 0082 LDCONST R8 K37 - 0xAC200200, // 0083 CATCH R8 1 0 - 0xB0080000, // 0084 RAISE 2 R0 R0 - 0x5C200A00, // 0085 MOVE R8 R5 - 0x74220003, // 0086 JMPT R8 #008B - 0x8C200126, // 0087 GETMET R8 R0 K38 - 0x5C280200, // 0088 MOVE R10 R1 - 0x5C2C0C00, // 0089 MOVE R11 R6 - 0x7C200600, // 008A CALL R8 3 - 0x50180200, // 008B LDBOOL R6 1 0 - 0x80040C00, // 008C RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_report_data_pull -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_report_data_pull, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 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_ReportData_Pull), - }), - be_str_weak(send_report_data_pull), - &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 + 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 + 0x7002004A, // 002E JMP #007A + 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 + 0x70020042, // 0036 JMP #007A + 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 + 0x70020037, // 0041 JMP #007A + 0x54120003, // 0042 LDINT R4 4 + 0x1C100404, // 0043 EQ R4 R2 R4 + 0x78120002, // 0044 JMPF R4 #0048 + 0x50100000, // 0045 LDBOOL R4 0 0 + 0x80040800, // 0046 RET 1 R4 + 0x70020031, // 0047 JMP #007A + 0x54120004, // 0048 LDINT R4 5 + 0x1C100404, // 0049 EQ R4 R2 R4 + 0x78120002, // 004A JMPF R4 #004E + 0x50100000, // 004B LDBOOL R4 0 0 + 0x80040800, // 004C RET 1 R4 + 0x7002002B, // 004D JMP #007A + 0x54120005, // 004E LDINT R4 6 + 0x1C100404, // 004F EQ R4 R2 R4 + 0x78120008, // 0050 JMPF R4 #005A + 0x8C100110, // 0051 GETMET R4 R0 K16 + 0x5C180200, // 0052 MOVE R6 R1 + 0x7C100400, // 0053 CALL R4 2 + 0x8C100112, // 0054 GETMET R4 R0 K18 + 0x5C180200, // 0055 MOVE R6 R1 + 0x5C1C0600, // 0056 MOVE R7 R3 + 0x7C100600, // 0057 CALL R4 3 + 0x80040800, // 0058 RET 1 R4 + 0x7002001F, // 0059 JMP #007A + 0x54120006, // 005A LDINT R4 7 + 0x1C100404, // 005B EQ R4 R2 R4 + 0x78120005, // 005C JMPF R4 #0063 + 0x8C100113, // 005D GETMET R4 R0 K19 + 0x5C180200, // 005E MOVE R6 R1 + 0x5C1C0600, // 005F MOVE R7 R3 + 0x7C100600, // 0060 CALL R4 3 + 0x80040800, // 0061 RET 1 R4 + 0x70020016, // 0062 JMP #007A + 0x54120007, // 0063 LDINT R4 8 + 0x1C100404, // 0064 EQ R4 R2 R4 + 0x78120005, // 0065 JMPF R4 #006C + 0x8C100114, // 0066 GETMET R4 R0 K20 + 0x5C180200, // 0067 MOVE R6 R1 + 0x5C1C0600, // 0068 MOVE R7 R3 + 0x7C100600, // 0069 CALL R4 3 + 0x80040800, // 006A RET 1 R4 + 0x7002000D, // 006B JMP #007A + 0x54120008, // 006C LDINT R4 9 + 0x1C100404, // 006D EQ R4 R2 R4 + 0x78120002, // 006E JMPF R4 #0072 + 0x50100000, // 006F LDBOOL R4 0 0 + 0x80040800, // 0070 RET 1 R4 + 0x70020007, // 0071 JMP #007A + 0x54120009, // 0072 LDINT R4 10 + 0x1C100404, // 0073 EQ R4 R2 R4 + 0x78120004, // 0074 JMPF R4 #007A + 0x8C100115, // 0075 GETMET R4 R0 K21 + 0x5C180200, // 0076 MOVE R6 R1 + 0x5C1C0600, // 0077 MOVE R7 R3 + 0x7C100600, // 0078 CALL R4 3 + 0x80040800, // 0079 RET 1 R4 + 0x50100000, // 007A LDBOOL R4 0 0 + 0x80040800, // 007B RET 1 R4 }) ) ); @@ -2803,6 +1309,527 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: invokeresponse2raw +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 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: expire_sendqueue +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 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), + }), + be_str_weak(expire_sendqueue), + &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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_enqueued +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_send_enqueued, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(finish), + /* K3 */ be_nested_str_weak(ready), + /* K4 */ be_nested_str_weak(send_im), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20remove_X20IM_X20message_X20exch_X3D), + /* K7 */ be_nested_str_weak(resp), + /* K8 */ be_nested_str_weak(exchange_id), + /* K9 */ be_nested_str_weak(remove), + /* K10 */ be_const_int(1), + }), + be_str_weak(send_enqueued), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* 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 + 0x780E0019, // 0005 JMPF R3 #0020 + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x88100702, // 0008 GETMBR R4 R3 K2 + 0x74120004, // 0009 JMPT R4 #000F + 0x88100703, // 000A GETMBR R4 R3 K3 + 0x78120002, // 000B JMPF R4 #000F + 0x8C100704, // 000C GETMET R4 R3 K4 + 0x5C180200, // 000D MOVE R6 R1 + 0x7C100400, // 000E CALL R4 2 + 0x88100702, // 000F GETMBR R4 R3 K2 + 0x7812000C, // 0010 JMPF R4 #001E + 0xB8120A00, // 0011 GETNGBL R4 K5 + 0x60140008, // 0012 GETGBL R5 G8 + 0x88180707, // 0013 GETMBR R6 R3 K7 + 0x88180D08, // 0014 GETMBR R6 R6 K8 + 0x7C140200, // 0015 CALL R5 1 + 0x00160C05, // 0016 ADD R5 K6 R5 + 0x541A0003, // 0017 LDINT R6 4 + 0x7C100400, // 0018 CALL R4 2 + 0x88100101, // 0019 GETMBR R4 R0 K1 + 0x8C100909, // 001A GETMET R4 R4 K9 + 0x5C180400, // 001B MOVE R6 R2 + 0x7C100400, // 001C CALL R4 2 + 0x70020000, // 001D JMP #001F + 0x0008050A, // 001E ADD R2 R2 K10 + 0x7001FFE0, // 001F JMP #0001 + 0x80000000, // 0020 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_write_request +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_write_request, /* name */ + be_nested_proto( + 21, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[41]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(WriteRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(Path), + /* K4 */ be_nested_str_weak(suppress_response), + /* K5 */ be_nested_str_weak(write_requests), + /* K6 */ be_nested_str_weak(WriteResponseMessage), + /* K7 */ be_nested_str_weak(write_responses), + /* K8 */ be_nested_str_weak(PathGenerator), + /* K9 */ be_nested_str_weak(device), + /* K10 */ be_nested_str_weak(path), + /* K11 */ be_nested_str_weak(data), + /* K12 */ be_nested_str_weak(copy), + /* K13 */ be_nested_str_weak(cluster), + /* K14 */ be_nested_str_weak(attribute), + /* K15 */ be_nested_str_weak(status), + /* K16 */ be_nested_str_weak(INVALID_ACTION), + /* K17 */ be_nested_str_weak(write_single_attribute_status_to_bytes), + /* K18 */ be_nested_str_weak(endpoint), + /* K19 */ be_nested_str_weak(tasmota), + /* K20 */ be_nested_str_weak(loglevel), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(get_attribute_name), + /* K23 */ be_nested_str_weak(log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), + /* K25 */ be_nested_str_weak(_X20_X28), + /* K26 */ be_nested_str_weak(_X29), + /* K27 */ be_nested_str_weak(), + /* K28 */ be_nested_str_weak(start), + /* K29 */ be_nested_str_weak(is_direct), + /* K30 */ be_nested_str_weak(next_attribute), + /* K31 */ be_nested_str_weak(msg), + /* K32 */ be_nested_str_weak(get_pi), + /* K33 */ be_nested_str_weak(UNSUPPORTED_WRITE), + /* K34 */ be_nested_str_weak(write_attribute), + /* K35 */ be_nested_str_weak(session), + /* K36 */ be_nested_str_weak(SUCCESS), + /* K37 */ be_nested_str_weak(stop_iteration), + /* K38 */ be_nested_str_weak(send_queue), + /* K39 */ be_nested_str_weak(push), + /* K40 */ be_nested_str_weak(IM_WriteResponse), + }), + be_str_weak(process_write_request), + &be_const_str_solidified, + ( &(const binstruction[145]) { /* 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 + 0xB8120000, // 0006 GETNGBL R4 K0 + 0x8C100903, // 0007 GETMET R4 R4 K3 + 0x7C100200, // 0008 CALL R4 1 + 0x88140704, // 0009 GETMBR R5 R3 K4 + 0x88180705, // 000A GETMBR R6 R3 K5 + 0x4C1C0000, // 000B LDNIL R7 + 0x20180C07, // 000C NE R6 R6 R7 + 0x781A0080, // 000D JMPF R6 #008F + 0xB81A0000, // 000E GETNGBL R6 K0 + 0x8C180D06, // 000F GETMET R6 R6 K6 + 0x7C180200, // 0010 CALL R6 1 + 0x601C0012, // 0011 GETGBL R7 G18 + 0x7C1C0000, // 0012 CALL R7 0 + 0x901A0E07, // 0013 SETMBR R6 K7 R7 + 0xB81E0000, // 0014 GETNGBL R7 K0 + 0x8C1C0F08, // 0015 GETMET R7 R7 K8 + 0x88240109, // 0016 GETMBR R9 R0 K9 + 0x7C1C0400, // 0017 CALL R7 2 + 0x60200010, // 0018 GETGBL R8 G16 + 0x88240705, // 0019 GETMBR R9 R3 K5 + 0x7C200200, // 001A CALL R8 1 + 0xA8020065, // 001B EXBLK 0 #0082 + 0x5C241000, // 001C MOVE R9 R8 + 0x7C240000, // 001D CALL R9 0 + 0x8828130A, // 001E GETMBR R10 R9 K10 + 0x882C130B, // 001F GETMBR R11 R9 K11 + 0x8C30090C, // 0020 GETMET R12 R4 K12 + 0x5C381400, // 0021 MOVE R14 R10 + 0x7C300400, // 0022 CALL R12 2 + 0x8830150D, // 0023 GETMBR R12 R10 K13 + 0x4C340000, // 0024 LDNIL R13 + 0x1C30180D, // 0025 EQ R12 R12 R13 + 0x74320003, // 0026 JMPT R12 #002B + 0x8830150E, // 0027 GETMBR R12 R10 K14 + 0x4C340000, // 0028 LDNIL R13 + 0x1C30180D, // 0029 EQ R12 R12 R13 + 0x78320008, // 002A JMPF R12 #0034 + 0xB8320000, // 002B GETNGBL R12 K0 + 0x88301910, // 002C GETMBR R12 R12 K16 + 0x90121E0C, // 002D SETMBR R4 K15 R12 + 0x8C300111, // 002E GETMET R12 R0 K17 + 0x5C380C00, // 002F MOVE R14 R6 + 0x5C3C0800, // 0030 MOVE R15 R4 + 0x4C400000, // 0031 LDNIL R16 + 0x7C300800, // 0032 CALL R12 4 + 0x7001FFE7, // 0033 JMP #001C + 0x88301512, // 0034 GETMBR R12 R10 K18 + 0x4C340000, // 0035 LDNIL R13 + 0x1C30180D, // 0036 EQ R12 R12 R13 + 0x78320016, // 0037 JMPF R12 #004F + 0xB8322600, // 0038 GETNGBL R12 K19 + 0x8C301914, // 0039 GETMET R12 R12 K20 + 0x58380015, // 003A LDCONST R14 K21 + 0x7C300400, // 003B CALL R12 2 + 0x78320011, // 003C JMPF R12 #004F + 0xB8320000, // 003D GETNGBL R12 K0 + 0x8C301916, // 003E GETMET R12 R12 K22 + 0x8838150D, // 003F GETMBR R14 R10 K13 + 0x883C150E, // 0040 GETMBR R15 R10 K14 + 0x7C300600, // 0041 CALL R12 3 + 0xB8362E00, // 0042 GETNGBL R13 K23 + 0x60380008, // 0043 GETGBL R14 G8 + 0x5C3C0800, // 0044 MOVE R15 R4 + 0x7C380200, // 0045 CALL R14 1 + 0x003A300E, // 0046 ADD R14 K24 R14 + 0x78320002, // 0047 JMPF R12 #004B + 0x003E320C, // 0048 ADD R15 K25 R12 + 0x003C1F1A, // 0049 ADD R15 R15 K26 + 0x70020000, // 004A JMP #004C + 0x583C001B, // 004B LDCONST R15 K27 + 0x00381C0F, // 004C ADD R14 R14 R15 + 0x583C0015, // 004D LDCONST R15 K21 + 0x7C340400, // 004E CALL R13 2 + 0x8C300F1C, // 004F GETMET R12 R7 K28 + 0x88381512, // 0050 GETMBR R14 R10 K18 + 0x883C150D, // 0051 GETMBR R15 R10 K13 + 0x8840150E, // 0052 GETMBR R16 R10 K14 + 0x7C300800, // 0053 CALL R12 4 + 0x8C300F1D, // 0054 GETMET R12 R7 K29 + 0x7C300200, // 0055 CALL R12 1 + 0x4C340000, // 0056 LDNIL R13 + 0x8C380F1E, // 0057 GETMET R14 R7 K30 + 0x7C380200, // 0058 CALL R14 1 + 0x5C341C00, // 0059 MOVE R13 R14 + 0x783A0025, // 005A JMPF R14 #0081 + 0x90363E01, // 005B SETMBR R13 K31 R1 + 0x88381B0F, // 005C GETMBR R14 R13 K15 + 0x4C3C0000, // 005D LDNIL R15 + 0x20381C0F, // 005E NE R14 R14 R15 + 0x783A0007, // 005F JMPF R14 #0068 + 0x4C380000, // 0060 LDNIL R14 + 0x90361E0E, // 0061 SETMBR R13 K15 R14 + 0x8C380111, // 0062 GETMET R14 R0 K17 + 0x5C400C00, // 0063 MOVE R16 R6 + 0x5C441A00, // 0064 MOVE R17 R13 + 0x5C481600, // 0065 MOVE R18 R11 + 0x7C380800, // 0066 CALL R14 4 + 0x70020017, // 0067 JMP #0080 + 0x8C380F20, // 0068 GETMET R14 R7 K32 + 0x7C380200, // 0069 CALL R14 1 + 0xB83E0000, // 006A GETNGBL R15 K0 + 0x883C1F21, // 006B GETMBR R15 R15 K33 + 0x90361E0F, // 006C SETMBR R13 K15 R15 + 0x4C3C0000, // 006D LDNIL R15 + 0x203C1C0F, // 006E NE R15 R14 R15 + 0x783E0005, // 006F JMPF R15 #0076 + 0x8C3C1D22, // 0070 GETMET R15 R14 K34 + 0x88440323, // 0071 GETMBR R17 R1 K35 + 0x5C481A00, // 0072 MOVE R18 R13 + 0x5C4C1600, // 0073 MOVE R19 R11 + 0x7C3C0800, // 0074 CALL R15 4 + 0x70020000, // 0075 JMP #0077 + 0x4C3C0000, // 0076 LDNIL R15 + 0x783E0002, // 0077 JMPF R15 #007B + 0xB8420000, // 0078 GETNGBL R16 K0 + 0x88402124, // 0079 GETMBR R16 R16 K36 + 0x90361E10, // 007A SETMBR R13 K15 R16 + 0x8C400111, // 007B GETMET R16 R0 K17 + 0x5C480C00, // 007C MOVE R18 R6 + 0x5C4C1A00, // 007D MOVE R19 R13 + 0x5C501600, // 007E MOVE R20 R11 + 0x7C400800, // 007F CALL R16 4 + 0x7001FFD5, // 0080 JMP #0057 + 0x7001FF99, // 0081 JMP #001C + 0x58200025, // 0082 LDCONST R8 K37 + 0xAC200200, // 0083 CATCH R8 1 0 + 0xB0080000, // 0084 RAISE 2 R0 R0 + 0x5C200A00, // 0085 MOVE R8 R5 + 0x74220007, // 0086 JMPT R8 #008F + 0x88200126, // 0087 GETMBR R8 R0 K38 + 0x8C201127, // 0088 GETMET R8 R8 K39 + 0xB82A0000, // 0089 GETNGBL R10 K0 + 0x8C281528, // 008A GETMET R10 R10 K40 + 0x5C300200, // 008B MOVE R12 R1 + 0x5C340C00, // 008C MOVE R13 R6 + 0x7C280600, // 008D CALL R10 3 + 0x7C200400, // 008E CALL R8 2 + 0x50180200, // 008F LDBOOL R6 1 0 + 0x80040C00, // 0090 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: process_read_request_solo ********************************************************************/ @@ -3136,53 +2163,112 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ /******************************************************************** -** Solidified function: process_read_request_pull +** Solidified function: send_subscribe_update ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ +be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ be_nested_proto( - 9, /* nstack */ - 3, /* argc */ + 13, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 8]) { /* 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_pull), - /* K4 */ be_nested_str_weak(ReadRequestMessage), - /* K5 */ be_nested_str_weak(from_TLV), - /* K6 */ be_nested_str_weak(process_read_or_subscribe_request_pull), - /* K7 */ be_nested_str_weak(send_report_data_pull), + ( &(const bvalue[24]) { /* 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(log), + /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), + /* K14 */ be_nested_str_weak(local_session_id), + /* K15 */ be_nested_str_weak(subscription_id), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(is_keep_alive), + /* K18 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K19 */ be_nested_str_weak(update_event_generator_array), + /* K20 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull), + /* K21 */ be_nested_str_weak(_message_handler), + /* K22 */ be_nested_str_weak(send_queue), + /* K23 */ be_nested_str_weak(send_enqueued), }), - be_str_weak(process_read_request_pull), + be_str_weak(send_subscribe_update), &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 + ( &(const binstruction[64]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0xB80E0200, // 0001 GETNGBL 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 - 0x8C100106, // 000B GETMET R4 R0 K6 - 0x5C180600, // 000C MOVE R6 R3 - 0x5C1C0200, // 000D MOVE R7 R1 - 0x7C100600, // 000E CALL R4 3 - 0x8C140107, // 000F GETMET R5 R0 K7 - 0x5C1C0200, // 0010 MOVE R7 R1 - 0x5C200800, // 0011 MOVE R8 R4 - 0x7C140600, // 0012 CALL R5 3 - 0x50140200, // 0013 LDBOOL R5 1 0 - 0x80040A00, // 0014 RET 1 R5 + 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 + 0x60140018, // 0021 GETGBL R5 G24 + 0x5818000D, // 0022 LDCONST R6 K13 + 0x881C050E, // 0023 GETMBR R7 R2 K14 + 0x8820030F, // 0024 GETMBR R8 R1 K15 + 0x7C140600, // 0025 CALL R5 3 + 0x58180010, // 0026 LDCONST R6 K16 + 0x7C100400, // 0027 CALL R4 2 + 0x50100000, // 0028 LDBOOL R4 0 0 + 0x90062204, // 0029 SETMBR R1 K17 R4 + 0x8C100112, // 002A GETMET R4 R0 K18 + 0x5C180600, // 002B MOVE R6 R3 + 0x4C1C0000, // 002C LDNIL R7 + 0x7C100600, // 002D CALL R4 3 + 0x8C140313, // 002E GETMET R5 R1 K19 + 0x7C140200, // 002F CALL R5 1 + 0xB81A0200, // 0030 GETNGBL R6 K1 + 0x8C180D14, // 0031 GETMET R6 R6 K20 + 0x88200515, // 0032 GETMBR R8 R2 K21 + 0x5C240400, // 0033 MOVE R9 R2 + 0x5C280800, // 0034 MOVE R10 R4 + 0x5C2C0A00, // 0035 MOVE R11 R5 + 0x5C300200, // 0036 MOVE R12 R1 + 0x7C180C00, // 0037 CALL R6 6 + 0x881C0116, // 0038 GETMBR R7 R0 K22 + 0x8C1C0F0A, // 0039 GETMET R7 R7 K10 + 0x5C240C00, // 003A MOVE R9 R6 + 0x7C1C0400, // 003B CALL R7 2 + 0x8C1C0117, // 003C GETMET R7 R0 K23 + 0x88240515, // 003D GETMBR R9 R2 K21 + 0x7C1C0400, // 003E CALL R7 2 + 0x80000000, // 003F RET 0 }) ) ); @@ -3190,10 +2276,521 @@ be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ /******************************************************************** -** Solidified function: invokeresponse2raw +** Solidified function: send_subscribe_heartbeat ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ +be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(loglevel), + /* K3 */ be_const_int(3), + /* K4 */ be_nested_str_weak(log), + /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s), + /* K6 */ be_nested_str_weak(local_session_id), + /* K7 */ be_nested_str_weak(subscription_id), + /* K8 */ be_nested_str_weak(is_keep_alive), + /* K9 */ be_nested_str_weak(send_queue), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(matter), + /* K12 */ be_nested_str_weak(IM_SubscribedHeartbeat), + /* K13 */ be_nested_str_weak(_message_handler), + /* K14 */ be_nested_str_weak(send_enqueued), + }), + be_str_weak(send_subscribe_heartbeat), + &be_const_str_solidified, + ( &(const binstruction[29]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0xB80E0200, // 0001 GETNGBL R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x58140003, // 0003 LDCONST R5 K3 + 0x7C0C0400, // 0004 CALL R3 2 + 0x780E0007, // 0005 JMPF R3 #000E + 0xB80E0800, // 0006 GETNGBL R3 K4 + 0x60100018, // 0007 GETGBL R4 G24 + 0x58140005, // 0008 LDCONST R5 K5 + 0x88180506, // 0009 GETMBR R6 R2 K6 + 0x881C0307, // 000A GETMBR R7 R1 K7 + 0x7C100600, // 000B CALL R4 3 + 0x58140003, // 000C LDCONST R5 K3 + 0x7C0C0400, // 000D CALL R3 2 + 0x500C0200, // 000E LDBOOL R3 1 0 + 0x90061003, // 000F SETMBR R1 K8 R3 + 0x880C0109, // 0010 GETMBR R3 R0 K9 + 0x8C0C070A, // 0011 GETMET R3 R3 K10 + 0xB8161600, // 0012 GETNGBL R5 K11 + 0x8C140B0C, // 0013 GETMET R5 R5 K12 + 0x881C050D, // 0014 GETMBR R7 R2 K13 + 0x5C200400, // 0015 MOVE R8 R2 + 0x5C240200, // 0016 MOVE R9 R1 + 0x7C140800, // 0017 CALL R5 4 + 0x7C0C0400, // 0018 CALL R3 2 + 0x8C0C010E, // 0019 GETMET R3 R0 K14 + 0x8814050D, // 001A GETMBR R5 R2 K13 + 0x7C0C0400, // 001B CALL R3 2 + 0x80000000, // 001C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_50ms +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_every_50ms, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(subs_shop), + /* K1 */ be_nested_str_weak(every_50ms), + }), + be_str_weak(every_50ms), + &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: process_write_response +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_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 */ + &be_class_Matter_IM, + 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: init +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(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(init), + &be_const_str_solidified, + ( &(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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_ack_now +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_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 */ + &be_class_Matter_IM, + 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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_single_attribute_to_bytes +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ + be_nested_proto( + 21, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(loglevel), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(get_attribute_name), + /* K6 */ be_nested_str_weak(cluster), + /* K7 */ be_nested_str_weak(attribute), + /* K8 */ be_nested_str_weak(_X20_X28), + /* K9 */ be_nested_str_weak(_X29), + /* K10 */ be_nested_str_weak(), + /* K11 */ be_nested_str_weak(status), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(tlv_solo), + /* K14 */ be_nested_str_weak(to_str_val), + /* K15 */ be_nested_str_weak(is_list), + /* K16 */ be_nested_str_weak(is_array), + /* K17 */ be_nested_str_weak(encode_len), + /* K18 */ be_nested_str_weak(IM_ReportData_Pull), + /* K19 */ be_nested_str_weak(MAX_MESSAGE), + /* K20 */ be_nested_str_weak(Matter_TLV_array), + /* K21 */ be_nested_str_weak(attributedata2raw), + /* K22 */ be_nested_str_weak(push), + /* K23 */ be_nested_str_weak(val), + /* K24 */ be_nested_str_weak(stop_iteration), + /* K25 */ be_nested_str_weak(log), + /* K26 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K27 */ be_nested_str_weak(local_session_id), + /* K28 */ be_nested_str_weak(attributestatus2raw), + /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K30 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + }), + be_str_weak(read_single_attribute_to_bytes), + &be_const_str_solidified, + ( &(const binstruction[165]) { /* code */ + 0xB8160000, // 0000 GETNGBL R5 K0 + 0x88140B01, // 0001 GETMBR R5 R5 K1 + 0x4C180000, // 0002 LDNIL R6 + 0xB81E0400, // 0003 GETNGBL R7 K2 + 0x8C1C0F03, // 0004 GETMET R7 R7 K3 + 0x58240004, // 0005 LDCONST R9 K4 + 0x7C1C0400, // 0006 CALL R7 2 + 0x781E000B, // 0007 JMPF R7 #0014 + 0xB81E0000, // 0008 GETNGBL R7 K0 + 0x8C1C0F05, // 0009 GETMET R7 R7 K5 + 0x88240506, // 000A GETMBR R9 R2 K6 + 0x88280507, // 000B GETMBR R10 R2 K7 + 0x7C1C0600, // 000C CALL R7 3 + 0x5C180E00, // 000D MOVE R6 R7 + 0x781A0002, // 000E JMPF R6 #0012 + 0x001E1006, // 000F ADD R7 K8 R6 + 0x001C0F09, // 0010 ADD R7 R7 K9 + 0x70020000, // 0011 JMP #0013 + 0x581C000A, // 0012 LDCONST R7 K10 + 0x5C180E00, // 0013 MOVE R6 R7 + 0x881C050B, // 0014 GETMBR R7 R2 K11 + 0x4C200000, // 0015 LDNIL R8 + 0x201C0E08, // 0016 NE R7 R7 R8 + 0x4C200000, // 0017 LDNIL R8 + 0x4C240000, // 0018 LDNIL R9 + 0x4C280000, // 0019 LDNIL R10 + 0x2028020A, // 001A NE R10 R1 R10 + 0x782A0005, // 001B JMPF R10 #0022 + 0x8C28030C, // 001C GETMET R10 R1 K12 + 0x5C300600, // 001D MOVE R12 R3 + 0x5C340400, // 001E MOVE R13 R2 + 0x8838010D, // 001F GETMBR R14 R0 K13 + 0x7C280800, // 0020 CALL R10 4 + 0x5C201400, // 0021 MOVE R8 R10 + 0x4C280000, // 0022 LDNIL R10 + 0x2028100A, // 0023 NE R10 R8 R10 + 0x782A0057, // 0024 JMPF R10 #007D + 0x5828000A, // 0025 LDCONST R10 K10 + 0xB82E0400, // 0026 GETNGBL R11 K2 + 0x8C2C1703, // 0027 GETMET R11 R11 K3 + 0x58340004, // 0028 LDCONST R13 K4 + 0x7C2C0400, // 0029 CALL R11 2 + 0x782E0003, // 002A JMPF R11 #002F + 0x78120002, // 002B JMPF R4 #002F + 0x8C2C110E, // 002C GETMET R11 R8 K14 + 0x7C2C0200, // 002D CALL R11 1 + 0x5C281600, // 002E MOVE R10 R11 + 0x882C110F, // 002F GETMBR R11 R8 K15 + 0x742E0001, // 0030 JMPT R11 #0033 + 0x882C1110, // 0031 GETMBR R11 R8 K16 + 0x782E002F, // 0032 JMPF R11 #0063 + 0x8C2C1111, // 0033 GETMET R11 R8 K17 + 0x7C2C0200, // 0034 CALL R11 1 + 0xB8320000, // 0035 GETNGBL R12 K0 + 0x88301912, // 0036 GETMBR R12 R12 K18 + 0x88301913, // 0037 GETMBR R12 R12 K19 + 0x242C160C, // 0038 GT R11 R11 R12 + 0x782E0028, // 0039 JMPF R11 #0063 + 0x602C0012, // 003A GETGBL R11 G18 + 0x7C2C0000, // 003B CALL R11 0 + 0x5C241600, // 003C MOVE R9 R11 + 0x602C0015, // 003D GETGBL R11 G21 + 0x5432002F, // 003E LDINT R12 48 + 0x7C2C0200, // 003F CALL R11 1 + 0x8C300B14, // 0040 GETMET R12 R5 K20 + 0x7C300200, // 0041 CALL R12 1 + 0x8C340115, // 0042 GETMET R13 R0 K21 + 0x5C3C1600, // 0043 MOVE R15 R11 + 0x5C400400, // 0044 MOVE R16 R2 + 0x5C441800, // 0045 MOVE R17 R12 + 0x50480000, // 0046 LDBOOL R18 0 0 + 0x7C340A00, // 0047 CALL R13 5 + 0x8C341316, // 0048 GETMET R13 R9 K22 + 0x5C3C1600, // 0049 MOVE R15 R11 + 0x7C340400, // 004A CALL R13 2 + 0x60340010, // 004B GETGBL R13 G16 + 0x88381117, // 004C GETMBR R14 R8 K23 + 0x7C340200, // 004D CALL R13 1 + 0xA802000F, // 004E EXBLK 0 #005F + 0x5C381A00, // 004F MOVE R14 R13 + 0x7C380000, // 0050 CALL R14 0 + 0x603C0015, // 0051 GETGBL R15 G21 + 0x5442002F, // 0052 LDINT R16 48 + 0x7C3C0200, // 0053 CALL R15 1 + 0x5C2C1E00, // 0054 MOVE R11 R15 + 0x8C3C0115, // 0055 GETMET R15 R0 K21 + 0x5C441600, // 0056 MOVE R17 R11 + 0x5C480400, // 0057 MOVE R18 R2 + 0x5C4C1C00, // 0058 MOVE R19 R14 + 0x50500200, // 0059 LDBOOL R20 1 0 + 0x7C3C0A00, // 005A CALL R15 5 + 0x8C3C1316, // 005B GETMET R15 R9 K22 + 0x5C441600, // 005C MOVE R17 R11 + 0x7C3C0400, // 005D CALL R15 2 + 0x7001FFEF, // 005E JMP #004F + 0x58340018, // 005F LDCONST R13 K24 + 0xAC340200, // 0060 CATCH R13 1 0 + 0xB0080000, // 0061 RAISE 2 R0 R0 + 0x70020008, // 0062 JMP #006C + 0x602C0015, // 0063 GETGBL R11 G21 + 0x5432002F, // 0064 LDINT R12 48 + 0x7C2C0200, // 0065 CALL R11 1 + 0x5C241600, // 0066 MOVE R9 R11 + 0x8C2C0115, // 0067 GETMET R11 R0 K21 + 0x5C341200, // 0068 MOVE R13 R9 + 0x5C380400, // 0069 MOVE R14 R2 + 0x5C3C1000, // 006A MOVE R15 R8 + 0x7C2C0800, // 006B CALL R11 4 + 0xB82E0400, // 006C GETNGBL R11 K2 + 0x8C2C1703, // 006D GETMET R11 R11 K3 + 0x58340004, // 006E LDCONST R13 K4 + 0x7C2C0400, // 006F CALL R11 2 + 0x782E000A, // 0070 JMPF R11 #007C + 0x78120009, // 0071 JMPF R4 #007C + 0xB82E3200, // 0072 GETNGBL R11 K25 + 0x60300018, // 0073 GETGBL R12 G24 + 0x5834001A, // 0074 LDCONST R13 K26 + 0x8838071B, // 0075 GETMBR R14 R3 K27 + 0x5C3C0400, // 0076 MOVE R15 R2 + 0x5C400C00, // 0077 MOVE R16 R6 + 0x5C441400, // 0078 MOVE R17 R10 + 0x7C300A00, // 0079 CALL R12 5 + 0x58340004, // 007A LDCONST R13 K4 + 0x7C2C0400, // 007B CALL R11 2 + 0x70020026, // 007C JMP #00A4 + 0x8828050B, // 007D GETMBR R10 R2 K11 + 0x4C2C0000, // 007E LDNIL R11 + 0x2028140B, // 007F NE R10 R10 R11 + 0x782A0022, // 0080 JMPF R10 #00A4 + 0x781E0021, // 0081 JMPF R7 #00A4 + 0x60280015, // 0082 GETGBL R10 G21 + 0x542E002F, // 0083 LDINT R11 48 + 0x7C280200, // 0084 CALL R10 1 + 0x5C241400, // 0085 MOVE R9 R10 + 0x8C28011C, // 0086 GETMET R10 R0 K28 + 0x5C301200, // 0087 MOVE R12 R9 + 0x5C340400, // 0088 MOVE R13 R2 + 0x8838050B, // 0089 GETMBR R14 R2 K11 + 0x7C280800, // 008A CALL R10 4 + 0xB82A0400, // 008B GETNGBL R10 K2 + 0x8C281503, // 008C GETMET R10 R10 K3 + 0x58300004, // 008D LDCONST R12 K4 + 0x7C280400, // 008E CALL R10 2 + 0x782A0013, // 008F JMPF R10 #00A4 + 0xB82A3200, // 0090 GETNGBL R10 K25 + 0x602C0018, // 0091 GETGBL R11 G24 + 0x5830001D, // 0092 LDCONST R12 K29 + 0x8834071B, // 0093 GETMBR R13 R3 K27 + 0x60380008, // 0094 GETGBL R14 G8 + 0x5C3C0400, // 0095 MOVE R15 R2 + 0x7C380200, // 0096 CALL R14 1 + 0x5C3C0C00, // 0097 MOVE R15 R6 + 0x8840050B, // 0098 GETMBR R16 R2 K11 + 0x8844050B, // 0099 GETMBR R17 R2 K11 + 0xB84A0000, // 009A GETNGBL R18 K0 + 0x8848251E, // 009B GETMBR R18 R18 K30 + 0x1C442212, // 009C EQ R17 R17 R18 + 0x78460001, // 009D JMPF R17 #00A0 + 0x5844001E, // 009E LDCONST R17 K30 + 0x70020000, // 009F JMP #00A1 + 0x5844000A, // 00A0 LDCONST R17 K10 + 0x7C2C0C00, // 00A1 CALL R11 6 + 0x58300004, // 00A2 LDCONST R12 K4 + 0x7C280400, // 00A3 CALL R10 2 + 0x80041200, // 00A4 RET 1 R9 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attributedata2raw +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_attributedata2raw, /* name */ + be_nested_proto( + 11, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 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[23]) { /* code */ + 0x8C140300, // 0000 GETMET R5 R1 K0 + 0x581C0001, // 0001 LDCONST R7 K1 + 0x5421FFFB, // 0002 LDINT R8 -4 + 0x7C140600, // 0003 CALL R5 3 + 0x8C140300, // 0004 GETMET R5 R1 K0 + 0x581C0002, // 0005 LDCONST R7 K2 + 0x5421FFFD, // 0006 LDINT R8 -2 + 0x7C140600, // 0007 CALL R5 3 + 0x8C140103, // 0008 GETMET R5 R0 K3 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x5C200400, // 000A MOVE R8 R2 + 0x58240002, // 000B LDCONST R9 K2 + 0x5C280800, // 000C MOVE R10 R4 + 0x7C140A00, // 000D CALL R5 5 + 0x900E0905, // 000E SETMBR R3 K4 K5 + 0x8C140706, // 000F GETMET R5 R3 K6 + 0x5C1C0200, // 0010 MOVE R7 R1 + 0x7C140400, // 0011 CALL R5 2 + 0x8C140300, // 0012 GETMET R5 R1 K0 + 0x541E1817, // 0013 LDINT R7 6168 + 0x5421FFFD, // 0014 LDINT R8 -2 + 0x7C140600, // 0015 CALL R5 3 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attributestatus2raw +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_attributestatus2raw, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ @@ -3203,170 +2800,64 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ + ( &(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(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), + /* 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(invokeresponse2raw), + be_str_weak(attributestatus2raw), &be_const_str_solidified, - ( &(const binstruction[148]) { /* code */ + ( &(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 - 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 + 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 }) ) ); @@ -3374,10 +2865,144 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ /******************************************************************** -** Solidified function: send_invoke_response +** Solidified function: process_status_response ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_invoke_response, /* name */ +be_local_closure(class_Matter_IM_process_status_response, /* name */ + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[15]) { /* 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(log), + /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), + /* K9 */ be_nested_str_weak(session), + /* K10 */ be_nested_str_weak(local_session_id), + /* K11 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), + /* K12 */ be_const_int(3), + /* K13 */ be_nested_str_weak(status_error_received), + /* K14 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + }), + be_str_weak(process_status_response), + &be_const_str_solidified, + ( &(const binstruction[43]) { /* 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 + 0x7816000F, // 000A JMPF R5 #001B + 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 + 0x70020008, // 0010 JMP #001A + 0xB8160E00, // 0011 GETNGBL R5 K7 + 0x60180018, // 0012 GETGBL R6 G24 + 0x581C0008, // 0013 LDCONST R7 K8 + 0x88200309, // 0014 GETMBR R8 R1 K9 + 0x8820110A, // 0015 GETMBR R8 R8 K10 + 0x88240303, // 0016 GETMBR R9 R1 K3 + 0x7C180600, // 0017 CALL R6 3 + 0x541E0003, // 0018 LDINT R7 4 + 0x7C140400, // 0019 CALL R5 2 + 0x7002000D, // 001A JMP #0029 + 0xB8160E00, // 001B GETNGBL R5 K7 + 0x60180018, // 001C GETGBL R6 G24 + 0x581C000B, // 001D LDCONST R7 K11 + 0x5C200600, // 001E MOVE R8 R3 + 0x7C180400, // 001F CALL R6 2 + 0x581C000C, // 0020 LDCONST R7 K12 + 0x7C140400, // 0021 CALL R5 2 + 0x78120005, // 0022 JMPF R4 #0029 + 0x8C14090D, // 0023 GETMET R5 R4 K13 + 0x5C1C0200, // 0024 MOVE R7 R1 + 0x7C140400, // 0025 CALL R5 2 + 0x8C14010E, // 0026 GETMET R5 R0 K14 + 0x881C0303, // 0027 GETMBR R7 R1 K3 + 0x7C140400, // 0028 CALL R5 2 + 0x50140000, // 0029 LDBOOL R5 0 0 + 0x80040A00, // 002A RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_sendqueue_by_exchangeid +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_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 */ + &be_class_Matter_IM, + 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: send_status +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_send_status, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ @@ -3391,9 +3016,9 @@ be_local_closure(class_Matter_IM_send_invoke_response, /* 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_InvokeResponse), + /* K3 */ be_nested_str_weak(IM_Status), }), - be_str_weak(send_invoke_response), + be_str_weak(send_status), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x880C0100, // 0000 GETMBR R3 R0 K0 @@ -3412,10 +3037,264 @@ be_local_closure(class_Matter_IM_send_invoke_response, /* name */ /******************************************************************** -** Solidified function: every_250ms +** Solidified function: process_timed_request ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_every_250ms, /* name */ +be_local_closure(class_Matter_IM_process_timed_request, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[11]) { /* 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(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), + /* K5 */ be_nested_str_weak(session), + /* K6 */ be_nested_str_weak(local_session_id), + /* K7 */ be_nested_str_weak(timeout), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(send_status), + /* K10 */ be_nested_str_weak(SUCCESS), + }), + be_str_weak(process_timed_request), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* 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 + 0x60140018, // 0007 GETGBL R5 G24 + 0x58180004, // 0008 LDCONST R6 K4 + 0x881C0305, // 0009 GETMBR R7 R1 K5 + 0x881C0F06, // 000A GETMBR R7 R7 K6 + 0x88200707, // 000B GETMBR R8 R3 K7 + 0x7C140600, // 000C CALL R5 3 + 0x58180008, // 000D LDCONST R6 K8 + 0x7C100400, // 000E CALL R4 2 + 0x8C100109, // 000F GETMET R4 R0 K9 + 0x5C180200, // 0010 MOVE R6 R1 + 0xB81E0000, // 0011 GETNGBL R7 K0 + 0x881C0F0A, // 0012 GETMBR R7 R7 K10 + 0x7C100600, // 0013 CALL R4 3 + 0x50100200, // 0014 LDBOOL R4 1 0 + 0x80040800, // 0015 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_read_or_subscribe_request_event_pull +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, /* name */ + be_nested_proto( + 24, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(event_requests), + /* K1 */ be_nested_str_weak(get_node_id), + /* K2 */ be_const_int(0), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(parse_event_filters_min_no), + /* K5 */ be_nested_str_weak(event_filters), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(EventGenerator), + /* K8 */ be_nested_str_weak(device), + /* K9 */ be_nested_str_weak(start), + /* K10 */ be_nested_str_weak(endpoint), + /* K11 */ be_nested_str_weak(cluster), + /* K12 */ be_nested_str_weak(event), + /* K13 */ be_nested_str_weak(push), + /* K14 */ be_nested_str_weak(tasmota), + /* K15 */ be_nested_str_weak(loglevel), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(), + /* K18 */ be_nested_str_weak(get_event_name), + /* K19 */ be_nested_str_weak(_X28), + /* K20 */ be_nested_str_weak(_X29_X20), + /* K21 */ be_nested_str_weak(_X2502X), + /* K22 */ be_nested_str_weak(_X2A_X2A), + /* K23 */ be_nested_str_weak(_X2504X), + /* K24 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), + /* K25 */ be_nested_str_weak(_X20_X28_X3E_X25s_X29), + /* K26 */ be_nested_str_weak(log), + /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X29_X20_X5B_X25s_X5D_X25s_X2F_X25s_X20_X25s_X25s), + /* K28 */ be_nested_str_weak(session), + /* K29 */ be_nested_str_weak(local_session_id), + /* K30 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(process_read_or_subscribe_request_event_pull), + &be_const_str_solidified, + ( &(const binstruction[140]) { /* code */ + 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x200C0604, // 0002 NE R3 R3 R4 + 0x780E0085, // 0003 JMPF R3 #008A + 0x4C0C0000, // 0004 LDNIL R3 + 0x4C100000, // 0005 LDNIL R4 + 0x20100404, // 0006 NE R4 R2 R4 + 0x78120002, // 0007 JMPF R4 #000B + 0x8C100501, // 0008 GETMET R4 R2 K1 + 0x7C100200, // 0009 CALL R4 1 + 0x70020000, // 000A JMP #000C + 0x4C100000, // 000B LDNIL R4 + 0x88140300, // 000C GETMBR R5 R1 K0 + 0x78160003, // 000D JMPF R5 #0012 + 0x6014000C, // 000E GETGBL R5 G12 + 0x88180300, // 000F GETMBR R6 R1 K0 + 0x7C140200, // 0010 CALL R5 1 + 0x70020000, // 0011 JMP #0013 + 0x58140002, // 0012 LDCONST R5 K2 + 0x24180B03, // 0013 GT R6 R5 K3 + 0x781A0002, // 0014 JMPF R6 #0018 + 0x60180012, // 0015 GETGBL R6 G18 + 0x7C180000, // 0016 CALL R6 0 + 0x5C0C0C00, // 0017 MOVE R3 R6 + 0x8C180104, // 0018 GETMET R6 R0 K4 + 0x88200305, // 0019 GETMBR R8 R1 K5 + 0x5C240800, // 001A MOVE R9 R4 + 0x7C180600, // 001B CALL R6 3 + 0x881C0300, // 001C GETMBR R7 R1 K0 + 0x781E006A, // 001D JMPF R7 #0089 + 0x601C0010, // 001E GETGBL R7 G16 + 0x88200300, // 001F GETMBR R8 R1 K0 + 0x7C1C0200, // 0020 CALL R7 1 + 0xA8020063, // 0021 EXBLK 0 #0086 + 0x5C200E00, // 0022 MOVE R8 R7 + 0x7C200000, // 0023 CALL R8 0 + 0xB8260C00, // 0024 GETNGBL R9 K6 + 0x8C241307, // 0025 GETMET R9 R9 K7 + 0x882C0108, // 0026 GETMBR R11 R0 K8 + 0x7C240400, // 0027 CALL R9 2 + 0x8C281309, // 0028 GETMET R10 R9 K9 + 0x8830110A, // 0029 GETMBR R12 R8 K10 + 0x8834110B, // 002A GETMBR R13 R8 K11 + 0x8838110C, // 002B GETMBR R14 R8 K12 + 0x5C3C0C00, // 002C MOVE R15 R6 + 0x7C280A00, // 002D CALL R10 5 + 0x24280B03, // 002E GT R10 R5 K3 + 0x782A0003, // 002F JMPF R10 #0034 + 0x8C28070D, // 0030 GETMET R10 R3 K13 + 0x5C301200, // 0031 MOVE R12 R9 + 0x7C280400, // 0032 CALL R10 2 + 0x70020000, // 0033 JMP #0035 + 0x5C0C1200, // 0034 MOVE R3 R9 + 0xB82A1C00, // 0035 GETNGBL R10 K14 + 0x8C28150F, // 0036 GETMET R10 R10 K15 + 0x58300010, // 0037 LDCONST R12 K16 + 0x7C280400, // 0038 CALL R10 2 + 0x782A004A, // 0039 JMPF R10 #0085 + 0x58280011, // 003A LDCONST R10 K17 + 0x882C110B, // 003B GETMBR R11 R8 K11 + 0x4C300000, // 003C LDNIL R12 + 0x202C160C, // 003D NE R11 R11 R12 + 0x782E0011, // 003E JMPF R11 #0051 + 0x882C110C, // 003F GETMBR R11 R8 K12 + 0x4C300000, // 0040 LDNIL R12 + 0x202C160C, // 0041 NE R11 R11 R12 + 0x782E000D, // 0042 JMPF R11 #0051 + 0xB82E0C00, // 0043 GETNGBL R11 K6 + 0x8C2C1712, // 0044 GETMET R11 R11 K18 + 0x8834110B, // 0045 GETMBR R13 R8 K11 + 0x8838110C, // 0046 GETMBR R14 R8 K12 + 0x7C2C0600, // 0047 CALL R11 3 + 0x5C281600, // 0048 MOVE R10 R11 + 0x4C2C0000, // 0049 LDNIL R11 + 0x202C140B, // 004A NE R11 R10 R11 + 0x782E0002, // 004B JMPF R11 #004F + 0x002E260A, // 004C ADD R11 K19 R10 + 0x002C1714, // 004D ADD R11 R11 K20 + 0x70020000, // 004E JMP #0050 + 0x582C0011, // 004F LDCONST R11 K17 + 0x5C281600, // 0050 MOVE R10 R11 + 0x882C110A, // 0051 GETMBR R11 R8 K10 + 0x4C300000, // 0052 LDNIL R12 + 0x202C160C, // 0053 NE R11 R11 R12 + 0x782E0004, // 0054 JMPF R11 #005A + 0x602C0018, // 0055 GETGBL R11 G24 + 0x58300015, // 0056 LDCONST R12 K21 + 0x8834110A, // 0057 GETMBR R13 R8 K10 + 0x7C2C0400, // 0058 CALL R11 2 + 0x70020000, // 0059 JMP #005B + 0x582C0016, // 005A LDCONST R11 K22 + 0x8830110B, // 005B GETMBR R12 R8 K11 + 0x4C340000, // 005C LDNIL R13 + 0x2030180D, // 005D NE R12 R12 R13 + 0x78320004, // 005E JMPF R12 #0064 + 0x60300018, // 005F GETGBL R12 G24 + 0x58340017, // 0060 LDCONST R13 K23 + 0x8838110B, // 0061 GETMBR R14 R8 K11 + 0x7C300400, // 0062 CALL R12 2 + 0x70020000, // 0063 JMP #0065 + 0x58300018, // 0064 LDCONST R12 K24 + 0x8834110C, // 0065 GETMBR R13 R8 K12 + 0x4C380000, // 0066 LDNIL R14 + 0x20341A0E, // 0067 NE R13 R13 R14 + 0x78360004, // 0068 JMPF R13 #006E + 0x60340018, // 0069 GETGBL R13 G24 + 0x58380015, // 006A LDCONST R14 K21 + 0x883C110C, // 006B GETMBR R15 R8 K12 + 0x7C340400, // 006C CALL R13 2 + 0x70020000, // 006D JMP #006F + 0x58340016, // 006E LDCONST R13 K22 + 0x4C380000, // 006F LDNIL R14 + 0x20380C0E, // 0070 NE R14 R6 R14 + 0x783A0004, // 0071 JMPF R14 #0077 + 0x60380018, // 0072 GETGBL R14 G24 + 0x583C0019, // 0073 LDCONST R15 K25 + 0x5C400C00, // 0074 MOVE R16 R6 + 0x7C380400, // 0075 CALL R14 2 + 0x70020000, // 0076 JMP #0078 + 0x58380011, // 0077 LDCONST R14 K17 + 0xB83E3400, // 0078 GETNGBL R15 K26 + 0x60400018, // 0079 GETGBL R16 G24 + 0x5844001B, // 007A LDCONST R17 K27 + 0x8848051C, // 007B GETMBR R18 R2 K28 + 0x8848251D, // 007C GETMBR R18 R18 K29 + 0x5C4C1600, // 007D MOVE R19 R11 + 0x5C501800, // 007E MOVE R20 R12 + 0x5C541A00, // 007F MOVE R21 R13 + 0x5C581400, // 0080 MOVE R22 R10 + 0x5C5C1C00, // 0081 MOVE R23 R14 + 0x7C400E00, // 0082 CALL R16 7 + 0x58440010, // 0083 LDCONST R17 K16 + 0x7C3C0400, // 0084 CALL R15 2 + 0x7001FF9B, // 0085 JMP #0022 + 0x581C001E, // 0086 LDCONST R7 K30 + 0xAC1C0200, // 0087 CATCH R7 1 0 + 0xB0080000, // 0088 RAISE 2 R0 R0 + 0x80040600, // 0089 RET 1 R3 + 0x4C0C0000, // 008A LDNIL R3 + 0x80040600, // 008B RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_every_second, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -3425,17 +3304,293 @@ be_local_closure(class_Matter_IM_every_250ms, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(subs_shop), - /* K1 */ be_nested_str_weak(every_250ms), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(expire_sendqueue), }), - be_str_weak(every_250ms), + be_str_weak(every_second), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80000000, // 0003 RET 0 + ( &(const binstruction[ 3]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_sendqueue_by_exchangeid +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(get_exchangeid), + /* K3 */ be_nested_str_weak(remove), + /* K4 */ be_const_int(1), + }), + be_str_weak(remove_sendqueue_by_exchangeid), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x80000400, // 0003 RET 0 + 0x58080000, // 0004 LDCONST R2 K0 + 0x600C000C, // 0005 GETGBL R3 G12 + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x7C0C0200, // 0007 CALL R3 1 + 0x140C0403, // 0008 LT R3 R2 R3 + 0x780E000C, // 0009 JMPF R3 #0017 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x940C0602, // 000B GETIDX R3 R3 R2 + 0x8C0C0702, // 000C GETMET R3 R3 K2 + 0x7C0C0200, // 000D CALL R3 1 + 0x1C0C0601, // 000E EQ R3 R3 R1 + 0x780E0004, // 000F JMPF R3 #0015 + 0x880C0101, // 0010 GETMBR R3 R0 K1 + 0x8C0C0703, // 0011 GETMET R3 R3 K3 + 0x5C140400, // 0012 MOVE R5 R2 + 0x7C0C0400, // 0013 CALL R3 2 + 0x70020000, // 0014 JMP #0016 + 0x00080504, // 0015 ADD R2 R2 K4 + 0x7001FFED, // 0016 JMP #0005 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: path2raw +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_path2raw, /* name */ + be_nested_proto( + 9, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(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(path2raw), + &be_const_str_solidified, + ( &(const binstruction[107]) { /* code */ + 0x8C140300, // 0000 GETMET R5 R1 K0 + 0x541E0036, // 0001 LDINT R7 55 + 0x58200001, // 0002 LDCONST R8 K1 + 0x7C140600, // 0003 CALL R5 3 + 0x8C140300, // 0004 GETMET R5 R1 K0 + 0x5C1C0600, // 0005 MOVE R7 R3 + 0x58200001, // 0006 LDCONST R8 K1 + 0x7C140600, // 0007 CALL R5 3 + 0x88140502, // 0008 GETMBR R5 R2 K2 + 0x541A00FE, // 0009 LDINT R6 255 + 0x18140A06, // 000A LE R5 R5 R6 + 0x78160008, // 000B JMPF R5 #0015 + 0x8C140300, // 000C GETMET R5 R1 K0 + 0x541E2401, // 000D LDINT R7 9218 + 0x5421FFFD, // 000E LDINT R8 -2 + 0x7C140600, // 000F CALL R5 3 + 0x8C140300, // 0010 GETMET R5 R1 K0 + 0x881C0502, // 0011 GETMBR R7 R2 K2 + 0x58200001, // 0012 LDCONST R8 K1 + 0x7C140600, // 0013 CALL R5 3 + 0x70020007, // 0014 JMP #001D + 0x8C140300, // 0015 GETMET R5 R1 K0 + 0x541E2501, // 0016 LDINT R7 9474 + 0x5421FFFD, // 0017 LDINT R8 -2 + 0x7C140600, // 0018 CALL R5 3 + 0x8C140300, // 0019 GETMET R5 R1 K0 + 0x881C0502, // 001A GETMBR R7 R2 K2 + 0x58200003, // 001B LDCONST R8 K3 + 0x7C140600, // 001C CALL R5 3 + 0x88140504, // 001D GETMBR R5 R2 K4 + 0x541A00FE, // 001E LDINT R6 255 + 0x18140A06, // 001F LE R5 R5 R6 + 0x78160008, // 0020 JMPF R5 #002A + 0x8C140300, // 0021 GETMET R5 R1 K0 + 0x541E2402, // 0022 LDINT R7 9219 + 0x5421FFFD, // 0023 LDINT R8 -2 + 0x7C140600, // 0024 CALL R5 3 + 0x8C140300, // 0025 GETMET R5 R1 K0 + 0x881C0504, // 0026 GETMBR R7 R2 K4 + 0x58200001, // 0027 LDCONST R8 K1 + 0x7C140600, // 0028 CALL R5 3 + 0x70020014, // 0029 JMP #003F + 0x88140504, // 002A GETMBR R5 R2 K4 + 0x541AFFFE, // 002B LDINT R6 65535 + 0x18140A06, // 002C LE R5 R5 R6 + 0x78160008, // 002D JMPF R5 #0037 + 0x8C140300, // 002E GETMET R5 R1 K0 + 0x541E2502, // 002F LDINT R7 9475 + 0x5421FFFD, // 0030 LDINT R8 -2 + 0x7C140600, // 0031 CALL R5 3 + 0x8C140300, // 0032 GETMET R5 R1 K0 + 0x881C0504, // 0033 GETMBR R7 R2 K4 + 0x58200003, // 0034 LDCONST R8 K3 + 0x7C140600, // 0035 CALL R5 3 + 0x70020007, // 0036 JMP #003F + 0x8C140300, // 0037 GETMET R5 R1 K0 + 0x541E2602, // 0038 LDINT R7 9731 + 0x5421FFFD, // 0039 LDINT R8 -2 + 0x7C140600, // 003A CALL R5 3 + 0x8C140300, // 003B GETMET R5 R1 K0 + 0x881C0504, // 003C GETMBR R7 R2 K4 + 0x54220003, // 003D LDINT R8 4 + 0x7C140600, // 003E CALL R5 3 + 0x88140505, // 003F GETMBR R5 R2 K5 + 0x541A00FE, // 0040 LDINT R6 255 + 0x18140A06, // 0041 LE R5 R5 R6 + 0x78160008, // 0042 JMPF R5 #004C + 0x8C140300, // 0043 GETMET R5 R1 K0 + 0x541E2403, // 0044 LDINT R7 9220 + 0x5421FFFD, // 0045 LDINT R8 -2 + 0x7C140600, // 0046 CALL R5 3 + 0x8C140300, // 0047 GETMET R5 R1 K0 + 0x881C0505, // 0048 GETMBR R7 R2 K5 + 0x58200001, // 0049 LDCONST R8 K1 + 0x7C140600, // 004A CALL R5 3 + 0x70020014, // 004B JMP #0061 + 0x88140505, // 004C GETMBR R5 R2 K5 + 0x541AFFFE, // 004D LDINT R6 65535 + 0x18140A06, // 004E LE R5 R5 R6 + 0x78160008, // 004F JMPF R5 #0059 + 0x8C140300, // 0050 GETMET R5 R1 K0 + 0x541E2503, // 0051 LDINT R7 9476 + 0x5421FFFD, // 0052 LDINT R8 -2 + 0x7C140600, // 0053 CALL R5 3 + 0x8C140300, // 0054 GETMET R5 R1 K0 + 0x881C0505, // 0055 GETMBR R7 R2 K5 + 0x58200003, // 0056 LDCONST R8 K3 + 0x7C140600, // 0057 CALL R5 3 + 0x70020007, // 0058 JMP #0061 + 0x8C140300, // 0059 GETMET R5 R1 K0 + 0x541E2603, // 005A LDINT R7 9732 + 0x5421FFFD, // 005B LDINT R8 -2 + 0x7C140600, // 005C CALL R5 3 + 0x8C140300, // 005D GETMET R5 R1 K0 + 0x881C0505, // 005E GETMBR R7 R2 K5 + 0x54220003, // 005F LDINT R8 4 + 0x7C140600, // 0060 CALL R5 3 + 0x78120003, // 0061 JMPF R4 #0066 + 0x8C140300, // 0062 GETMET R5 R1 K0 + 0x541E3404, // 0063 LDINT R7 13317 + 0x5421FFFD, // 0064 LDINT R8 -2 + 0x7C140600, // 0065 CALL R5 3 + 0x8C140300, // 0066 GETMET R5 R1 K0 + 0x541E0017, // 0067 LDINT R7 24 + 0x58200001, // 0068 LDCONST R8 K1 + 0x7C140600, // 0069 CALL R5 3 + 0x80000000, // 006A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_event_filters_min_no +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_IM), + /* K1 */ be_nested_str_weak(int64), + /* K2 */ be_nested_str_weak(toint64), + /* K3 */ be_nested_str_weak(node), + /* K4 */ be_nested_str_weak(tobytes), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20node_id_X20filter_X20_X25s_X20doesn_X27t_X20match_X20_X25s), + /* K8 */ be_nested_str_weak(tohex), + /* K9 */ be_nested_str_weak(event_min), + /* K10 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(parse_event_filters_min_no), + &be_const_str_solidified, + ( &(const binstruction[50]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x4C100000, // 0002 LDNIL R4 + 0x20100004, // 0003 NE R4 R0 R4 + 0x7812002B, // 0004 JMPF R4 #0031 + 0x60100010, // 0005 GETGBL R4 G16 + 0x5C140000, // 0006 MOVE R5 R0 + 0x7C100200, // 0007 CALL R4 1 + 0xA8020024, // 0008 EXBLK 0 #002E + 0x5C140800, // 0009 MOVE R5 R4 + 0x7C140000, // 000A CALL R5 0 + 0xB81A0200, // 000B GETNGBL R6 K1 + 0x8C180D02, // 000C GETMET R6 R6 K2 + 0x88200B03, // 000D GETMBR R8 R5 K3 + 0x7C180400, // 000E CALL R6 2 + 0x781A0012, // 000F JMPF R6 #0023 + 0x78060011, // 0010 JMPF R1 #0023 + 0x881C0B03, // 0011 GETMBR R7 R5 K3 + 0x8C1C0F04, // 0012 GETMET R7 R7 K4 + 0x7C1C0200, // 0013 CALL R7 1 + 0x201C0E01, // 0014 NE R7 R7 R1 + 0x781E000C, // 0015 JMPF R7 #0023 + 0xB81E0A00, // 0016 GETNGBL R7 K5 + 0x8C1C0F06, // 0017 GETMET R7 R7 K6 + 0x60240018, // 0018 GETGBL R9 G24 + 0x58280007, // 0019 LDCONST R10 K7 + 0x8C2C0D04, // 001A GETMET R11 R6 K4 + 0x7C2C0200, // 001B CALL R11 1 + 0x8C2C1708, // 001C GETMET R11 R11 K8 + 0x7C2C0200, // 001D CALL R11 1 + 0x8C300308, // 001E GETMET R12 R1 K8 + 0x7C300200, // 001F CALL R12 1 + 0x7C240600, // 0020 CALL R9 3 + 0x7C1C0400, // 0021 CALL R7 2 + 0x7001FFE5, // 0022 JMP #0009 + 0xB81E0200, // 0023 GETNGBL R7 K1 + 0x8C1C0F02, // 0024 GETMET R7 R7 K2 + 0x88240B09, // 0025 GETMBR R9 R5 K9 + 0x7C1C0400, // 0026 CALL R7 2 + 0x4C200000, // 0027 LDNIL R8 + 0x1C200608, // 0028 EQ R8 R3 R8 + 0x74220001, // 0029 JMPT R8 #002C + 0x14200607, // 002A LT R8 R3 R7 + 0x78220000, // 002B JMPF R8 #002D + 0x5C0C0E00, // 002C MOVE R3 R7 + 0x7001FFDA, // 002D JMP #0009 + 0x5810000A, // 002E LDCONST R4 K10 + 0xAC100200, // 002F CATCH R4 1 0 + 0xB0080000, // 0030 RAISE 2 R0 R0 + 0x80040600, // 0031 RET 1 R3 }) ) ); @@ -3448,47 +3603,45 @@ be_local_closure(class_Matter_IM_every_250ms, /* name */ be_local_class(Matter_IM, 6, NULL, - be_nested_map(39, + be_nested_map(37, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(invoke_request_solo, -1), be_const_var(4) }, - { be_const_key_weak(send_subscribe_response_pull, -1), be_const_closure(class_Matter_IM_send_subscribe_response_pull_closure) }, - { be_const_key_weak(every_250ms, 17), be_const_closure(class_Matter_IM_every_250ms_closure) }, - { be_const_key_weak(device, 32), be_const_var(0) }, - { be_const_key_weak(send_subscribe_update, -1), be_const_closure(class_Matter_IM_send_subscribe_update_closure) }, - { be_const_key_weak(read_single_attribute_to_bytes, 14), be_const_closure(class_Matter_IM_read_single_attribute_to_bytes_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_init_closure) }, - { be_const_key_weak(send_status, -1), be_const_closure(class_Matter_IM_send_status_closure) }, - { be_const_key_weak(process_incoming_ack, 12), be_const_closure(class_Matter_IM_process_incoming_ack_closure) }, - { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_IM_every_second_closure) }, - { be_const_key_weak(expire_sendqueue, 37), be_const_closure(class_Matter_IM_expire_sendqueue_closure) }, - { be_const_key_weak(send_write_response, -1), be_const_closure(class_Matter_IM_send_write_response_closure) }, - { be_const_key_weak(send_invoke_response, 13), be_const_closure(class_Matter_IM_send_invoke_response_closure) }, - { be_const_key_weak(invokeresponse2raw, -1), be_const_closure(class_Matter_IM_invokeresponse2raw_closure) }, - { be_const_key_weak(path2raw, -1), be_const_closure(class_Matter_IM_path2raw_closure) }, - { be_const_key_weak(process_status_response, -1), be_const_closure(class_Matter_IM_process_status_response_closure) }, - { be_const_key_weak(process_invoke_request_solo, -1), be_const_closure(class_Matter_IM_process_invoke_request_solo_closure) }, - { be_const_key_weak(process_incoming, 15), be_const_closure(class_Matter_IM_process_incoming_closure) }, - { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_remove_sendqueue_by_exchangeid_closure) }, - { be_const_key_weak(process_read_or_subscribe_request_pull, -1), be_const_closure(class_Matter_IM_process_read_or_subscribe_request_pull_closure) }, - { be_const_key_weak(send_queue, -1), be_const_var(2) }, - { be_const_key_weak(process_write_request, -1), be_const_closure(class_Matter_IM_process_write_request_closure) }, - { be_const_key_weak(process_write_response, -1), be_const_closure(class_Matter_IM_process_write_response_closure) }, - { be_const_key_weak(send_ack_now, -1), be_const_closure(class_Matter_IM_send_ack_now_closure) }, - { be_const_key_weak(find_sendqueue_by_exchangeid, 19), be_const_closure(class_Matter_IM_find_sendqueue_by_exchangeid_closure) }, - { be_const_key_weak(write_single_attribute_status_to_bytes, -1), be_const_closure(class_Matter_IM_write_single_attribute_status_to_bytes_closure) }, - { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(class_Matter_IM_send_subscribe_heartbeat_closure) }, - { be_const_key_weak(attributedata2raw, 28), be_const_closure(class_Matter_IM_attributedata2raw_closure) }, - { be_const_key_weak(attributestatus2raw, -1), be_const_closure(class_Matter_IM_attributestatus2raw_closure) }, - { be_const_key_weak(read_request_solo, -1), be_const_var(3) }, - { be_const_key_weak(process_invoke_request, 21), be_const_closure(class_Matter_IM_process_invoke_request_closure) }, - { be_const_key_weak(send_report_data_pull, -1), be_const_closure(class_Matter_IM_send_report_data_pull_closure) }, - { be_const_key_weak(subs_shop, 36), be_const_var(1) }, - { be_const_key_weak(tlv_solo, 16), be_const_var(5) }, - { be_const_key_weak(process_read_request_solo, -1), be_const_closure(class_Matter_IM_process_read_request_solo_closure) }, - { be_const_key_weak(process_read_request_pull, -1), be_const_closure(class_Matter_IM_process_read_request_pull_closure) }, - { be_const_key_weak(process_timed_request, -1), be_const_closure(class_Matter_IM_process_timed_request_closure) }, + { be_const_key_weak(process_read_request_pull, 32), be_const_closure(class_Matter_IM_process_read_request_pull_closure) }, + { be_const_key_weak(process_incoming_ack, 7), be_const_closure(class_Matter_IM_process_incoming_ack_closure) }, + { be_const_key_weak(process_invoke_request, -1), be_const_closure(class_Matter_IM_process_invoke_request_closure) }, { be_const_key_weak(subscribe_request, -1), be_const_closure(class_Matter_IM_subscribe_request_closure) }, - { be_const_key_weak(send_enqueued, 2), be_const_closure(class_Matter_IM_send_enqueued_closure) }, + { be_const_key_weak(path2raw, 21), be_const_closure(class_Matter_IM_path2raw_closure) }, + { be_const_key_weak(subs_shop, 33), be_const_var(1) }, + { be_const_key_weak(process_read_or_subscribe_request_pull, -1), be_const_closure(class_Matter_IM_process_read_or_subscribe_request_pull_closure) }, + { be_const_key_weak(invoke_request_solo, 11), be_const_var(4) }, + { be_const_key_weak(process_incoming, -1), be_const_closure(class_Matter_IM_process_incoming_closure) }, + { be_const_key_weak(process_invoke_request_solo, -1), be_const_closure(class_Matter_IM_process_invoke_request_solo_closure) }, + { be_const_key_weak(invokeresponse2raw, 34), be_const_closure(class_Matter_IM_invokeresponse2raw_closure) }, + { be_const_key_weak(tlv_solo, -1), be_const_var(5) }, + { be_const_key_weak(send_queue, -1), be_const_var(2) }, + { be_const_key_weak(remove_sendqueue_by_exchangeid, 15), be_const_closure(class_Matter_IM_remove_sendqueue_by_exchangeid_closure) }, + { be_const_key_weak(process_write_request, 26), be_const_closure(class_Matter_IM_process_write_request_closure) }, + { be_const_key_weak(read_single_attribute_to_bytes, -1), be_const_closure(class_Matter_IM_read_single_attribute_to_bytes_closure) }, + { be_const_key_weak(send_subscribe_update, -1), be_const_closure(class_Matter_IM_send_subscribe_update_closure) }, + { be_const_key_weak(device, -1), be_const_var(0) }, + { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(class_Matter_IM_send_subscribe_heartbeat_closure) }, + { be_const_key_weak(every_50ms, 28), be_const_closure(class_Matter_IM_every_50ms_closure) }, + { be_const_key_weak(process_write_response, 27), be_const_closure(class_Matter_IM_process_write_response_closure) }, + { be_const_key_weak(process_read_or_subscribe_request_event_pull, -1), be_const_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull_closure) }, + { be_const_key_weak(send_ack_now, -1), be_const_closure(class_Matter_IM_send_ack_now_closure) }, + { be_const_key_weak(process_read_request_solo, 13), be_const_closure(class_Matter_IM_process_read_request_solo_closure) }, + { be_const_key_weak(attributedata2raw, 4), be_const_closure(class_Matter_IM_attributedata2raw_closure) }, + { be_const_key_weak(write_single_attribute_status_to_bytes, 30), be_const_closure(class_Matter_IM_write_single_attribute_status_to_bytes_closure) }, + { be_const_key_weak(process_status_response, -1), be_const_closure(class_Matter_IM_process_status_response_closure) }, + { be_const_key_weak(send_status, -1), be_const_closure(class_Matter_IM_send_status_closure) }, + { be_const_key_weak(find_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_find_sendqueue_by_exchangeid_closure) }, + { be_const_key_weak(process_timed_request, -1), be_const_closure(class_Matter_IM_process_timed_request_closure) }, + { be_const_key_weak(attributestatus2raw, 35), be_const_closure(class_Matter_IM_attributestatus2raw_closure) }, + { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_IM_every_second_closure) }, + { be_const_key_weak(init, 3), be_const_closure(class_Matter_IM_init_closure) }, + { be_const_key_weak(send_enqueued, -1), be_const_closure(class_Matter_IM_send_enqueued_closure) }, + { be_const_key_weak(expire_sendqueue, -1), be_const_closure(class_Matter_IM_expire_sendqueue_closure) }, + { be_const_key_weak(read_request_solo, -1), be_const_var(3) }, + { be_const_key_weak(parse_event_filters_min_no, -1), be_const_static_closure(class_Matter_IM_parse_event_filters_min_no_closure) }, })), be_str_weak(Matter_IM) ); 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 66be8720b..1ccdc6e0c 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 @@ -575,13 +575,52 @@ be_local_closure(class_Matter_IM_ReportData_Pull_set_subscription_id, /* name /*******************************************************************/ +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_IM_ReportData_Pull; +be_local_closure(class_Matter_IM_ReportData_Pull_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_ReportData_Pull, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(generator_or_arr), + /* K2 */ be_nested_str_weak(event_generator_or_arr), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x541E0004, // 0005 LDINT R7 5 + 0x50200200, // 0006 LDBOOL R8 1 0 + 0x7C100800, // 0007 CALL R4 4 + 0x90020202, // 0008 SETMBR R0 K1 R2 + 0x90020403, // 0009 SETMBR R0 K2 R3 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: send_im ********************************************************************/ extern const bclass be_class_Matter_IM_ReportData_Pull; be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ be_nested_proto( - 15, /* nstack */ + 19, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -589,41 +628,62 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_ReportData_Pull, 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ + ( &(const bvalue[51]) { /* constants */ /* K0 */ be_nested_str_weak(ready), /* K1 */ be_nested_str_weak(resp), /* K2 */ be_nested_str_weak(data), - /* K3 */ be_nested_str_weak(generator_or_arr), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(device), - /* K7 */ be_nested_str_weak(debug), - /* K8 */ be_nested_str_weak(is_direct), - /* K9 */ be_nested_str_weak(im), - /* K10 */ be_nested_str_weak(read_single_attribute_to_bytes), - /* K11 */ be_nested_str_weak(get_pi), - /* K12 */ be_nested_str_weak(session), - /* K13 */ be_nested_str_weak(MAX_MESSAGE), - /* K14 */ be_nested_str_weak(append), - /* K15 */ be_nested_str_weak(remove), - /* K16 */ be_nested_str_weak(matter), - /* K17 */ be_nested_str_weak(ReportDataMessage), - /* K18 */ be_nested_str_weak(subscription_id), - /* K19 */ be_nested_str_weak(suppress_response), - /* K20 */ be_nested_str_weak(attribute_reports), - /* K21 */ be_nested_str_weak(more_chunked_messages), - /* K22 */ be_nested_str_weak(to_TLV), - /* K23 */ be_nested_str_weak(tlv2raw), - /* K24 */ be_nested_str_weak(encode_frame), - /* K25 */ be_nested_str_weak(encrypt), - /* K26 */ be_nested_str_weak(send_response_frame), - /* K27 */ be_nested_str_weak(last_counter), - /* K28 */ be_nested_str_weak(message_counter), - /* K29 */ be_nested_str_weak(finish), + /* K3 */ be_nested_str_weak(device), + /* K4 */ be_nested_str_weak(debug), + /* K5 */ be_nested_str_weak(data_ev), + /* K6 */ be_nested_str_weak(event_generator_or_arr), + /* K7 */ be_nested_str_weak(generator_or_arr), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(next_attribute), + /* K10 */ be_nested_str_weak(is_direct), + /* K11 */ be_nested_str_weak(im), + /* K12 */ be_nested_str_weak(read_single_attribute_to_bytes), + /* K13 */ be_nested_str_weak(get_pi), + /* K14 */ be_nested_str_weak(session), + /* K15 */ be_nested_str_weak(MAX_MESSAGE), + /* K16 */ be_nested_str_weak(append), + /* K17 */ be_nested_str_weak(remove), + /* K18 */ be_nested_str_weak(next_event), + /* K19 */ be_nested_str_weak(tasmota), + /* K20 */ be_nested_str_weak(loglevel), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(), + /* K23 */ be_nested_str_weak(data0), + /* K24 */ be_nested_str_weak(_X20_X2D_X20), + /* K25 */ be_nested_str_weak(data1), + /* K26 */ be_nested_str_weak(_X2C_X20), + /* K27 */ be_nested_str_weak(data2), + /* K28 */ be_nested_str_weak(log), + /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X7C_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X25s), + /* K30 */ be_nested_str_weak(local_session_id), + /* K31 */ be_nested_str_weak(event_no), + /* K32 */ be_nested_str_weak(endpoint), + /* K33 */ be_nested_str_weak(cluster), + /* K34 */ be_nested_str_weak(event_id), + /* K35 */ be_nested_str_weak(to_raw_bytes), + /* K36 */ be_nested_str_weak(matter), + /* K37 */ be_nested_str_weak(ReportDataMessage), + /* K38 */ be_nested_str_weak(subscription_id), + /* K39 */ be_nested_str_weak(suppress_response), + /* K40 */ be_nested_str_weak(attribute_reports), + /* K41 */ be_nested_str_weak(event_reports), + /* K42 */ be_nested_str_weak(more_chunked_messages), + /* K43 */ be_nested_str_weak(to_TLV), + /* K44 */ be_nested_str_weak(tlv2raw), + /* K45 */ be_nested_str_weak(encode_frame), + /* K46 */ be_nested_str_weak(encrypt), + /* K47 */ be_nested_str_weak(send_response_frame), + /* K48 */ be_nested_str_weak(last_counter), + /* K49 */ be_nested_str_weak(message_counter), + /* K50 */ be_nested_str_weak(finish), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[134]) { /* code */ + ( &(const binstruction[311]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0001, // 0001 JMPT R2 #0004 0x50080000, // 0002 LDBOOL R2 0 0 @@ -640,161 +700,301 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ 0x4C100000, // 000D LDNIL R4 0x90020404, // 000E SETMBR R0 K2 R4 0x50100200, // 000F LDBOOL R4 1 0 - 0x7812004C, // 0010 JMPF R4 #005E - 0x88140103, // 0011 GETMBR R5 R0 K3 - 0x4C180000, // 0012 LDNIL R6 - 0x20140A06, // 0013 NE R5 R5 R6 - 0x78160048, // 0014 JMPF R5 #005E - 0x6014000F, // 0015 GETGBL R5 G15 - 0x88180103, // 0016 GETMBR R6 R0 K3 - 0x601C0012, // 0017 GETGBL R7 G18 - 0x7C140400, // 0018 CALL R5 2 - 0x78160002, // 0019 JMPF R5 #001D - 0x88140103, // 001A GETMBR R5 R0 K3 - 0x94140B04, // 001B GETIDX R5 R5 K4 - 0x70020000, // 001C JMP #001E - 0x88140103, // 001D GETMBR R5 R0 K3 - 0x4C180000, // 001E LDNIL R6 - 0x78120028, // 001F JMPF R4 #0049 - 0x8C1C0B05, // 0020 GETMET R7 R5 K5 - 0x7C1C0200, // 0021 CALL R7 1 - 0x5C180E00, // 0022 MOVE R6 R7 - 0x781E0024, // 0023 JMPF R7 #0049 - 0x881C0306, // 0024 GETMBR R7 R1 K6 - 0x881C0F07, // 0025 GETMBR R7 R7 K7 - 0x8C200B08, // 0026 GETMET R8 R5 K8 - 0x7C200200, // 0027 CALL R8 1 - 0x74220001, // 0028 JMPT R8 #002B - 0x741E0000, // 0029 JMPT R7 #002B - 0x50200001, // 002A LDBOOL R8 0 1 - 0x50200200, // 002B LDBOOL R8 1 0 - 0x88240309, // 002C GETMBR R9 R1 K9 - 0x8C24130A, // 002D GETMET R9 R9 K10 - 0x8C2C0B0B, // 002E GETMET R11 R5 K11 - 0x7C2C0200, // 002F CALL R11 1 - 0x5C300C00, // 0030 MOVE R12 R6 - 0x8834050C, // 0031 GETMBR R13 R2 K12 - 0x5C381000, // 0032 MOVE R14 R8 - 0x7C240A00, // 0033 CALL R9 5 - 0x4C280000, // 0034 LDNIL R10 - 0x1C28120A, // 0035 EQ R10 R9 R10 - 0x782A0000, // 0036 JMPF R10 #0038 - 0x7001FFE6, // 0037 JMP #001F - 0x6028000C, // 0038 GETGBL R10 G12 - 0x5C2C0600, // 0039 MOVE R11 R3 - 0x7C280200, // 003A CALL R10 1 - 0x602C000C, // 003B GETGBL R11 G12 - 0x5C301200, // 003C MOVE R12 R9 - 0x7C2C0200, // 003D CALL R11 1 - 0x0028140B, // 003E ADD R10 R10 R11 - 0x882C010D, // 003F GETMBR R11 R0 K13 - 0x2428140B, // 0040 GT R10 R10 R11 - 0x782A0002, // 0041 JMPF R10 #0045 - 0x90020409, // 0042 SETMBR R0 K2 R9 - 0x50100000, // 0043 LDBOOL R4 0 0 - 0x70020002, // 0044 JMP #0048 - 0x8C28070E, // 0045 GETMET R10 R3 K14 - 0x5C301200, // 0046 MOVE R12 R9 - 0x7C280400, // 0047 CALL R10 2 - 0x7001FFD5, // 0048 JMP #001F - 0x78120012, // 0049 JMPF R4 #005D - 0x601C000F, // 004A GETGBL R7 G15 - 0x88200103, // 004B GETMBR R8 R0 K3 - 0x60240012, // 004C GETGBL R9 G18 - 0x7C1C0400, // 004D CALL R7 2 - 0x781E000B, // 004E JMPF R7 #005B - 0x881C0103, // 004F GETMBR R7 R0 K3 - 0x8C1C0F0F, // 0050 GETMET R7 R7 K15 - 0x58240004, // 0051 LDCONST R9 K4 - 0x7C1C0400, // 0052 CALL R7 2 - 0x601C000C, // 0053 GETGBL R7 G12 - 0x88200103, // 0054 GETMBR R8 R0 K3 - 0x7C1C0200, // 0055 CALL R7 1 - 0x1C1C0F04, // 0056 EQ R7 R7 K4 - 0x781E0001, // 0057 JMPF R7 #005A - 0x4C1C0000, // 0058 LDNIL R7 - 0x90020607, // 0059 SETMBR R0 K3 R7 - 0x70020001, // 005A JMP #005D - 0x4C1C0000, // 005B LDNIL R7 - 0x90020607, // 005C SETMBR R0 K3 R7 - 0x7001FFB1, // 005D JMP #0010 - 0xB8162000, // 005E GETNGBL R5 K16 - 0x8C140B11, // 005F GETMET R5 R5 K17 - 0x7C140200, // 0060 CALL R5 1 - 0x88180112, // 0061 GETMBR R6 R0 K18 - 0x90162406, // 0062 SETMBR R5 K18 R6 - 0x88180113, // 0063 GETMBR R6 R0 K19 - 0x90162606, // 0064 SETMBR R5 K19 R6 - 0x60180012, // 0065 GETGBL R6 G18 - 0x7C180000, // 0066 CALL R6 0 - 0x401C0C03, // 0067 CONNECT R7 R6 R3 - 0x90162806, // 0068 SETMBR R5 K20 R6 - 0x88180102, // 0069 GETMBR R6 R0 K2 - 0x4C1C0000, // 006A LDNIL R7 - 0x20180C07, // 006B NE R6 R6 R7 - 0x90162A06, // 006C SETMBR R5 K21 R6 - 0x8C180B16, // 006D GETMET R6 R5 K22 - 0x7C180200, // 006E CALL R6 1 - 0x8C1C0D17, // 006F GETMET R7 R6 K23 - 0x60240015, // 0070 GETGBL R9 G21 - 0x8828010D, // 0071 GETMBR R10 R0 K13 - 0x7C240200, // 0072 CALL R9 1 - 0x7C1C0400, // 0073 CALL R7 2 - 0x8C200518, // 0074 GETMET R8 R2 K24 - 0x5C280E00, // 0075 MOVE R10 R7 - 0x7C200400, // 0076 CALL R8 2 - 0x8C200519, // 0077 GETMET R8 R2 K25 - 0x7C200200, // 0078 CALL R8 1 - 0x8C20031A, // 0079 GETMET R8 R1 K26 - 0x5C280400, // 007A MOVE R10 R2 - 0x7C200400, // 007B CALL R8 2 - 0x8820051C, // 007C GETMBR R8 R2 K28 - 0x90023608, // 007D SETMBR R0 K27 R8 - 0x88200B15, // 007E GETMBR R8 R5 K21 - 0x78220002, // 007F JMPF R8 #0083 - 0x50200000, // 0080 LDBOOL R8 0 0 - 0x90020008, // 0081 SETMBR R0 K0 R8 + 0x88140303, // 0010 GETMBR R5 R1 K3 + 0x88140B04, // 0011 GETMBR R5 R5 K4 + 0x88180105, // 0012 GETMBR R6 R0 K5 + 0x4C1C0000, // 0013 LDNIL R7 + 0x20180C07, // 0014 NE R6 R6 R7 + 0x781A0001, // 0015 JMPF R6 #0018 + 0x88180105, // 0016 GETMBR R6 R0 K5 + 0x70020007, // 0017 JMP #0020 + 0x88180106, // 0018 GETMBR R6 R0 K6 + 0x4C1C0000, // 0019 LDNIL R7 + 0x20180C07, // 001A NE R6 R6 R7 + 0x781A0002, // 001B JMPF R6 #001F + 0x60180015, // 001C GETGBL R6 G21 + 0x7C180000, // 001D CALL R6 0 + 0x70020000, // 001E JMP #0020 + 0x4C180000, // 001F LDNIL R6 + 0x7812004A, // 0020 JMPF R4 #006C + 0x881C0107, // 0021 GETMBR R7 R0 K7 + 0x4C200000, // 0022 LDNIL R8 + 0x201C0E08, // 0023 NE R7 R7 R8 + 0x781E0046, // 0024 JMPF R7 #006C + 0x601C000F, // 0025 GETGBL R7 G15 + 0x88200107, // 0026 GETMBR R8 R0 K7 + 0x60240012, // 0027 GETGBL R9 G18 + 0x7C1C0400, // 0028 CALL R7 2 + 0x781E0002, // 0029 JMPF R7 #002D + 0x881C0107, // 002A GETMBR R7 R0 K7 + 0x941C0F08, // 002B GETIDX R7 R7 K8 + 0x70020000, // 002C JMP #002E + 0x881C0107, // 002D GETMBR R7 R0 K7 + 0x4C200000, // 002E LDNIL R8 + 0x78120026, // 002F JMPF R4 #0057 + 0x8C240F09, // 0030 GETMET R9 R7 K9 + 0x7C240200, // 0031 CALL R9 1 + 0x5C201200, // 0032 MOVE R8 R9 + 0x78260022, // 0033 JMPF R9 #0057 + 0x8C240F0A, // 0034 GETMET R9 R7 K10 + 0x7C240200, // 0035 CALL R9 1 + 0x74260001, // 0036 JMPT R9 #0039 + 0x74160000, // 0037 JMPT R5 #0039 + 0x50240001, // 0038 LDBOOL R9 0 1 + 0x50240200, // 0039 LDBOOL R9 1 0 + 0x8828030B, // 003A GETMBR R10 R1 K11 + 0x8C28150C, // 003B GETMET R10 R10 K12 + 0x8C300F0D, // 003C GETMET R12 R7 K13 + 0x7C300200, // 003D CALL R12 1 + 0x5C341000, // 003E MOVE R13 R8 + 0x8838050E, // 003F GETMBR R14 R2 K14 + 0x5C3C1200, // 0040 MOVE R15 R9 + 0x7C280A00, // 0041 CALL R10 5 + 0x4C2C0000, // 0042 LDNIL R11 + 0x1C2C140B, // 0043 EQ R11 R10 R11 + 0x782E0000, // 0044 JMPF R11 #0046 + 0x7001FFE8, // 0045 JMP #002F + 0x602C000C, // 0046 GETGBL R11 G12 + 0x5C300600, // 0047 MOVE R12 R3 + 0x7C2C0200, // 0048 CALL R11 1 + 0x6030000C, // 0049 GETGBL R12 G12 + 0x5C341400, // 004A MOVE R13 R10 + 0x7C300200, // 004B CALL R12 1 + 0x002C160C, // 004C ADD R11 R11 R12 + 0x8830010F, // 004D GETMBR R12 R0 K15 + 0x242C160C, // 004E GT R11 R11 R12 + 0x782E0002, // 004F JMPF R11 #0053 + 0x9002040A, // 0050 SETMBR R0 K2 R10 + 0x50100000, // 0051 LDBOOL R4 0 0 + 0x70020002, // 0052 JMP #0056 + 0x8C2C0710, // 0053 GETMET R11 R3 K16 + 0x5C341400, // 0054 MOVE R13 R10 + 0x7C2C0400, // 0055 CALL R11 2 + 0x7001FFD7, // 0056 JMP #002F + 0x78120012, // 0057 JMPF R4 #006B + 0x6024000F, // 0058 GETGBL R9 G15 + 0x88280107, // 0059 GETMBR R10 R0 K7 + 0x602C0012, // 005A GETGBL R11 G18 + 0x7C240400, // 005B CALL R9 2 + 0x7826000B, // 005C JMPF R9 #0069 + 0x88240107, // 005D GETMBR R9 R0 K7 + 0x8C241311, // 005E GETMET R9 R9 K17 + 0x582C0008, // 005F LDCONST R11 K8 + 0x7C240400, // 0060 CALL R9 2 + 0x6024000C, // 0061 GETGBL R9 G12 + 0x88280107, // 0062 GETMBR R10 R0 K7 + 0x7C240200, // 0063 CALL R9 1 + 0x1C241308, // 0064 EQ R9 R9 K8 + 0x78260001, // 0065 JMPF R9 #0068 + 0x4C240000, // 0066 LDNIL R9 + 0x90020E09, // 0067 SETMBR R0 K7 R9 + 0x70020001, // 0068 JMP #006B + 0x4C240000, // 0069 LDNIL R9 + 0x90020E09, // 006A SETMBR R0 K7 R9 + 0x7001FFB3, // 006B JMP #0020 + 0x78120017, // 006C JMPF R4 #0085 + 0x881C0105, // 006D GETMBR R7 R0 K5 + 0x4C200000, // 006E LDNIL R8 + 0x201C0E08, // 006F NE R7 R7 R8 + 0x781E0013, // 0070 JMPF R7 #0085 + 0x601C000C, // 0071 GETGBL R7 G12 + 0x88200105, // 0072 GETMBR R8 R0 K5 + 0x7C1C0200, // 0073 CALL R7 1 + 0x241C0F08, // 0074 GT R7 R7 K8 + 0x781E000E, // 0075 JMPF R7 #0085 + 0x601C000C, // 0076 GETGBL R7 G12 + 0x5C200600, // 0077 MOVE R8 R3 + 0x7C1C0200, // 0078 CALL R7 1 + 0x6020000C, // 0079 GETGBL R8 G12 + 0x88240105, // 007A GETMBR R9 R0 K5 + 0x7C200200, // 007B CALL R8 1 + 0x001C0E08, // 007C ADD R7 R7 R8 + 0x8820010F, // 007D GETMBR R8 R0 K15 + 0x241C0E08, // 007E GT R7 R7 R8 + 0x781E0002, // 007F JMPF R7 #0083 + 0x50100000, // 0080 LDBOOL R4 0 0 + 0x4C180000, // 0081 LDNIL R6 0x70020001, // 0082 JMP #0085 - 0x50200200, // 0083 LDBOOL R8 1 0 - 0x90023A08, // 0084 SETMBR R0 K29 R8 - 0x80000000, // 0085 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData_Pull; -be_local_closure(class_Matter_IM_ReportData_Pull_init, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_ReportData_Pull, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(generator_or_arr), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x541A0004, // 0005 LDINT R6 5 - 0x501C0200, // 0006 LDBOOL R7 1 0 - 0x7C0C0800, // 0007 CALL R3 4 - 0x90020202, // 0008 SETMBR R0 K1 R2 - 0x80000000, // 0009 RET 0 + 0x4C1C0000, // 0083 LDNIL R7 + 0x90020A07, // 0084 SETMBR R0 K5 R7 + 0x7812006D, // 0085 JMPF R4 #00F4 + 0x881C0106, // 0086 GETMBR R7 R0 K6 + 0x4C200000, // 0087 LDNIL R8 + 0x201C0E08, // 0088 NE R7 R7 R8 + 0x781E0069, // 0089 JMPF R7 #00F4 + 0x601C000F, // 008A GETGBL R7 G15 + 0x88200106, // 008B GETMBR R8 R0 K6 + 0x60240012, // 008C GETGBL R9 G18 + 0x7C1C0400, // 008D CALL R7 2 + 0x781E0002, // 008E JMPF R7 #0092 + 0x881C0106, // 008F GETMBR R7 R0 K6 + 0x941C0F08, // 0090 GETIDX R7 R7 K8 + 0x70020000, // 0091 JMP #0093 + 0x881C0106, // 0092 GETMBR R7 R0 K6 + 0x4C200000, // 0093 LDNIL R8 + 0x78120049, // 0094 JMPF R4 #00DF + 0x8C240F12, // 0095 GETMET R9 R7 K18 + 0x7C240200, // 0096 CALL R9 1 + 0x5C201200, // 0097 MOVE R8 R9 + 0x78260045, // 0098 JMPF R9 #00DF + 0x7816002D, // 0099 JMPF R5 #00C8 + 0xB8262600, // 009A GETNGBL R9 K19 + 0x8C241314, // 009B GETMET R9 R9 K20 + 0x582C0015, // 009C LDCONST R11 K21 + 0x7C240400, // 009D CALL R9 2 + 0x78260028, // 009E JMPF R9 #00C8 + 0x58240016, // 009F LDCONST R9 K22 + 0x88281117, // 00A0 GETMBR R10 R8 K23 + 0x4C2C0000, // 00A1 LDNIL R11 + 0x2028140B, // 00A2 NE R10 R10 R11 + 0x782A0004, // 00A3 JMPF R10 #00A9 + 0x60280008, // 00A4 GETGBL R10 G8 + 0x882C1117, // 00A5 GETMBR R11 R8 K23 + 0x7C280200, // 00A6 CALL R10 1 + 0x002A300A, // 00A7 ADD R10 K24 R10 + 0x5C241400, // 00A8 MOVE R9 R10 + 0x88281119, // 00A9 GETMBR R10 R8 K25 + 0x4C2C0000, // 00AA LDNIL R11 + 0x2028140B, // 00AB NE R10 R10 R11 + 0x782A0004, // 00AC JMPF R10 #00B2 + 0x60280008, // 00AD GETGBL R10 G8 + 0x882C1119, // 00AE GETMBR R11 R8 K25 + 0x7C280200, // 00AF CALL R10 1 + 0x002A340A, // 00B0 ADD R10 K26 R10 + 0x0024120A, // 00B1 ADD R9 R9 R10 + 0x8828111B, // 00B2 GETMBR R10 R8 K27 + 0x4C2C0000, // 00B3 LDNIL R11 + 0x2028140B, // 00B4 NE R10 R10 R11 + 0x782A0004, // 00B5 JMPF R10 #00BB + 0x60280008, // 00B6 GETGBL R10 G8 + 0x882C111B, // 00B7 GETMBR R11 R8 K27 + 0x7C280200, // 00B8 CALL R10 1 + 0x002A340A, // 00B9 ADD R10 K26 R10 + 0x0024120A, // 00BA ADD R9 R9 R10 + 0xB82A3800, // 00BB GETNGBL R10 K28 + 0x602C0018, // 00BC GETGBL R11 G24 + 0x5830001D, // 00BD LDCONST R12 K29 + 0x8834050E, // 00BE GETMBR R13 R2 K14 + 0x88341B1E, // 00BF GETMBR R13 R13 K30 + 0x8838111F, // 00C0 GETMBR R14 R8 K31 + 0x883C1120, // 00C1 GETMBR R15 R8 K32 + 0x88401121, // 00C2 GETMBR R16 R8 K33 + 0x88441122, // 00C3 GETMBR R17 R8 K34 + 0x5C481200, // 00C4 MOVE R18 R9 + 0x7C2C0E00, // 00C5 CALL R11 7 + 0x58300015, // 00C6 LDCONST R12 K21 + 0x7C280400, // 00C7 CALL R10 2 + 0x8C241123, // 00C8 GETMET R9 R8 K35 + 0x7C240200, // 00C9 CALL R9 1 + 0x6028000C, // 00CA GETGBL R10 G12 + 0x5C2C0600, // 00CB MOVE R11 R3 + 0x7C280200, // 00CC CALL R10 1 + 0x602C000C, // 00CD GETGBL R11 G12 + 0x5C300C00, // 00CE MOVE R12 R6 + 0x7C2C0200, // 00CF CALL R11 1 + 0x0028140B, // 00D0 ADD R10 R10 R11 + 0x602C000C, // 00D1 GETGBL R11 G12 + 0x5C301200, // 00D2 MOVE R12 R9 + 0x7C2C0200, // 00D3 CALL R11 1 + 0x0028140B, // 00D4 ADD R10 R10 R11 + 0x882C010F, // 00D5 GETMBR R11 R0 K15 + 0x2428140B, // 00D6 GT R10 R10 R11 + 0x782A0002, // 00D7 JMPF R10 #00DB + 0x90020A09, // 00D8 SETMBR R0 K5 R9 + 0x50100000, // 00D9 LDBOOL R4 0 0 + 0x70020002, // 00DA JMP #00DE + 0x8C280D10, // 00DB GETMET R10 R6 K16 + 0x5C301200, // 00DC MOVE R12 R9 + 0x7C280400, // 00DD CALL R10 2 + 0x7001FFB4, // 00DE JMP #0094 + 0x78120012, // 00DF JMPF R4 #00F3 + 0x6024000F, // 00E0 GETGBL R9 G15 + 0x88280106, // 00E1 GETMBR R10 R0 K6 + 0x602C0012, // 00E2 GETGBL R11 G18 + 0x7C240400, // 00E3 CALL R9 2 + 0x7826000B, // 00E4 JMPF R9 #00F1 + 0x88240106, // 00E5 GETMBR R9 R0 K6 + 0x8C241311, // 00E6 GETMET R9 R9 K17 + 0x582C0008, // 00E7 LDCONST R11 K8 + 0x7C240400, // 00E8 CALL R9 2 + 0x6024000C, // 00E9 GETGBL R9 G12 + 0x88280106, // 00EA GETMBR R10 R0 K6 + 0x7C240200, // 00EB CALL R9 1 + 0x1C241308, // 00EC EQ R9 R9 K8 + 0x78260001, // 00ED JMPF R9 #00F0 + 0x4C240000, // 00EE LDNIL R9 + 0x90020C09, // 00EF SETMBR R0 K6 R9 + 0x70020001, // 00F0 JMP #00F3 + 0x4C240000, // 00F1 LDNIL R9 + 0x90020C09, // 00F2 SETMBR R0 K6 R9 + 0x7001FF90, // 00F3 JMP #0085 + 0xB81E4800, // 00F4 GETNGBL R7 K36 + 0x8C1C0F25, // 00F5 GETMET R7 R7 K37 + 0x7C1C0200, // 00F6 CALL R7 1 + 0x88200126, // 00F7 GETMBR R8 R0 K38 + 0x901E4C08, // 00F8 SETMBR R7 K38 R8 + 0x88200127, // 00F9 GETMBR R8 R0 K39 + 0x901E4E08, // 00FA SETMBR R7 K39 R8 + 0x4C200000, // 00FB LDNIL R8 + 0x20200608, // 00FC NE R8 R3 R8 + 0x78220008, // 00FD JMPF R8 #0107 + 0x6020000C, // 00FE GETGBL R8 G12 + 0x5C240600, // 00FF MOVE R9 R3 + 0x7C200200, // 0100 CALL R8 1 + 0x24201108, // 0101 GT R8 R8 K8 + 0x78220003, // 0102 JMPF R8 #0107 + 0x60200012, // 0103 GETGBL R8 G18 + 0x7C200000, // 0104 CALL R8 0 + 0x40241003, // 0105 CONNECT R9 R8 R3 + 0x901E5008, // 0106 SETMBR R7 K40 R8 + 0x4C200000, // 0107 LDNIL R8 + 0x20200C08, // 0108 NE R8 R6 R8 + 0x78220008, // 0109 JMPF R8 #0113 + 0x6020000C, // 010A GETGBL R8 G12 + 0x5C240C00, // 010B MOVE R9 R6 + 0x7C200200, // 010C CALL R8 1 + 0x24201108, // 010D GT R8 R8 K8 + 0x78220003, // 010E JMPF R8 #0113 + 0x60200012, // 010F GETGBL R8 G18 + 0x7C200000, // 0110 CALL R8 0 + 0x40241006, // 0111 CONNECT R9 R8 R6 + 0x901E5208, // 0112 SETMBR R7 K41 R8 + 0x88200102, // 0113 GETMBR R8 R0 K2 + 0x4C240000, // 0114 LDNIL R9 + 0x20201009, // 0115 NE R8 R8 R9 + 0x74220004, // 0116 JMPT R8 #011C + 0x88200105, // 0117 GETMBR R8 R0 K5 + 0x4C240000, // 0118 LDNIL R9 + 0x20201009, // 0119 NE R8 R8 R9 + 0x74220000, // 011A JMPT R8 #011C + 0x50200001, // 011B LDBOOL R8 0 1 + 0x50200200, // 011C LDBOOL R8 1 0 + 0x901E5408, // 011D SETMBR R7 K42 R8 + 0x8C200F2B, // 011E GETMET R8 R7 K43 + 0x7C200200, // 011F CALL R8 1 + 0x8C24112C, // 0120 GETMET R9 R8 K44 + 0x602C0015, // 0121 GETGBL R11 G21 + 0x8830010F, // 0122 GETMBR R12 R0 K15 + 0x7C2C0200, // 0123 CALL R11 1 + 0x7C240400, // 0124 CALL R9 2 + 0x8C28052D, // 0125 GETMET R10 R2 K45 + 0x5C301200, // 0126 MOVE R12 R9 + 0x7C280400, // 0127 CALL R10 2 + 0x8C28052E, // 0128 GETMET R10 R2 K46 + 0x7C280200, // 0129 CALL R10 1 + 0x8C28032F, // 012A GETMET R10 R1 K47 + 0x5C300400, // 012B MOVE R12 R2 + 0x7C280400, // 012C CALL R10 2 + 0x88280531, // 012D GETMBR R10 R2 K49 + 0x9002600A, // 012E SETMBR R0 K48 R10 + 0x88280F2A, // 012F GETMBR R10 R7 K42 + 0x782A0002, // 0130 JMPF R10 #0134 + 0x50280000, // 0131 LDBOOL R10 0 0 + 0x9002000A, // 0132 SETMBR R0 K0 R10 + 0x70020001, // 0133 JMP #0136 + 0x50280200, // 0134 LDBOOL R10 1 0 + 0x9002640A, // 0135 SETMBR R0 K50 R10 + 0x80000000, // 0136 RET 0 }) ) ); @@ -834,18 +1034,20 @@ be_local_closure(class_Matter_IM_ReportData_Pull_set_suppress_response, /* nam ********************************************************************/ extern const bclass be_class_Matter_IM_Message; be_local_class(Matter_IM_ReportData_Pull, - 3, + 5, &be_class_Matter_IM_Message, - be_nested_map(8, + be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(suppress_response, -1), be_const_var(2) }, + { be_const_key_weak(set_suppress_response, 2), be_const_closure(class_Matter_IM_ReportData_Pull_set_suppress_response_closure) }, + { be_const_key_weak(data_ev, -1), be_const_var(4) }, + { be_const_key_weak(event_generator_or_arr, -1), be_const_var(1) }, { be_const_key_weak(MAX_MESSAGE, -1), be_const_int(1200) }, - { be_const_key_weak(generator_or_arr, 5), be_const_var(0) }, - { be_const_key_weak(set_subscription_id, 6), be_const_closure(class_Matter_IM_ReportData_Pull_set_subscription_id_closure) }, - { be_const_key_weak(subscription_id, -1), be_const_var(1) }, - { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_ReportData_Pull_send_im_closure) }, + { be_const_key_weak(subscription_id, -1), be_const_var(2) }, { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_ReportData_Pull_init_closure) }, - { be_const_key_weak(set_suppress_response, -1), be_const_closure(class_Matter_IM_ReportData_Pull_set_suppress_response_closure) }, + { be_const_key_weak(generator_or_arr, 9), be_const_var(0) }, + { be_const_key_weak(set_subscription_id, 0), be_const_closure(class_Matter_IM_ReportData_Pull_set_subscription_id_closure) }, + { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_ReportData_Pull_send_im_closure) }, + { be_const_key_weak(suppress_response, -1), be_const_var(3) }, })), be_str_weak(Matter_IM_ReportData_Pull) ); @@ -916,30 +1118,33 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_ReportDataSubscribed_Pull, 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ + ( &(const bvalue[22]) { /* constants */ /* K0 */ be_nested_str_weak(ready), /* K1 */ be_nested_str_weak(generator_or_arr), - /* K2 */ be_nested_str_weak(report_data_phase), - /* K3 */ be_nested_str_weak(send_im), - /* K4 */ be_nested_str_weak(finish), - /* K5 */ be_nested_str_weak(resp), - /* K6 */ be_nested_str_weak(build_standalone_ack), - /* K7 */ be_nested_str_weak(encode_frame), - /* K8 */ be_nested_str_weak(encrypt), - /* K9 */ be_nested_str_weak(tasmota), - /* K10 */ be_nested_str_weak(loglevel), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i), - /* K13 */ be_nested_str_weak(session), - /* K14 */ be_nested_str_weak(local_session_id), - /* K15 */ be_nested_str_weak(ack_message_counter), - /* K16 */ be_nested_str_weak(message_counter), - /* K17 */ be_nested_str_weak(send_response_frame), - /* K18 */ be_nested_str_weak(last_counter), + /* K2 */ be_nested_str_weak(event_generator_or_arr), + /* K3 */ be_nested_str_weak(report_data_phase), + /* K4 */ be_nested_str_weak(send_im), + /* K5 */ be_nested_str_weak(finish), + /* K6 */ be_nested_str_weak(resp), + /* K7 */ be_nested_str_weak(build_standalone_ack), + /* K8 */ be_nested_str_weak(encode_frame), + /* K9 */ be_nested_str_weak(encrypt), + /* 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_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), + /* K20 */ be_nested_str_weak(sub), + /* K21 */ be_nested_str_weak(re_arm), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[71]) { /* code */ + ( &(const binstruction[81]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0001, // 0001 JMPT R2 #0004 0x50080000, // 0002 LDBOOL R2 0 0 @@ -947,70 +1152,80 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ 0x88080101, // 0004 GETMBR R2 R0 K1 0x4C0C0000, // 0005 LDNIL R3 0x20080403, // 0006 NE R2 R2 R3 - 0x780A0030, // 0007 JMPF R2 #0039 + 0x740A0003, // 0007 JMPT R2 #000C 0x88080102, // 0008 GETMBR R2 R0 K2 - 0x780A000F, // 0009 JMPF R2 #001A - 0x60080003, // 000A GETGBL R2 G3 - 0x5C0C0000, // 000B MOVE R3 R0 - 0x7C080200, // 000C CALL R2 1 - 0x8C080503, // 000D GETMET R2 R2 K3 - 0x5C100200, // 000E MOVE R4 R1 - 0x7C080400, // 000F CALL R2 2 - 0x88080104, // 0010 GETMBR R2 R0 K4 - 0x740A0000, // 0011 JMPT R2 #0013 - 0x80000400, // 0012 RET 0 - 0x50080000, // 0013 LDBOOL R2 0 0 - 0x90020402, // 0014 SETMBR R0 K2 R2 - 0x50080000, // 0015 LDBOOL R2 0 0 - 0x90020002, // 0016 SETMBR R0 K0 R2 + 0x4C0C0000, // 0009 LDNIL R3 + 0x20080403, // 000A NE R2 R2 R3 + 0x780A0033, // 000B JMPF R2 #0040 + 0x88080103, // 000C GETMBR R2 R0 K3 + 0x780A000F, // 000D JMPF R2 #001E + 0x60080003, // 000E GETGBL R2 G3 + 0x5C0C0000, // 000F MOVE R3 R0 + 0x7C080200, // 0010 CALL R2 1 + 0x8C080504, // 0011 GETMET R2 R2 K4 + 0x5C100200, // 0012 MOVE R4 R1 + 0x7C080400, // 0013 CALL R2 2 + 0x88080105, // 0014 GETMBR R2 R0 K5 + 0x740A0000, // 0015 JMPT R2 #0017 + 0x80000400, // 0016 RET 0 0x50080000, // 0017 LDBOOL R2 0 0 - 0x90020802, // 0018 SETMBR R0 K4 R2 - 0x7002001D, // 0019 JMP #0038 - 0x88080105, // 001A GETMBR R2 R0 K5 - 0x8C080506, // 001B GETMET R2 R2 K6 - 0x50100000, // 001C LDBOOL R4 0 0 - 0x7C080400, // 001D CALL R2 2 - 0x8C0C0507, // 001E GETMET R3 R2 K7 - 0x7C0C0200, // 001F CALL R3 1 - 0x8C0C0508, // 0020 GETMET R3 R2 K8 - 0x7C0C0200, // 0021 CALL R3 1 - 0xB80E1200, // 0022 GETNGBL R3 K9 - 0x8C0C070A, // 0023 GETMET R3 R3 K10 - 0x54160003, // 0024 LDINT R5 4 - 0x7C0C0400, // 0025 CALL R3 2 - 0x780E0009, // 0026 JMPF R3 #0031 - 0xB80E1600, // 0027 GETNGBL R3 K11 - 0x60100018, // 0028 GETGBL R4 G24 - 0x5814000C, // 0029 LDCONST R5 K12 - 0x8818050D, // 002A GETMBR R6 R2 K13 - 0x88180D0E, // 002B GETMBR R6 R6 K14 - 0x881C050F, // 002C GETMBR R7 R2 K15 - 0x88200510, // 002D GETMBR R8 R2 K16 - 0x7C100800, // 002E CALL R4 4 - 0x54160003, // 002F LDINT R5 4 - 0x7C0C0400, // 0030 CALL R3 2 - 0x8C0C0311, // 0031 GETMET R3 R1 K17 - 0x5C140400, // 0032 MOVE R5 R2 - 0x7C0C0400, // 0033 CALL R3 2 - 0x880C0510, // 0034 GETMBR R3 R2 K16 - 0x90022403, // 0035 SETMBR R0 K18 R3 - 0x500C0200, // 0036 LDBOOL R3 1 0 - 0x90020803, // 0037 SETMBR R0 K4 R3 - 0x7002000C, // 0038 JMP #0046 - 0x88080102, // 0039 GETMBR R2 R0 K2 - 0x780A0008, // 003A JMPF R2 #0044 - 0x60080003, // 003B GETGBL R2 G3 - 0x5C0C0000, // 003C MOVE R3 R0 - 0x7C080200, // 003D CALL R2 1 - 0x8C080503, // 003E GETMET R2 R2 K3 - 0x5C100200, // 003F MOVE R4 R1 - 0x7C080400, // 0040 CALL R2 2 - 0x50080000, // 0041 LDBOOL R2 0 0 - 0x90020402, // 0042 SETMBR R0 K2 R2 - 0x70020001, // 0043 JMP #0046 - 0x50080200, // 0044 LDBOOL R2 1 0 - 0x90020802, // 0045 SETMBR R0 K4 R2 - 0x80000000, // 0046 RET 0 + 0x90020602, // 0018 SETMBR R0 K3 R2 + 0x50080000, // 0019 LDBOOL R2 0 0 + 0x90020002, // 001A SETMBR R0 K0 R2 + 0x50080000, // 001B LDBOOL R2 0 0 + 0x90020A02, // 001C SETMBR R0 K5 R2 + 0x70020020, // 001D JMP #003F + 0x88080106, // 001E GETMBR R2 R0 K6 + 0x8C080507, // 001F GETMET R2 R2 K7 + 0x50100000, // 0020 LDBOOL R4 0 0 + 0x7C080400, // 0021 CALL R2 2 + 0x8C0C0508, // 0022 GETMET R3 R2 K8 + 0x7C0C0200, // 0023 CALL R3 1 + 0x8C0C0509, // 0024 GETMET R3 R2 K9 + 0x7C0C0200, // 0025 CALL R3 1 + 0xB80E1400, // 0026 GETNGBL R3 K10 + 0x8C0C070B, // 0027 GETMET R3 R3 K11 + 0x54160003, // 0028 LDINT R5 4 + 0x7C0C0400, // 0029 CALL R3 2 + 0x780E0009, // 002A JMPF R3 #0035 + 0xB80E1800, // 002B GETNGBL R3 K12 + 0x60100018, // 002C GETGBL R4 G24 + 0x5814000D, // 002D LDCONST R5 K13 + 0x8818050E, // 002E GETMBR R6 R2 K14 + 0x88180D0F, // 002F GETMBR R6 R6 K15 + 0x881C0510, // 0030 GETMBR R7 R2 K16 + 0x88200511, // 0031 GETMBR R8 R2 K17 + 0x7C100800, // 0032 CALL R4 4 + 0x54160003, // 0033 LDINT R5 4 + 0x7C0C0400, // 0034 CALL R3 2 + 0x8C0C0312, // 0035 GETMET R3 R1 K18 + 0x5C140400, // 0036 MOVE R5 R2 + 0x7C0C0400, // 0037 CALL R3 2 + 0x880C0511, // 0038 GETMBR R3 R2 K17 + 0x90022603, // 0039 SETMBR R0 K19 R3 + 0x500C0200, // 003A LDBOOL R3 1 0 + 0x90020A03, // 003B SETMBR R0 K5 R3 + 0x880C0114, // 003C GETMBR R3 R0 K20 + 0x8C0C0715, // 003D GETMET R3 R3 K21 + 0x7C0C0200, // 003E CALL R3 1 + 0x7002000F, // 003F JMP #0050 + 0x88080103, // 0040 GETMBR R2 R0 K3 + 0x780A0008, // 0041 JMPF R2 #004B + 0x60080003, // 0042 GETGBL R2 G3 + 0x5C0C0000, // 0043 MOVE R3 R0 + 0x7C080200, // 0044 CALL R2 1 + 0x8C080504, // 0045 GETMET R2 R2 K4 + 0x5C100200, // 0046 MOVE R4 R1 + 0x7C080400, // 0047 CALL R2 2 + 0x50080000, // 0048 LDBOOL R2 0 0 + 0x90020602, // 0049 SETMBR R0 K3 R2 + 0x70020004, // 004A JMP #0050 + 0x50080200, // 004B LDBOOL R2 1 0 + 0x90020A02, // 004C SETMBR R0 K5 R2 + 0x88080114, // 004D GETMBR R2 R0 K20 + 0x8C080515, // 004E GETMET R2 R2 K21 + 0x7C080200, // 004F CALL R2 1 + 0x80000000, // 0050 RET 0 }) ) ); @@ -1023,8 +1238,8 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_init, /* name */ be_nested_proto( - 11, /* nstack */ - 5, /* argc */ + 12, /* nstack */ + 6, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1045,33 +1260,34 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_init, /* name */ }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x60140003, // 0000 GETGBL R5 G3 - 0x5C180000, // 0001 MOVE R6 R0 - 0x7C140200, // 0002 CALL R5 1 - 0x8C140B00, // 0003 GETMET R5 R5 K0 - 0x4C1C0000, // 0004 LDNIL R7 - 0x5C200600, // 0005 MOVE R8 R3 - 0x7C140600, // 0006 CALL R5 3 - 0xB8160400, // 0007 GETNGBL R5 K2 - 0x88140B03, // 0008 GETMBR R5 R5 K3 - 0x8C140B04, // 0009 GETMET R5 R5 K4 - 0x5C1C0200, // 000A MOVE R7 R1 - 0x5C200400, // 000B MOVE R8 R2 - 0x54260004, // 000C LDINT R9 5 - 0x50280200, // 000D LDBOOL R10 1 0 - 0x7C140A00, // 000E CALL R5 5 - 0x90020205, // 000F SETMBR R0 K1 R5 - 0x90020A04, // 0010 SETMBR R0 K5 R4 - 0x50140200, // 0011 LDBOOL R5 1 0 - 0x90020C05, // 0012 SETMBR R0 K6 R5 - 0x8C140107, // 0013 GETMET R5 R0 K7 - 0x881C0908, // 0014 GETMBR R7 R4 K8 - 0x7C140400, // 0015 CALL R5 2 - 0x8C140109, // 0016 GETMET R5 R0 K9 - 0x501C0000, // 0017 LDBOOL R7 0 0 - 0x7C140400, // 0018 CALL R5 2 - 0x80000000, // 0019 RET 0 + ( &(const binstruction[27]) { /* code */ + 0x60180003, // 0000 GETGBL R6 G3 + 0x5C1C0000, // 0001 MOVE R7 R0 + 0x7C180200, // 0002 CALL R6 1 + 0x8C180D00, // 0003 GETMET R6 R6 K0 + 0x4C200000, // 0004 LDNIL R8 + 0x5C240600, // 0005 MOVE R9 R3 + 0x5C280800, // 0006 MOVE R10 R4 + 0x7C180800, // 0007 CALL R6 4 + 0xB81A0400, // 0008 GETNGBL R6 K2 + 0x88180D03, // 0009 GETMBR R6 R6 K3 + 0x8C180D04, // 000A GETMET R6 R6 K4 + 0x5C200200, // 000B MOVE R8 R1 + 0x5C240400, // 000C MOVE R9 R2 + 0x542A0004, // 000D LDINT R10 5 + 0x502C0200, // 000E LDBOOL R11 1 0 + 0x7C180A00, // 000F CALL R6 5 + 0x90020206, // 0010 SETMBR R0 K1 R6 + 0x90020A05, // 0011 SETMBR R0 K5 R5 + 0x50180200, // 0012 LDBOOL R6 1 0 + 0x90020C06, // 0013 SETMBR R0 K6 R6 + 0x8C180107, // 0014 GETMET R6 R0 K7 + 0x88200B08, // 0015 GETMBR R8 R5 K8 + 0x7C180400, // 0016 CALL R6 2 + 0x8C180109, // 0017 GETMET R6 R0 K9 + 0x50200000, // 0018 LDBOOL R8 0 0 + 0x7C180400, // 0019 CALL R6 2 + 0x80000000, // 001A RET 0 }) ) ); @@ -1407,31 +1623,32 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_init, /* name */ }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ + ( &(const binstruction[25]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 0x8C100900, // 0003 GETMET R4 R4 K0 0x4C180000, // 0004 LDNIL R6 0x4C1C0000, // 0005 LDNIL R7 - 0x7C100600, // 0006 CALL R4 3 - 0xB8120400, // 0007 GETNGBL R4 K2 - 0x88100903, // 0008 GETMBR R4 R4 K3 - 0x8C100904, // 0009 GETMET R4 R4 K4 - 0x5C180200, // 000A MOVE R6 R1 - 0x5C1C0400, // 000B MOVE R7 R2 - 0x54220004, // 000C LDINT R8 5 - 0x50240200, // 000D LDBOOL R9 1 0 - 0x7C100A00, // 000E CALL R4 5 - 0x90020204, // 000F SETMBR R0 K1 R4 - 0x90020A03, // 0010 SETMBR R0 K5 R3 - 0x8C100106, // 0011 GETMET R4 R0 K6 - 0x88180707, // 0012 GETMBR R6 R3 K7 - 0x7C100400, // 0013 CALL R4 2 - 0x8C100108, // 0014 GETMET R4 R0 K8 - 0x50180200, // 0015 LDBOOL R6 1 0 - 0x7C100400, // 0016 CALL R4 2 - 0x80000000, // 0017 RET 0 + 0x4C200000, // 0006 LDNIL R8 + 0x7C100800, // 0007 CALL R4 4 + 0xB8120400, // 0008 GETNGBL R4 K2 + 0x88100903, // 0009 GETMBR R4 R4 K3 + 0x8C100904, // 000A GETMET R4 R4 K4 + 0x5C180200, // 000B MOVE R6 R1 + 0x5C1C0400, // 000C MOVE R7 R2 + 0x54220004, // 000D LDINT R8 5 + 0x50240200, // 000E LDBOOL R9 1 0 + 0x7C100A00, // 000F CALL R4 5 + 0x90020204, // 0010 SETMBR R0 K1 R4 + 0x90020A03, // 0011 SETMBR R0 K5 R3 + 0x8C100106, // 0012 GETMET R4 R0 K6 + 0x88180707, // 0013 GETMBR R6 R3 K7 + 0x7C100400, // 0014 CALL R4 2 + 0x8C100108, // 0015 GETMET R4 R0 K8 + 0x50180200, // 0016 LDBOOL R6 1 0 + 0x7C100400, // 0017 CALL R4 2 + 0x80000000, // 0018 RET 0 }) ) ); @@ -1466,8 +1683,8 @@ extern const bclass be_class_Matter_IM_SubscribeResponse_Pull; extern const bclass be_class_Matter_IM_SubscribeResponse_Pull; be_local_closure(class_Matter_IM_SubscribeResponse_Pull_init, /* name */ be_nested_proto( - 8, /* nstack */ - 4, /* argc */ + 10, /* nstack */ + 5, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1483,21 +1700,22 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_init, /* name */ }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x7C100600, // 0006 CALL R4 3 - 0x90020203, // 0007 SETMBR R0 K1 R3 - 0x50100200, // 0008 LDBOOL R4 1 0 - 0x90020404, // 0009 SETMBR R0 K2 R4 - 0x8C100103, // 000A GETMET R4 R0 K3 - 0x88180704, // 000B GETMBR R6 R3 K4 - 0x7C100400, // 000C CALL R4 2 - 0x80000000, // 000D RET 0 + ( &(const binstruction[15]) { /* code */ + 0x60140003, // 0000 GETGBL R5 G3 + 0x5C180000, // 0001 MOVE R6 R0 + 0x7C140200, // 0002 CALL R5 1 + 0x8C140B00, // 0003 GETMET R5 R5 K0 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x5C240600, // 0006 MOVE R9 R3 + 0x7C140800, // 0007 CALL R5 4 + 0x90020204, // 0008 SETMBR R0 K1 R4 + 0x50140200, // 0009 LDBOOL R5 1 0 + 0x90020405, // 000A SETMBR R0 K2 R5 + 0x8C140103, // 000B GETMET R5 R0 K3 + 0x881C0904, // 000C GETMBR R7 R4 K4 + 0x7C140400, // 000D CALL R5 2 + 0x80000000, // 000E RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h index e10ec8aee..f453f78d0 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h @@ -7,118 +7,10 @@ extern const bclass be_class_Matter_IM_Subscription; /******************************************************************** -** Solidified function: init +** Solidified function: event_published ********************************************************************/ extern const bclass be_class_Matter_IM_Subscription; -be_local_closure(class_Matter_IM_Subscription_init, /* name */ - be_nested_proto( - 13, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, - 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str_weak(subs_shop), - /* K1 */ be_nested_str_weak(subscription_id), - /* K2 */ be_nested_str_weak(session), - /* K3 */ be_nested_str_weak(min_interval_floor), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(min_interval), - /* K6 */ be_nested_str_weak(max_interval_ceiling), - /* K7 */ be_nested_str_weak(max_interval), - /* K8 */ be_nested_str_weak(wait_status), - /* K9 */ be_nested_str_weak(fabric_filtered), - /* K10 */ be_nested_str_weak(path_list), - /* K11 */ be_nested_str_weak(attributes_requests), - /* K12 */ be_nested_str_weak(matter), - /* K13 */ be_nested_str_weak(Path), - /* K14 */ be_nested_str_weak(endpoint), - /* K15 */ be_nested_str_weak(cluster), - /* K16 */ be_nested_str_weak(attribute), - /* K17 */ be_nested_str_weak(push), - /* K18 */ be_nested_str_weak(stop_iteration), - /* K19 */ be_nested_str_weak(updates), - /* K20 */ be_nested_str_weak(clear_before_arm), - /* K21 */ be_nested_str_weak(is_keep_alive), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[61]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x90020403, // 0002 SETMBR R0 K2 R3 - 0x88140903, // 0003 GETMBR R5 R4 K3 - 0x14180B04, // 0004 LT R6 R5 K4 - 0x781A0000, // 0005 JMPF R6 #0007 - 0x58140004, // 0006 LDCONST R5 K4 - 0x541A003B, // 0007 LDINT R6 60 - 0x24180A06, // 0008 GT R6 R5 R6 - 0x781A0000, // 0009 JMPF R6 #000B - 0x5416003B, // 000A LDINT R5 60 - 0x90020A05, // 000B SETMBR R0 K5 R5 - 0x88180906, // 000C GETMBR R6 R4 K6 - 0x541E003B, // 000D LDINT R7 60 - 0x141C0C07, // 000E LT R7 R6 R7 - 0x781E0000, // 000F JMPF R7 #0011 - 0x541A003B, // 0010 LDINT R6 60 - 0x541E0E0F, // 0011 LDINT R7 3600 - 0x241C0C07, // 0012 GT R7 R6 R7 - 0x781E0000, // 0013 JMPF R7 #0015 - 0x541A0E0F, // 0014 LDINT R6 3600 - 0x541A003B, // 0015 LDINT R6 60 - 0x90020E06, // 0016 SETMBR R0 K7 R6 - 0x501C0000, // 0017 LDBOOL R7 0 0 - 0x90021007, // 0018 SETMBR R0 K8 R7 - 0x881C0909, // 0019 GETMBR R7 R4 K9 - 0x90021207, // 001A SETMBR R0 K9 R7 - 0x601C0012, // 001B GETGBL R7 G18 - 0x7C1C0000, // 001C CALL R7 0 - 0x90021407, // 001D SETMBR R0 K10 R7 - 0x601C0010, // 001E GETGBL R7 G16 - 0x8820090B, // 001F GETMBR R8 R4 K11 - 0x7C1C0200, // 0020 CALL R7 1 - 0xA802000F, // 0021 EXBLK 0 #0032 - 0x5C200E00, // 0022 MOVE R8 R7 - 0x7C200000, // 0023 CALL R8 0 - 0xB8261800, // 0024 GETNGBL R9 K12 - 0x8C24130D, // 0025 GETMET R9 R9 K13 - 0x7C240200, // 0026 CALL R9 1 - 0x8828110E, // 0027 GETMBR R10 R8 K14 - 0x90261C0A, // 0028 SETMBR R9 K14 R10 - 0x8828110F, // 0029 GETMBR R10 R8 K15 - 0x90261E0A, // 002A SETMBR R9 K15 R10 - 0x88281110, // 002B GETMBR R10 R8 K16 - 0x9026200A, // 002C SETMBR R9 K16 R10 - 0x8828010A, // 002D GETMBR R10 R0 K10 - 0x8C281511, // 002E GETMET R10 R10 K17 - 0x5C301200, // 002F MOVE R12 R9 - 0x7C280400, // 0030 CALL R10 2 - 0x7001FFEF, // 0031 JMP #0022 - 0x581C0012, // 0032 LDCONST R7 K18 - 0xAC1C0200, // 0033 CATCH R7 1 0 - 0xB0080000, // 0034 RAISE 2 R0 R0 - 0x601C0012, // 0035 GETGBL R7 G18 - 0x7C1C0000, // 0036 CALL R7 0 - 0x90022607, // 0037 SETMBR R0 K19 R7 - 0x8C1C0114, // 0038 GETMET R7 R0 K20 - 0x7C1C0200, // 0039 CALL R7 1 - 0x501C0000, // 003A LDBOOL R7 0 0 - 0x90022A07, // 003B SETMBR R0 K21 R7 - 0x80000000, // 003C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _add_attribute_unique_path -********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; -be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* name */ +be_local_closure(class_Matter_IM_Subscription_event_published, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -129,122 +21,41 @@ be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* n &be_class_Matter_IM_Subscription, 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(updates), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(push), + /* K0 */ be_nested_str_weak(update_event_no), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(event_generators), + /* K3 */ be_nested_str_weak(event_is_match), + /* K4 */ be_nested_str_weak(event_no), + /* K5 */ be_nested_str_weak(add), + /* K6 */ be_const_int(1), }), - be_str_weak(_add_attribute_unique_path), + be_str_weak(event_published), &be_const_str_solidified, - ( &(const binstruction[28]) { /* 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 - 0x780E0010, // 0005 JMPF R3 #0017 - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x88100702, // 0008 GETMBR R4 R3 K2 - 0x88140302, // 0009 GETMBR R5 R1 K2 - 0x1C100805, // 000A EQ R4 R4 R5 - 0x78120008, // 000B JMPF R4 #0015 - 0x88100703, // 000C GETMBR R4 R3 K3 - 0x88140303, // 000D GETMBR R5 R1 K3 - 0x1C100805, // 000E EQ R4 R4 R5 - 0x78120004, // 000F JMPF R4 #0015 - 0x88100704, // 0010 GETMBR R4 R3 K4 - 0x88140304, // 0011 GETMBR R5 R1 K4 - 0x1C100805, // 0012 EQ R4 R4 R5 - 0x78120000, // 0013 JMPF R4 #0015 - 0x80000800, // 0014 RET 0 - 0x00080505, // 0015 ADD R2 R2 K5 - 0x7001FFE9, // 0016 JMP #0001 - 0x880C0101, // 0017 GETMBR R3 R0 K1 - 0x8C0C0706, // 0018 GETMET R3 R3 K6 - 0x5C140200, // 0019 MOVE R5 R1 - 0x7C0C0400, // 001A CALL R3 2 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_self -********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; -be_local_closure(class_Matter_IM_Subscription_remove_self, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D), - /* K2 */ be_nested_str_weak(subscription_id), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str_weak(subs_shop), - /* K5 */ be_nested_str_weak(remove_sub), - }), - be_str_weak(remove_self), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x60080008, // 0001 GETGBL R2 G8 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x7C080200, // 0003 CALL R2 1 - 0x000A0202, // 0004 ADD R2 K1 R2 - 0x580C0003, // 0005 LDCONST R3 K3 - 0x7C040400, // 0006 CALL R1 2 - 0x88040104, // 0007 GETMBR R1 R0 K4 - 0x8C040305, // 0008 GETMET R1 R1 K5 - 0x5C0C0000, // 0009 MOVE R3 R0 - 0x7C040400, // 000A CALL R1 2 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear_before_arm -********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; -be_local_closure(class_Matter_IM_Subscription_clear_before_arm, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(updates), - /* K1 */ be_nested_str_weak(clear), - /* K2 */ be_nested_str_weak(wait_status), - }), - be_str_weak(clear_before_arm), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x50040200, // 0003 LDBOOL R1 1 0 - 0x90020401, // 0004 SETMBR R0 K2 R1 - 0x80000000, // 0005 RET 0 + ( &(const binstruction[24]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C080403, // 0002 EQ R2 R2 R3 + 0x780A0012, // 0003 JMPF R2 #0017 + 0x58080001, // 0004 LDCONST R2 K1 + 0x600C000C, // 0005 GETGBL R3 G12 + 0x88100102, // 0006 GETMBR R4 R0 K2 + 0x7C0C0200, // 0007 CALL R3 1 + 0x140C0403, // 0008 LT R3 R2 R3 + 0x780E000C, // 0009 JMPF R3 #0017 + 0x880C0102, // 000A GETMBR R3 R0 K2 + 0x940C0602, // 000B GETIDX R3 R3 R2 + 0x8C0C0703, // 000C GETMET R3 R3 K3 + 0x5C140200, // 000D MOVE R5 R1 + 0x7C0C0400, // 000E CALL R3 2 + 0x780E0004, // 000F JMPF R3 #0015 + 0x880C0304, // 0010 GETMBR R3 R1 K4 + 0x8C0C0705, // 0011 GETMET R3 R3 K5 + 0x5415FFFE, // 0012 LDINT R5 -1 + 0x7C0C0400, // 0013 CALL R3 2 + 0x90020003, // 0014 SETMBR R0 K0 R3 + 0x00080506, // 0015 ADD R2 R2 K6 + 0x7001FFED, // 0016 JMP #0005 + 0x80000000, // 0017 RET 0 }) ) ); @@ -321,6 +132,301 @@ be_local_closure(class_Matter_IM_Subscription_attribute_updated_ctx, /* name * /*******************************************************************/ +/******************************************************************** +** Solidified function: clear_before_arm +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription; +be_local_closure(class_Matter_IM_Subscription_clear_before_arm, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(updates), + /* K1 */ be_nested_str_weak(clear), + /* K2 */ be_nested_str_weak(wait_status), + /* K3 */ be_nested_str_weak(update_event_no), + }), + be_str_weak(clear_before_arm), + &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 + 0x50040200, // 0003 LDBOOL R1 1 0 + 0x90020401, // 0004 SETMBR R0 K2 R1 + 0x4C040000, // 0005 LDNIL R1 + 0x90020601, // 0006 SETMBR R0 K3 R1 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription; +be_local_closure(class_Matter_IM_Subscription_init, /* name */ + be_nested_proto( + 17, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription, + 1, /* has constants */ + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_str_weak(subs_shop), + /* K1 */ be_nested_str_weak(subscription_id), + /* K2 */ be_nested_str_weak(session), + /* K3 */ be_nested_str_weak(min_interval_floor), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(min_interval), + /* K6 */ be_nested_str_weak(max_interval_ceiling), + /* K7 */ be_nested_str_weak(max_interval), + /* K8 */ be_nested_str_weak(wait_status), + /* K9 */ be_nested_str_weak(fabric_filtered), + /* K10 */ be_nested_str_weak(im), + /* K11 */ be_nested_str_weak(device), + /* K12 */ be_nested_str_weak(path_list), + /* K13 */ be_nested_str_weak(attributes_requests), + /* K14 */ be_nested_str_weak(push), + /* K15 */ be_nested_str_weak(matter), + /* K16 */ be_nested_str_weak(Path), + /* K17 */ be_nested_str_weak(endpoint), + /* K18 */ be_nested_str_weak(cluster), + /* K19 */ be_nested_str_weak(attribute), + /* K20 */ be_nested_str_weak(stop_iteration), + /* K21 */ be_nested_str_weak(IM), + /* K22 */ be_nested_str_weak(parse_event_filters_min_no), + /* K23 */ be_nested_str_weak(event_filters), + /* K24 */ be_nested_str_weak(updates), + /* K25 */ be_nested_str_weak(clear_before_arm), + /* K26 */ be_nested_str_weak(is_keep_alive), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[69]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x90020403, // 0002 SETMBR R0 K2 R3 + 0x88140903, // 0003 GETMBR R5 R4 K3 + 0x14180B04, // 0004 LT R6 R5 K4 + 0x781A0000, // 0005 JMPF R6 #0007 + 0x58140004, // 0006 LDCONST R5 K4 + 0x541A003B, // 0007 LDINT R6 60 + 0x24180A06, // 0008 GT R6 R5 R6 + 0x781A0000, // 0009 JMPF R6 #000B + 0x5416003B, // 000A LDINT R5 60 + 0x90020A05, // 000B SETMBR R0 K5 R5 + 0x88180906, // 000C GETMBR R6 R4 K6 + 0x541E003B, // 000D LDINT R7 60 + 0x141C0C07, // 000E LT R7 R6 R7 + 0x781E0000, // 000F JMPF R7 #0011 + 0x541A003B, // 0010 LDINT R6 60 + 0x541E0E0F, // 0011 LDINT R7 3600 + 0x241C0C07, // 0012 GT R7 R6 R7 + 0x781E0000, // 0013 JMPF R7 #0015 + 0x541A0E0F, // 0014 LDINT R6 3600 + 0x541A003B, // 0015 LDINT R6 60 + 0x90020E06, // 0016 SETMBR R0 K7 R6 + 0x501C0000, // 0017 LDBOOL R7 0 0 + 0x90021007, // 0018 SETMBR R0 K8 R7 + 0x881C0909, // 0019 GETMBR R7 R4 K9 + 0x90021207, // 001A SETMBR R0 K9 R7 + 0x881C030A, // 001B GETMBR R7 R1 K10 + 0x881C0F0B, // 001C GETMBR R7 R7 K11 + 0x60200012, // 001D GETGBL R8 G18 + 0x7C200000, // 001E CALL R8 0 + 0x90021808, // 001F SETMBR R0 K12 R8 + 0x8820090D, // 0020 GETMBR R8 R4 K13 + 0x4C240000, // 0021 LDNIL R9 + 0x20201009, // 0022 NE R8 R8 R9 + 0x78220012, // 0023 JMPF R8 #0037 + 0x60200010, // 0024 GETGBL R8 G16 + 0x8824090D, // 0025 GETMBR R9 R4 K13 + 0x7C200200, // 0026 CALL R8 1 + 0xA802000B, // 0027 EXBLK 0 #0034 + 0x5C241000, // 0028 MOVE R9 R8 + 0x7C240000, // 0029 CALL R9 0 + 0x8828010C, // 002A GETMBR R10 R0 K12 + 0x8C28150E, // 002B GETMET R10 R10 K14 + 0xB8321E00, // 002C GETNGBL R12 K15 + 0x8C301910, // 002D GETMET R12 R12 K16 + 0x88381311, // 002E GETMBR R14 R9 K17 + 0x883C1312, // 002F GETMBR R15 R9 K18 + 0x88401313, // 0030 GETMBR R16 R9 K19 + 0x7C300800, // 0031 CALL R12 4 + 0x7C280400, // 0032 CALL R10 2 + 0x7001FFF3, // 0033 JMP #0028 + 0x58200014, // 0034 LDCONST R8 K20 + 0xAC200200, // 0035 CATCH R8 1 0 + 0xB0080000, // 0036 RAISE 2 R0 R0 + 0xB8221E00, // 0037 GETNGBL R8 K15 + 0x88201115, // 0038 GETMBR R8 R8 K21 + 0x8C201116, // 0039 GETMET R8 R8 K22 + 0x88280917, // 003A GETMBR R10 R4 K23 + 0x4C2C0000, // 003B LDNIL R11 + 0x7C200600, // 003C CALL R8 3 + 0x60240012, // 003D GETGBL R9 G18 + 0x7C240000, // 003E CALL R9 0 + 0x90023009, // 003F SETMBR R0 K24 R9 + 0x8C240119, // 0040 GETMET R9 R0 K25 + 0x7C240200, // 0041 CALL R9 1 + 0x50240000, // 0042 LDBOOL R9 0 0 + 0x90023409, // 0043 SETMBR R0 K26 R9 + 0x80000000, // 0044 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _add_attribute_unique_path +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription; +be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(updates), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(push), + }), + be_str_weak(_add_attribute_unique_path), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* 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 + 0x780E0010, // 0005 JMPF R3 #0017 + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x88100702, // 0008 GETMBR R4 R3 K2 + 0x88140302, // 0009 GETMBR R5 R1 K2 + 0x1C100805, // 000A EQ R4 R4 R5 + 0x78120008, // 000B JMPF R4 #0015 + 0x88100703, // 000C GETMBR R4 R3 K3 + 0x88140303, // 000D GETMBR R5 R1 K3 + 0x1C100805, // 000E EQ R4 R4 R5 + 0x78120004, // 000F JMPF R4 #0015 + 0x88100704, // 0010 GETMBR R4 R3 K4 + 0x88140304, // 0011 GETMBR R5 R1 K4 + 0x1C100805, // 0012 EQ R4 R4 R5 + 0x78120000, // 0013 JMPF R4 #0015 + 0x80000800, // 0014 RET 0 + 0x00080505, // 0015 ADD R2 R2 K5 + 0x7001FFE9, // 0016 JMP #0001 + 0x880C0101, // 0017 GETMBR R3 R0 K1 + 0x8C0C0706, // 0018 GETMET R3 R3 K6 + 0x5C140200, // 0019 MOVE R5 R1 + 0x7C0C0400, // 001A CALL R3 2 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_event_generator_array +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription; +be_local_closure(class_Matter_IM_Subscription_update_event_generator_array, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(event_generators), + /* K1 */ be_const_int(0), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(restart_from), + /* K4 */ be_nested_str_weak(update_event_no), + /* K5 */ be_nested_str_weak(resize), + }), + be_str_weak(update_event_generator_array), + &be_const_str_solidified, + ( &(const binstruction[46]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x1C040301, // 0003 EQ R1 R1 K1 + 0x78060002, // 0004 JMPF R1 #0008 + 0x4C040000, // 0005 LDNIL R1 + 0x80040200, // 0006 RET 1 R1 + 0x70020024, // 0007 JMP #002D + 0x6004000C, // 0008 GETGBL R1 G12 + 0x88080100, // 0009 GETMBR R2 R0 K0 + 0x7C040200, // 000A CALL R1 1 + 0x1C040302, // 000B EQ R1 R1 K2 + 0x78060008, // 000C JMPF R1 #0016 + 0x88040100, // 000D GETMBR R1 R0 K0 + 0x94040301, // 000E GETIDX R1 R1 K1 + 0x8C040303, // 000F GETMET R1 R1 K3 + 0x880C0104, // 0010 GETMBR R3 R0 K4 + 0x7C040400, // 0011 CALL R1 2 + 0x88040100, // 0012 GETMBR R1 R0 K0 + 0x94040301, // 0013 GETIDX R1 R1 K1 + 0x80040200, // 0014 RET 1 R1 + 0x70020016, // 0015 JMP #002D + 0x60040012, // 0016 GETGBL R1 G18 + 0x7C040000, // 0017 CALL R1 0 + 0x8C080305, // 0018 GETMET R2 R1 K5 + 0x6010000C, // 0019 GETGBL R4 G12 + 0x88140100, // 001A GETMBR R5 R0 K0 + 0x7C100200, // 001B CALL R4 1 + 0x7C080400, // 001C CALL R2 2 + 0x58080001, // 001D LDCONST R2 K1 + 0x600C000C, // 001E GETGBL R3 G12 + 0x88100100, // 001F GETMBR R4 R0 K0 + 0x7C0C0200, // 0020 CALL R3 1 + 0x140C0403, // 0021 LT R3 R2 R3 + 0x780E0009, // 0022 JMPF R3 #002D + 0x880C0100, // 0023 GETMBR R3 R0 K0 + 0x940C0602, // 0024 GETIDX R3 R3 R2 + 0x8C0C0703, // 0025 GETMET R3 R3 K3 + 0x88140104, // 0026 GETMBR R5 R0 K4 + 0x7C0C0400, // 0027 CALL R3 2 + 0x880C0100, // 0028 GETMBR R3 R0 K0 + 0x940C0602, // 0029 GETIDX R3 R3 R2 + 0x98040403, // 002A SETIDX R1 R2 R3 + 0x00080502, // 002B ADD R2 R2 K2 + 0x7001FFF0, // 002C JMP #001E + 0x80000000, // 002D RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: re_arm ********************************************************************/ @@ -353,35 +459,126 @@ be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */ }), be_str_weak(re_arm), &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0xB8060200, // 0002 GETNGBL R1 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 - 0x7C040200, // 0004 CALL R1 1 - 0x88080104, // 0005 GETMBR R2 R0 K4 - 0x880C0105, // 0006 GETMBR R3 R0 K5 - 0x04080403, // 0007 SUB R2 R2 R3 - 0x540E03E7, // 0008 LDINT R3 1000 - 0x08080403, // 0009 MUL R2 R2 R3 - 0x00080202, // 000A ADD R2 R1 R2 - 0x90020602, // 000B SETMBR R0 K3 R2 - 0x88080107, // 000C GETMBR R2 R0 K7 - 0x540E03E7, // 000D LDINT R3 1000 - 0x08080403, // 000E MUL R2 R2 R3 - 0x00080202, // 000F ADD R2 R1 R2 - 0x04080508, // 0010 SUB R2 R2 K8 - 0x90020C02, // 0011 SETMBR R0 K6 R2 - 0x88080109, // 0012 GETMBR R2 R0 K9 - 0x740A0006, // 0013 JMPT R2 #001B - 0xB80A1400, // 0014 GETNGBL R2 K10 - 0x600C0018, // 0015 GETGBL R3 G24 - 0x5810000B, // 0016 LDCONST R4 K11 - 0x8814010C, // 0017 GETMBR R5 R0 K12 - 0x7C0C0400, // 0018 CALL R3 2 - 0x5810000D, // 0019 LDCONST R4 K13 - 0x7C080400, // 001A CALL R2 2 - 0x80000000, // 001B RET 0 + ( &(const binstruction[31]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x74060000, // 0001 JMPT R1 #0003 + 0x80000200, // 0002 RET 0 + 0x50040000, // 0003 LDBOOL R1 0 0 + 0x90020001, // 0004 SETMBR R0 K0 R1 + 0xB8060200, // 0005 GETNGBL R1 K1 + 0x8C040302, // 0006 GETMET R1 R1 K2 + 0x7C040200, // 0007 CALL R1 1 + 0x88080104, // 0008 GETMBR R2 R0 K4 + 0x880C0105, // 0009 GETMBR R3 R0 K5 + 0x04080403, // 000A SUB R2 R2 R3 + 0x540E03E7, // 000B LDINT R3 1000 + 0x08080403, // 000C MUL R2 R2 R3 + 0x00080202, // 000D ADD R2 R1 R2 + 0x90020602, // 000E SETMBR R0 K3 R2 + 0x88080107, // 000F GETMBR R2 R0 K7 + 0x540E03E7, // 0010 LDINT R3 1000 + 0x08080403, // 0011 MUL R2 R2 R3 + 0x00080202, // 0012 ADD R2 R1 R2 + 0x04080508, // 0013 SUB R2 R2 K8 + 0x90020C02, // 0014 SETMBR R0 K6 R2 + 0x88080109, // 0015 GETMBR R2 R0 K9 + 0x740A0006, // 0016 JMPT R2 #001E + 0xB80A1400, // 0017 GETNGBL R2 K10 + 0x600C0018, // 0018 GETGBL R3 G24 + 0x5810000B, // 0019 LDCONST R4 K11 + 0x8814010C, // 001A GETMBR R5 R0 K12 + 0x7C0C0400, // 001B CALL R3 2 + 0x5810000D, // 001C LDCONST R4 K13 + 0x7C080400, // 001D CALL R2 2 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_event_generator_or_arr +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription; +be_local_closure(class_Matter_IM_Subscription_set_event_generator_or_arr, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(event_generators), + }), + be_str_weak(set_event_generator_or_arr), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0003, // 0002 JMPF R2 #0007 + 0x60080012, // 0003 GETGBL R2 G18 + 0x7C080000, // 0004 CALL R2 0 + 0x90020002, // 0005 SETMBR R0 K0 R2 + 0x7002000A, // 0006 JMP #0012 + 0x6008000F, // 0007 GETGBL R2 G15 + 0x5C0C0200, // 0008 MOVE R3 R1 + 0x60100012, // 0009 GETGBL R4 G18 + 0x7C080400, // 000A CALL R2 2 + 0x780A0001, // 000B JMPF R2 #000E + 0x90020001, // 000C SETMBR R0 K0 R1 + 0x70020003, // 000D JMP #0012 + 0x60080012, // 000E GETGBL R2 G18 + 0x7C080000, // 000F CALL R2 0 + 0x400C0401, // 0010 CONNECT R3 R2 R1 + 0x90020002, // 0011 SETMBR R0 K0 R2 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_self +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription; +be_local_closure(class_Matter_IM_Subscription_remove_self, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D), + /* K2 */ be_nested_str_weak(subscription_id), + /* K3 */ be_const_int(3), + /* K4 */ be_nested_str_weak(subs_shop), + /* K5 */ be_nested_str_weak(remove_sub), + }), + be_str_weak(remove_self), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x60080008, // 0001 GETGBL R2 G8 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x7C080200, // 0003 CALL R2 1 + 0x000A0202, // 0004 ADD R2 K1 R2 + 0x580C0003, // 0005 LDCONST R3 K3 + 0x7C040400, // 0006 CALL R1 2 + 0x88040104, // 0007 GETMBR R1 R0 K4 + 0x8C040305, // 0008 GETMET R1 R1 K5 + 0x5C0C0000, // 0009 MOVE R3 R0 + 0x7C040400, // 000A CALL R1 2 + 0x80000000, // 000B RET 0 }) ) ); @@ -392,29 +589,34 @@ be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */ ** Solidified class: Matter_IM_Subscription ********************************************************************/ be_local_class(Matter_IM_Subscription, - 12, + 14, NULL, - be_nested_map(19, + be_nested_map(24, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(not_before, -1), be_const_var(7) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_Subscription_init_closure) }, + { be_const_key_weak(expiration, 1), be_const_var(9) }, + { be_const_key_weak(remove_self, -1), be_const_closure(class_Matter_IM_Subscription_remove_self_closure) }, + { be_const_key_weak(fabric_filtered, 23), be_const_var(7) }, + { be_const_key_weak(subs_shop, 16), be_const_var(0) }, { be_const_key_weak(attribute_updated_ctx, -1), be_const_closure(class_Matter_IM_Subscription_attribute_updated_ctx_closure) }, - { be_const_key_weak(updates, -1), be_const_var(11) }, - { be_const_key_weak(min_interval, -1), be_const_var(4) }, - { be_const_key_weak(expiration, -1), be_const_var(8) }, - { be_const_key_weak(subscription_id, 3), be_const_var(1) }, - { be_const_key_weak(subs_shop, -1), be_const_var(0) }, - { be_const_key_weak(max_interval, -1), be_const_var(5) }, - { be_const_key_weak(remove_self, 1), be_const_closure(class_Matter_IM_Subscription_remove_self_closure) }, + { be_const_key_weak(update_event_no, -1), be_const_var(13) }, { be_const_key_weak(MAX_INTERVAL_MARGIN, -1), be_const_int(5) }, - { be_const_key_weak(fabric_filtered, 7), be_const_var(6) }, - { be_const_key_weak(_add_attribute_unique_path, 11), be_const_closure(class_Matter_IM_Subscription__add_attribute_unique_path_closure) }, - { be_const_key_weak(path_list, 9), be_const_var(3) }, - { be_const_key_weak(is_keep_alive, -1), be_const_var(10) }, - { be_const_key_weak(clear_before_arm, -1), be_const_closure(class_Matter_IM_Subscription_clear_before_arm_closure) }, - { be_const_key_weak(session, 2), be_const_var(2) }, + { be_const_key_weak(session, 14), be_const_var(2) }, + { be_const_key_weak(not_before, -1), be_const_var(8) }, + { be_const_key_weak(path_list, 5), be_const_var(3) }, + { be_const_key_weak(event_generators, -1), be_const_var(4) }, + { be_const_key_weak(clear_before_arm, 4), be_const_closure(class_Matter_IM_Subscription_clear_before_arm_closure) }, + { be_const_key_weak(is_keep_alive, 11), be_const_var(11) }, + { be_const_key_weak(updates, 12), be_const_var(12) }, + { be_const_key_weak(wait_status, -1), be_const_var(10) }, + { be_const_key_weak(max_interval, -1), be_const_var(6) }, + { be_const_key_weak(init, 9), be_const_closure(class_Matter_IM_Subscription_init_closure) }, + { be_const_key_weak(min_interval, -1), be_const_var(5) }, + { be_const_key_weak(_add_attribute_unique_path, -1), be_const_closure(class_Matter_IM_Subscription__add_attribute_unique_path_closure) }, + { be_const_key_weak(update_event_generator_array, -1), be_const_closure(class_Matter_IM_Subscription_update_event_generator_array_closure) }, + { be_const_key_weak(subscription_id, -1), be_const_var(1) }, { be_const_key_weak(re_arm, -1), be_const_closure(class_Matter_IM_Subscription_re_arm_closure) }, - { be_const_key_weak(wait_status, 0), be_const_var(9) }, + { be_const_key_weak(set_event_generator_or_arr, -1), be_const_closure(class_Matter_IM_Subscription_set_event_generator_or_arr_closure) }, + { be_const_key_weak(event_published, -1), be_const_closure(class_Matter_IM_Subscription_event_published_closure) }, })), be_str_weak(Matter_IM_Subscription) ); @@ -422,10 +624,10 @@ be_local_class(Matter_IM_Subscription, extern const bclass be_class_Matter_IM_Subscription_Shop; /******************************************************************** -** Solidified function: every_250ms +** Solidified function: every_50ms ********************************************************************/ extern const bclass be_class_Matter_IM_Subscription_Shop; -be_local_closure(class_Matter_IM_Subscription_Shop_every_250ms, /* name */ +be_local_closure(class_Matter_IM_Subscription_Shop_every_50ms, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ @@ -435,79 +637,84 @@ be_local_closure(class_Matter_IM_Subscription_Shop_every_250ms, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_Subscription_Shop, 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ + ( &(const bvalue[15]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(subs), /* K2 */ be_nested_str_weak(wait_status), - /* K3 */ be_nested_str_weak(updates), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(time_reached), - /* K6 */ be_nested_str_weak(not_before), - /* K7 */ be_nested_str_weak(im), - /* K8 */ be_nested_str_weak(send_subscribe_update), - /* K9 */ be_nested_str_weak(clear_before_arm), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(expiration), - /* K12 */ be_nested_str_weak(send_subscribe_heartbeat), - /* K13 */ be_nested_str_weak(re_arm), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(time_reached), + /* K5 */ be_nested_str_weak(not_before), + /* K6 */ be_nested_str_weak(updates), + /* K7 */ be_nested_str_weak(update_event_no), + /* K8 */ be_nested_str_weak(im), + /* K9 */ be_nested_str_weak(send_subscribe_update), + /* K10 */ be_nested_str_weak(clear_before_arm), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(expiration), + /* K13 */ be_nested_str_weak(send_subscribe_heartbeat), + /* K14 */ be_nested_str_weak(re_arm), }), - be_str_weak(every_250ms), + be_str_weak(every_50ms), &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ + ( &(const binstruction[58]) { /* 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 - 0x780A0015, // 0005 JMPF R2 #001C + 0x780A0019, // 0005 JMPF R2 #0020 0x88080101, // 0006 GETMBR R2 R0 K1 0x94080401, // 0007 GETIDX R2 R2 R1 0x880C0502, // 0008 GETMBR R3 R2 K2 - 0x740E000F, // 0009 JMPT R3 #001A - 0x600C000C, // 000A GETGBL R3 G12 - 0x88100503, // 000B GETMBR R4 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x240C0700, // 000D GT R3 R3 K0 - 0x780E000A, // 000E JMPF R3 #001A - 0xB80E0800, // 000F GETNGBL R3 K4 - 0x8C0C0705, // 0010 GETMET R3 R3 K5 - 0x88140506, // 0011 GETMBR R5 R2 K6 - 0x7C0C0400, // 0012 CALL R3 2 - 0x780E0005, // 0013 JMPF R3 #001A - 0x880C0107, // 0014 GETMBR R3 R0 K7 - 0x8C0C0708, // 0015 GETMET R3 R3 K8 - 0x5C140400, // 0016 MOVE R5 R2 - 0x7C0C0400, // 0017 CALL R3 2 - 0x8C0C0509, // 0018 GETMET R3 R2 K9 - 0x7C0C0200, // 0019 CALL R3 1 - 0x0004030A, // 001A ADD R1 R1 K10 - 0x7001FFE4, // 001B JMP #0001 - 0x58040000, // 001C LDCONST R1 K0 - 0x6008000C, // 001D GETGBL R2 G12 - 0x880C0101, // 001E GETMBR R3 R0 K1 - 0x7C080200, // 001F CALL R2 1 - 0x14080202, // 0020 LT R2 R1 R2 - 0x780A0012, // 0021 JMPF R2 #0035 - 0x88080101, // 0022 GETMBR R2 R0 K1 - 0x94080401, // 0023 GETIDX R2 R2 R1 - 0x880C0502, // 0024 GETMBR R3 R2 K2 - 0x740E000C, // 0025 JMPT R3 #0033 - 0xB80E0800, // 0026 GETNGBL R3 K4 - 0x8C0C0705, // 0027 GETMET R3 R3 K5 - 0x8814050B, // 0028 GETMBR R5 R2 K11 - 0x7C0C0400, // 0029 CALL R3 2 - 0x780E0007, // 002A JMPF R3 #0033 - 0x880C0107, // 002B GETMBR R3 R0 K7 - 0x8C0C070C, // 002C GETMET R3 R3 K12 - 0x5C140400, // 002D MOVE R5 R2 - 0x7C0C0400, // 002E CALL R3 2 - 0x8C0C0509, // 002F GETMET R3 R2 K9 - 0x7C0C0200, // 0030 CALL R3 1 - 0x8C0C050D, // 0031 GETMET R3 R2 K13 - 0x7C0C0200, // 0032 CALL R3 1 - 0x0004030A, // 0033 ADD R1 R1 K10 - 0x7001FFE7, // 0034 JMP #001D - 0x80000000, // 0035 RET 0 + 0x740E0013, // 0009 JMPT R3 #001E + 0xB80E0600, // 000A GETNGBL R3 K3 + 0x8C0C0704, // 000B GETMET R3 R3 K4 + 0x88140505, // 000C GETMBR R5 R2 K5 + 0x7C0C0400, // 000D CALL R3 2 + 0x780E000E, // 000E JMPF R3 #001E + 0x600C000C, // 000F GETGBL R3 G12 + 0x88100506, // 0010 GETMBR R4 R2 K6 + 0x7C0C0200, // 0011 CALL R3 1 + 0x240C0700, // 0012 GT R3 R3 K0 + 0x740E0003, // 0013 JMPT R3 #0018 + 0x880C0507, // 0014 GETMBR R3 R2 K7 + 0x4C100000, // 0015 LDNIL R4 + 0x200C0604, // 0016 NE R3 R3 R4 + 0x780E0005, // 0017 JMPF R3 #001E + 0x880C0108, // 0018 GETMBR R3 R0 K8 + 0x8C0C0709, // 0019 GETMET R3 R3 K9 + 0x5C140400, // 001A MOVE R5 R2 + 0x7C0C0400, // 001B CALL R3 2 + 0x8C0C050A, // 001C GETMET R3 R2 K10 + 0x7C0C0200, // 001D CALL R3 1 + 0x0004030B, // 001E ADD R1 R1 K11 + 0x7001FFE0, // 001F JMP #0001 + 0x58040000, // 0020 LDCONST R1 K0 + 0x6008000C, // 0021 GETGBL R2 G12 + 0x880C0101, // 0022 GETMBR R3 R0 K1 + 0x7C080200, // 0023 CALL R2 1 + 0x14080202, // 0024 LT R2 R1 R2 + 0x780A0012, // 0025 JMPF R2 #0039 + 0x88080101, // 0026 GETMBR R2 R0 K1 + 0x94080401, // 0027 GETIDX R2 R2 R1 + 0x880C0502, // 0028 GETMBR R3 R2 K2 + 0x740E000C, // 0029 JMPT R3 #0037 + 0xB80E0600, // 002A GETNGBL R3 K3 + 0x8C0C0704, // 002B GETMET R3 R3 K4 + 0x8814050C, // 002C GETMBR R5 R2 K12 + 0x7C0C0400, // 002D CALL R3 2 + 0x780E0007, // 002E JMPF R3 #0037 + 0x880C0108, // 002F GETMBR R3 R0 K8 + 0x8C0C070D, // 0030 GETMET R3 R3 K13 + 0x5C140400, // 0031 MOVE R5 R2 + 0x7C0C0400, // 0032 CALL R3 2 + 0x8C0C050A, // 0033 GETMET R3 R2 K10 + 0x7C0C0200, // 0034 CALL R3 1 + 0x8C0C050E, // 0035 GETMET R3 R2 K14 + 0x7C0C0200, // 0036 CALL R3 1 + 0x0004030B, // 0037 ADD R1 R1 K11 + 0x7001FFE7, // 0038 JMP #0021 + 0x80000000, // 0039 RET 0 }) ) ); @@ -515,12 +722,12 @@ be_local_closure(class_Matter_IM_Subscription_Shop_every_250ms, /* name */ /******************************************************************** -** Solidified function: get_by_id +** Solidified function: init ********************************************************************/ extern const bclass be_class_Matter_IM_Subscription_Shop; -be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ +be_local_closure(class_Matter_IM_Subscription_Shop_init, /* name */ be_nested_proto( - 5, /* nstack */ + 3, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -528,100 +735,62 @@ be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_Subscription_Shop, 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(im), + /* K1 */ be_nested_str_weak(subs), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attribute_updated_ctx +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription_Shop; +be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription_Shop, + 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(subs), - /* K2 */ be_nested_str_weak(subscription_id), + /* K2 */ be_nested_str_weak(attribute_updated_ctx), /* K3 */ be_const_int(1), }), - be_str_weak(get_by_id), + be_str_weak(attribute_updated_ctx), &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 - 0x780E0009, // 0005 JMPF R3 #0010 - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x880C0702, // 0008 GETMBR R3 R3 K2 - 0x1C0C0601, // 0009 EQ R3 R3 R1 - 0x780E0002, // 000A JMPF R3 #000E - 0x880C0101, // 000B GETMBR R3 R0 K1 - 0x940C0602, // 000C GETIDX R3 R3 R2 - 0x80040600, // 000D RET 1 R3 - 0x00080503, // 000E ADD R2 R2 K3 - 0x7001FFF0, // 000F JMP #0001 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: new_subscription -********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription_Shop; -be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Subscription_Shop, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(random), - /* K2 */ be_const_int(2), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(get_by_id), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(IM_Subscription), - /* K8 */ be_nested_str_weak(subs), - /* K9 */ be_nested_str_weak(push), - }), - be_str_weak(new_subscription), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x8C100701, // 0001 GETMET R4 R3 K1 - 0x58180002, // 0002 LDCONST R6 K2 - 0x7C100400, // 0003 CALL R4 2 - 0x8C100903, // 0004 GETMET R4 R4 K3 - 0x58180004, // 0005 LDCONST R6 K4 - 0x581C0002, // 0006 LDCONST R7 K2 - 0x7C100600, // 0007 CALL R4 3 - 0x8C140105, // 0008 GETMET R5 R0 K5 - 0x5C1C0800, // 0009 MOVE R7 R4 - 0x7C140400, // 000A CALL R5 2 - 0x78160008, // 000B JMPF R5 #0015 - 0x8C140701, // 000C GETMET R5 R3 K1 - 0x581C0002, // 000D LDCONST R7 K2 - 0x7C140400, // 000E CALL R5 2 - 0x8C140B03, // 000F GETMET R5 R5 K3 - 0x581C0004, // 0010 LDCONST R7 K4 - 0x58200002, // 0011 LDCONST R8 K2 - 0x7C140600, // 0012 CALL R5 3 - 0x5C100A00, // 0013 MOVE R4 R5 - 0x7001FFF2, // 0014 JMP #0008 - 0xB8160C00, // 0015 GETNGBL R5 K6 - 0x8C140B07, // 0016 GETMET R5 R5 K7 - 0x5C1C0000, // 0017 MOVE R7 R0 - 0x5C200800, // 0018 MOVE R8 R4 - 0x5C240200, // 0019 MOVE R9 R1 - 0x5C280400, // 001A MOVE R10 R2 - 0x7C140A00, // 001B CALL R5 5 - 0x88180108, // 001C GETMBR R6 R0 K8 - 0x8C180D09, // 001D GETMET R6 R6 K9 - 0x5C200A00, // 001E MOVE R8 R5 - 0x7C180400, // 001F CALL R6 2 - 0x80040A00, // 0020 RET 1 R5 + ( &(const binstruction[15]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x6010000C, // 0001 GETGBL R4 G12 + 0x88140101, // 0002 GETMBR R5 R0 K1 + 0x7C100200, // 0003 CALL R4 1 + 0x14100604, // 0004 LT R4 R3 R4 + 0x78120007, // 0005 JMPF R4 #000E + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x94100803, // 0007 GETIDX R4 R4 R3 + 0x8C100902, // 0008 GETMET R4 R4 K2 + 0x5C180200, // 0009 MOVE R6 R1 + 0x5C1C0400, // 000A MOVE R7 R2 + 0x7C100600, // 000B CALL R4 3 + 0x000C0703, // 000C ADD R3 R3 K3 + 0x7001FFF2, // 000D JMP #0001 + 0x80000000, // 000E RET 0 }) ) ); @@ -676,13 +845,82 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */ /******************************************************************** -** Solidified function: attribute_updated_ctx +** Solidified function: new_subscription ********************************************************************/ extern const bclass be_class_Matter_IM_Subscription_Shop; -be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* name */ +be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name */ be_nested_proto( - 8, /* nstack */ - 3, /* argc */ + 13, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription_Shop, + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(random), + /* K2 */ be_const_int(2), + /* K3 */ be_nested_str_weak(get), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(get_by_id), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(IM_Subscription), + /* K8 */ be_nested_str_weak(subs), + /* K9 */ be_nested_str_weak(push), + }), + be_str_weak(new_subscription), + &be_const_str_solidified, + ( &(const binstruction[34]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x8C140901, // 0001 GETMET R5 R4 K1 + 0x581C0002, // 0002 LDCONST R7 K2 + 0x7C140400, // 0003 CALL R5 2 + 0x8C140B03, // 0004 GETMET R5 R5 K3 + 0x581C0004, // 0005 LDCONST R7 K4 + 0x58200002, // 0006 LDCONST R8 K2 + 0x7C140600, // 0007 CALL R5 3 + 0x8C180105, // 0008 GETMET R6 R0 K5 + 0x5C200A00, // 0009 MOVE R8 R5 + 0x7C180400, // 000A CALL R6 2 + 0x781A0008, // 000B JMPF R6 #0015 + 0x8C180901, // 000C GETMET R6 R4 K1 + 0x58200002, // 000D LDCONST R8 K2 + 0x7C180400, // 000E CALL R6 2 + 0x8C180D03, // 000F GETMET R6 R6 K3 + 0x58200004, // 0010 LDCONST R8 K4 + 0x58240002, // 0011 LDCONST R9 K2 + 0x7C180600, // 0012 CALL R6 3 + 0x5C140C00, // 0013 MOVE R5 R6 + 0x7001FFF2, // 0014 JMP #0008 + 0xB81A0C00, // 0015 GETNGBL R6 K6 + 0x8C180D07, // 0016 GETMET R6 R6 K7 + 0x5C200000, // 0017 MOVE R8 R0 + 0x5C240A00, // 0018 MOVE R9 R5 + 0x5C280200, // 0019 MOVE R10 R1 + 0x5C2C0400, // 001A MOVE R11 R2 + 0x5C300600, // 001B MOVE R12 R3 + 0x7C180C00, // 001C CALL R6 6 + 0x881C0108, // 001D GETMBR R7 R0 K8 + 0x8C1C0F09, // 001E GETMET R7 R7 K9 + 0x5C240C00, // 001F MOVE R9 R6 + 0x7C1C0400, // 0020 CALL R7 2 + 0x80040C00, // 0021 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: event_published +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription_Shop; +be_local_closure(class_Matter_IM_Subscription_Shop_event_published, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -692,27 +930,26 @@ be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* n ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(subs), - /* K2 */ be_nested_str_weak(attribute_updated_ctx), + /* K2 */ be_nested_str_weak(event_published), /* K3 */ be_const_int(1), }), - be_str_weak(attribute_updated_ctx), + be_str_weak(event_published), &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0x6010000C, // 0001 GETGBL R4 G12 - 0x88140101, // 0002 GETMBR R5 R0 K1 - 0x7C100200, // 0003 CALL R4 1 - 0x14100604, // 0004 LT R4 R3 R4 - 0x78120007, // 0005 JMPF R4 #000E - 0x88100101, // 0006 GETMBR R4 R0 K1 - 0x94100803, // 0007 GETIDX R4 R4 R3 - 0x8C100902, // 0008 GETMET R4 R4 K2 - 0x5C180200, // 0009 MOVE R6 R1 - 0x5C1C0400, // 000A MOVE R7 R2 - 0x7C100600, // 000B CALL R4 3 - 0x000C0703, // 000C ADD R3 R3 K3 - 0x7001FFF2, // 000D JMP #0001 - 0x80000000, // 000E RET 0 + ( &(const binstruction[14]) { /* 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 + 0x780E0006, // 0005 JMPF R3 #000D + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x8C0C0702, // 0008 GETMET R3 R3 K2 + 0x5C140200, // 0009 MOVE R5 R1 + 0x7C0C0400, // 000A CALL R3 2 + 0x00080503, // 000B ADD R2 R2 K3 + 0x7001FFF3, // 000C JMP #0001 + 0x80000000, // 000D RET 0 }) ) ); @@ -768,38 +1005,6 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name /*******************************************************************/ -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription_Shop; -be_local_closure(class_Matter_IM_Subscription_Shop_init, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Subscription_Shop, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(im), - /* K1 */ be_nested_str_weak(subs), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: remove_by_fabric ********************************************************************/ @@ -842,24 +1047,71 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric, /* name * /*******************************************************************/ +/******************************************************************** +** Solidified function: get_by_id +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription_Shop; +be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription_Shop, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(subs), + /* K2 */ be_nested_str_weak(subscription_id), + /* K3 */ be_const_int(1), + }), + be_str_weak(get_by_id), + &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 + 0x780E0009, // 0005 JMPF R3 #0010 + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x880C0702, // 0008 GETMBR R3 R3 K2 + 0x1C0C0601, // 0009 EQ R3 R3 R1 + 0x780E0002, // 000A JMPF R3 #000E + 0x880C0101, // 000B GETMBR R3 R0 K1 + 0x940C0602, // 000C GETIDX R3 R3 R2 + 0x80040600, // 000D RET 1 R3 + 0x00080503, // 000E ADD R2 R2 K3 + 0x7001FFF0, // 000F JMP #0001 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_IM_Subscription_Shop ********************************************************************/ be_local_class(Matter_IM_Subscription_Shop, 2, NULL, - be_nested_map(10, + be_nested_map(11, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_IM_Subscription_Shop_every_250ms_closure) }, + { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_IM_Subscription_Shop_every_50ms_closure) }, { be_const_key_weak(get_by_id, -1), be_const_closure(class_Matter_IM_Subscription_Shop_get_by_id_closure) }, { be_const_key_weak(attribute_updated_ctx, -1), be_const_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx_closure) }, - { be_const_key_weak(init, 2), be_const_closure(class_Matter_IM_Subscription_Shop_init_closure) }, { be_const_key_weak(remove_sub, -1), be_const_closure(class_Matter_IM_Subscription_Shop_remove_sub_closure) }, - { be_const_key_weak(new_subscription, 3), be_const_closure(class_Matter_IM_Subscription_Shop_new_subscription_closure) }, - { be_const_key_weak(subs, 8), be_const_var(0) }, - { be_const_key_weak(im, -1), be_const_var(1) }, - { be_const_key_weak(remove_by_session, -1), be_const_closure(class_Matter_IM_Subscription_Shop_remove_by_session_closure) }, { be_const_key_weak(remove_by_fabric, -1), be_const_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric_closure) }, + { be_const_key_weak(new_subscription, -1), be_const_closure(class_Matter_IM_Subscription_Shop_new_subscription_closure) }, + { be_const_key_weak(event_published, -1), be_const_closure(class_Matter_IM_Subscription_Shop_event_published_closure) }, + { be_const_key_weak(subs, -1), be_const_var(0) }, + { be_const_key_weak(remove_by_session, -1), be_const_closure(class_Matter_IM_Subscription_Shop_remove_by_session_closure) }, + { be_const_key_weak(init, 4), be_const_closure(class_Matter_IM_Subscription_Shop_init_closure) }, + { be_const_key_weak(im, 1), be_const_var(1) }, })), be_str_weak(Matter_IM_Subscription_Shop) ); 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 be8bf07c2..80fbe0851 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h @@ -695,10 +695,10 @@ be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */ /******************************************************************** -** Solidified function: every_250ms +** Solidified function: every_50ms ********************************************************************/ extern const bclass be_class_Matter_MessageHandler; -be_local_closure(class_Matter_MessageHandler_every_250ms, /* name */ +be_local_closure(class_Matter_MessageHandler_every_50ms, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -710,9 +710,9 @@ be_local_closure(class_Matter_MessageHandler_every_250ms, /* name */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(im), - /* K1 */ be_nested_str_weak(every_250ms), + /* K1 */ be_nested_str_weak(every_50ms), }), - be_str_weak(every_250ms), + be_str_weak(every_50ms), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -775,7 +775,7 @@ be_local_class(Matter_MessageHandler, { be_const_key_weak(msg_received, -1), be_const_closure(class_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(class_Matter_MessageHandler_every_second_closure) }, - { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_MessageHandler_every_250ms_closure) }, + { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_MessageHandler_every_50ms_closure) }, { be_const_key_weak(send_simple_ack, 1), be_const_closure(class_Matter_MessageHandler_send_simple_ack_closure) }, { be_const_key_weak(send_response_frame, 6), be_const_closure(class_Matter_MessageHandler_send_response_frame_closure) }, { be_const_key_weak(control_message, -1), be_const_var(3) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h index 0fb2d42fd..c6b0ab25d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h @@ -6,6 +6,81 @@ extern const bclass be_class_Matter_Path; +/******************************************************************** +** Solidified function: reset +********************************************************************/ +extern const bclass be_class_Matter_Path; +be_local_closure(class_Matter_Path_reset, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Path, + 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 function: init +********************************************************************/ +extern const bclass be_class_Matter_Path; +be_local_closure(class_Matter_Path_init, /* name */ + be_nested_proto( + 4, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Path, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x90020403, // 0002 SETMBR R0 K2 R3 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: tostring ********************************************************************/ @@ -161,68 +236,26 @@ be_local_closure(class_Matter_Path_copy, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: reset -********************************************************************/ -extern const bclass be_class_Matter_Path; -be_local_closure(class_Matter_Path_reset, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Path, - 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, 8, NULL, - be_nested_map(11, + be_nested_map(12, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(command, -1), be_const_var(4) }, - { be_const_key_weak(cluster, 5), be_const_var(1) }, - { be_const_key_weak(attribute, -1), be_const_var(2) }, - { be_const_key_weak(tostring, 9), be_const_closure(class_Matter_Path_tostring_closure) }, - { be_const_key_weak(log, -1), be_const_var(6) }, - { be_const_key_weak(status, 2), be_const_var(5) }, - { be_const_key_weak(endpoint, -1), be_const_var(0) }, - { be_const_key_weak(msg, 6), be_const_var(7) }, - { be_const_key_weak(fabric_filtered, -1), be_const_var(3) }, - { be_const_key_weak(copy, -1), be_const_closure(class_Matter_Path_copy_closure) }, { be_const_key_weak(reset, -1), be_const_closure(class_Matter_Path_reset_closure) }, + { be_const_key_weak(cluster, 5), be_const_var(1) }, + { be_const_key_weak(fabric_filtered, 6), be_const_var(3) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Path_init_closure) }, + { be_const_key_weak(endpoint, -1), be_const_var(0) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_Matter_Path_tostring_closure) }, + { be_const_key_weak(command, 10), be_const_var(4) }, + { be_const_key_weak(status, -1), be_const_var(5) }, + { be_const_key_weak(copy, -1), be_const_closure(class_Matter_Path_copy_closure) }, + { be_const_key_weak(log, -1), be_const_var(6) }, + { be_const_key_weak(msg, -1), be_const_var(7) }, + { be_const_key_weak(attribute, -1), be_const_var(2) }, })), be_str_weak(Matter_Path) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h new file mode 100644 index 000000000..678c04f70 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h @@ -0,0 +1,351 @@ +/* Solidification of Matter_Path_1_EventGenerator.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_EventGenerator; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_init, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_pi +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_get_pi, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(get_pi), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_start, /* name */ + be_nested_proto( + 7, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(reset), + /* K1 */ be_nested_str_weak(path_in_endpoint), + /* K2 */ be_nested_str_weak(path_in_cluster), + /* K3 */ be_nested_str_weak(path_in_event), + /* K4 */ be_nested_str_weak(path_in_event_min), + /* K5 */ be_nested_str_weak(event_no), + /* K6 */ be_nested_str_weak(finished), + }), + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x8C140100, // 0000 GETMET R5 R0 K0 + 0x7C140200, // 0001 CALL R5 1 + 0x90020201, // 0002 SETMBR R0 K1 R1 + 0x90020402, // 0003 SETMBR R0 K2 R2 + 0x90020603, // 0004 SETMBR R0 K3 R3 + 0x90020804, // 0005 SETMBR R0 K4 R4 + 0x90020A04, // 0006 SETMBR R0 K5 R4 + 0x50140000, // 0007 LDBOOL R5 0 0 + 0x90020C05, // 0008 SETMBR R0 K6 R5 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: reset +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_reset, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(event_no), + /* K1 */ be_nested_str_weak(finished), + }), + be_str_weak(reset), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x50080200, // 0002 LDBOOL R2 1 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_finished +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_is_finished, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(finished), + }), + be_str_weak(is_finished), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: event_is_match +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_event_is_match, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(path_in_endpoint), + /* K1 */ be_nested_str_weak(endpoint), + /* K2 */ be_nested_str_weak(path_in_cluster), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(path_in_event), + /* K5 */ be_nested_str_weak(event_id), + }), + be_str_weak(event_is_match), + &be_const_str_solidified, + ( &(const binstruction[38]) { /* code */ + 0x50080200, // 0000 LDBOOL R2 1 0 + 0x880C0100, // 0001 GETMBR R3 R0 K0 + 0x4C100000, // 0002 LDNIL R4 + 0x200C0604, // 0003 NE R3 R3 R4 + 0x780E0007, // 0004 JMPF R3 #000D + 0x780A0003, // 0005 JMPF R2 #000A + 0x880C0100, // 0006 GETMBR R3 R0 K0 + 0x88100301, // 0007 GETMBR R4 R1 K1 + 0x1C0C0604, // 0008 EQ R3 R3 R4 + 0x740E0000, // 0009 JMPT R3 #000B + 0x500C0001, // 000A LDBOOL R3 0 1 + 0x500C0200, // 000B LDBOOL R3 1 0 + 0x5C080600, // 000C MOVE R2 R3 + 0x880C0102, // 000D GETMBR R3 R0 K2 + 0x4C100000, // 000E LDNIL R4 + 0x200C0604, // 000F NE R3 R3 R4 + 0x780E0007, // 0010 JMPF R3 #0019 + 0x780A0003, // 0011 JMPF R2 #0016 + 0x880C0102, // 0012 GETMBR R3 R0 K2 + 0x88100303, // 0013 GETMBR R4 R1 K3 + 0x1C0C0604, // 0014 EQ R3 R3 R4 + 0x740E0000, // 0015 JMPT R3 #0017 + 0x500C0001, // 0016 LDBOOL R3 0 1 + 0x500C0200, // 0017 LDBOOL R3 1 0 + 0x5C080600, // 0018 MOVE R2 R3 + 0x880C0104, // 0019 GETMBR R3 R0 K4 + 0x4C100000, // 001A LDNIL R4 + 0x200C0604, // 001B NE R3 R3 R4 + 0x780E0007, // 001C JMPF R3 #0025 + 0x780A0003, // 001D JMPF R2 #0022 + 0x880C0104, // 001E GETMBR R3 R0 K4 + 0x88100305, // 001F GETMBR R4 R1 K5 + 0x1C0C0604, // 0020 EQ R3 R3 R4 + 0x740E0000, // 0021 JMPT R3 #0023 + 0x500C0001, // 0022 LDBOOL R3 0 1 + 0x500C0200, // 0023 LDBOOL R3 1 0 + 0x5C080600, // 0024 MOVE R2 R3 + 0x80040400, // 0025 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: next_event +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_next_event, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(finished), + /* K1 */ be_nested_str_weak(device), + /* K2 */ be_nested_str_weak(events), + /* K3 */ be_nested_str_weak(find_min_no), + /* K4 */ be_nested_str_weak(event_no), + /* K5 */ be_nested_str_weak(reset), + /* K6 */ be_nested_str_weak(event_is_match), + }), + be_str_weak(next_event), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060001, // 0001 JMPF R1 #0004 + 0x4C040000, // 0002 LDNIL R1 + 0x80040200, // 0003 RET 1 R1 + 0x50040200, // 0004 LDBOOL R1 1 0 + 0x78060013, // 0005 JMPF R1 #001A + 0x88040101, // 0006 GETMBR R1 R0 K1 + 0x88040302, // 0007 GETMBR R1 R1 K2 + 0x8C040303, // 0008 GETMET R1 R1 K3 + 0x880C0104, // 0009 GETMBR R3 R0 K4 + 0x7C040400, // 000A CALL R1 2 + 0x4C080000, // 000B LDNIL R2 + 0x1C080202, // 000C EQ R2 R1 R2 + 0x780A0003, // 000D JMPF R2 #0012 + 0x8C080105, // 000E GETMET R2 R0 K5 + 0x7C080200, // 000F CALL R2 1 + 0x4C080000, // 0010 LDNIL R2 + 0x80040400, // 0011 RET 1 R2 + 0x88080304, // 0012 GETMBR R2 R1 K4 + 0x90020802, // 0013 SETMBR R0 K4 R2 + 0x8C080106, // 0014 GETMET R2 R0 K6 + 0x5C100200, // 0015 MOVE R4 R1 + 0x7C080400, // 0016 CALL R2 2 + 0x780A0000, // 0017 JMPF R2 #0019 + 0x80040200, // 0018 RET 1 R1 + 0x7001FFE9, // 0019 JMP #0004 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: restart_from +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_restart_from, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(finished), + /* K1 */ be_nested_str_weak(event_no), + }), + be_str_weak(restart_from), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x50080000, // 0000 LDBOOL R2 0 0 + 0x90020002, // 0001 SETMBR R0 K0 R2 + 0x90020201, // 0002 SETMBR R0 K1 R1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_EventGenerator +********************************************************************/ +be_local_class(Matter_EventGenerator, + 7, + NULL, + be_nested_map(15, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(init, -1), be_const_closure(class_Matter_EventGenerator_init_closure) }, + { be_const_key_weak(path_in_endpoint, -1), be_const_var(1) }, + { be_const_key_weak(get_pi, -1), be_const_closure(class_Matter_EventGenerator_get_pi_closure) }, + { be_const_key_weak(path_in_event, -1), be_const_var(3) }, + { be_const_key_weak(finished, -1), be_const_var(6) }, + { be_const_key_weak(path_in_event_min, -1), be_const_var(4) }, + { be_const_key_weak(device, -1), be_const_var(0) }, + { be_const_key_weak(event_no, 9), be_const_var(5) }, + { be_const_key_weak(is_finished, -1), be_const_closure(class_Matter_EventGenerator_is_finished_closure) }, + { be_const_key_weak(restart_from, 5), be_const_closure(class_Matter_EventGenerator_restart_from_closure) }, + { be_const_key_weak(event_is_match, -1), be_const_closure(class_Matter_EventGenerator_event_is_match_closure) }, + { be_const_key_weak(start, 13), be_const_closure(class_Matter_EventGenerator_start_closure) }, + { be_const_key_weak(reset, 7), be_const_closure(class_Matter_EventGenerator_reset_closure) }, + { be_const_key_weak(next_event, -1), be_const_closure(class_Matter_EventGenerator_next_event_closure) }, + { be_const_key_weak(path_in_cluster, -1), be_const_var(2) }, + })), + be_str_weak(Matter_EventGenerator) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_Generator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h similarity index 96% rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_Generator.h rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h index 5457a5159..7ac8fdb3e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_Generator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h @@ -1,4 +1,4 @@ -/* Solidification of Matter_Path_1_Generator.h */ +/* Solidification of Matter_Path_1_PathGenerator.h */ /********************************************************************\ * Generated code, don't edit * \********************************************************************/ @@ -119,10 +119,10 @@ be_local_closure(class_Matter_PathGenerator_is_direct, /* name */ /******************************************************************** -** Solidified function: default_status_error +** Solidified function: is_finished ********************************************************************/ extern const bclass be_class_Matter_PathGenerator; -be_local_closure(class_Matter_PathGenerator_default_status_error, /* name */ +be_local_closure(class_Matter_PathGenerator_is_finished, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -132,43 +132,16 @@ be_local_closure(class_Matter_PathGenerator_default_status_error, /* name */ 0, /* has sup protos */ &be_class_Matter_PathGenerator, 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(is_direct), - /* K1 */ be_nested_str_weak(endpoint_found), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - /* K4 */ be_nested_str_weak(cluster_found), - /* K5 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), - /* K6 */ be_nested_str_weak(attribute_found), - /* K7 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K8 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(pi), }), - be_str_weak(default_status_error), + be_str_weak(is_finished), &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x78060011, // 0002 JMPF R1 #0015 - 0x88040101, // 0003 GETMBR R1 R0 K1 - 0x74060002, // 0004 JMPT R1 #0008 - 0xB8060400, // 0005 GETNGBL R1 K2 - 0x88040303, // 0006 GETMBR R1 R1 K3 - 0x80040200, // 0007 RET 1 R1 - 0x88040104, // 0008 GETMBR R1 R0 K4 - 0x74060002, // 0009 JMPT R1 #000D - 0xB8060400, // 000A GETNGBL R1 K2 - 0x88040305, // 000B GETMBR R1 R1 K5 - 0x80040200, // 000C RET 1 R1 - 0x88040106, // 000D GETMBR R1 R0 K6 - 0x74060002, // 000E JMPT R1 #0012 - 0xB8060400, // 000F GETNGBL R1 K2 - 0x88040307, // 0010 GETMBR R1 R1 K7 - 0x80040200, // 0011 RET 1 R1 - 0xB8060400, // 0012 GETNGBL R1 K2 - 0x88040308, // 0013 GETMBR R1 R1 K8 - 0x80040200, // 0014 RET 1 R1 - 0x4C040000, // 0015 LDNIL R1 - 0x80040200, // 0016 RET 1 R1 + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x50080000, // 0001 LDBOOL R2 0 0 + 0x20040202, // 0002 NE R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -176,10 +149,10 @@ be_local_closure(class_Matter_PathGenerator_default_status_error, /* name */ /******************************************************************** -** Solidified function: next +** Solidified function: next_attribute ********************************************************************/ extern const bclass be_class_Matter_PathGenerator; -be_local_closure(class_Matter_PathGenerator_next, /* name */ +be_local_closure(class_Matter_PathGenerator_next_attribute, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -210,9 +183,9 @@ be_local_closure(class_Matter_PathGenerator_next, /* name */ /* K17 */ be_nested_str_weak(path_in_endpoint), /* K18 */ be_nested_str_weak(path_in_cluster), /* K19 */ be_nested_str_weak(path_in_attribute), - /* K20 */ be_nested_str_weak(default_status_error), + /* K20 */ be_nested_str_weak(_default_status_error), }), - be_str_weak(next), + be_str_weak(next_attribute), &be_const_str_solidified, ( &(const binstruction[95]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -392,10 +365,10 @@ be_local_closure(class_Matter_PathGenerator__next_cluster, /* name */ /******************************************************************** -** Solidified function: finished +** Solidified function: _default_status_error ********************************************************************/ extern const bclass be_class_Matter_PathGenerator; -be_local_closure(class_Matter_PathGenerator_finished, /* name */ +be_local_closure(class_Matter_PathGenerator__default_status_error, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -405,16 +378,43 @@ be_local_closure(class_Matter_PathGenerator_finished, /* name */ 0, /* has sup protos */ &be_class_Matter_PathGenerator, 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(pi), + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(is_direct), + /* K1 */ be_nested_str_weak(endpoint_found), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K4 */ be_nested_str_weak(cluster_found), + /* K5 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K6 */ be_nested_str_weak(attribute_found), + /* K7 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K8 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), }), - be_str_weak(finished), + be_str_weak(_default_status_error), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x50080000, // 0001 LDBOOL R2 0 0 - 0x20040202, // 0002 NE R1 R1 R2 - 0x80040200, // 0003 RET 1 R1 + ( &(const binstruction[23]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x78060011, // 0002 JMPF R1 #0015 + 0x88040101, // 0003 GETMBR R1 R0 K1 + 0x74060002, // 0004 JMPT R1 #0008 + 0xB8060400, // 0005 GETNGBL R1 K2 + 0x88040303, // 0006 GETMBR R1 R1 K3 + 0x80040200, // 0007 RET 1 R1 + 0x88040104, // 0008 GETMBR R1 R0 K4 + 0x74060002, // 0009 JMPT R1 #000D + 0xB8060400, // 000A GETNGBL R1 K2 + 0x88040305, // 000B GETMBR R1 R1 K5 + 0x80040200, // 000C RET 1 R1 + 0x88040106, // 000D GETMBR R1 R0 K6 + 0x74060002, // 000E JMPT R1 #0012 + 0xB8060400, // 000F GETNGBL R1 K2 + 0x88040307, // 0010 GETMBR R1 R1 K7 + 0x80040200, // 0011 RET 1 R1 + 0xB8060400, // 0012 GETNGBL R1 K2 + 0x88040308, // 0013 GETMBR R1 R1 K8 + 0x80040200, // 0014 RET 1 R1 + 0x4C040000, // 0015 LDNIL R1 + 0x80040200, // 0016 RET 1 R1 }) ) ); @@ -699,9 +699,9 @@ be_local_class(Matter_PathGenerator, { be_const_key_weak(path_in_endpoint, -1), be_const_var(1) }, { be_const_key_weak(path_in_cluster, -1), be_const_var(2) }, { be_const_key_weak(get_pi, -1), be_const_closure(class_Matter_PathGenerator_get_pi_closure) }, - { be_const_key_weak(is_direct, 22), be_const_closure(class_Matter_PathGenerator_is_direct_closure) }, - { be_const_key_weak(default_status_error, 9), be_const_closure(class_Matter_PathGenerator_default_status_error_closure) }, - { be_const_key_weak(next, -1), be_const_closure(class_Matter_PathGenerator_next_closure) }, + { be_const_key_weak(is_direct, 9), be_const_closure(class_Matter_PathGenerator_is_direct_closure) }, + { be_const_key_weak(is_finished, -1), be_const_closure(class_Matter_PathGenerator_is_finished_closure) }, + { be_const_key_weak(next_attribute, 22), be_const_closure(class_Matter_PathGenerator_next_attribute_closure) }, { be_const_key_weak(cluster_found, 17), be_const_var(10) }, { be_const_key_weak(endpoint_found, 6), be_const_var(9) }, { be_const_key_weak(_next_attribute, -1), be_const_closure(class_Matter_PathGenerator__next_attribute_closure) }, @@ -711,7 +711,7 @@ be_local_class(Matter_PathGenerator, { be_const_key_weak(path_concrete, -1), be_const_var(12) }, { be_const_key_weak(clusters, -1), be_const_var(8) }, { be_const_key_weak(path_in_fabric_filtered, -1), be_const_var(4) }, - { be_const_key_weak(finished, -1), be_const_closure(class_Matter_PathGenerator_finished_closure) }, + { be_const_key_weak(_default_status_error, -1), be_const_closure(class_Matter_PathGenerator__default_status_error_closure) }, { be_const_key_weak(attribute_found, 12), be_const_var(11) }, { be_const_key_weak(_next_endpoint, -1), be_const_closure(class_Matter_PathGenerator__next_endpoint_closure) }, { be_const_key_weak(path_in_attribute, -1), be_const_var(3) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h index 966d14ab0..335528db8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h @@ -286,169 +286,36 @@ be_local_closure(class_Matter_Plugin_every_250ms, /* name */ extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_publish_event, /* name */ be_nested_proto( - 20, /* nstack */ - 5, /* argc */ + 17, /* nstack */ + 7, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, 1, /* has constants */ - ( &(const bvalue[36]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(EventDataIB), - /* K2 */ be_nested_str_weak(EventPathIB), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(events), + /* K2 */ be_nested_str_weak(publish_event), /* K3 */ be_nested_str_weak(endpoint), - /* K4 */ be_nested_str_weak(cluster), - /* K5 */ be_nested_str_weak(event), - /* K6 */ be_nested_str_weak(path), - /* K7 */ be_nested_str_weak(priority), - /* K8 */ be_nested_str_weak(event_number), - /* K9 */ be_nested_str_weak(device), - /* K10 */ be_nested_str_weak(events), - /* K11 */ be_nested_str_weak(get_next_event_no), - /* K12 */ be_nested_str_weak(epoch_timestamp), - /* K13 */ be_nested_str_weak(tasmota), - /* K14 */ be_nested_str_weak(rtc), - /* K15 */ be_nested_str_weak(utc), - /* K16 */ be_const_int(1700000000), - /* K17 */ be_nested_str_weak(data), - /* K18 */ be_nested_str_weak(loglevel), - /* K19 */ be_const_int(3), - /* K20 */ be_const_int(0), - /* K21 */ be_nested_str_weak(val), - /* K22 */ be_nested_str_weak(_X25i_X2E_X25i_X2E_X25i_X2E_X25i), - /* K23 */ be_const_int(2), - /* K24 */ be_nested_str_weak(CRIT_X20_X20), - /* K25 */ be_const_int(1), - /* K26 */ be_nested_str_weak(INFO_X20_X20), - /* K27 */ be_nested_str_weak(DEBUG_X20), - /* K28 */ be_nested_str_weak(get_event_name), - /* K29 */ be_nested_str_weak(_X28), - /* K30 */ be_nested_str_weak(_X29_X20), - /* K31 */ be_nested_str_weak(), - /* K32 */ be_nested_str_weak(log), - /* K33 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X20_X25s_X2D_X20_X25s), - /* K34 */ be_nested_str_weak(MTR_X3A_X20Publishing_X20event_X20_X25s), - /* K35 */ be_nested_str_weak(queue_event), }), be_str_weak(publish_event), &be_const_str_solidified, - ( &(const binstruction[114]) { /* code */ - 0xB8160000, // 0000 GETNGBL R5 K0 - 0x8C140B01, // 0001 GETMET R5 R5 K1 - 0x7C140200, // 0002 CALL R5 1 - 0xB81A0000, // 0003 GETNGBL R6 K0 - 0x8C180D02, // 0004 GETMET R6 R6 K2 - 0x7C180200, // 0005 CALL R6 1 - 0x881C0103, // 0006 GETMBR R7 R0 K3 - 0x901A0607, // 0007 SETMBR R6 K3 R7 - 0x901A0801, // 0008 SETMBR R6 K4 R1 - 0x901A0A02, // 0009 SETMBR R6 K5 R2 - 0x90160C06, // 000A SETMBR R5 K6 R6 - 0x90160E03, // 000B SETMBR R5 K7 R3 - 0x881C0109, // 000C GETMBR R7 R0 K9 - 0x881C0F0A, // 000D GETMBR R7 R7 K10 - 0x8C1C0F0B, // 000E GETMET R7 R7 K11 - 0x7C1C0200, // 000F CALL R7 1 - 0x90161007, // 0010 SETMBR R5 K8 R7 - 0xB81E1A00, // 0011 GETNGBL R7 K13 - 0x8C1C0F0E, // 0012 GETMET R7 R7 K14 - 0x5824000F, // 0013 LDCONST R9 K15 - 0x7C1C0400, // 0014 CALL R7 2 - 0x90161807, // 0015 SETMBR R5 K12 R7 - 0x881C0B0C, // 0016 GETMBR R7 R5 K12 - 0x141C0F10, // 0017 LT R7 R7 K16 - 0x781E0001, // 0018 JMPF R7 #001B - 0x4C1C0000, // 0019 LDNIL R7 - 0x90161807, // 001A SETMBR R5 K12 R7 - 0x90162204, // 001B SETMBR R5 K17 R4 - 0xB81E1A00, // 001C GETNGBL R7 K13 - 0x8C1C0F12, // 001D GETMET R7 R7 K18 - 0x58240013, // 001E LDCONST R9 K19 - 0x7C1C0400, // 001F CALL R7 2 - 0x781E003E, // 0020 JMPF R7 #0060 - 0x601C0008, // 0021 GETGBL R7 G8 - 0x88200B11, // 0022 GETMBR R8 R5 K17 - 0x7C1C0200, // 0023 CALL R7 1 - 0x54220027, // 0024 LDINT R8 40 - 0x1C200208, // 0025 EQ R8 R1 R8 - 0x78220015, // 0026 JMPF R8 #003D - 0x1C200514, // 0027 EQ R8 R2 K20 - 0x78220013, // 0028 JMPF R8 #003D - 0x88200B11, // 0029 GETMBR R8 R5 K17 - 0x88201115, // 002A GETMBR R8 R8 K21 - 0x60240018, // 002B GETGBL R9 G24 - 0x58280016, // 002C LDCONST R10 K22 - 0x542E0017, // 002D LDINT R11 24 - 0x3C2C100B, // 002E SHR R11 R8 R11 - 0x543200FE, // 002F LDINT R12 255 - 0x2C2C160C, // 0030 AND R11 R11 R12 - 0x5432000F, // 0031 LDINT R12 16 - 0x3C30100C, // 0032 SHR R12 R8 R12 - 0x543600FE, // 0033 LDINT R13 255 - 0x2C30180D, // 0034 AND R12 R12 R13 - 0x54360007, // 0035 LDINT R13 8 - 0x3C34100D, // 0036 SHR R13 R8 R13 - 0x543A00FE, // 0037 LDINT R14 255 - 0x2C341A0E, // 0038 AND R13 R13 R14 - 0x543A00FE, // 0039 LDINT R14 255 - 0x2C38100E, // 003A AND R14 R8 R14 - 0x7C240A00, // 003B CALL R9 5 - 0x5C1C1200, // 003C MOVE R7 R9 - 0x1C200717, // 003D EQ R8 R3 K23 - 0x78220001, // 003E JMPF R8 #0041 - 0x58200018, // 003F LDCONST R8 K24 - 0x70020004, // 0040 JMP #0046 - 0x1C200719, // 0041 EQ R8 R3 K25 - 0x78220001, // 0042 JMPF R8 #0045 - 0x5820001A, // 0043 LDCONST R8 K26 - 0x70020000, // 0044 JMP #0046 - 0x5820001B, // 0045 LDCONST R8 K27 - 0xB8260000, // 0046 GETNGBL R9 K0 - 0x8C24131C, // 0047 GETMET R9 R9 K28 - 0x5C2C0200, // 0048 MOVE R11 R1 - 0x5C300400, // 0049 MOVE R12 R2 - 0x7C240600, // 004A CALL R9 3 - 0x4C280000, // 004B LDNIL R10 - 0x2028120A, // 004C NE R10 R9 R10 - 0x782A0002, // 004D JMPF R10 #0051 - 0x002A3A09, // 004E ADD R10 K29 R9 - 0x0028151E, // 004F ADD R10 R10 K30 - 0x70020000, // 0050 JMP #0052 - 0x5828001F, // 0051 LDCONST R10 K31 - 0x5C241400, // 0052 MOVE R9 R10 - 0xB82A4000, // 0053 GETNGBL R10 K32 - 0x602C0018, // 0054 GETGBL R11 G24 - 0x58300021, // 0055 LDCONST R12 K33 - 0x5C341000, // 0056 MOVE R13 R8 - 0x88380B08, // 0057 GETMBR R14 R5 K8 - 0x883C0D03, // 0058 GETMBR R15 R6 K3 - 0x88400D04, // 0059 GETMBR R16 R6 K4 - 0x88440D05, // 005A GETMBR R17 R6 K5 - 0x5C481200, // 005B MOVE R18 R9 - 0x5C4C0E00, // 005C MOVE R19 R7 - 0x7C2C1000, // 005D CALL R11 8 - 0x58300017, // 005E LDCONST R12 K23 - 0x7C280400, // 005F CALL R10 2 - 0xB81E1A00, // 0060 GETNGBL R7 K13 - 0x8C1C0F12, // 0061 GETMET R7 R7 K18 - 0x54260003, // 0062 LDINT R9 4 - 0x7C1C0400, // 0063 CALL R7 2 - 0x781E0006, // 0064 JMPF R7 #006C - 0xB81E4000, // 0065 GETNGBL R7 K32 - 0x60200018, // 0066 GETGBL R8 G24 - 0x58240022, // 0067 LDCONST R9 K34 - 0x5C280A00, // 0068 MOVE R10 R5 - 0x7C200400, // 0069 CALL R8 2 - 0x54260003, // 006A LDINT R9 4 - 0x7C1C0400, // 006B CALL R7 2 - 0x881C0109, // 006C GETMBR R7 R0 K9 - 0x881C0F0A, // 006D GETMBR R7 R7 K10 - 0x8C1C0F23, // 006E GETMET R7 R7 K35 - 0x5C240A00, // 006F MOVE R9 R5 - 0x7C1C0400, // 0070 CALL R7 2 - 0x80000000, // 0071 RET 0 + ( &(const binstruction[13]) { /* code */ + 0x881C0100, // 0000 GETMBR R7 R0 K0 + 0x881C0F01, // 0001 GETMBR R7 R7 K1 + 0x8C1C0F02, // 0002 GETMET R7 R7 K2 + 0x88240103, // 0003 GETMBR R9 R0 K3 + 0x5C280200, // 0004 MOVE R10 R1 + 0x5C2C0400, // 0005 MOVE R11 R2 + 0x50300200, // 0006 LDBOOL R12 1 0 + 0x5C340600, // 0007 MOVE R13 R3 + 0x5C380800, // 0008 MOVE R14 R4 + 0x5C3C0A00, // 0009 MOVE R15 R5 + 0x5C400C00, // 000A MOVE R16 R6 + 0x7C1C1200, // 000B CALL R7 9 + 0x80000000, // 000C RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index 8fc07b9df..3ffed0e22 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -853,7 +853,7 @@ be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ /* K4 */ be_nested_str_weak(PathGenerator), /* K5 */ be_nested_str_weak(start), /* K6 */ be_nested_str_weak(is_direct), - /* K7 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(next_attribute), /* K8 */ be_nested_str_weak(get_pi), }), be_str_weak(process_attribute_expansion), @@ -907,35 +907,31 @@ be_local_closure(class_Matter_Device_every_250ms, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(every_250ms), - /* K2 */ be_nested_str_weak(read_sensors_scheduler), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(plugins), - /* K5 */ be_const_int(1), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(read_sensors_scheduler), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(plugins), + /* K3 */ be_nested_str_weak(every_250ms), + /* K4 */ be_const_int(1), }), be_str_weak(every_250ms), &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 - 0x8C040102, // 0003 GETMET R1 R0 K2 - 0x7C040200, // 0004 CALL R1 1 - 0x58040003, // 0005 LDCONST R1 K3 - 0x6008000C, // 0006 GETGBL R2 G12 - 0x880C0104, // 0007 GETMBR R3 R0 K4 - 0x7C080200, // 0008 CALL R2 1 - 0x14080202, // 0009 LT R2 R1 R2 - 0x780A0005, // 000A JMPF R2 #0011 - 0x88080104, // 000B GETMBR R2 R0 K4 - 0x94080401, // 000C GETIDX R2 R2 R1 - 0x8C080501, // 000D GETMET R2 R2 K1 - 0x7C080200, // 000E CALL R2 1 - 0x00040305, // 000F ADD R1 R1 K5 - 0x7001FFF4, // 0010 JMP #0006 - 0x80000000, // 0011 RET 0 + ( &(const binstruction[15]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x58040001, // 0002 LDCONST R1 K1 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x880C0102, // 0004 GETMBR R3 R0 K2 + 0x7C080200, // 0005 CALL R2 1 + 0x14080202, // 0006 LT R2 R1 R2 + 0x780A0005, // 0007 JMPF R2 #000E + 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x94080401, // 0009 GETIDX R2 R2 R1 + 0x8C080503, // 000A GETMET R2 R2 K3 + 0x7C080200, // 000B CALL R2 1 + 0x00040304, // 000C ADD R1 R1 K4 + 0x7001FFF4, // 000D JMP #0003 + 0x80000000, // 000E RET 0 }) ) ); @@ -2288,7 +2284,7 @@ be_local_closure(class_Matter_Device_start, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_every_50ms, /* name */ be_nested_proto( - 2, /* nstack */ + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2296,17 +2292,22 @@ be_local_closure(class_Matter_Device_every_50ms, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ + ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(tick), /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(message_handler), + /* K3 */ be_nested_str_weak(every_50ms), }), be_str_weak(every_50ms), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ + ( &(const binstruction[ 7]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x00040301, // 0001 ADD R1 R1 K1 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x80000000, // 0003 RET 0 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C040303, // 0004 GETMET R1 R1 K3 + 0x7C040200, // 0005 CALL R1 1 + 0x80000000, // 0006 RET 0 }) ) ); @@ -5093,17 +5094,18 @@ be_local_closure(class_Matter_Device_every_second, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ + ( &(const bvalue[ 7]) { /* 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), + /* K3 */ be_nested_str_weak(events), + /* K4 */ be_nested_str_weak(commissioning_open), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(time_reached), }), be_str_weak(every_second), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ + ( &(const binstruction[21]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x8C040301, // 0001 GETMET R1 R1 K1 0x7C040200, // 0002 CALL R1 1 @@ -5111,17 +5113,20 @@ be_local_closure(class_Matter_Device_every_second, /* name */ 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 + 0x8C040301, // 0007 GETMET R1 R1 K1 + 0x7C040200, // 0008 CALL R1 1 + 0x88040104, // 0009 GETMBR R1 R0 K4 + 0x4C080000, // 000A LDNIL R2 + 0x20040202, // 000B NE R1 R1 R2 + 0x78060006, // 000C JMPF R1 #0014 + 0xB8060A00, // 000D GETNGBL R1 K5 + 0x8C040306, // 000E GETMET R1 R1 K6 + 0x880C0104, // 000F GETMBR R3 R0 K4 + 0x7C040400, // 0010 CALL R1 2 + 0x78060001, // 0011 JMPF R1 #0014 + 0x4C040000, // 0012 LDNIL R1 + 0x90020801, // 0013 SETMBR R0 K4 R1 + 0x80000000, // 0014 RET 0 }) ) ); @@ -6115,23 +6120,23 @@ be_local_class(Matter_Device, { be_const_key_weak(v_light2, -1), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, { be_const_key_weak(relay, -1), be_const_class(be_class_Matter_Plugin_OnOff) }, - { be_const_key_weak(v_illuminance, 15), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, - { be_const_key_weak(contact, 1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, - { be_const_key_weak(temperature, 27), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, + { be_const_key_weak(v_illuminance, 41), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, + { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, + { be_const_key_weak(temperature, 29), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, { be_const_key_weak(waterleak, -1), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, { be_const_key_weak(v_fan, -1), be_const_class(be_class_Matter_Plugin_Virt_Fan) }, { be_const_key_weak(http_occupancy, 6), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, - { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, + { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, { be_const_key_weak(fan, -1), be_const_class(be_class_Matter_Plugin_Fan) }, { be_const_key_weak(light1, -1), be_const_class(be_class_Matter_Plugin_Light1) }, { be_const_key_weak(root, -1), be_const_class(be_class_Matter_Plugin_Root) }, { be_const_key_weak(illuminance, -1), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, - { be_const_key_weak(v_temp, 41), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, + { be_const_key_weak(v_temp, 20), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, { be_const_key_weak(v_light1, -1), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, - { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, - { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, { be_const_key_weak(v_waterleak, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, - { be_const_key_weak(light2, 29), be_const_class(be_class_Matter_Plugin_Light2) }, + { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, + { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, + { be_const_key_weak(light2, 27), be_const_class(be_class_Matter_Plugin_Light2) }, { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, { be_const_key_weak(v_flow, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, @@ -6142,12 +6147,12 @@ be_local_class(Matter_Device, { be_const_key_weak(v_rain, 43), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Rain) }, { be_const_key_weak(http_light0, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, { be_const_key_weak(http_waterleak, 45), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, - { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, + { be_const_key_weak(contact, 1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, { be_const_key_weak(airquality, 35), be_const_class(be_class_Matter_Plugin_Sensor_Air_Quality) }, { be_const_key_weak(http_flow, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, { be_const_key_weak(humidity, -1), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, - { be_const_key_weak(http_temperature, 20), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, + { be_const_key_weak(http_temperature, 15), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, { be_const_key_weak(http_light3, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light3) }, { be_const_key_weak(v_humidity, 12), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) }, diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino index eb87fede7..9a642cea9 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino @@ -183,6 +183,7 @@ extern "C" { be_map_insert_int(vm, "local", Rtc.local_time); be_map_insert_int(vm, "restart", Rtc.restart_time); be_map_insert_int(vm, "timezone", Rtc.time_timezone); + be_map_insert_int(vm, "config_time", Settings->cfg_timestamp); be_pop(vm, 1); be_return(vm); }