From 8a15f0426f244b17272100ad1e9e92dbced79ea2 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Tue, 21 Feb 2023 23:02:13 +0100 Subject: [PATCH] Matter support subscription removal (#18018) --- .../berry_matter/src/embedded/Matter_IM.be | 26 +- .../src/embedded/Matter_IM_Message.be | 37 +- .../src/embedded/Matter_IM_Subscription.be | 1 + .../src/embedded/Matter_Message.be | 2 +- .../src/embedded/Matter_MessageHandler.be | 15 +- .../src/embedded/Matter_UDPServer.be | 2 +- .../src/solidify/solidified_Matter_IM.h | 1869 +++++++++-------- .../solidify/solidified_Matter_IM_Message.h | 327 +-- .../solidified_Matter_IM_Subscription.h | 29 +- .../src/solidify/solidified_Matter_Message.h | 5 +- .../solidified_Matter_MessageHandler.h | 456 ++-- .../solidify/solidified_Matter_UDPServer.h | 29 +- 12 files changed, 1494 insertions(+), 1304 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index f0c0e0599..8b223d86a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -73,6 +73,20 @@ class Matter_IM return false end + ############################################################# + # check whether the ack received is of interest to any + # current exchange + # + # return `true` if handled + 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) + if message + return message.ack_received(msg) # dispatch to IM_Message + end + return false + end + ############################################################# # send enqueued responses # @@ -139,13 +153,13 @@ class Matter_IM if status == matter.SUCCESS tasmota.log("MTR: >Status_OK", 2) # don't show 'SUCCESS' to not overflow logs with non-information if message - return message.ack_received(msg) # re-arm the sending of next packets for the same exchange + return message.status_ok_received(msg) # re-arm the sending of next packets for the same exchange end else # error tasmota.log(string.format("MTR: >Status ERROR = 0x%02X", status), 2) if message - message.ack_error(msg) + message.status_error_received(msg) self.remove_sendqueue_by_exchangeid(msg.exchange_id) end end @@ -242,7 +256,7 @@ class Matter_IM ) end - tasmota.log("MTR: ReportDataMessage=" + str(ret), 4) + tasmota.log("MTR: ReportDataMessage=" + str(ret), 3) tasmota.log("MTR: ReportDataMessageTLV=" + str(ret.to_TLV()), 3) return ret @@ -540,7 +554,11 @@ class Matter_IM fake_read.attributes_requests.push(p1) end - tasmota.log("MTR: 0) @@ -248,18 +254,28 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData self.report_data_phase = true end + # ack received, confirm the heartbeat + def ack_received(msg) + if !self.report_data_phase + # if ack is received while all data is sent, means that it finished without error + return true # proceed to calling send() + else + return false # do nothing + end + end + # we received an ACK error, remove subscription - def ack_error(msg) + def status_error_received(msg) 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 ack_received(msg) + def status_ok_received(msg) if self.report_data_phase - return super(self).ack_received(msg) + return super(self).status_ok_received(msg) else - super(self).ack_received(nil) + super(self).status_ok_received(nil) return false # let the caller to the ack end end @@ -285,8 +301,13 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData else # simple heartbeat ReportData - super(self).send(responder) - return true # don't expect any response + if self.report_data_phase + super(self).send(responder) + self.report_data_phase = false + return false # don't expect any response + else + return true # we're done, remove message + end end end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be index 29b8cced4..f44f232e1 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be @@ -81,6 +81,7 @@ class Matter_IM_Subscription # remove self from subs list def remove_self() + tasmota.log("MTR: Remove_Sub sub_id=" + str(self.subscription_id)) self.subs.remove_sub(self) end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be index 2d1378bc3..a71b2090d 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be @@ -465,7 +465,7 @@ class Matter_Frame var r = matter.Frame(self.message_handler, raw) r.decode_header() r.decode_payload() - tasmota.log("MTR: sending decode: " + matter.inspect(r), 4) + tasmota.log("MTR: sending decode: " + matter.inspect(r), 3) end end matter.Frame = Matter_Frame diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be index 830166737..d8efb7c95 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be @@ -80,7 +80,7 @@ class Matter_MessageHandler if !op_name op_name = string.format("0x%02X", frame.opcode) end tasmota.log(string.format("MTR: >Received %s from [%s]:%i", op_name, addr, port), 2) end - self.commissioning.process_incoming(frame, addr, port) + self.commissioning.process_incoming(frame) return true else ############################################################# @@ -112,7 +112,7 @@ class Matter_MessageHandler frame.raw .. cleartext # add cleartext # continue decoding - tasmota.log(string.format("MTR: idx=%i clear=%s", frame.payload_idx, frame.raw.tohex()), 3) + tasmota.log(string.format("MTR: idx=%i clear=%s", frame.payload_idx, frame.raw.tohex()), 4) frame.decode_payload() tasmota.log("MTR: decrypted message: protocol_id:"+str(frame.protocol_id)+" opcode="+str(frame.opcode)+" exchange_id="+str(frame.exchange_id & 0xFFFF), 3) @@ -123,12 +123,16 @@ class Matter_MessageHandler if protocol_id == 0x0000 # PROTOCOL_ID_SECURE_CHANNEL # it should not be encrypted tasmota.log("MTR: PROTOCOL_ID_SECURE_CHANNEL " + matter.inspect(frame), 3) - # if frame.opcode == 0x10 - # end + if frame.opcode == 0x10 # MRPStandaloneAcknowledgement + ret = self.im.process_incoming_ack(frame) + if ret + self.im.send_enqueued(self) + end + end ret = true elif protocol_id == 0x0001 # PROTOCOL_ID_INTERACTION_MODEL # dispatch to IM Protocol Messages - ret = self.im.process_incoming(frame, addr, port) + ret = self.im.process_incoming(frame) # if `ret` is true, we have something to send if ret self.im.send_enqueued(self) @@ -139,6 +143,7 @@ class Matter_MessageHandler resp.encrypt() self.send_response(resp.raw, resp.remote_ip, resp.remote_port, resp.message_counter) end + ret = true # -- PROTOCOL_ID_BDX is used for file transfer between devices, not used in Tasmota # elif protocol_id == 0x0002 # PROTOCOL_ID_BDX -- BDX not handled at all in Tasmota diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be b/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be index 2e7d71160..da324f0fa 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be @@ -167,7 +167,7 @@ class Matter_UDPServer else import string self.packets_sent.remove(packet.msg_id) - tasmota.log(string.format("MTR: target unreachable '[%s]:%i'", packet.addr, packet.port), 2) + tasmota.log(string.format("MTR: target unreachable '[%s]:%i' msg_id=%i", packet.addr, packet.port, packet.msg_id), 2) 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 cac81ef10..5d2af812a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -79,9 +79,89 @@ be_local_closure(Matter_IM_process_timed_request, /* name */ /******************************************************************** -** Solidified function: process_read_request +** Solidified function: process_status_response ********************************************************************/ -be_local_closure(Matter_IM_process_read_request, /* name */ +be_local_closure(Matter_IM_process_status_response, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(findsubval), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(find_sendqueue_by_exchangeid), + /* K4 */ be_nested_str_weak(exchange_id), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(SUCCESS), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_OK), + /* K10 */ be_const_int(2), + /* K11 */ be_nested_str_weak(status_ok_received), + /* K12 */ be_nested_str_weak(format), + /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), + /* K14 */ be_nested_str_weak(status_error_received), + /* K15 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + }), + be_str_weak(process_status_response), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x8C100501, // 0001 GETMET R4 R2 K1 + 0x58180002, // 0002 LDCONST R6 K2 + 0x541E00FE, // 0003 LDINT R7 255 + 0x7C100600, // 0004 CALL R4 3 + 0x8C140103, // 0005 GETMET R5 R0 K3 + 0x881C0304, // 0006 GETMBR R7 R1 K4 + 0x7C140400, // 0007 CALL R5 2 + 0xB81A0A00, // 0008 GETNGBL R6 K5 + 0x88180D06, // 0009 GETMBR R6 R6 K6 + 0x1C180806, // 000A EQ R6 R4 R6 + 0x781A000A, // 000B JMPF R6 #0017 + 0xB81A0E00, // 000C GETNGBL R6 K7 + 0x8C180D08, // 000D GETMET R6 R6 K8 + 0x58200009, // 000E LDCONST R8 K9 + 0x5824000A, // 000F LDCONST R9 K10 + 0x7C180600, // 0010 CALL R6 3 + 0x78160003, // 0011 JMPF R5 #0016 + 0x8C180B0B, // 0012 GETMET R6 R5 K11 + 0x5C200200, // 0013 MOVE R8 R1 + 0x7C180400, // 0014 CALL R6 2 + 0x80040C00, // 0015 RET 1 R6 + 0x7002000E, // 0016 JMP #0026 + 0xB81A0E00, // 0017 GETNGBL R6 K7 + 0x8C180D08, // 0018 GETMET R6 R6 K8 + 0x8C20070C, // 0019 GETMET R8 R3 K12 + 0x5828000D, // 001A LDCONST R10 K13 + 0x5C2C0800, // 001B MOVE R11 R4 + 0x7C200600, // 001C CALL R8 3 + 0x5824000A, // 001D LDCONST R9 K10 + 0x7C180600, // 001E CALL R6 3 + 0x78160005, // 001F JMPF R5 #0026 + 0x8C180B0E, // 0020 GETMET R6 R5 K14 + 0x5C200200, // 0021 MOVE R8 R1 + 0x7C180400, // 0022 CALL R6 2 + 0x8C18010F, // 0023 GETMET R6 R0 K15 + 0x88200304, // 0024 GETMBR R8 R1 K4 + 0x7C180400, // 0025 CALL R6 2 + 0x50180000, // 0026 LDBOOL R6 0 0 + 0x80040C00, // 0027 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_write_response +********************************************************************/ +be_local_closure(Matter_IM_process_write_response, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ @@ -91,38 +171,36 @@ be_local_closure(Matter_IM_process_read_request, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(ReadRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(attributes_requests), - /* K4 */ be_nested_str_weak(_inner_process_read_request), - /* K5 */ be_nested_str_weak(session), - /* K6 */ be_nested_str_weak(send_report_data), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(WriteResponseMessage), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20WriteResponseMessage_X3D), + /* K7 */ be_const_int(2), }), - be_str_weak(process_read_request), + be_str_weak(process_write_response), &be_const_str_solidified, - ( &(const binstruction[20]) { /* 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 - 0x4C140000, // 0007 LDNIL R5 - 0x20100805, // 0008 NE R4 R4 R5 - 0x78120007, // 0009 JMPF R4 #0012 - 0x8C100104, // 000A GETMET R4 R0 K4 - 0x88180305, // 000B GETMBR R6 R1 K5 - 0x5C1C0600, // 000C MOVE R7 R3 - 0x7C100600, // 000D CALL R4 3 - 0x8C140106, // 000E GETMET R5 R0 K6 - 0x5C1C0200, // 000F MOVE R7 R1 - 0x5C200800, // 0010 MOVE R8 R4 - 0x7C140600, // 0011 CALL R5 3 - 0x50100200, // 0012 LDBOOL R4 1 0 - 0x80040800, // 0013 RET 1 R4 + ( &(const binstruction[17]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100903, // 0004 GETMET R4 R4 K3 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x601C0008, // 0009 GETGBL R7 G8 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C1C0200, // 000B CALL R7 1 + 0x001E0C07, // 000C ADD R7 K6 R7 + 0x58200007, // 000D LDCONST R8 K7 + 0x7C140600, // 000E CALL R5 3 + 0x50140000, // 000F LDBOOL R5 0 0 + 0x80040A00, // 0010 RET 1 R5 }) ) ); @@ -130,11 +208,328 @@ be_local_closure(Matter_IM_process_read_request, /* name */ /******************************************************************** -** Solidified function: send_subscribe_update +** Solidified function: process_invoke_request ********************************************************************/ -be_local_closure(Matter_IM_send_subscribe_update, /* name */ +be_local_closure(Matter_IM_process_invoke_request, /* name */ be_nested_proto( - 14, /* nstack */ + 19, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[45]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20IM_X3Ainvoke_request_X20processing_X20start), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(Path), + /* K6 */ be_nested_str_weak(InvokeRequestMessage), + /* K7 */ be_nested_str_weak(from_TLV), + /* K8 */ be_nested_str_weak(invoke_requests), + /* K9 */ be_nested_str_weak(InvokeResponseMessage), + /* K10 */ be_nested_str_weak(suppress_response), + /* K11 */ be_nested_str_weak(invoke_responses), + /* K12 */ be_nested_str_weak(endpoint), + /* K13 */ be_nested_str_weak(command_path), + /* K14 */ be_nested_str_weak(cluster), + /* K15 */ be_nested_str_weak(command), + /* K16 */ be_nested_str_weak(status), + /* K17 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K18 */ be_nested_str_weak(get_command_name), + /* K19 */ be_nested_str_weak(format), + /* K20 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X25s_X20_X25s_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K21 */ be_nested_str_weak(), + /* K22 */ be_nested_str_weak(remote_ip), + /* K23 */ be_nested_str_weak(remote_port), + /* K24 */ be_const_int(2), + /* K25 */ be_nested_str_weak(device), + /* K26 */ be_nested_str_weak(invoke_request), + /* K27 */ be_nested_str_weak(session), + /* K28 */ be_nested_str_weak(command_fields), + /* K29 */ be_nested_str_weak(InvokeResponseIB), + /* K30 */ be_nested_str_weak(CommandStatusIB), + /* K31 */ be_nested_str_weak(CommandPathIB), + /* K32 */ be_nested_str_weak(StatusIB), + /* K33 */ be_nested_str_weak(SUCCESS), + /* K34 */ be_nested_str_weak(push), + /* K35 */ be_nested_str_weak(CommandDataIB), + /* K36 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X25s_X20_X25s), + /* K37 */ be_nested_str_weak(stop_iteration), + /* K38 */ be_nested_str_weak(MTR_X3A_X20invoke_responses_X3D), + /* K39 */ be_const_int(0), + /* K40 */ be_nested_str_weak(MTR_X3A_X20InvokeResponse_X3D), + /* K41 */ be_nested_str_weak(MTR_X3A_X20InvokeResponseTLV_X3D), + /* K42 */ be_nested_str_weak(to_TLV), + /* K43 */ be_const_int(3), + /* K44 */ be_nested_str_weak(send_invoke_response), + }), + be_str_weak(process_invoke_request), + &be_const_str_solidified, + ( &(const binstruction[248]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x58180003, // 0003 LDCONST R6 K3 + 0x541E0003, // 0004 LDINT R7 4 + 0x7C100600, // 0005 CALL R4 3 + 0xB8120800, // 0006 GETNGBL R4 K4 + 0x8C100905, // 0007 GETMET R4 R4 K5 + 0x7C100200, // 0008 CALL R4 1 + 0xB8160800, // 0009 GETNGBL R5 K4 + 0x8C140B06, // 000A GETMET R5 R5 K6 + 0x7C140200, // 000B CALL R5 1 + 0x8C140B07, // 000C GETMET R5 R5 K7 + 0x5C1C0400, // 000D MOVE R7 R2 + 0x7C140400, // 000E CALL R5 2 + 0x88180B08, // 000F GETMBR R6 R5 K8 + 0x4C1C0000, // 0010 LDNIL R7 + 0x20180C07, // 0011 NE R6 R6 R7 + 0x781A00E3, // 0012 JMPF R6 #00F7 + 0xB81A0800, // 0013 GETNGBL R6 K4 + 0x8C180D09, // 0014 GETMET R6 R6 K9 + 0x7C180200, // 0015 CALL R6 1 + 0x501C0000, // 0016 LDBOOL R7 0 0 + 0x901A1407, // 0017 SETMBR R6 K10 R7 + 0x601C0012, // 0018 GETGBL R7 G18 + 0x7C1C0000, // 0019 CALL R7 0 + 0x901A1607, // 001A SETMBR R6 K11 R7 + 0x601C0010, // 001B GETGBL R7 G16 + 0x88200B08, // 001C GETMBR R8 R5 K8 + 0x7C1C0200, // 001D CALL R7 1 + 0xA80200AD, // 001E EXBLK 0 #00CD + 0x5C200E00, // 001F MOVE R8 R7 + 0x7C200000, // 0020 CALL R8 0 + 0x8824110D, // 0021 GETMBR R9 R8 K13 + 0x8824130C, // 0022 GETMBR R9 R9 K12 + 0x90121809, // 0023 SETMBR R4 K12 R9 + 0x8824110D, // 0024 GETMBR R9 R8 K13 + 0x8824130E, // 0025 GETMBR R9 R9 K14 + 0x90121C09, // 0026 SETMBR R4 K14 R9 + 0x8824110D, // 0027 GETMBR R9 R8 K13 + 0x8824130F, // 0028 GETMBR R9 R9 K15 + 0x90121E09, // 0029 SETMBR R4 K15 R9 + 0xB8260800, // 002A GETNGBL R9 K4 + 0x88241311, // 002B GETMBR R9 R9 K17 + 0x90122009, // 002C SETMBR R4 K16 R9 + 0xB8260800, // 002D GETNGBL R9 K4 + 0x8C241312, // 002E GETMET R9 R9 K18 + 0x882C090E, // 002F GETMBR R11 R4 K14 + 0x8830090F, // 0030 GETMBR R12 R4 K15 + 0x7C240600, // 0031 CALL R9 3 + 0xB82A0200, // 0032 GETNGBL R10 K1 + 0x8C281502, // 0033 GETMET R10 R10 K2 + 0x8C300713, // 0034 GETMET R12 R3 K19 + 0x58380014, // 0035 LDCONST R14 K20 + 0x603C0008, // 0036 GETGBL R15 G8 + 0x5C400800, // 0037 MOVE R16 R4 + 0x7C3C0200, // 0038 CALL R15 1 + 0x78260001, // 0039 JMPF R9 #003C + 0x5C401200, // 003A MOVE R16 R9 + 0x70020000, // 003B JMP #003D + 0x58400015, // 003C LDCONST R16 K21 + 0x88440316, // 003D GETMBR R17 R1 K22 + 0x88480317, // 003E GETMBR R18 R1 K23 + 0x7C300C00, // 003F CALL R12 6 + 0x58340018, // 0040 LDCONST R13 K24 + 0x7C280600, // 0041 CALL R10 3 + 0x88280119, // 0042 GETMBR R10 R0 K25 + 0x8C28151A, // 0043 GETMET R10 R10 K26 + 0x8830031B, // 0044 GETMBR R12 R1 K27 + 0x8834111C, // 0045 GETMBR R13 R8 K28 + 0x5C380800, // 0046 MOVE R14 R4 + 0x7C280800, // 0047 CALL R10 4 + 0xB82E0800, // 0048 GETNGBL R11 K4 + 0x8C2C171D, // 0049 GETMET R11 R11 K29 + 0x7C2C0200, // 004A CALL R11 1 + 0x50300200, // 004B LDBOOL R12 1 0 + 0x1C30140C, // 004C EQ R12 R10 R12 + 0x78320023, // 004D JMPF R12 #0072 + 0xB8320800, // 004E GETNGBL R12 K4 + 0x8C30191E, // 004F GETMET R12 R12 K30 + 0x7C300200, // 0050 CALL R12 1 + 0x902E200C, // 0051 SETMBR R11 K16 R12 + 0x88301710, // 0052 GETMBR R12 R11 K16 + 0xB8360800, // 0053 GETNGBL R13 K4 + 0x8C341B1F, // 0054 GETMET R13 R13 K31 + 0x7C340200, // 0055 CALL R13 1 + 0x90321A0D, // 0056 SETMBR R12 K13 R13 + 0x88301710, // 0057 GETMBR R12 R11 K16 + 0x8830190D, // 0058 GETMBR R12 R12 K13 + 0x8834090C, // 0059 GETMBR R13 R4 K12 + 0x9032180D, // 005A SETMBR R12 K12 R13 + 0x88301710, // 005B GETMBR R12 R11 K16 + 0x8830190D, // 005C GETMBR R12 R12 K13 + 0x8834090E, // 005D GETMBR R13 R4 K14 + 0x90321C0D, // 005E SETMBR R12 K14 R13 + 0x88301710, // 005F GETMBR R12 R11 K16 + 0x8830190D, // 0060 GETMBR R12 R12 K13 + 0x8834090F, // 0061 GETMBR R13 R4 K15 + 0x90321E0D, // 0062 SETMBR R12 K15 R13 + 0x88301710, // 0063 GETMBR R12 R11 K16 + 0xB8360800, // 0064 GETNGBL R13 K4 + 0x8C341B20, // 0065 GETMET R13 R13 K32 + 0x7C340200, // 0066 CALL R13 1 + 0x9032200D, // 0067 SETMBR R12 K16 R13 + 0x88301710, // 0068 GETMBR R12 R11 K16 + 0x88301910, // 0069 GETMBR R12 R12 K16 + 0xB8360800, // 006A GETNGBL R13 K4 + 0x88341B21, // 006B GETMBR R13 R13 K33 + 0x9032200D, // 006C SETMBR R12 K16 R13 + 0x88300D0B, // 006D GETMBR R12 R6 K11 + 0x8C301922, // 006E GETMET R12 R12 K34 + 0x5C381600, // 006F MOVE R14 R11 + 0x7C300400, // 0070 CALL R12 2 + 0x70020059, // 0071 JMP #00CC + 0x4C300000, // 0072 LDNIL R12 + 0x2030140C, // 0073 NE R12 R10 R12 + 0x7832002F, // 0074 JMPF R12 #00A5 + 0xB8320800, // 0075 GETNGBL R12 K4 + 0x8C301923, // 0076 GETMET R12 R12 K35 + 0x7C300200, // 0077 CALL R12 1 + 0x902E1E0C, // 0078 SETMBR R11 K15 R12 + 0x8830170F, // 0079 GETMBR R12 R11 K15 + 0xB8360800, // 007A GETNGBL R13 K4 + 0x8C341B1F, // 007B GETMET R13 R13 K31 + 0x7C340200, // 007C CALL R13 1 + 0x90321A0D, // 007D SETMBR R12 K13 R13 + 0x8830170F, // 007E GETMBR R12 R11 K15 + 0x8830190D, // 007F GETMBR R12 R12 K13 + 0x8834090C, // 0080 GETMBR R13 R4 K12 + 0x9032180D, // 0081 SETMBR R12 K12 R13 + 0x8830170F, // 0082 GETMBR R12 R11 K15 + 0x8830190D, // 0083 GETMBR R12 R12 K13 + 0x8834090E, // 0084 GETMBR R13 R4 K14 + 0x90321C0D, // 0085 SETMBR R12 K14 R13 + 0x8830170F, // 0086 GETMBR R12 R11 K15 + 0x8830190D, // 0087 GETMBR R12 R12 K13 + 0x8834090F, // 0088 GETMBR R13 R4 K15 + 0x90321E0D, // 0089 SETMBR R12 K15 R13 + 0x8830170F, // 008A GETMBR R12 R11 K15 + 0x9032380A, // 008B SETMBR R12 K28 R10 + 0x88300D0B, // 008C GETMBR R12 R6 K11 + 0x8C301922, // 008D GETMET R12 R12 K34 + 0x5C381600, // 008E MOVE R14 R11 + 0x7C300400, // 008F CALL R12 2 + 0xB8320800, // 0090 GETNGBL R12 K4 + 0x8C301912, // 0091 GETMET R12 R12 K18 + 0x8838090E, // 0092 GETMBR R14 R4 K14 + 0x883C090F, // 0093 GETMBR R15 R4 K15 + 0x7C300600, // 0094 CALL R12 3 + 0x5C241800, // 0095 MOVE R9 R12 + 0xB8320200, // 0096 GETNGBL R12 K1 + 0x8C301902, // 0097 GETMET R12 R12 K2 + 0x8C380713, // 0098 GETMET R14 R3 K19 + 0x58400024, // 0099 LDCONST R16 K36 + 0x60440008, // 009A GETGBL R17 G8 + 0x5C480800, // 009B MOVE R18 R4 + 0x7C440200, // 009C CALL R17 1 + 0x78260001, // 009D JMPF R9 #00A0 + 0x5C481200, // 009E MOVE R18 R9 + 0x70020000, // 009F JMP #00A1 + 0x58480015, // 00A0 LDCONST R18 K21 + 0x7C380800, // 00A1 CALL R14 4 + 0x583C0018, // 00A2 LDCONST R15 K24 + 0x7C300600, // 00A3 CALL R12 3 + 0x70020026, // 00A4 JMP #00CC + 0x88300910, // 00A5 GETMBR R12 R4 K16 + 0x4C340000, // 00A6 LDNIL R13 + 0x2030180D, // 00A7 NE R12 R12 R13 + 0x78320022, // 00A8 JMPF R12 #00CC + 0xB8320800, // 00A9 GETNGBL R12 K4 + 0x8C30191E, // 00AA GETMET R12 R12 K30 + 0x7C300200, // 00AB CALL R12 1 + 0x902E200C, // 00AC SETMBR R11 K16 R12 + 0x88301710, // 00AD GETMBR R12 R11 K16 + 0xB8360800, // 00AE GETNGBL R13 K4 + 0x8C341B1F, // 00AF GETMET R13 R13 K31 + 0x7C340200, // 00B0 CALL R13 1 + 0x90321A0D, // 00B1 SETMBR R12 K13 R13 + 0x88301710, // 00B2 GETMBR R12 R11 K16 + 0x8830190D, // 00B3 GETMBR R12 R12 K13 + 0x8834090C, // 00B4 GETMBR R13 R4 K12 + 0x9032180D, // 00B5 SETMBR R12 K12 R13 + 0x88301710, // 00B6 GETMBR R12 R11 K16 + 0x8830190D, // 00B7 GETMBR R12 R12 K13 + 0x8834090E, // 00B8 GETMBR R13 R4 K14 + 0x90321C0D, // 00B9 SETMBR R12 K14 R13 + 0x88301710, // 00BA GETMBR R12 R11 K16 + 0x8830190D, // 00BB GETMBR R12 R12 K13 + 0x8834090F, // 00BC GETMBR R13 R4 K15 + 0x90321E0D, // 00BD SETMBR R12 K15 R13 + 0x88301710, // 00BE GETMBR R12 R11 K16 + 0xB8360800, // 00BF GETNGBL R13 K4 + 0x8C341B20, // 00C0 GETMET R13 R13 K32 + 0x7C340200, // 00C1 CALL R13 1 + 0x9032200D, // 00C2 SETMBR R12 K16 R13 + 0x88301710, // 00C3 GETMBR R12 R11 K16 + 0x88301910, // 00C4 GETMBR R12 R12 K16 + 0x88340910, // 00C5 GETMBR R13 R4 K16 + 0x9032200D, // 00C6 SETMBR R12 K16 R13 + 0x88300D0B, // 00C7 GETMBR R12 R6 K11 + 0x8C301922, // 00C8 GETMET R12 R12 K34 + 0x5C381600, // 00C9 MOVE R14 R11 + 0x7C300400, // 00CA CALL R12 2 + 0x7001FFFF, // 00CB JMP #00CC + 0x7001FF51, // 00CC JMP #001F + 0x581C0025, // 00CD LDCONST R7 K37 + 0xAC1C0200, // 00CE CATCH R7 1 0 + 0xB0080000, // 00CF RAISE 2 R0 R0 + 0xB81E0200, // 00D0 GETNGBL R7 K1 + 0x8C1C0F02, // 00D1 GETMET R7 R7 K2 + 0x60240008, // 00D2 GETGBL R9 G8 + 0x88280D0B, // 00D3 GETMBR R10 R6 K11 + 0x7C240200, // 00D4 CALL R9 1 + 0x00264C09, // 00D5 ADD R9 K38 R9 + 0x542A0003, // 00D6 LDINT R10 4 + 0x7C1C0600, // 00D7 CALL R7 3 + 0x601C000C, // 00D8 GETGBL R7 G12 + 0x88200D0B, // 00D9 GETMBR R8 R6 K11 + 0x7C1C0200, // 00DA CALL R7 1 + 0x241C0F27, // 00DB GT R7 R7 K39 + 0x781E0015, // 00DC JMPF R7 #00F3 + 0xB81E0200, // 00DD GETNGBL R7 K1 + 0x8C1C0F02, // 00DE GETMET R7 R7 K2 + 0x60240008, // 00DF GETGBL R9 G8 + 0x5C280C00, // 00E0 MOVE R10 R6 + 0x7C240200, // 00E1 CALL R9 1 + 0x00265009, // 00E2 ADD R9 K40 R9 + 0x542A0003, // 00E3 LDINT R10 4 + 0x7C1C0600, // 00E4 CALL R7 3 + 0xB81E0200, // 00E5 GETNGBL R7 K1 + 0x8C1C0F02, // 00E6 GETMET R7 R7 K2 + 0x60240008, // 00E7 GETGBL R9 G8 + 0x8C280D2A, // 00E8 GETMET R10 R6 K42 + 0x7C280200, // 00E9 CALL R10 1 + 0x7C240200, // 00EA CALL R9 1 + 0x00265209, // 00EB ADD R9 K41 R9 + 0x5828002B, // 00EC LDCONST R10 K43 + 0x7C1C0600, // 00ED CALL R7 3 + 0x8C1C012C, // 00EE GETMET R7 R0 K44 + 0x5C240200, // 00EF MOVE R9 R1 + 0x5C280C00, // 00F0 MOVE R10 R6 + 0x7C1C0600, // 00F1 CALL R7 3 + 0x70020001, // 00F2 JMP #00F5 + 0x501C0000, // 00F3 LDBOOL R7 0 0 + 0x80040E00, // 00F4 RET 1 R7 + 0x501C0200, // 00F5 LDBOOL R7 1 0 + 0x80040E00, // 00F6 RET 1 R7 + 0x80000000, // 00F7 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_sendqueue_by_exchangeid +********************************************************************/ +be_local_closure(Matter_IM_remove_sendqueue_by_exchangeid, /* name */ + be_nested_proto( + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -142,102 +537,40 @@ be_local_closure(Matter_IM_send_subscribe_update, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(session), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(ReadRequestMessage), - /* K4 */ be_nested_str_weak(fabric_filtered), - /* K5 */ be_nested_str_weak(attributes_requests), - /* K6 */ be_nested_str_weak(updates), - /* K7 */ be_nested_str_weak(AttributePathIB), - /* K8 */ be_nested_str_weak(endpoint), - /* K9 */ be_nested_str_weak(cluster), - /* K10 */ be_nested_str_weak(attribute), - /* K11 */ be_nested_str_weak(push), - /* K12 */ be_nested_str_weak(stop_iteration), - /* K13 */ be_nested_str_weak(tasmota), - /* K14 */ be_nested_str_weak(log), - /* K15 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_ack_X20_X20_X20sub_id_X3D), - /* K16 */ be_nested_str_weak(subscription_id), - /* K17 */ be_const_int(2), - /* K18 */ be_nested_str_weak(_inner_process_read_request), - /* K19 */ be_nested_str_weak(suppress_response), - /* K20 */ be_const_int(0), - /* K21 */ be_nested_str_weak(send_queue), - /* K22 */ be_nested_str_weak(IM_ReportDataSubscribed), - /* K23 */ be_nested_str_weak(__message_handler), - /* K24 */ be_nested_str_weak(send_enqueued), + ( &(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(send_subscribe_update), + be_str_weak(remove_sendqueue_by_exchangeid), &be_const_str_solidified, - ( &(const binstruction[66]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0xB8120400, // 0002 GETNGBL R4 K2 - 0x8C100903, // 0003 GETMET R4 R4 K3 - 0x7C100200, // 0004 CALL R4 1 - 0x50140000, // 0005 LDBOOL R5 0 0 - 0x90120805, // 0006 SETMBR R4 K4 R5 - 0x60140012, // 0007 GETGBL R5 G18 - 0x7C140000, // 0008 CALL R5 0 - 0x90120A05, // 0009 SETMBR R4 K5 R5 - 0x60140010, // 000A GETGBL R5 G16 - 0x88180306, // 000B GETMBR R6 R1 K6 - 0x7C140200, // 000C CALL R5 1 - 0xA802000F, // 000D EXBLK 0 #001E - 0x5C180A00, // 000E MOVE R6 R5 - 0x7C180000, // 000F CALL R6 0 - 0xB81E0400, // 0010 GETNGBL R7 K2 - 0x8C1C0F07, // 0011 GETMET R7 R7 K7 - 0x7C1C0200, // 0012 CALL R7 1 - 0x88200D08, // 0013 GETMBR R8 R6 K8 - 0x901E1008, // 0014 SETMBR R7 K8 R8 - 0x88200D09, // 0015 GETMBR R8 R6 K9 - 0x901E1208, // 0016 SETMBR R7 K9 R8 - 0x88200D0A, // 0017 GETMBR R8 R6 K10 - 0x901E1408, // 0018 SETMBR R7 K10 R8 - 0x88200905, // 0019 GETMBR R8 R4 K5 - 0x8C20110B, // 001A GETMET R8 R8 K11 - 0x5C280E00, // 001B MOVE R10 R7 - 0x7C200400, // 001C CALL R8 2 - 0x7001FFEF, // 001D JMP #000E - 0x5814000C, // 001E LDCONST R5 K12 - 0xAC140200, // 001F CATCH R5 1 0 - 0xB0080000, // 0020 RAISE 2 R0 R0 - 0xB8161A00, // 0021 GETNGBL R5 K13 - 0x8C140B0E, // 0022 GETMET R5 R5 K14 - 0x601C0008, // 0023 GETGBL R7 G8 - 0x88200310, // 0024 GETMBR R8 R1 K16 - 0x7C1C0200, // 0025 CALL R7 1 - 0x001E1E07, // 0026 ADD R7 K15 R7 - 0x58200011, // 0027 LDCONST R8 K17 - 0x7C140600, // 0028 CALL R5 3 - 0x8C140112, // 0029 GETMET R5 R0 K18 - 0x5C1C0600, // 002A MOVE R7 R3 - 0x5C200800, // 002B MOVE R8 R4 - 0x7C140600, // 002C CALL R5 3 - 0x6018000C, // 002D GETGBL R6 G12 - 0x881C0905, // 002E GETMBR R7 R4 K5 - 0x7C180200, // 002F CALL R6 1 - 0x1C180D14, // 0030 EQ R6 R6 K20 - 0x90162606, // 0031 SETMBR R5 K19 R6 - 0x88180310, // 0032 GETMBR R6 R1 K16 - 0x90162006, // 0033 SETMBR R5 K16 R6 - 0x88180115, // 0034 GETMBR R6 R0 K21 - 0x8C180D0B, // 0035 GETMET R6 R6 K11 - 0xB8220400, // 0036 GETNGBL R8 K2 - 0x8C201116, // 0037 GETMET R8 R8 K22 - 0x88280717, // 0038 GETMBR R10 R3 K23 - 0x5C2C0600, // 0039 MOVE R11 R3 - 0x5C300A00, // 003A MOVE R12 R5 - 0x5C340200, // 003B MOVE R13 R1 - 0x7C200A00, // 003C CALL R8 5 - 0x7C180400, // 003D CALL R6 2 - 0x8C180118, // 003E GETMET R6 R0 K24 - 0x88200717, // 003F GETMBR R8 R3 K23 - 0x7C180400, // 0040 CALL R6 2 - 0x80000000, // 0041 RET 0 + ( &(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 }) ) ); @@ -281,6 +614,36 @@ be_local_closure(Matter_IM_send_write_response, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: every_250ms +********************************************************************/ +be_local_closure(Matter_IM_every_250ms, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(subs), + /* K1 */ be_nested_str_weak(every_250ms), + }), + be_str_weak(every_250ms), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: subscribe_request ********************************************************************/ @@ -370,55 +733,6 @@ be_local_closure(Matter_IM_subscribe_request, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: process_write_response -********************************************************************/ -be_local_closure(Matter_IM_process_write_response, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(WriteResponseMessage), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20WriteResponseMessage_X3D), - /* K7 */ be_const_int(2), - }), - be_str_weak(process_write_response), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 - 0x7C100200, // 0003 CALL R4 1 - 0x8C100903, // 0004 GETMET R4 R4 K3 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C100400, // 0006 CALL R4 2 - 0xB8160800, // 0007 GETNGBL R5 K4 - 0x8C140B05, // 0008 GETMET R5 R5 K5 - 0x601C0008, // 0009 GETGBL R7 G8 - 0x5C200800, // 000A MOVE R8 R4 - 0x7C1C0200, // 000B CALL R7 1 - 0x001E0C07, // 000C ADD R7 K6 R7 - 0x58200007, // 000D LDCONST R8 K7 - 0x7C140600, // 000E CALL R5 3 - 0x50140000, // 000F LDBOOL R5 0 0 - 0x80040A00, // 0010 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: process_incoming ********************************************************************/ @@ -599,11 +913,11 @@ be_local_closure(Matter_IM_process_incoming, /* name */ /******************************************************************** -** Solidified function: remove_sendqueue_by_exchangeid +** Solidified function: init ********************************************************************/ -be_local_closure(Matter_IM_remove_sendqueue_by_exchangeid, /* name */ +be_local_closure(Matter_IM_init, /* name */ be_nested_proto( - 6, /* nstack */ + 5, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -612,76 +926,24 @@ be_local_closure(Matter_IM_remove_sendqueue_by_exchangeid, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), + /* K0 */ be_nested_str_weak(device), /* 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), + /* K2 */ be_nested_str_weak(subs), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(IM_Subscription_Shop), }), - 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: send_subscribe_response -********************************************************************/ -be_local_closure(Matter_IM_send_subscribe_response, /* name */ - be_nested_proto( - 11, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_SubscribeResponse), - }), - be_str_weak(send_subscribe_response), + be_str_weak(init), &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 + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0xB80A0600, // 0004 GETNGBL R2 K3 + 0x8C080504, // 0005 GETMET R2 R2 K4 + 0x5C100000, // 0006 MOVE R4 R0 + 0x7C080400, // 0007 CALL R2 2 + 0x90020402, // 0008 SETMBR R0 K2 R2 0x80000000, // 0009 RET 0 }) ) @@ -690,11 +952,11 @@ be_local_closure(Matter_IM_send_subscribe_response, /* name */ /******************************************************************** -** Solidified function: process_status_response +** Solidified function: report_data ********************************************************************/ -be_local_closure(Matter_IM_process_status_response, /* name */ +be_local_closure(Matter_IM_report_data, /* name */ be_nested_proto( - 12, /* nstack */ + 9, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -702,67 +964,36 @@ be_local_closure(Matter_IM_process_status_response, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(findsubval), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(find_sendqueue_by_exchangeid), - /* K4 */ be_nested_str_weak(exchange_id), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(SUCCESS), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(ack_received), - /* K12 */ be_nested_str_weak(format), - /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), - /* K14 */ be_nested_str_weak(ack_error), - /* K15 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(ReportDataMessage), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20ReportDataMessage_X3D), + /* K7 */ be_const_int(2), }), - be_str_weak(process_status_response), + be_str_weak(report_data), &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ + ( &(const binstruction[17]) { /* code */ 0xA40E0000, // 0000 IMPORT R3 K0 - 0x8C100501, // 0001 GETMET R4 R2 K1 - 0x58180002, // 0002 LDCONST R6 K2 - 0x541E00FE, // 0003 LDINT R7 255 - 0x7C100600, // 0004 CALL R4 3 - 0x8C140103, // 0005 GETMET R5 R0 K3 - 0x881C0304, // 0006 GETMBR R7 R1 K4 - 0x7C140400, // 0007 CALL R5 2 - 0xB81A0A00, // 0008 GETNGBL R6 K5 - 0x88180D06, // 0009 GETMBR R6 R6 K6 - 0x1C180806, // 000A EQ R6 R4 R6 - 0x781A000A, // 000B JMPF R6 #0017 - 0xB81A0E00, // 000C GETNGBL R6 K7 - 0x8C180D08, // 000D GETMET R6 R6 K8 - 0x58200009, // 000E LDCONST R8 K9 - 0x5824000A, // 000F LDCONST R9 K10 - 0x7C180600, // 0010 CALL R6 3 - 0x78160003, // 0011 JMPF R5 #0016 - 0x8C180B0B, // 0012 GETMET R6 R5 K11 - 0x5C200200, // 0013 MOVE R8 R1 - 0x7C180400, // 0014 CALL R6 2 - 0x80040C00, // 0015 RET 1 R6 - 0x7002000E, // 0016 JMP #0026 - 0xB81A0E00, // 0017 GETNGBL R6 K7 - 0x8C180D08, // 0018 GETMET R6 R6 K8 - 0x8C20070C, // 0019 GETMET R8 R3 K12 - 0x5828000D, // 001A LDCONST R10 K13 - 0x5C2C0800, // 001B MOVE R11 R4 - 0x7C200600, // 001C CALL R8 3 - 0x5824000A, // 001D LDCONST R9 K10 - 0x7C180600, // 001E CALL R6 3 - 0x78160005, // 001F JMPF R5 #0026 - 0x8C180B0E, // 0020 GETMET R6 R5 K14 - 0x5C200200, // 0021 MOVE R8 R1 - 0x7C180400, // 0022 CALL R6 2 - 0x8C18010F, // 0023 GETMET R6 R0 K15 - 0x88200304, // 0024 GETMBR R8 R1 K4 - 0x7C180400, // 0025 CALL R6 2 - 0x50180000, // 0026 LDBOOL R6 0 0 - 0x80040C00, // 0027 RET 1 R6 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100903, // 0004 GETMET R4 R4 K3 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x601C0008, // 0009 GETGBL R7 G8 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C1C0200, // 000B CALL R7 1 + 0x001E0C07, // 000C ADD R7 K6 R7 + 0x58200007, // 000D LDCONST R8 K7 + 0x7C140600, // 000E CALL R5 3 + 0x50140000, // 000F LDBOOL R5 0 0 + 0x80040A00, // 0010 RET 1 R5 }) ) ); @@ -1034,9 +1265,9 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */ /* K20 */ be_nested_str_weak(process_attribute_expansion), /* K21 */ be_nested_str_weak(stop_iteration), /* K22 */ be_nested_str_weak(MTR_X3A_X20ReportDataMessage_X3D), - /* K23 */ be_nested_str_weak(MTR_X3A_X20ReportDataMessageTLV_X3D), - /* K24 */ be_nested_str_weak(to_TLV), - /* K25 */ be_const_int(3), + /* K23 */ be_const_int(3), + /* K24 */ be_nested_str_weak(MTR_X3A_X20ReportDataMessageTLV_X3D), + /* K25 */ be_nested_str_weak(to_TLV), }), be_str_weak(_inner_process_read_request), &be_const_str_solidified, @@ -1132,16 +1363,16 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */ 0x5C280C00, // 0058 MOVE R10 R6 0x7C240200, // 0059 CALL R9 1 0x00262C09, // 005A ADD R9 K22 R9 - 0x542A0003, // 005B LDINT R10 4 + 0x58280017, // 005B LDCONST R10 K23 0x7C1C0600, // 005C CALL R7 3 0xB81E1A00, // 005D GETNGBL R7 K13 0x8C1C0F0E, // 005E GETMET R7 R7 K14 0x60240008, // 005F GETGBL R9 G8 - 0x8C280D18, // 0060 GETMET R10 R6 K24 + 0x8C280D19, // 0060 GETMET R10 R6 K25 0x7C280200, // 0061 CALL R10 1 0x7C240200, // 0062 CALL R9 1 - 0x00262E09, // 0063 ADD R9 K23 R9 - 0x58280019, // 0064 LDCONST R10 K25 + 0x00263009, // 0063 ADD R9 K24 R9 + 0x58280017, // 0064 LDCONST R10 K23 0x7C1C0600, // 0065 CALL R7 3 0xA0000000, // 0066 CLOSE R0 0x80040C00, // 0067 RET 1 R6 @@ -1151,55 +1382,6 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: report_data -********************************************************************/ -be_local_closure(Matter_IM_report_data, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(ReportDataMessage), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20ReportDataMessage_X3D), - /* K7 */ be_const_int(2), - }), - be_str_weak(report_data), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 - 0x7C100200, // 0003 CALL R4 1 - 0x8C100903, // 0004 GETMET R4 R4 K3 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C100400, // 0006 CALL R4 2 - 0xB8160800, // 0007 GETNGBL R5 K4 - 0x8C140B05, // 0008 GETMET R5 R5 K5 - 0x601C0008, // 0009 GETGBL R7 G8 - 0x5C200800, // 000A MOVE R8 R4 - 0x7C1C0200, // 000B CALL R7 1 - 0x001E0C07, // 000C ADD R7 K6 R7 - 0x58200007, // 000D LDCONST R8 K7 - 0x7C140600, // 000E CALL R5 3 - 0x50140000, // 000F LDBOOL R5 0 0 - 0x80040A00, // 0010 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: send_enqueued ********************************************************************/ @@ -1256,9 +1438,9 @@ be_local_closure(Matter_IM_send_enqueued, /* name */ /******************************************************************** -** Solidified function: process_invoke_response +** Solidified function: send_invoke_response ********************************************************************/ -be_local_closure(Matter_IM_process_invoke_response, /* name */ +be_local_closure(Matter_IM_send_invoke_response, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ @@ -1268,36 +1450,252 @@ be_local_closure(Matter_IM_process_invoke_response, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(InvokeResponseMessage), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20InvokeResponseMessage_X3D), - /* K7 */ be_const_int(2), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_InvokeResponse), }), - be_str_weak(process_invoke_response), + be_str_weak(send_invoke_response), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 - 0x7C100200, // 0003 CALL R4 1 - 0x8C100903, // 0004 GETMET R4 R4 K3 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C100400, // 0006 CALL R4 2 - 0xB8160800, // 0007 GETNGBL R5 K4 - 0x8C140B05, // 0008 GETMET R5 R5 K5 - 0x601C0008, // 0009 GETGBL R7 G8 - 0x5C200800, // 000A MOVE R8 R4 - 0x7C1C0200, // 000B CALL R7 1 - 0x001E0C07, // 000C ADD R7 K6 R7 - 0x58200007, // 000D LDCONST R8 K7 - 0x7C140600, // 000E CALL R5 3 - 0x50140000, // 000F LDBOOL R5 0 0 - 0x80040A00, // 0010 RET 1 R5 + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_subscribe_update +********************************************************************/ +be_local_closure(Matter_IM_send_subscribe_update, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[26]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(session), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(ReadRequestMessage), + /* K4 */ be_nested_str_weak(fabric_filtered), + /* K5 */ be_nested_str_weak(attributes_requests), + /* K6 */ be_nested_str_weak(updates), + /* K7 */ be_nested_str_weak(AttributePathIB), + /* K8 */ be_nested_str_weak(endpoint), + /* K9 */ be_nested_str_weak(cluster), + /* K10 */ be_nested_str_weak(attribute), + /* K11 */ be_nested_str_weak(push), + /* K12 */ be_nested_str_weak(stop_iteration), + /* K13 */ be_const_int(0), + /* K14 */ be_nested_str_weak(tasmota), + /* K15 */ be_nested_str_weak(log), + /* K16 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_data_X20_X20sub_id_X3D), + /* K17 */ be_nested_str_weak(subscription_id), + /* K18 */ be_const_int(2), + /* K19 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_alive_X20sub_id_X3D), + /* K20 */ be_nested_str_weak(_inner_process_read_request), + /* K21 */ be_nested_str_weak(suppress_response), + /* K22 */ be_nested_str_weak(send_queue), + /* K23 */ be_nested_str_weak(IM_ReportDataSubscribed), + /* K24 */ be_nested_str_weak(__message_handler), + /* K25 */ be_nested_str_weak(send_enqueued), + }), + be_str_weak(send_subscribe_update), + &be_const_str_solidified, + ( &(const binstruction[80]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0xB8120400, // 0002 GETNGBL R4 K2 + 0x8C100903, // 0003 GETMET R4 R4 K3 + 0x7C100200, // 0004 CALL R4 1 + 0x50140000, // 0005 LDBOOL R5 0 0 + 0x90120805, // 0006 SETMBR R4 K4 R5 + 0x60140012, // 0007 GETGBL R5 G18 + 0x7C140000, // 0008 CALL R5 0 + 0x90120A05, // 0009 SETMBR R4 K5 R5 + 0x60140010, // 000A GETGBL R5 G16 + 0x88180306, // 000B GETMBR R6 R1 K6 + 0x7C140200, // 000C CALL R5 1 + 0xA802000F, // 000D EXBLK 0 #001E + 0x5C180A00, // 000E MOVE R6 R5 + 0x7C180000, // 000F CALL R6 0 + 0xB81E0400, // 0010 GETNGBL R7 K2 + 0x8C1C0F07, // 0011 GETMET R7 R7 K7 + 0x7C1C0200, // 0012 CALL R7 1 + 0x88200D08, // 0013 GETMBR R8 R6 K8 + 0x901E1008, // 0014 SETMBR R7 K8 R8 + 0x88200D09, // 0015 GETMBR R8 R6 K9 + 0x901E1208, // 0016 SETMBR R7 K9 R8 + 0x88200D0A, // 0017 GETMBR R8 R6 K10 + 0x901E1408, // 0018 SETMBR R7 K10 R8 + 0x88200905, // 0019 GETMBR R8 R4 K5 + 0x8C20110B, // 001A GETMET R8 R8 K11 + 0x5C280E00, // 001B MOVE R10 R7 + 0x7C200400, // 001C CALL R8 2 + 0x7001FFEF, // 001D JMP #000E + 0x5814000C, // 001E LDCONST R5 K12 + 0xAC140200, // 001F CATCH R5 1 0 + 0xB0080000, // 0020 RAISE 2 R0 R0 + 0x6014000C, // 0021 GETGBL R5 G12 + 0x88180905, // 0022 GETMBR R6 R4 K5 + 0x7C140200, // 0023 CALL R5 1 + 0x24140B0D, // 0024 GT R5 R5 K13 + 0x78160008, // 0025 JMPF R5 #002F + 0xB8161C00, // 0026 GETNGBL R5 K14 + 0x8C140B0F, // 0027 GETMET R5 R5 K15 + 0x601C0008, // 0028 GETGBL R7 G8 + 0x88200311, // 0029 GETMBR R8 R1 K17 + 0x7C1C0200, // 002A CALL R7 1 + 0x001E2007, // 002B ADD R7 K16 R7 + 0x58200012, // 002C LDCONST R8 K18 + 0x7C140600, // 002D CALL R5 3 + 0x70020007, // 002E JMP #0037 + 0xB8161C00, // 002F GETNGBL R5 K14 + 0x8C140B0F, // 0030 GETMET R5 R5 K15 + 0x601C0008, // 0031 GETGBL R7 G8 + 0x88200311, // 0032 GETMBR R8 R1 K17 + 0x7C1C0200, // 0033 CALL R7 1 + 0x001E2607, // 0034 ADD R7 K19 R7 + 0x58200012, // 0035 LDCONST R8 K18 + 0x7C140600, // 0036 CALL R5 3 + 0x8C140114, // 0037 GETMET R5 R0 K20 + 0x5C1C0600, // 0038 MOVE R7 R3 + 0x5C200800, // 0039 MOVE R8 R4 + 0x7C140600, // 003A CALL R5 3 + 0x6018000C, // 003B GETGBL R6 G12 + 0x881C0905, // 003C GETMBR R7 R4 K5 + 0x7C180200, // 003D CALL R6 1 + 0x1C180D0D, // 003E EQ R6 R6 K13 + 0x90162A06, // 003F SETMBR R5 K21 R6 + 0x88180311, // 0040 GETMBR R6 R1 K17 + 0x90162206, // 0041 SETMBR R5 K17 R6 + 0x88180116, // 0042 GETMBR R6 R0 K22 + 0x8C180D0B, // 0043 GETMET R6 R6 K11 + 0xB8220400, // 0044 GETNGBL R8 K2 + 0x8C201117, // 0045 GETMET R8 R8 K23 + 0x88280718, // 0046 GETMBR R10 R3 K24 + 0x5C2C0600, // 0047 MOVE R11 R3 + 0x5C300A00, // 0048 MOVE R12 R5 + 0x5C340200, // 0049 MOVE R13 R1 + 0x7C200A00, // 004A CALL R8 5 + 0x7C180400, // 004B CALL R6 2 + 0x8C180119, // 004C GETMET R6 R0 K25 + 0x88200718, // 004D GETMBR R8 R3 K24 + 0x7C180400, // 004E CALL R6 2 + 0x80000000, // 004F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +be_local_closure(Matter_IM_every_second, /* name */ + be_nested_proto( + 1, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_status +********************************************************************/ +be_local_closure(Matter_IM_send_status, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_Status), + }), + be_str_weak(send_status), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_report_data +********************************************************************/ +be_local_closure(Matter_IM_send_report_data, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_ReportData), + }), + be_str_weak(send_report_data), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 }) ) ); @@ -1668,9 +2066,9 @@ be_local_closure(Matter_IM_process_write_request, /* name */ /******************************************************************** -** Solidified function: find_sendqueue_by_exchangeid +** Solidified function: process_incoming_ack ********************************************************************/ -be_local_closure(Matter_IM_find_sendqueue_by_exchangeid, /* name */ +be_local_closure(Matter_IM_process_incoming_ack, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -1680,37 +2078,24 @@ be_local_closure(Matter_IM_find_sendqueue_by_exchangeid, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(get_exchangeid), - /* K3 */ be_const_int(1), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(find_sendqueue_by_exchangeid), + /* K1 */ be_nested_str_weak(exchange_id), + /* K2 */ be_nested_str_weak(ack_received), }), - be_str_weak(find_sendqueue_by_exchangeid), + be_str_weak(process_incoming_ack), &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 + ( &(const binstruction[10]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x88100301, // 0001 GETMBR R4 R1 K1 + 0x7C080400, // 0002 CALL R2 2 + 0x780A0003, // 0003 JMPF R2 #0008 + 0x8C0C0502, // 0004 GETMET R3 R2 K2 + 0x5C140200, // 0005 MOVE R5 R1 + 0x7C0C0400, // 0006 CALL R3 2 + 0x80040600, // 0007 RET 1 R3 + 0x500C0000, // 0008 LDBOOL R3 0 0 + 0x80040600, // 0009 RET 1 R3 }) ) ); @@ -1718,12 +2103,12 @@ be_local_closure(Matter_IM_find_sendqueue_by_exchangeid, /* name */ /******************************************************************** -** Solidified function: send_status +** Solidified function: send_subscribe_response ********************************************************************/ -be_local_closure(Matter_IM_send_status, /* name */ +be_local_closure(Matter_IM_send_subscribe_response, /* name */ be_nested_proto( - 9, /* nstack */ - 3, /* argc */ + 11, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1734,81 +2119,21 @@ be_local_closure(Matter_IM_send_status, /* 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_Status), + /* K3 */ be_nested_str_weak(IM_SubscribeResponse), }), - be_str_weak(send_status), + be_str_weak(send_subscribe_response), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_report_data -********************************************************************/ -be_local_closure(Matter_IM_send_report_data, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_ReportData), - }), - be_str_weak(send_report_data), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -be_local_closure(Matter_IM_every_second, /* name */ - be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 + ( &(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 }) ) ); @@ -1865,9 +2190,59 @@ be_local_closure(Matter_IM_subscribe_response, /* name */ /******************************************************************** -** Solidified function: send_invoke_response +** Solidified function: find_sendqueue_by_exchangeid ********************************************************************/ -be_local_closure(Matter_IM_send_invoke_response, /* name */ +be_local_closure(Matter_IM_find_sendqueue_by_exchangeid, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(get_exchangeid), + /* K3 */ be_const_int(1), + }), + be_str_weak(find_sendqueue_by_exchangeid), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x4C080000, // 0003 LDNIL R2 + 0x80040400, // 0004 RET 1 R2 + 0x58080000, // 0005 LDCONST R2 K0 + 0x600C000C, // 0006 GETGBL R3 G12 + 0x88100101, // 0007 GETMBR R4 R0 K1 + 0x7C0C0200, // 0008 CALL R3 1 + 0x140C0403, // 0009 LT R3 R2 R3 + 0x780E0008, // 000A JMPF R3 #0014 + 0x880C0101, // 000B GETMBR R3 R0 K1 + 0x940C0602, // 000C GETIDX R3 R3 R2 + 0x8C100702, // 000D GETMET R4 R3 K2 + 0x7C100200, // 000E CALL R4 1 + 0x1C100801, // 000F EQ R4 R4 R1 + 0x78120000, // 0010 JMPF R4 #0012 + 0x80040600, // 0011 RET 1 R3 + 0x00080503, // 0012 ADD R2 R2 K3 + 0x7001FFF1, // 0013 JMP #0006 + 0x4C0C0000, // 0014 LDNIL R3 + 0x80040600, // 0015 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_read_request +********************************************************************/ +be_local_closure(Matter_IM_process_read_request, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ @@ -1877,24 +2252,38 @@ be_local_closure(Matter_IM_send_invoke_response, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_InvokeResponse), + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(ReadRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(attributes_requests), + /* K4 */ be_nested_str_weak(_inner_process_read_request), + /* K5 */ be_nested_str_weak(session), + /* K6 */ be_nested_str_weak(send_report_data), }), - be_str_weak(send_invoke_response), + be_str_weak(process_read_request), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 + ( &(const binstruction[20]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 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 + 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 + 0x4C140000, // 0007 LDNIL R5 + 0x20100805, // 0008 NE R4 R4 R5 + 0x78120007, // 0009 JMPF R4 #0012 + 0x8C100104, // 000A GETMET R4 R0 K4 + 0x88180305, // 000B GETMBR R6 R1 K5 + 0x5C1C0600, // 000C MOVE R7 R3 + 0x7C100600, // 000D CALL R4 3 + 0x8C140106, // 000E GETMET R5 R0 K6 + 0x5C1C0200, // 000F MOVE R7 R1 + 0x5C200800, // 0010 MOVE R8 R4 + 0x7C140600, // 0011 CALL R5 3 + 0x50100200, // 0012 LDBOOL R4 1 0 + 0x80040800, // 0013 RET 1 R4 }) ) ); @@ -1902,80 +2291,11 @@ be_local_closure(Matter_IM_send_invoke_response, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: process_invoke_response ********************************************************************/ -be_local_closure(Matter_IM_init, /* name */ +be_local_closure(Matter_IM_process_invoke_response, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(subs), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(IM_Subscription_Shop), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0xB80A0600, // 0004 GETNGBL R2 K3 - 0x8C080504, // 0005 GETMET R2 R2 K4 - 0x5C100000, // 0006 MOVE R4 R0 - 0x7C080400, // 0007 CALL R2 2 - 0x90020402, // 0008 SETMBR R0 K2 R2 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_250ms -********************************************************************/ -be_local_closure(Matter_IM_every_250ms, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(subs), - /* K1 */ be_nested_str_weak(every_250ms), - }), - be_str_weak(every_250ms), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_invoke_request -********************************************************************/ -be_local_closure(Matter_IM_process_invoke_request, /* name */ - be_nested_proto( - 19, /* nstack */ + 9, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1983,304 +2303,36 @@ be_local_closure(Matter_IM_process_invoke_request, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[45]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20IM_X3Ainvoke_request_X20processing_X20start), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(Path), - /* K6 */ be_nested_str_weak(InvokeRequestMessage), - /* K7 */ be_nested_str_weak(from_TLV), - /* K8 */ be_nested_str_weak(invoke_requests), - /* K9 */ be_nested_str_weak(InvokeResponseMessage), - /* K10 */ be_nested_str_weak(suppress_response), - /* K11 */ be_nested_str_weak(invoke_responses), - /* K12 */ be_nested_str_weak(endpoint), - /* K13 */ be_nested_str_weak(command_path), - /* K14 */ be_nested_str_weak(cluster), - /* K15 */ be_nested_str_weak(command), - /* K16 */ be_nested_str_weak(status), - /* K17 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K18 */ be_nested_str_weak(get_command_name), - /* K19 */ be_nested_str_weak(format), - /* K20 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X25s_X20_X25s_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K21 */ be_nested_str_weak(), - /* K22 */ be_nested_str_weak(remote_ip), - /* K23 */ be_nested_str_weak(remote_port), - /* K24 */ be_const_int(2), - /* K25 */ be_nested_str_weak(device), - /* K26 */ be_nested_str_weak(invoke_request), - /* K27 */ be_nested_str_weak(session), - /* K28 */ be_nested_str_weak(command_fields), - /* K29 */ be_nested_str_weak(InvokeResponseIB), - /* K30 */ be_nested_str_weak(CommandStatusIB), - /* K31 */ be_nested_str_weak(CommandPathIB), - /* K32 */ be_nested_str_weak(StatusIB), - /* K33 */ be_nested_str_weak(SUCCESS), - /* K34 */ be_nested_str_weak(push), - /* K35 */ be_nested_str_weak(CommandDataIB), - /* K36 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X25s_X20_X25s), - /* K37 */ be_nested_str_weak(stop_iteration), - /* K38 */ be_nested_str_weak(MTR_X3A_X20invoke_responses_X3D), - /* K39 */ be_const_int(0), - /* K40 */ be_nested_str_weak(MTR_X3A_X20InvokeResponse_X3D), - /* K41 */ be_nested_str_weak(MTR_X3A_X20InvokeResponseTLV_X3D), - /* K42 */ be_nested_str_weak(to_TLV), - /* K43 */ be_const_int(3), - /* K44 */ be_nested_str_weak(send_invoke_response), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(InvokeResponseMessage), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20InvokeResponseMessage_X3D), + /* K7 */ be_const_int(2), }), - be_str_weak(process_invoke_request), + be_str_weak(process_invoke_response), &be_const_str_solidified, - ( &(const binstruction[248]) { /* code */ + ( &(const binstruction[17]) { /* code */ 0xA40E0000, // 0000 IMPORT R3 K0 0xB8120200, // 0001 GETNGBL R4 K1 0x8C100902, // 0002 GETMET R4 R4 K2 - 0x58180003, // 0003 LDCONST R6 K3 - 0x541E0003, // 0004 LDINT R7 4 - 0x7C100600, // 0005 CALL R4 3 - 0xB8120800, // 0006 GETNGBL R4 K4 - 0x8C100905, // 0007 GETMET R4 R4 K5 - 0x7C100200, // 0008 CALL R4 1 - 0xB8160800, // 0009 GETNGBL R5 K4 - 0x8C140B06, // 000A GETMET R5 R5 K6 - 0x7C140200, // 000B CALL R5 1 - 0x8C140B07, // 000C GETMET R5 R5 K7 - 0x5C1C0400, // 000D MOVE R7 R2 - 0x7C140400, // 000E CALL R5 2 - 0x88180B08, // 000F GETMBR R6 R5 K8 - 0x4C1C0000, // 0010 LDNIL R7 - 0x20180C07, // 0011 NE R6 R6 R7 - 0x781A00E3, // 0012 JMPF R6 #00F7 - 0xB81A0800, // 0013 GETNGBL R6 K4 - 0x8C180D09, // 0014 GETMET R6 R6 K9 - 0x7C180200, // 0015 CALL R6 1 - 0x501C0000, // 0016 LDBOOL R7 0 0 - 0x901A1407, // 0017 SETMBR R6 K10 R7 - 0x601C0012, // 0018 GETGBL R7 G18 - 0x7C1C0000, // 0019 CALL R7 0 - 0x901A1607, // 001A SETMBR R6 K11 R7 - 0x601C0010, // 001B GETGBL R7 G16 - 0x88200B08, // 001C GETMBR R8 R5 K8 - 0x7C1C0200, // 001D CALL R7 1 - 0xA80200AD, // 001E EXBLK 0 #00CD - 0x5C200E00, // 001F MOVE R8 R7 - 0x7C200000, // 0020 CALL R8 0 - 0x8824110D, // 0021 GETMBR R9 R8 K13 - 0x8824130C, // 0022 GETMBR R9 R9 K12 - 0x90121809, // 0023 SETMBR R4 K12 R9 - 0x8824110D, // 0024 GETMBR R9 R8 K13 - 0x8824130E, // 0025 GETMBR R9 R9 K14 - 0x90121C09, // 0026 SETMBR R4 K14 R9 - 0x8824110D, // 0027 GETMBR R9 R8 K13 - 0x8824130F, // 0028 GETMBR R9 R9 K15 - 0x90121E09, // 0029 SETMBR R4 K15 R9 - 0xB8260800, // 002A GETNGBL R9 K4 - 0x88241311, // 002B GETMBR R9 R9 K17 - 0x90122009, // 002C SETMBR R4 K16 R9 - 0xB8260800, // 002D GETNGBL R9 K4 - 0x8C241312, // 002E GETMET R9 R9 K18 - 0x882C090E, // 002F GETMBR R11 R4 K14 - 0x8830090F, // 0030 GETMBR R12 R4 K15 - 0x7C240600, // 0031 CALL R9 3 - 0xB82A0200, // 0032 GETNGBL R10 K1 - 0x8C281502, // 0033 GETMET R10 R10 K2 - 0x8C300713, // 0034 GETMET R12 R3 K19 - 0x58380014, // 0035 LDCONST R14 K20 - 0x603C0008, // 0036 GETGBL R15 G8 - 0x5C400800, // 0037 MOVE R16 R4 - 0x7C3C0200, // 0038 CALL R15 1 - 0x78260001, // 0039 JMPF R9 #003C - 0x5C401200, // 003A MOVE R16 R9 - 0x70020000, // 003B JMP #003D - 0x58400015, // 003C LDCONST R16 K21 - 0x88440316, // 003D GETMBR R17 R1 K22 - 0x88480317, // 003E GETMBR R18 R1 K23 - 0x7C300C00, // 003F CALL R12 6 - 0x58340018, // 0040 LDCONST R13 K24 - 0x7C280600, // 0041 CALL R10 3 - 0x88280119, // 0042 GETMBR R10 R0 K25 - 0x8C28151A, // 0043 GETMET R10 R10 K26 - 0x8830031B, // 0044 GETMBR R12 R1 K27 - 0x8834111C, // 0045 GETMBR R13 R8 K28 - 0x5C380800, // 0046 MOVE R14 R4 - 0x7C280800, // 0047 CALL R10 4 - 0xB82E0800, // 0048 GETNGBL R11 K4 - 0x8C2C171D, // 0049 GETMET R11 R11 K29 - 0x7C2C0200, // 004A CALL R11 1 - 0x50300200, // 004B LDBOOL R12 1 0 - 0x1C30140C, // 004C EQ R12 R10 R12 - 0x78320023, // 004D JMPF R12 #0072 - 0xB8320800, // 004E GETNGBL R12 K4 - 0x8C30191E, // 004F GETMET R12 R12 K30 - 0x7C300200, // 0050 CALL R12 1 - 0x902E200C, // 0051 SETMBR R11 K16 R12 - 0x88301710, // 0052 GETMBR R12 R11 K16 - 0xB8360800, // 0053 GETNGBL R13 K4 - 0x8C341B1F, // 0054 GETMET R13 R13 K31 - 0x7C340200, // 0055 CALL R13 1 - 0x90321A0D, // 0056 SETMBR R12 K13 R13 - 0x88301710, // 0057 GETMBR R12 R11 K16 - 0x8830190D, // 0058 GETMBR R12 R12 K13 - 0x8834090C, // 0059 GETMBR R13 R4 K12 - 0x9032180D, // 005A SETMBR R12 K12 R13 - 0x88301710, // 005B GETMBR R12 R11 K16 - 0x8830190D, // 005C GETMBR R12 R12 K13 - 0x8834090E, // 005D GETMBR R13 R4 K14 - 0x90321C0D, // 005E SETMBR R12 K14 R13 - 0x88301710, // 005F GETMBR R12 R11 K16 - 0x8830190D, // 0060 GETMBR R12 R12 K13 - 0x8834090F, // 0061 GETMBR R13 R4 K15 - 0x90321E0D, // 0062 SETMBR R12 K15 R13 - 0x88301710, // 0063 GETMBR R12 R11 K16 - 0xB8360800, // 0064 GETNGBL R13 K4 - 0x8C341B20, // 0065 GETMET R13 R13 K32 - 0x7C340200, // 0066 CALL R13 1 - 0x9032200D, // 0067 SETMBR R12 K16 R13 - 0x88301710, // 0068 GETMBR R12 R11 K16 - 0x88301910, // 0069 GETMBR R12 R12 K16 - 0xB8360800, // 006A GETNGBL R13 K4 - 0x88341B21, // 006B GETMBR R13 R13 K33 - 0x9032200D, // 006C SETMBR R12 K16 R13 - 0x88300D0B, // 006D GETMBR R12 R6 K11 - 0x8C301922, // 006E GETMET R12 R12 K34 - 0x5C381600, // 006F MOVE R14 R11 - 0x7C300400, // 0070 CALL R12 2 - 0x70020059, // 0071 JMP #00CC - 0x4C300000, // 0072 LDNIL R12 - 0x2030140C, // 0073 NE R12 R10 R12 - 0x7832002F, // 0074 JMPF R12 #00A5 - 0xB8320800, // 0075 GETNGBL R12 K4 - 0x8C301923, // 0076 GETMET R12 R12 K35 - 0x7C300200, // 0077 CALL R12 1 - 0x902E1E0C, // 0078 SETMBR R11 K15 R12 - 0x8830170F, // 0079 GETMBR R12 R11 K15 - 0xB8360800, // 007A GETNGBL R13 K4 - 0x8C341B1F, // 007B GETMET R13 R13 K31 - 0x7C340200, // 007C CALL R13 1 - 0x90321A0D, // 007D SETMBR R12 K13 R13 - 0x8830170F, // 007E GETMBR R12 R11 K15 - 0x8830190D, // 007F GETMBR R12 R12 K13 - 0x8834090C, // 0080 GETMBR R13 R4 K12 - 0x9032180D, // 0081 SETMBR R12 K12 R13 - 0x8830170F, // 0082 GETMBR R12 R11 K15 - 0x8830190D, // 0083 GETMBR R12 R12 K13 - 0x8834090E, // 0084 GETMBR R13 R4 K14 - 0x90321C0D, // 0085 SETMBR R12 K14 R13 - 0x8830170F, // 0086 GETMBR R12 R11 K15 - 0x8830190D, // 0087 GETMBR R12 R12 K13 - 0x8834090F, // 0088 GETMBR R13 R4 K15 - 0x90321E0D, // 0089 SETMBR R12 K15 R13 - 0x8830170F, // 008A GETMBR R12 R11 K15 - 0x9032380A, // 008B SETMBR R12 K28 R10 - 0x88300D0B, // 008C GETMBR R12 R6 K11 - 0x8C301922, // 008D GETMET R12 R12 K34 - 0x5C381600, // 008E MOVE R14 R11 - 0x7C300400, // 008F CALL R12 2 - 0xB8320800, // 0090 GETNGBL R12 K4 - 0x8C301912, // 0091 GETMET R12 R12 K18 - 0x8838090E, // 0092 GETMBR R14 R4 K14 - 0x883C090F, // 0093 GETMBR R15 R4 K15 - 0x7C300600, // 0094 CALL R12 3 - 0x5C241800, // 0095 MOVE R9 R12 - 0xB8320200, // 0096 GETNGBL R12 K1 - 0x8C301902, // 0097 GETMET R12 R12 K2 - 0x8C380713, // 0098 GETMET R14 R3 K19 - 0x58400024, // 0099 LDCONST R16 K36 - 0x60440008, // 009A GETGBL R17 G8 - 0x5C480800, // 009B MOVE R18 R4 - 0x7C440200, // 009C CALL R17 1 - 0x78260001, // 009D JMPF R9 #00A0 - 0x5C481200, // 009E MOVE R18 R9 - 0x70020000, // 009F JMP #00A1 - 0x58480015, // 00A0 LDCONST R18 K21 - 0x7C380800, // 00A1 CALL R14 4 - 0x583C0018, // 00A2 LDCONST R15 K24 - 0x7C300600, // 00A3 CALL R12 3 - 0x70020026, // 00A4 JMP #00CC - 0x88300910, // 00A5 GETMBR R12 R4 K16 - 0x4C340000, // 00A6 LDNIL R13 - 0x2030180D, // 00A7 NE R12 R12 R13 - 0x78320022, // 00A8 JMPF R12 #00CC - 0xB8320800, // 00A9 GETNGBL R12 K4 - 0x8C30191E, // 00AA GETMET R12 R12 K30 - 0x7C300200, // 00AB CALL R12 1 - 0x902E200C, // 00AC SETMBR R11 K16 R12 - 0x88301710, // 00AD GETMBR R12 R11 K16 - 0xB8360800, // 00AE GETNGBL R13 K4 - 0x8C341B1F, // 00AF GETMET R13 R13 K31 - 0x7C340200, // 00B0 CALL R13 1 - 0x90321A0D, // 00B1 SETMBR R12 K13 R13 - 0x88301710, // 00B2 GETMBR R12 R11 K16 - 0x8830190D, // 00B3 GETMBR R12 R12 K13 - 0x8834090C, // 00B4 GETMBR R13 R4 K12 - 0x9032180D, // 00B5 SETMBR R12 K12 R13 - 0x88301710, // 00B6 GETMBR R12 R11 K16 - 0x8830190D, // 00B7 GETMBR R12 R12 K13 - 0x8834090E, // 00B8 GETMBR R13 R4 K14 - 0x90321C0D, // 00B9 SETMBR R12 K14 R13 - 0x88301710, // 00BA GETMBR R12 R11 K16 - 0x8830190D, // 00BB GETMBR R12 R12 K13 - 0x8834090F, // 00BC GETMBR R13 R4 K15 - 0x90321E0D, // 00BD SETMBR R12 K15 R13 - 0x88301710, // 00BE GETMBR R12 R11 K16 - 0xB8360800, // 00BF GETNGBL R13 K4 - 0x8C341B20, // 00C0 GETMET R13 R13 K32 - 0x7C340200, // 00C1 CALL R13 1 - 0x9032200D, // 00C2 SETMBR R12 K16 R13 - 0x88301710, // 00C3 GETMBR R12 R11 K16 - 0x88301910, // 00C4 GETMBR R12 R12 K16 - 0x88340910, // 00C5 GETMBR R13 R4 K16 - 0x9032200D, // 00C6 SETMBR R12 K16 R13 - 0x88300D0B, // 00C7 GETMBR R12 R6 K11 - 0x8C301922, // 00C8 GETMET R12 R12 K34 - 0x5C381600, // 00C9 MOVE R14 R11 - 0x7C300400, // 00CA CALL R12 2 - 0x7001FFFF, // 00CB JMP #00CC - 0x7001FF51, // 00CC JMP #001F - 0x581C0025, // 00CD LDCONST R7 K37 - 0xAC1C0200, // 00CE CATCH R7 1 0 - 0xB0080000, // 00CF RAISE 2 R0 R0 - 0xB81E0200, // 00D0 GETNGBL R7 K1 - 0x8C1C0F02, // 00D1 GETMET R7 R7 K2 - 0x60240008, // 00D2 GETGBL R9 G8 - 0x88280D0B, // 00D3 GETMBR R10 R6 K11 - 0x7C240200, // 00D4 CALL R9 1 - 0x00264C09, // 00D5 ADD R9 K38 R9 - 0x542A0003, // 00D6 LDINT R10 4 - 0x7C1C0600, // 00D7 CALL R7 3 - 0x601C000C, // 00D8 GETGBL R7 G12 - 0x88200D0B, // 00D9 GETMBR R8 R6 K11 - 0x7C1C0200, // 00DA CALL R7 1 - 0x241C0F27, // 00DB GT R7 R7 K39 - 0x781E0015, // 00DC JMPF R7 #00F3 - 0xB81E0200, // 00DD GETNGBL R7 K1 - 0x8C1C0F02, // 00DE GETMET R7 R7 K2 - 0x60240008, // 00DF GETGBL R9 G8 - 0x5C280C00, // 00E0 MOVE R10 R6 - 0x7C240200, // 00E1 CALL R9 1 - 0x00265009, // 00E2 ADD R9 K40 R9 - 0x542A0003, // 00E3 LDINT R10 4 - 0x7C1C0600, // 00E4 CALL R7 3 - 0xB81E0200, // 00E5 GETNGBL R7 K1 - 0x8C1C0F02, // 00E6 GETMET R7 R7 K2 - 0x60240008, // 00E7 GETGBL R9 G8 - 0x8C280D2A, // 00E8 GETMET R10 R6 K42 - 0x7C280200, // 00E9 CALL R10 1 - 0x7C240200, // 00EA CALL R9 1 - 0x00265209, // 00EB ADD R9 K41 R9 - 0x5828002B, // 00EC LDCONST R10 K43 - 0x7C1C0600, // 00ED CALL R7 3 - 0x8C1C012C, // 00EE GETMET R7 R0 K44 - 0x5C240200, // 00EF MOVE R9 R1 - 0x5C280C00, // 00F0 MOVE R10 R6 - 0x7C1C0600, // 00F1 CALL R7 3 - 0x70020001, // 00F2 JMP #00F5 - 0x501C0000, // 00F3 LDBOOL R7 0 0 - 0x80040E00, // 00F4 RET 1 R7 - 0x501C0200, // 00F5 LDBOOL R7 1 0 - 0x80040E00, // 00F6 RET 1 R7 - 0x80000000, // 00F7 RET 0 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100903, // 0004 GETMET R4 R4 K3 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x601C0008, // 0009 GETGBL R7 G8 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C1C0200, // 000B CALL R7 1 + 0x001E0C07, // 000C ADD R7 K6 R7 + 0x58200007, // 000D LDCONST R8 K7 + 0x7C140600, // 000E CALL R5 3 + 0x50140000, // 000F LDBOOL R5 0 0 + 0x80040A00, // 0010 RET 1 R5 }) ) ); @@ -2293,35 +2345,36 @@ be_local_closure(Matter_IM_process_invoke_request, /* name */ be_local_class(Matter_IM, 3, NULL, - be_nested_map(27, + be_nested_map(28, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(process_timed_request, 1), be_const_closure(Matter_IM_process_timed_request_closure) }, - { be_const_key_weak(process_invoke_request, 16), be_const_closure(Matter_IM_process_invoke_request_closure) }, - { be_const_key_weak(every_250ms, -1), be_const_closure(Matter_IM_every_250ms_closure) }, - { be_const_key_weak(init, -1), be_const_closure(Matter_IM_init_closure) }, - { be_const_key_weak(send_subscribe_update, -1), be_const_closure(Matter_IM_send_subscribe_update_closure) }, - { be_const_key_weak(subs, 10), be_const_var(1) }, - { be_const_key_weak(report_data, -1), be_const_closure(Matter_IM_report_data_closure) }, - { be_const_key_weak(process_write_response, 19), be_const_closure(Matter_IM_process_write_response_closure) }, - { be_const_key_weak(process_incoming, -1), be_const_closure(Matter_IM_process_incoming_closure) }, - { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_remove_sendqueue_by_exchangeid_closure) }, - { be_const_key_weak(process_invoke_response, 25), be_const_closure(Matter_IM_process_invoke_response_closure) }, - { be_const_key_weak(process_status_response, 2), be_const_closure(Matter_IM_process_status_response_closure) }, - { be_const_key_weak(_inner_process_read_request, -1), be_const_closure(Matter_IM__inner_process_read_request_closure) }, - { be_const_key_weak(subscribe_request, 6), be_const_closure(Matter_IM_subscribe_request_closure) }, - { be_const_key_weak(send_enqueued, -1), be_const_closure(Matter_IM_send_enqueued_closure) }, - { be_const_key_weak(every_second, -1), be_const_closure(Matter_IM_every_second_closure) }, - { be_const_key_weak(process_write_request, -1), be_const_closure(Matter_IM_process_write_request_closure) }, + { be_const_key_weak(process_timed_request, -1), be_const_closure(Matter_IM_process_timed_request_closure) }, + { be_const_key_weak(process_status_response, -1), be_const_closure(Matter_IM_process_status_response_closure) }, + { be_const_key_weak(process_invoke_response, -1), be_const_closure(Matter_IM_process_invoke_response_closure) }, { be_const_key_weak(send_queue, -1), be_const_var(2) }, - { be_const_key_weak(find_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_find_sendqueue_by_exchangeid_closure) }, - { be_const_key_weak(send_status, -1), be_const_closure(Matter_IM_send_status_closure) }, - { be_const_key_weak(send_report_data, -1), be_const_closure(Matter_IM_send_report_data_closure) }, - { be_const_key_weak(process_read_request, 15), be_const_closure(Matter_IM_process_read_request_closure) }, - { be_const_key_weak(subscribe_response, -1), be_const_closure(Matter_IM_subscribe_response_closure) }, - { be_const_key_weak(send_invoke_response, -1), be_const_closure(Matter_IM_send_invoke_response_closure) }, - { be_const_key_weak(device, 3), be_const_var(0) }, - { be_const_key_weak(send_subscribe_response, 26), be_const_closure(Matter_IM_send_subscribe_response_closure) }, + { be_const_key_weak(process_write_response, -1), be_const_closure(Matter_IM_process_write_response_closure) }, + { be_const_key_weak(process_invoke_request, 9), be_const_closure(Matter_IM_process_invoke_request_closure) }, + { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_remove_sendqueue_by_exchangeid_closure) }, { be_const_key_weak(send_write_response, -1), be_const_closure(Matter_IM_send_write_response_closure) }, + { be_const_key_weak(every_250ms, -1), be_const_closure(Matter_IM_every_250ms_closure) }, + { be_const_key_weak(subscribe_request, -1), be_const_closure(Matter_IM_subscribe_request_closure) }, + { be_const_key_weak(init, -1), be_const_closure(Matter_IM_init_closure) }, + { be_const_key_weak(find_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_find_sendqueue_by_exchangeid_closure) }, + { be_const_key_weak(report_data, -1), be_const_closure(Matter_IM_report_data_closure) }, + { be_const_key_weak(send_report_data, 24), be_const_closure(Matter_IM_send_report_data_closure) }, + { be_const_key_weak(send_enqueued, -1), be_const_closure(Matter_IM_send_enqueued_closure) }, + { be_const_key_weak(send_subscribe_response, -1), be_const_closure(Matter_IM_send_subscribe_response_closure) }, + { be_const_key_weak(send_subscribe_update, -1), be_const_closure(Matter_IM_send_subscribe_update_closure) }, + { be_const_key_weak(every_second, 11), be_const_closure(Matter_IM_every_second_closure) }, + { be_const_key_weak(send_status, -1), be_const_closure(Matter_IM_send_status_closure) }, + { be_const_key_weak(process_incoming, 13), be_const_closure(Matter_IM_process_incoming_closure) }, + { be_const_key_weak(process_write_request, -1), be_const_closure(Matter_IM_process_write_request_closure) }, + { be_const_key_weak(process_incoming_ack, -1), be_const_closure(Matter_IM_process_incoming_ack_closure) }, + { be_const_key_weak(send_invoke_response, 15), be_const_closure(Matter_IM_send_invoke_response_closure) }, + { be_const_key_weak(subscribe_response, -1), be_const_closure(Matter_IM_subscribe_response_closure) }, + { be_const_key_weak(_inner_process_read_request, 10), be_const_closure(Matter_IM__inner_process_read_request_closure) }, + { be_const_key_weak(process_read_request, -1), be_const_closure(Matter_IM_process_read_request_closure) }, + { be_const_key_weak(subs, -1), be_const_var(1) }, + { be_const_key_weak(device, 2), be_const_var(0) }, })), 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 c9bd3a8fa..b7b9dedb1 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 @@ -148,9 +148,9 @@ void be_load_Matter_Path_class(bvm *vm) { extern const bclass be_class_Matter_IM_Message; /******************************************************************** -** Solidified function: ack_received +** Solidified function: status_ok_received ********************************************************************/ -be_local_closure(Matter_IM_Message_ack_received, /* name */ +be_local_closure(Matter_IM_Message_status_ok_received, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ @@ -167,7 +167,7 @@ be_local_closure(Matter_IM_Message_ack_received, /* name */ /* K3 */ be_nested_str_weak(x_flag_r), /* K4 */ be_nested_str_weak(ready), }), - be_str_weak(ack_received), + be_str_weak(status_ok_received), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0x78060007, // 0000 JMPF R1 #0009 @@ -189,65 +189,6 @@ be_local_closure(Matter_IM_Message_ack_received, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: ack_error -********************************************************************/ -be_local_closure(Matter_IM_Message_ack_error, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(ack_error), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Matter_IM_Message_init, /* name */ - be_nested_proto( - 8, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(resp), - /* K1 */ be_nested_str_weak(build_response), - /* K2 */ be_nested_str_weak(ready), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x8C100301, // 0000 GETMET R4 R1 K1 - 0x5C180400, // 0001 MOVE R6 R2 - 0x5C1C0600, // 0002 MOVE R7 R3 - 0x7C100600, // 0003 CALL R4 3 - 0x90020004, // 0004 SETMBR R0 K0 R4 - 0x50100200, // 0005 LDBOOL R4 1 0 - 0x90020404, // 0006 SETMBR R0 K2 R4 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: get_exchangeid ********************************************************************/ @@ -329,22 +270,107 @@ be_local_closure(Matter_IM_Message_send, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(Matter_IM_Message_init, /* name */ + be_nested_proto( + 8, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(resp), + /* K1 */ be_nested_str_weak(build_response), + /* K2 */ be_nested_str_weak(ready), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x8C100301, // 0000 GETMET R4 R1 K1 + 0x5C180400, // 0001 MOVE R6 R2 + 0x5C1C0600, // 0002 MOVE R7 R3 + 0x7C100600, // 0003 CALL R4 3 + 0x90020004, // 0004 SETMBR R0 K0 R4 + 0x50100200, // 0005 LDBOOL R4 1 0 + 0x90020404, // 0006 SETMBR R0 K2 R4 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: status_error_received +********************************************************************/ +be_local_closure(Matter_IM_Message_status_error_received, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(status_error_received), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: ack_received +********************************************************************/ +be_local_closure(Matter_IM_Message_ack_received, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(ack_received), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x50080000, // 0000 LDBOOL R2 0 0 + 0x80040400, // 0001 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_IM_Message ********************************************************************/ be_local_class(Matter_IM_Message, 3, NULL, - be_nested_map(8, + be_nested_map(9, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(ack_received, 2), be_const_closure(Matter_IM_Message_ack_received_closure) }, - { be_const_key_weak(send, -1), be_const_closure(Matter_IM_Message_send_closure) }, - { be_const_key_weak(get_exchangeid, -1), be_const_closure(Matter_IM_Message_get_exchangeid_closure) }, - { be_const_key_weak(resp, 6), be_const_var(0) }, - { be_const_key_weak(ready, -1), be_const_var(1) }, { be_const_key_weak(data, -1), be_const_var(2) }, + { be_const_key_weak(get_exchangeid, -1), be_const_closure(Matter_IM_Message_get_exchangeid_closure) }, { be_const_key_weak(init, -1), be_const_closure(Matter_IM_Message_init_closure) }, - { be_const_key_weak(ack_error, 1), be_const_closure(Matter_IM_Message_ack_error_closure) }, + { be_const_key_weak(resp, -1), be_const_var(0) }, + { be_const_key_weak(send, 0), be_const_closure(Matter_IM_Message_send_closure) }, + { be_const_key_weak(ready, 2), be_const_var(1) }, + { be_const_key_weak(status_ok_received, 5), be_const_closure(Matter_IM_Message_status_ok_received_closure) }, + { be_const_key_weak(status_error_received, -1), be_const_closure(Matter_IM_Message_status_error_received_closure) }, + { be_const_key_weak(ack_received, -1), be_const_closure(Matter_IM_Message_ack_received_closure) }, })), be_str_weak(Matter_IM_Message) ); @@ -580,10 +606,10 @@ be_local_closure(Matter_IM_ReportData_send, /* name */ /* K11 */ be_nested_str_weak(log), /* K12 */ be_nested_str_weak(format), /* K13 */ be_nested_str_weak(MTR_X3A_X20elements_X3D_X25i_X20msg_sz_X3D_X25i_X20total_X3D_X25i), - /* K14 */ be_const_int(3), - /* K15 */ be_const_int(2147483647), - /* K16 */ be_nested_str_weak(MTR_X3A_X20Read_Attr_X20_X20next_chunk_X20exch_X3D_X25i), - /* K17 */ be_nested_str_weak(get_exchangeid), + /* K14 */ be_const_int(2147483647), + /* K15 */ be_nested_str_weak(MTR_X3A_X20Read_Attr_X20_X20next_chunk_X20exch_X3D_X25i), + /* K16 */ be_nested_str_weak(get_exchangeid), + /* K17 */ be_const_int(3), /* K18 */ be_nested_str_weak(MTR_X3A_X20Read_Attr_X20_X20first_chunk_X20exch_X3D_X25i), /* K19 */ be_nested_str_weak(MTR_X3A_X20sending_X20TLV), /* K20 */ be_nested_str_weak(encode), @@ -653,9 +679,9 @@ be_local_closure(Matter_IM_ReportData_send, /* name */ 0x88400905, // 0031 GETMBR R16 R4 K5 0x7C3C0200, // 0032 CALL R15 1 0x7C280A00, // 0033 CALL R10 5 - 0x582C000E, // 0034 LDCONST R11 K14 + 0x542E0003, // 0034 LDINT R11 4 0x7C200600, // 0035 CALL R8 3 - 0x40200F0F, // 0036 CONNECT R8 R7 K15 + 0x40200F0E, // 0036 CONNECT R8 R7 K14 0x88240905, // 0037 GETMBR R9 R4 K5 0x94201208, // 0038 GETIDX R8 R9 R8 0x04280F08, // 0039 SUB R10 R7 K8 @@ -672,11 +698,11 @@ be_local_closure(Matter_IM_ReportData_send, /* name */ 0xB82A1400, // 0044 GETNGBL R10 K10 0x8C28150B, // 0045 GETMET R10 R10 K11 0x8C30050C, // 0046 GETMET R12 R2 K12 - 0x58380010, // 0047 LDCONST R14 K16 - 0x8C3C0111, // 0048 GETMET R15 R0 K17 + 0x5838000F, // 0047 LDCONST R14 K15 + 0x8C3C0110, // 0048 GETMET R15 R0 K16 0x7C3C0200, // 0049 CALL R15 1 0x7C300600, // 004A CALL R12 3 - 0x5834000E, // 004B LDCONST R13 K14 + 0x58340011, // 004B LDCONST R13 K17 0x7C280600, // 004C CALL R10 3 0x88240903, // 004D GETMBR R9 R4 K3 0x78260012, // 004E JMPF R9 #0062 @@ -686,10 +712,10 @@ be_local_closure(Matter_IM_ReportData_send, /* name */ 0x8C24130B, // 0052 GETMET R9 R9 K11 0x8C2C050C, // 0053 GETMET R11 R2 K12 0x58340012, // 0054 LDCONST R13 K18 - 0x8C380111, // 0055 GETMET R14 R0 K17 + 0x8C380110, // 0055 GETMET R14 R0 K16 0x7C380200, // 0056 CALL R14 1 0x7C2C0600, // 0057 CALL R11 3 - 0x5830000E, // 0058 LDCONST R12 K14 + 0x58300011, // 0058 LDCONST R12 K17 0x7C240600, // 0059 CALL R9 3 0xB8261400, // 005A GETNGBL R9 K10 0x8C24130B, // 005B GETMET R9 R9 K11 @@ -697,7 +723,7 @@ be_local_closure(Matter_IM_ReportData_send, /* name */ 0x5C300800, // 005D MOVE R12 R4 0x7C2C0200, // 005E CALL R11 1 0x002E260B, // 005F ADD R11 K19 R11 - 0x5830000E, // 0060 LDCONST R12 K14 + 0x58300011, // 0060 LDCONST R12 K17 0x7C240600, // 0061 CALL R9 3 0x8C240714, // 0062 GETMET R9 R3 K20 0x882C0102, // 0063 GETMBR R11 R0 K2 @@ -726,7 +752,7 @@ be_local_closure(Matter_IM_ReportData_send, /* name */ 0x5C300800, // 007A MOVE R12 R4 0x7C2C0200, // 007B CALL R11 1 0x002E360B, // 007C ADD R11 K27 R11 - 0x5830000E, // 007D LDCONST R12 K14 + 0x58300011, // 007D LDCONST R12 K17 0x7C240600, // 007E CALL R9 3 0xB8261400, // 007F GETNGBL R9 K10 0x8C24131D, // 0080 GETMET R9 R9 K29 @@ -822,36 +848,6 @@ void be_load_Matter_IM_ReportData_class(bvm *vm) { extern const bclass be_class_Matter_IM_ReportDataSubscribed; -/******************************************************************** -** Solidified function: ack_error -********************************************************************/ -be_local_closure(Matter_IM_ReportDataSubscribed_ack_error, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(sub), - /* K1 */ be_nested_str_weak(remove_self), - }), - be_str_weak(ack_error), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: send ********************************************************************/ @@ -883,7 +879,7 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send, /* name */ }), be_str_weak(send), &be_const_str_solidified, - ( &(const binstruction[48]) { /* code */ + ( &(const binstruction[55]) { /* code */ 0x6008000C, // 0000 GETGBL R2 G12 0x880C0100, // 0001 GETMBR R3 R0 K0 0x880C0701, // 0002 GETMBR R3 R3 K1 @@ -922,16 +918,53 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send, /* name */ 0x7C0C0A00, // 0023 CALL R3 5 0x500C0200, // 0024 LDBOOL R3 1 0 0x80040600, // 0025 RET 1 R3 - 0x70020007, // 0026 JMP #002F - 0x60080003, // 0027 GETGBL R2 G3 - 0x5C0C0000, // 0028 MOVE R3 R0 - 0x7C080200, // 0029 CALL R2 1 - 0x8C080504, // 002A GETMET R2 R2 K4 - 0x5C100200, // 002B MOVE R4 R1 - 0x7C080400, // 002C CALL R2 2 - 0x50080200, // 002D LDBOOL R2 1 0 - 0x80040400, // 002E RET 1 R2 - 0x80000000, // 002F RET 0 + 0x7002000E, // 0026 JMP #0036 + 0x88080103, // 0027 GETMBR R2 R0 K3 + 0x780A000A, // 0028 JMPF R2 #0034 + 0x60080003, // 0029 GETGBL R2 G3 + 0x5C0C0000, // 002A MOVE R3 R0 + 0x7C080200, // 002B CALL R2 1 + 0x8C080504, // 002C GETMET R2 R2 K4 + 0x5C100200, // 002D MOVE R4 R1 + 0x7C080400, // 002E CALL R2 2 + 0x50080000, // 002F LDBOOL R2 0 0 + 0x90020602, // 0030 SETMBR R0 K3 R2 + 0x50080000, // 0031 LDBOOL R2 0 0 + 0x80040400, // 0032 RET 1 R2 + 0x70020001, // 0033 JMP #0036 + 0x50080200, // 0034 LDBOOL R2 1 0 + 0x80040400, // 0035 RET 1 R2 + 0x80000000, // 0036 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: status_error_received +********************************************************************/ +be_local_closure(Matter_IM_ReportDataSubscribed_status_error_received, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(sub), + /* K1 */ be_nested_str_weak(remove_self), + }), + be_str_weak(status_error_received), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x80000000, // 0003 RET 0 }) ) ); @@ -942,6 +975,39 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send, /* name */ ** Solidified function: ack_received ********************************************************************/ be_local_closure(Matter_IM_ReportDataSubscribed_ack_received, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(report_data_phase), + }), + be_str_weak(ack_received), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x740A0002, // 0001 JMPT R2 #0005 + 0x50080200, // 0002 LDBOOL R2 1 0 + 0x80040400, // 0003 RET 1 R2 + 0x70020001, // 0004 JMP #0007 + 0x50080000, // 0005 LDBOOL R2 0 0 + 0x80040400, // 0006 RET 1 R2 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: status_ok_received +********************************************************************/ +be_local_closure(Matter_IM_ReportDataSubscribed_status_ok_received, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -953,9 +1019,9 @@ be_local_closure(Matter_IM_ReportDataSubscribed_ack_received, /* name */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(report_data_phase), - /* K1 */ be_nested_str_weak(ack_received), + /* K1 */ be_nested_str_weak(status_ok_received), }), - be_str_weak(ack_received), + be_str_weak(status_ok_received), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 @@ -1048,14 +1114,15 @@ extern const bclass be_class_Matter_IM_ReportData; be_local_class(Matter_IM_ReportDataSubscribed, 2, &be_class_Matter_IM_ReportData, - be_nested_map(6, + be_nested_map(7, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(sub, 5), be_const_var(0) }, - { be_const_key_weak(ack_error, 0), be_const_closure(Matter_IM_ReportDataSubscribed_ack_error_closure) }, + { be_const_key_weak(init, 1), be_const_closure(Matter_IM_ReportDataSubscribed_init_closure) }, + { be_const_key_weak(status_ok_received, -1), be_const_closure(Matter_IM_ReportDataSubscribed_status_ok_received_closure) }, + { be_const_key_weak(send, 4), be_const_closure(Matter_IM_ReportDataSubscribed_send_closure) }, { be_const_key_weak(ack_received, -1), be_const_closure(Matter_IM_ReportDataSubscribed_ack_received_closure) }, - { be_const_key_weak(init, -1), be_const_closure(Matter_IM_ReportDataSubscribed_init_closure) }, + { be_const_key_weak(sub, 6), be_const_var(0) }, + { be_const_key_weak(status_error_received, 0), be_const_closure(Matter_IM_ReportDataSubscribed_status_error_received_closure) }, { be_const_key_weak(report_data_phase, -1), be_const_var(1) }, - { be_const_key_weak(send, -1), be_const_closure(Matter_IM_ReportDataSubscribed_send_closure) }, })), be_str_weak(Matter_IM_ReportDataSubscribed) ); 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 e5ef2a06b..2acbdcf9d 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 @@ -11,7 +11,7 @@ extern const bclass be_class_Matter_IM_Subscription; ********************************************************************/ be_local_closure(Matter_IM_Subscription_remove_self, /* name */ be_nested_proto( - 4, /* nstack */ + 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -19,18 +19,29 @@ be_local_closure(Matter_IM_Subscription_remove_self, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(subs), - /* K1 */ be_nested_str_weak(remove_sub), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20Remove_Sub_X20sub_id_X3D), + /* K3 */ be_nested_str_weak(subscription_id), + /* K4 */ be_nested_str_weak(subs), + /* K5 */ be_nested_str_weak(remove_sub), }), be_str_weak(remove_self), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + ( &(const binstruction[12]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x80000000, // 0004 RET 0 + 0x600C0008, // 0002 GETGBL R3 G8 + 0x88100103, // 0003 GETMBR R4 R0 K3 + 0x7C0C0200, // 0004 CALL R3 1 + 0x000E0403, // 0005 ADD R3 K2 R3 + 0x7C040400, // 0006 CALL R1 2 + 0x88040104, // 0007 GETMBR R1 R0 K4 + 0x8C040305, // 0008 GETMET R1 R1 K5 + 0x5C0C0000, // 0009 MOVE R3 R0 + 0x7C040400, // 000A CALL R1 2 + 0x80000000, // 000B RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h index 4b30a10ae..7fe36ec26 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h @@ -227,7 +227,7 @@ be_local_closure(Matter_Frame_debug, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ + ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(Frame), /* K2 */ be_nested_str_weak(message_handler), @@ -237,6 +237,7 @@ be_local_closure(Matter_Frame_debug, /* name */ /* K6 */ be_nested_str_weak(log), /* K7 */ be_nested_str_weak(MTR_X3A_X20sending_X20decode_X3A_X20), /* K8 */ be_nested_str_weak(inspect), + /* K9 */ be_const_int(3), }), be_str_weak(debug), &be_const_str_solidified, @@ -257,7 +258,7 @@ be_local_closure(Matter_Frame_debug, /* name */ 0x5C1C0400, // 000D MOVE R7 R2 0x7C140400, // 000E CALL R5 2 0x00160E05, // 000F ADD R5 K7 R5 - 0x541A0003, // 0010 LDINT R6 4 + 0x58180009, // 0010 LDCONST R6 K9 0x7C0C0600, // 0011 CALL R3 3 0x80000000, // 0012 RET 0 }) 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 7b85f72b6..ce740e9b9 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h @@ -192,7 +192,7 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[70]) { /* constants */ + ( &(const bvalue[71]) { /* constants */ /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(tasmota), /* K2 */ be_nested_str_weak(log), @@ -250,26 +250,27 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */ /* K54 */ be_nested_str_weak(exchange_id), /* K55 */ be_nested_str_weak(MTR_X3A_X20PROTOCOL_ID_SECURE_CHANNEL_X20), /* K56 */ be_nested_str_weak(im), - /* K57 */ be_nested_str_weak(send_enqueued), - /* K58 */ be_nested_str_weak(x_flag_r), - /* K59 */ be_nested_str_weak(build_standalone_ack), - /* K60 */ be_nested_str_weak(encode), - /* K61 */ be_nested_str_weak(encrypt), - /* K62 */ be_nested_str_weak(send_response), - /* K63 */ be_nested_str_weak(remote_ip), - /* K64 */ be_nested_str_weak(remote_port), - /* K65 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A), - /* K66 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20), - /* K67 */ be_nested_str_weak(_X3B), - /* K68 */ be_nested_str_weak(debug), - /* K69 */ be_nested_str_weak(traceback), + /* K57 */ be_nested_str_weak(process_incoming_ack), + /* K58 */ be_nested_str_weak(send_enqueued), + /* K59 */ be_nested_str_weak(x_flag_r), + /* K60 */ be_nested_str_weak(build_standalone_ack), + /* K61 */ be_nested_str_weak(encode), + /* K62 */ be_nested_str_weak(encrypt), + /* K63 */ be_nested_str_weak(send_response), + /* K64 */ be_nested_str_weak(remote_ip), + /* K65 */ be_nested_str_weak(remote_port), + /* K66 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A), + /* K67 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20), + /* K68 */ be_nested_str_weak(_X3B), + /* K69 */ be_nested_str_weak(debug), + /* K70 */ be_nested_str_weak(traceback), }), be_str_weak(msg_received), &be_const_str_solidified, - ( &(const binstruction[317]) { /* code */ + ( &(const binstruction[328]) { /* code */ 0xA4120000, // 0000 IMPORT R4 K0 0x50140000, // 0001 LDBOOL R5 0 0 - 0xA8020123, // 0002 EXBLK 0 #0127 + 0xA802012E, // 0002 EXBLK 0 #0132 0xB81A0200, // 0003 GETNGBL R6 K1 0x8C180D02, // 0004 GETMET R6 R6 K2 0x8C200304, // 0005 GETMET R8 R1 K4 @@ -293,10 +294,10 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */ 0x80041000, // 0017 RET 1 R8 0x88200D08, // 0018 GETMBR R8 R6 K8 0x1C201109, // 0019 EQ R8 R8 K9 - 0x7822005C, // 001A JMPF R8 #0078 + 0x7822005A, // 001A JMPF R8 #0076 0x88200D0A, // 001B GETMBR R8 R6 K10 0x1C201109, // 001C EQ R8 R8 K9 - 0x78220059, // 001D JMPF R8 #0078 + 0x78220057, // 001D JMPF R8 #0076 0x8820010B, // 001E GETMBR R8 R0 K11 0x8820110C, // 001F GETMBR R8 R8 K12 0x8C20110D, // 0020 GETMET R8 R8 K13 @@ -380,210 +381,221 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */ 0x88240124, // 006E GETMBR R9 R0 K36 0x8C241325, // 006F GETMET R9 R9 K37 0x5C2C0C00, // 0070 MOVE R11 R6 - 0x5C300400, // 0071 MOVE R12 R2 - 0x5C340600, // 0072 MOVE R13 R3 - 0x7C240800, // 0073 CALL R9 4 - 0x50240200, // 0074 LDBOOL R9 1 0 - 0xA8040001, // 0075 EXBLK 1 1 - 0x80041200, // 0076 RET 1 R9 - 0x700200AA, // 0077 JMP #0123 - 0xB8220200, // 0078 GETNGBL R8 K1 - 0x8C201102, // 0079 GETMET R8 R8 K2 - 0x8C280919, // 007A GETMET R10 R4 K25 - 0x58300026, // 007B LDCONST R12 K38 - 0x88340D08, // 007C GETMBR R13 R6 K8 - 0x88380D18, // 007D GETMBR R14 R6 K24 - 0x7C280800, // 007E CALL R10 4 - 0x582C0011, // 007F LDCONST R11 K17 - 0x7C200600, // 0080 CALL R8 3 - 0x8820010B, // 0081 GETMBR R8 R0 K11 - 0x8820110C, // 0082 GETMBR R8 R8 K12 - 0x8C201127, // 0083 GETMET R8 R8 K39 - 0x88280D08, // 0084 GETMBR R10 R6 K8 - 0x7C200400, // 0085 CALL R8 2 - 0x4C240000, // 0086 LDNIL R9 - 0x1C241009, // 0087 EQ R9 R8 R9 - 0x78260013, // 0088 JMPF R9 #009D - 0xB8260200, // 0089 GETNGBL R9 K1 - 0x8C241302, // 008A GETMET R9 R9 K2 - 0x602C0008, // 008B GETGBL R11 G8 - 0x88300D08, // 008C GETMBR R12 R6 K8 - 0x7C2C0200, // 008D CALL R11 1 - 0x002E500B, // 008E ADD R11 K40 R11 - 0x58300011, // 008F LDCONST R12 K17 - 0x7C240600, // 0090 CALL R9 3 - 0xB8260200, // 0091 GETNGBL R9 K1 - 0x8C241302, // 0092 GETMET R9 R9 K2 - 0xB82E0A00, // 0093 GETNGBL R11 K5 - 0x8C2C172A, // 0094 GETMET R11 R11 K42 - 0x5C340C00, // 0095 MOVE R13 R6 - 0x7C2C0400, // 0096 CALL R11 2 - 0x002E520B, // 0097 ADD R11 K41 R11 - 0x58300011, // 0098 LDCONST R12 K17 - 0x7C240600, // 0099 CALL R9 3 - 0x50240000, // 009A LDBOOL R9 0 0 - 0xA8040001, // 009B EXBLK 1 1 - 0x80041200, // 009C RET 1 R9 - 0x780A0000, // 009D JMPF R2 #009F - 0x90222402, // 009E SETMBR R8 K18 R2 - 0x780E0000, // 009F JMPF R3 #00A1 - 0x90222603, // 00A0 SETMBR R8 K19 R3 - 0x90222800, // 00A1 SETMBR R8 K20 R0 - 0x901A2A08, // 00A2 SETMBR R6 K21 R8 - 0x88241116, // 00A3 GETMBR R9 R8 K22 - 0x8C241317, // 00A4 GETMET R9 R9 K23 - 0x882C0D18, // 00A5 GETMBR R11 R6 K24 - 0x50300200, // 00A6 LDBOOL R12 1 0 - 0x7C240600, // 00A7 CALL R9 3 - 0x74260011, // 00A8 JMPT R9 #00BB - 0xB8260200, // 00A9 GETNGBL R9 K1 - 0x8C241302, // 00AA GETMET R9 R9 K2 - 0x602C0008, // 00AB GETGBL R11 G8 - 0x88300D18, // 00AC GETMBR R12 R6 K24 - 0x7C2C0200, // 00AD CALL R11 1 - 0x002E560B, // 00AE ADD R11 K43 R11 - 0x002C172C, // 00AF ADD R11 R11 K44 - 0x60300008, // 00B0 GETGBL R12 G8 - 0x88341116, // 00B1 GETMBR R13 R8 K22 - 0x8C341B1B, // 00B2 GETMET R13 R13 K27 - 0x7C340200, // 00B3 CALL R13 1 - 0x7C300200, // 00B4 CALL R12 1 - 0x002C160C, // 00B5 ADD R11 R11 R12 - 0x58300011, // 00B6 LDCONST R12 K17 - 0x7C240600, // 00B7 CALL R9 3 - 0x50240000, // 00B8 LDBOOL R9 0 0 - 0xA8040001, // 00B9 EXBLK 1 1 - 0x80041200, // 00BA RET 1 R9 - 0x8C240D2D, // 00BB GETMET R9 R6 K45 - 0x7C240200, // 00BC CALL R9 1 - 0x5C281200, // 00BD MOVE R10 R9 - 0x742A0002, // 00BE JMPT R10 #00C2 - 0x50280000, // 00BF LDBOOL R10 0 0 - 0xA8040001, // 00C0 EXBLK 1 1 - 0x80041400, // 00C1 RET 1 R10 - 0x88280D2F, // 00C2 GETMBR R10 R6 K47 - 0x04281530, // 00C3 SUB R10 R10 K48 - 0x402A120A, // 00C4 CONNECT R10 K9 R10 - 0x882C0D2E, // 00C5 GETMBR R11 R6 K46 - 0x9428160A, // 00C6 GETIDX R10 R11 R10 - 0x901A5C0A, // 00C7 SETMBR R6 K46 R10 - 0x88280D2E, // 00C8 GETMBR R10 R6 K46 - 0x40281409, // 00C9 CONNECT R10 R10 R9 - 0xB82A0200, // 00CA GETNGBL R10 K1 - 0x8C281502, // 00CB GETMET R10 R10 K2 - 0x8C300919, // 00CC GETMET R12 R4 K25 - 0x58380031, // 00CD LDCONST R14 K49 - 0x883C0D2F, // 00CE GETMBR R15 R6 K47 - 0x88400D2E, // 00CF GETMBR R16 R6 K46 - 0x8C402104, // 00D0 GETMET R16 R16 K4 - 0x7C400200, // 00D1 CALL R16 1 - 0x7C300800, // 00D2 CALL R12 4 - 0x58340011, // 00D3 LDCONST R13 K17 - 0x7C280600, // 00D4 CALL R10 3 - 0x8C280D1C, // 00D5 GETMET R10 R6 K28 - 0x7C280200, // 00D6 CALL R10 1 - 0xB82A0200, // 00D7 GETNGBL R10 K1 - 0x8C281502, // 00D8 GETMET R10 R10 K2 - 0x60300008, // 00D9 GETGBL R12 G8 - 0x88340D33, // 00DA GETMBR R13 R6 K51 - 0x7C300200, // 00DB CALL R12 1 - 0x0032640C, // 00DC ADD R12 K50 R12 - 0x00301934, // 00DD ADD R12 R12 K52 - 0x60340008, // 00DE GETGBL R13 G8 - 0x88380D1F, // 00DF GETMBR R14 R6 K31 - 0x7C340200, // 00E0 CALL R13 1 - 0x0030180D, // 00E1 ADD R12 R12 R13 - 0x00301935, // 00E2 ADD R12 R12 K53 - 0x60340008, // 00E3 GETGBL R13 G8 - 0x88380D36, // 00E4 GETMBR R14 R6 K54 - 0x543EFFFE, // 00E5 LDINT R15 65535 - 0x2C381C0F, // 00E6 AND R14 R14 R15 - 0x7C340200, // 00E7 CALL R13 1 - 0x0030180D, // 00E8 ADD R12 R12 R13 - 0x58340011, // 00E9 LDCONST R13 K17 - 0x7C280600, // 00EA CALL R10 3 - 0x8828010B, // 00EB GETMBR R10 R0 K11 - 0x8C28151D, // 00EC GETMET R10 R10 K29 - 0x88300D1E, // 00ED GETMBR R12 R6 K30 - 0x7C280400, // 00EE CALL R10 2 - 0x88280D33, // 00EF GETMBR R10 R6 K51 - 0x1C2C1509, // 00F0 EQ R11 R10 K9 - 0x782E000A, // 00F1 JMPF R11 #00FD - 0xB82E0200, // 00F2 GETNGBL R11 K1 - 0x8C2C1702, // 00F3 GETMET R11 R11 K2 - 0xB8360A00, // 00F4 GETNGBL R13 K5 - 0x8C341B2A, // 00F5 GETMET R13 R13 K42 - 0x5C3C0C00, // 00F6 MOVE R15 R6 - 0x7C340400, // 00F7 CALL R13 2 - 0x00366E0D, // 00F8 ADD R13 K55 R13 - 0x58380011, // 00F9 LDCONST R14 K17 - 0x7C2C0600, // 00FA CALL R11 3 - 0x50140200, // 00FB LDBOOL R5 1 0 - 0x70020025, // 00FC JMP #0123 - 0x1C2C1530, // 00FD EQ R11 R10 K48 - 0x782E001B, // 00FE JMPF R11 #011B - 0x882C0138, // 00FF GETMBR R11 R0 K56 - 0x8C2C1725, // 0100 GETMET R11 R11 K37 - 0x5C340C00, // 0101 MOVE R13 R6 - 0x5C380400, // 0102 MOVE R14 R2 - 0x5C3C0600, // 0103 MOVE R15 R3 - 0x7C2C0800, // 0104 CALL R11 4 - 0x5C141600, // 0105 MOVE R5 R11 - 0x78160004, // 0106 JMPF R5 #010C - 0x882C0138, // 0107 GETMBR R11 R0 K56 - 0x8C2C1739, // 0108 GETMET R11 R11 K57 - 0x5C340000, // 0109 MOVE R13 R0 - 0x7C2C0400, // 010A CALL R11 2 - 0x7002000D, // 010B JMP #011A - 0x882C0D3A, // 010C GETMBR R11 R6 K58 - 0x782E000B, // 010D JMPF R11 #011A - 0x8C2C0D3B, // 010E GETMET R11 R6 K59 - 0x7C2C0200, // 010F CALL R11 1 - 0x8C30173C, // 0110 GETMET R12 R11 K60 - 0x7C300200, // 0111 CALL R12 1 - 0x8C30173D, // 0112 GETMET R12 R11 K61 - 0x7C300200, // 0113 CALL R12 1 - 0x8C30013E, // 0114 GETMET R12 R0 K62 - 0x8838172E, // 0115 GETMBR R14 R11 K46 - 0x883C173F, // 0116 GETMBR R15 R11 K63 - 0x88401740, // 0117 GETMBR R16 R11 K64 - 0x88441718, // 0118 GETMBR R17 R11 K24 - 0x7C300A00, // 0119 CALL R12 5 - 0x70020007, // 011A JMP #0123 - 0xB82E0200, // 011B GETNGBL R11 K1 - 0x8C2C1702, // 011C GETMET R11 R11 K2 - 0x60340008, // 011D GETGBL R13 G8 - 0x5C381400, // 011E MOVE R14 R10 - 0x7C340200, // 011F CALL R13 1 - 0x0036820D, // 0120 ADD R13 K65 R13 - 0x58380011, // 0121 LDCONST R14 K17 - 0x7C2C0600, // 0122 CALL R11 3 - 0xA8040001, // 0123 EXBLK 1 1 - 0x80040A00, // 0124 RET 1 R5 - 0xA8040001, // 0125 EXBLK 1 1 - 0x70020014, // 0126 JMP #013C - 0xAC180002, // 0127 CATCH R6 0 2 - 0x70020011, // 0128 JMP #013B - 0xB8220200, // 0129 GETNGBL R8 K1 - 0x8C201102, // 012A GETMET R8 R8 K2 - 0x60280008, // 012B GETGBL R10 G8 - 0x5C2C0C00, // 012C MOVE R11 R6 - 0x7C280200, // 012D CALL R10 1 - 0x002A840A, // 012E ADD R10 K66 R10 - 0x00281543, // 012F ADD R10 R10 K67 - 0x602C0008, // 0130 GETGBL R11 G8 - 0x5C300E00, // 0131 MOVE R12 R7 - 0x7C2C0200, // 0132 CALL R11 1 - 0x0028140B, // 0133 ADD R10 R10 R11 - 0x7C200400, // 0134 CALL R8 2 - 0xA4228800, // 0135 IMPORT R8 K68 - 0x8C241145, // 0136 GETMET R9 R8 K69 - 0x7C240200, // 0137 CALL R9 1 - 0x50240000, // 0138 LDBOOL R9 0 0 - 0x80041200, // 0139 RET 1 R9 - 0x70020000, // 013A JMP #013C - 0xB0080000, // 013B RAISE 2 R0 R0 - 0x80000000, // 013C RET 0 + 0x7C240400, // 0071 CALL R9 2 + 0x50240200, // 0072 LDBOOL R9 1 0 + 0xA8040001, // 0073 EXBLK 1 1 + 0x80041200, // 0074 RET 1 R9 + 0x700200B7, // 0075 JMP #012E + 0xB8220200, // 0076 GETNGBL R8 K1 + 0x8C201102, // 0077 GETMET R8 R8 K2 + 0x8C280919, // 0078 GETMET R10 R4 K25 + 0x58300026, // 0079 LDCONST R12 K38 + 0x88340D08, // 007A GETMBR R13 R6 K8 + 0x88380D18, // 007B GETMBR R14 R6 K24 + 0x7C280800, // 007C CALL R10 4 + 0x582C0011, // 007D LDCONST R11 K17 + 0x7C200600, // 007E CALL R8 3 + 0x8820010B, // 007F GETMBR R8 R0 K11 + 0x8820110C, // 0080 GETMBR R8 R8 K12 + 0x8C201127, // 0081 GETMET R8 R8 K39 + 0x88280D08, // 0082 GETMBR R10 R6 K8 + 0x7C200400, // 0083 CALL R8 2 + 0x4C240000, // 0084 LDNIL R9 + 0x1C241009, // 0085 EQ R9 R8 R9 + 0x78260013, // 0086 JMPF R9 #009B + 0xB8260200, // 0087 GETNGBL R9 K1 + 0x8C241302, // 0088 GETMET R9 R9 K2 + 0x602C0008, // 0089 GETGBL R11 G8 + 0x88300D08, // 008A GETMBR R12 R6 K8 + 0x7C2C0200, // 008B CALL R11 1 + 0x002E500B, // 008C ADD R11 K40 R11 + 0x58300011, // 008D LDCONST R12 K17 + 0x7C240600, // 008E CALL R9 3 + 0xB8260200, // 008F GETNGBL R9 K1 + 0x8C241302, // 0090 GETMET R9 R9 K2 + 0xB82E0A00, // 0091 GETNGBL R11 K5 + 0x8C2C172A, // 0092 GETMET R11 R11 K42 + 0x5C340C00, // 0093 MOVE R13 R6 + 0x7C2C0400, // 0094 CALL R11 2 + 0x002E520B, // 0095 ADD R11 K41 R11 + 0x58300011, // 0096 LDCONST R12 K17 + 0x7C240600, // 0097 CALL R9 3 + 0x50240000, // 0098 LDBOOL R9 0 0 + 0xA8040001, // 0099 EXBLK 1 1 + 0x80041200, // 009A RET 1 R9 + 0x780A0000, // 009B JMPF R2 #009D + 0x90222402, // 009C SETMBR R8 K18 R2 + 0x780E0000, // 009D JMPF R3 #009F + 0x90222603, // 009E SETMBR R8 K19 R3 + 0x90222800, // 009F SETMBR R8 K20 R0 + 0x901A2A08, // 00A0 SETMBR R6 K21 R8 + 0x88241116, // 00A1 GETMBR R9 R8 K22 + 0x8C241317, // 00A2 GETMET R9 R9 K23 + 0x882C0D18, // 00A3 GETMBR R11 R6 K24 + 0x50300200, // 00A4 LDBOOL R12 1 0 + 0x7C240600, // 00A5 CALL R9 3 + 0x74260011, // 00A6 JMPT R9 #00B9 + 0xB8260200, // 00A7 GETNGBL R9 K1 + 0x8C241302, // 00A8 GETMET R9 R9 K2 + 0x602C0008, // 00A9 GETGBL R11 G8 + 0x88300D18, // 00AA GETMBR R12 R6 K24 + 0x7C2C0200, // 00AB CALL R11 1 + 0x002E560B, // 00AC ADD R11 K43 R11 + 0x002C172C, // 00AD ADD R11 R11 K44 + 0x60300008, // 00AE GETGBL R12 G8 + 0x88341116, // 00AF GETMBR R13 R8 K22 + 0x8C341B1B, // 00B0 GETMET R13 R13 K27 + 0x7C340200, // 00B1 CALL R13 1 + 0x7C300200, // 00B2 CALL R12 1 + 0x002C160C, // 00B3 ADD R11 R11 R12 + 0x58300011, // 00B4 LDCONST R12 K17 + 0x7C240600, // 00B5 CALL R9 3 + 0x50240000, // 00B6 LDBOOL R9 0 0 + 0xA8040001, // 00B7 EXBLK 1 1 + 0x80041200, // 00B8 RET 1 R9 + 0x8C240D2D, // 00B9 GETMET R9 R6 K45 + 0x7C240200, // 00BA CALL R9 1 + 0x5C281200, // 00BB MOVE R10 R9 + 0x742A0002, // 00BC JMPT R10 #00C0 + 0x50280000, // 00BD LDBOOL R10 0 0 + 0xA8040001, // 00BE EXBLK 1 1 + 0x80041400, // 00BF RET 1 R10 + 0x88280D2F, // 00C0 GETMBR R10 R6 K47 + 0x04281530, // 00C1 SUB R10 R10 K48 + 0x402A120A, // 00C2 CONNECT R10 K9 R10 + 0x882C0D2E, // 00C3 GETMBR R11 R6 K46 + 0x9428160A, // 00C4 GETIDX R10 R11 R10 + 0x901A5C0A, // 00C5 SETMBR R6 K46 R10 + 0x88280D2E, // 00C6 GETMBR R10 R6 K46 + 0x40281409, // 00C7 CONNECT R10 R10 R9 + 0xB82A0200, // 00C8 GETNGBL R10 K1 + 0x8C281502, // 00C9 GETMET R10 R10 K2 + 0x8C300919, // 00CA GETMET R12 R4 K25 + 0x58380031, // 00CB LDCONST R14 K49 + 0x883C0D2F, // 00CC GETMBR R15 R6 K47 + 0x88400D2E, // 00CD GETMBR R16 R6 K46 + 0x8C402104, // 00CE GETMET R16 R16 K4 + 0x7C400200, // 00CF CALL R16 1 + 0x7C300800, // 00D0 CALL R12 4 + 0x54360003, // 00D1 LDINT R13 4 + 0x7C280600, // 00D2 CALL R10 3 + 0x8C280D1C, // 00D3 GETMET R10 R6 K28 + 0x7C280200, // 00D4 CALL R10 1 + 0xB82A0200, // 00D5 GETNGBL R10 K1 + 0x8C281502, // 00D6 GETMET R10 R10 K2 + 0x60300008, // 00D7 GETGBL R12 G8 + 0x88340D33, // 00D8 GETMBR R13 R6 K51 + 0x7C300200, // 00D9 CALL R12 1 + 0x0032640C, // 00DA ADD R12 K50 R12 + 0x00301934, // 00DB ADD R12 R12 K52 + 0x60340008, // 00DC GETGBL R13 G8 + 0x88380D1F, // 00DD GETMBR R14 R6 K31 + 0x7C340200, // 00DE CALL R13 1 + 0x0030180D, // 00DF ADD R12 R12 R13 + 0x00301935, // 00E0 ADD R12 R12 K53 + 0x60340008, // 00E1 GETGBL R13 G8 + 0x88380D36, // 00E2 GETMBR R14 R6 K54 + 0x543EFFFE, // 00E3 LDINT R15 65535 + 0x2C381C0F, // 00E4 AND R14 R14 R15 + 0x7C340200, // 00E5 CALL R13 1 + 0x0030180D, // 00E6 ADD R12 R12 R13 + 0x58340011, // 00E7 LDCONST R13 K17 + 0x7C280600, // 00E8 CALL R10 3 + 0x8828010B, // 00E9 GETMBR R10 R0 K11 + 0x8C28151D, // 00EA GETMET R10 R10 K29 + 0x88300D1E, // 00EB GETMBR R12 R6 K30 + 0x7C280400, // 00EC CALL R10 2 + 0x88280D33, // 00ED GETMBR R10 R6 K51 + 0x1C2C1509, // 00EE EQ R11 R10 K9 + 0x782E0018, // 00EF JMPF R11 #0109 + 0xB82E0200, // 00F0 GETNGBL R11 K1 + 0x8C2C1702, // 00F1 GETMET R11 R11 K2 + 0xB8360A00, // 00F2 GETNGBL R13 K5 + 0x8C341B2A, // 00F3 GETMET R13 R13 K42 + 0x5C3C0C00, // 00F4 MOVE R15 R6 + 0x7C340400, // 00F5 CALL R13 2 + 0x00366E0D, // 00F6 ADD R13 K55 R13 + 0x58380011, // 00F7 LDCONST R14 K17 + 0x7C2C0600, // 00F8 CALL R11 3 + 0x882C0D1F, // 00F9 GETMBR R11 R6 K31 + 0x5432000F, // 00FA LDINT R12 16 + 0x1C2C160C, // 00FB EQ R11 R11 R12 + 0x782E0009, // 00FC JMPF R11 #0107 + 0x882C0138, // 00FD GETMBR R11 R0 K56 + 0x8C2C1739, // 00FE GETMET R11 R11 K57 + 0x5C340C00, // 00FF MOVE R13 R6 + 0x7C2C0400, // 0100 CALL R11 2 + 0x5C141600, // 0101 MOVE R5 R11 + 0x78160003, // 0102 JMPF R5 #0107 + 0x882C0138, // 0103 GETMBR R11 R0 K56 + 0x8C2C173A, // 0104 GETMET R11 R11 K58 + 0x5C340000, // 0105 MOVE R13 R0 + 0x7C2C0400, // 0106 CALL R11 2 + 0x50140200, // 0107 LDBOOL R5 1 0 + 0x70020024, // 0108 JMP #012E + 0x1C2C1530, // 0109 EQ R11 R10 K48 + 0x782E001A, // 010A JMPF R11 #0126 + 0x882C0138, // 010B GETMBR R11 R0 K56 + 0x8C2C1725, // 010C GETMET R11 R11 K37 + 0x5C340C00, // 010D MOVE R13 R6 + 0x7C2C0400, // 010E CALL R11 2 + 0x5C141600, // 010F MOVE R5 R11 + 0x78160004, // 0110 JMPF R5 #0116 + 0x882C0138, // 0111 GETMBR R11 R0 K56 + 0x8C2C173A, // 0112 GETMET R11 R11 K58 + 0x5C340000, // 0113 MOVE R13 R0 + 0x7C2C0400, // 0114 CALL R11 2 + 0x7002000D, // 0115 JMP #0124 + 0x882C0D3B, // 0116 GETMBR R11 R6 K59 + 0x782E000B, // 0117 JMPF R11 #0124 + 0x8C2C0D3C, // 0118 GETMET R11 R6 K60 + 0x7C2C0200, // 0119 CALL R11 1 + 0x8C30173D, // 011A GETMET R12 R11 K61 + 0x7C300200, // 011B CALL R12 1 + 0x8C30173E, // 011C GETMET R12 R11 K62 + 0x7C300200, // 011D CALL R12 1 + 0x8C30013F, // 011E GETMET R12 R0 K63 + 0x8838172E, // 011F GETMBR R14 R11 K46 + 0x883C1740, // 0120 GETMBR R15 R11 K64 + 0x88401741, // 0121 GETMBR R16 R11 K65 + 0x88441718, // 0122 GETMBR R17 R11 K24 + 0x7C300A00, // 0123 CALL R12 5 + 0x50140200, // 0124 LDBOOL R5 1 0 + 0x70020007, // 0125 JMP #012E + 0xB82E0200, // 0126 GETNGBL R11 K1 + 0x8C2C1702, // 0127 GETMET R11 R11 K2 + 0x60340008, // 0128 GETGBL R13 G8 + 0x5C381400, // 0129 MOVE R14 R10 + 0x7C340200, // 012A CALL R13 1 + 0x0036840D, // 012B ADD R13 K66 R13 + 0x58380011, // 012C LDCONST R14 K17 + 0x7C2C0600, // 012D CALL R11 3 + 0xA8040001, // 012E EXBLK 1 1 + 0x80040A00, // 012F RET 1 R5 + 0xA8040001, // 0130 EXBLK 1 1 + 0x70020014, // 0131 JMP #0147 + 0xAC180002, // 0132 CATCH R6 0 2 + 0x70020011, // 0133 JMP #0146 + 0xB8220200, // 0134 GETNGBL R8 K1 + 0x8C201102, // 0135 GETMET R8 R8 K2 + 0x60280008, // 0136 GETGBL R10 G8 + 0x5C2C0C00, // 0137 MOVE R11 R6 + 0x7C280200, // 0138 CALL R10 1 + 0x002A860A, // 0139 ADD R10 K67 R10 + 0x00281544, // 013A ADD R10 R10 K68 + 0x602C0008, // 013B GETGBL R11 G8 + 0x5C300E00, // 013C MOVE R12 R7 + 0x7C2C0200, // 013D CALL R11 1 + 0x0028140B, // 013E ADD R10 R10 R11 + 0x7C200400, // 013F CALL R8 2 + 0xA4228A00, // 0140 IMPORT R8 K69 + 0x8C241146, // 0141 GETMET R9 R8 K70 + 0x7C240200, // 0142 CALL R9 1 + 0x50240000, // 0143 LDBOOL R9 0 0 + 0x80041200, // 0144 RET 1 R9 + 0x70020000, // 0145 JMP #0147 + 0xB0080000, // 0146 RAISE 2 R0 R0 + 0x80000000, // 0147 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h index 5ec1ec361..9bf85ea64 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h @@ -347,7 +347,7 @@ be_local_closure(Matter_UDPServer_init, /* name */ ********************************************************************/ be_local_closure(Matter_UDPServer_resend_packets, /* name */ be_nested_proto( - 11, /* nstack */ + 12, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -374,7 +374,7 @@ be_local_closure(Matter_UDPServer_resend_packets, /* name */ /* K15 */ be_nested_str_weak(string), /* K16 */ be_nested_str_weak(remove), /* K17 */ be_nested_str_weak(format), - /* K18 */ be_nested_str_weak(MTR_X3A_X20target_X20unreachable_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), + /* K18 */ be_nested_str_weak(MTR_X3A_X20target_X20unreachable_X20_X27_X5B_X25s_X5D_X3A_X25i_X27_X20msg_id_X3D_X25i), /* K19 */ be_nested_str_weak(addr), /* K20 */ be_nested_str_weak(port), /* K21 */ be_const_int(2), @@ -382,18 +382,18 @@ be_local_closure(Matter_UDPServer_resend_packets, /* name */ }), be_str_weak(resend_packets), &be_const_str_solidified, - ( &(const binstruction[57]) { /* code */ + ( &(const binstruction[58]) { /* code */ 0x60040010, // 0000 GETGBL R1 G16 0x88080100, // 0001 GETMBR R2 R0 K0 0x7C040200, // 0002 CALL R1 1 - 0xA8020030, // 0003 EXBLK 0 #0035 + 0xA8020031, // 0003 EXBLK 0 #0036 0x5C080200, // 0004 MOVE R2 R1 0x7C080000, // 0005 CALL R2 0 0xB80E0200, // 0006 GETNGBL R3 K1 0x8C0C0702, // 0007 GETMET R3 R3 K2 0x88140503, // 0008 GETMBR R5 R2 K3 0x7C0C0400, // 0009 CALL R3 2 - 0x780E0028, // 000A JMPF R3 #0034 + 0x780E0029, // 000A JMPF R3 #0035 0x880C0504, // 000B GETMBR R3 R2 K4 0x88100105, // 000C GETMBR R4 R0 K5 0x180C0604, // 000D LE R3 R3 R4 @@ -420,7 +420,7 @@ be_local_closure(Matter_UDPServer_resend_packets, /* name */ 0x880C0504, // 0022 GETMBR R3 R2 K4 0x000C070E, // 0023 ADD R3 R3 K14 0x900A0803, // 0024 SETMBR R2 K4 R3 - 0x7002000D, // 0025 JMP #0034 + 0x7002000E, // 0025 JMP #0035 0xA40E1E00, // 0026 IMPORT R3 K15 0x88100100, // 0027 GETMBR R4 R0 K0 0x8C100910, // 0028 GETMET R4 R4 K16 @@ -432,14 +432,15 @@ be_local_closure(Matter_UDPServer_resend_packets, /* name */ 0x58200012, // 002E LDCONST R8 K18 0x88240513, // 002F GETMBR R9 R2 K19 0x88280514, // 0030 GETMBR R10 R2 K20 - 0x7C180800, // 0031 CALL R6 4 - 0x581C0015, // 0032 LDCONST R7 K21 - 0x7C100600, // 0033 CALL R4 3 - 0x7001FFCE, // 0034 JMP #0004 - 0x58040016, // 0035 LDCONST R1 K22 - 0xAC040200, // 0036 CATCH R1 1 0 - 0xB0080000, // 0037 RAISE 2 R0 R0 - 0x80000000, // 0038 RET 0 + 0x882C0508, // 0031 GETMBR R11 R2 K8 + 0x7C180A00, // 0032 CALL R6 5 + 0x581C0015, // 0033 LDCONST R7 K21 + 0x7C100600, // 0034 CALL R4 3 + 0x7001FFCD, // 0035 JMP #0004 + 0x58040016, // 0036 LDCONST R1 K22 + 0xAC040200, // 0037 CATCH R1 1 0 + 0xB0080000, // 0038 RAISE 2 R0 R0 + 0x80000000, // 0039 RET 0 }) ) );