diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index 21de506820e6..ddb7baeab3b3 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -111,9 +111,13 @@ class Matter_IM def process_incoming_ack(msg) # check if there is an exchange_id interested in receiving this var message = self.find_sendqueue_by_exchangeid(msg.exchange_id) - # log(format("MTR: process_incoming_ack exch=%i message=%i", msg.exchange_id, message != nil ? 1 : 0), 4) + # log(format("MTR: process_incoming_ack exch=%i message=%i", msg.exchange_id, message != nil ? 1 : 0), 3) if message - return message.ack_received(msg) # dispatch to IM_Message + var ret = message.ack_received(msg) # dispatch to IM_Message + if message.finished + self.remove_sendqueue_by_exchangeid(msg.exchange_id) + end + return ret end return false end @@ -137,13 +141,12 @@ class Matter_IM while idx < size(self.send_queue) var message = self.send_queue[idx] - if !message.finish && message.ready + if !message.finished && message.ready message.send_im(responder) # send message end - if message.finish - log("MTR: remove IM message exch="+str(message.resp.exchange_id), 4) - self.send_queue.remove(idx) + if message.finished + self.remove_sendqueue_by_exchangeid(message.resp.exchange_id) else idx += 1 end @@ -169,11 +172,12 @@ class Matter_IM ############################################################# # find in send_queue by exchangeid # - def remove_sendqueue_by_exchangeid(exchangeid) - if exchangeid == nil return end + def remove_sendqueue_by_exchangeid(exchange_id) + if exchange_id == nil return end var idx = 0 while idx < size(self.send_queue) - if self.send_queue[idx].get_exchangeid() == exchangeid + if self.send_queue[idx].get_exchangeid() == exchange_id + # log(f"MTR: remove IM message exch={exchange_id}", 3) self.send_queue.remove(idx) else idx += 1 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be index 252eeefcf134..02305139b09d 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be @@ -38,40 +38,57 @@ class Matter_IM_Message var expiration # expiration time for the reporting var resp # response Frame object var ready # bool: ready to send (true) or wait (false) - var finish # if true, the message is removed from the queue + var finishing # we have sent all packet, just wait for a final Ack + var finished # if true, the message is removed from the queue var data # TLV data of the response (if any) var last_counter # counter value of last sent packet (to match ack) + ################################################################################# # build a response message stub + # + # Args: + # - msg: the message object + # - opcode: (int) the Matter opcode of the response + # - reliable: (bool) if true, then we send the response as reliable, i.e. we expect a Ack to confirm it was received def init(msg, opcode, reliable) self.reset(msg, opcode, reliable) end + ################################################################################# def reset(msg, opcode, reliable) self.resp = (msg != nil) ? msg.build_response(opcode, reliable) : nil # is nil for spontaneous reports self.ready = true # by default send immediately self.expiration = tasmota.millis() + self.MSG_TIMEOUT self.last_counter = 0 # avoid `nil` value - self.finish = false + self.finishing = false + self.finished = false self.data = nil end + ################################################################################# # the message is being removed due to expiration def reached_timeout() + # log(f"MTR: IM_Message reached_timeout exch={self.resp.exchange_id}", 3) end + ################################################################################# # ack received for previous message, proceed to next (if any) # return true if we manage the ack ourselves, false if it needs to be done upper def ack_received(msg) - # log("MTR: IM_Message ack_received exch="+str(self.resp.exchange_id), 3) - self.expiration = tasmota.millis() + self.MSG_TIMEOUT # give more time - return false + # log(f"MTR: IM_Message ack_received exch={self.resp.exchange_id} {self.finishing=} {self.finished=}", 3) + if self.finishing # if finishing, we are waiting for final Ack before removing from queue + self.finished = true # remove exchange + else + self.expiration = tasmota.millis() + self.MSG_TIMEOUT # else give more time to the timer + end + return false # return false to indicate that we didn't answer ourselves end + ################################################################################# # Status Report OK received for previous message, proceed to next (if any) # return true if we manage the ack ourselves, false if it needs to be done upper def status_ok_received(msg) - # log(format("MTR: IM_Message status_ok_received exch=%i", self.resp.exchange_id), 3) + # log(f"MTR: IM_Message status_ok_received exch={self.resp.exchange_id}", 3) self.expiration = tasmota.millis() + self.MSG_TIMEOUT # give more time if msg self.resp = msg.build_response(self.resp.opcode, self.resp.x_flag_r, self.resp) # update packet @@ -80,34 +97,45 @@ class Matter_IM_Message return true end + ################################################################################# # we received an ACK error, do any necessary cleaning + # + # Arg: + # - msg: the message received + # + # No return value def status_error_received(msg) end + ################################################################################# # get the exchange-id for this message + # + # No return value def get_exchangeid() return self.resp.exchange_id end + ################################################################################# # default responder for data + # + # This is the main entry point for seding the next response. + # This is called only when `ready` is `true` + # + # Arg: + # - responder: instance of MessageHandler to create the response object def send_im(responder) - # log(format("MTR: IM_Message send_im exch=%i ready=%i", self.resp.exchange_id, self.ready ? 1 : 0), 3) - if !self.ready return false end - # import debug + # log(f"MTR: IM_Message send_im exch={self.resp.exchange_id}", 3) + # if !self.ready return false end # we're not supposed to be called if ready is false - dead code var resp = self.resp - var data_tlv = self.data.to_TLV() - # matter.profiler.log(str(data_tlv)) - var data_raw = data_tlv.tlv2raw() # payload in cleartext - # matter.profiler.log(data_raw.tohex()) + var data_raw = self.data.to_TLV().tlv2raw() # payload in cleartext resp.encode_frame(data_raw) # payload in cleartext resp.encrypt() if tasmota.loglevel(4) - log(format("MTR: >>: Matter_IM_ReportData_Pull send_im exch=%i ready=%i", self.resp.exchange_id, self.ready ? 1 : 0), 3) - if !self.ready return false end var resp = self.resp # response frame object var data = (self.data != nil) ? self.data : bytes() # bytes() object of the TLV encoded response self.data = nil # we remove the data that was saved for next packet var not_full = true # marker used to exit imbricated loops - var debug = responder.device.debug + var debug = responder.device.debug # set debug flag in local variable to ease access below var data_ev = (self.data_ev != nil) ? self.data_ev : ((self.event_generator_or_arr != nil) ? bytes() : nil) # bytes for events or nil if no event generators # if event_generator_or_arr != nil then data_ev contains a bytes() object @@ -305,8 +354,7 @@ class Matter_IM_ReportData_Pull : Matter_IM_Message 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() - var encoded_tlv = raw_tlv.tlv2raw(bytes(self.MAX_MESSAGE)) # takes time + var encoded_tlv = ret.to_TLV().tlv2raw(bytes(self.MAX_MESSAGE)) # takes time resp.encode_frame(encoded_tlv) # payload in cleartext, pre-allocate max buffer resp.encrypt() # log(format("MTR: >>: ReportData_Pull finished",3) - self.finish = true # finished, remove + self.finishing = true # finishing, remove after final Ack end end @@ -337,7 +385,7 @@ class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull # var expiration # expiration time for the reporting # var resp # response Frame object # var ready # bool: ready to send (true) or wait (false) - # var finish # if true, the message is removed from the queue + # var finished # if true, the message is removed from the queue # var data # TLV data of the response (if any) # var last_counter # counter value of last sent packet (to match ack) # inherited from Matter_IM_ReportData_Pull @@ -348,6 +396,7 @@ class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull var sub # subscription object var report_data_phase # true during reportdata + ################################################################################# def init(message_handler, session, ctx_generator_or_arr, event_generator_or_arr, sub) super(self).init(nil, ctx_generator_or_arr, event_generator_or_arr) # send msg=nil to avoid creating a reponse # we need to initiate a new virtual response, because it's a spontaneous message @@ -359,35 +408,40 @@ class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull self.set_suppress_response(false) end + ################################################################################# def reached_timeout() + # log(f"MTR: IM_ReportDataSubscribed_Pull reached_timeout()", 3) self.sub.remove_self() end + ################################################################################# # ack received, confirm the heartbeat def ack_received(msg) - # log(format("MTR: IM_ReportDataSubscribed_Pull ack_received sub=%i", self.sub.subscription_id), 3) + # log(f"MTR: IM_ReportDataSubscribed_Pull ack_received sub={self.sub.subscription_id}", 3) super(self).ack_received(msg) if !self.report_data_phase # if ack is received while all data is sent, means that it finished without error if self.sub.is_keep_alive # only if keep-alive, for normal reports, re_arm is called at last StatusReport self.sub.re_arm() # signal that we can proceed to next sub report end - return true # proceed to calling send() which removes the message + return false # proceed to calling send() which removes the message else return false # do nothing end end + ################################################################################# # we received an ACK error, remove subscription def status_error_received(msg) - # log(format("MTR: IM_ReportDataSubscribed_Pull status_error_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) + # log(f"MTR: IM_ReportDataSubscribed_Pull status_error_received sub={self.sub.subscription_id} exch={self.resp.exchange_id}", 3) self.sub.remove_self() end + ################################################################################# # ack received for previous message, proceed to next (if any) # return true if we manage the ack ourselves, false if it needs to be done upper def status_ok_received(msg) - # log(format("MTR: IM_ReportDataSubscribed_Pull status_ok_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) + # log(f"MTR: IM_ReportDataSubscribed_Pull status_ok_received sub={self.sub.subscription_id} exch={self.resp.exchange_id}", 3) if self.report_data_phase return super(self).status_ok_received(msg) else @@ -397,22 +451,22 @@ class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull end end + ################################################################################# # returns true if transaction is complete (remove object from queue) # default responder for data def send_im(responder) # log(format("MTR: IM_ReportDataSubscribed_Pull send sub=%i exch=%i ready=%i", self.sub.subscription_id, self.resp.exchange_id, self.ready ? 1 : 0), 3) - # log(format("MTR: ReportDataSubscribed::send_im size(self.data.attribute_reports)=%i ready=%s report_data_phase=%s", size(self.data.attribute_reports), str(self.ready), str(self.report_data_phase)), 3) if !self.ready return false end if (self.generator_or_arr != nil) || (self.event_generator_or_arr != nil) # do we have still attributes or events to send if self.report_data_phase super(self).send_im(responder) - # log(format("MTR: ReportDataSubscribed::send_im called super finish=%i", self.finish), 3) - if !self.finish return end # ReportData needs to continue + # log(format("MTR: ReportDataSubscribed::send_im called super finished=%i", self.finished), 3) + if !self.finishing return end # ReportData needs to continue # ReportData is finished self.report_data_phase = false self.ready = false - self.finish = false # while a ReadReport would stop here, we continue for subscription + self.finished = false # while a ReadReport would stop here, we continue for subscription else # send a simple ACK var resp = self.resp.build_standalone_ack(false) @@ -423,7 +477,7 @@ class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull end responder.send_response_frame(resp) self.last_counter = resp.message_counter - self.finish = true + # self.finished = true self.sub.re_arm() # signal that we can proceed to next sub report end @@ -433,7 +487,7 @@ class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull super(self).send_im(responder) self.report_data_phase = false else - self.finish = true + # self.finished = true self.sub.re_arm() # signal that we can proceed to next sub report end end @@ -451,6 +505,7 @@ matter.IM_ReportDataSubscribed_Pull = Matter_IM_ReportDataSubscribed_Pull class Matter_IM_SubscribedHeartbeat : Matter_IM_ReportData_Pull var sub # subscription object + ################################################################################# def init(message_handler, session, sub) super(self).init(nil, nil #-no ctx_generator_or_arr-#, nil #-no event_generator_or_arr-#) # send msg=nil to avoid creating a reponse # we need to initiate a new virtual response, because it's a spontaneous message @@ -458,40 +513,48 @@ class Matter_IM_SubscribedHeartbeat : Matter_IM_ReportData_Pull # self.sub = sub self.set_subscription_id(sub.subscription_id) - self.set_suppress_response(true) + self.set_suppress_response(true) # as per Matter definition, heartbeat requires no StatusReport, only a simple Ack end + ################################################################################# + # reached_timeout + # + # The heartbeat was not acked within 5 seconds, and after all retries, + # then the controller is not expecting any more answers, + # remove the subscription def reached_timeout() + # log(f"MTR: IM_SubscribedHeartbeat reached_timeout()", 3) self.sub.remove_self() end - # ack received, confirm the heartbeat + ################################################################################# + # ack received, confirm the heartbeat and remove the packet from the queue def ack_received(msg) - # log(format("MTR: Matter_IM_SubscribedHeartbeat ack_received sub=%i", self.sub.subscription_id), 3) + # log(format("MTR: IM_SubscribedHeartbeat ack_received sub=%i", self.sub.subscription_id), 3) super(self).ack_received(msg) - self.finish = true - return true # proceed to calling send() which removes the message + return false # no further response end + ################################################################################# # we received an ACK error, remove subscription def status_error_received(msg) - # log(format("MTR: Matter_IM_SubscribedHeartbeat status_error_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) + # log(format("MTR: IM_SubscribedHeartbeat status_error_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) self.sub.remove_self() return false # let the caller to the ack end + ################################################################################# # ack received for previous message, proceed to next (if any) # return true if we manage the ack ourselves, false if it needs to be done upper def status_ok_received(msg) - # log(format("MTR: Matter_IM_SubscribedHeartbeat status_ok_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) + # log(format("MTR: IM_SubscribedHeartbeat status_ok_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) return false # let the caller to the ack end + ################################################################################# # default responder for data def send_im(responder) - # log(format("MTR: Matter_IM_SubscribedHeartbeat send sub=%i exch=%i ready=%i", self.sub.subscription_id, self.resp.exchange_id, self.ready ? 1 : 0), 3) - if !self.ready return false end - + # log(format("MTR: IM_SubscribedHeartbeat send sub=%i exch=%i ready=%i", self.sub.subscription_id, self.resp.exchange_id, self.ready ? 1 : 0), 3) super(self).send_im(responder) self.ready = false end @@ -510,6 +573,7 @@ class Matter_IM_SubscribeResponse_Pull : Matter_IM_ReportData_Pull var sub # subscription object var report_data_phase # true during reportdata + ################################################################################# def init(msg, ctx_generator_or_arr, event_generator_or_arr, sub) super(self).init(msg, ctx_generator_or_arr, event_generator_or_arr) self.sub = sub @@ -517,16 +581,16 @@ class Matter_IM_SubscribeResponse_Pull : Matter_IM_ReportData_Pull self.set_subscription_id(sub.subscription_id) end + ################################################################################# # default responder for data def send_im(responder) - # log(format("MTR: Matter_IM_SubscribeResponse send sub=%i ready=%i", self.sub.subscription_id, self.ready ? 1 : 0), 3) - if !self.ready return false end + # log(format("MTR: Matter_IM_SubscribeResponse send sub=%i ready=%i report_data_phase=%s", self.sub.subscription_id, self.ready ? 1 : 0, self.report_data_phase), 3) if self.report_data_phase super(self).send_im(responder) - if self.finish + if self.finishing # finished reporting of data, we still need to send SubscribeResponseMessage after next StatusReport self.report_data_phase = false - self.finish = false # we continue to subscribe response + self.finishing = false # we continue to subscribe response end self.ready = false # wait for Status Report before continuing sending @@ -543,20 +607,23 @@ class Matter_IM_SubscribeResponse_Pull : Matter_IM_ReportData_Pull resp.encrypt() responder.send_response_frame(resp) self.last_counter = resp.message_counter - # log(format("MTR: Send SubscribeResponseMessage sub=%i id=%i", self.sub.subscription_id, resp.message_counter), 3) + # log(f"MTR: Send SubscribeResponseMessage sub={self.sub.subscription_id} id={resp.message_counter}", 3) self.sub.re_arm() - self.finish = true # remove exchange + self.finishing = true # remove exchange end end # Status ok received def status_ok_received(msg) - # log(format("MTR: IM_SubscribeResponse status_ok_received sub=%i exch=%i ack=%i last_counter=%i", self.sub.subscription_id, self.resp.exchange_id, msg.ack_message_counter ? msg.ack_message_counter : 0 , self.last_counter), 3) + # log(format("MTR: IM_SubscribeResponse status_ok_received sub=%i exch=%i ack=%i last_counter=%i finished=%s", self.sub.subscription_id, self.resp.exchange_id, msg.ack_message_counter ? msg.ack_message_counter : 0 , self.last_counter, self.finished), 3) # once we receive ack, open flow for subscriptions if tasmota.loglevel(3) log(format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 3) end return super(self).status_ok_received(msg) + if !self.report_data_phase + self.finishing = true + end end end 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 4b4dfe583a06..382d0e1e98b6 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -78,7 +78,7 @@ be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ be_nested_proto( - 6, /* nstack */ + 7, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -86,24 +86,31 @@ be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ + ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(find_sendqueue_by_exchangeid), /* K1 */ be_nested_str_weak(exchange_id), /* K2 */ be_nested_str_weak(ack_received), + /* K3 */ be_nested_str_weak(finished), + /* K4 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), }), be_str_weak(process_incoming_ack), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ + ( &(const binstruction[15]) { /* code */ 0x8C080100, // 0000 GETMET R2 R0 K0 0x88100301, // 0001 GETMBR R4 R1 K1 0x7C080400, // 0002 CALL R2 2 - 0x780A0003, // 0003 JMPF R2 #0008 + 0x780A0008, // 0003 JMPF R2 #000D 0x8C0C0502, // 0004 GETMET R3 R2 K2 0x5C140200, // 0005 MOVE R5 R1 0x7C0C0400, // 0006 CALL R3 2 - 0x80040600, // 0007 RET 1 R3 - 0x500C0000, // 0008 LDBOOL R3 0 0 - 0x80040600, // 0009 RET 1 R3 + 0x88100503, // 0007 GETMBR R4 R2 K3 + 0x78120002, // 0008 JMPF R4 #000C + 0x8C100104, // 0009 GETMET R4 R0 K4 + 0x88180301, // 000A GETMBR R6 R1 K1 + 0x7C100400, // 000B CALL R4 2 + 0x80040600, // 000C RET 1 R3 + 0x500C0000, // 000D LDBOOL R3 0 0 + 0x80040600, // 000E RET 1 R3 }) ) ); @@ -1564,28 +1571,26 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ + ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(finish), + /* K2 */ be_nested_str_weak(finished), /* 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), + /* K5 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + /* K6 */ be_nested_str_weak(resp), + /* K7 */ be_nested_str_weak(exchange_id), + /* K8 */ be_const_int(1), }), be_str_weak(send_enqueued), &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ + ( &(const binstruction[25]) { /* 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 + 0x780E0011, // 0005 JMPF R3 #0018 0x880C0101, // 0006 GETMBR R3 R0 K1 0x940C0602, // 0007 GETIDX R3 R3 R2 0x88100702, // 0008 GETMBR R4 R3 K2 @@ -1596,23 +1601,15 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ 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 + 0x78120004, // 0010 JMPF R4 #0016 + 0x8C100105, // 0011 GETMET R4 R0 K5 + 0x88180706, // 0012 GETMBR R6 R3 K6 + 0x88180D07, // 0013 GETMBR R6 R6 K7 + 0x7C100400, // 0014 CALL R4 2 + 0x70020000, // 0015 JMP #0017 + 0x00080508, // 0016 ADD R2 R2 K8 + 0x7001FFE8, // 0017 JMP #0001 + 0x80000000, // 0018 RET 0 }) ) ); 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 1ccdc6e0c81c..d75db24aacf4 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h @@ -7,12 +7,12 @@ extern const bclass be_class_Matter_IM_Message; /******************************************************************** -** Solidified function: init +** Solidified function: reset ********************************************************************/ extern const bclass be_class_Matter_IM_Message; -be_local_closure(class_Matter_IM_Message_init, /* name */ +be_local_closure(class_Matter_IM_Message_reset, /* name */ be_nested_proto( - 9, /* nstack */ + 8, /* nstack */ 4, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -20,18 +20,49 @@ be_local_closure(class_Matter_IM_Message_init, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_Message, 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(reset), + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(resp), + /* K1 */ be_nested_str_weak(build_response), + /* K2 */ be_nested_str_weak(ready), + /* K3 */ be_nested_str_weak(expiration), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(millis), + /* K6 */ be_nested_str_weak(MSG_TIMEOUT), + /* K7 */ be_nested_str_weak(last_counter), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(finishing), + /* K10 */ be_nested_str_weak(finished), + /* K11 */ be_nested_str_weak(data), }), - be_str_weak(init), + be_str_weak(reset), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x5C180200, // 0001 MOVE R6 R1 - 0x5C1C0400, // 0002 MOVE R7 R2 - 0x5C200600, // 0003 MOVE R8 R3 - 0x7C100800, // 0004 CALL R4 4 - 0x80000000, // 0005 RET 0 + ( &(const binstruction[26]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x20100204, // 0001 NE R4 R1 R4 + 0x78120004, // 0002 JMPF R4 #0008 + 0x8C100301, // 0003 GETMET R4 R1 K1 + 0x5C180400, // 0004 MOVE R6 R2 + 0x5C1C0600, // 0005 MOVE R7 R3 + 0x7C100600, // 0006 CALL R4 3 + 0x70020000, // 0007 JMP #0009 + 0x4C100000, // 0008 LDNIL R4 + 0x90020004, // 0009 SETMBR R0 K0 R4 + 0x50100200, // 000A LDBOOL R4 1 0 + 0x90020404, // 000B SETMBR R0 K2 R4 + 0xB8120800, // 000C GETNGBL R4 K4 + 0x8C100905, // 000D GETMET R4 R4 K5 + 0x7C100200, // 000E CALL R4 1 + 0x88140106, // 000F GETMBR R5 R0 K6 + 0x00100805, // 0010 ADD R4 R4 R5 + 0x90020604, // 0011 SETMBR R0 K3 R4 + 0x90020F08, // 0012 SETMBR R0 K7 K8 + 0x50100000, // 0013 LDBOOL R4 0 0 + 0x90021204, // 0014 SETMBR R0 K9 R4 + 0x50100000, // 0015 LDBOOL R4 0 0 + 0x90021404, // 0016 SETMBR R0 K10 R4 + 0x4C100000, // 0017 LDNIL R4 + 0x90021604, // 0018 SETMBR R0 K11 R4 + 0x80000000, // 0019 RET 0 }) ) ); @@ -39,29 +70,31 @@ be_local_closure(class_Matter_IM_Message_init, /* name */ /******************************************************************** -** Solidified function: get_exchangeid +** Solidified function: init ********************************************************************/ extern const bclass be_class_Matter_IM_Message; -be_local_closure(class_Matter_IM_Message_get_exchangeid, /* name */ +be_local_closure(class_Matter_IM_Message_init, /* name */ be_nested_proto( - 2, /* nstack */ - 1, /* argc */ + 9, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM_Message, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(resp), - /* K1 */ be_nested_str_weak(exchange_id), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(reset), }), - be_str_weak(get_exchangeid), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x80040200, // 0002 RET 1 R1 + ( &(const binstruction[ 6]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x5C180200, // 0001 MOVE R6 R1 + 0x5C1C0400, // 0002 MOVE R7 R2 + 0x5C200600, // 0003 MOVE R8 R3 + 0x7C100800, // 0004 CALL R4 4 + 0x80000000, // 0005 RET 0 }) ) ); @@ -74,7 +107,7 @@ be_local_closure(class_Matter_IM_Message_get_exchangeid, /* name */ extern const bclass be_class_Matter_IM_Message; be_local_closure(class_Matter_IM_Message_send_im, /* name */ be_nested_proto( - 12, /* nstack */ + 11, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -82,69 +115,64 @@ be_local_closure(class_Matter_IM_Message_send_im, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_Message, 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(ready), - /* K1 */ be_nested_str_weak(resp), - /* K2 */ be_nested_str_weak(data), - /* K3 */ be_nested_str_weak(to_TLV), - /* K4 */ be_nested_str_weak(tlv2raw), - /* K5 */ be_nested_str_weak(encode_frame), - /* K6 */ be_nested_str_weak(encrypt), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(loglevel), - /* K9 */ be_nested_str_weak(log), - /* K10 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s), - /* K11 */ be_nested_str_weak(session), - /* K12 */ be_nested_str_weak(local_session_id), - /* K13 */ be_nested_str_weak(message_counter), - /* K14 */ be_nested_str_weak(exchange_id), - /* K15 */ be_nested_str_weak(ack_message_counter), - /* K16 */ be_nested_str_weak(send_response_frame), - /* K17 */ be_nested_str_weak(last_counter), - /* K18 */ be_nested_str_weak(finish), + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(resp), + /* K1 */ be_nested_str_weak(data), + /* K2 */ be_nested_str_weak(to_TLV), + /* K3 */ be_nested_str_weak(tlv2raw), + /* K4 */ be_nested_str_weak(encode_frame), + /* K5 */ be_nested_str_weak(encrypt), + /* K6 */ be_nested_str_weak(tasmota), + /* K7 */ be_nested_str_weak(loglevel), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25s_X20exch_X3D_X25s_X20rack_X3D_X25s), + /* K10 */ be_nested_str_weak(session), + /* K11 */ be_nested_str_weak(local_session_id), + /* K12 */ be_nested_str_weak(message_counter), + /* K13 */ be_nested_str_weak(exchange_id), + /* K14 */ be_nested_str_weak(ack_message_counter), + /* K15 */ be_nested_str_weak(send_response_frame), + /* K16 */ be_nested_str_weak(last_counter), + /* K17 */ be_nested_str_weak(finishing), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ + ( &(const binstruction[35]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0001, // 0001 JMPT R2 #0004 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x80040400, // 0003 RET 1 R2 - 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x880C0102, // 0005 GETMBR R3 R0 K2 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100704, // 0008 GETMET R4 R3 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x8C140505, // 000A GETMET R5 R2 K5 - 0x5C1C0800, // 000B MOVE R7 R4 - 0x7C140400, // 000C CALL R5 2 - 0x8C140506, // 000D GETMET R5 R2 K6 - 0x7C140200, // 000E CALL R5 1 - 0xB8160E00, // 000F GETNGBL R5 K7 - 0x8C140B08, // 0010 GETMET R5 R5 K8 - 0x541E0003, // 0011 LDINT R7 4 - 0x7C140400, // 0012 CALL R5 2 - 0x7816000A, // 0013 JMPF R5 #001F - 0xB8161200, // 0014 GETNGBL R5 K9 - 0x60180018, // 0015 GETGBL R6 G24 - 0x581C000A, // 0016 LDCONST R7 K10 - 0x8820050B, // 0017 GETMBR R8 R2 K11 - 0x8820110C, // 0018 GETMBR R8 R8 K12 - 0x8824050D, // 0019 GETMBR R9 R2 K13 - 0x8828050E, // 001A GETMBR R10 R2 K14 - 0x882C050F, // 001B GETMBR R11 R2 K15 - 0x7C180A00, // 001C CALL R6 5 - 0x541E0003, // 001D LDINT R7 4 - 0x7C140400, // 001E CALL R5 2 - 0x8C140310, // 001F GETMET R5 R1 K16 - 0x5C1C0400, // 0020 MOVE R7 R2 - 0x7C140400, // 0021 CALL R5 2 - 0x8814050D, // 0022 GETMBR R5 R2 K13 - 0x90022205, // 0023 SETMBR R0 K17 R5 - 0x50140200, // 0024 LDBOOL R5 1 0 - 0x90022405, // 0025 SETMBR R0 K18 R5 - 0x80000000, // 0026 RET 0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0703, // 0004 GETMET R3 R3 K3 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C100504, // 0006 GETMET R4 R2 K4 + 0x5C180600, // 0007 MOVE R6 R3 + 0x7C100400, // 0008 CALL R4 2 + 0x8C100505, // 0009 GETMET R4 R2 K5 + 0x7C100200, // 000A CALL R4 1 + 0xB8120C00, // 000B GETNGBL R4 K6 + 0x8C100907, // 000C GETMET R4 R4 K7 + 0x541A0003, // 000D LDINT R6 4 + 0x7C100400, // 000E CALL R4 2 + 0x7812000A, // 000F JMPF R4 #001B + 0xB8121000, // 0010 GETNGBL R4 K8 + 0x60140018, // 0011 GETGBL R5 G24 + 0x58180009, // 0012 LDCONST R6 K9 + 0x881C050A, // 0013 GETMBR R7 R2 K10 + 0x881C0F0B, // 0014 GETMBR R7 R7 K11 + 0x8820050C, // 0015 GETMBR R8 R2 K12 + 0x8824050D, // 0016 GETMBR R9 R2 K13 + 0x8828050E, // 0017 GETMBR R10 R2 K14 + 0x7C140A00, // 0018 CALL R5 5 + 0x541A0003, // 0019 LDINT R6 4 + 0x7C100400, // 001A CALL R4 2 + 0x8C10030F, // 001B GETMET R4 R1 K15 + 0x5C180400, // 001C MOVE R6 R2 + 0x7C100400, // 001D CALL R4 2 + 0x8810050C, // 001E GETMBR R4 R2 K12 + 0x90022004, // 001F SETMBR R0 K16 R4 + 0x50100200, // 0020 LDBOOL R4 1 0 + 0x90022204, // 0021 SETMBR R0 K17 R4 + 0x80000000, // 0022 RET 0 }) ) ); @@ -177,59 +205,73 @@ be_local_closure(class_Matter_IM_Message_status_error_received, /* name */ /******************************************************************** -** Solidified function: reset +** Solidified function: get_exchangeid ********************************************************************/ extern const bclass be_class_Matter_IM_Message; -be_local_closure(class_Matter_IM_Message_reset, /* name */ +be_local_closure(class_Matter_IM_Message_get_exchangeid, /* name */ be_nested_proto( - 8, /* nstack */ - 4, /* argc */ + 2, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM_Message, 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ + ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(resp), - /* K1 */ be_nested_str_weak(build_response), - /* K2 */ be_nested_str_weak(ready), - /* K3 */ be_nested_str_weak(expiration), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(millis), - /* K6 */ be_nested_str_weak(MSG_TIMEOUT), - /* K7 */ be_nested_str_weak(last_counter), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(finish), - /* K10 */ be_nested_str_weak(data), + /* K1 */ be_nested_str_weak(exchange_id), }), - be_str_weak(reset), + be_str_weak(get_exchangeid), &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x20100204, // 0001 NE R4 R1 R4 - 0x78120004, // 0002 JMPF R4 #0008 - 0x8C100301, // 0003 GETMET R4 R1 K1 - 0x5C180400, // 0004 MOVE R6 R2 - 0x5C1C0600, // 0005 MOVE R7 R3 - 0x7C100600, // 0006 CALL R4 3 - 0x70020000, // 0007 JMP #0009 - 0x4C100000, // 0008 LDNIL R4 - 0x90020004, // 0009 SETMBR R0 K0 R4 - 0x50100200, // 000A LDBOOL R4 1 0 - 0x90020404, // 000B SETMBR R0 K2 R4 - 0xB8120800, // 000C GETNGBL R4 K4 - 0x8C100905, // 000D GETMET R4 R4 K5 - 0x7C100200, // 000E CALL R4 1 - 0x88140106, // 000F GETMBR R5 R0 K6 - 0x00100805, // 0010 ADD R4 R4 R5 - 0x90020604, // 0011 SETMBR R0 K3 R4 - 0x90020F08, // 0012 SETMBR R0 K7 K8 - 0x50100000, // 0013 LDBOOL R4 0 0 - 0x90021204, // 0014 SETMBR R0 K9 R4 - 0x4C100000, // 0015 LDNIL R4 - 0x90021404, // 0016 SETMBR R0 K10 R4 - 0x80000000, // 0017 RET 0 + ( &(const binstruction[ 3]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x80040200, // 0002 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: ack_received +********************************************************************/ +extern const bclass be_class_Matter_IM_Message; +be_local_closure(class_Matter_IM_Message_ack_received, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Message, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(finishing), + /* K1 */ be_nested_str_weak(finished), + /* K2 */ be_nested_str_weak(expiration), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(millis), + /* K5 */ be_nested_str_weak(MSG_TIMEOUT), + }), + be_str_weak(ack_received), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0002, // 0001 JMPF R2 #0005 + 0x50080200, // 0002 LDBOOL R2 1 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x70020005, // 0004 JMP #000B + 0xB80A0600, // 0005 GETNGBL R2 K3 + 0x8C080504, // 0006 GETMET R2 R2 K4 + 0x7C080200, // 0007 CALL R2 1 + 0x880C0105, // 0008 GETMBR R3 R0 K5 + 0x00080403, // 0009 ADD R2 R2 R3 + 0x90020402, // 000A SETMBR R0 K2 R2 + 0x50080000, // 000B LDBOOL R2 0 0 + 0x80040400, // 000C RET 1 R2 }) ) ); @@ -314,66 +356,30 @@ be_local_closure(class_Matter_IM_Message_status_ok_received, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: ack_received -********************************************************************/ -extern const bclass be_class_Matter_IM_Message; -be_local_closure(class_Matter_IM_Message_ack_received, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Message, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(expiration), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(MSG_TIMEOUT), - }), - be_str_weak(ack_received), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80A0200, // 0000 GETNGBL R2 K1 - 0x8C080502, // 0001 GETMET R2 R2 K2 - 0x7C080200, // 0002 CALL R2 1 - 0x880C0103, // 0003 GETMBR R3 R0 K3 - 0x00080403, // 0004 ADD R2 R2 R3 - 0x90020002, // 0005 SETMBR R0 K0 R2 - 0x50080000, // 0006 LDBOOL R2 0 0 - 0x80040400, // 0007 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_IM_Message ********************************************************************/ be_local_class(Matter_IM_Message, - 6, + 7, NULL, - be_nested_map(15, + be_nested_map(16, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(init, 11), be_const_closure(class_Matter_IM_Message_init_closure) }, - { be_const_key_weak(get_exchangeid, 10), be_const_closure(class_Matter_IM_Message_get_exchangeid_closure) }, - { be_const_key_weak(reset, -1), be_const_closure(class_Matter_IM_Message_reset_closure) }, - { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_Message_send_im_closure) }, - { be_const_key_weak(status_error_received, -1), be_const_closure(class_Matter_IM_Message_status_error_received_closure) }, - { be_const_key_weak(finish, -1), be_const_var(3) }, - { be_const_key_weak(status_ok_received, 2), be_const_closure(class_Matter_IM_Message_status_ok_received_closure) }, - { be_const_key_weak(last_counter, -1), be_const_var(5) }, + { be_const_key_weak(reset, 6), be_const_closure(class_Matter_IM_Message_reset_closure) }, + { be_const_key_weak(last_counter, -1), be_const_var(6) }, + { be_const_key_weak(send_im, 1), be_const_closure(class_Matter_IM_Message_send_im_closure) }, + { be_const_key_weak(init, 15), be_const_closure(class_Matter_IM_Message_init_closure) }, + { be_const_key_weak(status_error_received, 13), be_const_closure(class_Matter_IM_Message_status_error_received_closure) }, + { be_const_key_weak(data, 9), be_const_var(5) }, + { be_const_key_weak(get_exchangeid, -1), be_const_closure(class_Matter_IM_Message_get_exchangeid_closure) }, + { be_const_key_weak(status_ok_received, 12), be_const_closure(class_Matter_IM_Message_status_ok_received_closure) }, + { be_const_key_weak(ack_received, 7), be_const_closure(class_Matter_IM_Message_ack_received_closure) }, { be_const_key_weak(reached_timeout, -1), be_const_closure(class_Matter_IM_Message_reached_timeout_closure) }, + { be_const_key_weak(MSG_TIMEOUT, -1), be_const_int(5000) }, { be_const_key_weak(resp, -1), be_const_var(1) }, - { be_const_key_weak(data, -1), be_const_var(4) }, { be_const_key_weak(expiration, -1), be_const_var(0) }, - { be_const_key_weak(ready, 6), be_const_var(2) }, - { be_const_key_weak(MSG_TIMEOUT, 5), be_const_int(5000) }, - { be_const_key_weak(ack_received, -1), be_const_closure(class_Matter_IM_Message_ack_received_closure) }, + { be_const_key_weak(ready, -1), be_const_var(2) }, + { be_const_key_weak(finishing, -1), be_const_var(3) }, + { be_const_key_weak(finished, -1), be_const_var(4) }, })), be_str_weak(Matter_IM_Message) ); @@ -629,372 +635,368 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ &be_class_Matter_IM_ReportData_Pull, 1, /* has 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(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), + /* K0 */ be_nested_str_weak(resp), + /* K1 */ be_nested_str_weak(data), + /* K2 */ be_nested_str_weak(device), + /* K3 */ be_nested_str_weak(debug), + /* K4 */ be_nested_str_weak(data_ev), + /* K5 */ be_nested_str_weak(event_generator_or_arr), + /* K6 */ be_nested_str_weak(generator_or_arr), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(next_attribute), + /* K9 */ be_nested_str_weak(is_direct), + /* K10 */ be_nested_str_weak(im), + /* K11 */ be_nested_str_weak(read_single_attribute_to_bytes), + /* K12 */ be_nested_str_weak(get_pi), + /* K13 */ be_nested_str_weak(session), + /* K14 */ be_nested_str_weak(MAX_MESSAGE), + /* K15 */ be_nested_str_weak(append), + /* K16 */ be_nested_str_weak(remove), + /* K17 */ be_nested_str_weak(next_event), + /* K18 */ be_nested_str_weak(tasmota), + /* K19 */ be_nested_str_weak(loglevel), + /* K20 */ be_const_int(3), + /* K21 */ be_nested_str_weak(), + /* K22 */ be_nested_str_weak(data0), + /* K23 */ be_nested_str_weak(_X20_X2D_X20), + /* K24 */ be_nested_str_weak(data1), + /* K25 */ be_nested_str_weak(_X2C_X20), + /* K26 */ be_nested_str_weak(data2), + /* K27 */ be_nested_str_weak(log), + /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X7C_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X25s), + /* K29 */ be_nested_str_weak(local_session_id), + /* K30 */ be_nested_str_weak(event_no), + /* K31 */ be_nested_str_weak(endpoint), + /* K32 */ be_nested_str_weak(cluster), + /* K33 */ be_nested_str_weak(event_id), + /* K34 */ be_nested_str_weak(to_raw_bytes), + /* K35 */ be_nested_str_weak(matter), + /* K36 */ be_nested_str_weak(ReportDataMessage), + /* K37 */ be_nested_str_weak(subscription_id), + /* K38 */ be_nested_str_weak(suppress_response), + /* K39 */ be_nested_str_weak(attribute_reports), + /* K40 */ be_nested_str_weak(event_reports), + /* K41 */ be_nested_str_weak(more_chunked_messages), + /* K42 */ be_nested_str_weak(to_TLV), + /* K43 */ be_nested_str_weak(tlv2raw), + /* K44 */ be_nested_str_weak(encode_frame), + /* K45 */ be_nested_str_weak(encrypt), + /* K46 */ be_nested_str_weak(send_response_frame), + /* K47 */ be_nested_str_weak(last_counter), + /* K48 */ be_nested_str_weak(message_counter), + /* K49 */ be_nested_str_weak(ready), + /* K50 */ be_nested_str_weak(finishing), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[311]) { /* code */ + ( &(const binstruction[307]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0001, // 0001 JMPT R2 #0004 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x80040400, // 0003 RET 1 R2 - 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x880C0102, // 0005 GETMBR R3 R0 K2 - 0x4C100000, // 0006 LDNIL R4 - 0x200C0604, // 0007 NE R3 R3 R4 - 0x780E0001, // 0008 JMPF R3 #000B - 0x880C0102, // 0009 GETMBR R3 R0 K2 - 0x70020001, // 000A JMP #000D - 0x600C0015, // 000B GETGBL R3 G21 - 0x7C0C0000, // 000C CALL R3 0 - 0x4C100000, // 000D LDNIL R4 - 0x90020404, // 000E SETMBR R0 K2 R4 - 0x50100200, // 000F LDBOOL R4 1 0 - 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 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x4C100000, // 0002 LDNIL R4 + 0x200C0604, // 0003 NE R3 R3 R4 + 0x780E0001, // 0004 JMPF R3 #0007 + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x70020001, // 0006 JMP #0009 + 0x600C0015, // 0007 GETGBL R3 G21 + 0x7C0C0000, // 0008 CALL R3 0 + 0x4C100000, // 0009 LDNIL R4 + 0x90020204, // 000A SETMBR R0 K1 R4 + 0x50100200, // 000B LDBOOL R4 1 0 + 0x88140302, // 000C GETMBR R5 R1 K2 + 0x88140B03, // 000D GETMBR R5 R5 K3 + 0x88180104, // 000E GETMBR R6 R0 K4 + 0x4C1C0000, // 000F LDNIL R7 + 0x20180C07, // 0010 NE R6 R6 R7 + 0x781A0001, // 0011 JMPF R6 #0014 + 0x88180104, // 0012 GETMBR R6 R0 K4 + 0x70020007, // 0013 JMP #001C + 0x88180105, // 0014 GETMBR R6 R0 K5 + 0x4C1C0000, // 0015 LDNIL R7 + 0x20180C07, // 0016 NE R6 R6 R7 + 0x781A0002, // 0017 JMPF R6 #001B + 0x60180015, // 0018 GETGBL R6 G21 + 0x7C180000, // 0019 CALL R6 0 + 0x70020000, // 001A JMP #001C + 0x4C180000, // 001B LDNIL R6 + 0x7812004A, // 001C JMPF R4 #0068 + 0x881C0106, // 001D GETMBR R7 R0 K6 + 0x4C200000, // 001E LDNIL R8 + 0x201C0E08, // 001F NE R7 R7 R8 + 0x781E0046, // 0020 JMPF R7 #0068 + 0x601C000F, // 0021 GETGBL R7 G15 + 0x88200106, // 0022 GETMBR R8 R0 K6 + 0x60240012, // 0023 GETGBL R9 G18 + 0x7C1C0400, // 0024 CALL R7 2 + 0x781E0002, // 0025 JMPF R7 #0029 + 0x881C0106, // 0026 GETMBR R7 R0 K6 + 0x941C0F07, // 0027 GETIDX R7 R7 K7 + 0x70020000, // 0028 JMP #002A + 0x881C0106, // 0029 GETMBR R7 R0 K6 + 0x4C200000, // 002A LDNIL R8 + 0x78120026, // 002B JMPF R4 #0053 + 0x8C240F08, // 002C GETMET R9 R7 K8 + 0x7C240200, // 002D CALL R9 1 + 0x5C201200, // 002E MOVE R8 R9 + 0x78260022, // 002F JMPF R9 #0053 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 - 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 + 0x74260001, // 0032 JMPT R9 #0035 + 0x74160000, // 0033 JMPT R5 #0035 + 0x50240001, // 0034 LDBOOL R9 0 1 + 0x50240200, // 0035 LDBOOL R9 1 0 + 0x8828030A, // 0036 GETMBR R10 R1 K10 + 0x8C28150B, // 0037 GETMET R10 R10 K11 + 0x8C300F0C, // 0038 GETMET R12 R7 K12 + 0x7C300200, // 0039 CALL R12 1 + 0x5C341000, // 003A MOVE R13 R8 + 0x8838050D, // 003B GETMBR R14 R2 K13 + 0x5C3C1200, // 003C MOVE R15 R9 + 0x7C280A00, // 003D CALL R10 5 + 0x4C2C0000, // 003E LDNIL R11 + 0x1C2C140B, // 003F EQ R11 R10 R11 + 0x782E0000, // 0040 JMPF R11 #0042 + 0x7001FFE8, // 0041 JMP #002B + 0x602C000C, // 0042 GETGBL R11 G12 + 0x5C300600, // 0043 MOVE R12 R3 + 0x7C2C0200, // 0044 CALL R11 1 + 0x6030000C, // 0045 GETGBL R12 G12 + 0x5C341400, // 0046 MOVE R13 R10 + 0x7C300200, // 0047 CALL R12 1 + 0x002C160C, // 0048 ADD R11 R11 R12 + 0x8830010E, // 0049 GETMBR R12 R0 K14 + 0x242C160C, // 004A GT R11 R11 R12 + 0x782E0002, // 004B JMPF R11 #004F + 0x9002020A, // 004C SETMBR R0 K1 R10 + 0x50100000, // 004D LDBOOL R4 0 0 + 0x70020002, // 004E JMP #0052 + 0x8C2C070F, // 004F GETMET R11 R3 K15 + 0x5C341400, // 0050 MOVE R13 R10 + 0x7C2C0400, // 0051 CALL R11 2 + 0x7001FFD7, // 0052 JMP #002B + 0x78120012, // 0053 JMPF R4 #0067 + 0x6024000F, // 0054 GETGBL R9 G15 + 0x88280106, // 0055 GETMBR R10 R0 K6 + 0x602C0012, // 0056 GETGBL R11 G18 + 0x7C240400, // 0057 CALL R9 2 + 0x7826000B, // 0058 JMPF R9 #0065 + 0x88240106, // 0059 GETMBR R9 R0 K6 + 0x8C241310, // 005A GETMET R9 R9 K16 + 0x582C0007, // 005B LDCONST R11 K7 + 0x7C240400, // 005C CALL R9 2 + 0x6024000C, // 005D GETGBL R9 G12 + 0x88280106, // 005E GETMBR R10 R0 K6 + 0x7C240200, // 005F CALL R9 1 + 0x1C241307, // 0060 EQ R9 R9 K7 + 0x78260001, // 0061 JMPF R9 #0064 + 0x4C240000, // 0062 LDNIL R9 + 0x90020C09, // 0063 SETMBR R0 K6 R9 + 0x70020001, // 0064 JMP #0067 + 0x4C240000, // 0065 LDNIL R9 + 0x90020C09, // 0066 SETMBR R0 K6 R9 + 0x7001FFB3, // 0067 JMP #001C + 0x78120017, // 0068 JMPF R4 #0081 + 0x881C0104, // 0069 GETMBR R7 R0 K4 + 0x4C200000, // 006A LDNIL R8 + 0x201C0E08, // 006B NE R7 R7 R8 + 0x781E0013, // 006C JMPF R7 #0081 + 0x601C000C, // 006D GETGBL R7 G12 + 0x88200104, // 006E GETMBR R8 R0 K4 + 0x7C1C0200, // 006F CALL R7 1 + 0x241C0F07, // 0070 GT R7 R7 K7 + 0x781E000E, // 0071 JMPF R7 #0081 + 0x601C000C, // 0072 GETGBL R7 G12 + 0x5C200600, // 0073 MOVE R8 R3 + 0x7C1C0200, // 0074 CALL R7 1 + 0x6020000C, // 0075 GETGBL R8 G12 + 0x88240104, // 0076 GETMBR R9 R0 K4 + 0x7C200200, // 0077 CALL R8 1 + 0x001C0E08, // 0078 ADD R7 R7 R8 + 0x8820010E, // 0079 GETMBR R8 R0 K14 + 0x241C0E08, // 007A GT R7 R7 R8 + 0x781E0002, // 007B JMPF R7 #007F + 0x50100000, // 007C LDBOOL R4 0 0 + 0x4C180000, // 007D LDNIL R6 + 0x70020001, // 007E JMP #0081 + 0x4C1C0000, // 007F LDNIL R7 + 0x90020807, // 0080 SETMBR R0 K4 R7 + 0x7812006D, // 0081 JMPF R4 #00F0 + 0x881C0105, // 0082 GETMBR R7 R0 K5 + 0x4C200000, // 0083 LDNIL R8 + 0x201C0E08, // 0084 NE R7 R7 R8 + 0x781E0069, // 0085 JMPF R7 #00F0 + 0x601C000F, // 0086 GETGBL R7 G15 + 0x88200105, // 0087 GETMBR R8 R0 K5 + 0x60240012, // 0088 GETGBL R9 G18 + 0x7C1C0400, // 0089 CALL R7 2 + 0x781E0002, // 008A JMPF R7 #008E + 0x881C0105, // 008B GETMBR R7 R0 K5 + 0x941C0F07, // 008C GETIDX R7 R7 K7 + 0x70020000, // 008D JMP #008F + 0x881C0105, // 008E GETMBR R7 R0 K5 + 0x4C200000, // 008F LDNIL R8 + 0x78120049, // 0090 JMPF R4 #00DB + 0x8C240F11, // 0091 GETMET R9 R7 K17 + 0x7C240200, // 0092 CALL R9 1 + 0x5C201200, // 0093 MOVE R8 R9 + 0x78260045, // 0094 JMPF R9 #00DB + 0x7816002D, // 0095 JMPF R5 #00C4 + 0xB8262400, // 0096 GETNGBL R9 K18 + 0x8C241313, // 0097 GETMET R9 R9 K19 + 0x582C0014, // 0098 LDCONST R11 K20 + 0x7C240400, // 0099 CALL R9 2 + 0x78260028, // 009A JMPF R9 #00C4 + 0x58240015, // 009B LDCONST R9 K21 + 0x88281116, // 009C GETMBR R10 R8 K22 + 0x4C2C0000, // 009D LDNIL R11 + 0x2028140B, // 009E NE R10 R10 R11 + 0x782A0004, // 009F JMPF R10 #00A5 + 0x60280008, // 00A0 GETGBL R10 G8 + 0x882C1116, // 00A1 GETMBR R11 R8 K22 + 0x7C280200, // 00A2 CALL R10 1 + 0x002A2E0A, // 00A3 ADD R10 K23 R10 + 0x5C241400, // 00A4 MOVE R9 R10 + 0x88281118, // 00A5 GETMBR R10 R8 K24 + 0x4C2C0000, // 00A6 LDNIL R11 + 0x2028140B, // 00A7 NE R10 R10 R11 + 0x782A0004, // 00A8 JMPF R10 #00AE + 0x60280008, // 00A9 GETGBL R10 G8 + 0x882C1118, // 00AA GETMBR R11 R8 K24 + 0x7C280200, // 00AB CALL R10 1 + 0x002A320A, // 00AC ADD R10 K25 R10 + 0x0024120A, // 00AD ADD R9 R9 R10 + 0x8828111A, // 00AE GETMBR R10 R8 K26 + 0x4C2C0000, // 00AF LDNIL R11 + 0x2028140B, // 00B0 NE R10 R10 R11 + 0x782A0004, // 00B1 JMPF R10 #00B7 + 0x60280008, // 00B2 GETGBL R10 G8 + 0x882C111A, // 00B3 GETMBR R11 R8 K26 + 0x7C280200, // 00B4 CALL R10 1 + 0x002A320A, // 00B5 ADD R10 K25 R10 + 0x0024120A, // 00B6 ADD R9 R9 R10 + 0xB82A3600, // 00B7 GETNGBL R10 K27 + 0x602C0018, // 00B8 GETGBL R11 G24 + 0x5830001C, // 00B9 LDCONST R12 K28 + 0x8834050D, // 00BA GETMBR R13 R2 K13 + 0x88341B1D, // 00BB GETMBR R13 R13 K29 + 0x8838111E, // 00BC GETMBR R14 R8 K30 + 0x883C111F, // 00BD GETMBR R15 R8 K31 + 0x88401120, // 00BE GETMBR R16 R8 K32 + 0x88441121, // 00BF GETMBR R17 R8 K33 + 0x5C481200, // 00C0 MOVE R18 R9 + 0x7C2C0E00, // 00C1 CALL R11 7 + 0x58300014, // 00C2 LDCONST R12 K20 + 0x7C280400, // 00C3 CALL R10 2 + 0x8C241122, // 00C4 GETMET R9 R8 K34 + 0x7C240200, // 00C5 CALL R9 1 + 0x6028000C, // 00C6 GETGBL R10 G12 + 0x5C2C0600, // 00C7 MOVE R11 R3 + 0x7C280200, // 00C8 CALL R10 1 + 0x602C000C, // 00C9 GETGBL R11 G12 + 0x5C300C00, // 00CA MOVE R12 R6 + 0x7C2C0200, // 00CB CALL R11 1 + 0x0028140B, // 00CC ADD R10 R10 R11 0x602C000C, // 00CD GETGBL R11 G12 - 0x5C300C00, // 00CE MOVE R12 R6 + 0x5C301200, // 00CE MOVE R12 R9 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 + 0x882C010E, // 00D1 GETMBR R11 R0 K14 + 0x2428140B, // 00D2 GT R10 R10 R11 + 0x782A0002, // 00D3 JMPF R10 #00D7 + 0x90020809, // 00D4 SETMBR R0 K4 R9 + 0x50100000, // 00D5 LDBOOL R4 0 0 + 0x70020002, // 00D6 JMP #00DA + 0x8C280D0F, // 00D7 GETMET R10 R6 K15 + 0x5C301200, // 00D8 MOVE R12 R9 + 0x7C280400, // 00D9 CALL R10 2 + 0x7001FFB4, // 00DA JMP #0090 + 0x78120012, // 00DB JMPF R4 #00EF + 0x6024000F, // 00DC GETGBL R9 G15 + 0x88280105, // 00DD GETMBR R10 R0 K5 + 0x602C0012, // 00DE GETGBL R11 G18 + 0x7C240400, // 00DF CALL R9 2 + 0x7826000B, // 00E0 JMPF R9 #00ED + 0x88240105, // 00E1 GETMBR R9 R0 K5 + 0x8C241310, // 00E2 GETMET R9 R9 K16 + 0x582C0007, // 00E3 LDCONST R11 K7 + 0x7C240400, // 00E4 CALL R9 2 + 0x6024000C, // 00E5 GETGBL R9 G12 + 0x88280105, // 00E6 GETMBR R10 R0 K5 + 0x7C240200, // 00E7 CALL R9 1 + 0x1C241307, // 00E8 EQ R9 R9 K7 + 0x78260001, // 00E9 JMPF R9 #00EC + 0x4C240000, // 00EA LDNIL R9 + 0x90020A09, // 00EB SETMBR R0 K5 R9 + 0x70020001, // 00EC JMP #00EF + 0x4C240000, // 00ED LDNIL R9 + 0x90020A09, // 00EE SETMBR R0 K5 R9 + 0x7001FF90, // 00EF JMP #0081 + 0xB81E4600, // 00F0 GETNGBL R7 K35 + 0x8C1C0F24, // 00F1 GETMET R7 R7 K36 + 0x7C1C0200, // 00F2 CALL R7 1 + 0x88200125, // 00F3 GETMBR R8 R0 K37 + 0x901E4A08, // 00F4 SETMBR R7 K37 R8 + 0x88200126, // 00F5 GETMBR R8 R0 K38 + 0x901E4C08, // 00F6 SETMBR R7 K38 R8 + 0x4C200000, // 00F7 LDNIL R8 + 0x20200608, // 00F8 NE R8 R3 R8 + 0x78220008, // 00F9 JMPF R8 #0103 + 0x6020000C, // 00FA GETGBL R8 G12 + 0x5C240600, // 00FB MOVE R9 R3 + 0x7C200200, // 00FC CALL R8 1 + 0x24201107, // 00FD GT R8 R8 K7 + 0x78220003, // 00FE JMPF R8 #0103 + 0x60200012, // 00FF GETGBL R8 G18 + 0x7C200000, // 0100 CALL R8 0 + 0x40241003, // 0101 CONNECT R9 R8 R3 + 0x901E4E08, // 0102 SETMBR R7 K39 R8 + 0x4C200000, // 0103 LDNIL R8 + 0x20200C08, // 0104 NE R8 R6 R8 + 0x78220008, // 0105 JMPF R8 #010F + 0x6020000C, // 0106 GETGBL R8 G12 + 0x5C240C00, // 0107 MOVE R9 R6 + 0x7C200200, // 0108 CALL R8 1 + 0x24201107, // 0109 GT R8 R8 K7 + 0x78220003, // 010A JMPF R8 #010F + 0x60200012, // 010B GETGBL R8 G18 + 0x7C200000, // 010C CALL R8 0 + 0x40241006, // 010D CONNECT R9 R8 R6 + 0x901E5008, // 010E SETMBR R7 K40 R8 + 0x88200101, // 010F GETMBR R8 R0 K1 + 0x4C240000, // 0110 LDNIL R9 + 0x20201009, // 0111 NE R8 R8 R9 + 0x74220004, // 0112 JMPT R8 #0118 + 0x88200104, // 0113 GETMBR R8 R0 K4 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 + 0x74220000, // 0116 JMPT R8 #0118 + 0x50200001, // 0117 LDBOOL R8 0 1 + 0x50200200, // 0118 LDBOOL R8 1 0 + 0x901E5208, // 0119 SETMBR R7 K41 R8 + 0x8C200F2A, // 011A GETMET R8 R7 K42 + 0x7C200200, // 011B CALL R8 1 + 0x8C20112B, // 011C GETMET R8 R8 K43 + 0x60280015, // 011D GETGBL R10 G21 + 0x882C010E, // 011E GETMBR R11 R0 K14 + 0x7C280200, // 011F CALL R10 1 + 0x7C200400, // 0120 CALL R8 2 + 0x8C24052C, // 0121 GETMET R9 R2 K44 + 0x5C2C1000, // 0122 MOVE R11 R8 + 0x7C240400, // 0123 CALL R9 2 + 0x8C24052D, // 0124 GETMET R9 R2 K45 + 0x7C240200, // 0125 CALL R9 1 + 0x8C24032E, // 0126 GETMET R9 R1 K46 + 0x5C2C0400, // 0127 MOVE R11 R2 + 0x7C240400, // 0128 CALL R9 2 + 0x88240530, // 0129 GETMBR R9 R2 K48 + 0x90025E09, // 012A SETMBR R0 K47 R9 + 0x88240F29, // 012B GETMBR R9 R7 K41 + 0x78260002, // 012C JMPF R9 #0130 + 0x50240000, // 012D LDBOOL R9 0 0 + 0x90026209, // 012E SETMBR R0 K49 R9 + 0x70020001, // 012F JMP #0132 + 0x50240200, // 0130 LDBOOL R9 1 0 + 0x90026409, // 0131 SETMBR R0 K50 R9 + 0x80000000, // 0132 RET 0 }) ) ); @@ -1092,7 +1094,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_ack_received, /* na 0x88080102, // 000B GETMBR R2 R0 K2 0x8C080504, // 000C GETMET R2 R2 K4 0x7C080200, // 000D CALL R2 1 - 0x50080200, // 000E LDBOOL R2 1 0 + 0x50080000, // 000E LDBOOL R2 0 0 0x80040400, // 000F RET 1 R2 0x70020001, // 0010 JMP #0013 0x50080000, // 0011 LDBOOL R2 0 0 @@ -1118,33 +1120,34 @@ 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[22]) { /* constants */ + ( &(const bvalue[23]) { /* constants */ /* K0 */ be_nested_str_weak(ready), /* K1 */ be_nested_str_weak(generator_or_arr), /* 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), + /* K5 */ be_nested_str_weak(finishing), + /* K6 */ be_nested_str_weak(finished), + /* K7 */ be_nested_str_weak(resp), + /* K8 */ be_nested_str_weak(build_standalone_ack), + /* K9 */ be_nested_str_weak(encode_frame), + /* K10 */ be_nested_str_weak(encrypt), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(loglevel), + /* K13 */ be_nested_str_weak(log), + /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i), + /* K15 */ be_nested_str_weak(session), + /* K16 */ be_nested_str_weak(local_session_id), + /* K17 */ be_nested_str_weak(ack_message_counter), + /* K18 */ be_nested_str_weak(message_counter), + /* K19 */ be_nested_str_weak(send_response_frame), + /* K20 */ be_nested_str_weak(last_counter), + /* K21 */ be_nested_str_weak(sub), + /* K22 */ be_nested_str_weak(re_arm), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[81]) { /* code */ + ( &(const binstruction[77]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0001, // 0001 JMPT R2 #0004 0x50080000, // 0002 LDBOOL R2 0 0 @@ -1156,7 +1159,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ 0x88080102, // 0008 GETMBR R2 R0 K2 0x4C0C0000, // 0009 LDNIL R3 0x20080403, // 000A NE R2 R2 R3 - 0x780A0033, // 000B JMPF R2 #0040 + 0x780A0031, // 000B JMPF R2 #003E 0x88080103, // 000C GETMBR R2 R0 K3 0x780A000F, // 000D JMPF R2 #001E 0x60080003, // 000E GETGBL R2 G3 @@ -1173,59 +1176,55 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ 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 + 0x90020C02, // 001C SETMBR R0 K6 R2 + 0x7002001E, // 001D JMP #003D + 0x88080107, // 001E GETMBR R2 R0 K7 + 0x8C080508, // 001F GETMET R2 R2 K8 0x50100000, // 0020 LDBOOL R4 0 0 0x7C080400, // 0021 CALL R2 2 - 0x8C0C0508, // 0022 GETMET R3 R2 K8 + 0x8C0C0509, // 0022 GETMET R3 R2 K9 0x7C0C0200, // 0023 CALL R3 1 - 0x8C0C0509, // 0024 GETMET R3 R2 K9 + 0x8C0C050A, // 0024 GETMET R3 R2 K10 0x7C0C0200, // 0025 CALL R3 1 - 0xB80E1400, // 0026 GETNGBL R3 K10 - 0x8C0C070B, // 0027 GETMET R3 R3 K11 + 0xB80E1600, // 0026 GETNGBL R3 K11 + 0x8C0C070C, // 0027 GETMET R3 R3 K12 0x54160003, // 0028 LDINT R5 4 0x7C0C0400, // 0029 CALL R3 2 0x780E0009, // 002A JMPF R3 #0035 - 0xB80E1800, // 002B GETNGBL R3 K12 + 0xB80E1A00, // 002B GETNGBL R3 K13 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 + 0x5814000E, // 002D LDCONST R5 K14 + 0x8818050F, // 002E GETMBR R6 R2 K15 + 0x88180D10, // 002F GETMBR R6 R6 K16 + 0x881C0511, // 0030 GETMBR R7 R2 K17 + 0x88200512, // 0031 GETMBR R8 R2 K18 0x7C100800, // 0032 CALL R4 4 0x54160003, // 0033 LDINT R5 4 0x7C0C0400, // 0034 CALL R3 2 - 0x8C0C0312, // 0035 GETMET R3 R1 K18 + 0x8C0C0313, // 0035 GETMET R3 R1 K19 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 + 0x880C0512, // 0038 GETMBR R3 R2 K18 + 0x90022803, // 0039 SETMBR R0 K20 R3 + 0x880C0115, // 003A GETMBR R3 R0 K21 + 0x8C0C0716, // 003B GETMET R3 R3 K22 + 0x7C0C0200, // 003C CALL R3 1 + 0x7002000D, // 003D JMP #004C + 0x88080103, // 003E GETMBR R2 R0 K3 + 0x780A0008, // 003F JMPF R2 #0049 + 0x60080003, // 0040 GETGBL R2 G3 + 0x5C0C0000, // 0041 MOVE R3 R0 + 0x7C080200, // 0042 CALL R2 1 + 0x8C080504, // 0043 GETMET R2 R2 K4 + 0x5C100200, // 0044 MOVE R4 R1 + 0x7C080400, // 0045 CALL R2 2 + 0x50080000, // 0046 LDBOOL R2 0 0 + 0x90020602, // 0047 SETMBR R0 K3 R2 + 0x70020002, // 0048 JMP #004C + 0x88080115, // 0049 GETMBR R2 R0 K21 + 0x8C080516, // 004A GETMET R2 R2 K22 + 0x7C080200, // 004B CALL R2 1 + 0x80000000, // 004C RET 0 }) ) ); @@ -1477,25 +1476,21 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_send_im, /* name */ &be_class_Matter_IM_SubscribedHeartbeat, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(ready), - /* K1 */ be_nested_str_weak(send_im), + /* K0 */ be_nested_str_weak(send_im), + /* K1 */ be_nested_str_weak(ready), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0001, // 0001 JMPT R2 #0004 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x80040400, // 0003 RET 1 R2 - 0x60080003, // 0004 GETGBL R2 G3 - 0x5C0C0000, // 0005 MOVE R3 R0 - 0x7C080200, // 0006 CALL R2 1 - 0x8C080501, // 0007 GETMET R2 R2 K1 - 0x5C100200, // 0008 MOVE R4 R1 - 0x7C080400, // 0009 CALL R2 2 - 0x50080000, // 000A LDBOOL R2 0 0 - 0x90020002, // 000B SETMBR R0 K0 R2 - 0x80000000, // 000C RET 0 + ( &(const binstruction[ 9]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x50080000, // 0006 LDBOOL R2 0 0 + 0x90020202, // 0007 SETMBR R0 K1 R2 + 0x80000000, // 0008 RET 0 }) ) ); @@ -1516,23 +1511,20 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_ack_received, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_SubscribedHeartbeat, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ + ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(ack_received), - /* K1 */ be_nested_str_weak(finish), }), be_str_weak(ack_received), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ + ( &(const binstruction[ 8]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 0x8C080500, // 0003 GETMET R2 R2 K0 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x50080200, // 0006 LDBOOL R2 1 0 - 0x90020202, // 0007 SETMBR R0 K1 R2 - 0x50080200, // 0008 LDBOOL R2 1 0 - 0x80040400, // 0009 RET 1 R2 + 0x50080000, // 0006 LDBOOL R2 0 0 + 0x80040400, // 0007 RET 1 R2 }) ) ); @@ -1736,7 +1728,7 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received, /* 0, /* has sup protos */ &be_class_Matter_IM_SubscribeResponse_Pull, 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ + ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), /* K1 */ be_nested_str_weak(loglevel), /* K2 */ be_const_int(3), @@ -1747,10 +1739,12 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received, /* /* K7 */ be_nested_str_weak(sub), /* K8 */ be_nested_str_weak(subscription_id), /* K9 */ be_nested_str_weak(status_ok_received), + /* K10 */ be_nested_str_weak(report_data_phase), + /* K11 */ be_nested_str_weak(finishing), }), be_str_weak(status_ok_received), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ + ( &(const binstruction[26]) { /* code */ 0xB80A0000, // 0000 GETNGBL R2 K0 0x8C080501, // 0001 GETMET R2 R2 K1 0x58100002, // 0002 LDCONST R4 K2 @@ -1773,6 +1767,10 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received, /* 0x5C100200, // 0013 MOVE R4 R1 0x7C080400, // 0014 CALL R2 2 0x80040400, // 0015 RET 1 R2 + 0x8808010A, // 0016 GETMBR R2 R0 K10 + 0x740A0001, // 0017 JMPT R2 #001A + 0x50080200, // 0018 LDBOOL R2 1 0 + 0x90021602, // 0019 SETMBR R0 K11 R2 }) ) ); @@ -1794,10 +1792,10 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_send_im, /* name */ &be_class_Matter_IM_SubscribeResponse_Pull, 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(ready), - /* K1 */ be_nested_str_weak(report_data_phase), - /* K2 */ be_nested_str_weak(send_im), - /* K3 */ be_nested_str_weak(finish), + /* K0 */ be_nested_str_weak(report_data_phase), + /* K1 */ be_nested_str_weak(send_im), + /* K2 */ be_nested_str_weak(finishing), + /* K3 */ be_nested_str_weak(ready), /* K4 */ be_nested_str_weak(resp), /* K5 */ be_nested_str_weak(matter), /* K6 */ be_nested_str_weak(SubscribeResponseMessage), @@ -1816,60 +1814,56 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_send_im, /* name */ }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ + ( &(const binstruction[49]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0001, // 0001 JMPT R2 #0004 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x80040400, // 0003 RET 1 R2 - 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x780A000E, // 0005 JMPF R2 #0015 - 0x60080003, // 0006 GETGBL R2 G3 - 0x5C0C0000, // 0007 MOVE R3 R0 - 0x7C080200, // 0008 CALL R2 1 - 0x8C080502, // 0009 GETMET R2 R2 K2 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x88080103, // 000C GETMBR R2 R0 K3 - 0x780A0003, // 000D JMPF R2 #0012 + 0x780A000E, // 0001 JMPF R2 #0011 + 0x60080003, // 0002 GETGBL R2 G3 + 0x5C0C0000, // 0003 MOVE R3 R0 + 0x7C080200, // 0004 CALL R2 1 + 0x8C080501, // 0005 GETMET R2 R2 K1 + 0x5C100200, // 0006 MOVE R4 R1 + 0x7C080400, // 0007 CALL R2 2 + 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x780A0003, // 0009 JMPF R2 #000E + 0x50080000, // 000A LDBOOL R2 0 0 + 0x90020002, // 000B SETMBR R0 K0 R2 + 0x50080000, // 000C LDBOOL R2 0 0 + 0x90020402, // 000D SETMBR R0 K2 R2 0x50080000, // 000E LDBOOL R2 0 0 - 0x90020202, // 000F SETMBR R0 K1 R2 - 0x50080000, // 0010 LDBOOL R2 0 0 - 0x90020602, // 0011 SETMBR R0 K3 R2 - 0x50080000, // 0012 LDBOOL R2 0 0 - 0x90020002, // 0013 SETMBR R0 K0 R2 - 0x7002001E, // 0014 JMP #0034 - 0x88080104, // 0015 GETMBR R2 R0 K4 - 0xB80E0A00, // 0016 GETNGBL R3 K5 - 0x8C0C0706, // 0017 GETMET R3 R3 K6 - 0x7C0C0200, // 0018 CALL R3 1 - 0x88100108, // 0019 GETMBR R4 R0 K8 - 0x88100907, // 001A GETMBR R4 R4 K7 - 0x900E0E04, // 001B SETMBR R3 K7 R4 - 0x88100108, // 001C GETMBR R4 R0 K8 - 0x88100909, // 001D GETMBR R4 R4 K9 - 0x900E1204, // 001E SETMBR R3 K9 R4 - 0x88100104, // 001F GETMBR R4 R0 K4 - 0x54160003, // 0020 LDINT R5 4 - 0x90121405, // 0021 SETMBR R4 K10 R5 - 0x8C10050B, // 0022 GETMET R4 R2 K11 - 0x8C18070C, // 0023 GETMET R6 R3 K12 - 0x7C180200, // 0024 CALL R6 1 - 0x8C180D0D, // 0025 GETMET R6 R6 K13 - 0x7C180200, // 0026 CALL R6 1 - 0x7C100400, // 0027 CALL R4 2 - 0x8C10050E, // 0028 GETMET R4 R2 K14 - 0x7C100200, // 0029 CALL R4 1 - 0x8C10030F, // 002A GETMET R4 R1 K15 - 0x5C180400, // 002B MOVE R6 R2 - 0x7C100400, // 002C CALL R4 2 - 0x88100511, // 002D GETMBR R4 R2 K17 - 0x90022004, // 002E SETMBR R0 K16 R4 - 0x88100108, // 002F GETMBR R4 R0 K8 - 0x8C100912, // 0030 GETMET R4 R4 K18 - 0x7C100200, // 0031 CALL R4 1 - 0x50100200, // 0032 LDBOOL R4 1 0 - 0x90020604, // 0033 SETMBR R0 K3 R4 - 0x80000000, // 0034 RET 0 + 0x90020602, // 000F SETMBR R0 K3 R2 + 0x7002001E, // 0010 JMP #0030 + 0x88080104, // 0011 GETMBR R2 R0 K4 + 0xB80E0A00, // 0012 GETNGBL R3 K5 + 0x8C0C0706, // 0013 GETMET R3 R3 K6 + 0x7C0C0200, // 0014 CALL R3 1 + 0x88100108, // 0015 GETMBR R4 R0 K8 + 0x88100907, // 0016 GETMBR R4 R4 K7 + 0x900E0E04, // 0017 SETMBR R3 K7 R4 + 0x88100108, // 0018 GETMBR R4 R0 K8 + 0x88100909, // 0019 GETMBR R4 R4 K9 + 0x900E1204, // 001A SETMBR R3 K9 R4 + 0x88100104, // 001B GETMBR R4 R0 K4 + 0x54160003, // 001C LDINT R5 4 + 0x90121405, // 001D SETMBR R4 K10 R5 + 0x8C10050B, // 001E GETMET R4 R2 K11 + 0x8C18070C, // 001F GETMET R6 R3 K12 + 0x7C180200, // 0020 CALL R6 1 + 0x8C180D0D, // 0021 GETMET R6 R6 K13 + 0x7C180200, // 0022 CALL R6 1 + 0x7C100400, // 0023 CALL R4 2 + 0x8C10050E, // 0024 GETMET R4 R2 K14 + 0x7C100200, // 0025 CALL R4 1 + 0x8C10030F, // 0026 GETMET R4 R1 K15 + 0x5C180400, // 0027 MOVE R6 R2 + 0x7C100400, // 0028 CALL R4 2 + 0x88100511, // 0029 GETMBR R4 R2 K17 + 0x90022004, // 002A SETMBR R0 K16 R4 + 0x88100108, // 002B GETMBR R4 R0 K8 + 0x8C100912, // 002C GETMET R4 R4 K18 + 0x7C100200, // 002D CALL R4 1 + 0x50100200, // 002E LDBOOL R4 1 0 + 0x90020404, // 002F SETMBR R0 K2 R4 + 0x80000000, // 0030 RET 0 }) ) );