From f33ccac2dfe36c5814586e21483ace83b29fdea9 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Tue, 11 Apr 2023 22:56:05 +0200 Subject: [PATCH] Matter fix wrong unsupported messages (#18394) --- .../berry_matter/src/be_matter_module.c | 2 + .../src/embedded/Matter_Commissioning.be | 26 +- .../src/embedded/Matter_Control_Message.be | 79 + .../berry_matter/src/embedded/Matter_IM.be | 13 +- .../src/embedded/Matter_IM_Message.be | 4 +- .../src/embedded/Matter_MessageHandler.be | 71 +- .../src/embedded/Matter_Plugin_Root.be | 4 +- .../src/embedded/Matter_Session.be | 61 +- .../solidified_Matter_Commissioning.h | 1455 ++++++++--------- .../solidified_Matter_Control_Message.h | 246 +++ .../src/solidify/solidified_Matter_IM.h | 70 +- .../solidify/solidified_Matter_IM_Message.h | 2 +- .../solidified_Matter_MessageHandler.h | 1327 ++++++++------- .../solidify/solidified_Matter_Plugin_Root.h | 845 +++++----- .../src/solidify/solidified_Matter_Session.h | 942 +++++++---- 15 files changed, 2842 insertions(+), 2305 deletions(-) create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Control_Message.be create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index 4ae8c181e..a1a7097c5 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -141,6 +141,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_IM_Message.h" #include "solidify/solidified_Matter_IM_Subscription.h" #include "solidify/solidified_Matter_IM.h" +#include "solidify/solidified_Matter_Control_Message.h" #include "solidify/solidified_Matter_Plugin.h" #include "solidify/solidified_Matter_Base38.h" #include "solidify/solidified_Matter_UI.h" @@ -299,6 +300,7 @@ module matter (scope: global, strings: weak) { IM_Subscription, class(be_class_Matter_IM_Subscription) IM_Subscription_Shop, class(be_class_Matter_IM_Subscription_Shop) IM, class(be_class_Matter_IM) + Control_Message, class(be_class_Matter_Control_Message) UI, class(be_class_Matter_UI) // QR Code diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be index 9fee61fb3..366d5f11f 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be @@ -78,9 +78,7 @@ class Matter_Commisioning_Context tasmota.log("MTR: received message " + matter.inspect(msg), 3) if msg.opcode == 0x10 - return self.parse_MsgCounterSyncReq(msg) - elif msg.opcode == 0x11 - return self.parse_MsgCounterSyncRsp(msg) + # don't need to do anything, the message is acked already before this call elif msg.opcode == 0x20 return self.parse_PBKDFParamRequest(msg) elif msg.opcode == 0x22 @@ -695,28 +693,6 @@ class Matter_Commisioning_Context return false # we don't explicitly ack the message end - ############################################################# - # MsgCounterSyncReq - # - # Not yet implemented - def parse_MsgCounterSyncReq(msg) - import string - var session = msg.session - tasmota.log(string.format("MTR: >????????? MsgCounterSyncReq not implemented %s", msg.raw[msg.app_payload_idx..].tohex()), 2) - return false # we don't explicitly ack the message - end - - ############################################################# - # MsgCounterSyncRsp - # - # Not yet implemented - def parse_MsgCounterSyncRsp(msg) - import string - var session = msg.session - tasmota.log(string.format("MTR: >????????? MsgCounterSyncRsp not implemented %s", msg.raw[msg.app_payload_idx..].tohex()), 2) - return false # we don't explicitly ack the message - end - ############################################################# # placeholder, nothing to run for now def every_second() diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Control_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_Control_Message.be new file mode 100644 index 000000000..d2d3192ba --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Control_Message.be @@ -0,0 +1,79 @@ +# +# Matter_Control_Message.be - suppport for Matter Control Messages (flag C = 1) +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +#@ solidify:Matter_Control_Message,weak + +################################################################################# +# Class Matter_Control_Message +# +# Control message have C flag = 1 +# Used primarily for Message Counter Synchronization Protocol (MCSP) +################################################################################# +class Matter_Control_Message + var responder # reference to the caller, sending packets + var device # root device object + + def init(responder) + import crypto + self.responder = responder + self.device = responder.device + end + + def process_incoming_control_message(msg) + + tasmota.log("MTR: received control message " + matter.inspect(msg), 2) + if msg.opcode == 0x00 + return self.parse_MsgCounterSyncReq(msg) + elif msg.opcode == 0x01 + return self.parse_MsgCounterSyncRsp(msg) + else + import string + tasmota.log(string.format("MTR: >????????? Unknown OpCode (control message) %02X", msg.opcode), 2) + return false + end + + return false + end + + ############################################################# + # MsgCounterSyncReq + # + # Not yet implemented + def parse_MsgCounterSyncReq(msg) + import string + var session = msg.session + tasmota.log(string.format("MTR: >MCSyncReq * Not implemented %s", msg.raw[msg.app_payload_idx..].tohex()), 2) + return false # we don't explicitly ack the message + end + + ############################################################# + # MsgCounterSyncRsp + # + # Not yet implemented + def parse_MsgCounterSyncRsp(msg) + import string + var session = msg.session + tasmota.log(string.format("MTR: >MCSyncRsp * Not implemented %s", msg.raw[msg.app_payload_idx..].tohex()), 2) + return false # we don't explicitly ack the message + end + +end +matter.Control_Message = Matter_Control_Message diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index 505f23547..d0fc142eb 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -96,18 +96,7 @@ class Matter_IM # # returns `true` if packet could be sent def send_ack_now(msg) - if msg.x_flag_r # send Ack only if requester asks for it - var resp = msg.build_standalone_ack(false #-not reliable-#) - resp.encode_frame() - resp.encrypt() - import string - tasmota.log(string.format("MTR: >>> INIT", "counter_rcv=", self.counter_rcv, "counter_snd=", self.counter_snd) + # self._counter_insecure_rcv = matter.Counter() self._counter_insecure_snd = matter.Counter() self._breadcrumb = 0 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h index 61d12fe9b..f00b8535a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h @@ -6,165 +6,6 @@ extern const bclass be_class_Matter_Commisioning_Context; -/******************************************************************** -** Solidified function: process_incoming -********************************************************************/ -be_local_closure(Matter_Commisioning_Context_process_incoming, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(is_commissioning_open), - /* K2 */ be_nested_str_weak(opcode), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(log), - /* K5 */ be_nested_str_weak(MTR_X3A_X20commissioning_X20not_X20open), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str_weak(MTR_X3A_X20received_X20message_X20), - /* K8 */ be_nested_str_weak(matter), - /* K9 */ be_nested_str_weak(inspect), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(parse_MsgCounterSyncReq), - /* K12 */ be_nested_str_weak(parse_MsgCounterSyncRsp), - /* K13 */ be_nested_str_weak(parse_PBKDFParamRequest), - /* K14 */ be_nested_str_weak(parse_Pake1), - /* K15 */ be_nested_str_weak(parse_Pake3), - /* K16 */ be_nested_str_weak(parse_Sigma1), - /* K17 */ be_nested_str_weak(parse_Sigma3), - /* K18 */ be_nested_str_weak(parse_StatusReport), - /* K19 */ be_nested_str_weak(string), - /* K20 */ be_nested_str_weak(format), - /* K21 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28secure_X20channel_X29_X20_X2502X), - }), - be_str_weak(process_incoming), - &be_const_str_solidified, - ( &(const binstruction[113]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x740A000E, // 0003 JMPT R2 #0013 - 0x88080302, // 0004 GETMBR R2 R1 K2 - 0x540E001F, // 0005 LDINT R3 32 - 0x28080403, // 0006 GE R2 R2 R3 - 0x780A000A, // 0007 JMPF R2 #0013 - 0x88080302, // 0008 GETMBR R2 R1 K2 - 0x540E0023, // 0009 LDINT R3 36 - 0x18080403, // 000A LE R2 R2 R3 - 0x780A0006, // 000B JMPF R2 #0013 - 0xB80A0600, // 000C GETNGBL R2 K3 - 0x8C080504, // 000D GETMET R2 R2 K4 - 0x58100005, // 000E LDCONST R4 K5 - 0x58140006, // 000F LDCONST R5 K6 - 0x7C080600, // 0010 CALL R2 3 - 0x50080000, // 0011 LDBOOL R2 0 0 - 0x80040400, // 0012 RET 1 R2 - 0xB80A0600, // 0013 GETNGBL R2 K3 - 0x8C080504, // 0014 GETMET R2 R2 K4 - 0xB8121000, // 0015 GETNGBL R4 K8 - 0x8C100909, // 0016 GETMET R4 R4 K9 - 0x5C180200, // 0017 MOVE R6 R1 - 0x7C100400, // 0018 CALL R4 2 - 0x00120E04, // 0019 ADD R4 K7 R4 - 0x5814000A, // 001A LDCONST R5 K10 - 0x7C080600, // 001B CALL R2 3 - 0x88080302, // 001C GETMBR R2 R1 K2 - 0x540E000F, // 001D LDINT R3 16 - 0x1C080403, // 001E EQ R2 R2 R3 - 0x780A0004, // 001F JMPF R2 #0025 - 0x8C08010B, // 0020 GETMET R2 R0 K11 - 0x5C100200, // 0021 MOVE R4 R1 - 0x7C080400, // 0022 CALL R2 2 - 0x80040400, // 0023 RET 1 R2 - 0x70020049, // 0024 JMP #006F - 0x88080302, // 0025 GETMBR R2 R1 K2 - 0x540E0010, // 0026 LDINT R3 17 - 0x1C080403, // 0027 EQ R2 R2 R3 - 0x780A0004, // 0028 JMPF R2 #002E - 0x8C08010C, // 0029 GETMET R2 R0 K12 - 0x5C100200, // 002A MOVE R4 R1 - 0x7C080400, // 002B CALL R2 2 - 0x80040400, // 002C RET 1 R2 - 0x70020040, // 002D JMP #006F - 0x88080302, // 002E GETMBR R2 R1 K2 - 0x540E001F, // 002F LDINT R3 32 - 0x1C080403, // 0030 EQ R2 R2 R3 - 0x780A0004, // 0031 JMPF R2 #0037 - 0x8C08010D, // 0032 GETMET R2 R0 K13 - 0x5C100200, // 0033 MOVE R4 R1 - 0x7C080400, // 0034 CALL R2 2 - 0x80040400, // 0035 RET 1 R2 - 0x70020037, // 0036 JMP #006F - 0x88080302, // 0037 GETMBR R2 R1 K2 - 0x540E0021, // 0038 LDINT R3 34 - 0x1C080403, // 0039 EQ R2 R2 R3 - 0x780A0004, // 003A JMPF R2 #0040 - 0x8C08010E, // 003B GETMET R2 R0 K14 - 0x5C100200, // 003C MOVE R4 R1 - 0x7C080400, // 003D CALL R2 2 - 0x80040400, // 003E RET 1 R2 - 0x7002002E, // 003F JMP #006F - 0x88080302, // 0040 GETMBR R2 R1 K2 - 0x540E0023, // 0041 LDINT R3 36 - 0x1C080403, // 0042 EQ R2 R2 R3 - 0x780A0004, // 0043 JMPF R2 #0049 - 0x8C08010F, // 0044 GETMET R2 R0 K15 - 0x5C100200, // 0045 MOVE R4 R1 - 0x7C080400, // 0046 CALL R2 2 - 0x80040400, // 0047 RET 1 R2 - 0x70020025, // 0048 JMP #006F - 0x88080302, // 0049 GETMBR R2 R1 K2 - 0x540E002F, // 004A LDINT R3 48 - 0x1C080403, // 004B EQ R2 R2 R3 - 0x780A0004, // 004C JMPF R2 #0052 - 0x8C080110, // 004D GETMET R2 R0 K16 - 0x5C100200, // 004E MOVE R4 R1 - 0x7C080400, // 004F CALL R2 2 - 0x80040400, // 0050 RET 1 R2 - 0x7002001C, // 0051 JMP #006F - 0x88080302, // 0052 GETMBR R2 R1 K2 - 0x540E0031, // 0053 LDINT R3 50 - 0x1C080403, // 0054 EQ R2 R2 R3 - 0x780A0004, // 0055 JMPF R2 #005B - 0x8C080111, // 0056 GETMET R2 R0 K17 - 0x5C100200, // 0057 MOVE R4 R1 - 0x7C080400, // 0058 CALL R2 2 - 0x80040400, // 0059 RET 1 R2 - 0x70020013, // 005A JMP #006F - 0x88080302, // 005B GETMBR R2 R1 K2 - 0x540E003F, // 005C LDINT R3 64 - 0x1C080403, // 005D EQ R2 R2 R3 - 0x780A0004, // 005E JMPF R2 #0064 - 0x8C080112, // 005F GETMET R2 R0 K18 - 0x5C100200, // 0060 MOVE R4 R1 - 0x7C080400, // 0061 CALL R2 2 - 0x80040400, // 0062 RET 1 R2 - 0x7002000A, // 0063 JMP #006F - 0xA40A2600, // 0064 IMPORT R2 K19 - 0xB80E0600, // 0065 GETNGBL R3 K3 - 0x8C0C0704, // 0066 GETMET R3 R3 K4 - 0x8C140514, // 0067 GETMET R5 R2 K20 - 0x581C0015, // 0068 LDCONST R7 K21 - 0x88200302, // 0069 GETMBR R8 R1 K2 - 0x7C140600, // 006A CALL R5 3 - 0x58180006, // 006B LDCONST R6 K6 - 0x7C0C0600, // 006C CALL R3 3 - 0x500C0000, // 006D LDBOOL R3 0 0 - 0x80040600, // 006E RET 1 R3 - 0x50080000, // 006F LDBOOL R2 0 0 - 0x80040400, // 0070 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: parse_PBKDFParamRequest ********************************************************************/ @@ -382,75 +223,6 @@ be_local_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest, /* name /*******************************************************************/ -/******************************************************************** -** Solidified function: send_status_report -********************************************************************/ -be_local_closure(Matter_Commisioning_Context_send_status_report, /* name */ - be_nested_proto( - 16, /* nstack */ - 6, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(build_response), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_const_int(2), - /* K3 */ be_nested_str_weak(encode_frame), - /* K4 */ be_nested_str_weak(responder), - /* K5 */ be_nested_str_weak(send_response), - /* K6 */ be_nested_str_weak(remote_ip), - /* K7 */ be_nested_str_weak(remote_port), - /* K8 */ be_nested_str_weak(message_counter), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(local_session_id), - }), - be_str_weak(send_status_report), - &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0x8C180300, // 0000 GETMET R6 R1 K0 - 0x5422003F, // 0001 LDINT R8 64 - 0x5C240A00, // 0002 MOVE R9 R5 - 0x7C180600, // 0003 CALL R6 3 - 0x601C0015, // 0004 GETGBL R7 G21 - 0x7C1C0000, // 0005 CALL R7 0 - 0x8C200F01, // 0006 GETMET R8 R7 K1 - 0x5C280400, // 0007 MOVE R10 R2 - 0x582C0002, // 0008 LDCONST R11 K2 - 0x7C200600, // 0009 CALL R8 3 - 0x8C200F01, // 000A GETMET R8 R7 K1 - 0x5C280600, // 000B MOVE R10 R3 - 0x542E0003, // 000C LDINT R11 4 - 0x7C200600, // 000D CALL R8 3 - 0x8C200F01, // 000E GETMET R8 R7 K1 - 0x5C280800, // 000F MOVE R10 R4 - 0x542E0003, // 0010 LDINT R11 4 - 0x7C200600, // 0011 CALL R8 3 - 0x8C200D03, // 0012 GETMET R8 R6 K3 - 0x5C280E00, // 0013 MOVE R10 R7 - 0x7C200400, // 0014 CALL R8 2 - 0x88240104, // 0015 GETMBR R9 R0 K4 - 0x8C241305, // 0016 GETMET R9 R9 K5 - 0x5C2C1000, // 0017 MOVE R11 R8 - 0x88300306, // 0018 GETMBR R12 R1 K6 - 0x88340307, // 0019 GETMBR R13 R1 K7 - 0x78160001, // 001A JMPF R5 #001D - 0x88380D08, // 001B GETMBR R14 R6 K8 - 0x70020000, // 001C JMP #001E - 0x4C380000, // 001D LDNIL R14 - 0x883C0309, // 001E GETMBR R15 R1 K9 - 0x883C1F0A, // 001F GETMBR R15 R15 K10 - 0x7C240C00, // 0020 CALL R9 6 - 0x80000000, // 0021 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: parse_Pake1 ********************************************************************/ @@ -643,11 +415,11 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake1, /* name */ /******************************************************************** -** Solidified function: parse_Pake3 +** Solidified function: init ********************************************************************/ -be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */ +be_local_closure(Matter_Commisioning_Context_init, /* name */ be_nested_proto( - 14, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -655,157 +427,315 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[34]) { /* constants */ + ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(opcode), - /* K2 */ be_nested_str_weak(local_session_id), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(protocol_id), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake3_X20message), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), - /* K10 */ be_nested_str_weak(send_status_report), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(matter), - /* K13 */ be_nested_str_weak(Pake3), - /* K14 */ be_nested_str_weak(parse), - /* K15 */ be_nested_str_weak(raw), - /* K16 */ be_nested_str_weak(app_payload_idx), - /* K17 */ be_nested_str_weak(cA), - /* K18 */ be_nested_str_weak(spake), - /* K19 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received), - /* K20 */ be_nested_str_weak(created), - /* K21 */ be_nested_str_weak(rtc), - /* K22 */ be_nested_str_weak(utc), - /* K23 */ be_nested_str_weak(HKDF_SHA256), - /* K24 */ be_nested_str_weak(derive), - /* K25 */ be_nested_str_weak(Ke), - /* K26 */ be_nested_str_weak(fromstring), - /* K27 */ be_nested_str_weak(SEKeys_Info), - /* K28 */ be_nested_str_weak(I2RKey), - /* K29 */ be_nested_str_weak(R2IKey), - /* K30 */ be_nested_str_weak(AttestationChallenge), - /* K31 */ be_nested_str_weak(add_session), - /* K32 */ be_nested_str_weak(future_local_session_id), - /* K33 */ be_nested_str_weak(future_initiator_session_id), + /* K1 */ be_nested_str_weak(responder), + /* K2 */ be_nested_str_weak(device), + /* K3 */ be_nested_str_weak(y), + /* K4 */ be_nested_str_weak(random), }), - be_str_weak(parse_Pake3), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[112]) { /* code */ + ( &(const binstruction[ 9]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0x54120023, // 0002 LDINT R4 36 - 0x200C0604, // 0003 NE R3 R3 R4 - 0x740E0005, // 0004 JMPT R3 #000B - 0x880C0302, // 0005 GETMBR R3 R1 K2 - 0x200C0703, // 0006 NE R3 R3 K3 - 0x740E0002, // 0007 JMPT R3 #000B - 0x880C0304, // 0008 GETMBR R3 R1 K4 - 0x200C0703, // 0009 NE R3 R3 K3 - 0x780E0012, // 000A JMPF R3 #001E - 0xB80E0A00, // 000B GETNGBL R3 K5 - 0x8C0C0706, // 000C GETMET R3 R3 K6 - 0x58140007, // 000D LDCONST R5 K7 - 0x58180008, // 000E LDCONST R6 K8 - 0x7C0C0600, // 000F CALL R3 3 - 0xB80E0A00, // 0010 GETNGBL R3 K5 - 0x8C0C0706, // 0011 GETMET R3 R3 K6 - 0x58140009, // 0012 LDCONST R5 K9 - 0x58180008, // 0013 LDCONST R6 K8 - 0x7C0C0600, // 0014 CALL R3 3 - 0x8C0C010A, // 0015 GETMET R3 R0 K10 - 0x5C140200, // 0016 MOVE R5 R1 - 0x5818000B, // 0017 LDCONST R6 K11 - 0x581C0003, // 0018 LDCONST R7 K3 - 0x58200008, // 0019 LDCONST R8 K8 - 0x50240000, // 001A LDBOOL R9 0 0 - 0x7C0C0C00, // 001B CALL R3 6 - 0x50100000, // 001C LDBOOL R4 0 0 - 0x80040800, // 001D RET 1 R4 - 0xB80E1800, // 001E GETNGBL R3 K12 - 0x8C0C070D, // 001F GETMET R3 R3 K13 - 0x7C0C0200, // 0020 CALL R3 1 - 0x8C0C070E, // 0021 GETMET R3 R3 K14 - 0x8814030F, // 0022 GETMBR R5 R1 K15 - 0x88180310, // 0023 GETMBR R6 R1 K16 - 0x7C0C0600, // 0024 CALL R3 3 - 0x88100711, // 0025 GETMBR R4 R3 K17 - 0x90022204, // 0026 SETMBR R0 K17 R4 - 0x88100111, // 0027 GETMBR R4 R0 K17 - 0x88140112, // 0028 GETMBR R5 R0 K18 - 0x88140B11, // 0029 GETMBR R5 R5 K17 - 0x20100805, // 002A NE R4 R4 R5 - 0x78120012, // 002B JMPF R4 #003F - 0xB8120A00, // 002C GETNGBL R4 K5 - 0x8C100906, // 002D GETMET R4 R4 K6 - 0x58180013, // 002E LDCONST R6 K19 - 0x581C0008, // 002F LDCONST R7 K8 - 0x7C100600, // 0030 CALL R4 3 - 0xB8120A00, // 0031 GETNGBL R4 K5 - 0x8C100906, // 0032 GETMET R4 R4 K6 - 0x58180009, // 0033 LDCONST R6 K9 - 0x581C0008, // 0034 LDCONST R7 K8 - 0x7C100600, // 0035 CALL R4 3 - 0x8C10010A, // 0036 GETMET R4 R0 K10 - 0x5C180200, // 0037 MOVE R6 R1 - 0x581C000B, // 0038 LDCONST R7 K11 - 0x58200003, // 0039 LDCONST R8 K3 - 0x58240008, // 003A LDCONST R9 K8 - 0x50280000, // 003B LDBOOL R10 0 0 - 0x7C100C00, // 003C CALL R4 6 - 0x50140000, // 003D LDBOOL R5 0 0 - 0x80040A00, // 003E RET 1 R5 - 0xB8120A00, // 003F GETNGBL R4 K5 - 0x8C100915, // 0040 GETMET R4 R4 K21 - 0x7C100200, // 0041 CALL R4 1 - 0x94100916, // 0042 GETIDX R4 R4 K22 - 0x90022804, // 0043 SETMBR R0 K20 R4 - 0x8C100517, // 0044 GETMET R4 R2 K23 - 0x7C100200, // 0045 CALL R4 1 - 0x8C100918, // 0046 GETMET R4 R4 K24 - 0x88180119, // 0047 GETMBR R6 R0 K25 - 0x601C0015, // 0048 GETGBL R7 G21 - 0x7C1C0000, // 0049 CALL R7 0 - 0x60200015, // 004A GETGBL R8 G21 - 0x7C200000, // 004B CALL R8 0 - 0x8C20111A, // 004C GETMET R8 R8 K26 - 0x8828011B, // 004D GETMBR R10 R0 K27 - 0x7C200400, // 004E CALL R8 2 - 0x5426002F, // 004F LDINT R9 48 - 0x7C100A00, // 0050 CALL R4 5 - 0x5416000E, // 0051 LDINT R5 15 - 0x40160605, // 0052 CONNECT R5 K3 R5 - 0x94140805, // 0053 GETIDX R5 R4 R5 - 0x90023805, // 0054 SETMBR R0 K28 R5 - 0x5416000F, // 0055 LDINT R5 16 - 0x541A001E, // 0056 LDINT R6 31 - 0x40140A06, // 0057 CONNECT R5 R5 R6 - 0x94140805, // 0058 GETIDX R5 R4 R5 - 0x90023A05, // 0059 SETMBR R0 K29 R5 - 0x5416001F, // 005A LDINT R5 32 - 0x541A002E, // 005B LDINT R6 47 - 0x40140A06, // 005C CONNECT R5 R5 R6 - 0x94140805, // 005D GETIDX R5 R4 R5 - 0x90023C05, // 005E SETMBR R0 K30 R5 - 0x8C14010A, // 005F GETMET R5 R0 K10 - 0x5C1C0200, // 0060 MOVE R7 R1 - 0x58200003, // 0061 LDCONST R8 K3 - 0x58240003, // 0062 LDCONST R9 K3 - 0x58280003, // 0063 LDCONST R10 K3 - 0x502C0000, // 0064 LDBOOL R11 0 0 - 0x7C140C00, // 0065 CALL R5 6 - 0x8C18011F, // 0066 GETMET R6 R0 K31 - 0x88200120, // 0067 GETMBR R8 R0 K32 - 0x88240121, // 0068 GETMBR R9 R0 K33 - 0x8828011C, // 0069 GETMBR R10 R0 K28 - 0x882C011D, // 006A GETMBR R11 R0 K29 - 0x8830011E, // 006B GETMBR R12 R0 K30 - 0x88340114, // 006C GETMBR R13 R0 K20 - 0x7C180E00, // 006D CALL R6 7 - 0x50180200, // 006E LDBOOL R6 1 0 - 0x80040C00, // 006F RET 1 R6 + 0x90020201, // 0001 SETMBR R0 K1 R1 + 0x880C0302, // 0002 GETMBR R3 R1 K2 + 0x90020403, // 0003 SETMBR R0 K2 R3 + 0x8C0C0504, // 0004 GETMET R3 R2 K4 + 0x5416001F, // 0005 LDINT R5 32 + 0x7C0C0400, // 0006 CALL R3 2 + 0x90020603, // 0007 SETMBR R0 K3 R3 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_fabric_by_destination_id +********************************************************************/ +be_local_closure(Matter_Commisioning_Context_find_fabric_by_destination_id, /* name */ + be_nested_proto( + 14, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[21]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20SEARCHING_X3A_X20destinationId_X3D), + /* K4 */ be_nested_str_weak(tohex), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(device), + /* K7 */ be_nested_str_weak(sessions), + /* K8 */ be_nested_str_weak(fabrics), + /* K9 */ be_nested_str_weak(noc), + /* K10 */ be_nested_str_weak(fabric_id), + /* K11 */ be_nested_str_weak(device_id), + /* K12 */ be_nested_str_weak(get_ca_pub), + /* K13 */ be_nested_str_weak(get_ipk_group_key), + /* K14 */ be_nested_str_weak(MTR_X3A_X20SIGMA1_X3A_X20destinationMessage_X3D), + /* K15 */ be_nested_str_weak(MTR_X3A_X20SIGMA1_X3A_X20key_ipk_X3D), + /* K16 */ be_nested_str_weak(HMAC_SHA256), + /* K17 */ be_nested_str_weak(update), + /* K18 */ be_nested_str_weak(out), + /* K19 */ be_nested_str_weak(MTR_X3A_X20SIGMA1_X3A_X20candidateDestinationId_X3D), + /* K20 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(find_fabric_by_destination_id), + &be_const_str_solidified, + ( &(const binstruction[77]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x8C180304, // 0003 GETMET R6 R1 K4 + 0x7C180200, // 0004 CALL R6 1 + 0x001A0606, // 0005 ADD R6 K3 R6 + 0x581C0005, // 0006 LDCONST R7 K5 + 0x7C100600, // 0007 CALL R4 3 + 0x60100010, // 0008 GETGBL R4 G16 + 0x88140106, // 0009 GETMBR R5 R0 K6 + 0x88140B07, // 000A GETMBR R5 R5 K7 + 0x88140B08, // 000B GETMBR R5 R5 K8 + 0x7C100200, // 000C CALL R4 1 + 0xA8020039, // 000D EXBLK 0 #0048 + 0x5C140800, // 000E MOVE R5 R4 + 0x7C140000, // 000F CALL R5 0 + 0x88180B09, // 0010 GETMBR R6 R5 K9 + 0x4C1C0000, // 0011 LDNIL R7 + 0x1C180C07, // 0012 EQ R6 R6 R7 + 0x741A0007, // 0013 JMPT R6 #001C + 0x88180B0A, // 0014 GETMBR R6 R5 K10 + 0x4C1C0000, // 0015 LDNIL R7 + 0x1C180C07, // 0016 EQ R6 R6 R7 + 0x741A0003, // 0017 JMPT R6 #001C + 0x88180B0B, // 0018 GETMBR R6 R5 K11 + 0x4C1C0000, // 0019 LDNIL R7 + 0x1C180C07, // 001A EQ R6 R6 R7 + 0x781A0000, // 001B JMPF R6 #001D + 0x7001FFF0, // 001C JMP #000E + 0x8C180B0C, // 001D GETMET R6 R5 K12 + 0x7C180200, // 001E CALL R6 1 + 0x00180406, // 001F ADD R6 R2 R6 + 0x881C0B0A, // 0020 GETMBR R7 R5 K10 + 0x00180C07, // 0021 ADD R6 R6 R7 + 0x881C0B0B, // 0022 GETMBR R7 R5 K11 + 0x00180C07, // 0023 ADD R6 R6 R7 + 0x8C1C0B0D, // 0024 GETMET R7 R5 K13 + 0x7C1C0200, // 0025 CALL R7 1 + 0xB8220200, // 0026 GETNGBL R8 K1 + 0x8C201102, // 0027 GETMET R8 R8 K2 + 0x8C280D04, // 0028 GETMET R10 R6 K4 + 0x7C280200, // 0029 CALL R10 1 + 0x002A1C0A, // 002A ADD R10 K14 R10 + 0x582C0005, // 002B LDCONST R11 K5 + 0x7C200600, // 002C CALL R8 3 + 0xB8220200, // 002D GETNGBL R8 K1 + 0x8C201102, // 002E GETMET R8 R8 K2 + 0x8C280F04, // 002F GETMET R10 R7 K4 + 0x7C280200, // 0030 CALL R10 1 + 0x002A1E0A, // 0031 ADD R10 K15 R10 + 0x542E0003, // 0032 LDINT R11 4 + 0x7C200600, // 0033 CALL R8 3 + 0x8C200710, // 0034 GETMET R8 R3 K16 + 0x5C280E00, // 0035 MOVE R10 R7 + 0x7C200400, // 0036 CALL R8 2 + 0x8C241111, // 0037 GETMET R9 R8 K17 + 0x5C2C0C00, // 0038 MOVE R11 R6 + 0x7C240400, // 0039 CALL R9 2 + 0x8C241112, // 003A GETMET R9 R8 K18 + 0x7C240200, // 003B CALL R9 1 + 0xB82A0200, // 003C GETNGBL R10 K1 + 0x8C281502, // 003D GETMET R10 R10 K2 + 0x8C301304, // 003E GETMET R12 R9 K4 + 0x7C300200, // 003F CALL R12 1 + 0x0032260C, // 0040 ADD R12 K19 R12 + 0x58340005, // 0041 LDCONST R13 K5 + 0x7C280600, // 0042 CALL R10 3 + 0x1C281201, // 0043 EQ R10 R9 R1 + 0x782A0001, // 0044 JMPF R10 #0047 + 0xA8040001, // 0045 EXBLK 1 1 + 0x80040A00, // 0046 RET 1 R5 + 0x7001FFC5, // 0047 JMP #000E + 0x58100014, // 0048 LDCONST R4 K20 + 0xAC100200, // 0049 CATCH R4 1 0 + 0xB0080000, // 004A RAISE 2 R0 R0 + 0x4C100000, // 004B LDNIL R4 + 0x80040800, // 004C RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_incoming +********************************************************************/ +be_local_closure(Matter_Commisioning_Context_process_incoming, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[20]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(is_commissioning_open), + /* K2 */ be_nested_str_weak(opcode), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(log), + /* K5 */ be_nested_str_weak(MTR_X3A_X20commissioning_X20not_X20open), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_str_weak(MTR_X3A_X20received_X20message_X20), + /* K8 */ be_nested_str_weak(matter), + /* K9 */ be_nested_str_weak(inspect), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(parse_PBKDFParamRequest), + /* K12 */ be_nested_str_weak(parse_Pake1), + /* K13 */ be_nested_str_weak(parse_Pake3), + /* K14 */ be_nested_str_weak(parse_Sigma1), + /* K15 */ be_nested_str_weak(parse_Sigma3), + /* K16 */ be_nested_str_weak(parse_StatusReport), + /* K17 */ be_nested_str_weak(string), + /* K18 */ be_nested_str_weak(format), + /* K19 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28secure_X20channel_X29_X20_X2502X), + }), + be_str_weak(process_incoming), + &be_const_str_solidified, + ( &(const binstruction[100]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x740A000E, // 0003 JMPT R2 #0013 + 0x88080302, // 0004 GETMBR R2 R1 K2 + 0x540E001F, // 0005 LDINT R3 32 + 0x28080403, // 0006 GE R2 R2 R3 + 0x780A000A, // 0007 JMPF R2 #0013 + 0x88080302, // 0008 GETMBR R2 R1 K2 + 0x540E0023, // 0009 LDINT R3 36 + 0x18080403, // 000A LE R2 R2 R3 + 0x780A0006, // 000B JMPF R2 #0013 + 0xB80A0600, // 000C GETNGBL R2 K3 + 0x8C080504, // 000D GETMET R2 R2 K4 + 0x58100005, // 000E LDCONST R4 K5 + 0x58140006, // 000F LDCONST R5 K6 + 0x7C080600, // 0010 CALL R2 3 + 0x50080000, // 0011 LDBOOL R2 0 0 + 0x80040400, // 0012 RET 1 R2 + 0xB80A0600, // 0013 GETNGBL R2 K3 + 0x8C080504, // 0014 GETMET R2 R2 K4 + 0xB8121000, // 0015 GETNGBL R4 K8 + 0x8C100909, // 0016 GETMET R4 R4 K9 + 0x5C180200, // 0017 MOVE R6 R1 + 0x7C100400, // 0018 CALL R4 2 + 0x00120E04, // 0019 ADD R4 K7 R4 + 0x5814000A, // 001A LDCONST R5 K10 + 0x7C080600, // 001B CALL R2 3 + 0x88080302, // 001C GETMBR R2 R1 K2 + 0x540E000F, // 001D LDINT R3 16 + 0x1C080403, // 001E EQ R2 R2 R3 + 0x780A0000, // 001F JMPF R2 #0021 + 0x70020040, // 0020 JMP #0062 + 0x88080302, // 0021 GETMBR R2 R1 K2 + 0x540E001F, // 0022 LDINT R3 32 + 0x1C080403, // 0023 EQ R2 R2 R3 + 0x780A0004, // 0024 JMPF R2 #002A + 0x8C08010B, // 0025 GETMET R2 R0 K11 + 0x5C100200, // 0026 MOVE R4 R1 + 0x7C080400, // 0027 CALL R2 2 + 0x80040400, // 0028 RET 1 R2 + 0x70020037, // 0029 JMP #0062 + 0x88080302, // 002A GETMBR R2 R1 K2 + 0x540E0021, // 002B LDINT R3 34 + 0x1C080403, // 002C EQ R2 R2 R3 + 0x780A0004, // 002D JMPF R2 #0033 + 0x8C08010C, // 002E GETMET R2 R0 K12 + 0x5C100200, // 002F MOVE R4 R1 + 0x7C080400, // 0030 CALL R2 2 + 0x80040400, // 0031 RET 1 R2 + 0x7002002E, // 0032 JMP #0062 + 0x88080302, // 0033 GETMBR R2 R1 K2 + 0x540E0023, // 0034 LDINT R3 36 + 0x1C080403, // 0035 EQ R2 R2 R3 + 0x780A0004, // 0036 JMPF R2 #003C + 0x8C08010D, // 0037 GETMET R2 R0 K13 + 0x5C100200, // 0038 MOVE R4 R1 + 0x7C080400, // 0039 CALL R2 2 + 0x80040400, // 003A RET 1 R2 + 0x70020025, // 003B JMP #0062 + 0x88080302, // 003C GETMBR R2 R1 K2 + 0x540E002F, // 003D LDINT R3 48 + 0x1C080403, // 003E EQ R2 R2 R3 + 0x780A0004, // 003F JMPF R2 #0045 + 0x8C08010E, // 0040 GETMET R2 R0 K14 + 0x5C100200, // 0041 MOVE R4 R1 + 0x7C080400, // 0042 CALL R2 2 + 0x80040400, // 0043 RET 1 R2 + 0x7002001C, // 0044 JMP #0062 + 0x88080302, // 0045 GETMBR R2 R1 K2 + 0x540E0031, // 0046 LDINT R3 50 + 0x1C080403, // 0047 EQ R2 R2 R3 + 0x780A0004, // 0048 JMPF R2 #004E + 0x8C08010F, // 0049 GETMET R2 R0 K15 + 0x5C100200, // 004A MOVE R4 R1 + 0x7C080400, // 004B CALL R2 2 + 0x80040400, // 004C RET 1 R2 + 0x70020013, // 004D JMP #0062 + 0x88080302, // 004E GETMBR R2 R1 K2 + 0x540E003F, // 004F LDINT R3 64 + 0x1C080403, // 0050 EQ R2 R2 R3 + 0x780A0004, // 0051 JMPF R2 #0057 + 0x8C080110, // 0052 GETMET R2 R0 K16 + 0x5C100200, // 0053 MOVE R4 R1 + 0x7C080400, // 0054 CALL R2 2 + 0x80040400, // 0055 RET 1 R2 + 0x7002000A, // 0056 JMP #0062 + 0xA40A2200, // 0057 IMPORT R2 K17 + 0xB80E0600, // 0058 GETNGBL R3 K3 + 0x8C0C0704, // 0059 GETMET R3 R3 K4 + 0x8C140512, // 005A GETMET R5 R2 K18 + 0x581C0013, // 005B LDCONST R7 K19 + 0x88200302, // 005C GETMBR R8 R1 K2 + 0x7C140600, // 005D CALL R5 3 + 0x58180006, // 005E LDCONST R6 K6 + 0x7C0C0600, // 005F CALL R3 3 + 0x500C0000, // 0060 LDBOOL R3 0 0 + 0x80040600, // 0061 RET 1 R3 + 0x50080000, // 0062 LDBOOL R2 0 0 + 0x80040400, // 0063 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +be_local_closure(Matter_Commisioning_Context_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 }) ) ); @@ -1493,6 +1423,280 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: add_session +********************************************************************/ +be_local_closure(Matter_Commisioning_Context_add_session, /* name */ + be_nested_proto( + 15, /* nstack */ + 7, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(format), + /* K4 */ be_nested_str_weak(MTR_X3A_X20add_session_X20local_session_id_X3D_X25i_X20initiator_session_id_X3D_X25i), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(device), + /* K7 */ be_nested_str_weak(sessions), + /* K8 */ be_nested_str_weak(create_session), + /* K9 */ be_nested_str_weak(set_keys), + }), + be_str_weak(add_session), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0xA41E0000, // 0000 IMPORT R7 K0 + 0xB8220200, // 0001 GETNGBL R8 K1 + 0x8C201102, // 0002 GETMET R8 R8 K2 + 0x8C280F03, // 0003 GETMET R10 R7 K3 + 0x58300004, // 0004 LDCONST R12 K4 + 0x5C340200, // 0005 MOVE R13 R1 + 0x5C380400, // 0006 MOVE R14 R2 + 0x7C280800, // 0007 CALL R10 4 + 0x582C0005, // 0008 LDCONST R11 K5 + 0x7C200600, // 0009 CALL R8 3 + 0x88200106, // 000A GETMBR R8 R0 K6 + 0x88201107, // 000B GETMBR R8 R8 K7 + 0x8C201108, // 000C GETMET R8 R8 K8 + 0x5C280200, // 000D MOVE R10 R1 + 0x5C2C0400, // 000E MOVE R11 R2 + 0x7C200600, // 000F CALL R8 3 + 0x8C241109, // 0010 GETMET R9 R8 K9 + 0x5C2C0600, // 0011 MOVE R11 R3 + 0x5C300800, // 0012 MOVE R12 R4 + 0x5C340A00, // 0013 MOVE R13 R5 + 0x5C380C00, // 0014 MOVE R14 R6 + 0x7C240A00, // 0015 CALL R9 5 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_Pake3 +********************************************************************/ +be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* 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[34]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(opcode), + /* K2 */ be_nested_str_weak(local_session_id), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(protocol_id), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake3_X20message), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), + /* K10 */ be_nested_str_weak(send_status_report), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(matter), + /* K13 */ be_nested_str_weak(Pake3), + /* K14 */ be_nested_str_weak(parse), + /* K15 */ be_nested_str_weak(raw), + /* K16 */ be_nested_str_weak(app_payload_idx), + /* K17 */ be_nested_str_weak(cA), + /* K18 */ be_nested_str_weak(spake), + /* K19 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received), + /* K20 */ be_nested_str_weak(created), + /* K21 */ be_nested_str_weak(rtc), + /* K22 */ be_nested_str_weak(utc), + /* K23 */ be_nested_str_weak(HKDF_SHA256), + /* K24 */ be_nested_str_weak(derive), + /* K25 */ be_nested_str_weak(Ke), + /* K26 */ be_nested_str_weak(fromstring), + /* K27 */ be_nested_str_weak(SEKeys_Info), + /* K28 */ be_nested_str_weak(I2RKey), + /* K29 */ be_nested_str_weak(R2IKey), + /* K30 */ be_nested_str_weak(AttestationChallenge), + /* K31 */ be_nested_str_weak(add_session), + /* K32 */ be_nested_str_weak(future_local_session_id), + /* K33 */ be_nested_str_weak(future_initiator_session_id), + }), + be_str_weak(parse_Pake3), + &be_const_str_solidified, + ( &(const binstruction[112]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0x54120023, // 0002 LDINT R4 36 + 0x200C0604, // 0003 NE R3 R3 R4 + 0x740E0005, // 0004 JMPT R3 #000B + 0x880C0302, // 0005 GETMBR R3 R1 K2 + 0x200C0703, // 0006 NE R3 R3 K3 + 0x740E0002, // 0007 JMPT R3 #000B + 0x880C0304, // 0008 GETMBR R3 R1 K4 + 0x200C0703, // 0009 NE R3 R3 K3 + 0x780E0012, // 000A JMPF R3 #001E + 0xB80E0A00, // 000B GETNGBL R3 K5 + 0x8C0C0706, // 000C GETMET R3 R3 K6 + 0x58140007, // 000D LDCONST R5 K7 + 0x58180008, // 000E LDCONST R6 K8 + 0x7C0C0600, // 000F CALL R3 3 + 0xB80E0A00, // 0010 GETNGBL R3 K5 + 0x8C0C0706, // 0011 GETMET R3 R3 K6 + 0x58140009, // 0012 LDCONST R5 K9 + 0x58180008, // 0013 LDCONST R6 K8 + 0x7C0C0600, // 0014 CALL R3 3 + 0x8C0C010A, // 0015 GETMET R3 R0 K10 + 0x5C140200, // 0016 MOVE R5 R1 + 0x5818000B, // 0017 LDCONST R6 K11 + 0x581C0003, // 0018 LDCONST R7 K3 + 0x58200008, // 0019 LDCONST R8 K8 + 0x50240000, // 001A LDBOOL R9 0 0 + 0x7C0C0C00, // 001B CALL R3 6 + 0x50100000, // 001C LDBOOL R4 0 0 + 0x80040800, // 001D RET 1 R4 + 0xB80E1800, // 001E GETNGBL R3 K12 + 0x8C0C070D, // 001F GETMET R3 R3 K13 + 0x7C0C0200, // 0020 CALL R3 1 + 0x8C0C070E, // 0021 GETMET R3 R3 K14 + 0x8814030F, // 0022 GETMBR R5 R1 K15 + 0x88180310, // 0023 GETMBR R6 R1 K16 + 0x7C0C0600, // 0024 CALL R3 3 + 0x88100711, // 0025 GETMBR R4 R3 K17 + 0x90022204, // 0026 SETMBR R0 K17 R4 + 0x88100111, // 0027 GETMBR R4 R0 K17 + 0x88140112, // 0028 GETMBR R5 R0 K18 + 0x88140B11, // 0029 GETMBR R5 R5 K17 + 0x20100805, // 002A NE R4 R4 R5 + 0x78120012, // 002B JMPF R4 #003F + 0xB8120A00, // 002C GETNGBL R4 K5 + 0x8C100906, // 002D GETMET R4 R4 K6 + 0x58180013, // 002E LDCONST R6 K19 + 0x581C0008, // 002F LDCONST R7 K8 + 0x7C100600, // 0030 CALL R4 3 + 0xB8120A00, // 0031 GETNGBL R4 K5 + 0x8C100906, // 0032 GETMET R4 R4 K6 + 0x58180009, // 0033 LDCONST R6 K9 + 0x581C0008, // 0034 LDCONST R7 K8 + 0x7C100600, // 0035 CALL R4 3 + 0x8C10010A, // 0036 GETMET R4 R0 K10 + 0x5C180200, // 0037 MOVE R6 R1 + 0x581C000B, // 0038 LDCONST R7 K11 + 0x58200003, // 0039 LDCONST R8 K3 + 0x58240008, // 003A LDCONST R9 K8 + 0x50280000, // 003B LDBOOL R10 0 0 + 0x7C100C00, // 003C CALL R4 6 + 0x50140000, // 003D LDBOOL R5 0 0 + 0x80040A00, // 003E RET 1 R5 + 0xB8120A00, // 003F GETNGBL R4 K5 + 0x8C100915, // 0040 GETMET R4 R4 K21 + 0x7C100200, // 0041 CALL R4 1 + 0x94100916, // 0042 GETIDX R4 R4 K22 + 0x90022804, // 0043 SETMBR R0 K20 R4 + 0x8C100517, // 0044 GETMET R4 R2 K23 + 0x7C100200, // 0045 CALL R4 1 + 0x8C100918, // 0046 GETMET R4 R4 K24 + 0x88180119, // 0047 GETMBR R6 R0 K25 + 0x601C0015, // 0048 GETGBL R7 G21 + 0x7C1C0000, // 0049 CALL R7 0 + 0x60200015, // 004A GETGBL R8 G21 + 0x7C200000, // 004B CALL R8 0 + 0x8C20111A, // 004C GETMET R8 R8 K26 + 0x8828011B, // 004D GETMBR R10 R0 K27 + 0x7C200400, // 004E CALL R8 2 + 0x5426002F, // 004F LDINT R9 48 + 0x7C100A00, // 0050 CALL R4 5 + 0x5416000E, // 0051 LDINT R5 15 + 0x40160605, // 0052 CONNECT R5 K3 R5 + 0x94140805, // 0053 GETIDX R5 R4 R5 + 0x90023805, // 0054 SETMBR R0 K28 R5 + 0x5416000F, // 0055 LDINT R5 16 + 0x541A001E, // 0056 LDINT R6 31 + 0x40140A06, // 0057 CONNECT R5 R5 R6 + 0x94140805, // 0058 GETIDX R5 R4 R5 + 0x90023A05, // 0059 SETMBR R0 K29 R5 + 0x5416001F, // 005A LDINT R5 32 + 0x541A002E, // 005B LDINT R6 47 + 0x40140A06, // 005C CONNECT R5 R5 R6 + 0x94140805, // 005D GETIDX R5 R4 R5 + 0x90023C05, // 005E SETMBR R0 K30 R5 + 0x8C14010A, // 005F GETMET R5 R0 K10 + 0x5C1C0200, // 0060 MOVE R7 R1 + 0x58200003, // 0061 LDCONST R8 K3 + 0x58240003, // 0062 LDCONST R9 K3 + 0x58280003, // 0063 LDCONST R10 K3 + 0x502C0000, // 0064 LDBOOL R11 0 0 + 0x7C140C00, // 0065 CALL R5 6 + 0x8C18011F, // 0066 GETMET R6 R0 K31 + 0x88200120, // 0067 GETMBR R8 R0 K32 + 0x88240121, // 0068 GETMBR R9 R0 K33 + 0x8828011C, // 0069 GETMBR R10 R0 K28 + 0x882C011D, // 006A GETMBR R11 R0 K29 + 0x8830011E, // 006B GETMBR R12 R0 K30 + 0x88340114, // 006C GETMBR R13 R0 K20 + 0x7C180E00, // 006D CALL R6 7 + 0x50180200, // 006E LDBOOL R6 1 0 + 0x80040C00, // 006F RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_StatusReport +********************************************************************/ +be_local_closure(Matter_Commisioning_Context_parse_StatusReport, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20), + /* K4 */ be_nested_str_weak(raw), + /* K5 */ be_nested_str_weak(app_payload_idx), + /* K6 */ be_const_int(2147483647), + /* K7 */ be_nested_str_weak(tohex), + /* K8 */ be_const_int(2), + }), + be_str_weak(parse_StatusReport), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0xB80E0200, // 0001 GETNGBL R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x88140305, // 0003 GETMBR R5 R1 K5 + 0x40140B06, // 0004 CONNECT R5 R5 K6 + 0x88180304, // 0005 GETMBR R6 R1 K4 + 0x94140C05, // 0006 GETIDX R5 R6 R5 + 0x8C140B07, // 0007 GETMET R5 R5 K7 + 0x7C140200, // 0008 CALL R5 1 + 0x00160605, // 0009 ADD R5 K3 R5 + 0x58180008, // 000A LDCONST R6 K8 + 0x7C0C0600, // 000B CALL R3 3 + 0x500C0000, // 000C LDBOOL R3 0 0 + 0x80040600, // 000D RET 1 R3 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: parse_Sigma1 ********************************************************************/ @@ -2469,391 +2673,68 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */ /******************************************************************** -** Solidified function: parse_StatusReport +** Solidified function: send_status_report ********************************************************************/ -be_local_closure(Matter_Commisioning_Context_parse_StatusReport, /* name */ +be_local_closure(Matter_Commisioning_Context_send_status_report, /* name */ be_nested_proto( - 7, /* nstack */ - 2, /* argc */ + 16, /* nstack */ + 6, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20), - /* K4 */ be_nested_str_weak(raw), - /* K5 */ be_nested_str_weak(app_payload_idx), - /* K6 */ be_const_int(2147483647), - /* K7 */ be_nested_str_weak(tohex), - /* K8 */ be_const_int(2), + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(build_response), + /* K1 */ be_nested_str_weak(add), + /* K2 */ be_const_int(2), + /* K3 */ be_nested_str_weak(encode_frame), + /* K4 */ be_nested_str_weak(responder), + /* K5 */ be_nested_str_weak(send_response), + /* K6 */ be_nested_str_weak(remote_ip), + /* K7 */ be_nested_str_weak(remote_port), + /* K8 */ be_nested_str_weak(message_counter), + /* K9 */ be_nested_str_weak(session), + /* K10 */ be_nested_str_weak(local_session_id), }), - be_str_weak(parse_StatusReport), + be_str_weak(send_status_report), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x88140305, // 0003 GETMBR R5 R1 K5 - 0x40140B06, // 0004 CONNECT R5 R5 K6 - 0x88180304, // 0005 GETMBR R6 R1 K4 - 0x94140C05, // 0006 GETIDX R5 R6 R5 - 0x8C140B07, // 0007 GETMET R5 R5 K7 - 0x7C140200, // 0008 CALL R5 1 - 0x00160605, // 0009 ADD R5 K3 R5 - 0x58180008, // 000A LDCONST R6 K8 - 0x7C0C0600, // 000B CALL R3 3 - 0x500C0000, // 000C LDBOOL R3 0 0 - 0x80040600, // 000D RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_fabric_by_destination_id -********************************************************************/ -be_local_closure(Matter_Commisioning_Context_find_fabric_by_destination_id, /* name */ - be_nested_proto( - 14, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20SEARCHING_X3A_X20destinationId_X3D), - /* K4 */ be_nested_str_weak(tohex), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(device), - /* K7 */ be_nested_str_weak(sessions), - /* K8 */ be_nested_str_weak(fabrics), - /* K9 */ be_nested_str_weak(noc), - /* K10 */ be_nested_str_weak(fabric_id), - /* K11 */ be_nested_str_weak(device_id), - /* K12 */ be_nested_str_weak(get_ca_pub), - /* K13 */ be_nested_str_weak(get_ipk_group_key), - /* K14 */ be_nested_str_weak(MTR_X3A_X20SIGMA1_X3A_X20destinationMessage_X3D), - /* K15 */ be_nested_str_weak(MTR_X3A_X20SIGMA1_X3A_X20key_ipk_X3D), - /* K16 */ be_nested_str_weak(HMAC_SHA256), - /* K17 */ be_nested_str_weak(update), - /* K18 */ be_nested_str_weak(out), - /* K19 */ be_nested_str_weak(MTR_X3A_X20SIGMA1_X3A_X20candidateDestinationId_X3D), - /* K20 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(find_fabric_by_destination_id), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 - 0x8C180304, // 0003 GETMET R6 R1 K4 - 0x7C180200, // 0004 CALL R6 1 - 0x001A0606, // 0005 ADD R6 K3 R6 - 0x581C0005, // 0006 LDCONST R7 K5 - 0x7C100600, // 0007 CALL R4 3 - 0x60100010, // 0008 GETGBL R4 G16 - 0x88140106, // 0009 GETMBR R5 R0 K6 - 0x88140B07, // 000A GETMBR R5 R5 K7 - 0x88140B08, // 000B GETMBR R5 R5 K8 - 0x7C100200, // 000C CALL R4 1 - 0xA8020039, // 000D EXBLK 0 #0048 - 0x5C140800, // 000E MOVE R5 R4 - 0x7C140000, // 000F CALL R5 0 - 0x88180B09, // 0010 GETMBR R6 R5 K9 - 0x4C1C0000, // 0011 LDNIL R7 - 0x1C180C07, // 0012 EQ R6 R6 R7 - 0x741A0007, // 0013 JMPT R6 #001C - 0x88180B0A, // 0014 GETMBR R6 R5 K10 - 0x4C1C0000, // 0015 LDNIL R7 - 0x1C180C07, // 0016 EQ R6 R6 R7 - 0x741A0003, // 0017 JMPT R6 #001C - 0x88180B0B, // 0018 GETMBR R6 R5 K11 - 0x4C1C0000, // 0019 LDNIL R7 - 0x1C180C07, // 001A EQ R6 R6 R7 - 0x781A0000, // 001B JMPF R6 #001D - 0x7001FFF0, // 001C JMP #000E - 0x8C180B0C, // 001D GETMET R6 R5 K12 - 0x7C180200, // 001E CALL R6 1 - 0x00180406, // 001F ADD R6 R2 R6 - 0x881C0B0A, // 0020 GETMBR R7 R5 K10 - 0x00180C07, // 0021 ADD R6 R6 R7 - 0x881C0B0B, // 0022 GETMBR R7 R5 K11 - 0x00180C07, // 0023 ADD R6 R6 R7 - 0x8C1C0B0D, // 0024 GETMET R7 R5 K13 - 0x7C1C0200, // 0025 CALL R7 1 - 0xB8220200, // 0026 GETNGBL R8 K1 - 0x8C201102, // 0027 GETMET R8 R8 K2 - 0x8C280D04, // 0028 GETMET R10 R6 K4 - 0x7C280200, // 0029 CALL R10 1 - 0x002A1C0A, // 002A ADD R10 K14 R10 - 0x582C0005, // 002B LDCONST R11 K5 - 0x7C200600, // 002C CALL R8 3 - 0xB8220200, // 002D GETNGBL R8 K1 - 0x8C201102, // 002E GETMET R8 R8 K2 - 0x8C280F04, // 002F GETMET R10 R7 K4 - 0x7C280200, // 0030 CALL R10 1 - 0x002A1E0A, // 0031 ADD R10 K15 R10 - 0x542E0003, // 0032 LDINT R11 4 - 0x7C200600, // 0033 CALL R8 3 - 0x8C200710, // 0034 GETMET R8 R3 K16 - 0x5C280E00, // 0035 MOVE R10 R7 - 0x7C200400, // 0036 CALL R8 2 - 0x8C241111, // 0037 GETMET R9 R8 K17 - 0x5C2C0C00, // 0038 MOVE R11 R6 - 0x7C240400, // 0039 CALL R9 2 - 0x8C241112, // 003A GETMET R9 R8 K18 - 0x7C240200, // 003B CALL R9 1 - 0xB82A0200, // 003C GETNGBL R10 K1 - 0x8C281502, // 003D GETMET R10 R10 K2 - 0x8C301304, // 003E GETMET R12 R9 K4 - 0x7C300200, // 003F CALL R12 1 - 0x0032260C, // 0040 ADD R12 K19 R12 - 0x58340005, // 0041 LDCONST R13 K5 - 0x7C280600, // 0042 CALL R10 3 - 0x1C281201, // 0043 EQ R10 R9 R1 - 0x782A0001, // 0044 JMPF R10 #0047 - 0xA8040001, // 0045 EXBLK 1 1 - 0x80040A00, // 0046 RET 1 R5 - 0x7001FFC5, // 0047 JMP #000E - 0x58100014, // 0048 LDCONST R4 K20 - 0xAC100200, // 0049 CATCH R4 1 0 - 0xB0080000, // 004A RAISE 2 R0 R0 - 0x4C100000, // 004B LDNIL R4 - 0x80040800, // 004C RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -be_local_closure(Matter_Commisioning_Context_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: add_session -********************************************************************/ -be_local_closure(Matter_Commisioning_Context_add_session, /* name */ - be_nested_proto( - 15, /* nstack */ - 7, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(format), - /* K4 */ be_nested_str_weak(MTR_X3A_X20add_session_X20local_session_id_X3D_X25i_X20initiator_session_id_X3D_X25i), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(device), - /* K7 */ be_nested_str_weak(sessions), - /* K8 */ be_nested_str_weak(create_session), - /* K9 */ be_nested_str_weak(set_keys), - }), - be_str_weak(add_session), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0xA41E0000, // 0000 IMPORT R7 K0 - 0xB8220200, // 0001 GETNGBL R8 K1 - 0x8C201102, // 0002 GETMET R8 R8 K2 - 0x8C280F03, // 0003 GETMET R10 R7 K3 - 0x58300004, // 0004 LDCONST R12 K4 - 0x5C340200, // 0005 MOVE R13 R1 - 0x5C380400, // 0006 MOVE R14 R2 - 0x7C280800, // 0007 CALL R10 4 - 0x582C0005, // 0008 LDCONST R11 K5 + ( &(const binstruction[34]) { /* code */ + 0x8C180300, // 0000 GETMET R6 R1 K0 + 0x5422003F, // 0001 LDINT R8 64 + 0x5C240A00, // 0002 MOVE R9 R5 + 0x7C180600, // 0003 CALL R6 3 + 0x601C0015, // 0004 GETGBL R7 G21 + 0x7C1C0000, // 0005 CALL R7 0 + 0x8C200F01, // 0006 GETMET R8 R7 K1 + 0x5C280400, // 0007 MOVE R10 R2 + 0x582C0002, // 0008 LDCONST R11 K2 0x7C200600, // 0009 CALL R8 3 - 0x88200106, // 000A GETMBR R8 R0 K6 - 0x88201107, // 000B GETMBR R8 R8 K7 - 0x8C201108, // 000C GETMET R8 R8 K8 - 0x5C280200, // 000D MOVE R10 R1 - 0x5C2C0400, // 000E MOVE R11 R2 - 0x7C200600, // 000F CALL R8 3 - 0x8C241109, // 0010 GETMET R9 R8 K9 - 0x5C2C0600, // 0011 MOVE R11 R3 - 0x5C300800, // 0012 MOVE R12 R4 - 0x5C340A00, // 0013 MOVE R13 R5 - 0x5C380C00, // 0014 MOVE R14 R6 - 0x7C240A00, // 0015 CALL R9 5 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Matter_Commisioning_Context_init, /* 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[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(responder), - /* K2 */ be_nested_str_weak(device), - /* K3 */ be_nested_str_weak(y), - /* K4 */ be_nested_str_weak(random), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x90020201, // 0001 SETMBR R0 K1 R1 - 0x880C0302, // 0002 GETMBR R3 R1 K2 - 0x90020403, // 0003 SETMBR R0 K2 R3 - 0x8C0C0504, // 0004 GETMET R3 R2 K4 - 0x5416001F, // 0005 LDINT R5 32 - 0x7C0C0400, // 0006 CALL R3 2 - 0x90020603, // 0007 SETMBR R0 K3 R3 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_MsgCounterSyncRsp -********************************************************************/ -be_local_closure(Matter_Commisioning_Context_parse_MsgCounterSyncRsp, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(session), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(format), - /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20MsgCounterSyncRsp_X20not_X20implemented_X20_X25s), - /* K6 */ be_nested_str_weak(raw), - /* K7 */ be_nested_str_weak(app_payload_idx), - /* K8 */ be_const_int(2147483647), - /* K9 */ be_nested_str_weak(tohex), - /* K10 */ be_const_int(2), - }), - be_str_weak(parse_MsgCounterSyncRsp), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0xB8120400, // 0002 GETNGBL R4 K2 - 0x8C100903, // 0003 GETMET R4 R4 K3 - 0x8C180504, // 0004 GETMET R6 R2 K4 - 0x58200005, // 0005 LDCONST R8 K5 - 0x88240307, // 0006 GETMBR R9 R1 K7 - 0x40241308, // 0007 CONNECT R9 R9 K8 - 0x88280306, // 0008 GETMBR R10 R1 K6 - 0x94241409, // 0009 GETIDX R9 R10 R9 - 0x8C241309, // 000A GETMET R9 R9 K9 - 0x7C240200, // 000B CALL R9 1 - 0x7C180600, // 000C CALL R6 3 - 0x581C000A, // 000D LDCONST R7 K10 - 0x7C100600, // 000E CALL R4 3 - 0x50100000, // 000F LDBOOL R4 0 0 - 0x80040800, // 0010 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_MsgCounterSyncReq -********************************************************************/ -be_local_closure(Matter_Commisioning_Context_parse_MsgCounterSyncReq, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(session), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(format), - /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20MsgCounterSyncReq_X20not_X20implemented_X20_X25s), - /* K6 */ be_nested_str_weak(raw), - /* K7 */ be_nested_str_weak(app_payload_idx), - /* K8 */ be_const_int(2147483647), - /* K9 */ be_nested_str_weak(tohex), - /* K10 */ be_const_int(2), - }), - be_str_weak(parse_MsgCounterSyncReq), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0xB8120400, // 0002 GETNGBL R4 K2 - 0x8C100903, // 0003 GETMET R4 R4 K3 - 0x8C180504, // 0004 GETMET R6 R2 K4 - 0x58200005, // 0005 LDCONST R8 K5 - 0x88240307, // 0006 GETMBR R9 R1 K7 - 0x40241308, // 0007 CONNECT R9 R9 K8 - 0x88280306, // 0008 GETMBR R10 R1 K6 - 0x94241409, // 0009 GETIDX R9 R10 R9 - 0x8C241309, // 000A GETMET R9 R9 K9 - 0x7C240200, // 000B CALL R9 1 - 0x7C180600, // 000C CALL R6 3 - 0x581C000A, // 000D LDCONST R7 K10 - 0x7C100600, // 000E CALL R4 3 - 0x50100000, // 000F LDBOOL R4 0 0 - 0x80040800, // 0010 RET 1 R4 + 0x8C200F01, // 000A GETMET R8 R7 K1 + 0x5C280600, // 000B MOVE R10 R3 + 0x542E0003, // 000C LDINT R11 4 + 0x7C200600, // 000D CALL R8 3 + 0x8C200F01, // 000E GETMET R8 R7 K1 + 0x5C280800, // 000F MOVE R10 R4 + 0x542E0003, // 0010 LDINT R11 4 + 0x7C200600, // 0011 CALL R8 3 + 0x8C200D03, // 0012 GETMET R8 R6 K3 + 0x5C280E00, // 0013 MOVE R10 R7 + 0x7C200400, // 0014 CALL R8 2 + 0x88240104, // 0015 GETMBR R9 R0 K4 + 0x8C241305, // 0016 GETMET R9 R9 K5 + 0x5C2C1000, // 0017 MOVE R11 R8 + 0x88300306, // 0018 GETMBR R12 R1 K6 + 0x88340307, // 0019 GETMBR R13 R1 K7 + 0x78160001, // 001A JMPF R5 #001D + 0x88380D08, // 001B GETMBR R14 R6 K8 + 0x70020000, // 001C JMP #001E + 0x4C380000, // 001D LDNIL R14 + 0x883C0309, // 001E GETMBR R15 R1 K9 + 0x883C1F0A, // 001F GETMBR R15 R15 K10 + 0x7C240C00, // 0020 CALL R9 6 + 0x80000000, // 0021 RET 0 }) ) ); @@ -2866,48 +2747,46 @@ be_local_closure(Matter_Commisioning_Context_parse_MsgCounterSyncReq, /* name be_local_class(Matter_Commisioning_Context, 20, NULL, - be_nested_map(40, + be_nested_map(38, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(cB, 30), be_const_var(11) }, - { be_const_key_weak(parse_MsgCounterSyncReq, 26), be_const_closure(Matter_Commisioning_Context_parse_MsgCounterSyncReq_closure) }, - { be_const_key_weak(pA, 24), be_const_var(8) }, - { be_const_key_weak(R2IKey, -1), be_const_var(18) }, - { be_const_key_weak(ResponderEph_pub, -1), be_const_var(14) }, - { be_const_key_weak(spake, 20), be_const_var(2) }, - { be_const_key_weak(SEKeys_Info, -1), be_nested_str_weak(SessionKeys) }, - { be_const_key_weak(process_incoming, 16), be_const_closure(Matter_Commisioning_Context_process_incoming_closure) }, - { be_const_key_weak(parse_PBKDFParamRequest, 29), be_const_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest_closure) }, { be_const_key_weak(send_status_report, -1), be_const_closure(Matter_Commisioning_Context_send_status_report_closure) }, - { be_const_key_weak(future_initiator_session_id, -1), be_const_var(3) }, - { be_const_key_weak(device, -1), be_const_var(1) }, - { be_const_key_weak(initiatorEph_pub, -1), be_const_var(15) }, - { be_const_key_weak(parse_Pake1, 34), be_const_closure(Matter_Commisioning_Context_parse_Pake1_closure) }, - { be_const_key_weak(parse_Sigma3, -1), be_const_closure(Matter_Commisioning_Context_parse_Sigma3_closure) }, - { be_const_key_weak(parse_Pake3, -1), be_const_closure(Matter_Commisioning_Context_parse_Pake3_closure) }, - { be_const_key_weak(I2RKey, -1), be_const_var(17) }, - { be_const_key_weak(cA, 14), be_const_var(10) }, - { be_const_key_weak(parse_Sigma1, -1), be_const_closure(Matter_Commisioning_Context_parse_Sigma1_closure) }, - { be_const_key_weak(created, 18), be_const_var(16) }, - { be_const_key_weak(Matter_Context_Prefix, -1), be_nested_str_weak(CHIP_X20PAKE_X20V1_X20Commissioning) }, - { be_const_key_weak(parse_StatusReport, -1), be_const_closure(Matter_Commisioning_Context_parse_StatusReport_closure) }, + { be_const_key_weak(cB, -1), be_const_var(11) }, + { be_const_key_weak(TBEData3_Nonce, 37), be_nested_str_weak(NCASE_Sigma3N) }, { be_const_key_weak(find_fabric_by_destination_id, -1), be_const_closure(Matter_Commisioning_Context_find_fabric_by_destination_id_closure) }, - { be_const_key_weak(pB, 22), be_const_var(9) }, - { be_const_key_weak(AttestationChallenge, 39), be_const_var(19) }, - { be_const_key_weak(every_second, -1), be_const_closure(Matter_Commisioning_Context_every_second_closure) }, - { be_const_key_weak(add_session, -1), be_const_closure(Matter_Commisioning_Context_add_session_closure) }, - { be_const_key_weak(TBEData3_Nonce, 1), be_nested_str_weak(NCASE_Sigma3N) }, - { be_const_key_weak(PBKDFParamRequest, -1), be_const_var(5) }, - { be_const_key_weak(ResponderEph_priv, -1), be_const_var(13) }, - { be_const_key_weak(PBKDFParamResponse, 4), be_const_var(6) }, - { be_const_key_weak(future_local_session_id, -1), be_const_var(4) }, - { be_const_key_weak(TBEData2_Nonce, -1), be_nested_str_weak(NCASE_Sigma2N) }, + { be_const_key_weak(parse_Sigma1, 3), be_const_closure(Matter_Commisioning_Context_parse_Sigma1_closure) }, { be_const_key_weak(responder, -1), be_const_var(0) }, - { be_const_key_weak(Ke, 12), be_const_var(12) }, + { be_const_key_weak(parse_PBKDFParamRequest, -1), be_const_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest_closure) }, + { be_const_key_weak(parse_Pake1, -1), be_const_closure(Matter_Commisioning_Context_parse_Pake1_closure) }, + { be_const_key_weak(process_incoming, -1), be_const_closure(Matter_Commisioning_Context_process_incoming_closure) }, + { be_const_key_weak(future_initiator_session_id, 2), be_const_var(3) }, + { be_const_key_weak(cA, -1), be_const_var(10) }, + { be_const_key_weak(parse_Sigma3, -1), be_const_closure(Matter_Commisioning_Context_parse_Sigma3_closure) }, + { be_const_key_weak(ResponderEph_priv, -1), be_const_var(13) }, { be_const_key_weak(init, -1), be_const_closure(Matter_Commisioning_Context_init_closure) }, - { be_const_key_weak(y, -1), be_const_var(7) }, - { be_const_key_weak(S3K_Info, 10), be_nested_str_weak(Sigma3) }, - { be_const_key_weak(parse_MsgCounterSyncRsp, -1), be_const_closure(Matter_Commisioning_Context_parse_MsgCounterSyncRsp_closure) }, + { be_const_key_weak(parse_StatusReport, -1), be_const_closure(Matter_Commisioning_Context_parse_StatusReport_closure) }, + { be_const_key_weak(device, 8), be_const_var(1) }, + { be_const_key_weak(PBKDFParamResponse, -1), be_const_var(6) }, + { be_const_key_weak(future_local_session_id, 18), be_const_var(4) }, + { be_const_key_weak(pB, 11), be_const_var(9) }, + { be_const_key_weak(add_session, -1), be_const_closure(Matter_Commisioning_Context_add_session_closure) }, + { be_const_key_weak(Ke, -1), be_const_var(12) }, + { be_const_key_weak(SEKeys_Info, -1), be_nested_str_weak(SessionKeys) }, { be_const_key_weak(S2K_Info, -1), be_nested_str_weak(Sigma2) }, + { be_const_key_weak(created, 26), be_const_var(16) }, + { be_const_key_weak(AttestationChallenge, 21), be_const_var(19) }, + { be_const_key_weak(R2IKey, 20), be_const_var(18) }, + { be_const_key_weak(parse_Pake3, -1), be_const_closure(Matter_Commisioning_Context_parse_Pake3_closure) }, + { be_const_key_weak(S3K_Info, -1), be_nested_str_weak(Sigma3) }, + { be_const_key_weak(pA, 16), be_const_var(8) }, + { be_const_key_weak(Matter_Context_Prefix, 14), be_nested_str_weak(CHIP_X20PAKE_X20V1_X20Commissioning) }, + { be_const_key_weak(PBKDFParamRequest, -1), be_const_var(5) }, + { be_const_key_weak(every_second, 10), be_const_closure(Matter_Commisioning_Context_every_second_closure) }, + { be_const_key_weak(TBEData2_Nonce, -1), be_nested_str_weak(NCASE_Sigma2N) }, + { be_const_key_weak(initiatorEph_pub, 4), be_const_var(15) }, + { be_const_key_weak(y, -1), be_const_var(7) }, + { be_const_key_weak(spake, 0), be_const_var(2) }, + { be_const_key_weak(ResponderEph_pub, 1), be_const_var(14) }, + { be_const_key_weak(I2RKey, -1), be_const_var(17) }, })), be_str_weak(Matter_Commisioning_Context) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h new file mode 100644 index 000000000..967c09a27 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h @@ -0,0 +1,246 @@ +/* Solidification of Matter_Control_Message.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Control_Message; + +/******************************************************************** +** Solidified function: parse_MsgCounterSyncRsp +********************************************************************/ +be_local_closure(Matter_Control_Message_parse_MsgCounterSyncRsp, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(session), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(format), + /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncRsp_X20_X2A_X20Not_X20implemented_X20_X25s), + /* K6 */ be_nested_str_weak(raw), + /* K7 */ be_nested_str_weak(app_payload_idx), + /* K8 */ be_const_int(2147483647), + /* K9 */ be_nested_str_weak(tohex), + /* K10 */ be_const_int(2), + }), + be_str_weak(parse_MsgCounterSyncRsp), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0xB8120400, // 0002 GETNGBL R4 K2 + 0x8C100903, // 0003 GETMET R4 R4 K3 + 0x8C180504, // 0004 GETMET R6 R2 K4 + 0x58200005, // 0005 LDCONST R8 K5 + 0x88240307, // 0006 GETMBR R9 R1 K7 + 0x40241308, // 0007 CONNECT R9 R9 K8 + 0x88280306, // 0008 GETMBR R10 R1 K6 + 0x94241409, // 0009 GETIDX R9 R10 R9 + 0x8C241309, // 000A GETMET R9 R9 K9 + 0x7C240200, // 000B CALL R9 1 + 0x7C180600, // 000C CALL R6 3 + 0x581C000A, // 000D LDCONST R7 K10 + 0x7C100600, // 000E CALL R4 3 + 0x50100000, // 000F LDBOOL R4 0 0 + 0x80040800, // 0010 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_MsgCounterSyncReq +********************************************************************/ +be_local_closure(Matter_Control_Message_parse_MsgCounterSyncReq, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(session), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(format), + /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncReq_X20_X2A_X20Not_X20implemented_X20_X25s), + /* K6 */ be_nested_str_weak(raw), + /* K7 */ be_nested_str_weak(app_payload_idx), + /* K8 */ be_const_int(2147483647), + /* K9 */ be_nested_str_weak(tohex), + /* K10 */ be_const_int(2), + }), + be_str_weak(parse_MsgCounterSyncReq), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0xB8120400, // 0002 GETNGBL R4 K2 + 0x8C100903, // 0003 GETMET R4 R4 K3 + 0x8C180504, // 0004 GETMET R6 R2 K4 + 0x58200005, // 0005 LDCONST R8 K5 + 0x88240307, // 0006 GETMBR R9 R1 K7 + 0x40241308, // 0007 CONNECT R9 R9 K8 + 0x88280306, // 0008 GETMBR R10 R1 K6 + 0x94241409, // 0009 GETIDX R9 R10 R9 + 0x8C241309, // 000A GETMET R9 R9 K9 + 0x7C240200, // 000B CALL R9 1 + 0x7C180600, // 000C CALL R6 3 + 0x581C000A, // 000D LDCONST R7 K10 + 0x7C100600, // 000E CALL R4 3 + 0x50100000, // 000F LDBOOL R4 0 0 + 0x80040800, // 0010 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(Matter_Control_Message_init, /* 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[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(responder), + /* K2 */ be_nested_str_weak(device), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x90020201, // 0001 SETMBR R0 K1 R1 + 0x880C0302, // 0002 GETMBR R3 R1 K2 + 0x90020403, // 0003 SETMBR R0 K2 R3 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_incoming_control_message +********************************************************************/ +be_local_closure(Matter_Control_Message_process_incoming_control_message, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20received_X20control_X20message_X20), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(inspect), + /* K5 */ be_const_int(2), + /* K6 */ be_nested_str_weak(opcode), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(parse_MsgCounterSyncReq), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(parse_MsgCounterSyncRsp), + /* K11 */ be_nested_str_weak(string), + /* K12 */ be_nested_str_weak(format), + /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28control_X20message_X29_X20_X2502X), + }), + be_str_weak(process_incoming_control_message), + &be_const_str_solidified, + ( &(const binstruction[38]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0xB8120600, // 0002 GETNGBL R4 K3 + 0x8C100904, // 0003 GETMET R4 R4 K4 + 0x5C180200, // 0004 MOVE R6 R1 + 0x7C100400, // 0005 CALL R4 2 + 0x00120404, // 0006 ADD R4 K2 R4 + 0x58140005, // 0007 LDCONST R5 K5 + 0x7C080600, // 0008 CALL R2 3 + 0x88080306, // 0009 GETMBR R2 R1 K6 + 0x1C080507, // 000A EQ R2 R2 K7 + 0x780A0004, // 000B JMPF R2 #0011 + 0x8C080108, // 000C GETMET R2 R0 K8 + 0x5C100200, // 000D MOVE R4 R1 + 0x7C080400, // 000E CALL R2 2 + 0x80040400, // 000F RET 1 R2 + 0x70020012, // 0010 JMP #0024 + 0x88080306, // 0011 GETMBR R2 R1 K6 + 0x1C080509, // 0012 EQ R2 R2 K9 + 0x780A0004, // 0013 JMPF R2 #0019 + 0x8C08010A, // 0014 GETMET R2 R0 K10 + 0x5C100200, // 0015 MOVE R4 R1 + 0x7C080400, // 0016 CALL R2 2 + 0x80040400, // 0017 RET 1 R2 + 0x7002000A, // 0018 JMP #0024 + 0xA40A1600, // 0019 IMPORT R2 K11 + 0xB80E0000, // 001A GETNGBL R3 K0 + 0x8C0C0701, // 001B GETMET R3 R3 K1 + 0x8C14050C, // 001C GETMET R5 R2 K12 + 0x581C000D, // 001D LDCONST R7 K13 + 0x88200306, // 001E GETMBR R8 R1 K6 + 0x7C140600, // 001F CALL R5 3 + 0x58180005, // 0020 LDCONST R6 K5 + 0x7C0C0600, // 0021 CALL R3 3 + 0x500C0000, // 0022 LDBOOL R3 0 0 + 0x80040600, // 0023 RET 1 R3 + 0x50080000, // 0024 LDBOOL R2 0 0 + 0x80040400, // 0025 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Control_Message +********************************************************************/ +be_local_class(Matter_Control_Message, + 2, + NULL, + be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(parse_MsgCounterSyncRsp, -1), be_const_closure(Matter_Control_Message_parse_MsgCounterSyncRsp_closure) }, + { be_const_key_weak(responder, 2), be_const_var(0) }, + { be_const_key_weak(parse_MsgCounterSyncReq, -1), be_const_closure(Matter_Control_Message_parse_MsgCounterSyncReq_closure) }, + { be_const_key_weak(init, 4), be_const_closure(Matter_Control_Message_init_closure) }, + { be_const_key_weak(device, -1), be_const_var(1) }, + { be_const_key_weak(process_incoming_control_message, -1), be_const_closure(Matter_Control_Message_process_incoming_control_message_closure) }, + })), + be_str_weak(Matter_Control_Message) +); +/*******************************************************************/ + +void be_load_Matter_Control_Message_class(bvm *vm) { + be_pushntvclass(vm, &be_class_Matter_Control_Message); + be_setglobal(vm, "Matter_Control_Message"); + be_pop(vm, 1); +} +/********************************************************************/ +/* End of solidification */ 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 96b829de9..615fccd4d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -2058,7 +2058,7 @@ be_local_closure(Matter_IM_send_subscribe_update, /* name */ ********************************************************************/ be_local_closure(Matter_IM_send_ack_now, /* name */ be_nested_proto( - 14, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2066,67 +2066,21 @@ be_local_closure(Matter_IM_send_ack_now, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(x_flag_r), - /* K1 */ be_nested_str_weak(build_standalone_ack), - /* K2 */ be_nested_str_weak(encode_frame), - /* K3 */ be_nested_str_weak(encrypt), - /* K4 */ be_nested_str_weak(string), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(format), - /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_now_X20_X20_X20_X28_X256i_X29_X20rack_X3D_X25i_X20id_X3D_X25i_X20_X5B_X25s_X5D_X3A_X25i), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(local_session_id), - /* K11 */ be_nested_str_weak(ack_message_counter), - /* K12 */ be_nested_str_weak(message_counter), - /* K13 */ be_nested_str_weak(remote_ip), - /* K14 */ be_nested_str_weak(remote_port), - /* K15 */ be_const_int(3), - /* K16 */ be_nested_str_weak(_message_handler), - /* K17 */ be_nested_str_weak(send_response), - /* K18 */ be_nested_str_weak(raw), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(_message_handler), + /* K2 */ be_nested_str_weak(send_encrypted_ack), }), be_str_weak(send_ack_now), &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ + ( &(const binstruction[ 7]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x780A001F, // 0001 JMPF R2 #0022 - 0x8C080301, // 0002 GETMET R2 R1 K1 - 0x50100000, // 0003 LDBOOL R4 0 0 - 0x7C080400, // 0004 CALL R2 2 - 0x8C0C0502, // 0005 GETMET R3 R2 K2 - 0x7C0C0200, // 0006 CALL R3 1 - 0x8C0C0503, // 0007 GETMET R3 R2 K3 - 0x7C0C0200, // 0008 CALL R3 1 - 0xA40E0800, // 0009 IMPORT R3 K4 - 0xB8120A00, // 000A GETNGBL R4 K5 - 0x8C100906, // 000B GETMET R4 R4 K6 - 0x8C180707, // 000C GETMET R6 R3 K7 - 0x58200008, // 000D LDCONST R8 K8 - 0x88240509, // 000E GETMBR R9 R2 K9 - 0x8824130A, // 000F GETMBR R9 R9 K10 - 0x8828050B, // 0010 GETMBR R10 R2 K11 - 0x882C050C, // 0011 GETMBR R11 R2 K12 - 0x8830050D, // 0012 GETMBR R12 R2 K13 - 0x8834050E, // 0013 GETMBR R13 R2 K14 - 0x7C180E00, // 0014 CALL R6 7 - 0x581C000F, // 0015 LDCONST R7 K15 - 0x7C100600, // 0016 CALL R4 3 - 0x88100309, // 0017 GETMBR R4 R1 K9 - 0x88100910, // 0018 GETMBR R4 R4 K16 - 0x8C100911, // 0019 GETMET R4 R4 K17 - 0x88180512, // 001A GETMBR R6 R2 K18 - 0x881C050D, // 001B GETMBR R7 R2 K13 - 0x8820050E, // 001C GETMBR R8 R2 K14 - 0x4C240000, // 001D LDNIL R9 - 0x88280509, // 001E GETMBR R10 R2 K9 - 0x8828150A, // 001F GETMBR R10 R10 K10 - 0x7C100C00, // 0020 CALL R4 6 - 0x70020001, // 0021 JMP #0024 - 0x50080200, // 0022 LDBOOL R2 1 0 - 0x80040400, // 0023 RET 1 R2 - 0x80000000, // 0024 RET 0 + 0x88080501, // 0001 GETMBR R2 R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x5C100200, // 0003 MOVE R4 R1 + 0x50140000, // 0004 LDBOOL R5 0 0 + 0x7C080600, // 0005 CALL R2 3 + 0x80000000, // 0006 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h index 9aedef268..0b32129cd 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 @@ -976,7 +976,7 @@ be_local_class(Matter_IM_ReportData, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(send_im, 1), be_const_closure(Matter_IM_ReportData_send_im_closure) }, { be_const_key_weak(init, -1), be_const_closure(Matter_IM_ReportData_init_closure) }, - { be_const_key_weak(MAX_MESSAGE, -1), be_const_int(1000) }, + { be_const_key_weak(MAX_MESSAGE, -1), be_const_int(1200) }, })), be_str_weak(Matter_IM_ReportData) ); 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 7db26fd10..4646fd645 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h @@ -6,6 +6,122 @@ extern const bclass be_class_Matter_MessageHandler; +/******************************************************************** +** Solidified function: send_response +********************************************************************/ +be_local_closure(Matter_MessageHandler_send_response, /* name */ + be_nested_proto( + 13, /* nstack */ + 6, /* 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(device), + /* K1 */ be_nested_str_weak(msg_send), + }), + be_str_weak(send_response), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88180100, // 0000 GETMBR R6 R0 K0 + 0x8C180D01, // 0001 GETMET R6 R6 K1 + 0x5C200200, // 0002 MOVE R8 R1 + 0x5C240400, // 0003 MOVE R9 R2 + 0x5C280600, // 0004 MOVE R10 R3 + 0x5C2C0800, // 0005 MOVE R11 R4 + 0x5C300A00, // 0006 MOVE R12 R5 + 0x7C180C00, // 0007 CALL R6 6 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_encrypted_ack +********************************************************************/ +be_local_closure(Matter_MessageHandler_send_encrypted_ack, /* name */ + be_nested_proto( + 14, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[20]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(x_flag_r), + /* K2 */ be_nested_str_weak(build_standalone_ack), + /* K3 */ be_nested_str_weak(encode_frame), + /* K4 */ be_nested_str_weak(encrypt), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(format), + /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X2A_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s), + /* K9 */ be_nested_str_weak(session), + /* K10 */ be_nested_str_weak(local_session_id), + /* K11 */ be_nested_str_weak(ack_message_counter), + /* K12 */ be_nested_str_weak(message_counter), + /* K13 */ be_nested_str_weak(_X7Breliable_X7D), + /* K14 */ be_nested_str_weak(), + /* K15 */ be_const_int(3), + /* K16 */ be_nested_str_weak(send_response), + /* K17 */ be_nested_str_weak(raw), + /* K18 */ be_nested_str_weak(remote_ip), + /* K19 */ be_nested_str_weak(remote_port), + }), + be_str_weak(send_encrypted_ack), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x88100301, // 0001 GETMBR R4 R1 K1 + 0x78120020, // 0002 JMPF R4 #0024 + 0x8C100302, // 0003 GETMET R4 R1 K2 + 0x5C180400, // 0004 MOVE R6 R2 + 0x7C100400, // 0005 CALL R4 2 + 0x8C140903, // 0006 GETMET R5 R4 K3 + 0x7C140200, // 0007 CALL R5 1 + 0x8C140904, // 0008 GETMET R5 R4 K4 + 0x7C140200, // 0009 CALL R5 1 + 0xB8160A00, // 000A GETNGBL R5 K5 + 0x8C140B06, // 000B GETMET R5 R5 K6 + 0x8C1C0707, // 000C GETMET R7 R3 K7 + 0x58240008, // 000D LDCONST R9 K8 + 0x88280909, // 000E GETMBR R10 R4 K9 + 0x8828150A, // 000F GETMBR R10 R10 K10 + 0x882C090B, // 0010 GETMBR R11 R4 K11 + 0x8830090C, // 0011 GETMBR R12 R4 K12 + 0x780A0001, // 0012 JMPF R2 #0015 + 0x5834000D, // 0013 LDCONST R13 K13 + 0x70020000, // 0014 JMP #0016 + 0x5834000E, // 0015 LDCONST R13 K14 + 0x7C1C0C00, // 0016 CALL R7 6 + 0x5820000F, // 0017 LDCONST R8 K15 + 0x7C140600, // 0018 CALL R5 3 + 0x8C140110, // 0019 GETMET R5 R0 K16 + 0x881C0911, // 001A GETMBR R7 R4 K17 + 0x88200912, // 001B GETMBR R8 R4 K18 + 0x88240913, // 001C GETMBR R9 R4 K19 + 0x780A0001, // 001D JMPF R2 #0020 + 0x8828090C, // 001E GETMBR R10 R4 K12 + 0x70020000, // 001F JMP #0021 + 0x4C280000, // 0020 LDNIL R10 + 0x882C0909, // 0021 GETMBR R11 R4 K9 + 0x882C170A, // 0022 GETMBR R11 R11 K10 + 0x7C140C00, // 0023 CALL R5 6 + 0x80000000, // 0024 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: every_second ********************************************************************/ @@ -40,6 +156,587 @@ be_local_closure(Matter_MessageHandler_every_second, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: send_simple_ack +********************************************************************/ +be_local_closure(Matter_MessageHandler_send_simple_ack, /* name */ + be_nested_proto( + 14, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[19]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(x_flag_r), + /* K2 */ be_nested_str_weak(build_standalone_ack), + /* K3 */ be_nested_str_weak(encode_frame), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(format), + /* K7 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s), + /* K8 */ be_nested_str_weak(session), + /* K9 */ be_nested_str_weak(local_session_id), + /* K10 */ be_nested_str_weak(ack_message_counter), + /* K11 */ be_nested_str_weak(message_counter), + /* K12 */ be_nested_str_weak(_X7Breliable_X7D), + /* K13 */ be_nested_str_weak(), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str_weak(send_response), + /* K16 */ be_nested_str_weak(raw), + /* K17 */ be_nested_str_weak(remote_ip), + /* K18 */ be_nested_str_weak(remote_port), + }), + be_str_weak(send_simple_ack), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x88100301, // 0001 GETMBR R4 R1 K1 + 0x7812001E, // 0002 JMPF R4 #0022 + 0x8C100302, // 0003 GETMET R4 R1 K2 + 0x5C180400, // 0004 MOVE R6 R2 + 0x7C100400, // 0005 CALL R4 2 + 0x8C140903, // 0006 GETMET R5 R4 K3 + 0x7C140200, // 0007 CALL R5 1 + 0xB8160800, // 0008 GETNGBL R5 K4 + 0x8C140B05, // 0009 GETMET R5 R5 K5 + 0x8C1C0706, // 000A GETMET R7 R3 K6 + 0x58240007, // 000B LDCONST R9 K7 + 0x88280908, // 000C GETMBR R10 R4 K8 + 0x88281509, // 000D GETMBR R10 R10 K9 + 0x882C090A, // 000E GETMBR R11 R4 K10 + 0x8830090B, // 000F GETMBR R12 R4 K11 + 0x780A0001, // 0010 JMPF R2 #0013 + 0x5834000C, // 0011 LDCONST R13 K12 + 0x70020000, // 0012 JMP #0014 + 0x5834000D, // 0013 LDCONST R13 K13 + 0x7C1C0C00, // 0014 CALL R7 6 + 0x5820000E, // 0015 LDCONST R8 K14 + 0x7C140600, // 0016 CALL R5 3 + 0x8C14010F, // 0017 GETMET R5 R0 K15 + 0x881C0910, // 0018 GETMBR R7 R4 K16 + 0x88200911, // 0019 GETMBR R8 R4 K17 + 0x88240912, // 001A GETMBR R9 R4 K18 + 0x780A0001, // 001B JMPF R2 #001E + 0x8828090B, // 001C GETMBR R10 R4 K11 + 0x70020000, // 001D JMP #001F + 0x4C280000, // 001E LDNIL R10 + 0x882C0908, // 001F GETMBR R11 R4 K8 + 0x882C1709, // 0020 GETMBR R11 R11 K9 + 0x7C140C00, // 0021 CALL R5 6 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: msg_received +********************************************************************/ +be_local_closure(Matter_MessageHandler_msg_received, /* name */ + be_nested_proto( + 24, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[76]) { /* 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_X20MessageHandler_X3A_X3Amsg_received_X20raw_X3D), + /* K4 */ be_nested_str_weak(tohex), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(Frame), + /* K7 */ be_nested_str_weak(decode_header), + /* K8 */ be_nested_str_weak(sec_p), + /* K9 */ be_nested_str_weak(MTR_X3A_X20CONTROL_X20MESSAGE_X3D), + /* K10 */ be_nested_str_weak(inspect), + /* K11 */ be_nested_str_weak(device), + /* K12 */ be_nested_str_weak(sessions), + /* K13 */ be_nested_str_weak(find_session_source_id_unsecure), + /* K14 */ be_nested_str_weak(source_node_id), + /* K15 */ be_nested_str_weak(MTR_X3A_X20find_X20session_X20by_X20source_node_id_X20_X3D_X20), + /* K16 */ be_nested_str_weak(_X20session_id_X20_X3D_X20), + /* K17 */ be_nested_str_weak(local_session_id), + /* K18 */ be_const_int(2), + /* K19 */ be_nested_str_weak(control_message), + /* K20 */ be_nested_str_weak(process_incoming_control_message), + /* K21 */ be_const_int(0), + /* K22 */ be_nested_str_weak(sec_sesstype), + /* K23 */ be_const_int(3), + /* K24 */ be_nested_str_weak(_ip), + /* K25 */ be_nested_str_weak(_port), + /* K26 */ be_nested_str_weak(_message_handler), + /* K27 */ be_nested_str_weak(session), + /* K28 */ be_nested_str_weak(_counter_insecure_rcv), + /* K29 */ be_nested_str_weak(validate), + /* K30 */ be_nested_str_weak(message_counter), + /* K31 */ be_nested_str_weak(format), + /* K32 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20unencrypted_X20message_X20_X3D_X20_X25i_X20ref_X20_X3D_X20_X25i), + /* K33 */ be_nested_str_weak(val), + /* K34 */ be_nested_str_weak(send_simple_ack), + /* K35 */ be_nested_str_weak(decode_payload), + /* K36 */ be_nested_str_weak(received_ack), + /* K37 */ be_nested_str_weak(ack_message_counter), + /* K38 */ be_nested_str_weak(opcode), + /* K39 */ be_nested_str_weak(get_opcode_name), + /* K40 */ be_nested_str_weak(0x_X2502X), + /* K41 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20rid_X3D_X25i_X20exch_X3D_X25i_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K42 */ be_nested_str_weak(exchange_id), + /* K43 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i), + /* K44 */ be_nested_str_weak(x_flag_r), + /* K45 */ be_nested_str_weak(_X7Breliable_X7D_X20), + /* K46 */ be_nested_str_weak(), + /* K47 */ be_nested_str_weak(commissioning), + /* K48 */ be_nested_str_weak(process_incoming), + /* K49 */ be_nested_str_weak(MTR_X3A_X20decode_X20header_X3A_X20local_session_id_X3D_X25i_X20message_counter_X3D_X25i), + /* K50 */ be_nested_str_weak(get_session_by_local_session_id), + /* K51 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D), + /* K52 */ be_nested_str_weak(counter_rcv_validate), + /* K53 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20encrypted_X20message_X20_X3D_X20), + /* K54 */ be_nested_str_weak(_X20counter_X3D), + /* K55 */ be_nested_str_weak(counter_rcv), + /* K56 */ be_nested_str_weak(send_encrypted_ack), + /* K57 */ be_nested_str_weak(decrypt), + /* K58 */ be_nested_str_weak(raw), + /* K59 */ be_nested_str_weak(payload_idx), + /* K60 */ be_const_int(1), + /* K61 */ be_nested_str_weak(MTR_X3A_X20idx_X3D_X25i_X20clear_X3D_X25s), + /* K62 */ be_nested_str_weak(MTR_X3A_X20_X3E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Decrypted_X20message_X3A_X20protocol_id_X3A), + /* K63 */ be_nested_str_weak(protocol_id), + /* K64 */ be_nested_str_weak(_X20opcode_X3D), + /* K65 */ be_nested_str_weak(_X20exchange_id_X3D), + /* K66 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20_X5B_X2502X_X2F_X2502X_X5D_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i), + /* K67 */ be_nested_str_weak(MTR_X3A_X20PROTOCOL_ID_SECURE_CHANNEL_X20), + /* K68 */ be_nested_str_weak(im), + /* K69 */ be_nested_str_weak(process_incoming_ack), + /* K70 */ be_nested_str_weak(send_enqueued), + /* K71 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A), + /* K72 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20), + /* K73 */ be_nested_str_weak(_X3B), + /* K74 */ be_nested_str_weak(debug), + /* K75 */ be_nested_str_weak(traceback), + }), + be_str_weak(msg_received), + &be_const_str_solidified, + ( &(const binstruction[403]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x50140000, // 0001 LDBOOL R5 0 0 + 0xA8020179, // 0002 EXBLK 0 #017D + 0xB81A0200, // 0003 GETNGBL R6 K1 + 0x8C180D02, // 0004 GETMET R6 R6 K2 + 0x8C200304, // 0005 GETMET R8 R1 K4 + 0x7C200200, // 0006 CALL R8 1 + 0x00220608, // 0007 ADD R8 K3 R8 + 0x54260003, // 0008 LDINT R9 4 + 0x7C180600, // 0009 CALL R6 3 + 0xB81A0A00, // 000A GETNGBL R6 K5 + 0x8C180D06, // 000B GETMET R6 R6 K6 + 0x5C200000, // 000C MOVE R8 R0 + 0x5C240200, // 000D MOVE R9 R1 + 0x5C280400, // 000E MOVE R10 R2 + 0x5C2C0600, // 000F MOVE R11 R3 + 0x7C180A00, // 0010 CALL R6 5 + 0x8C1C0D07, // 0011 GETMET R7 R6 K7 + 0x7C1C0200, // 0012 CALL R7 1 + 0x5C200E00, // 0013 MOVE R8 R7 + 0x74220002, // 0014 JMPT R8 #0018 + 0x50200000, // 0015 LDBOOL R8 0 0 + 0xA8040001, // 0016 EXBLK 1 1 + 0x80041000, // 0017 RET 1 R8 + 0x88200D08, // 0018 GETMBR R8 R6 K8 + 0x78220021, // 0019 JMPF R8 #003C + 0xB8220200, // 001A GETNGBL R8 K1 + 0x8C201102, // 001B GETMET R8 R8 K2 + 0xB82A0A00, // 001C GETNGBL R10 K5 + 0x8C28150A, // 001D GETMET R10 R10 K10 + 0x5C300C00, // 001E MOVE R12 R6 + 0x7C280400, // 001F CALL R10 2 + 0x002A120A, // 0020 ADD R10 K9 R10 + 0x7C200400, // 0021 CALL R8 2 + 0x8820010B, // 0022 GETMBR R8 R0 K11 + 0x8820110C, // 0023 GETMBR R8 R8 K12 + 0x8C20110D, // 0024 GETMET R8 R8 K13 + 0x88280D0E, // 0025 GETMBR R10 R6 K14 + 0x542E0059, // 0026 LDINT R11 90 + 0x7C200600, // 0027 CALL R8 3 + 0xB8260200, // 0028 GETNGBL R9 K1 + 0x8C241302, // 0029 GETMET R9 R9 K2 + 0x602C0008, // 002A GETGBL R11 G8 + 0x88300D0E, // 002B GETMBR R12 R6 K14 + 0x7C2C0200, // 002C CALL R11 1 + 0x002E1E0B, // 002D ADD R11 K15 R11 + 0x002C1710, // 002E ADD R11 R11 K16 + 0x60300008, // 002F GETGBL R12 G8 + 0x88341111, // 0030 GETMBR R13 R8 K17 + 0x7C300200, // 0031 CALL R12 1 + 0x002C160C, // 0032 ADD R11 R11 R12 + 0x58300012, // 0033 LDCONST R12 K18 + 0x7C240600, // 0034 CALL R9 3 + 0x88240113, // 0035 GETMBR R9 R0 K19 + 0x8C241314, // 0036 GETMET R9 R9 K20 + 0x5C2C0C00, // 0037 MOVE R11 R6 + 0x7C240400, // 0038 CALL R9 2 + 0xA8040001, // 0039 EXBLK 1 1 + 0x80041200, // 003A RET 1 R9 + 0x7002013C, // 003B JMP #0179 + 0x88200D11, // 003C GETMBR R8 R6 K17 + 0x1C201115, // 003D EQ R8 R8 K21 + 0x7822007D, // 003E JMPF R8 #00BD + 0x88200D16, // 003F GETMBR R8 R6 K22 + 0x1C201115, // 0040 EQ R8 R8 K21 + 0x7822007A, // 0041 JMPF R8 #00BD + 0x8820010B, // 0042 GETMBR R8 R0 K11 + 0x8820110C, // 0043 GETMBR R8 R8 K12 + 0x8C20110D, // 0044 GETMET R8 R8 K13 + 0x88280D0E, // 0045 GETMBR R10 R6 K14 + 0x542E0059, // 0046 LDINT R11 90 + 0x7C200600, // 0047 CALL R8 3 + 0xB8260200, // 0048 GETNGBL R9 K1 + 0x8C241302, // 0049 GETMET R9 R9 K2 + 0x602C0008, // 004A GETGBL R11 G8 + 0x88300D0E, // 004B GETMBR R12 R6 K14 + 0x7C2C0200, // 004C CALL R11 1 + 0x002E1E0B, // 004D ADD R11 K15 R11 + 0x002C1710, // 004E ADD R11 R11 K16 + 0x60300008, // 004F GETGBL R12 G8 + 0x88341111, // 0050 GETMBR R13 R8 K17 + 0x7C300200, // 0051 CALL R12 1 + 0x002C160C, // 0052 ADD R11 R11 R12 + 0x58300017, // 0053 LDCONST R12 K23 + 0x7C240600, // 0054 CALL R9 3 + 0x780A0000, // 0055 JMPF R2 #0057 + 0x90223002, // 0056 SETMBR R8 K24 R2 + 0x780E0000, // 0057 JMPF R3 #0059 + 0x90223203, // 0058 SETMBR R8 K25 R3 + 0x90223400, // 0059 SETMBR R8 K26 R0 + 0x901A3608, // 005A SETMBR R6 K27 R8 + 0x8824111C, // 005B GETMBR R9 R8 K28 + 0x8C24131D, // 005C GETMET R9 R9 K29 + 0x882C0D1E, // 005D GETMBR R11 R6 K30 + 0x50300000, // 005E LDBOOL R12 0 0 + 0x7C240600, // 005F CALL R9 3 + 0x74260011, // 0060 JMPT R9 #0073 + 0xB8260200, // 0061 GETNGBL R9 K1 + 0x8C241302, // 0062 GETMET R9 R9 K2 + 0x8C2C091F, // 0063 GETMET R11 R4 K31 + 0x58340020, // 0064 LDCONST R13 K32 + 0x88380D1E, // 0065 GETMBR R14 R6 K30 + 0x883C111C, // 0066 GETMBR R15 R8 K28 + 0x8C3C1F21, // 0067 GETMET R15 R15 K33 + 0x7C3C0200, // 0068 CALL R15 1 + 0x7C2C0800, // 0069 CALL R11 4 + 0x58300017, // 006A LDCONST R12 K23 + 0x7C240600, // 006B CALL R9 3 + 0x8C240122, // 006C GETMET R9 R0 K34 + 0x5C2C0C00, // 006D MOVE R11 R6 + 0x50300000, // 006E LDBOOL R12 0 0 + 0x7C240600, // 006F CALL R9 3 + 0x50240000, // 0070 LDBOOL R9 0 0 + 0xA8040001, // 0071 EXBLK 1 1 + 0x80041200, // 0072 RET 1 R9 + 0x8C240D23, // 0073 GETMET R9 R6 K35 + 0x7C240200, // 0074 CALL R9 1 + 0x74260002, // 0075 JMPT R9 #0079 + 0x50240000, // 0076 LDBOOL R9 0 0 + 0xA8040001, // 0077 EXBLK 1 1 + 0x80041200, // 0078 RET 1 R9 + 0x8824010B, // 0079 GETMBR R9 R0 K11 + 0x8C241324, // 007A GETMET R9 R9 K36 + 0x882C0D25, // 007B GETMBR R11 R6 K37 + 0x7C240400, // 007C CALL R9 2 + 0x88240D26, // 007D GETMBR R9 R6 K38 + 0x542A000F, // 007E LDINT R10 16 + 0x2024120A, // 007F NE R9 R9 R10 + 0x78260018, // 0080 JMPF R9 #009A + 0xB8260A00, // 0081 GETNGBL R9 K5 + 0x8C241327, // 0082 GETMET R9 R9 K39 + 0x882C0D26, // 0083 GETMBR R11 R6 K38 + 0x7C240400, // 0084 CALL R9 2 + 0x5C281200, // 0085 MOVE R10 R9 + 0x742A0004, // 0086 JMPT R10 #008C + 0x8C28091F, // 0087 GETMET R10 R4 K31 + 0x58300028, // 0088 LDCONST R12 K40 + 0x88340D26, // 0089 GETMBR R13 R6 K38 + 0x7C280600, // 008A CALL R10 3 + 0x5C241400, // 008B MOVE R9 R10 + 0xB82A0200, // 008C GETNGBL R10 K1 + 0x8C281502, // 008D GETMET R10 R10 K2 + 0x8C30091F, // 008E GETMET R12 R4 K31 + 0x58380029, // 008F LDCONST R14 K41 + 0x883C1111, // 0090 GETMBR R15 R8 K17 + 0x5C401200, // 0091 MOVE R16 R9 + 0x88440D1E, // 0092 GETMBR R17 R6 K30 + 0x88480D2A, // 0093 GETMBR R18 R6 K42 + 0x5C4C0400, // 0094 MOVE R19 R2 + 0x5C500600, // 0095 MOVE R20 R3 + 0x7C301000, // 0096 CALL R12 8 + 0x58340012, // 0097 LDCONST R13 K18 + 0x7C280600, // 0098 CALL R10 3 + 0x70020013, // 0099 JMP #00AE + 0xB8260200, // 009A GETNGBL R9 K1 + 0x8C241302, // 009B GETMET R9 R9 K2 + 0x8C2C091F, // 009C GETMET R11 R4 K31 + 0x5834002B, // 009D LDCONST R13 K43 + 0x88381111, // 009E GETMBR R14 R8 K17 + 0x883C0D1E, // 009F GETMBR R15 R6 K30 + 0x88400D2C, // 00A0 GETMBR R16 R6 K44 + 0x78420001, // 00A1 JMPF R16 #00A4 + 0x5840002D, // 00A2 LDCONST R16 K45 + 0x70020000, // 00A3 JMP #00A5 + 0x5840002E, // 00A4 LDCONST R16 K46 + 0x88440D2A, // 00A5 GETMBR R17 R6 K42 + 0x60480008, // 00A6 GETGBL R18 G8 + 0x884C0D25, // 00A7 GETMBR R19 R6 K37 + 0x7C480200, // 00A8 CALL R18 1 + 0x5C4C0400, // 00A9 MOVE R19 R2 + 0x5C500600, // 00AA MOVE R20 R3 + 0x7C2C1200, // 00AB CALL R11 9 + 0x58300017, // 00AC LDCONST R12 K23 + 0x7C240600, // 00AD CALL R9 3 + 0x8824012F, // 00AE GETMBR R9 R0 K47 + 0x8C241330, // 00AF GETMET R9 R9 K48 + 0x5C2C0C00, // 00B0 MOVE R11 R6 + 0x7C240400, // 00B1 CALL R9 2 + 0x5C141200, // 00B2 MOVE R5 R9 + 0x5C240A00, // 00B3 MOVE R9 R5 + 0x74260003, // 00B4 JMPT R9 #00B9 + 0x8C240122, // 00B5 GETMET R9 R0 K34 + 0x5C2C0C00, // 00B6 MOVE R11 R6 + 0x50300000, // 00B7 LDBOOL R12 0 0 + 0x7C240600, // 00B8 CALL R9 3 + 0x50240200, // 00B9 LDBOOL R9 1 0 + 0xA8040001, // 00BA EXBLK 1 1 + 0x80041200, // 00BB RET 1 R9 + 0x700200BB, // 00BC JMP #0179 + 0xB8220200, // 00BD GETNGBL R8 K1 + 0x8C201102, // 00BE GETMET R8 R8 K2 + 0x8C28091F, // 00BF GETMET R10 R4 K31 + 0x58300031, // 00C0 LDCONST R12 K49 + 0x88340D11, // 00C1 GETMBR R13 R6 K17 + 0x88380D1E, // 00C2 GETMBR R14 R6 K30 + 0x7C280800, // 00C3 CALL R10 4 + 0x582C0017, // 00C4 LDCONST R11 K23 + 0x7C200600, // 00C5 CALL R8 3 + 0x8820010B, // 00C6 GETMBR R8 R0 K11 + 0x8820110C, // 00C7 GETMBR R8 R8 K12 + 0x8C201132, // 00C8 GETMET R8 R8 K50 + 0x88280D11, // 00C9 GETMBR R10 R6 K17 + 0x7C200400, // 00CA CALL R8 2 + 0x4C240000, // 00CB LDNIL R9 + 0x1C241009, // 00CC EQ R9 R8 R9 + 0x7826000A, // 00CD JMPF R9 #00D9 + 0xB8260200, // 00CE GETNGBL R9 K1 + 0x8C241302, // 00CF GETMET R9 R9 K2 + 0x602C0008, // 00D0 GETGBL R11 G8 + 0x88300D11, // 00D1 GETMBR R12 R6 K17 + 0x7C2C0200, // 00D2 CALL R11 1 + 0x002E660B, // 00D3 ADD R11 K51 R11 + 0x58300012, // 00D4 LDCONST R12 K18 + 0x7C240600, // 00D5 CALL R9 3 + 0x50240000, // 00D6 LDBOOL R9 0 0 + 0xA8040001, // 00D7 EXBLK 1 1 + 0x80041200, // 00D8 RET 1 R9 + 0x780A0000, // 00D9 JMPF R2 #00DB + 0x90223002, // 00DA SETMBR R8 K24 R2 + 0x780E0000, // 00DB JMPF R3 #00DD + 0x90223203, // 00DC SETMBR R8 K25 R3 + 0x90223400, // 00DD SETMBR R8 K26 R0 + 0x901A3608, // 00DE SETMBR R6 K27 R8 + 0x8C241134, // 00DF GETMET R9 R8 K52 + 0x882C0D1E, // 00E0 GETMBR R11 R6 K30 + 0x50300200, // 00E1 LDBOOL R12 1 0 + 0x7C240600, // 00E2 CALL R9 3 + 0x74260013, // 00E3 JMPT R9 #00F8 + 0xB8260200, // 00E4 GETNGBL R9 K1 + 0x8C241302, // 00E5 GETMET R9 R9 K2 + 0x602C0008, // 00E6 GETGBL R11 G8 + 0x88300D1E, // 00E7 GETMBR R12 R6 K30 + 0x7C2C0200, // 00E8 CALL R11 1 + 0x002E6A0B, // 00E9 ADD R11 K53 R11 + 0x002C1736, // 00EA ADD R11 R11 K54 + 0x60300008, // 00EB GETGBL R12 G8 + 0x88341137, // 00EC GETMBR R13 R8 K55 + 0x7C300200, // 00ED CALL R12 1 + 0x002C160C, // 00EE ADD R11 R11 R12 + 0x58300017, // 00EF LDCONST R12 K23 + 0x7C240600, // 00F0 CALL R9 3 + 0x8C240138, // 00F1 GETMET R9 R0 K56 + 0x5C2C0C00, // 00F2 MOVE R11 R6 + 0x50300000, // 00F3 LDBOOL R12 0 0 + 0x7C240600, // 00F4 CALL R9 3 + 0x50240000, // 00F5 LDBOOL R9 0 0 + 0xA8040001, // 00F6 EXBLK 1 1 + 0x80041200, // 00F7 RET 1 R9 + 0x8C240D39, // 00F8 GETMET R9 R6 K57 + 0x7C240200, // 00F9 CALL R9 1 + 0x5C281200, // 00FA MOVE R10 R9 + 0x742A0002, // 00FB JMPT R10 #00FF + 0x50280000, // 00FC LDBOOL R10 0 0 + 0xA8040001, // 00FD EXBLK 1 1 + 0x80041400, // 00FE RET 1 R10 + 0x88280D3B, // 00FF GETMBR R10 R6 K59 + 0x0428153C, // 0100 SUB R10 R10 K60 + 0x402A2A0A, // 0101 CONNECT R10 K21 R10 + 0x882C0D3A, // 0102 GETMBR R11 R6 K58 + 0x9428160A, // 0103 GETIDX R10 R11 R10 + 0x901A740A, // 0104 SETMBR R6 K58 R10 + 0x88280D3A, // 0105 GETMBR R10 R6 K58 + 0x40281409, // 0106 CONNECT R10 R10 R9 + 0xB82A0200, // 0107 GETNGBL R10 K1 + 0x8C281502, // 0108 GETMET R10 R10 K2 + 0x8C30091F, // 0109 GETMET R12 R4 K31 + 0x5838003D, // 010A LDCONST R14 K61 + 0x883C0D3B, // 010B GETMBR R15 R6 K59 + 0x88400D3A, // 010C GETMBR R16 R6 K58 + 0x8C402104, // 010D GETMET R16 R16 K4 + 0x7C400200, // 010E CALL R16 1 + 0x7C300800, // 010F CALL R12 4 + 0x54360003, // 0110 LDINT R13 4 + 0x7C280600, // 0111 CALL R10 3 + 0x8C280D23, // 0112 GETMET R10 R6 K35 + 0x7C280200, // 0113 CALL R10 1 + 0xB82A0200, // 0114 GETNGBL R10 K1 + 0x8C281502, // 0115 GETMET R10 R10 K2 + 0x60300008, // 0116 GETGBL R12 G8 + 0x88340D3F, // 0117 GETMBR R13 R6 K63 + 0x7C300200, // 0118 CALL R12 1 + 0x00327C0C, // 0119 ADD R12 K62 R12 + 0x00301940, // 011A ADD R12 R12 K64 + 0x60340008, // 011B GETGBL R13 G8 + 0x88380D26, // 011C GETMBR R14 R6 K38 + 0x7C340200, // 011D CALL R13 1 + 0x0030180D, // 011E ADD R12 R12 R13 + 0x00301941, // 011F ADD R12 R12 K65 + 0x60340008, // 0120 GETGBL R13 G8 + 0x88380D2A, // 0121 GETMBR R14 R6 K42 + 0x543EFFFE, // 0122 LDINT R15 65535 + 0x2C381C0F, // 0123 AND R14 R14 R15 + 0x7C340200, // 0124 CALL R13 1 + 0x0030180D, // 0125 ADD R12 R12 R13 + 0x58340017, // 0126 LDCONST R13 K23 + 0x7C280600, // 0127 CALL R10 3 + 0xB82A0200, // 0128 GETNGBL R10 K1 + 0x8C281502, // 0129 GETMET R10 R10 K2 + 0x8C30091F, // 012A GETMET R12 R4 K31 + 0x58380042, // 012B LDCONST R14 K66 + 0x883C1111, // 012C GETMBR R15 R8 K17 + 0x88400D3F, // 012D GETMBR R16 R6 K63 + 0x88440D26, // 012E GETMBR R17 R6 K38 + 0x88480D1E, // 012F GETMBR R18 R6 K30 + 0x884C0D2A, // 0130 GETMBR R19 R6 K42 + 0x60500008, // 0131 GETGBL R20 G8 + 0x88540D25, // 0132 GETMBR R21 R6 K37 + 0x7C500200, // 0133 CALL R20 1 + 0x88540D2C, // 0134 GETMBR R21 R6 K44 + 0x78560001, // 0135 JMPF R21 #0138 + 0x5854002D, // 0136 LDCONST R21 K45 + 0x70020000, // 0137 JMP #0139 + 0x5854002E, // 0138 LDCONST R21 K46 + 0x5C580400, // 0139 MOVE R22 R2 + 0x5C5C0600, // 013A MOVE R23 R3 + 0x7C301600, // 013B CALL R12 11 + 0x58340017, // 013C LDCONST R13 K23 + 0x7C280600, // 013D CALL R10 3 + 0x8828010B, // 013E GETMBR R10 R0 K11 + 0x8C281524, // 013F GETMET R10 R10 K36 + 0x88300D25, // 0140 GETMBR R12 R6 K37 + 0x7C280400, // 0141 CALL R10 2 + 0x88280D3F, // 0142 GETMBR R10 R6 K63 + 0x1C2C1515, // 0143 EQ R11 R10 K21 + 0x782E0018, // 0144 JMPF R11 #015E + 0xB82E0200, // 0145 GETNGBL R11 K1 + 0x8C2C1702, // 0146 GETMET R11 R11 K2 + 0xB8360A00, // 0147 GETNGBL R13 K5 + 0x8C341B0A, // 0148 GETMET R13 R13 K10 + 0x5C3C0C00, // 0149 MOVE R15 R6 + 0x7C340400, // 014A CALL R13 2 + 0x0036860D, // 014B ADD R13 K67 R13 + 0x58380017, // 014C LDCONST R14 K23 + 0x7C2C0600, // 014D CALL R11 3 + 0x882C0D26, // 014E GETMBR R11 R6 K38 + 0x5432000F, // 014F LDINT R12 16 + 0x1C2C160C, // 0150 EQ R11 R11 R12 + 0x782E0009, // 0151 JMPF R11 #015C + 0x882C0144, // 0152 GETMBR R11 R0 K68 + 0x8C2C1745, // 0153 GETMET R11 R11 K69 + 0x5C340C00, // 0154 MOVE R13 R6 + 0x7C2C0400, // 0155 CALL R11 2 + 0x5C141600, // 0156 MOVE R5 R11 + 0x78160003, // 0157 JMPF R5 #015C + 0x882C0144, // 0158 GETMBR R11 R0 K68 + 0x8C2C1746, // 0159 GETMET R11 R11 K70 + 0x5C340000, // 015A MOVE R13 R0 + 0x7C2C0400, // 015B CALL R11 2 + 0x50140200, // 015C LDBOOL R5 1 0 + 0x7002001A, // 015D JMP #0179 + 0x1C2C153C, // 015E EQ R11 R10 K60 + 0x782E0010, // 015F JMPF R11 #0171 + 0x882C0144, // 0160 GETMBR R11 R0 K68 + 0x8C2C1730, // 0161 GETMET R11 R11 K48 + 0x5C340C00, // 0162 MOVE R13 R6 + 0x7C2C0400, // 0163 CALL R11 2 + 0x5C141600, // 0164 MOVE R5 R11 + 0x78160004, // 0165 JMPF R5 #016B + 0x882C0144, // 0166 GETMBR R11 R0 K68 + 0x8C2C1746, // 0167 GETMET R11 R11 K70 + 0x5C340000, // 0168 MOVE R13 R0 + 0x7C2C0400, // 0169 CALL R11 2 + 0x70020003, // 016A JMP #016F + 0x8C2C0138, // 016B GETMET R11 R0 K56 + 0x5C340C00, // 016C MOVE R13 R6 + 0x50380200, // 016D LDBOOL R14 1 0 + 0x7C2C0600, // 016E CALL R11 3 + 0x50140200, // 016F LDBOOL R5 1 0 + 0x70020007, // 0170 JMP #0179 + 0xB82E0200, // 0171 GETNGBL R11 K1 + 0x8C2C1702, // 0172 GETMET R11 R11 K2 + 0x60340008, // 0173 GETGBL R13 G8 + 0x5C381400, // 0174 MOVE R14 R10 + 0x7C340200, // 0175 CALL R13 1 + 0x00368E0D, // 0176 ADD R13 K71 R13 + 0x58380017, // 0177 LDCONST R14 K23 + 0x7C2C0600, // 0178 CALL R11 3 + 0xA8040001, // 0179 EXBLK 1 1 + 0x80040A00, // 017A RET 1 R5 + 0xA8040001, // 017B EXBLK 1 1 + 0x70020014, // 017C JMP #0192 + 0xAC180002, // 017D CATCH R6 0 2 + 0x70020011, // 017E JMP #0191 + 0xB8220200, // 017F GETNGBL R8 K1 + 0x8C201102, // 0180 GETMET R8 R8 K2 + 0x60280008, // 0181 GETGBL R10 G8 + 0x5C2C0C00, // 0182 MOVE R11 R6 + 0x7C280200, // 0183 CALL R10 1 + 0x002A900A, // 0184 ADD R10 K72 R10 + 0x00281549, // 0185 ADD R10 R10 K73 + 0x602C0008, // 0186 GETGBL R11 G8 + 0x5C300E00, // 0187 MOVE R12 R7 + 0x7C2C0200, // 0188 CALL R11 1 + 0x0028140B, // 0189 ADD R10 R10 R11 + 0x7C200400, // 018A CALL R8 2 + 0xA4229400, // 018B IMPORT R8 K74 + 0x8C24114B, // 018C GETMET R9 R8 K75 + 0x7C240200, // 018D CALL R9 1 + 0x50240000, // 018E LDBOOL R9 0 0 + 0x80041200, // 018F RET 1 R9 + 0x70020000, // 0190 JMP #0192 + 0xB0080000, // 0191 RAISE 2 R0 R0 + 0x80000000, // 0192 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: every_250ms ********************************************************************/ @@ -83,17 +780,19 @@ be_local_closure(Matter_MessageHandler_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(device), /* K1 */ be_nested_str_weak(commissioning), /* K2 */ be_nested_str_weak(matter), /* K3 */ be_nested_str_weak(Commisioning_Context), /* K4 */ be_nested_str_weak(im), /* K5 */ be_nested_str_weak(IM), + /* K6 */ be_nested_str_weak(control_message), + /* K7 */ be_nested_str_weak(Control_Message), }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ + ( &(const binstruction[17]) { /* code */ 0x90020001, // 0000 SETMBR R0 K0 R1 0xB80A0400, // 0001 GETNGBL R2 K2 0x8C080503, // 0002 GETMET R2 R2 K3 @@ -105,603 +804,12 @@ be_local_closure(Matter_MessageHandler_init, /* name */ 0x5C100200, // 0008 MOVE R4 R1 0x7C080400, // 0009 CALL R2 2 0x90020802, // 000A SETMBR R0 K4 R2 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: msg_received -********************************************************************/ -be_local_closure(Matter_MessageHandler_msg_received, /* name */ - be_nested_proto( - 24, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[78]) { /* 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_X20MessageHandler_X3A_X3Amsg_received_X20raw_X3D), - /* K4 */ be_nested_str_weak(tohex), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(Frame), - /* K7 */ be_nested_str_weak(decode_header), - /* K8 */ be_nested_str_weak(local_session_id), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(sec_sesstype), - /* K11 */ be_nested_str_weak(device), - /* K12 */ be_nested_str_weak(sessions), - /* K13 */ be_nested_str_weak(find_session_source_id_unsecure), - /* K14 */ be_nested_str_weak(source_node_id), - /* K15 */ be_nested_str_weak(MTR_X3A_X20find_X20session_X20by_X20source_node_id_X20_X3D_X20), - /* K16 */ be_nested_str_weak(_X20session_id_X20_X3D_X20), - /* K17 */ be_const_int(3), - /* K18 */ be_nested_str_weak(_ip), - /* K19 */ be_nested_str_weak(_port), - /* K20 */ be_nested_str_weak(_message_handler), - /* K21 */ be_nested_str_weak(session), - /* K22 */ be_nested_str_weak(_counter_insecure_rcv), - /* K23 */ be_nested_str_weak(validate), - /* K24 */ be_nested_str_weak(message_counter), - /* K25 */ be_nested_str_weak(format), - /* K26 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20unencrypted_X20message_X20_X3D_X20_X25i_X20ref_X20_X3D_X20_X25i), - /* K27 */ be_nested_str_weak(val), - /* K28 */ be_nested_str_weak(x_flag_r), - /* K29 */ be_nested_str_weak(build_standalone_ack), - /* K30 */ be_nested_str_weak(encode_frame), - /* K31 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X7Breliable_X7D), - /* K32 */ be_nested_str_weak(ack_message_counter), - /* K33 */ be_nested_str_weak(send_response), - /* K34 */ be_nested_str_weak(raw), - /* K35 */ be_nested_str_weak(remote_ip), - /* K36 */ be_nested_str_weak(remote_port), - /* K37 */ be_nested_str_weak(decode_payload), - /* K38 */ be_nested_str_weak(received_ack), - /* K39 */ be_nested_str_weak(opcode), - /* K40 */ be_nested_str_weak(get_opcode_name), - /* K41 */ be_nested_str_weak(0x_X2502X), - /* K42 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20rid_X3D_X25i_X20exch_X3D_X25i_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K43 */ be_nested_str_weak(exchange_id), - /* K44 */ be_const_int(2), - /* K45 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i), - /* K46 */ be_nested_str_weak(_X7Breliable_X7D_X20), - /* K47 */ be_nested_str_weak(), - /* K48 */ be_nested_str_weak(commissioning), - /* K49 */ be_nested_str_weak(process_incoming), - /* K50 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i), - /* K51 */ be_nested_str_weak(MTR_X3A_X20decode_X20header_X3A_X20local_session_id_X3D_X25i_X20message_counter_X3D_X25i), - /* K52 */ be_nested_str_weak(get_session_by_local_session_id), - /* K53 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D), - /* K54 */ be_nested_str_weak(counter_rcv_validate), - /* K55 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20encrypted_X20message_X20_X3D_X20), - /* K56 */ be_nested_str_weak(_X20counter_X3D), - /* K57 */ be_nested_str_weak(counter_rcv), - /* K58 */ be_nested_str_weak(encrypt), - /* K59 */ be_nested_str_weak(decrypt), - /* K60 */ be_nested_str_weak(payload_idx), - /* K61 */ be_const_int(1), - /* K62 */ be_nested_str_weak(MTR_X3A_X20idx_X3D_X25i_X20clear_X3D_X25s), - /* K63 */ be_nested_str_weak(MTR_X3A_X20_X3E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Decrypted_X20message_X3A_X20protocol_id_X3A), - /* K64 */ be_nested_str_weak(protocol_id), - /* K65 */ be_nested_str_weak(_X20opcode_X3D), - /* K66 */ be_nested_str_weak(_X20exchange_id_X3D), - /* K67 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20_X5B_X2502X_X2F_X2502X_X5D_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i), - /* K68 */ be_nested_str_weak(MTR_X3A_X20PROTOCOL_ID_SECURE_CHANNEL_X20), - /* K69 */ be_nested_str_weak(inspect), - /* K70 */ be_nested_str_weak(im), - /* K71 */ be_nested_str_weak(process_incoming_ack), - /* K72 */ be_nested_str_weak(send_enqueued), - /* K73 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A), - /* K74 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20), - /* K75 */ be_nested_str_weak(_X3B), - /* K76 */ be_nested_str_weak(debug), - /* K77 */ be_nested_str_weak(traceback), - }), - be_str_weak(msg_received), - &be_const_str_solidified, - ( &(const binstruction[459]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x50140000, // 0001 LDBOOL R5 0 0 - 0xA80201B1, // 0002 EXBLK 0 #01B5 - 0xB81A0200, // 0003 GETNGBL R6 K1 - 0x8C180D02, // 0004 GETMET R6 R6 K2 - 0x8C200304, // 0005 GETMET R8 R1 K4 - 0x7C200200, // 0006 CALL R8 1 - 0x00220608, // 0007 ADD R8 K3 R8 - 0x54260003, // 0008 LDINT R9 4 - 0x7C180600, // 0009 CALL R6 3 - 0xB81A0A00, // 000A GETNGBL R6 K5 - 0x8C180D06, // 000B GETMET R6 R6 K6 - 0x5C200000, // 000C MOVE R8 R0 - 0x5C240200, // 000D MOVE R9 R1 - 0x5C280400, // 000E MOVE R10 R2 - 0x5C2C0600, // 000F MOVE R11 R3 - 0x7C180A00, // 0010 CALL R6 5 - 0x8C1C0D07, // 0011 GETMET R7 R6 K7 - 0x7C1C0200, // 0012 CALL R7 1 - 0x5C200E00, // 0013 MOVE R8 R7 - 0x74220002, // 0014 JMPT R8 #0018 - 0x50200000, // 0015 LDBOOL R8 0 0 - 0xA8040001, // 0016 EXBLK 1 1 - 0x80041000, // 0017 RET 1 R8 - 0x88200D08, // 0018 GETMBR R8 R6 K8 - 0x1C201109, // 0019 EQ R8 R8 K9 - 0x782200A9, // 001A JMPF R8 #00C5 - 0x88200D0A, // 001B GETMBR R8 R6 K10 - 0x1C201109, // 001C EQ R8 R8 K9 - 0x782200A6, // 001D JMPF R8 #00C5 - 0x8820010B, // 001E GETMBR R8 R0 K11 - 0x8820110C, // 001F GETMBR R8 R8 K12 - 0x8C20110D, // 0020 GETMET R8 R8 K13 - 0x88280D0E, // 0021 GETMBR R10 R6 K14 - 0x542E0059, // 0022 LDINT R11 90 - 0x7C200600, // 0023 CALL R8 3 - 0xB8260200, // 0024 GETNGBL R9 K1 - 0x8C241302, // 0025 GETMET R9 R9 K2 - 0x602C0008, // 0026 GETGBL R11 G8 - 0x88300D0E, // 0027 GETMBR R12 R6 K14 - 0x7C2C0200, // 0028 CALL R11 1 - 0x002E1E0B, // 0029 ADD R11 K15 R11 - 0x002C1710, // 002A ADD R11 R11 K16 - 0x60300008, // 002B GETGBL R12 G8 - 0x88341108, // 002C GETMBR R13 R8 K8 - 0x7C300200, // 002D CALL R12 1 - 0x002C160C, // 002E ADD R11 R11 R12 - 0x58300011, // 002F LDCONST R12 K17 - 0x7C240600, // 0030 CALL R9 3 - 0x780A0000, // 0031 JMPF R2 #0033 - 0x90222402, // 0032 SETMBR R8 K18 R2 - 0x780E0000, // 0033 JMPF R3 #0035 - 0x90222603, // 0034 SETMBR R8 K19 R3 - 0x90222800, // 0035 SETMBR R8 K20 R0 - 0x901A2A08, // 0036 SETMBR R6 K21 R8 - 0x88241116, // 0037 GETMBR R9 R8 K22 - 0x8C241317, // 0038 GETMET R9 R9 K23 - 0x882C0D18, // 0039 GETMBR R11 R6 K24 - 0x50300000, // 003A LDBOOL R12 0 0 - 0x7C240600, // 003B CALL R9 3 - 0x74260027, // 003C JMPT R9 #0065 - 0xB8260200, // 003D GETNGBL R9 K1 - 0x8C241302, // 003E GETMET R9 R9 K2 - 0x8C2C0919, // 003F GETMET R11 R4 K25 - 0x5834001A, // 0040 LDCONST R13 K26 - 0x88380D18, // 0041 GETMBR R14 R6 K24 - 0x883C1116, // 0042 GETMBR R15 R8 K22 - 0x8C3C1F1B, // 0043 GETMET R15 R15 K27 - 0x7C3C0200, // 0044 CALL R15 1 - 0x7C2C0800, // 0045 CALL R11 4 - 0x58300011, // 0046 LDCONST R12 K17 - 0x7C240600, // 0047 CALL R9 3 - 0x88240D1C, // 0048 GETMBR R9 R6 K28 - 0x78260017, // 0049 JMPF R9 #0062 - 0x8C240D1D, // 004A GETMET R9 R6 K29 - 0x502C0000, // 004B LDBOOL R11 0 0 - 0x7C240400, // 004C CALL R9 2 - 0x8C28131E, // 004D GETMET R10 R9 K30 - 0x7C280200, // 004E CALL R10 1 - 0xB82A0200, // 004F GETNGBL R10 K1 - 0x8C281502, // 0050 GETMET R10 R10 K2 - 0x8C300919, // 0051 GETMET R12 R4 K25 - 0x5838001F, // 0052 LDCONST R14 K31 - 0x883C1315, // 0053 GETMBR R15 R9 K21 - 0x883C1F08, // 0054 GETMBR R15 R15 K8 - 0x88401320, // 0055 GETMBR R16 R9 K32 - 0x88441318, // 0056 GETMBR R17 R9 K24 - 0x7C300A00, // 0057 CALL R12 5 - 0x54360003, // 0058 LDINT R13 4 - 0x7C280600, // 0059 CALL R10 3 - 0x8C280121, // 005A GETMET R10 R0 K33 - 0x88301322, // 005B GETMBR R12 R9 K34 - 0x88341323, // 005C GETMBR R13 R9 K35 - 0x88381324, // 005D GETMBR R14 R9 K36 - 0x4C3C0000, // 005E LDNIL R15 - 0x88401315, // 005F GETMBR R16 R9 K21 - 0x88402108, // 0060 GETMBR R16 R16 K8 - 0x7C280C00, // 0061 CALL R10 6 - 0x50240000, // 0062 LDBOOL R9 0 0 - 0xA8040001, // 0063 EXBLK 1 1 - 0x80041200, // 0064 RET 1 R9 - 0x8C240D25, // 0065 GETMET R9 R6 K37 - 0x7C240200, // 0066 CALL R9 1 - 0x74260002, // 0067 JMPT R9 #006B - 0x50240000, // 0068 LDBOOL R9 0 0 - 0xA8040001, // 0069 EXBLK 1 1 - 0x80041200, // 006A RET 1 R9 - 0x8824010B, // 006B GETMBR R9 R0 K11 - 0x8C241326, // 006C GETMET R9 R9 K38 - 0x882C0D20, // 006D GETMBR R11 R6 K32 - 0x7C240400, // 006E CALL R9 2 - 0x88240D27, // 006F GETMBR R9 R6 K39 - 0x542A000F, // 0070 LDINT R10 16 - 0x2024120A, // 0071 NE R9 R9 R10 - 0x78260018, // 0072 JMPF R9 #008C - 0xB8260A00, // 0073 GETNGBL R9 K5 - 0x8C241328, // 0074 GETMET R9 R9 K40 - 0x882C0D27, // 0075 GETMBR R11 R6 K39 - 0x7C240400, // 0076 CALL R9 2 - 0x5C281200, // 0077 MOVE R10 R9 - 0x742A0004, // 0078 JMPT R10 #007E - 0x8C280919, // 0079 GETMET R10 R4 K25 - 0x58300029, // 007A LDCONST R12 K41 - 0x88340D27, // 007B GETMBR R13 R6 K39 - 0x7C280600, // 007C CALL R10 3 - 0x5C241400, // 007D MOVE R9 R10 - 0xB82A0200, // 007E GETNGBL R10 K1 - 0x8C281502, // 007F GETMET R10 R10 K2 - 0x8C300919, // 0080 GETMET R12 R4 K25 - 0x5838002A, // 0081 LDCONST R14 K42 - 0x883C1108, // 0082 GETMBR R15 R8 K8 - 0x5C401200, // 0083 MOVE R16 R9 - 0x88440D18, // 0084 GETMBR R17 R6 K24 - 0x88480D2B, // 0085 GETMBR R18 R6 K43 - 0x5C4C0400, // 0086 MOVE R19 R2 - 0x5C500600, // 0087 MOVE R20 R3 - 0x7C301000, // 0088 CALL R12 8 - 0x5834002C, // 0089 LDCONST R13 K44 - 0x7C280600, // 008A CALL R10 3 - 0x70020013, // 008B JMP #00A0 - 0xB8260200, // 008C GETNGBL R9 K1 - 0x8C241302, // 008D GETMET R9 R9 K2 - 0x8C2C0919, // 008E GETMET R11 R4 K25 - 0x5834002D, // 008F LDCONST R13 K45 - 0x88381108, // 0090 GETMBR R14 R8 K8 - 0x883C0D18, // 0091 GETMBR R15 R6 K24 - 0x88400D1C, // 0092 GETMBR R16 R6 K28 - 0x78420001, // 0093 JMPF R16 #0096 - 0x5840002E, // 0094 LDCONST R16 K46 - 0x70020000, // 0095 JMP #0097 - 0x5840002F, // 0096 LDCONST R16 K47 - 0x88440D2B, // 0097 GETMBR R17 R6 K43 - 0x60480008, // 0098 GETGBL R18 G8 - 0x884C0D20, // 0099 GETMBR R19 R6 K32 - 0x7C480200, // 009A CALL R18 1 - 0x5C4C0400, // 009B MOVE R19 R2 - 0x5C500600, // 009C MOVE R20 R3 - 0x7C2C1200, // 009D CALL R11 9 - 0x58300011, // 009E LDCONST R12 K17 - 0x7C240600, // 009F CALL R9 3 - 0x88240130, // 00A0 GETMBR R9 R0 K48 - 0x8C241331, // 00A1 GETMET R9 R9 K49 - 0x5C2C0C00, // 00A2 MOVE R11 R6 - 0x7C240400, // 00A3 CALL R9 2 - 0x5C141200, // 00A4 MOVE R5 R9 - 0x5C240A00, // 00A5 MOVE R9 R5 - 0x74260019, // 00A6 JMPT R9 #00C1 - 0x88240D1C, // 00A7 GETMBR R9 R6 K28 - 0x78260017, // 00A8 JMPF R9 #00C1 - 0x8C240D1D, // 00A9 GETMET R9 R6 K29 - 0x502C0000, // 00AA LDBOOL R11 0 0 - 0x7C240400, // 00AB CALL R9 2 - 0x8C28131E, // 00AC GETMET R10 R9 K30 - 0x7C280200, // 00AD CALL R10 1 - 0xB82A0200, // 00AE GETNGBL R10 K1 - 0x8C281502, // 00AF GETMET R10 R10 K2 - 0x8C300919, // 00B0 GETMET R12 R4 K25 - 0x58380032, // 00B1 LDCONST R14 K50 - 0x883C1315, // 00B2 GETMBR R15 R9 K21 - 0x883C1F08, // 00B3 GETMBR R15 R15 K8 - 0x88401320, // 00B4 GETMBR R16 R9 K32 - 0x88441318, // 00B5 GETMBR R17 R9 K24 - 0x7C300A00, // 00B6 CALL R12 5 - 0x58340011, // 00B7 LDCONST R13 K17 - 0x7C280600, // 00B8 CALL R10 3 - 0x8C280121, // 00B9 GETMET R10 R0 K33 - 0x88301322, // 00BA GETMBR R12 R9 K34 - 0x88341323, // 00BB GETMBR R13 R9 K35 - 0x88381324, // 00BC GETMBR R14 R9 K36 - 0x4C3C0000, // 00BD LDNIL R15 - 0x88401315, // 00BE GETMBR R16 R9 K21 - 0x88402108, // 00BF GETMBR R16 R16 K8 - 0x7C280C00, // 00C0 CALL R10 6 - 0x50240200, // 00C1 LDBOOL R9 1 0 - 0xA8040001, // 00C2 EXBLK 1 1 - 0x80041200, // 00C3 RET 1 R9 - 0x700200EB, // 00C4 JMP #01B1 - 0xB8220200, // 00C5 GETNGBL R8 K1 - 0x8C201102, // 00C6 GETMET R8 R8 K2 - 0x8C280919, // 00C7 GETMET R10 R4 K25 - 0x58300033, // 00C8 LDCONST R12 K51 - 0x88340D08, // 00C9 GETMBR R13 R6 K8 - 0x88380D18, // 00CA GETMBR R14 R6 K24 - 0x7C280800, // 00CB CALL R10 4 - 0x582C0011, // 00CC LDCONST R11 K17 - 0x7C200600, // 00CD CALL R8 3 - 0x8820010B, // 00CE GETMBR R8 R0 K11 - 0x8820110C, // 00CF GETMBR R8 R8 K12 - 0x8C201134, // 00D0 GETMET R8 R8 K52 - 0x88280D08, // 00D1 GETMBR R10 R6 K8 - 0x7C200400, // 00D2 CALL R8 2 - 0x4C240000, // 00D3 LDNIL R9 - 0x1C241009, // 00D4 EQ R9 R8 R9 - 0x7826000A, // 00D5 JMPF R9 #00E1 - 0xB8260200, // 00D6 GETNGBL R9 K1 - 0x8C241302, // 00D7 GETMET R9 R9 K2 - 0x602C0008, // 00D8 GETGBL R11 G8 - 0x88300D08, // 00D9 GETMBR R12 R6 K8 - 0x7C2C0200, // 00DA CALL R11 1 - 0x002E6A0B, // 00DB ADD R11 K53 R11 - 0x5830002C, // 00DC LDCONST R12 K44 - 0x7C240600, // 00DD CALL R9 3 - 0x50240000, // 00DE LDBOOL R9 0 0 - 0xA8040001, // 00DF EXBLK 1 1 - 0x80041200, // 00E0 RET 1 R9 - 0x780A0000, // 00E1 JMPF R2 #00E3 - 0x90222402, // 00E2 SETMBR R8 K18 R2 - 0x780E0000, // 00E3 JMPF R3 #00E5 - 0x90222603, // 00E4 SETMBR R8 K19 R3 - 0x90222800, // 00E5 SETMBR R8 K20 R0 - 0x901A2A08, // 00E6 SETMBR R6 K21 R8 - 0x8C241136, // 00E7 GETMET R9 R8 K54 - 0x882C0D18, // 00E8 GETMBR R11 R6 K24 - 0x50300200, // 00E9 LDBOOL R12 1 0 - 0x7C240600, // 00EA CALL R9 3 - 0x7426002B, // 00EB JMPT R9 #0118 - 0xB8260200, // 00EC GETNGBL R9 K1 - 0x8C241302, // 00ED GETMET R9 R9 K2 - 0x602C0008, // 00EE GETGBL R11 G8 - 0x88300D18, // 00EF GETMBR R12 R6 K24 - 0x7C2C0200, // 00F0 CALL R11 1 - 0x002E6E0B, // 00F1 ADD R11 K55 R11 - 0x002C1738, // 00F2 ADD R11 R11 K56 - 0x60300008, // 00F3 GETGBL R12 G8 - 0x88341139, // 00F4 GETMBR R13 R8 K57 - 0x7C300200, // 00F5 CALL R12 1 - 0x002C160C, // 00F6 ADD R11 R11 R12 - 0x58300011, // 00F7 LDCONST R12 K17 - 0x7C240600, // 00F8 CALL R9 3 - 0x88240D1C, // 00F9 GETMBR R9 R6 K28 - 0x78260019, // 00FA JMPF R9 #0115 - 0x8C240D1D, // 00FB GETMET R9 R6 K29 - 0x502C0000, // 00FC LDBOOL R11 0 0 - 0x7C240400, // 00FD CALL R9 2 - 0x8C28131E, // 00FE GETMET R10 R9 K30 - 0x7C280200, // 00FF CALL R10 1 - 0x8C28133A, // 0100 GETMET R10 R9 K58 - 0x7C280200, // 0101 CALL R10 1 - 0xB82A0200, // 0102 GETNGBL R10 K1 - 0x8C281502, // 0103 GETMET R10 R10 K2 - 0x8C300919, // 0104 GETMET R12 R4 K25 - 0x5838001F, // 0105 LDCONST R14 K31 - 0x883C1315, // 0106 GETMBR R15 R9 K21 - 0x883C1F08, // 0107 GETMBR R15 R15 K8 - 0x88401320, // 0108 GETMBR R16 R9 K32 - 0x88441318, // 0109 GETMBR R17 R9 K24 - 0x7C300A00, // 010A CALL R12 5 - 0x54360003, // 010B LDINT R13 4 - 0x7C280600, // 010C CALL R10 3 - 0x8C280121, // 010D GETMET R10 R0 K33 - 0x88301322, // 010E GETMBR R12 R9 K34 - 0x88341323, // 010F GETMBR R13 R9 K35 - 0x88381324, // 0110 GETMBR R14 R9 K36 - 0x4C3C0000, // 0111 LDNIL R15 - 0x88401315, // 0112 GETMBR R16 R9 K21 - 0x88402108, // 0113 GETMBR R16 R16 K8 - 0x7C280C00, // 0114 CALL R10 6 - 0x50240000, // 0115 LDBOOL R9 0 0 - 0xA8040001, // 0116 EXBLK 1 1 - 0x80041200, // 0117 RET 1 R9 - 0x8C240D3B, // 0118 GETMET R9 R6 K59 - 0x7C240200, // 0119 CALL R9 1 - 0x5C281200, // 011A MOVE R10 R9 - 0x742A0002, // 011B JMPT R10 #011F - 0x50280000, // 011C LDBOOL R10 0 0 - 0xA8040001, // 011D EXBLK 1 1 - 0x80041400, // 011E RET 1 R10 - 0x88280D3C, // 011F GETMBR R10 R6 K60 - 0x0428153D, // 0120 SUB R10 R10 K61 - 0x402A120A, // 0121 CONNECT R10 K9 R10 - 0x882C0D22, // 0122 GETMBR R11 R6 K34 - 0x9428160A, // 0123 GETIDX R10 R11 R10 - 0x901A440A, // 0124 SETMBR R6 K34 R10 - 0x88280D22, // 0125 GETMBR R10 R6 K34 - 0x40281409, // 0126 CONNECT R10 R10 R9 - 0xB82A0200, // 0127 GETNGBL R10 K1 - 0x8C281502, // 0128 GETMET R10 R10 K2 - 0x8C300919, // 0129 GETMET R12 R4 K25 - 0x5838003E, // 012A LDCONST R14 K62 - 0x883C0D3C, // 012B GETMBR R15 R6 K60 - 0x88400D22, // 012C GETMBR R16 R6 K34 - 0x8C402104, // 012D GETMET R16 R16 K4 - 0x7C400200, // 012E CALL R16 1 - 0x7C300800, // 012F CALL R12 4 - 0x54360003, // 0130 LDINT R13 4 - 0x7C280600, // 0131 CALL R10 3 - 0x8C280D25, // 0132 GETMET R10 R6 K37 - 0x7C280200, // 0133 CALL R10 1 - 0xB82A0200, // 0134 GETNGBL R10 K1 - 0x8C281502, // 0135 GETMET R10 R10 K2 - 0x60300008, // 0136 GETGBL R12 G8 - 0x88340D40, // 0137 GETMBR R13 R6 K64 - 0x7C300200, // 0138 CALL R12 1 - 0x00327E0C, // 0139 ADD R12 K63 R12 - 0x00301941, // 013A ADD R12 R12 K65 - 0x60340008, // 013B GETGBL R13 G8 - 0x88380D27, // 013C GETMBR R14 R6 K39 - 0x7C340200, // 013D CALL R13 1 - 0x0030180D, // 013E ADD R12 R12 R13 - 0x00301942, // 013F ADD R12 R12 K66 - 0x60340008, // 0140 GETGBL R13 G8 - 0x88380D2B, // 0141 GETMBR R14 R6 K43 - 0x543EFFFE, // 0142 LDINT R15 65535 - 0x2C381C0F, // 0143 AND R14 R14 R15 - 0x7C340200, // 0144 CALL R13 1 - 0x0030180D, // 0145 ADD R12 R12 R13 - 0x58340011, // 0146 LDCONST R13 K17 - 0x7C280600, // 0147 CALL R10 3 - 0xB82A0200, // 0148 GETNGBL R10 K1 - 0x8C281502, // 0149 GETMET R10 R10 K2 - 0x8C300919, // 014A GETMET R12 R4 K25 - 0x58380043, // 014B LDCONST R14 K67 - 0x883C1108, // 014C GETMBR R15 R8 K8 - 0x88400D40, // 014D GETMBR R16 R6 K64 - 0x88440D27, // 014E GETMBR R17 R6 K39 - 0x88480D18, // 014F GETMBR R18 R6 K24 - 0x884C0D2B, // 0150 GETMBR R19 R6 K43 - 0x60500008, // 0151 GETGBL R20 G8 - 0x88540D20, // 0152 GETMBR R21 R6 K32 - 0x7C500200, // 0153 CALL R20 1 - 0x88540D1C, // 0154 GETMBR R21 R6 K28 - 0x78560001, // 0155 JMPF R21 #0158 - 0x5854002E, // 0156 LDCONST R21 K46 - 0x70020000, // 0157 JMP #0159 - 0x5854002F, // 0158 LDCONST R21 K47 - 0x5C580400, // 0159 MOVE R22 R2 - 0x5C5C0600, // 015A MOVE R23 R3 - 0x7C301600, // 015B CALL R12 11 - 0x58340011, // 015C LDCONST R13 K17 - 0x7C280600, // 015D CALL R10 3 - 0x8828010B, // 015E GETMBR R10 R0 K11 - 0x8C281526, // 015F GETMET R10 R10 K38 - 0x88300D20, // 0160 GETMBR R12 R6 K32 - 0x7C280400, // 0161 CALL R10 2 - 0x88280D40, // 0162 GETMBR R10 R6 K64 - 0x1C2C1509, // 0163 EQ R11 R10 K9 - 0x782E0018, // 0164 JMPF R11 #017E - 0xB82E0200, // 0165 GETNGBL R11 K1 - 0x8C2C1702, // 0166 GETMET R11 R11 K2 - 0xB8360A00, // 0167 GETNGBL R13 K5 - 0x8C341B45, // 0168 GETMET R13 R13 K69 - 0x5C3C0C00, // 0169 MOVE R15 R6 - 0x7C340400, // 016A CALL R13 2 - 0x0036880D, // 016B ADD R13 K68 R13 - 0x58380011, // 016C LDCONST R14 K17 - 0x7C2C0600, // 016D CALL R11 3 - 0x882C0D27, // 016E GETMBR R11 R6 K39 - 0x5432000F, // 016F LDINT R12 16 - 0x1C2C160C, // 0170 EQ R11 R11 R12 - 0x782E0009, // 0171 JMPF R11 #017C - 0x882C0146, // 0172 GETMBR R11 R0 K70 - 0x8C2C1747, // 0173 GETMET R11 R11 K71 - 0x5C340C00, // 0174 MOVE R13 R6 - 0x7C2C0400, // 0175 CALL R11 2 - 0x5C141600, // 0176 MOVE R5 R11 - 0x78160003, // 0177 JMPF R5 #017C - 0x882C0146, // 0178 GETMBR R11 R0 K70 - 0x8C2C1748, // 0179 GETMET R11 R11 K72 - 0x5C340000, // 017A MOVE R13 R0 - 0x7C2C0400, // 017B CALL R11 2 - 0x50140200, // 017C LDBOOL R5 1 0 - 0x70020032, // 017D JMP #01B1 - 0x1C2C153D, // 017E EQ R11 R10 K61 - 0x782E0028, // 017F JMPF R11 #01A9 - 0x882C0146, // 0180 GETMBR R11 R0 K70 - 0x8C2C1731, // 0181 GETMET R11 R11 K49 - 0x5C340C00, // 0182 MOVE R13 R6 - 0x7C2C0400, // 0183 CALL R11 2 - 0x5C141600, // 0184 MOVE R5 R11 - 0x78160004, // 0185 JMPF R5 #018B - 0x882C0146, // 0186 GETMBR R11 R0 K70 - 0x8C2C1748, // 0187 GETMET R11 R11 K72 - 0x5C340000, // 0188 MOVE R13 R0 - 0x7C2C0400, // 0189 CALL R11 2 - 0x7002001B, // 018A JMP #01A7 - 0x882C0D1C, // 018B GETMBR R11 R6 K28 - 0x782E0019, // 018C JMPF R11 #01A7 - 0x8C2C0D1D, // 018D GETMET R11 R6 K29 - 0x50340200, // 018E LDBOOL R13 1 0 - 0x7C2C0400, // 018F CALL R11 2 - 0x8C30171E, // 0190 GETMET R12 R11 K30 - 0x7C300200, // 0191 CALL R12 1 - 0x8C30173A, // 0192 GETMET R12 R11 K58 - 0x7C300200, // 0193 CALL R12 1 - 0xB8320200, // 0194 GETNGBL R12 K1 - 0x8C301902, // 0195 GETMET R12 R12 K2 - 0x8C380919, // 0196 GETMET R14 R4 K25 - 0x5840001F, // 0197 LDCONST R16 K31 - 0x88441715, // 0198 GETMBR R17 R11 K21 - 0x88442308, // 0199 GETMBR R17 R17 K8 - 0x88481720, // 019A GETMBR R18 R11 K32 - 0x884C1718, // 019B GETMBR R19 R11 K24 - 0x7C380A00, // 019C CALL R14 5 - 0x583C0011, // 019D LDCONST R15 K17 - 0x7C300600, // 019E CALL R12 3 - 0x8C300121, // 019F GETMET R12 R0 K33 - 0x88381722, // 01A0 GETMBR R14 R11 K34 - 0x883C1723, // 01A1 GETMBR R15 R11 K35 - 0x88401724, // 01A2 GETMBR R16 R11 K36 - 0x88441718, // 01A3 GETMBR R17 R11 K24 - 0x88481715, // 01A4 GETMBR R18 R11 K21 - 0x88482508, // 01A5 GETMBR R18 R18 K8 - 0x7C300C00, // 01A6 CALL R12 6 - 0x50140200, // 01A7 LDBOOL R5 1 0 - 0x70020007, // 01A8 JMP #01B1 - 0xB82E0200, // 01A9 GETNGBL R11 K1 - 0x8C2C1702, // 01AA GETMET R11 R11 K2 - 0x60340008, // 01AB GETGBL R13 G8 - 0x5C381400, // 01AC MOVE R14 R10 - 0x7C340200, // 01AD CALL R13 1 - 0x0036920D, // 01AE ADD R13 K73 R13 - 0x58380011, // 01AF LDCONST R14 K17 - 0x7C2C0600, // 01B0 CALL R11 3 - 0xA8040001, // 01B1 EXBLK 1 1 - 0x80040A00, // 01B2 RET 1 R5 - 0xA8040001, // 01B3 EXBLK 1 1 - 0x70020014, // 01B4 JMP #01CA - 0xAC180002, // 01B5 CATCH R6 0 2 - 0x70020011, // 01B6 JMP #01C9 - 0xB8220200, // 01B7 GETNGBL R8 K1 - 0x8C201102, // 01B8 GETMET R8 R8 K2 - 0x60280008, // 01B9 GETGBL R10 G8 - 0x5C2C0C00, // 01BA MOVE R11 R6 - 0x7C280200, // 01BB CALL R10 1 - 0x002A940A, // 01BC ADD R10 K74 R10 - 0x0028154B, // 01BD ADD R10 R10 K75 - 0x602C0008, // 01BE GETGBL R11 G8 - 0x5C300E00, // 01BF MOVE R12 R7 - 0x7C2C0200, // 01C0 CALL R11 1 - 0x0028140B, // 01C1 ADD R10 R10 R11 - 0x7C200400, // 01C2 CALL R8 2 - 0xA4229800, // 01C3 IMPORT R8 K76 - 0x8C24114D, // 01C4 GETMET R9 R8 K77 - 0x7C240200, // 01C5 CALL R9 1 - 0x50240000, // 01C6 LDBOOL R9 0 0 - 0x80041200, // 01C7 RET 1 R9 - 0x70020000, // 01C8 JMP #01CA - 0xB0080000, // 01C9 RAISE 2 R0 R0 - 0x80000000, // 01CA RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_response -********************************************************************/ -be_local_closure(Matter_MessageHandler_send_response, /* name */ - be_nested_proto( - 13, /* nstack */ - 6, /* 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(device), - /* K1 */ be_nested_str_weak(msg_send), - }), - be_str_weak(send_response), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88180100, // 0000 GETMBR R6 R0 K0 - 0x8C180D01, // 0001 GETMET R6 R6 K1 - 0x5C200200, // 0002 MOVE R8 R1 - 0x5C240400, // 0003 MOVE R9 R2 - 0x5C280600, // 0004 MOVE R10 R3 - 0x5C2C0800, // 0005 MOVE R11 R4 - 0x5C300A00, // 0006 MOVE R12 R5 - 0x7C180C00, // 0007 CALL R6 6 - 0x80000000, // 0008 RET 0 + 0xB80A0400, // 000B GETNGBL R2 K2 + 0x8C080507, // 000C GETMET R2 R2 K7 + 0x5C100000, // 000D MOVE R4 R0 + 0x7C080400, // 000E CALL R2 2 + 0x90020C02, // 000F SETMBR R0 K6 R2 + 0x80000000, // 0010 RET 0 }) ) ); @@ -712,18 +820,21 @@ be_local_closure(Matter_MessageHandler_send_response, /* name */ ** Solidified class: Matter_MessageHandler ********************************************************************/ be_local_class(Matter_MessageHandler, - 3, + 4, NULL, - be_nested_map(8, + be_nested_map(11, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(commissioning, 5), be_const_var(1) }, - { be_const_key_weak(every_second, -1), be_const_closure(Matter_MessageHandler_every_second_closure) }, - { be_const_key_weak(every_250ms, -1), be_const_closure(Matter_MessageHandler_every_250ms_closure) }, - { be_const_key_weak(device, 4), be_const_var(0) }, - { be_const_key_weak(im, 6), be_const_var(2) }, - { be_const_key_weak(msg_received, 2), be_const_closure(Matter_MessageHandler_msg_received_closure) }, + { be_const_key_weak(im, -1), be_const_var(2) }, { be_const_key_weak(init, -1), be_const_closure(Matter_MessageHandler_init_closure) }, - { be_const_key_weak(send_response, -1), be_const_closure(Matter_MessageHandler_send_response_closure) }, + { be_const_key_weak(send_encrypted_ack, -1), be_const_closure(Matter_MessageHandler_send_encrypted_ack_closure) }, + { be_const_key_weak(control_message, -1), be_const_var(3) }, + { be_const_key_weak(every_250ms, 3), be_const_closure(Matter_MessageHandler_every_250ms_closure) }, + { be_const_key_weak(device, -1), be_const_var(0) }, + { be_const_key_weak(msg_received, -1), be_const_closure(Matter_MessageHandler_msg_received_closure) }, + { be_const_key_weak(send_response, 4), be_const_closure(Matter_MessageHandler_send_response_closure) }, + { be_const_key_weak(commissioning, -1), be_const_var(1) }, + { be_const_key_weak(send_simple_ack, 1), be_const_closure(Matter_MessageHandler_send_simple_ack_closure) }, + { be_const_key_weak(every_second, 0), be_const_closure(Matter_MessageHandler_every_second_closure) }, })), be_str_weak(Matter_MessageHandler) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h index c64ebc2d1..b8eed6db6 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h @@ -110,7 +110,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[883]) { /* code */ + ( &(const binstruction[888]) { /* code */ 0xA40E0000, // 0000 IMPORT R3 K0 0xB8120200, // 0001 GETNGBL R4 K1 0x88100902, // 0002 GETMBR R4 R4 K2 @@ -167,11 +167,11 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x50280000, // 0035 LDBOOL R10 0 0 0x7C1C0600, // 0036 CALL R7 3 0x80040E00, // 0037 RET 1 R7 - 0x70020338, // 0038 JMP #0372 + 0x7002033D, // 0038 JMP #0377 0x541E0031, // 0039 LDINT R7 50 0x1C1C0A07, // 003A EQ R7 R5 R7 0x781E0000, // 003B JMPF R7 #003D - 0x70020334, // 003C JMP #0372 + 0x70020339, // 003C JMP #0377 0x541E0032, // 003D LDINT R7 51 0x1C1C0A07, // 003E EQ R7 R5 R7 0x781E00DC, // 003F JMPF R7 #011D @@ -395,11 +395,11 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x50280000, // 0119 LDBOOL R10 0 0 0x7C1C0600, // 011A CALL R7 3 0x80040E00, // 011B RET 1 R7 - 0x70020254, // 011C JMP #0372 + 0x70020259, // 011C JMP #0377 0x541E0033, // 011D LDINT R7 52 0x1C1C0A07, // 011E EQ R7 R5 R7 0x781E0000, // 011F JMPF R7 #0121 - 0x70020250, // 0120 JMP #0372 + 0x70020255, // 0120 JMP #0377 0x541E0037, // 0121 LDINT R7 56 0x1C1C0A07, // 0122 EQ R7 R5 R7 0x781E002C, // 0123 JMPF R7 #0151 @@ -447,10 +447,10 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x5C2C0E00, // 014D MOVE R11 R7 0x7C200600, // 014E CALL R8 3 0x80041000, // 014F RET 1 R8 - 0x70020220, // 0150 JMP #0372 + 0x70020225, // 0150 JMP #0377 0x541E003D, // 0151 LDINT R7 62 0x1C1C0A07, // 0152 EQ R7 R5 R7 - 0x781E008B, // 0153 JMPF R7 #01E0 + 0x781E0090, // 0153 JMPF R7 #01E5 0x1C1C0D05, // 0154 EQ R7 R6 K5 0x781E0025, // 0155 JMPF R7 #017C 0x8C1C0911, // 0156 GETMET R7 R4 K17 @@ -490,7 +490,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0xAC200200, // 0178 CATCH R8 1 0 0xB0080000, // 0179 RAISE 2 R0 R0 0x80040E00, // 017A RET 1 R7 - 0x70020062, // 017B JMP #01DF + 0x70020067, // 017B JMP #01E4 0x1C1C0D09, // 017C EQ R7 R6 K9 0x781E003C, // 017D JMPF R7 #01BB 0x8C1C0911, // 017E GETMET R7 R4 K17 @@ -553,7 +553,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0xAC200200, // 01B7 CATCH R8 1 0 0xB0080000, // 01B8 RAISE 2 R0 R0 0x80040E00, // 01B9 RET 1 R7 - 0x70020023, // 01BA JMP #01DF + 0x70020028, // 01BA JMP #01E4 0x1C1C0D0D, // 01BB EQ R7 R6 K13 0x781E0007, // 01BC JMPF R7 #01C5 0x8C1C0906, // 01BD GETMET R7 R4 K6 @@ -563,7 +563,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x88281543, // 01C1 GETMBR R10 R10 K67 0x7C1C0600, // 01C2 CALL R7 3 0x80040E00, // 01C3 RET 1 R7 - 0x70020019, // 01C4 JMP #01DF + 0x7002001E, // 01C4 JMP #01E4 0x1C1C0D0F, // 01C5 EQ R7 R6 K15 0x781E0009, // 01C6 JMPF R7 #01D1 0x881C0133, // 01C7 GETMBR R7 R0 K51 @@ -575,425 +575,430 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x5C2C0E00, // 01CD MOVE R11 R7 0x7C200600, // 01CE CALL R8 3 0x80041000, // 01CF RET 1 R8 - 0x7002000D, // 01D0 JMP #01DF + 0x70020012, // 01D0 JMP #01E4 0x541E0003, // 01D1 LDINT R7 4 0x1C1C0C07, // 01D2 EQ R7 R6 R7 0x781E0000, // 01D3 JMPF R7 #01D5 - 0x70020009, // 01D4 JMP #01DF + 0x7002000E, // 01D4 JMP #01E4 0x541E0004, // 01D5 LDINT R7 5 0x1C1C0C07, // 01D6 EQ R7 R6 R7 - 0x781E0006, // 01D7 JMPF R7 #01DF - 0x8C1C0906, // 01D8 GETMET R7 R4 K6 - 0x8824090E, // 01D9 GETMBR R9 R4 K14 - 0x88280345, // 01DA GETMBR R10 R1 K69 - 0x8C281539, // 01DB GETMET R10 R10 K57 - 0x7C280200, // 01DC CALL R10 1 - 0x7C1C0600, // 01DD CALL R7 3 - 0x80040E00, // 01DE RET 1 R7 - 0x70020191, // 01DF JMP #0372 - 0x541E003B, // 01E0 LDINT R7 60 - 0x1C1C0A07, // 01E1 EQ R7 R5 R7 - 0x781E003C, // 01E2 JMPF R7 #0220 - 0x1C1C0D05, // 01E3 EQ R7 R6 K5 - 0x781E0012, // 01E4 JMPF R7 #01F8 - 0x881C0133, // 01E5 GETMBR R7 R0 K51 - 0x8C1C0F46, // 01E6 GETMET R7 R7 K70 - 0x7C1C0200, // 01E7 CALL R7 1 - 0x88200133, // 01E8 GETMBR R8 R0 K51 - 0x8C201147, // 01E9 GETMET R8 R8 K71 - 0x7C200200, // 01EA CALL R8 1 - 0x781E0004, // 01EB JMPF R7 #01F1 - 0x78220001, // 01EC JMPF R8 #01EF - 0x5824000D, // 01ED LDCONST R9 K13 - 0x70020000, // 01EE JMP #01F0 - 0x58240009, // 01EF LDCONST R9 K9 - 0x70020000, // 01F0 JMP #01F2 - 0x58240005, // 01F1 LDCONST R9 K5 - 0x8C280906, // 01F2 GETMET R10 R4 K6 - 0x8830090E, // 01F3 GETMBR R12 R4 K14 - 0x5C341200, // 01F4 MOVE R13 R9 - 0x7C280600, // 01F5 CALL R10 3 - 0x80041400, // 01F6 RET 1 R10 - 0x70020026, // 01F7 JMP #021F - 0x1C1C0D09, // 01F8 EQ R7 R6 K9 - 0x781E0011, // 01F9 JMPF R7 #020C - 0x881C0133, // 01FA GETMBR R7 R0 K51 - 0x881C0F48, // 01FB GETMBR R7 R7 K72 - 0x4C200000, // 01FC LDNIL R8 - 0x20200E08, // 01FD NE R8 R7 R8 - 0x78220006, // 01FE JMPF R8 #0206 - 0x8C200906, // 01FF GETMET R8 R4 K6 - 0x8828090C, // 0200 GETMBR R10 R4 K12 - 0x8C2C0F39, // 0201 GETMET R11 R7 K57 - 0x7C2C0200, // 0202 CALL R11 1 - 0x7C200600, // 0203 CALL R8 3 - 0x80041000, // 0204 RET 1 R8 - 0x70020004, // 0205 JMP #020B - 0x8C200906, // 0206 GETMET R8 R4 K6 - 0x88280918, // 0207 GETMBR R10 R4 K24 - 0x4C2C0000, // 0208 LDNIL R11 - 0x7C200600, // 0209 CALL R8 3 - 0x80041000, // 020A RET 1 R8 - 0x70020012, // 020B JMP #021F - 0x1C1C0D0D, // 020C EQ R7 R6 K13 - 0x781E0010, // 020D JMPF R7 #021F - 0x881C0133, // 020E GETMBR R7 R0 K51 - 0x881C0F48, // 020F GETMBR R7 R7 K72 - 0x4C200000, // 0210 LDNIL R8 - 0x20200E08, // 0211 NE R8 R7 R8 - 0x78220006, // 0212 JMPF R8 #021A - 0x8C200906, // 0213 GETMET R8 R4 K6 - 0x8828090C, // 0214 GETMBR R10 R4 K12 - 0x8C2C0F3E, // 0215 GETMET R11 R7 K62 - 0x7C2C0200, // 0216 CALL R11 1 - 0x7C200600, // 0217 CALL R8 3 - 0x80041000, // 0218 RET 1 R8 - 0x70020004, // 0219 JMP #021F - 0x8C200906, // 021A GETMET R8 R4 K6 - 0x88280918, // 021B GETMBR R10 R4 K24 - 0x4C2C0000, // 021C LDNIL R11 - 0x7C200600, // 021D CALL R8 3 - 0x80041000, // 021E RET 1 R8 - 0x70020151, // 021F JMP #0372 - 0x541E0027, // 0220 LDINT R7 40 - 0x1C1C0A07, // 0221 EQ R7 R5 R7 - 0x781E00AE, // 0222 JMPF R7 #02D2 - 0x1C1C0D05, // 0223 EQ R7 R6 K5 - 0x781E0005, // 0224 JMPF R7 #022B - 0x8C1C0906, // 0225 GETMET R7 R4 K6 - 0x8824090C, // 0226 GETMBR R9 R4 K12 - 0x58280009, // 0227 LDCONST R10 K9 - 0x7C1C0600, // 0228 CALL R7 3 - 0x80040E00, // 0229 RET 1 R7 - 0x700200A5, // 022A JMP #02D1 - 0x1C1C0D09, // 022B EQ R7 R6 K9 - 0x781E0005, // 022C JMPF R7 #0233 - 0x8C1C0906, // 022D GETMET R7 R4 K6 - 0x88240916, // 022E GETMBR R9 R4 K22 - 0x58280049, // 022F LDCONST R10 K73 - 0x7C1C0600, // 0230 CALL R7 3 - 0x80040E00, // 0231 RET 1 R7 - 0x7002009D, // 0232 JMP #02D1 - 0x1C1C0D0D, // 0233 EQ R7 R6 K13 - 0x781E0006, // 0234 JMPF R7 #023C - 0x8C1C0906, // 0235 GETMET R7 R4 K6 - 0x8824090C, // 0236 GETMBR R9 R4 K12 - 0x88280133, // 0237 GETMBR R10 R0 K51 - 0x8828154A, // 0238 GETMBR R10 R10 K74 - 0x7C1C0600, // 0239 CALL R7 3 - 0x80040E00, // 023A RET 1 R7 - 0x70020094, // 023B JMP #02D1 - 0x1C1C0D0F, // 023C EQ R7 R6 K15 - 0x781E000A, // 023D JMPF R7 #0249 - 0x8C1C0906, // 023E GETMET R7 R4 K6 - 0x88240916, // 023F GETMBR R9 R4 K22 - 0xB82A2400, // 0240 GETNGBL R10 K18 - 0x8C281526, // 0241 GETMET R10 R10 K38 - 0x5830004B, // 0242 LDCONST R12 K75 - 0x50340200, // 0243 LDBOOL R13 1 0 - 0x7C280600, // 0244 CALL R10 3 - 0x9428154B, // 0245 GETIDX R10 R10 K75 - 0x7C1C0600, // 0246 CALL R7 3 - 0x80040E00, // 0247 RET 1 R7 - 0x70020087, // 0248 JMP #02D1 - 0x541E0003, // 0249 LDINT R7 4 - 0x1C1C0C07, // 024A EQ R7 R6 R7 - 0x781E0005, // 024B JMPF R7 #0252 - 0x8C1C0906, // 024C GETMET R7 R4 K6 - 0x8824090C, // 024D GETMBR R9 R4 K12 - 0x542A7FFF, // 024E LDINT R10 32768 - 0x7C1C0600, // 024F CALL R7 3 - 0x80040E00, // 0250 RET 1 R7 - 0x7002007E, // 0251 JMP #02D1 - 0x541E0004, // 0252 LDINT R7 5 - 0x1C1C0C07, // 0253 EQ R7 R6 R7 - 0x781E000A, // 0254 JMPF R7 #0260 - 0x8C1C0906, // 0255 GETMET R7 R4 K6 - 0x88240916, // 0256 GETMBR R9 R4 K22 - 0xB82A2400, // 0257 GETNGBL R10 K18 - 0x8C281526, // 0258 GETMET R10 R10 K38 - 0x5830004C, // 0259 LDCONST R12 K76 - 0x50340200, // 025A LDBOOL R13 1 0 - 0x7C280600, // 025B CALL R10 3 - 0x9428154D, // 025C GETIDX R10 R10 K77 - 0x7C1C0600, // 025D CALL R7 3 - 0x80040E00, // 025E RET 1 R7 - 0x70020070, // 025F JMP #02D1 - 0x541E0005, // 0260 LDINT R7 6 - 0x1C1C0C07, // 0261 EQ R7 R6 R7 - 0x781E0005, // 0262 JMPF R7 #0269 - 0x8C1C0906, // 0263 GETMET R7 R4 K6 - 0x88240916, // 0264 GETMBR R9 R4 K22 - 0x5828004E, // 0265 LDCONST R10 K78 - 0x7C1C0600, // 0266 CALL R7 3 - 0x80040E00, // 0267 RET 1 R7 - 0x70020067, // 0268 JMP #02D1 - 0x541E0006, // 0269 LDINT R7 7 - 0x1C1C0C07, // 026A EQ R7 R6 R7 - 0x781E0005, // 026B JMPF R7 #0272 - 0x8C1C0906, // 026C GETMET R7 R4 K6 - 0x8824090C, // 026D GETMBR R9 R4 K12 - 0x58280005, // 026E LDCONST R10 K5 - 0x7C1C0600, // 026F CALL R7 3 - 0x80040E00, // 0270 RET 1 R7 - 0x7002005E, // 0271 JMP #02D1 - 0x541E0007, // 0272 LDINT R7 8 - 0x1C1C0C07, // 0273 EQ R7 R6 R7 - 0x781E000B, // 0274 JMPF R7 #0281 - 0x8C1C0906, // 0275 GETMET R7 R4 K6 - 0x88240916, // 0276 GETMBR R9 R4 K22 - 0xB82A2400, // 0277 GETNGBL R10 K18 - 0x8C281526, // 0278 GETMET R10 R10 K38 - 0x5830004F, // 0279 LDCONST R12 K79 - 0x50340200, // 027A LDBOOL R13 1 0 - 0x7C280600, // 027B CALL R10 3 - 0x94281550, // 027C GETIDX R10 R10 K80 - 0x94281551, // 027D GETIDX R10 R10 K81 - 0x7C1C0600, // 027E CALL R7 3 - 0x80040E00, // 027F RET 1 R7 - 0x7002004F, // 0280 JMP #02D1 - 0x541E0008, // 0281 LDINT R7 9 - 0x1C1C0C07, // 0282 EQ R7 R6 R7 - 0x781E0005, // 0283 JMPF R7 #028A - 0x8C1C0906, // 0284 GETMET R7 R4 K6 - 0x8824090C, // 0285 GETMBR R9 R4 K12 - 0x58280009, // 0286 LDCONST R10 K9 - 0x7C1C0600, // 0287 CALL R7 3 - 0x80040E00, // 0288 RET 1 R7 - 0x70020046, // 0289 JMP #02D1 - 0x541E0009, // 028A LDINT R7 10 - 0x1C1C0C07, // 028B EQ R7 R6 R7 - 0x781E0015, // 028C JMPF R7 #02A3 - 0xB81E2400, // 028D GETNGBL R7 K18 - 0x8C1C0F26, // 028E GETMET R7 R7 K38 - 0x5824004F, // 028F LDCONST R9 K79 - 0x50280200, // 0290 LDBOOL R10 1 0 - 0x7C1C0600, // 0291 CALL R7 3 - 0x941C0F50, // 0292 GETIDX R7 R7 K80 - 0x941C0F52, // 0293 GETIDX R7 R7 K82 - 0x8C20071B, // 0294 GETMET R8 R3 K27 - 0x5C280E00, // 0295 MOVE R10 R7 - 0x582C0053, // 0296 LDCONST R11 K83 - 0x7C200600, // 0297 CALL R8 3 - 0x24241105, // 0298 GT R9 R8 K5 - 0x78260002, // 0299 JMPF R9 #029D - 0x04241109, // 029A SUB R9 R8 K9 - 0x40260A09, // 029B CONNECT R9 K5 R9 - 0x941C0E09, // 029C GETIDX R7 R7 R9 - 0x8C240906, // 029D GETMET R9 R4 K6 - 0x882C0916, // 029E GETMBR R11 R4 K22 - 0x5C300E00, // 029F MOVE R12 R7 - 0x7C240600, // 02A0 CALL R9 3 - 0x80041200, // 02A1 RET 1 R9 - 0x7002002D, // 02A2 JMP #02D1 - 0x541E000E, // 02A3 LDINT R7 15 - 0x1C1C0C07, // 02A4 EQ R7 R6 R7 - 0x781E000B, // 02A5 JMPF R7 #02B2 - 0x8C1C0906, // 02A6 GETMET R7 R4 K6 - 0x88240916, // 02A7 GETMBR R9 R4 K22 - 0xB82A2400, // 02A8 GETNGBL R10 K18 - 0x8C281525, // 02A9 GETMET R10 R10 K37 - 0x7C280200, // 02AA CALL R10 1 - 0x8C28151B, // 02AB GETMET R10 R10 K27 - 0x5830001C, // 02AC LDCONST R12 K28 - 0x5834001D, // 02AD LDCONST R13 K29 - 0x7C280600, // 02AE CALL R10 3 - 0x7C1C0600, // 02AF CALL R7 3 - 0x80040E00, // 02B0 RET 1 R7 - 0x7002001E, // 02B1 JMP #02D1 - 0x541E0011, // 02B2 LDINT R7 18 - 0x1C1C0C07, // 02B3 EQ R7 R6 R7 - 0x781E000B, // 02B4 JMPF R7 #02C1 - 0x8C1C0906, // 02B5 GETMET R7 R4 K6 - 0x88240916, // 02B6 GETMBR R9 R4 K22 - 0xB82A2400, // 02B7 GETNGBL R10 K18 - 0x8C281525, // 02B8 GETMET R10 R10 K37 - 0x7C280200, // 02B9 CALL R10 1 - 0x8C28151B, // 02BA GETMET R10 R10 K27 - 0x5830001C, // 02BB LDCONST R12 K28 - 0x5834001D, // 02BC LDCONST R13 K29 - 0x7C280600, // 02BD CALL R10 3 - 0x7C1C0600, // 02BE CALL R7 3 - 0x80040E00, // 02BF RET 1 R7 - 0x7002000F, // 02C0 JMP #02D1 - 0x541E0012, // 02C1 LDINT R7 19 - 0x1C1C0C07, // 02C2 EQ R7 R6 R7 - 0x781E000C, // 02C3 JMPF R7 #02D1 - 0x8C1C090A, // 02C4 GETMET R7 R4 K10 - 0x7C1C0200, // 02C5 CALL R7 1 - 0x8C200F0B, // 02C6 GETMET R8 R7 K11 - 0x58280005, // 02C7 LDCONST R10 K5 - 0x882C090C, // 02C8 GETMBR R11 R4 K12 - 0x5830000F, // 02C9 LDCONST R12 K15 - 0x7C200800, // 02CA CALL R8 4 + 0x781E000B, // 01D7 JMPF R7 #01E4 + 0x881C0345, // 01D8 GETMBR R7 R1 K69 + 0x8C1C0F39, // 01D9 GETMET R7 R7 K57 + 0x7C1C0200, // 01DA CALL R7 1 + 0x4C200000, // 01DB LDNIL R8 + 0x1C200E08, // 01DC EQ R8 R7 R8 + 0x78220000, // 01DD JMPF R8 #01DF + 0x581C0005, // 01DE LDCONST R7 K5 + 0x8C200906, // 01DF GETMET R8 R4 K6 + 0x8828090E, // 01E0 GETMBR R10 R4 K14 + 0x5C2C0E00, // 01E1 MOVE R11 R7 + 0x7C200600, // 01E2 CALL R8 3 + 0x80041000, // 01E3 RET 1 R8 + 0x70020191, // 01E4 JMP #0377 + 0x541E003B, // 01E5 LDINT R7 60 + 0x1C1C0A07, // 01E6 EQ R7 R5 R7 + 0x781E003C, // 01E7 JMPF R7 #0225 + 0x1C1C0D05, // 01E8 EQ R7 R6 K5 + 0x781E0012, // 01E9 JMPF R7 #01FD + 0x881C0133, // 01EA GETMBR R7 R0 K51 + 0x8C1C0F46, // 01EB GETMET R7 R7 K70 + 0x7C1C0200, // 01EC CALL R7 1 + 0x88200133, // 01ED GETMBR R8 R0 K51 + 0x8C201147, // 01EE GETMET R8 R8 K71 + 0x7C200200, // 01EF CALL R8 1 + 0x781E0004, // 01F0 JMPF R7 #01F6 + 0x78220001, // 01F1 JMPF R8 #01F4 + 0x5824000D, // 01F2 LDCONST R9 K13 + 0x70020000, // 01F3 JMP #01F5 + 0x58240009, // 01F4 LDCONST R9 K9 + 0x70020000, // 01F5 JMP #01F7 + 0x58240005, // 01F6 LDCONST R9 K5 + 0x8C280906, // 01F7 GETMET R10 R4 K6 + 0x8830090E, // 01F8 GETMBR R12 R4 K14 + 0x5C341200, // 01F9 MOVE R13 R9 + 0x7C280600, // 01FA CALL R10 3 + 0x80041400, // 01FB RET 1 R10 + 0x70020026, // 01FC JMP #0224 + 0x1C1C0D09, // 01FD EQ R7 R6 K9 + 0x781E0011, // 01FE JMPF R7 #0211 + 0x881C0133, // 01FF GETMBR R7 R0 K51 + 0x881C0F48, // 0200 GETMBR R7 R7 K72 + 0x4C200000, // 0201 LDNIL R8 + 0x20200E08, // 0202 NE R8 R7 R8 + 0x78220006, // 0203 JMPF R8 #020B + 0x8C200906, // 0204 GETMET R8 R4 K6 + 0x8828090C, // 0205 GETMBR R10 R4 K12 + 0x8C2C0F39, // 0206 GETMET R11 R7 K57 + 0x7C2C0200, // 0207 CALL R11 1 + 0x7C200600, // 0208 CALL R8 3 + 0x80041000, // 0209 RET 1 R8 + 0x70020004, // 020A JMP #0210 + 0x8C200906, // 020B GETMET R8 R4 K6 + 0x88280918, // 020C GETMBR R10 R4 K24 + 0x4C2C0000, // 020D LDNIL R11 + 0x7C200600, // 020E CALL R8 3 + 0x80041000, // 020F RET 1 R8 + 0x70020012, // 0210 JMP #0224 + 0x1C1C0D0D, // 0211 EQ R7 R6 K13 + 0x781E0010, // 0212 JMPF R7 #0224 + 0x881C0133, // 0213 GETMBR R7 R0 K51 + 0x881C0F48, // 0214 GETMBR R7 R7 K72 + 0x4C200000, // 0215 LDNIL R8 + 0x20200E08, // 0216 NE R8 R7 R8 + 0x78220006, // 0217 JMPF R8 #021F + 0x8C200906, // 0218 GETMET R8 R4 K6 + 0x8828090C, // 0219 GETMBR R10 R4 K12 + 0x8C2C0F3E, // 021A GETMET R11 R7 K62 + 0x7C2C0200, // 021B CALL R11 1 + 0x7C200600, // 021C CALL R8 3 + 0x80041000, // 021D RET 1 R8 + 0x70020004, // 021E JMP #0224 + 0x8C200906, // 021F GETMET R8 R4 K6 + 0x88280918, // 0220 GETMBR R10 R4 K24 + 0x4C2C0000, // 0221 LDNIL R11 + 0x7C200600, // 0222 CALL R8 3 + 0x80041000, // 0223 RET 1 R8 + 0x70020151, // 0224 JMP #0377 + 0x541E0027, // 0225 LDINT R7 40 + 0x1C1C0A07, // 0226 EQ R7 R5 R7 + 0x781E00AE, // 0227 JMPF R7 #02D7 + 0x1C1C0D05, // 0228 EQ R7 R6 K5 + 0x781E0005, // 0229 JMPF R7 #0230 + 0x8C1C0906, // 022A GETMET R7 R4 K6 + 0x8824090C, // 022B GETMBR R9 R4 K12 + 0x58280009, // 022C LDCONST R10 K9 + 0x7C1C0600, // 022D CALL R7 3 + 0x80040E00, // 022E RET 1 R7 + 0x700200A5, // 022F JMP #02D6 + 0x1C1C0D09, // 0230 EQ R7 R6 K9 + 0x781E0005, // 0231 JMPF R7 #0238 + 0x8C1C0906, // 0232 GETMET R7 R4 K6 + 0x88240916, // 0233 GETMBR R9 R4 K22 + 0x58280049, // 0234 LDCONST R10 K73 + 0x7C1C0600, // 0235 CALL R7 3 + 0x80040E00, // 0236 RET 1 R7 + 0x7002009D, // 0237 JMP #02D6 + 0x1C1C0D0D, // 0238 EQ R7 R6 K13 + 0x781E0006, // 0239 JMPF R7 #0241 + 0x8C1C0906, // 023A GETMET R7 R4 K6 + 0x8824090C, // 023B GETMBR R9 R4 K12 + 0x88280133, // 023C GETMBR R10 R0 K51 + 0x8828154A, // 023D GETMBR R10 R10 K74 + 0x7C1C0600, // 023E CALL R7 3 + 0x80040E00, // 023F RET 1 R7 + 0x70020094, // 0240 JMP #02D6 + 0x1C1C0D0F, // 0241 EQ R7 R6 K15 + 0x781E000A, // 0242 JMPF R7 #024E + 0x8C1C0906, // 0243 GETMET R7 R4 K6 + 0x88240916, // 0244 GETMBR R9 R4 K22 + 0xB82A2400, // 0245 GETNGBL R10 K18 + 0x8C281526, // 0246 GETMET R10 R10 K38 + 0x5830004B, // 0247 LDCONST R12 K75 + 0x50340200, // 0248 LDBOOL R13 1 0 + 0x7C280600, // 0249 CALL R10 3 + 0x9428154B, // 024A GETIDX R10 R10 K75 + 0x7C1C0600, // 024B CALL R7 3 + 0x80040E00, // 024C RET 1 R7 + 0x70020087, // 024D JMP #02D6 + 0x541E0003, // 024E LDINT R7 4 + 0x1C1C0C07, // 024F EQ R7 R6 R7 + 0x781E0005, // 0250 JMPF R7 #0257 + 0x8C1C0906, // 0251 GETMET R7 R4 K6 + 0x8824090C, // 0252 GETMBR R9 R4 K12 + 0x542A7FFF, // 0253 LDINT R10 32768 + 0x7C1C0600, // 0254 CALL R7 3 + 0x80040E00, // 0255 RET 1 R7 + 0x7002007E, // 0256 JMP #02D6 + 0x541E0004, // 0257 LDINT R7 5 + 0x1C1C0C07, // 0258 EQ R7 R6 R7 + 0x781E000A, // 0259 JMPF R7 #0265 + 0x8C1C0906, // 025A GETMET R7 R4 K6 + 0x88240916, // 025B GETMBR R9 R4 K22 + 0xB82A2400, // 025C GETNGBL R10 K18 + 0x8C281526, // 025D GETMET R10 R10 K38 + 0x5830004C, // 025E LDCONST R12 K76 + 0x50340200, // 025F LDBOOL R13 1 0 + 0x7C280600, // 0260 CALL R10 3 + 0x9428154D, // 0261 GETIDX R10 R10 K77 + 0x7C1C0600, // 0262 CALL R7 3 + 0x80040E00, // 0263 RET 1 R7 + 0x70020070, // 0264 JMP #02D6 + 0x541E0005, // 0265 LDINT R7 6 + 0x1C1C0C07, // 0266 EQ R7 R6 R7 + 0x781E0005, // 0267 JMPF R7 #026E + 0x8C1C0906, // 0268 GETMET R7 R4 K6 + 0x88240916, // 0269 GETMBR R9 R4 K22 + 0x5828004E, // 026A LDCONST R10 K78 + 0x7C1C0600, // 026B CALL R7 3 + 0x80040E00, // 026C RET 1 R7 + 0x70020067, // 026D JMP #02D6 + 0x541E0006, // 026E LDINT R7 7 + 0x1C1C0C07, // 026F EQ R7 R6 R7 + 0x781E0005, // 0270 JMPF R7 #0277 + 0x8C1C0906, // 0271 GETMET R7 R4 K6 + 0x8824090C, // 0272 GETMBR R9 R4 K12 + 0x58280005, // 0273 LDCONST R10 K5 + 0x7C1C0600, // 0274 CALL R7 3 + 0x80040E00, // 0275 RET 1 R7 + 0x7002005E, // 0276 JMP #02D6 + 0x541E0007, // 0277 LDINT R7 8 + 0x1C1C0C07, // 0278 EQ R7 R6 R7 + 0x781E000B, // 0279 JMPF R7 #0286 + 0x8C1C0906, // 027A GETMET R7 R4 K6 + 0x88240916, // 027B GETMBR R9 R4 K22 + 0xB82A2400, // 027C GETNGBL R10 K18 + 0x8C281526, // 027D GETMET R10 R10 K38 + 0x5830004F, // 027E LDCONST R12 K79 + 0x50340200, // 027F LDBOOL R13 1 0 + 0x7C280600, // 0280 CALL R10 3 + 0x94281550, // 0281 GETIDX R10 R10 K80 + 0x94281551, // 0282 GETIDX R10 R10 K81 + 0x7C1C0600, // 0283 CALL R7 3 + 0x80040E00, // 0284 RET 1 R7 + 0x7002004F, // 0285 JMP #02D6 + 0x541E0008, // 0286 LDINT R7 9 + 0x1C1C0C07, // 0287 EQ R7 R6 R7 + 0x781E0005, // 0288 JMPF R7 #028F + 0x8C1C0906, // 0289 GETMET R7 R4 K6 + 0x8824090C, // 028A GETMBR R9 R4 K12 + 0x58280009, // 028B LDCONST R10 K9 + 0x7C1C0600, // 028C CALL R7 3 + 0x80040E00, // 028D RET 1 R7 + 0x70020046, // 028E JMP #02D6 + 0x541E0009, // 028F LDINT R7 10 + 0x1C1C0C07, // 0290 EQ R7 R6 R7 + 0x781E0015, // 0291 JMPF R7 #02A8 + 0xB81E2400, // 0292 GETNGBL R7 K18 + 0x8C1C0F26, // 0293 GETMET R7 R7 K38 + 0x5824004F, // 0294 LDCONST R9 K79 + 0x50280200, // 0295 LDBOOL R10 1 0 + 0x7C1C0600, // 0296 CALL R7 3 + 0x941C0F50, // 0297 GETIDX R7 R7 K80 + 0x941C0F52, // 0298 GETIDX R7 R7 K82 + 0x8C20071B, // 0299 GETMET R8 R3 K27 + 0x5C280E00, // 029A MOVE R10 R7 + 0x582C0053, // 029B LDCONST R11 K83 + 0x7C200600, // 029C CALL R8 3 + 0x24241105, // 029D GT R9 R8 K5 + 0x78260002, // 029E JMPF R9 #02A2 + 0x04241109, // 029F SUB R9 R8 K9 + 0x40260A09, // 02A0 CONNECT R9 K5 R9 + 0x941C0E09, // 02A1 GETIDX R7 R7 R9 + 0x8C240906, // 02A2 GETMET R9 R4 K6 + 0x882C0916, // 02A3 GETMBR R11 R4 K22 + 0x5C300E00, // 02A4 MOVE R12 R7 + 0x7C240600, // 02A5 CALL R9 3 + 0x80041200, // 02A6 RET 1 R9 + 0x7002002D, // 02A7 JMP #02D6 + 0x541E000E, // 02A8 LDINT R7 15 + 0x1C1C0C07, // 02A9 EQ R7 R6 R7 + 0x781E000B, // 02AA JMPF R7 #02B7 + 0x8C1C0906, // 02AB GETMET R7 R4 K6 + 0x88240916, // 02AC GETMBR R9 R4 K22 + 0xB82A2400, // 02AD GETNGBL R10 K18 + 0x8C281525, // 02AE GETMET R10 R10 K37 + 0x7C280200, // 02AF CALL R10 1 + 0x8C28151B, // 02B0 GETMET R10 R10 K27 + 0x5830001C, // 02B1 LDCONST R12 K28 + 0x5834001D, // 02B2 LDCONST R13 K29 + 0x7C280600, // 02B3 CALL R10 3 + 0x7C1C0600, // 02B4 CALL R7 3 + 0x80040E00, // 02B5 RET 1 R7 + 0x7002001E, // 02B6 JMP #02D6 + 0x541E0011, // 02B7 LDINT R7 18 + 0x1C1C0C07, // 02B8 EQ R7 R6 R7 + 0x781E000B, // 02B9 JMPF R7 #02C6 + 0x8C1C0906, // 02BA GETMET R7 R4 K6 + 0x88240916, // 02BB GETMBR R9 R4 K22 + 0xB82A2400, // 02BC GETNGBL R10 K18 + 0x8C281525, // 02BD GETMET R10 R10 K37 + 0x7C280200, // 02BE CALL R10 1 + 0x8C28151B, // 02BF GETMET R10 R10 K27 + 0x5830001C, // 02C0 LDCONST R12 K28 + 0x5834001D, // 02C1 LDCONST R13 K29 + 0x7C280600, // 02C2 CALL R10 3 + 0x7C1C0600, // 02C3 CALL R7 3 + 0x80040E00, // 02C4 RET 1 R7 + 0x7002000F, // 02C5 JMP #02D6 + 0x541E0012, // 02C6 LDINT R7 19 + 0x1C1C0C07, // 02C7 EQ R7 R6 R7 + 0x781E000C, // 02C8 JMPF R7 #02D6 + 0x8C1C090A, // 02C9 GETMET R7 R4 K10 + 0x7C1C0200, // 02CA CALL R7 1 0x8C200F0B, // 02CB GETMET R8 R7 K11 - 0x58280009, // 02CC LDCONST R10 K9 + 0x58280005, // 02CC LDCONST R10 K5 0x882C090C, // 02CD GETMBR R11 R4 K12 0x5830000F, // 02CE LDCONST R12 K15 0x7C200800, // 02CF CALL R8 4 - 0x80040E00, // 02D0 RET 1 R7 - 0x7002009F, // 02D1 JMP #0372 - 0x541E003E, // 02D2 LDINT R7 63 - 0x1C1C0A07, // 02D3 EQ R7 R5 R7 - 0x781E0000, // 02D4 JMPF R7 #02D6 - 0x7002009B, // 02D5 JMP #0372 - 0x541E0029, // 02D6 LDINT R7 42 - 0x1C1C0A07, // 02D7 EQ R7 R5 R7 - 0x781E001D, // 02D8 JMPF R7 #02F7 - 0x1C1C0D05, // 02D9 EQ R7 R6 K5 - 0x781E0003, // 02DA JMPF R7 #02DF - 0x8C1C0911, // 02DB GETMET R7 R4 K17 - 0x7C1C0200, // 02DC CALL R7 1 - 0x80040E00, // 02DD RET 1 R7 - 0x70020016, // 02DE JMP #02F6 - 0x1C1C0D09, // 02DF EQ R7 R6 K9 - 0x781E0005, // 02E0 JMPF R7 #02E7 - 0x8C1C0906, // 02E1 GETMET R7 R4 K6 - 0x88240910, // 02E2 GETMBR R9 R4 K16 - 0x58280005, // 02E3 LDCONST R10 K5 - 0x7C1C0600, // 02E4 CALL R7 3 - 0x80040E00, // 02E5 RET 1 R7 - 0x7002000E, // 02E6 JMP #02F6 - 0x1C1C0D0D, // 02E7 EQ R7 R6 K13 - 0x781E0005, // 02E8 JMPF R7 #02EF - 0x8C1C0906, // 02E9 GETMET R7 R4 K6 - 0x8824090E, // 02EA GETMBR R9 R4 K14 - 0x58280009, // 02EB LDCONST R10 K9 - 0x7C1C0600, // 02EC CALL R7 3 - 0x80040E00, // 02ED RET 1 R7 - 0x70020006, // 02EE JMP #02F6 - 0x1C1C0D0F, // 02EF EQ R7 R6 K15 - 0x781E0004, // 02F0 JMPF R7 #02F6 - 0x8C1C0906, // 02F1 GETMET R7 R4 K6 - 0x88240918, // 02F2 GETMBR R9 R4 K24 - 0x4C280000, // 02F3 LDNIL R10 - 0x7C1C0600, // 02F4 CALL R7 3 - 0x80040E00, // 02F5 RET 1 R7 - 0x7002007A, // 02F6 JMP #0372 - 0x541E002A, // 02F7 LDINT R7 43 - 0x1C1C0A07, // 02F8 EQ R7 R5 R7 - 0x781E0016, // 02F9 JMPF R7 #0311 - 0x1C1C0D05, // 02FA EQ R7 R6 K5 - 0x781E0007, // 02FB JMPF R7 #0304 - 0x8C1C0906, // 02FC GETMET R7 R4 K6 - 0x88240916, // 02FD GETMBR R9 R4 K22 - 0xB82A2400, // 02FE GETNGBL R10 K18 - 0x8C281554, // 02FF GETMET R10 R10 K84 - 0x7C280200, // 0300 CALL R10 1 - 0x7C1C0600, // 0301 CALL R7 3 - 0x80040E00, // 0302 RET 1 R7 - 0x7002000B, // 0303 JMP #0310 - 0x1C1C0D09, // 0304 EQ R7 R6 K9 - 0x781E0009, // 0305 JMPF R7 #0310 - 0x8C1C0911, // 0306 GETMET R7 R4 K17 - 0x7C1C0200, // 0307 CALL R7 1 - 0x8C200F0B, // 0308 GETMET R8 R7 K11 - 0x4C280000, // 0309 LDNIL R10 - 0x882C0916, // 030A GETMBR R11 R4 K22 - 0xB8322400, // 030B GETNGBL R12 K18 - 0x8C301954, // 030C GETMET R12 R12 K84 - 0x7C300200, // 030D CALL R12 1 - 0x7C200800, // 030E CALL R8 4 - 0x80040E00, // 030F RET 1 R7 - 0x70020060, // 0310 JMP #0372 - 0x541E002B, // 0311 LDINT R7 44 - 0x1C1C0A07, // 0312 EQ R7 R5 R7 - 0x781E001C, // 0313 JMPF R7 #0331 - 0x1C1C0D05, // 0314 EQ R7 R6 K5 - 0x781E0005, // 0315 JMPF R7 #031C - 0x8C1C0906, // 0316 GETMET R7 R4 K6 - 0x8824090E, // 0317 GETMBR R9 R4 K14 - 0x58280009, // 0318 LDCONST R10 K9 - 0x7C1C0600, // 0319 CALL R7 3 - 0x80040E00, // 031A RET 1 R7 - 0x70020013, // 031B JMP #0330 - 0x1C1C0D09, // 031C EQ R7 R6 K9 - 0x781E0005, // 031D JMPF R7 #0324 - 0x8C1C0906, // 031E GETMET R7 R4 K6 - 0x8824090E, // 031F GETMBR R9 R4 K14 - 0x542A0003, // 0320 LDINT R10 4 - 0x7C1C0600, // 0321 CALL R7 3 - 0x80040E00, // 0322 RET 1 R7 - 0x7002000B, // 0323 JMP #0330 - 0x1C1C0D0D, // 0324 EQ R7 R6 K13 - 0x781E0009, // 0325 JMPF R7 #0330 - 0x8C1C0911, // 0326 GETMET R7 R4 K17 - 0x7C1C0200, // 0327 CALL R7 1 - 0x8C200F0B, // 0328 GETMET R8 R7 K11 - 0x4C280000, // 0329 LDNIL R10 - 0x8C2C0906, // 032A GETMET R11 R4 K6 - 0x8834090E, // 032B GETMBR R13 R4 K14 - 0x543A0003, // 032C LDINT R14 4 - 0x7C2C0600, // 032D CALL R11 3 - 0x7C200600, // 032E CALL R8 3 - 0x80040E00, // 032F RET 1 R7 - 0x70020040, // 0330 JMP #0372 - 0x541E0030, // 0331 LDINT R7 49 - 0x1C1C0A07, // 0332 EQ R7 R5 R7 - 0x781E0010, // 0333 JMPF R7 #0345 - 0x1C1C0D0F, // 0334 EQ R7 R6 K15 - 0x781E0005, // 0335 JMPF R7 #033C - 0x8C1C0906, // 0336 GETMET R7 R4 K6 - 0x8824090E, // 0337 GETMBR R9 R4 K14 - 0x542A001D, // 0338 LDINT R10 30 - 0x7C1C0600, // 0339 CALL R7 3 - 0x80040E00, // 033A RET 1 R7 - 0x70020007, // 033B JMP #0344 - 0x541EFFFB, // 033C LDINT R7 65532 - 0x1C1C0C07, // 033D EQ R7 R6 R7 - 0x781E0004, // 033E JMPF R7 #0344 - 0x8C1C0906, // 033F GETMET R7 R4 K6 - 0x8824092A, // 0340 GETMBR R9 R4 K42 - 0x542A0003, // 0341 LDINT R10 4 - 0x7C1C0600, // 0342 CALL R7 3 - 0x80040E00, // 0343 RET 1 R7 - 0x7002002C, // 0344 JMP #0372 - 0x541E001C, // 0345 LDINT R7 29 - 0x1C1C0A07, // 0346 EQ R7 R5 R7 - 0x781E0021, // 0347 JMPF R7 #036A - 0x1C1C0D0F, // 0348 EQ R7 R6 K15 - 0x781E0016, // 0349 JMPF R7 #0361 - 0x8C1C0911, // 034A GETMET R7 R4 K17 - 0x7C1C0200, // 034B CALL R7 1 - 0x88200133, // 034C GETMBR R8 R0 K51 - 0x8C201155, // 034D GETMET R8 R8 K85 - 0x50280200, // 034E LDBOOL R10 1 0 - 0x7C200400, // 034F CALL R8 2 - 0x60240010, // 0350 GETGBL R9 G16 - 0x5C281000, // 0351 MOVE R10 R8 - 0x7C240200, // 0352 CALL R9 1 - 0xA8020007, // 0353 EXBLK 0 #035C - 0x5C281200, // 0354 MOVE R10 R9 - 0x7C280000, // 0355 CALL R10 0 - 0x8C2C0F0B, // 0356 GETMET R11 R7 K11 - 0x4C340000, // 0357 LDNIL R13 - 0x8838090C, // 0358 GETMBR R14 R4 K12 - 0x5C3C1400, // 0359 MOVE R15 R10 - 0x7C2C0800, // 035A CALL R11 4 - 0x7001FFF7, // 035B JMP #0354 - 0x5824003A, // 035C LDCONST R9 K58 - 0xAC240200, // 035D CATCH R9 1 0 - 0xB0080000, // 035E RAISE 2 R0 R0 - 0x80040E00, // 035F RET 1 R7 - 0x70020007, // 0360 JMP #0369 - 0x601C0003, // 0361 GETGBL R7 G3 - 0x5C200000, // 0362 MOVE R8 R0 - 0x7C1C0200, // 0363 CALL R7 1 - 0x8C1C0F56, // 0364 GETMET R7 R7 K86 - 0x5C240200, // 0365 MOVE R9 R1 - 0x5C280400, // 0366 MOVE R10 R2 - 0x7C1C0600, // 0367 CALL R7 3 - 0x80040E00, // 0368 RET 1 R7 - 0x70020007, // 0369 JMP #0372 - 0x601C0003, // 036A GETGBL R7 G3 - 0x5C200000, // 036B MOVE R8 R0 - 0x7C1C0200, // 036C CALL R7 1 - 0x8C1C0F56, // 036D GETMET R7 R7 K86 - 0x5C240200, // 036E MOVE R9 R1 - 0x5C280400, // 036F MOVE R10 R2 - 0x7C1C0600, // 0370 CALL R7 3 - 0x80040E00, // 0371 RET 1 R7 - 0x80000000, // 0372 RET 0 + 0x8C200F0B, // 02D0 GETMET R8 R7 K11 + 0x58280009, // 02D1 LDCONST R10 K9 + 0x882C090C, // 02D2 GETMBR R11 R4 K12 + 0x5830000F, // 02D3 LDCONST R12 K15 + 0x7C200800, // 02D4 CALL R8 4 + 0x80040E00, // 02D5 RET 1 R7 + 0x7002009F, // 02D6 JMP #0377 + 0x541E003E, // 02D7 LDINT R7 63 + 0x1C1C0A07, // 02D8 EQ R7 R5 R7 + 0x781E0000, // 02D9 JMPF R7 #02DB + 0x7002009B, // 02DA JMP #0377 + 0x541E0029, // 02DB LDINT R7 42 + 0x1C1C0A07, // 02DC EQ R7 R5 R7 + 0x781E001D, // 02DD JMPF R7 #02FC + 0x1C1C0D05, // 02DE EQ R7 R6 K5 + 0x781E0003, // 02DF JMPF R7 #02E4 + 0x8C1C0911, // 02E0 GETMET R7 R4 K17 + 0x7C1C0200, // 02E1 CALL R7 1 + 0x80040E00, // 02E2 RET 1 R7 + 0x70020016, // 02E3 JMP #02FB + 0x1C1C0D09, // 02E4 EQ R7 R6 K9 + 0x781E0005, // 02E5 JMPF R7 #02EC + 0x8C1C0906, // 02E6 GETMET R7 R4 K6 + 0x88240910, // 02E7 GETMBR R9 R4 K16 + 0x58280005, // 02E8 LDCONST R10 K5 + 0x7C1C0600, // 02E9 CALL R7 3 + 0x80040E00, // 02EA RET 1 R7 + 0x7002000E, // 02EB JMP #02FB + 0x1C1C0D0D, // 02EC EQ R7 R6 K13 + 0x781E0005, // 02ED JMPF R7 #02F4 + 0x8C1C0906, // 02EE GETMET R7 R4 K6 + 0x8824090E, // 02EF GETMBR R9 R4 K14 + 0x58280009, // 02F0 LDCONST R10 K9 + 0x7C1C0600, // 02F1 CALL R7 3 + 0x80040E00, // 02F2 RET 1 R7 + 0x70020006, // 02F3 JMP #02FB + 0x1C1C0D0F, // 02F4 EQ R7 R6 K15 + 0x781E0004, // 02F5 JMPF R7 #02FB + 0x8C1C0906, // 02F6 GETMET R7 R4 K6 + 0x88240918, // 02F7 GETMBR R9 R4 K24 + 0x4C280000, // 02F8 LDNIL R10 + 0x7C1C0600, // 02F9 CALL R7 3 + 0x80040E00, // 02FA RET 1 R7 + 0x7002007A, // 02FB JMP #0377 + 0x541E002A, // 02FC LDINT R7 43 + 0x1C1C0A07, // 02FD EQ R7 R5 R7 + 0x781E0016, // 02FE JMPF R7 #0316 + 0x1C1C0D05, // 02FF EQ R7 R6 K5 + 0x781E0007, // 0300 JMPF R7 #0309 + 0x8C1C0906, // 0301 GETMET R7 R4 K6 + 0x88240916, // 0302 GETMBR R9 R4 K22 + 0xB82A2400, // 0303 GETNGBL R10 K18 + 0x8C281554, // 0304 GETMET R10 R10 K84 + 0x7C280200, // 0305 CALL R10 1 + 0x7C1C0600, // 0306 CALL R7 3 + 0x80040E00, // 0307 RET 1 R7 + 0x7002000B, // 0308 JMP #0315 + 0x1C1C0D09, // 0309 EQ R7 R6 K9 + 0x781E0009, // 030A JMPF R7 #0315 + 0x8C1C0911, // 030B GETMET R7 R4 K17 + 0x7C1C0200, // 030C CALL R7 1 + 0x8C200F0B, // 030D GETMET R8 R7 K11 + 0x4C280000, // 030E LDNIL R10 + 0x882C0916, // 030F GETMBR R11 R4 K22 + 0xB8322400, // 0310 GETNGBL R12 K18 + 0x8C301954, // 0311 GETMET R12 R12 K84 + 0x7C300200, // 0312 CALL R12 1 + 0x7C200800, // 0313 CALL R8 4 + 0x80040E00, // 0314 RET 1 R7 + 0x70020060, // 0315 JMP #0377 + 0x541E002B, // 0316 LDINT R7 44 + 0x1C1C0A07, // 0317 EQ R7 R5 R7 + 0x781E001C, // 0318 JMPF R7 #0336 + 0x1C1C0D05, // 0319 EQ R7 R6 K5 + 0x781E0005, // 031A JMPF R7 #0321 + 0x8C1C0906, // 031B GETMET R7 R4 K6 + 0x8824090E, // 031C GETMBR R9 R4 K14 + 0x58280009, // 031D LDCONST R10 K9 + 0x7C1C0600, // 031E CALL R7 3 + 0x80040E00, // 031F RET 1 R7 + 0x70020013, // 0320 JMP #0335 + 0x1C1C0D09, // 0321 EQ R7 R6 K9 + 0x781E0005, // 0322 JMPF R7 #0329 + 0x8C1C0906, // 0323 GETMET R7 R4 K6 + 0x8824090E, // 0324 GETMBR R9 R4 K14 + 0x542A0003, // 0325 LDINT R10 4 + 0x7C1C0600, // 0326 CALL R7 3 + 0x80040E00, // 0327 RET 1 R7 + 0x7002000B, // 0328 JMP #0335 + 0x1C1C0D0D, // 0329 EQ R7 R6 K13 + 0x781E0009, // 032A JMPF R7 #0335 + 0x8C1C0911, // 032B GETMET R7 R4 K17 + 0x7C1C0200, // 032C CALL R7 1 + 0x8C200F0B, // 032D GETMET R8 R7 K11 + 0x4C280000, // 032E LDNIL R10 + 0x8C2C0906, // 032F GETMET R11 R4 K6 + 0x8834090E, // 0330 GETMBR R13 R4 K14 + 0x543A0003, // 0331 LDINT R14 4 + 0x7C2C0600, // 0332 CALL R11 3 + 0x7C200600, // 0333 CALL R8 3 + 0x80040E00, // 0334 RET 1 R7 + 0x70020040, // 0335 JMP #0377 + 0x541E0030, // 0336 LDINT R7 49 + 0x1C1C0A07, // 0337 EQ R7 R5 R7 + 0x781E0010, // 0338 JMPF R7 #034A + 0x1C1C0D0F, // 0339 EQ R7 R6 K15 + 0x781E0005, // 033A JMPF R7 #0341 + 0x8C1C0906, // 033B GETMET R7 R4 K6 + 0x8824090E, // 033C GETMBR R9 R4 K14 + 0x542A001D, // 033D LDINT R10 30 + 0x7C1C0600, // 033E CALL R7 3 + 0x80040E00, // 033F RET 1 R7 + 0x70020007, // 0340 JMP #0349 + 0x541EFFFB, // 0341 LDINT R7 65532 + 0x1C1C0C07, // 0342 EQ R7 R6 R7 + 0x781E0004, // 0343 JMPF R7 #0349 + 0x8C1C0906, // 0344 GETMET R7 R4 K6 + 0x8824092A, // 0345 GETMBR R9 R4 K42 + 0x542A0003, // 0346 LDINT R10 4 + 0x7C1C0600, // 0347 CALL R7 3 + 0x80040E00, // 0348 RET 1 R7 + 0x7002002C, // 0349 JMP #0377 + 0x541E001C, // 034A LDINT R7 29 + 0x1C1C0A07, // 034B EQ R7 R5 R7 + 0x781E0021, // 034C JMPF R7 #036F + 0x1C1C0D0F, // 034D EQ R7 R6 K15 + 0x781E0016, // 034E JMPF R7 #0366 + 0x8C1C0911, // 034F GETMET R7 R4 K17 + 0x7C1C0200, // 0350 CALL R7 1 + 0x88200133, // 0351 GETMBR R8 R0 K51 + 0x8C201155, // 0352 GETMET R8 R8 K85 + 0x50280200, // 0353 LDBOOL R10 1 0 + 0x7C200400, // 0354 CALL R8 2 + 0x60240010, // 0355 GETGBL R9 G16 + 0x5C281000, // 0356 MOVE R10 R8 + 0x7C240200, // 0357 CALL R9 1 + 0xA8020007, // 0358 EXBLK 0 #0361 + 0x5C281200, // 0359 MOVE R10 R9 + 0x7C280000, // 035A CALL R10 0 + 0x8C2C0F0B, // 035B GETMET R11 R7 K11 + 0x4C340000, // 035C LDNIL R13 + 0x8838090C, // 035D GETMBR R14 R4 K12 + 0x5C3C1400, // 035E MOVE R15 R10 + 0x7C2C0800, // 035F CALL R11 4 + 0x7001FFF7, // 0360 JMP #0359 + 0x5824003A, // 0361 LDCONST R9 K58 + 0xAC240200, // 0362 CATCH R9 1 0 + 0xB0080000, // 0363 RAISE 2 R0 R0 + 0x80040E00, // 0364 RET 1 R7 + 0x70020007, // 0365 JMP #036E + 0x601C0003, // 0366 GETGBL R7 G3 + 0x5C200000, // 0367 MOVE R8 R0 + 0x7C1C0200, // 0368 CALL R7 1 + 0x8C1C0F56, // 0369 GETMET R7 R7 K86 + 0x5C240200, // 036A MOVE R9 R1 + 0x5C280400, // 036B MOVE R10 R2 + 0x7C1C0600, // 036C CALL R7 3 + 0x80040E00, // 036D RET 1 R7 + 0x70020007, // 036E JMP #0377 + 0x601C0003, // 036F GETGBL R7 G3 + 0x5C200000, // 0370 MOVE R8 R0 + 0x7C1C0200, // 0371 CALL R7 1 + 0x8C1C0F56, // 0372 GETMET R7 R7 K86 + 0x5C240200, // 0373 MOVE R9 R1 + 0x5C280400, // 0374 MOVE R10 R2 + 0x7C1C0600, // 0375 CALL R7 3 + 0x80040E00, // 0376 RET 1 R7 + 0x80000000, // 0377 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h index f02e3045d..5ce3adfc0 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h @@ -180,11 +180,11 @@ be_local_closure(Matter_Fabric_tojson, /* name */ /******************************************************************** -** Solidified function: before_remove +** Solidified function: get_fabric_index ********************************************************************/ -be_local_closure(Matter_Fabric_before_remove, /* name */ +be_local_closure(Matter_Fabric_get_fabric_index, /* name */ be_nested_proto( - 9, /* nstack */ + 2, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -192,38 +192,41 @@ be_local_closure(Matter_Fabric_before_remove, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(format), - /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2DFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20_X28removed_X29), - /* K5 */ be_nested_str_weak(get_fabric_id), - /* K6 */ be_nested_str_weak(copy), - /* K7 */ be_nested_str_weak(reverse), - /* K8 */ be_nested_str_weak(tohex), - /* K9 */ be_const_int(2), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(fabric_index), }), - be_str_weak(before_remove), + be_str_weak(get_fabric_index), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x8C100303, // 0003 GETMET R4 R1 K3 - 0x58180004, // 0004 LDCONST R6 K4 - 0x8C1C0105, // 0005 GETMET R7 R0 K5 - 0x7C1C0200, // 0006 CALL R7 1 - 0x8C1C0F06, // 0007 GETMET R7 R7 K6 - 0x7C1C0200, // 0008 CALL R7 1 - 0x8C1C0F07, // 0009 GETMET R7 R7 K7 - 0x7C1C0200, // 000A CALL R7 1 - 0x8C1C0F08, // 000B GETMET R7 R7 K8 - 0x7C1C0200, // 000C CALL R7 1 - 0x7C100600, // 000D CALL R4 3 - 0x58140009, // 000E LDCONST R5 K9 - 0x7C080600, // 000F CALL R2 3 - 0x80000000, // 0010 RET 0 + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_admin_subject +********************************************************************/ +be_local_closure(Matter_Fabric_get_admin_subject, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(admin_subject), + }), + be_str_weak(get_admin_subject), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -289,65 +292,9 @@ be_local_closure(Matter_Fabric_get_old_recent_session, /* name */ /******************************************************************** -** Solidified function: get_ipk_group_key +** Solidified function: get_device_id ********************************************************************/ -be_local_closure(Matter_Fabric_get_ipk_group_key, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(ipk_epoch_key), - /* K1 */ be_nested_str_weak(fabric_compressed), - /* K2 */ be_nested_str_weak(crypto), - /* K3 */ be_nested_str_weak(HKDF_SHA256), - /* K4 */ be_nested_str_weak(fromstring), - /* K5 */ be_nested_str_weak(_GROUP_KEY), - /* K6 */ be_nested_str_weak(derive), - }), - be_str_weak(get_ipk_group_key), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x74060003, // 0003 JMPT R1 #0008 - 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x4C080000, // 0005 LDNIL R2 - 0x1C040202, // 0006 EQ R1 R1 R2 - 0x78060001, // 0007 JMPF R1 #000A - 0x4C040000, // 0008 LDNIL R1 - 0x80040200, // 0009 RET 1 R1 - 0xA4060400, // 000A IMPORT R1 K2 - 0x8C080303, // 000B GETMET R2 R1 K3 - 0x7C080200, // 000C CALL R2 1 - 0x600C0015, // 000D GETGBL R3 G21 - 0x7C0C0000, // 000E CALL R3 0 - 0x8C0C0704, // 000F GETMET R3 R3 K4 - 0x88140105, // 0010 GETMBR R5 R0 K5 - 0x7C0C0400, // 0011 CALL R3 2 - 0x8C100506, // 0012 GETMET R4 R2 K6 - 0x88180100, // 0013 GETMBR R6 R0 K0 - 0x881C0101, // 0014 GETMBR R7 R0 K1 - 0x5C200600, // 0015 MOVE R8 R3 - 0x5426000F, // 0016 LDINT R9 16 - 0x7C100A00, // 0017 CALL R4 5 - 0x80040800, // 0018 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_ipk_epoch_key -********************************************************************/ -be_local_closure(Matter_Fabric_get_ipk_epoch_key, /* name */ +be_local_closure(Matter_Fabric_get_device_id, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -358,9 +305,9 @@ be_local_closure(Matter_Fabric_get_ipk_epoch_key, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(ipk_epoch_key), + /* K0 */ be_nested_str_weak(device_id), }), - be_str_weak(get_ipk_epoch_key), + be_str_weak(get_device_id), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -372,11 +319,11 @@ be_local_closure(Matter_Fabric_get_ipk_epoch_key, /* name */ /******************************************************************** -** Solidified function: get_icac +** Solidified function: counter_group_ctrl_snd_next ********************************************************************/ -be_local_closure(Matter_Fabric_get_icac, /* name */ +be_local_closure(Matter_Fabric_counter_group_ctrl_snd_next, /* name */ be_nested_proto( - 2, /* nstack */ + 9, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -384,14 +331,54 @@ be_local_closure(Matter_Fabric_get_icac, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(icac), + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(log), + /* K5 */ be_nested_str_weak(format), + /* K6 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_ctrl_snd_X3D_X25i), + /* K7 */ be_const_int(3), + /* K8 */ be_nested_str_weak(matter), + /* K9 */ be_nested_str_weak(Counter), + /* K10 */ be_nested_str_weak(is_greater), + /* K11 */ be_nested_str_weak(counter_group_ctrl_snd), + /* K12 */ be_nested_str_weak(_GROUP_SND_INCR), + /* K13 */ be_nested_str_weak(does_persist), + /* K14 */ be_nested_str_weak(save), }), - be_str_weak(get_icac), + be_str_weak(counter_group_ctrl_snd_next), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[28]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x7C080200, // 0003 CALL R2 1 + 0xB80E0600, // 0004 GETNGBL R3 K3 + 0x8C0C0704, // 0005 GETMET R3 R3 K4 + 0x8C140305, // 0006 GETMET R5 R1 K5 + 0x581C0006, // 0007 LDCONST R7 K6 + 0x5C200400, // 0008 MOVE R8 R2 + 0x7C140600, // 0009 CALL R5 3 + 0x58180007, // 000A LDCONST R6 K7 + 0x7C0C0600, // 000B CALL R3 3 + 0xB80E1000, // 000C GETNGBL R3 K8 + 0x880C0709, // 000D GETMBR R3 R3 K9 + 0x8C0C070A, // 000E GETMET R3 R3 K10 + 0x5C140400, // 000F MOVE R5 R2 + 0x8818010B, // 0010 GETMBR R6 R0 K11 + 0x7C0C0600, // 0011 CALL R3 3 + 0x780E0007, // 0012 JMPF R3 #001B + 0x880C010C, // 0013 GETMBR R3 R0 K12 + 0x000C0403, // 0014 ADD R3 R2 R3 + 0x90021603, // 0015 SETMBR R0 K11 R3 + 0x8C0C010D, // 0016 GETMET R3 R0 K13 + 0x7C0C0200, // 0017 CALL R3 1 + 0x780E0001, // 0018 JMPF R3 #001B + 0x8C0C010E, // 0019 GETMET R3 R0 K14 + 0x7C0C0200, // 001A CALL R3 1 + 0x80040400, // 001B RET 1 R2 }) ) ); @@ -452,6 +439,63 @@ be_local_closure(Matter_Fabric_get_fabric_compressed, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: add_session +********************************************************************/ +be_local_closure(Matter_Fabric_add_session, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(_sessions), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(_MAX_CASE), + /* K3 */ be_nested_str_weak(remove), + /* K4 */ be_nested_str_weak(get_oldest_session), + /* K5 */ be_nested_str_weak(push), + }), + be_str_weak(add_session), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x1C080403, // 0005 EQ R2 R2 R3 + 0x780A0012, // 0006 JMPF R2 #001A + 0x6008000C, // 0007 GETGBL R2 G12 + 0x880C0100, // 0008 GETMBR R3 R0 K0 + 0x7C080200, // 0009 CALL R2 1 + 0x880C0102, // 000A GETMBR R3 R0 K2 + 0x28080403, // 000B GE R2 R2 R3 + 0x780A0008, // 000C JMPF R2 #0016 + 0x88080100, // 000D GETMBR R2 R0 K0 + 0x8C080503, // 000E GETMET R2 R2 K3 + 0x88100100, // 000F GETMBR R4 R0 K0 + 0x8C100901, // 0010 GETMET R4 R4 K1 + 0x8C180104, // 0011 GETMET R6 R0 K4 + 0x7C180200, // 0012 CALL R6 1 + 0x7C100400, // 0013 CALL R4 2 + 0x7C080400, // 0014 CALL R2 2 + 0x7001FFF0, // 0015 JMP #0007 + 0x88080100, // 0016 GETMBR R2 R0 K0 + 0x8C080505, // 0017 GETMET R2 R2 K5 + 0x5C100200, // 0018 MOVE R4 R1 + 0x7C080400, // 0019 CALL R2 2 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: log_new_fabric ********************************************************************/ @@ -504,11 +548,11 @@ be_local_closure(Matter_Fabric_log_new_fabric, /* name */ /******************************************************************** -** Solidified function: get_device_id +** Solidified function: before_remove ********************************************************************/ -be_local_closure(Matter_Fabric_get_device_id, /* name */ +be_local_closure(Matter_Fabric_before_remove, /* name */ be_nested_proto( - 2, /* nstack */ + 9, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -516,41 +560,38 @@ be_local_closure(Matter_Fabric_get_device_id, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(device_id), + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(format), + /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2DFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20_X28removed_X29), + /* K5 */ be_nested_str_weak(get_fabric_id), + /* K6 */ be_nested_str_weak(copy), + /* K7 */ be_nested_str_weak(reverse), + /* K8 */ be_nested_str_weak(tohex), + /* K9 */ be_const_int(2), }), - be_str_weak(get_device_id), + be_str_weak(before_remove), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_admin_subject -********************************************************************/ -be_local_closure(Matter_Fabric_get_admin_subject, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(admin_subject), - }), - be_str_weak(get_admin_subject), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[17]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xB80A0200, // 0001 GETNGBL R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x8C100303, // 0003 GETMET R4 R1 K3 + 0x58180004, // 0004 LDCONST R6 K4 + 0x8C1C0105, // 0005 GETMET R7 R0 K5 + 0x7C1C0200, // 0006 CALL R7 1 + 0x8C1C0F06, // 0007 GETMET R7 R7 K6 + 0x7C1C0200, // 0008 CALL R7 1 + 0x8C1C0F07, // 0009 GETMET R7 R7 K7 + 0x7C1C0200, // 000A CALL R7 1 + 0x8C1C0F08, // 000B GETMET R7 R7 K8 + 0x7C1C0200, // 000C CALL R7 1 + 0x7C100600, // 000D CALL R4 3 + 0x58140009, // 000E LDCONST R5 K9 + 0x7C080600, // 000F CALL R2 3 + 0x80000000, // 0010 RET 0 }) ) ); @@ -675,6 +716,193 @@ be_local_closure(Matter_Fabric_fromjson, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(Matter_Fabric_init, /* 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[18]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(_store), + /* K2 */ be_nested_str_weak(_sessions), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(Expirable_list), + /* K5 */ be_nested_str_weak(fabric_label), + /* K6 */ be_nested_str_weak(), + /* K7 */ be_nested_str_weak(created), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(rtc), + /* K10 */ be_nested_str_weak(utc), + /* K11 */ be_nested_str_weak(_counter_group_data_snd_impl), + /* K12 */ be_nested_str_weak(Counter), + /* K13 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), + /* K14 */ be_nested_str_weak(counter_group_data_snd), + /* K15 */ be_nested_str_weak(next), + /* K16 */ be_nested_str_weak(_GROUP_SND_INCR), + /* K17 */ be_nested_str_weak(counter_group_ctrl_snd), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x90020201, // 0001 SETMBR R0 K1 R1 + 0xB80E0600, // 0002 GETNGBL R3 K3 + 0x8C0C0704, // 0003 GETMET R3 R3 K4 + 0x7C0C0200, // 0004 CALL R3 1 + 0x90020403, // 0005 SETMBR R0 K2 R3 + 0x90020B06, // 0006 SETMBR R0 K5 K6 + 0xB80E1000, // 0007 GETNGBL R3 K8 + 0x8C0C0709, // 0008 GETMET R3 R3 K9 + 0x7C0C0200, // 0009 CALL R3 1 + 0x940C070A, // 000A GETIDX R3 R3 K10 + 0x90020E03, // 000B SETMBR R0 K7 R3 + 0xB80E0600, // 000C GETNGBL R3 K3 + 0x8C0C070C, // 000D GETMET R3 R3 K12 + 0x7C0C0200, // 000E CALL R3 1 + 0x90021603, // 000F SETMBR R0 K11 R3 + 0xB80E0600, // 0010 GETNGBL R3 K3 + 0x8C0C070C, // 0011 GETMET R3 R3 K12 + 0x7C0C0200, // 0012 CALL R3 1 + 0x90021A03, // 0013 SETMBR R0 K13 R3 + 0x880C010B, // 0014 GETMBR R3 R0 K11 + 0x8C0C070F, // 0015 GETMET R3 R3 K15 + 0x7C0C0200, // 0016 CALL R3 1 + 0x88100110, // 0017 GETMBR R4 R0 K16 + 0x000C0604, // 0018 ADD R3 R3 R4 + 0x90021C03, // 0019 SETMBR R0 K14 R3 + 0x880C010B, // 001A GETMBR R3 R0 K11 + 0x8C0C070F, // 001B GETMET R3 R3 K15 + 0x7C0C0200, // 001C CALL R3 1 + 0x88100110, // 001D GETMBR R4 R0 K16 + 0x000C0604, // 001E ADD R3 R3 R4 + 0x90022203, // 001F SETMBR R0 K17 R3 + 0x80000000, // 0020 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_ipk_group_key +********************************************************************/ +be_local_closure(Matter_Fabric_get_ipk_group_key, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(ipk_epoch_key), + /* K1 */ be_nested_str_weak(fabric_compressed), + /* K2 */ be_nested_str_weak(crypto), + /* K3 */ be_nested_str_weak(HKDF_SHA256), + /* K4 */ be_nested_str_weak(fromstring), + /* K5 */ be_nested_str_weak(_GROUP_KEY), + /* K6 */ be_nested_str_weak(derive), + }), + be_str_weak(get_ipk_group_key), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x74060003, // 0003 JMPT R1 #0008 + 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x4C080000, // 0005 LDNIL R2 + 0x1C040202, // 0006 EQ R1 R1 R2 + 0x78060001, // 0007 JMPF R1 #000A + 0x4C040000, // 0008 LDNIL R1 + 0x80040200, // 0009 RET 1 R1 + 0xA4060400, // 000A IMPORT R1 K2 + 0x8C080303, // 000B GETMET R2 R1 K3 + 0x7C080200, // 000C CALL R2 1 + 0x600C0015, // 000D GETGBL R3 G21 + 0x7C0C0000, // 000E CALL R3 0 + 0x8C0C0704, // 000F GETMET R3 R3 K4 + 0x88140105, // 0010 GETMBR R5 R0 K5 + 0x7C0C0400, // 0011 CALL R3 2 + 0x8C100506, // 0012 GETMET R4 R2 K6 + 0x88180100, // 0013 GETMBR R6 R0 K0 + 0x881C0101, // 0014 GETMBR R7 R0 K1 + 0x5C200600, // 0015 MOVE R8 R3 + 0x5426000F, // 0016 LDINT R9 16 + 0x7C100A00, // 0017 CALL R4 5 + 0x80040800, // 0018 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_ipk_epoch_key +********************************************************************/ +be_local_closure(Matter_Fabric_get_ipk_epoch_key, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(ipk_epoch_key), + }), + be_str_weak(get_ipk_epoch_key), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_oldest_session +********************************************************************/ +be_local_closure(Matter_Fabric_get_oldest_session, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(get_old_recent_session), + }), + be_str_weak(get_oldest_session), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x500C0200, // 0001 LDBOOL R3 1 0 + 0x7C040400, // 0002 CALL R1 2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: get_fabric_label ********************************************************************/ @@ -703,47 +931,28 @@ be_local_closure(Matter_Fabric_get_fabric_label, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: get_newest_session ********************************************************************/ -be_local_closure(Matter_Fabric_init, /* name */ +be_local_closure(Matter_Fabric_get_newest_session, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ + 4, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(_store), - /* K2 */ be_nested_str_weak(_sessions), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Expirable_list), - /* K5 */ be_nested_str_weak(fabric_label), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(created), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(rtc), - /* K10 */ be_nested_str_weak(utc), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(get_old_recent_session), }), - be_str_weak(init), + be_str_weak(get_newest_session), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x90020201, // 0001 SETMBR R0 K1 R1 - 0xB80E0600, // 0002 GETNGBL R3 K3 - 0x8C0C0704, // 0003 GETMET R3 R3 K4 - 0x7C0C0200, // 0004 CALL R3 1 - 0x90020403, // 0005 SETMBR R0 K2 R3 - 0x90020B06, // 0006 SETMBR R0 K5 K6 - 0xB80E1000, // 0007 GETNGBL R3 K8 - 0x8C0C0709, // 0008 GETMET R3 R3 K9 - 0x7C0C0200, // 0009 CALL R3 1 - 0x940C070A, // 000A GETIDX R3 R3 K10 - 0x90020E03, // 000B SETMBR R0 K7 R3 - 0x80000000, // 000C RET 0 + ( &(const binstruction[ 4]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x500C0000, // 0001 LDBOOL R3 0 0 + 0x7C040400, // 0002 CALL R1 2 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -751,9 +960,9 @@ be_local_closure(Matter_Fabric_init, /* name */ /******************************************************************** -** Solidified function: get_fabric_index +** Solidified function: get_ca ********************************************************************/ -be_local_closure(Matter_Fabric_get_fabric_index, /* name */ +be_local_closure(Matter_Fabric_get_ca, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -764,9 +973,63 @@ be_local_closure(Matter_Fabric_get_fabric_index, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(fabric_index), + /* K0 */ be_nested_str_weak(root_ca_certificate), }), - be_str_weak(get_fabric_index), + be_str_weak(get_ca), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_icac +********************************************************************/ +be_local_closure(Matter_Fabric_get_icac, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(icac), + }), + be_str_weak(get_icac), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_noc +********************************************************************/ +be_local_closure(Matter_Fabric_get_noc, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(noc), + }), + be_str_weak(get_noc), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -832,63 +1095,9 @@ be_local_closure(Matter_Fabric_get_admin_vendor, /* name */ /******************************************************************** -** Solidified function: get_noc +** Solidified function: hydrate_post ********************************************************************/ -be_local_closure(Matter_Fabric_get_noc, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(noc), - }), - be_str_weak(get_noc), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_ca -********************************************************************/ -be_local_closure(Matter_Fabric_get_ca, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(root_ca_certificate), - }), - be_str_weak(get_ca), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_oldest_session -********************************************************************/ -be_local_closure(Matter_Fabric_get_oldest_session, /* name */ +be_local_closure(Matter_Fabric_hydrate_post, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -898,16 +1107,101 @@ be_local_closure(Matter_Fabric_get_oldest_session, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(get_old_recent_session), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(_counter_group_data_snd_impl), + /* K1 */ be_nested_str_weak(reset), + /* K2 */ be_nested_str_weak(counter_group_data_snd), + /* K3 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), + /* K4 */ be_nested_str_weak(counter_group_ctrl_snd), + /* K5 */ be_nested_str_weak(val), }), - be_str_weak(get_oldest_session), + be_str_weak(hydrate_post), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x500C0200, // 0001 LDBOOL R3 1 0 - 0x7C040400, // 0002 CALL R1 2 - 0x80040200, // 0003 RET 1 R1 + ( &(const binstruction[17]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x7C040400, // 0003 CALL R1 2 + 0x88040103, // 0004 GETMBR R1 R0 K3 + 0x8C040301, // 0005 GETMET R1 R1 K1 + 0x880C0104, // 0006 GETMBR R3 R0 K4 + 0x7C040400, // 0007 CALL R1 2 + 0x88040100, // 0008 GETMBR R1 R0 K0 + 0x8C040305, // 0009 GETMET R1 R1 K5 + 0x7C040200, // 000A CALL R1 1 + 0x90020401, // 000B SETMBR R0 K2 R1 + 0x88040103, // 000C GETMBR R1 R0 K3 + 0x8C040305, // 000D GETMET R1 R1 K5 + 0x7C040200, // 000E CALL R1 1 + 0x90020801, // 000F SETMBR R0 K4 R1 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: counter_group_data_snd_next +********************************************************************/ +be_local_closure(Matter_Fabric_counter_group_data_snd_next, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(_counter_group_data_snd_impl), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(log), + /* K5 */ be_nested_str_weak(format), + /* K6 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_data_snd_X3D_X25i), + /* K7 */ be_const_int(3), + /* K8 */ be_nested_str_weak(matter), + /* K9 */ be_nested_str_weak(Counter), + /* K10 */ be_nested_str_weak(is_greater), + /* K11 */ be_nested_str_weak(counter_group_data_snd), + /* K12 */ be_nested_str_weak(_GROUP_SND_INCR), + /* K13 */ be_nested_str_weak(does_persist), + /* K14 */ be_nested_str_weak(save), + }), + be_str_weak(counter_group_data_snd_next), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x7C080200, // 0003 CALL R2 1 + 0xB80E0600, // 0004 GETNGBL R3 K3 + 0x8C0C0704, // 0005 GETMET R3 R3 K4 + 0x8C140305, // 0006 GETMET R5 R1 K5 + 0x581C0006, // 0007 LDCONST R7 K6 + 0x5C200400, // 0008 MOVE R8 R2 + 0x7C140600, // 0009 CALL R5 3 + 0x58180007, // 000A LDCONST R6 K7 + 0x7C0C0600, // 000B CALL R3 3 + 0xB80E1000, // 000C GETNGBL R3 K8 + 0x880C0709, // 000D GETMBR R3 R3 K9 + 0x8C0C070A, // 000E GETMET R3 R3 K10 + 0x5C140400, // 000F MOVE R5 R2 + 0x8818010B, // 0010 GETMBR R6 R0 K11 + 0x7C0C0600, // 0011 CALL R3 3 + 0x780E0007, // 0012 JMPF R3 #001B + 0x880C010C, // 0013 GETMBR R3 R0 K12 + 0x000C0403, // 0014 ADD R3 R2 R3 + 0x90021603, // 0015 SETMBR R0 K11 R3 + 0x8C0C010D, // 0016 GETMET R3 R0 K13 + 0x7C0C0200, // 0017 CALL R3 1 + 0x780E0001, // 0018 JMPF R3 #001B + 0x8C0C010E, // 0019 GETMET R3 R0 K14 + 0x7C0C0200, // 001A CALL R3 1 + 0x80040400, // 001B RET 1 R2 }) ) ); @@ -955,142 +1249,64 @@ be_local_closure(Matter_Fabric_get_ca_pub, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: get_newest_session -********************************************************************/ -be_local_closure(Matter_Fabric_get_newest_session, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(get_old_recent_session), - }), - be_str_weak(get_newest_session), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x500C0000, // 0001 LDBOOL R3 0 0 - 0x7C040400, // 0002 CALL R1 2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_session -********************************************************************/ -be_local_closure(Matter_Fabric_add_session, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(_sessions), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(_MAX_CASE), - /* K3 */ be_nested_str_weak(remove), - /* K4 */ be_nested_str_weak(get_oldest_session), - /* K5 */ be_nested_str_weak(push), - }), - be_str_weak(add_session), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x1C080403, // 0005 EQ R2 R2 R3 - 0x780A0012, // 0006 JMPF R2 #001A - 0x6008000C, // 0007 GETGBL R2 G12 - 0x880C0100, // 0008 GETMBR R3 R0 K0 - 0x7C080200, // 0009 CALL R2 1 - 0x880C0102, // 000A GETMBR R3 R0 K2 - 0x28080403, // 000B GE R2 R2 R3 - 0x780A0008, // 000C JMPF R2 #0016 - 0x88080100, // 000D GETMBR R2 R0 K0 - 0x8C080503, // 000E GETMET R2 R2 K3 - 0x88100100, // 000F GETMBR R4 R0 K0 - 0x8C100901, // 0010 GETMET R4 R4 K1 - 0x8C180104, // 0011 GETMET R6 R0 K4 - 0x7C180200, // 0012 CALL R6 1 - 0x7C100400, // 0013 CALL R4 2 - 0x7C080400, // 0014 CALL R2 2 - 0x7001FFF0, // 0015 JMP #0007 - 0x88080100, // 0016 GETMBR R2 R0 K0 - 0x8C080505, // 0017 GETMET R2 R2 K5 - 0x5C100200, // 0018 MOVE R4 R1 - 0x7C080400, // 0019 CALL R2 2 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_Fabric ********************************************************************/ extern const bclass be_class_Matter_Expirable; be_local_class(Matter_Fabric, - 16, + 20, &be_class_Matter_Expirable, - be_nested_map(41, + be_nested_map(49, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(tojson, -1), be_const_closure(Matter_Fabric_tojson_closure) }, - { be_const_key_weak(created, 16), be_const_var(1) }, - { be_const_key_weak(device_id, -1), be_const_var(12) }, - { be_const_key_weak(get_old_recent_session, -1), be_const_closure(Matter_Fabric_get_old_recent_session_closure) }, - { be_const_key_weak(get_ipk_group_key, -1), be_const_closure(Matter_Fabric_get_ipk_group_key_closure) }, - { be_const_key_weak(admin_subject, -1), be_const_var(14) }, - { be_const_key_weak(ipk_epoch_key, -1), be_const_var(9) }, - { be_const_key_weak(set_fabric_index, -1), be_const_closure(Matter_Fabric_set_fabric_index_closure) }, - { be_const_key_weak(get_fabric_compressed, 7), be_const_closure(Matter_Fabric_get_fabric_compressed_closure) }, - { be_const_key_weak(_sessions, -1), be_const_var(4) }, - { be_const_key_weak(get_icac, -1), be_const_closure(Matter_Fabric_get_icac_closure) }, - { be_const_key_weak(icac, 29), be_const_var(8) }, - { be_const_key_weak(fabric_id, -1), be_const_var(10) }, - { be_const_key_weak(get_admin_subject, -1), be_const_closure(Matter_Fabric_get_admin_subject_closure) }, { be_const_key_weak(no_private_key, -1), be_const_var(5) }, - { be_const_key_weak(log_new_fabric, 34), be_const_closure(Matter_Fabric_log_new_fabric_closure) }, - { be_const_key_weak(get_device_id, -1), be_const_closure(Matter_Fabric_get_device_id_closure) }, - { be_const_key_weak(get_ipk_epoch_key, 13), be_const_closure(Matter_Fabric_get_ipk_epoch_key_closure) }, - { be_const_key_weak(fromjson, -1), be_const_static_closure(Matter_Fabric_fromjson_closure) }, - { be_const_key_weak(admin_vendor, -1), be_const_var(15) }, - { be_const_key_weak(init, 2), be_const_closure(Matter_Fabric_init_closure) }, - { be_const_key_weak(get_fabric_label, -1), be_const_closure(Matter_Fabric_get_fabric_label_closure) }, - { be_const_key_weak(noc, -1), be_const_var(7) }, - { be_const_key_weak(before_remove, 20), be_const_closure(Matter_Fabric_before_remove_closure) }, - { be_const_key_weak(get_fabric_index, -1), be_const_closure(Matter_Fabric_get_fabric_index_closure) }, - { be_const_key_weak(_GROUP_KEY, -1), be_nested_str_weak(GroupKey_X20v1_X2E0) }, - { be_const_key_weak(get_fabric_id, 8), be_const_closure(Matter_Fabric_get_fabric_id_closure) }, - { be_const_key_weak(fabric_index, 19), be_const_var(2) }, - { be_const_key_weak(_store, -1), be_const_var(0) }, - { be_const_key_weak(fabric_label, 31), be_const_var(13) }, - { be_const_key_weak(get_admin_vendor, -1), be_const_closure(Matter_Fabric_get_admin_vendor_closure) }, - { be_const_key_weak(fabric_compressed, 26), be_const_var(11) }, - { be_const_key_weak(get_noc, -1), be_const_closure(Matter_Fabric_get_noc_closure) }, - { be_const_key_weak(get_ca, -1), be_const_closure(Matter_Fabric_get_ca_closure) }, - { be_const_key_weak(root_ca_certificate, -1), be_const_var(6) }, - { be_const_key_weak(get_oldest_session, -1), be_const_closure(Matter_Fabric_get_oldest_session_closure) }, - { be_const_key_weak(get_ca_pub, -1), be_const_closure(Matter_Fabric_get_ca_pub_closure) }, - { be_const_key_weak(_MAX_CASE, 9), be_const_int(5) }, - { be_const_key_weak(get_newest_session, -1), be_const_closure(Matter_Fabric_get_newest_session_closure) }, + { be_const_key_weak(tojson, 8), be_const_closure(Matter_Fabric_tojson_closure) }, + { be_const_key_weak(counter_group_data_snd, -1), be_const_var(14) }, + { be_const_key_weak(fabric_label, -1), be_const_var(13) }, + { be_const_key_weak(_sessions, 34), be_const_var(4) }, + { be_const_key_weak(created, -1), be_const_var(1) }, + { be_const_key_weak(_GROUP_SND_INCR, -1), be_const_int(32) }, + { be_const_key_weak(get_admin_subject, -1), be_const_closure(Matter_Fabric_get_admin_subject_closure) }, { be_const_key_weak(add_session, -1), be_const_closure(Matter_Fabric_add_session_closure) }, + { be_const_key_weak(get_old_recent_session, -1), be_const_closure(Matter_Fabric_get_old_recent_session_closure) }, + { be_const_key_weak(counter_group_data_snd_next, -1), be_const_closure(Matter_Fabric_counter_group_data_snd_next_closure) }, + { be_const_key_weak(ipk_epoch_key, -1), be_const_var(9) }, + { be_const_key_weak(get_device_id, -1), be_const_closure(Matter_Fabric_get_device_id_closure) }, + { be_const_key_weak(counter_group_ctrl_snd_next, -1), be_const_closure(Matter_Fabric_counter_group_ctrl_snd_next_closure) }, + { be_const_key_weak(_counter_group_ctrl_snd_impl, -1), be_const_var(17) }, + { be_const_key_weak(admin_subject, 3), be_const_var(18) }, + { be_const_key_weak(set_fabric_index, -1), be_const_closure(Matter_Fabric_set_fabric_index_closure) }, + { be_const_key_weak(get_fabric_compressed, 32), be_const_closure(Matter_Fabric_get_fabric_compressed_closure) }, + { be_const_key_weak(fabric_index, -1), be_const_var(2) }, + { be_const_key_weak(counter_group_ctrl_snd, 21), be_const_var(15) }, + { be_const_key_weak(log_new_fabric, -1), be_const_closure(Matter_Fabric_log_new_fabric_closure) }, + { be_const_key_weak(init, -1), be_const_closure(Matter_Fabric_init_closure) }, + { be_const_key_weak(get_fabric_id, -1), be_const_closure(Matter_Fabric_get_fabric_id_closure) }, + { be_const_key_weak(_store, 15), be_const_var(0) }, + { be_const_key_weak(admin_vendor, 20), be_const_var(19) }, + { be_const_key_weak(device_id, 40), be_const_var(12) }, + { be_const_key_weak(before_remove, 28), be_const_closure(Matter_Fabric_before_remove_closure) }, + { be_const_key_weak(fromjson, -1), be_const_static_closure(Matter_Fabric_fromjson_closure) }, + { be_const_key_weak(get_noc, 39), be_const_closure(Matter_Fabric_get_noc_closure) }, + { be_const_key_weak(get_fabric_index, 38), be_const_closure(Matter_Fabric_get_fabric_index_closure) }, + { be_const_key_weak(_MAX_CASE, -1), be_const_int(5) }, + { be_const_key_weak(get_ipk_epoch_key, -1), be_const_closure(Matter_Fabric_get_ipk_epoch_key_closure) }, + { be_const_key_weak(_GROUP_KEY, -1), be_nested_str_weak(GroupKey_X20v1_X2E0) }, + { be_const_key_weak(_counter_group_data_snd_impl, -1), be_const_var(16) }, { be_const_key_weak(fabric_parent, -1), be_const_var(3) }, + { be_const_key_weak(fabric_id, -1), be_const_var(10) }, + { be_const_key_weak(icac, 35), be_const_var(8) }, + { be_const_key_weak(get_ca, -1), be_const_closure(Matter_Fabric_get_ca_closure) }, + { be_const_key_weak(get_ipk_group_key, 6), be_const_closure(Matter_Fabric_get_ipk_group_key_closure) }, + { be_const_key_weak(get_fabric_label, -1), be_const_closure(Matter_Fabric_get_fabric_label_closure) }, + { be_const_key_weak(get_oldest_session, -1), be_const_closure(Matter_Fabric_get_oldest_session_closure) }, + { be_const_key_weak(get_newest_session, 22), be_const_closure(Matter_Fabric_get_newest_session_closure) }, + { be_const_key_weak(get_admin_vendor, -1), be_const_closure(Matter_Fabric_get_admin_vendor_closure) }, + { be_const_key_weak(noc, -1), be_const_var(7) }, + { be_const_key_weak(hydrate_post, -1), be_const_closure(Matter_Fabric_hydrate_post_closure) }, + { be_const_key_weak(get_icac, 10), be_const_closure(Matter_Fabric_get_icac_closure) }, + { be_const_key_weak(fabric_compressed, -1), be_const_var(11) }, + { be_const_key_weak(get_ca_pub, -1), be_const_closure(Matter_Fabric_get_ca_pub_closure) }, + { be_const_key_weak(root_ca_certificate, -1), be_const_var(6) }, })), be_str_weak(Matter_Fabric) );