From e80d053aa0bfb12ce1d4d6a2884be6c886d3669d Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 23 Feb 2023 09:38:58 +0100 Subject: [PATCH] Matter finish subscription (#18027) --- .../src/embedded/Matter_Device.be | 19 +- .../berry_matter/src/embedded/Matter_IM.be | 23 +- .../src/embedded/Matter_IM_Message.be | 27 +- .../src/embedded/Matter_Plugin_OnOff.be | 44 +- .../src/embedded/Matter_Plugin_Root.be | 21 +- .../src/solidify/solidified_Matter_Device.h | 249 +- .../src/solidify/solidified_Matter_IM.h | 2979 +++++++++-------- .../solidify/solidified_Matter_IM_Message.h | 744 ++-- .../solidify/solidified_Matter_Plugin_OnOff.h | 355 +- .../solidify/solidified_Matter_Plugin_Root.h | 316 +- 10 files changed, 2574 insertions(+), 2203 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be index f32e6d1d7..79c35541d 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be @@ -117,6 +117,7 @@ class Matter_Device # iterations is set to 1000 which is large enough def compute_pbkdf(passcode_int) import crypto + import string self.salt = crypto.random(16) # bytes("5350414B453250204B65792053616C74") var passcode = bytes().add(passcode_int, 4) @@ -128,13 +129,17 @@ class Matter_Device self.w1 = crypto.EC_P256().mod(w1s) self.L = crypto.EC_P256().public_key(self.w1) - tasmota.log("MTR: ******************************", 3) - tasmota.log("MTR: salt = " + self.salt.tohex(), 3) - tasmota.log("MTR: passcode = " + passcode.tohex(), 3) - tasmota.log("MTR: w0 = " + self.w0.tohex(), 3) - tasmota.log("MTR: w1 = " + self.w1.tohex(), 3) - tasmota.log("MTR: L = " + self.L.tohex(), 3) - tasmota.log("MTR: ******************************", 3) + tasmota.log("MTR: ******************************", 4) + tasmota.log("MTR: salt = " + self.salt.tohex(), 4) + tasmota.log("MTR: passcode_hex = " + passcode.tohex(), 4) + tasmota.log("MTR: w0 = " + self.w0.tohex(), 4) + tasmota.log("MTR: w1 = " + self.w1.tohex(), 4) + tasmota.log("MTR: L = " + self.L.tohex(), 4) + tasmota.log("MTR: ******************************", 4) + + # show Manual pairing code in logs + var pairing_code = self.compute_manual_pairing_code() + tasmota.log(string.format("MTR: Manual pairing code: %s-%s-%s", pairing_code[0..3], pairing_code[4..6], pairing_code[7..]), 2) end ############################################################# diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index 8b223d86a..a7f1bfd99 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -140,6 +140,23 @@ class Matter_IM end end + ############################################################# + # Remove any queued message that expired + # + def expire_sendqueue() + var idx = 0 + while idx < size(self.send_queue) + var message = self.send_queue[idx] + if tasmota.time_reached(message.expiration) + message.reached_timeout() + self.send_queue.remove(idx) + else + idx += 1 + end + end + return nil + end + ############################################################# # process IM 0x01 Status Response # @@ -328,7 +345,7 @@ class Matter_IM tasmota.log(string.format("MTR: >Received %s %s from [%s]:%i", str(ctx), cmd_name ? cmd_name : "", msg.remote_ip, msg.remote_port), 2) var res = self.device.invoke_request(msg.session, q.command_fields, ctx) var a1 = matter.InvokeResponseIB() - if res == true # special case, just respond ok + if res == true || ctx.status == matter.SUCCESS # special case, just respond ok a1.status = matter.CommandStatusIB() a1.status.command_path = matter.CommandPathIB() a1.status.command_path.endpoint = ctx.endpoint @@ -337,6 +354,7 @@ class Matter_IM a1.status.status = matter.StatusIB() a1.status.status.status = matter.SUCCESS ret.invoke_responses.push(a1) + tasmota.log("MTR: 0 ret.attribute_reports = next_elemnts tasmota.log("MTR: to_be_sent_later TLV" + str(ret), 3) - self.expiration = tasmota.millis() + self.MSG_TIMEOUT # give more time return false # keep alive else return true # finished, remove @@ -254,11 +259,17 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData self.report_data_phase = true end + def reached_timeout() + self.sub.remove_self() + end + # ack received, confirm the heartbeat def ack_received(msg) + super(self).ack_received(msg) if !self.report_data_phase # if ack is received while all data is sent, means that it finished without error - return true # proceed to calling send() + self.ready = true + return true # proceed to calling send() which removes the message else return false # do nothing end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be index 5677c06ac..db37f5e67 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be @@ -27,13 +27,13 @@ class Matter_Plugin end class Matter_Plugin_OnOff : Matter_Plugin static var ENDPOINTS = [ 1 ] static var CLUSTERS = { - 0x001D: [0,1,2,3], # Descriptor Cluster 9.5 p.453 - 0x0003: [0,1], # Identify 1.2 p.16 - 0x0004: [0], # Groups 1.3 p.21 - 0x0005: [0,1,2,3,4,5], # Scenes 1.4 p.30 - no writable - 0x0006: [0,0xFFFC] # On/Off 1.5 p.48 + 0x001D: [0,1,2,3,0xFFFC,0xFFFD], # Descriptor Cluster 9.5 p.453 + 0x0003: [0,1,0xFFFC,0xFFFD], # Identify 1.2 p.16 + 0x0004: [0,0xFFFC,0xFFFD], # Groups 1.3 p.21 + 0x0005: [0,1,2,3,4,5,0xFFFC,0xFFFD], # Scenes 1.4 p.30 - no writable + 0x0006: [0,0xFFFC,0xFFFD] # On/Off 1.5 p.48 } - static var TYPES = [ 0x0100 ] # On/Off Light + static var TYPES = { 0x010A: 2 } # On/Off Light var onoff # fake status for now # TODO @@ -59,10 +59,10 @@ class Matter_Plugin_OnOff : Matter_Plugin if attribute == 0x0000 # ---------- DeviceTypeList / list[DeviceTypeStruct] ---------- var dtl = TLV.Matter_TLV_array() - for dt: self.TYPES + for dt: self.TYPES.keys() var d1 = dtl.add_struct() d1.add_TLV(0, TLV.U2, dt) # DeviceType - d1.add_TLV(1, TLV.U2, 1) # Revision + d1.add_TLV(1, TLV.U2, self.TYPES[dt]) # Revision end return dtl elif attribute == 0x0001 # ---------- ServerList / list[cluster-id] ---------- @@ -78,6 +78,10 @@ class Matter_Plugin_OnOff : Matter_Plugin elif attribute == 0x0003 # ---------- PartsList / list[endpoint-no]---------- var pl = TLV.Matter_TLV_array() return pl + elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- + return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting + elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- + return TLV.create_TLV(TLV.U4, 1) # 0 = no Level Control for Lighting end # ==================================================================================================== @@ -86,6 +90,28 @@ class Matter_Plugin_OnOff : Matter_Plugin return TLV.create_TLV(TLV.U2, 0) # no identification in progress elif attribute == 0x0001 # ---------- IdentifyType / enum8 ---------- return TLV.create_TLV(TLV.U1, 0) # IdentifyType = 0x00 None + elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- + return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting + elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- + return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting + end + + # ==================================================================================================== + elif cluster == 0x0004 # ========== Groups 1.3 p.21 ========== + if attribute == 0x0000 # ---------- ---------- + return nil # TODO + elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- + return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting + elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- + return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting + end + + # ==================================================================================================== + elif cluster == 0x0005 # ========== Scenes 1.4 p.30 - no writable ========== + if attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- + return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting + elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- + return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting end # ==================================================================================================== @@ -94,6 +120,8 @@ class Matter_Plugin_OnOff : Matter_Plugin return TLV.create_TLV(TLV.BOOL, self.onoff) elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting + elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- + return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be index 2f641189a..5dd27e2f4 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be @@ -30,7 +30,7 @@ class Matter_Plugin_Root : Matter_Plugin 0x001D: [0,1,2,3], # Descriptor Cluster 9.5 p.453 0x001F: [0,2,3,4], # Access Control Cluster, p.461 0x0028: [0,1,2,3,4,5,6,7,8,9,0x12],# Basic Information Cluster cluster 11.1 p.565 - 0x002A: [0,1,2,3], # OTA Software Update Requestor Cluster Definition 11.19.7 p.762 + # 0x002A: [0,1,2,3], # OTA Software Update Requestor Cluster Definition 11.19.7 p.762 0x002B: [0,1], # Localization Configuration Cluster 11.3 p.580 0x002C: [0,1,2], # Time Format Localization Cluster 11.4 p.581 0x0030: [0,1,2,3,4], # GeneralCommissioning cluster 11.9 p.627 @@ -43,7 +43,7 @@ class Matter_Plugin_Root : Matter_Plugin 0x003E: [0,1,2,3,4,5], # Node Operational Credentials Cluster 11.17 p.704 0x003F: [] # Group Key Management Cluster 11.2 p.572 } - static var TYPES = [ 0x0016 ] # On/Off Light + static var TYPES = { 0x0016: 1 } # On/Off Light ############################################################# # Constructor @@ -181,8 +181,8 @@ class Matter_Plugin_Root : Matter_Plugin elif attribute == 0x0005 # ---------- Current­ FabricIndex / u1 ---------- var sessions_active = self.device.sessions.sessions_active() var fabric_index = sessions_active.find(session) - if fabric_index == nil fabric_index = 0 end - return TLV.create_TLV(TLV.U1, fabric_index) # number of active sessions + if fabric_index == nil fabric_index = -1 end + return TLV.create_TLV(TLV.U1, fabric_index + 1) # number of active sessions end # ==================================================================================================== @@ -211,7 +211,7 @@ class Matter_Plugin_Root : Matter_Plugin elif attribute == 0x0008 # ---------- HardwareVersionString / string ---------- return TLV.create_TLV(TLV.UTF1, tasmota.cmd("Status 2")['StatusFWR']['Hardware']) elif attribute == 0x0009 # ---------- SoftwareVersion / u32 ---------- - return TLV.create_TLV(TLV.U2, 0) + return TLV.create_TLV(TLV.U2, 1) elif attribute == 0x000A # ---------- SoftwareVersionString / string ---------- return TLV.create_TLV(TLV.UTF1, tasmota.cmd("Status 2")['StatusFWR']['Version']) elif attribute == 0x0012 # ---------- UniqueID / string 32 max ---------- @@ -271,10 +271,10 @@ class Matter_Plugin_Root : Matter_Plugin elif cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ========== if attribute == 0x0000 # ---------- DeviceTypeList / list[DeviceTypeStruct] ---------- var dtl = TLV.Matter_TLV_array() - for dt: self.TYPES + for dt: self.TYPES.keys() var d1 = dtl.add_struct() d1.add_TLV(0, TLV.U2, dt) # DeviceType - d1.add_TLV(1, TLV.U2, 1) # Revision + d1.add_TLV(1, TLV.U2, self.TYPES[dt]) # Revision end return dtl elif attribute == 0x0001 # ---------- ServerList / list[cluster-id] ---------- @@ -508,6 +508,13 @@ class Matter_Plugin_Root : Matter_Plugin return nil # trigger a standalone ack end + + # ==================================================================================================== + elif cluster == 0x002A # ========== OTA Software Update Requestor Cluster Definition 11.19.7 p.762 ========== + + if command == 0x0000 # ---------- DefaultOTAProviders ---------- + return true # OK + end end end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h index 51f6129fd..25646e8fe 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h @@ -1161,7 +1161,7 @@ be_local_closure(Matter_Device_start_basic_commissioning, /* name */ ********************************************************************/ be_local_closure(Matter_Device_compute_pbkdf, /* name */ be_nested_proto( - 11, /* nstack */ + 17, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1169,129 +1169,154 @@ be_local_closure(Matter_Device_compute_pbkdf, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ + ( &(const bvalue[30]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(salt), - /* K2 */ be_nested_str_weak(random), - /* K3 */ be_nested_str_weak(add), - /* K4 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), - /* K5 */ be_nested_str_weak(derive), - /* K6 */ be_nested_str_weak(iterations), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(w0), - /* K9 */ be_nested_str_weak(EC_P256), - /* K10 */ be_nested_str_weak(mod), - /* K11 */ be_nested_str_weak(w1), - /* K12 */ be_nested_str_weak(L), - /* K13 */ be_nested_str_weak(public_key), - /* K14 */ be_nested_str_weak(tasmota), - /* K15 */ be_nested_str_weak(log), - /* K16 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A), - /* K17 */ be_const_int(3), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(salt), + /* K3 */ be_nested_str_weak(random), + /* K4 */ be_nested_str_weak(add), + /* K5 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), + /* K6 */ be_nested_str_weak(derive), + /* K7 */ be_nested_str_weak(iterations), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(w0), + /* K10 */ be_nested_str_weak(EC_P256), + /* K11 */ be_nested_str_weak(mod), + /* K12 */ be_nested_str_weak(w1), + /* K13 */ be_nested_str_weak(L), + /* K14 */ be_nested_str_weak(public_key), + /* K15 */ be_nested_str_weak(tasmota), + /* K16 */ be_nested_str_weak(log), + /* K17 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A), /* K18 */ be_nested_str_weak(MTR_X3A_X20salt_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20), /* K19 */ be_nested_str_weak(tohex), - /* K20 */ be_nested_str_weak(MTR_X3A_X20passcode_X20_X20_X20_X20_X20_X20_X3D_X20), + /* K20 */ be_nested_str_weak(MTR_X3A_X20passcode_hex_X20_X20_X3D_X20), /* K21 */ be_nested_str_weak(MTR_X3A_X20w0_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20), /* K22 */ be_nested_str_weak(MTR_X3A_X20w1_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20), /* K23 */ be_nested_str_weak(MTR_X3A_X20L_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20), + /* K24 */ be_nested_str_weak(compute_manual_pairing_code), + /* K25 */ be_nested_str_weak(format), + /* K26 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s_X2D_X25s_X2D_X25s), + /* K27 */ be_const_int(3), + /* K28 */ be_const_int(2147483647), + /* K29 */ be_const_int(2), }), be_str_weak(compute_pbkdf), &be_const_str_solidified, - ( &(const binstruction[94]) { /* code */ + ( &(const binstruction[113]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0502, // 0001 GETMET R3 R2 K2 - 0x5416000F, // 0002 LDINT R5 16 - 0x7C0C0400, // 0003 CALL R3 2 - 0x90020203, // 0004 SETMBR R0 K1 R3 - 0x600C0015, // 0005 GETGBL R3 G21 - 0x7C0C0000, // 0006 CALL R3 0 - 0x8C0C0703, // 0007 GETMET R3 R3 K3 - 0x5C140200, // 0008 MOVE R5 R1 - 0x541A0003, // 0009 LDINT R6 4 - 0x7C0C0600, // 000A CALL R3 3 - 0x8C100504, // 000B GETMET R4 R2 K4 - 0x7C100200, // 000C CALL R4 1 - 0x8C100905, // 000D GETMET R4 R4 K5 - 0x5C180600, // 000E MOVE R6 R3 - 0x881C0101, // 000F GETMBR R7 R0 K1 - 0x88200106, // 0010 GETMBR R8 R0 K6 - 0x5426004F, // 0011 LDINT R9 80 - 0x7C100A00, // 0012 CALL R4 5 - 0x54160026, // 0013 LDINT R5 39 - 0x40160E05, // 0014 CONNECT R5 K7 R5 - 0x94140805, // 0015 GETIDX R5 R4 R5 - 0x541A0027, // 0016 LDINT R6 40 - 0x541E004E, // 0017 LDINT R7 79 - 0x40180C07, // 0018 CONNECT R6 R6 R7 - 0x94180806, // 0019 GETIDX R6 R4 R6 - 0x8C1C0509, // 001A GETMET R7 R2 K9 - 0x7C1C0200, // 001B CALL R7 1 - 0x8C1C0F0A, // 001C GETMET R7 R7 K10 - 0x5C240A00, // 001D MOVE R9 R5 - 0x7C1C0400, // 001E CALL R7 2 - 0x90021007, // 001F SETMBR R0 K8 R7 - 0x8C1C0509, // 0020 GETMET R7 R2 K9 - 0x7C1C0200, // 0021 CALL R7 1 - 0x8C1C0F0A, // 0022 GETMET R7 R7 K10 - 0x5C240C00, // 0023 MOVE R9 R6 - 0x7C1C0400, // 0024 CALL R7 2 - 0x90021607, // 0025 SETMBR R0 K11 R7 - 0x8C1C0509, // 0026 GETMET R7 R2 K9 - 0x7C1C0200, // 0027 CALL R7 1 - 0x8C1C0F0D, // 0028 GETMET R7 R7 K13 - 0x8824010B, // 0029 GETMBR R9 R0 K11 - 0x7C1C0400, // 002A CALL R7 2 - 0x90021807, // 002B SETMBR R0 K12 R7 - 0xB81E1C00, // 002C GETNGBL R7 K14 - 0x8C1C0F0F, // 002D GETMET R7 R7 K15 - 0x58240010, // 002E LDCONST R9 K16 + 0xA40E0200, // 0001 IMPORT R3 K1 + 0x8C100503, // 0002 GETMET R4 R2 K3 + 0x541A000F, // 0003 LDINT R6 16 + 0x7C100400, // 0004 CALL R4 2 + 0x90020404, // 0005 SETMBR R0 K2 R4 + 0x60100015, // 0006 GETGBL R4 G21 + 0x7C100000, // 0007 CALL R4 0 + 0x8C100904, // 0008 GETMET R4 R4 K4 + 0x5C180200, // 0009 MOVE R6 R1 + 0x541E0003, // 000A LDINT R7 4 + 0x7C100600, // 000B CALL R4 3 + 0x8C140505, // 000C GETMET R5 R2 K5 + 0x7C140200, // 000D CALL R5 1 + 0x8C140B06, // 000E GETMET R5 R5 K6 + 0x5C1C0800, // 000F MOVE R7 R4 + 0x88200102, // 0010 GETMBR R8 R0 K2 + 0x88240107, // 0011 GETMBR R9 R0 K7 + 0x542A004F, // 0012 LDINT R10 80 + 0x7C140A00, // 0013 CALL R5 5 + 0x541A0026, // 0014 LDINT R6 39 + 0x401A1006, // 0015 CONNECT R6 K8 R6 + 0x94180A06, // 0016 GETIDX R6 R5 R6 + 0x541E0027, // 0017 LDINT R7 40 + 0x5422004E, // 0018 LDINT R8 79 + 0x401C0E08, // 0019 CONNECT R7 R7 R8 + 0x941C0A07, // 001A GETIDX R7 R5 R7 + 0x8C20050A, // 001B GETMET R8 R2 K10 + 0x7C200200, // 001C CALL R8 1 + 0x8C20110B, // 001D GETMET R8 R8 K11 + 0x5C280C00, // 001E MOVE R10 R6 + 0x7C200400, // 001F CALL R8 2 + 0x90021208, // 0020 SETMBR R0 K9 R8 + 0x8C20050A, // 0021 GETMET R8 R2 K10 + 0x7C200200, // 0022 CALL R8 1 + 0x8C20110B, // 0023 GETMET R8 R8 K11 + 0x5C280E00, // 0024 MOVE R10 R7 + 0x7C200400, // 0025 CALL R8 2 + 0x90021808, // 0026 SETMBR R0 K12 R8 + 0x8C20050A, // 0027 GETMET R8 R2 K10 + 0x7C200200, // 0028 CALL R8 1 + 0x8C20110E, // 0029 GETMET R8 R8 K14 + 0x8828010C, // 002A GETMBR R10 R0 K12 + 0x7C200400, // 002B CALL R8 2 + 0x90021A08, // 002C SETMBR R0 K13 R8 + 0xB8221E00, // 002D GETNGBL R8 K15 + 0x8C201110, // 002E GETMET R8 R8 K16 0x58280011, // 002F LDCONST R10 K17 - 0x7C1C0600, // 0030 CALL R7 3 - 0xB81E1C00, // 0031 GETNGBL R7 K14 - 0x8C1C0F0F, // 0032 GETMET R7 R7 K15 - 0x88240101, // 0033 GETMBR R9 R0 K1 - 0x8C241313, // 0034 GETMET R9 R9 K19 - 0x7C240200, // 0035 CALL R9 1 - 0x00262409, // 0036 ADD R9 K18 R9 - 0x58280011, // 0037 LDCONST R10 K17 - 0x7C1C0600, // 0038 CALL R7 3 - 0xB81E1C00, // 0039 GETNGBL R7 K14 - 0x8C1C0F0F, // 003A GETMET R7 R7 K15 - 0x8C240713, // 003B GETMET R9 R3 K19 - 0x7C240200, // 003C CALL R9 1 - 0x00262809, // 003D ADD R9 K20 R9 - 0x58280011, // 003E LDCONST R10 K17 - 0x7C1C0600, // 003F CALL R7 3 - 0xB81E1C00, // 0040 GETNGBL R7 K14 - 0x8C1C0F0F, // 0041 GETMET R7 R7 K15 - 0x88240108, // 0042 GETMBR R9 R0 K8 - 0x8C241313, // 0043 GETMET R9 R9 K19 - 0x7C240200, // 0044 CALL R9 1 - 0x00262A09, // 0045 ADD R9 K21 R9 - 0x58280011, // 0046 LDCONST R10 K17 - 0x7C1C0600, // 0047 CALL R7 3 - 0xB81E1C00, // 0048 GETNGBL R7 K14 - 0x8C1C0F0F, // 0049 GETMET R7 R7 K15 - 0x8824010B, // 004A GETMBR R9 R0 K11 - 0x8C241313, // 004B GETMET R9 R9 K19 - 0x7C240200, // 004C CALL R9 1 - 0x00262C09, // 004D ADD R9 K22 R9 - 0x58280011, // 004E LDCONST R10 K17 - 0x7C1C0600, // 004F CALL R7 3 - 0xB81E1C00, // 0050 GETNGBL R7 K14 - 0x8C1C0F0F, // 0051 GETMET R7 R7 K15 - 0x8824010C, // 0052 GETMBR R9 R0 K12 - 0x8C241313, // 0053 GETMET R9 R9 K19 - 0x7C240200, // 0054 CALL R9 1 - 0x00262E09, // 0055 ADD R9 K23 R9 - 0x58280011, // 0056 LDCONST R10 K17 - 0x7C1C0600, // 0057 CALL R7 3 - 0xB81E1C00, // 0058 GETNGBL R7 K14 - 0x8C1C0F0F, // 0059 GETMET R7 R7 K15 - 0x58240010, // 005A LDCONST R9 K16 + 0x542E0003, // 0030 LDINT R11 4 + 0x7C200600, // 0031 CALL R8 3 + 0xB8221E00, // 0032 GETNGBL R8 K15 + 0x8C201110, // 0033 GETMET R8 R8 K16 + 0x88280102, // 0034 GETMBR R10 R0 K2 + 0x8C281513, // 0035 GETMET R10 R10 K19 + 0x7C280200, // 0036 CALL R10 1 + 0x002A240A, // 0037 ADD R10 K18 R10 + 0x542E0003, // 0038 LDINT R11 4 + 0x7C200600, // 0039 CALL R8 3 + 0xB8221E00, // 003A GETNGBL R8 K15 + 0x8C201110, // 003B GETMET R8 R8 K16 + 0x8C280913, // 003C GETMET R10 R4 K19 + 0x7C280200, // 003D CALL R10 1 + 0x002A280A, // 003E ADD R10 K20 R10 + 0x542E0003, // 003F LDINT R11 4 + 0x7C200600, // 0040 CALL R8 3 + 0xB8221E00, // 0041 GETNGBL R8 K15 + 0x8C201110, // 0042 GETMET R8 R8 K16 + 0x88280109, // 0043 GETMBR R10 R0 K9 + 0x8C281513, // 0044 GETMET R10 R10 K19 + 0x7C280200, // 0045 CALL R10 1 + 0x002A2A0A, // 0046 ADD R10 K21 R10 + 0x542E0003, // 0047 LDINT R11 4 + 0x7C200600, // 0048 CALL R8 3 + 0xB8221E00, // 0049 GETNGBL R8 K15 + 0x8C201110, // 004A GETMET R8 R8 K16 + 0x8828010C, // 004B GETMBR R10 R0 K12 + 0x8C281513, // 004C GETMET R10 R10 K19 + 0x7C280200, // 004D CALL R10 1 + 0x002A2C0A, // 004E ADD R10 K22 R10 + 0x542E0003, // 004F LDINT R11 4 + 0x7C200600, // 0050 CALL R8 3 + 0xB8221E00, // 0051 GETNGBL R8 K15 + 0x8C201110, // 0052 GETMET R8 R8 K16 + 0x8828010D, // 0053 GETMBR R10 R0 K13 + 0x8C281513, // 0054 GETMET R10 R10 K19 + 0x7C280200, // 0055 CALL R10 1 + 0x002A2E0A, // 0056 ADD R10 K23 R10 + 0x542E0003, // 0057 LDINT R11 4 + 0x7C200600, // 0058 CALL R8 3 + 0xB8221E00, // 0059 GETNGBL R8 K15 + 0x8C201110, // 005A GETMET R8 R8 K16 0x58280011, // 005B LDCONST R10 K17 - 0x7C1C0600, // 005C CALL R7 3 - 0x80000000, // 005D RET 0 + 0x542E0003, // 005C LDINT R11 4 + 0x7C200600, // 005D CALL R8 3 + 0x8C200118, // 005E GETMET R8 R0 K24 + 0x7C200200, // 005F CALL R8 1 + 0xB8261E00, // 0060 GETNGBL R9 K15 + 0x8C241310, // 0061 GETMET R9 R9 K16 + 0x8C2C0719, // 0062 GETMET R11 R3 K25 + 0x5834001A, // 0063 LDCONST R13 K26 + 0x403A111B, // 0064 CONNECT R14 K8 K27 + 0x9438100E, // 0065 GETIDX R14 R8 R14 + 0x543E0003, // 0066 LDINT R15 4 + 0x54420005, // 0067 LDINT R16 6 + 0x403C1E10, // 0068 CONNECT R15 R15 R16 + 0x943C100F, // 0069 GETIDX R15 R8 R15 + 0x54420006, // 006A LDINT R16 7 + 0x4040211C, // 006B CONNECT R16 R16 K28 + 0x94401010, // 006C GETIDX R16 R8 R16 + 0x7C2C0A00, // 006D CALL R11 5 + 0x5830001D, // 006E LDCONST R12 K29 + 0x7C240600, // 006F CALL R9 3 + 0x80000000, // 0070 RET 0 }) ) ); 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 5d2af812a..9bb56e254 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -7,71 +7,55 @@ extern const bclass be_class_Matter_IM; /******************************************************************** -** Solidified function: process_timed_request +** Solidified function: expire_sendqueue ********************************************************************/ -be_local_closure(Matter_IM_process_timed_request, /* name */ +be_local_closure(Matter_IM_expire_sendqueue, /* name */ be_nested_proto( - 13, /* nstack */ - 3, /* argc */ + 6, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TimedRequestMessage), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20TimedRequestMessage_X3D), - /* K7 */ be_const_int(3), - /* K8 */ be_nested_str_weak(format), - /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20TimedRequest_X3D_X25i_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K10 */ be_nested_str_weak(timeout), - /* K11 */ be_nested_str_weak(remote_ip), - /* K12 */ be_nested_str_weak(remote_port), - /* K13 */ be_const_int(2), - /* K14 */ be_nested_str_weak(send_status), - /* K15 */ be_nested_str_weak(SUCCESS), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(time_reached), + /* K4 */ be_nested_str_weak(expiration), + /* K5 */ be_nested_str_weak(reached_timeout), + /* K6 */ be_nested_str_weak(remove), + /* K7 */ be_const_int(1), }), - be_str_weak(process_timed_request), + be_str_weak(expire_sendqueue), &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 - 0x7C100200, // 0003 CALL R4 1 - 0x8C100903, // 0004 GETMET R4 R4 K3 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C100400, // 0006 CALL R4 2 - 0xB8160800, // 0007 GETNGBL R5 K4 - 0x8C140B05, // 0008 GETMET R5 R5 K5 - 0x601C0008, // 0009 GETGBL R7 G8 - 0x5C200800, // 000A MOVE R8 R4 - 0x7C1C0200, // 000B CALL R7 1 - 0x001E0C07, // 000C ADD R7 K6 R7 - 0x58200007, // 000D LDCONST R8 K7 - 0x7C140600, // 000E CALL R5 3 - 0xB8160800, // 000F GETNGBL R5 K4 - 0x8C140B05, // 0010 GETMET R5 R5 K5 - 0x8C1C0708, // 0011 GETMET R7 R3 K8 - 0x58240009, // 0012 LDCONST R9 K9 - 0x8828090A, // 0013 GETMBR R10 R4 K10 - 0x882C030B, // 0014 GETMBR R11 R1 K11 - 0x8830030C, // 0015 GETMBR R12 R1 K12 - 0x7C1C0A00, // 0016 CALL R7 5 - 0x5820000D, // 0017 LDCONST R8 K13 - 0x7C140600, // 0018 CALL R5 3 - 0x8C14010E, // 0019 GETMET R5 R0 K14 - 0x5C1C0200, // 001A MOVE R7 R1 - 0xB8220200, // 001B GETNGBL R8 K1 - 0x8820110F, // 001C GETMBR R8 R8 K15 - 0x7C140600, // 001D CALL R5 3 - 0x50140200, // 001E LDBOOL R5 1 0 - 0x80040A00, // 001F RET 1 R5 + ( &(const binstruction[24]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x14080202, // 0004 LT R2 R1 R2 + 0x780A000F, // 0005 JMPF R2 #0016 + 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x94080401, // 0007 GETIDX R2 R2 R1 + 0xB80E0400, // 0008 GETNGBL R3 K2 + 0x8C0C0703, // 0009 GETMET R3 R3 K3 + 0x88140504, // 000A GETMBR R5 R2 K4 + 0x7C0C0400, // 000B CALL R3 2 + 0x780E0006, // 000C JMPF R3 #0014 + 0x8C0C0505, // 000D GETMET R3 R2 K5 + 0x7C0C0200, // 000E CALL R3 1 + 0x880C0101, // 000F GETMBR R3 R0 K1 + 0x8C0C0706, // 0010 GETMET R3 R3 K6 + 0x5C140200, // 0011 MOVE R5 R1 + 0x7C0C0400, // 0012 CALL R3 2 + 0x70020000, // 0013 JMP #0015 + 0x00040307, // 0014 ADD R1 R1 K7 + 0x7001FFEA, // 0015 JMP #0001 + 0x4C080000, // 0016 LDNIL R2 + 0x80040400, // 0017 RET 1 R2 }) ) ); @@ -79,89 +63,9 @@ be_local_closure(Matter_IM_process_timed_request, /* name */ /******************************************************************** -** Solidified function: process_status_response +** Solidified function: report_data ********************************************************************/ -be_local_closure(Matter_IM_process_status_response, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(findsubval), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(find_sendqueue_by_exchangeid), - /* K4 */ be_nested_str_weak(exchange_id), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(SUCCESS), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_OK), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(status_ok_received), - /* K12 */ be_nested_str_weak(format), - /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), - /* K14 */ be_nested_str_weak(status_error_received), - /* K15 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), - }), - be_str_weak(process_status_response), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x8C100501, // 0001 GETMET R4 R2 K1 - 0x58180002, // 0002 LDCONST R6 K2 - 0x541E00FE, // 0003 LDINT R7 255 - 0x7C100600, // 0004 CALL R4 3 - 0x8C140103, // 0005 GETMET R5 R0 K3 - 0x881C0304, // 0006 GETMBR R7 R1 K4 - 0x7C140400, // 0007 CALL R5 2 - 0xB81A0A00, // 0008 GETNGBL R6 K5 - 0x88180D06, // 0009 GETMBR R6 R6 K6 - 0x1C180806, // 000A EQ R6 R4 R6 - 0x781A000A, // 000B JMPF R6 #0017 - 0xB81A0E00, // 000C GETNGBL R6 K7 - 0x8C180D08, // 000D GETMET R6 R6 K8 - 0x58200009, // 000E LDCONST R8 K9 - 0x5824000A, // 000F LDCONST R9 K10 - 0x7C180600, // 0010 CALL R6 3 - 0x78160003, // 0011 JMPF R5 #0016 - 0x8C180B0B, // 0012 GETMET R6 R5 K11 - 0x5C200200, // 0013 MOVE R8 R1 - 0x7C180400, // 0014 CALL R6 2 - 0x80040C00, // 0015 RET 1 R6 - 0x7002000E, // 0016 JMP #0026 - 0xB81A0E00, // 0017 GETNGBL R6 K7 - 0x8C180D08, // 0018 GETMET R6 R6 K8 - 0x8C20070C, // 0019 GETMET R8 R3 K12 - 0x5828000D, // 001A LDCONST R10 K13 - 0x5C2C0800, // 001B MOVE R11 R4 - 0x7C200600, // 001C CALL R8 3 - 0x5824000A, // 001D LDCONST R9 K10 - 0x7C180600, // 001E CALL R6 3 - 0x78160005, // 001F JMPF R5 #0026 - 0x8C180B0E, // 0020 GETMET R6 R5 K14 - 0x5C200200, // 0021 MOVE R8 R1 - 0x7C180400, // 0022 CALL R6 2 - 0x8C18010F, // 0023 GETMET R6 R0 K15 - 0x88200304, // 0024 GETMBR R8 R1 K4 - 0x7C180400, // 0025 CALL R6 2 - 0x50180000, // 0026 LDBOOL R6 0 0 - 0x80040C00, // 0027 RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_write_response -********************************************************************/ -be_local_closure(Matter_IM_process_write_response, /* name */ +be_local_closure(Matter_IM_report_data, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ @@ -174,14 +78,14 @@ be_local_closure(Matter_IM_process_write_response, /* name */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(WriteResponseMessage), + /* K2 */ be_nested_str_weak(ReportDataMessage), /* K3 */ be_nested_str_weak(from_TLV), /* K4 */ be_nested_str_weak(tasmota), /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20WriteResponseMessage_X3D), + /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20ReportDataMessage_X3D), /* K7 */ be_const_int(2), }), - be_str_weak(process_write_response), + be_str_weak(report_data), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ 0xA40E0000, // 0000 IMPORT R3 K0 @@ -208,436 +112,362 @@ be_local_closure(Matter_IM_process_write_response, /* name */ /******************************************************************** -** Solidified function: process_invoke_request +** Solidified function: process_write_request ********************************************************************/ -be_local_closure(Matter_IM_process_invoke_request, /* name */ +be_local_closure(Matter_IM_process_write_request, /* name */ be_nested_proto( - 19, /* nstack */ + 20, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[45]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20IM_X3Ainvoke_request_X20processing_X20start), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(Path), - /* K6 */ be_nested_str_weak(InvokeRequestMessage), - /* K7 */ be_nested_str_weak(from_TLV), - /* K8 */ be_nested_str_weak(invoke_requests), - /* K9 */ be_nested_str_weak(InvokeResponseMessage), - /* K10 */ be_nested_str_weak(suppress_response), - /* K11 */ be_nested_str_weak(invoke_responses), - /* K12 */ be_nested_str_weak(endpoint), - /* K13 */ be_nested_str_weak(command_path), - /* K14 */ be_nested_str_weak(cluster), - /* K15 */ be_nested_str_weak(command), - /* K16 */ be_nested_str_weak(status), - /* K17 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K18 */ be_nested_str_weak(get_command_name), - /* K19 */ be_nested_str_weak(format), - /* K20 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X25s_X20_X25s_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K21 */ be_nested_str_weak(), - /* K22 */ be_nested_str_weak(remote_ip), - /* K23 */ be_nested_str_weak(remote_port), - /* K24 */ be_const_int(2), - /* K25 */ be_nested_str_weak(device), - /* K26 */ be_nested_str_weak(invoke_request), - /* K27 */ be_nested_str_weak(session), - /* K28 */ be_nested_str_weak(command_fields), - /* K29 */ be_nested_str_weak(InvokeResponseIB), - /* K30 */ be_nested_str_weak(CommandStatusIB), - /* K31 */ be_nested_str_weak(CommandPathIB), - /* K32 */ be_nested_str_weak(StatusIB), - /* K33 */ be_nested_str_weak(SUCCESS), - /* K34 */ be_nested_str_weak(push), - /* K35 */ be_nested_str_weak(CommandDataIB), - /* K36 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X25s_X20_X25s), - /* K37 */ be_nested_str_weak(stop_iteration), - /* K38 */ be_nested_str_weak(MTR_X3A_X20invoke_responses_X3D), - /* K39 */ be_const_int(0), - /* K40 */ be_nested_str_weak(MTR_X3A_X20InvokeResponse_X3D), - /* K41 */ be_nested_str_weak(MTR_X3A_X20InvokeResponseTLV_X3D), - /* K42 */ be_nested_str_weak(to_TLV), - /* K43 */ be_const_int(3), - /* K44 */ be_nested_str_weak(send_invoke_response), + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 19, /* nstack */ + 5, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[26]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(get_attribute_name), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_nested_str_weak(_X20_X28), + /* K6 */ be_nested_str_weak(_X29), + /* K7 */ be_nested_str_weak(), + /* K8 */ be_nested_str_weak(status), + /* K9 */ be_nested_str_weak(UNSUPPORTED_WRITE), + /* K10 */ be_nested_str_weak(write_attribute), + /* K11 */ be_nested_str_weak(session), + /* K12 */ be_nested_str_weak(SUCCESS), + /* K13 */ be_nested_str_weak(AttributeStatusIB), + /* K14 */ be_nested_str_weak(path), + /* K15 */ be_nested_str_weak(AttributePathIB), + /* K16 */ be_nested_str_weak(StatusIB), + /* K17 */ be_nested_str_weak(endpoint), + /* K18 */ be_nested_str_weak(write_responses), + /* K19 */ be_nested_str_weak(push), + /* K20 */ be_nested_str_weak(tasmota), + /* K21 */ be_nested_str_weak(log), + /* K22 */ be_nested_str_weak(format), + /* K23 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K24 */ be_const_int(2), + /* K25 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20IGNORED), + }), + be_str_weak(write_single_attribute), + &be_const_str_solidified, + ( &(const binstruction[97]) { /* code */ + 0xA4160000, // 0000 IMPORT R5 K0 + 0xB81A0200, // 0001 GETNGBL R6 K1 + 0x8C180D02, // 0002 GETMET R6 R6 K2 + 0x88200503, // 0003 GETMBR R8 R2 K3 + 0x88240504, // 0004 GETMBR R9 R2 K4 + 0x7C180600, // 0005 CALL R6 3 + 0x781A0002, // 0006 JMPF R6 #000A + 0x001E0A06, // 0007 ADD R7 K5 R6 + 0x001C0F06, // 0008 ADD R7 R7 K6 + 0x70020000, // 0009 JMP #000B + 0x581C0007, // 000A LDCONST R7 K7 + 0x5C180E00, // 000B MOVE R6 R7 + 0xB81E0200, // 000C GETNGBL R7 K1 + 0x881C0F09, // 000D GETMBR R7 R7 K9 + 0x900A1007, // 000E SETMBR R2 K8 R7 + 0x4C1C0000, // 000F LDNIL R7 + 0x201C0207, // 0010 NE R7 R1 R7 + 0x781E0006, // 0011 JMPF R7 #0019 + 0x8C1C030A, // 0012 GETMET R7 R1 K10 + 0x68240000, // 0013 GETUPV R9 U0 + 0x8824130B, // 0014 GETMBR R9 R9 K11 + 0x5C280400, // 0015 MOVE R10 R2 + 0x5C2C0600, // 0016 MOVE R11 R3 + 0x7C1C0800, // 0017 CALL R7 4 + 0x70020000, // 0018 JMP #001A + 0x4C1C0000, // 0019 LDNIL R7 + 0x781E0002, // 001A JMPF R7 #001E + 0xB8220200, // 001B GETNGBL R8 K1 + 0x8820110C, // 001C GETMBR R8 R8 K12 + 0x900A1008, // 001D SETMBR R2 K8 R8 + 0x88200508, // 001E GETMBR R8 R2 K8 + 0x4C240000, // 001F LDNIL R9 + 0x20201009, // 0020 NE R8 R8 R9 + 0x78220032, // 0021 JMPF R8 #0055 + 0x78120030, // 0022 JMPF R4 #0054 + 0xB8220200, // 0023 GETNGBL R8 K1 + 0x8C20110D, // 0024 GETMET R8 R8 K13 + 0x7C200200, // 0025 CALL R8 1 + 0xB8260200, // 0026 GETNGBL R9 K1 + 0x8C24130F, // 0027 GETMET R9 R9 K15 + 0x7C240200, // 0028 CALL R9 1 + 0x90221C09, // 0029 SETMBR R8 K14 R9 + 0xB8260200, // 002A GETNGBL R9 K1 + 0x8C241310, // 002B GETMET R9 R9 K16 + 0x7C240200, // 002C CALL R9 1 + 0x90221009, // 002D SETMBR R8 K8 R9 + 0x8824110E, // 002E GETMBR R9 R8 K14 + 0x88280511, // 002F GETMBR R10 R2 K17 + 0x9026220A, // 0030 SETMBR R9 K17 R10 + 0x8824110E, // 0031 GETMBR R9 R8 K14 + 0x88280503, // 0032 GETMBR R10 R2 K3 + 0x9026060A, // 0033 SETMBR R9 K3 R10 + 0x8824110E, // 0034 GETMBR R9 R8 K14 + 0x88280504, // 0035 GETMBR R10 R2 K4 + 0x9026080A, // 0036 SETMBR R9 K4 R10 + 0x88241108, // 0037 GETMBR R9 R8 K8 + 0x88280508, // 0038 GETMBR R10 R2 K8 + 0x9026100A, // 0039 SETMBR R9 K8 R10 + 0x88240112, // 003A GETMBR R9 R0 K18 + 0x8C241313, // 003B GETMET R9 R9 K19 + 0x5C2C1000, // 003C MOVE R11 R8 + 0x7C240400, // 003D CALL R9 2 + 0xB8262800, // 003E GETNGBL R9 K20 + 0x8C241315, // 003F GETMET R9 R9 K21 + 0x8C2C0B16, // 0040 GETMET R11 R5 K22 + 0x58340017, // 0041 LDCONST R13 K23 + 0x60380008, // 0042 GETGBL R14 G8 + 0x5C3C0400, // 0043 MOVE R15 R2 + 0x7C380200, // 0044 CALL R14 1 + 0x5C3C0C00, // 0045 MOVE R15 R6 + 0x88400508, // 0046 GETMBR R16 R2 K8 + 0x88440508, // 0047 GETMBR R17 R2 K8 + 0xB84A0200, // 0048 GETNGBL R18 K1 + 0x8848250C, // 0049 GETMBR R18 R18 K12 + 0x1C442212, // 004A EQ R17 R17 R18 + 0x78460001, // 004B JMPF R17 #004E + 0x5844000C, // 004C LDCONST R17 K12 + 0x70020000, // 004D JMP #004F + 0x58440007, // 004E LDCONST R17 K7 + 0x7C2C0C00, // 004F CALL R11 6 + 0x58300018, // 0050 LDCONST R12 K24 + 0x7C240600, // 0051 CALL R9 3 + 0x50240200, // 0052 LDBOOL R9 1 0 + 0x80041200, // 0053 RET 1 R9 + 0x7002000A, // 0054 JMP #0060 + 0xB8222800, // 0055 GETNGBL R8 K20 + 0x8C201115, // 0056 GETMET R8 R8 K21 + 0x8C280B16, // 0057 GETMET R10 R5 K22 + 0x58300019, // 0058 LDCONST R12 K25 + 0x60340008, // 0059 GETGBL R13 G8 + 0x5C380400, // 005A MOVE R14 R2 + 0x7C340200, // 005B CALL R13 1 + 0x5C380C00, // 005C MOVE R14 R6 + 0x7C280800, // 005D CALL R10 4 + 0x582C0018, // 005E LDCONST R11 K24 + 0x7C200600, // 005F CALL R8 3 + 0x80000000, // 0060 RET 0 + }) + ), + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 3]) { /* upvals */ + be_local_const_upval(1, 7), + be_local_const_upval(1, 9), + be_local_const_upval(1, 13), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x68100001, // 0001 GETUPV R4 U1 + 0x5C140000, // 0002 MOVE R5 R0 + 0x5C180200, // 0003 MOVE R6 R1 + 0x681C0002, // 0004 GETUPV R7 U2 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C0C0A00, // 0006 CALL R3 5 + 0x80040600, // 0007 RET 1 R3 + }) + ), }), - be_str_weak(process_invoke_request), + 1, /* has constants */ + ( &(const bvalue[36]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(WriteRequestMessage), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20WriteRequestMessage_X3D), + /* K7 */ be_const_int(3), + /* K8 */ be_nested_str_weak(suppress_response), + /* K9 */ be_nested_str_weak(device), + /* K10 */ be_nested_str_weak(get_active_endpoints), + /* K11 */ be_nested_str_weak(MTR_X3A_X20IM_X3Awrite_request_X20processing_X20start), + /* K12 */ be_nested_str_weak(Path), + /* K13 */ be_nested_str_weak(write_requests), + /* K14 */ be_nested_str_weak(WriteResponseMessage), + /* K15 */ be_nested_str_weak(write_responses), + /* K16 */ be_nested_str_weak(path), + /* K17 */ be_nested_str_weak(data), + /* K18 */ be_nested_str_weak(endpoint), + /* K19 */ be_nested_str_weak(cluster), + /* K20 */ be_nested_str_weak(attribute), + /* K21 */ be_nested_str_weak(status), + /* K22 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K23 */ be_nested_str_weak(INVALID_ACTION), + /* K24 */ be_nested_str_weak(get_attribute_name), + /* K25 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), + /* K26 */ be_nested_str_weak(_X20_X28), + /* K27 */ be_nested_str_weak(_X29), + /* K28 */ be_nested_str_weak(), + /* K29 */ be_const_int(2), + /* K30 */ be_nested_str_weak(process_attribute_expansion), + /* K31 */ be_nested_str_weak(stop_iteration), + /* K32 */ be_nested_str_weak(MTR_X3A_X20ReportWriteMessage_X3D), + /* K33 */ be_nested_str_weak(MTR_X3A_X20ReportWriteMessageTLV_X3D), + /* K34 */ be_nested_str_weak(to_TLV), + /* K35 */ be_nested_str_weak(send_write_response), + }), + be_str_weak(process_write_request), &be_const_str_solidified, - ( &(const binstruction[248]) { /* code */ + ( &(const binstruction[134]) { /* code */ 0xA40E0000, // 0000 IMPORT R3 K0 0xB8120200, // 0001 GETNGBL R4 K1 0x8C100902, // 0002 GETMET R4 R4 K2 - 0x58180003, // 0003 LDCONST R6 K3 - 0x541E0003, // 0004 LDINT R7 4 - 0x7C100600, // 0005 CALL R4 3 - 0xB8120800, // 0006 GETNGBL R4 K4 - 0x8C100905, // 0007 GETMET R4 R4 K5 - 0x7C100200, // 0008 CALL R4 1 - 0xB8160800, // 0009 GETNGBL R5 K4 - 0x8C140B06, // 000A GETMET R5 R5 K6 - 0x7C140200, // 000B CALL R5 1 - 0x8C140B07, // 000C GETMET R5 R5 K7 - 0x5C1C0400, // 000D MOVE R7 R2 - 0x7C140400, // 000E CALL R5 2 - 0x88180B08, // 000F GETMBR R6 R5 K8 - 0x4C1C0000, // 0010 LDNIL R7 - 0x20180C07, // 0011 NE R6 R6 R7 - 0x781A00E3, // 0012 JMPF R6 #00F7 - 0xB81A0800, // 0013 GETNGBL R6 K4 - 0x8C180D09, // 0014 GETMET R6 R6 K9 - 0x7C180200, // 0015 CALL R6 1 - 0x501C0000, // 0016 LDBOOL R7 0 0 - 0x901A1407, // 0017 SETMBR R6 K10 R7 - 0x601C0012, // 0018 GETGBL R7 G18 - 0x7C1C0000, // 0019 CALL R7 0 - 0x901A1607, // 001A SETMBR R6 K11 R7 - 0x601C0010, // 001B GETGBL R7 G16 - 0x88200B08, // 001C GETMBR R8 R5 K8 - 0x7C1C0200, // 001D CALL R7 1 - 0xA80200AD, // 001E EXBLK 0 #00CD - 0x5C200E00, // 001F MOVE R8 R7 - 0x7C200000, // 0020 CALL R8 0 - 0x8824110D, // 0021 GETMBR R9 R8 K13 - 0x8824130C, // 0022 GETMBR R9 R9 K12 - 0x90121809, // 0023 SETMBR R4 K12 R9 - 0x8824110D, // 0024 GETMBR R9 R8 K13 - 0x8824130E, // 0025 GETMBR R9 R9 K14 - 0x90121C09, // 0026 SETMBR R4 K14 R9 - 0x8824110D, // 0027 GETMBR R9 R8 K13 - 0x8824130F, // 0028 GETMBR R9 R9 K15 - 0x90121E09, // 0029 SETMBR R4 K15 R9 - 0xB8260800, // 002A GETNGBL R9 K4 - 0x88241311, // 002B GETMBR R9 R9 K17 - 0x90122009, // 002C SETMBR R4 K16 R9 - 0xB8260800, // 002D GETNGBL R9 K4 - 0x8C241312, // 002E GETMET R9 R9 K18 - 0x882C090E, // 002F GETMBR R11 R4 K14 - 0x8830090F, // 0030 GETMBR R12 R4 K15 - 0x7C240600, // 0031 CALL R9 3 - 0xB82A0200, // 0032 GETNGBL R10 K1 - 0x8C281502, // 0033 GETMET R10 R10 K2 - 0x8C300713, // 0034 GETMET R12 R3 K19 - 0x58380014, // 0035 LDCONST R14 K20 - 0x603C0008, // 0036 GETGBL R15 G8 - 0x5C400800, // 0037 MOVE R16 R4 - 0x7C3C0200, // 0038 CALL R15 1 - 0x78260001, // 0039 JMPF R9 #003C - 0x5C401200, // 003A MOVE R16 R9 - 0x70020000, // 003B JMP #003D - 0x58400015, // 003C LDCONST R16 K21 - 0x88440316, // 003D GETMBR R17 R1 K22 - 0x88480317, // 003E GETMBR R18 R1 K23 - 0x7C300C00, // 003F CALL R12 6 - 0x58340018, // 0040 LDCONST R13 K24 - 0x7C280600, // 0041 CALL R10 3 - 0x88280119, // 0042 GETMBR R10 R0 K25 - 0x8C28151A, // 0043 GETMET R10 R10 K26 - 0x8830031B, // 0044 GETMBR R12 R1 K27 - 0x8834111C, // 0045 GETMBR R13 R8 K28 - 0x5C380800, // 0046 MOVE R14 R4 - 0x7C280800, // 0047 CALL R10 4 - 0xB82E0800, // 0048 GETNGBL R11 K4 - 0x8C2C171D, // 0049 GETMET R11 R11 K29 - 0x7C2C0200, // 004A CALL R11 1 - 0x50300200, // 004B LDBOOL R12 1 0 - 0x1C30140C, // 004C EQ R12 R10 R12 - 0x78320023, // 004D JMPF R12 #0072 - 0xB8320800, // 004E GETNGBL R12 K4 - 0x8C30191E, // 004F GETMET R12 R12 K30 - 0x7C300200, // 0050 CALL R12 1 - 0x902E200C, // 0051 SETMBR R11 K16 R12 - 0x88301710, // 0052 GETMBR R12 R11 K16 - 0xB8360800, // 0053 GETNGBL R13 K4 - 0x8C341B1F, // 0054 GETMET R13 R13 K31 - 0x7C340200, // 0055 CALL R13 1 - 0x90321A0D, // 0056 SETMBR R12 K13 R13 - 0x88301710, // 0057 GETMBR R12 R11 K16 - 0x8830190D, // 0058 GETMBR R12 R12 K13 - 0x8834090C, // 0059 GETMBR R13 R4 K12 - 0x9032180D, // 005A SETMBR R12 K12 R13 - 0x88301710, // 005B GETMBR R12 R11 K16 - 0x8830190D, // 005C GETMBR R12 R12 K13 - 0x8834090E, // 005D GETMBR R13 R4 K14 - 0x90321C0D, // 005E SETMBR R12 K14 R13 - 0x88301710, // 005F GETMBR R12 R11 K16 - 0x8830190D, // 0060 GETMBR R12 R12 K13 - 0x8834090F, // 0061 GETMBR R13 R4 K15 - 0x90321E0D, // 0062 SETMBR R12 K15 R13 - 0x88301710, // 0063 GETMBR R12 R11 K16 - 0xB8360800, // 0064 GETNGBL R13 K4 - 0x8C341B20, // 0065 GETMET R13 R13 K32 - 0x7C340200, // 0066 CALL R13 1 - 0x9032200D, // 0067 SETMBR R12 K16 R13 - 0x88301710, // 0068 GETMBR R12 R11 K16 - 0x88301910, // 0069 GETMBR R12 R12 K16 - 0xB8360800, // 006A GETNGBL R13 K4 - 0x88341B21, // 006B GETMBR R13 R13 K33 - 0x9032200D, // 006C SETMBR R12 K16 R13 - 0x88300D0B, // 006D GETMBR R12 R6 K11 - 0x8C301922, // 006E GETMET R12 R12 K34 - 0x5C381600, // 006F MOVE R14 R11 - 0x7C300400, // 0070 CALL R12 2 - 0x70020059, // 0071 JMP #00CC - 0x4C300000, // 0072 LDNIL R12 - 0x2030140C, // 0073 NE R12 R10 R12 - 0x7832002F, // 0074 JMPF R12 #00A5 - 0xB8320800, // 0075 GETNGBL R12 K4 - 0x8C301923, // 0076 GETMET R12 R12 K35 - 0x7C300200, // 0077 CALL R12 1 - 0x902E1E0C, // 0078 SETMBR R11 K15 R12 - 0x8830170F, // 0079 GETMBR R12 R11 K15 - 0xB8360800, // 007A GETNGBL R13 K4 - 0x8C341B1F, // 007B GETMET R13 R13 K31 - 0x7C340200, // 007C CALL R13 1 - 0x90321A0D, // 007D SETMBR R12 K13 R13 - 0x8830170F, // 007E GETMBR R12 R11 K15 - 0x8830190D, // 007F GETMBR R12 R12 K13 - 0x8834090C, // 0080 GETMBR R13 R4 K12 - 0x9032180D, // 0081 SETMBR R12 K12 R13 - 0x8830170F, // 0082 GETMBR R12 R11 K15 - 0x8830190D, // 0083 GETMBR R12 R12 K13 - 0x8834090E, // 0084 GETMBR R13 R4 K14 - 0x90321C0D, // 0085 SETMBR R12 K14 R13 - 0x8830170F, // 0086 GETMBR R12 R11 K15 - 0x8830190D, // 0087 GETMBR R12 R12 K13 - 0x8834090F, // 0088 GETMBR R13 R4 K15 - 0x90321E0D, // 0089 SETMBR R12 K15 R13 - 0x8830170F, // 008A GETMBR R12 R11 K15 - 0x9032380A, // 008B SETMBR R12 K28 R10 - 0x88300D0B, // 008C GETMBR R12 R6 K11 - 0x8C301922, // 008D GETMET R12 R12 K34 - 0x5C381600, // 008E MOVE R14 R11 - 0x7C300400, // 008F CALL R12 2 - 0xB8320800, // 0090 GETNGBL R12 K4 - 0x8C301912, // 0091 GETMET R12 R12 K18 - 0x8838090E, // 0092 GETMBR R14 R4 K14 - 0x883C090F, // 0093 GETMBR R15 R4 K15 - 0x7C300600, // 0094 CALL R12 3 - 0x5C241800, // 0095 MOVE R9 R12 - 0xB8320200, // 0096 GETNGBL R12 K1 - 0x8C301902, // 0097 GETMET R12 R12 K2 - 0x8C380713, // 0098 GETMET R14 R3 K19 - 0x58400024, // 0099 LDCONST R16 K36 - 0x60440008, // 009A GETGBL R17 G8 - 0x5C480800, // 009B MOVE R18 R4 - 0x7C440200, // 009C CALL R17 1 - 0x78260001, // 009D JMPF R9 #00A0 - 0x5C481200, // 009E MOVE R18 R9 - 0x70020000, // 009F JMP #00A1 - 0x58480015, // 00A0 LDCONST R18 K21 - 0x7C380800, // 00A1 CALL R14 4 - 0x583C0018, // 00A2 LDCONST R15 K24 - 0x7C300600, // 00A3 CALL R12 3 - 0x70020026, // 00A4 JMP #00CC - 0x88300910, // 00A5 GETMBR R12 R4 K16 - 0x4C340000, // 00A6 LDNIL R13 - 0x2030180D, // 00A7 NE R12 R12 R13 - 0x78320022, // 00A8 JMPF R12 #00CC - 0xB8320800, // 00A9 GETNGBL R12 K4 - 0x8C30191E, // 00AA GETMET R12 R12 K30 - 0x7C300200, // 00AB CALL R12 1 - 0x902E200C, // 00AC SETMBR R11 K16 R12 - 0x88301710, // 00AD GETMBR R12 R11 K16 - 0xB8360800, // 00AE GETNGBL R13 K4 - 0x8C341B1F, // 00AF GETMET R13 R13 K31 - 0x7C340200, // 00B0 CALL R13 1 - 0x90321A0D, // 00B1 SETMBR R12 K13 R13 - 0x88301710, // 00B2 GETMBR R12 R11 K16 - 0x8830190D, // 00B3 GETMBR R12 R12 K13 - 0x8834090C, // 00B4 GETMBR R13 R4 K12 - 0x9032180D, // 00B5 SETMBR R12 K12 R13 - 0x88301710, // 00B6 GETMBR R12 R11 K16 - 0x8830190D, // 00B7 GETMBR R12 R12 K13 - 0x8834090E, // 00B8 GETMBR R13 R4 K14 - 0x90321C0D, // 00B9 SETMBR R12 K14 R13 - 0x88301710, // 00BA GETMBR R12 R11 K16 - 0x8830190D, // 00BB GETMBR R12 R12 K13 - 0x8834090F, // 00BC GETMBR R13 R4 K15 - 0x90321E0D, // 00BD SETMBR R12 K15 R13 - 0x88301710, // 00BE GETMBR R12 R11 K16 - 0xB8360800, // 00BF GETNGBL R13 K4 - 0x8C341B20, // 00C0 GETMET R13 R13 K32 - 0x7C340200, // 00C1 CALL R13 1 - 0x9032200D, // 00C2 SETMBR R12 K16 R13 - 0x88301710, // 00C3 GETMBR R12 R11 K16 - 0x88301910, // 00C4 GETMBR R12 R12 K16 - 0x88340910, // 00C5 GETMBR R13 R4 K16 - 0x9032200D, // 00C6 SETMBR R12 K16 R13 - 0x88300D0B, // 00C7 GETMBR R12 R6 K11 - 0x8C301922, // 00C8 GETMET R12 R12 K34 - 0x5C381600, // 00C9 MOVE R14 R11 - 0x7C300400, // 00CA CALL R12 2 - 0x7001FFFF, // 00CB JMP #00CC - 0x7001FF51, // 00CC JMP #001F - 0x581C0025, // 00CD LDCONST R7 K37 - 0xAC1C0200, // 00CE CATCH R7 1 0 - 0xB0080000, // 00CF RAISE 2 R0 R0 - 0xB81E0200, // 00D0 GETNGBL R7 K1 - 0x8C1C0F02, // 00D1 GETMET R7 R7 K2 - 0x60240008, // 00D2 GETGBL R9 G8 - 0x88280D0B, // 00D3 GETMBR R10 R6 K11 - 0x7C240200, // 00D4 CALL R9 1 - 0x00264C09, // 00D5 ADD R9 K38 R9 - 0x542A0003, // 00D6 LDINT R10 4 - 0x7C1C0600, // 00D7 CALL R7 3 - 0x601C000C, // 00D8 GETGBL R7 G12 - 0x88200D0B, // 00D9 GETMBR R8 R6 K11 - 0x7C1C0200, // 00DA CALL R7 1 - 0x241C0F27, // 00DB GT R7 R7 K39 - 0x781E0015, // 00DC JMPF R7 #00F3 - 0xB81E0200, // 00DD GETNGBL R7 K1 - 0x8C1C0F02, // 00DE GETMET R7 R7 K2 - 0x60240008, // 00DF GETGBL R9 G8 - 0x5C280C00, // 00E0 MOVE R10 R6 - 0x7C240200, // 00E1 CALL R9 1 - 0x00265009, // 00E2 ADD R9 K40 R9 - 0x542A0003, // 00E3 LDINT R10 4 - 0x7C1C0600, // 00E4 CALL R7 3 - 0xB81E0200, // 00E5 GETNGBL R7 K1 - 0x8C1C0F02, // 00E6 GETMET R7 R7 K2 - 0x60240008, // 00E7 GETGBL R9 G8 - 0x8C280D2A, // 00E8 GETMET R10 R6 K42 - 0x7C280200, // 00E9 CALL R10 1 - 0x7C240200, // 00EA CALL R9 1 - 0x00265209, // 00EB ADD R9 K41 R9 - 0x5828002B, // 00EC LDCONST R10 K43 - 0x7C1C0600, // 00ED CALL R7 3 - 0x8C1C012C, // 00EE GETMET R7 R0 K44 - 0x5C240200, // 00EF MOVE R9 R1 - 0x5C280C00, // 00F0 MOVE R10 R6 - 0x7C1C0600, // 00F1 CALL R7 3 - 0x70020001, // 00F2 JMP #00F5 - 0x501C0000, // 00F3 LDBOOL R7 0 0 - 0x80040E00, // 00F4 RET 1 R7 - 0x501C0200, // 00F5 LDBOOL R7 1 0 - 0x80040E00, // 00F6 RET 1 R7 - 0x80000000, // 00F7 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_sendqueue_by_exchangeid -********************************************************************/ -be_local_closure(Matter_IM_remove_sendqueue_by_exchangeid, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(get_exchangeid), - /* K3 */ be_nested_str_weak(remove), - /* K4 */ be_const_int(1), - }), - be_str_weak(remove_sendqueue_by_exchangeid), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x80000400, // 0003 RET 0 - 0x58080000, // 0004 LDCONST R2 K0 - 0x600C000C, // 0005 GETGBL R3 G12 - 0x88100101, // 0006 GETMBR R4 R0 K1 - 0x7C0C0200, // 0007 CALL R3 1 - 0x140C0403, // 0008 LT R3 R2 R3 - 0x780E000C, // 0009 JMPF R3 #0017 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x940C0602, // 000B GETIDX R3 R3 R2 - 0x8C0C0702, // 000C GETMET R3 R3 K2 - 0x7C0C0200, // 000D CALL R3 1 - 0x1C0C0601, // 000E EQ R3 R3 R1 - 0x780E0004, // 000F JMPF R3 #0015 - 0x880C0101, // 0010 GETMBR R3 R0 K1 - 0x8C0C0703, // 0011 GETMET R3 R3 K3 - 0x5C140400, // 0012 MOVE R5 R2 - 0x7C0C0400, // 0013 CALL R3 2 - 0x70020000, // 0014 JMP #0016 - 0x00080504, // 0015 ADD R2 R2 K4 - 0x7001FFED, // 0016 JMP #0005 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_write_response -********************************************************************/ -be_local_closure(Matter_IM_send_write_response, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_WriteResponse), - }), - be_str_weak(send_write_response), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_250ms -********************************************************************/ -be_local_closure(Matter_IM_every_250ms, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(subs), - /* K1 */ be_nested_str_weak(every_250ms), - }), - be_str_weak(every_250ms), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80000000, // 0003 RET 0 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100903, // 0004 GETMET R4 R4 K3 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x601C0008, // 0009 GETGBL R7 G8 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C1C0200, // 000B CALL R7 1 + 0x001E0C07, // 000C ADD R7 K6 R7 + 0x58200007, // 000D LDCONST R8 K7 + 0x7C140600, // 000E CALL R5 3 + 0x88140908, // 000F GETMBR R5 R4 K8 + 0x88180109, // 0010 GETMBR R6 R0 K9 + 0x8C180D0A, // 0011 GETMET R6 R6 K10 + 0x7C180200, // 0012 CALL R6 1 + 0x841C0000, // 0013 CLOSURE R7 P0 + 0xB8220800, // 0014 GETNGBL R8 K4 + 0x8C201105, // 0015 GETMET R8 R8 K5 + 0x5828000B, // 0016 LDCONST R10 K11 + 0x542E0003, // 0017 LDINT R11 4 + 0x7C200600, // 0018 CALL R8 3 + 0xB8220200, // 0019 GETNGBL R8 K1 + 0x8C20110C, // 001A GETMET R8 R8 K12 + 0x7C200200, // 001B CALL R8 1 + 0x8824090D, // 001C GETMBR R9 R4 K13 + 0x4C280000, // 001D LDNIL R10 + 0x2024120A, // 001E NE R9 R9 R10 + 0x78260062, // 001F JMPF R9 #0083 + 0xB8260200, // 0020 GETNGBL R9 K1 + 0x8C24130E, // 0021 GETMET R9 R9 K14 + 0x7C240200, // 0022 CALL R9 1 + 0x60280012, // 0023 GETGBL R10 G18 + 0x7C280000, // 0024 CALL R10 0 + 0x90261E0A, // 0025 SETMBR R9 K15 R10 + 0x60280010, // 0026 GETGBL R10 G16 + 0x882C090D, // 0027 GETMBR R11 R4 K13 + 0x7C280200, // 0028 CALL R10 1 + 0xA802003D, // 0029 EXBLK 0 #0068 + 0x5C2C1400, // 002A MOVE R11 R10 + 0x7C2C0000, // 002B CALL R11 0 + 0x88301710, // 002C GETMBR R12 R11 K16 + 0x88341711, // 002D GETMBR R13 R11 K17 + 0x88381912, // 002E GETMBR R14 R12 K18 + 0x9022240E, // 002F SETMBR R8 K18 R14 + 0x88381913, // 0030 GETMBR R14 R12 K19 + 0x9022260E, // 0031 SETMBR R8 K19 R14 + 0x88381914, // 0032 GETMBR R14 R12 K20 + 0x9022280E, // 0033 SETMBR R8 K20 R14 + 0xB83A0200, // 0034 GETNGBL R14 K1 + 0x88381D16, // 0035 GETMBR R14 R14 K22 + 0x90222A0E, // 0036 SETMBR R8 K21 R14 + 0x88381113, // 0037 GETMBR R14 R8 K19 + 0x4C3C0000, // 0038 LDNIL R15 + 0x1C381C0F, // 0039 EQ R14 R14 R15 + 0x743A0003, // 003A JMPT R14 #003F + 0x88381114, // 003B GETMBR R14 R8 K20 + 0x4C3C0000, // 003C LDNIL R15 + 0x1C381C0F, // 003D EQ R14 R14 R15 + 0x783A000A, // 003E JMPF R14 #004A + 0xB83A0200, // 003F GETNGBL R14 K1 + 0x88381D17, // 0040 GETMBR R14 R14 K23 + 0x90222A0E, // 0041 SETMBR R8 K21 R14 + 0x5C380E00, // 0042 MOVE R14 R7 + 0x5C3C1200, // 0043 MOVE R15 R9 + 0x4C400000, // 0044 LDNIL R16 + 0x5C441000, // 0045 MOVE R17 R8 + 0x4C480000, // 0046 LDNIL R18 + 0x504C0200, // 0047 LDBOOL R19 1 0 + 0x7C380A00, // 0048 CALL R14 5 + 0x7001FFDF, // 0049 JMP #002A + 0x88381112, // 004A GETMBR R14 R8 K18 + 0x4C3C0000, // 004B LDNIL R15 + 0x1C381C0F, // 004C EQ R14 R14 R15 + 0x783A0012, // 004D JMPF R14 #0061 + 0xB83A0200, // 004E GETNGBL R14 K1 + 0x8C381D18, // 004F GETMET R14 R14 K24 + 0x88401113, // 0050 GETMBR R16 R8 K19 + 0x88441114, // 0051 GETMBR R17 R8 K20 + 0x7C380600, // 0052 CALL R14 3 + 0xB83E0800, // 0053 GETNGBL R15 K4 + 0x8C3C1F05, // 0054 GETMET R15 R15 K5 + 0x60440008, // 0055 GETGBL R17 G8 + 0x5C481000, // 0056 MOVE R18 R8 + 0x7C440200, // 0057 CALL R17 1 + 0x00463211, // 0058 ADD R17 K25 R17 + 0x783A0002, // 0059 JMPF R14 #005D + 0x004A340E, // 005A ADD R18 K26 R14 + 0x0048251B, // 005B ADD R18 R18 K27 + 0x70020000, // 005C JMP #005E + 0x5848001C, // 005D LDCONST R18 K28 + 0x00442212, // 005E ADD R17 R17 R18 + 0x5848001D, // 005F LDCONST R18 K29 + 0x7C3C0600, // 0060 CALL R15 3 + 0x88380109, // 0061 GETMBR R14 R0 K9 + 0x8C381D1E, // 0062 GETMET R14 R14 K30 + 0x5C401000, // 0063 MOVE R16 R8 + 0x84440001, // 0064 CLOSURE R17 P1 + 0x7C380600, // 0065 CALL R14 3 + 0xA0280000, // 0066 CLOSE R10 + 0x7001FFC1, // 0067 JMP #002A + 0x5828001F, // 0068 LDCONST R10 K31 + 0xAC280200, // 0069 CATCH R10 1 0 + 0xB0080000, // 006A RAISE 2 R0 R0 + 0xB82A0800, // 006B GETNGBL R10 K4 + 0x8C281505, // 006C GETMET R10 R10 K5 + 0x60300008, // 006D GETGBL R12 G8 + 0x5C341200, // 006E MOVE R13 R9 + 0x7C300200, // 006F CALL R12 1 + 0x0032400C, // 0070 ADD R12 K32 R12 + 0x54360003, // 0071 LDINT R13 4 + 0x7C280600, // 0072 CALL R10 3 + 0xB82A0800, // 0073 GETNGBL R10 K4 + 0x8C281505, // 0074 GETMET R10 R10 K5 + 0x60300008, // 0075 GETGBL R12 G8 + 0x8C341322, // 0076 GETMET R13 R9 K34 + 0x7C340200, // 0077 CALL R13 1 + 0x7C300200, // 0078 CALL R12 1 + 0x0032420C, // 0079 ADD R12 K33 R12 + 0x58340007, // 007A LDCONST R13 K7 + 0x7C280600, // 007B CALL R10 3 + 0x5C280A00, // 007C MOVE R10 R5 + 0x742A0003, // 007D JMPT R10 #0082 + 0x8C280123, // 007E GETMET R10 R0 K35 + 0x5C300200, // 007F MOVE R12 R1 + 0x5C341200, // 0080 MOVE R13 R9 + 0x7C280600, // 0081 CALL R10 3 + 0xA0240000, // 0082 CLOSE R9 + 0x50240200, // 0083 LDBOOL R9 1 0 + 0xA0000000, // 0084 CLOSE R0 + 0x80041200, // 0085 RET 1 R9 }) ) ); @@ -733,6 +563,241 @@ be_local_closure(Matter_IM_subscribe_request, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: send_invoke_response +********************************************************************/ +be_local_closure(Matter_IM_send_invoke_response, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_InvokeResponse), + }), + be_str_weak(send_invoke_response), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_status_response +********************************************************************/ +be_local_closure(Matter_IM_process_status_response, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(findsubval), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(find_sendqueue_by_exchangeid), + /* K4 */ be_nested_str_weak(exchange_id), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(SUCCESS), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_OK), + /* K10 */ be_const_int(2), + /* K11 */ be_nested_str_weak(status_ok_received), + /* K12 */ be_nested_str_weak(format), + /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), + /* K14 */ be_nested_str_weak(status_error_received), + /* K15 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + }), + be_str_weak(process_status_response), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x8C100501, // 0001 GETMET R4 R2 K1 + 0x58180002, // 0002 LDCONST R6 K2 + 0x541E00FE, // 0003 LDINT R7 255 + 0x7C100600, // 0004 CALL R4 3 + 0x8C140103, // 0005 GETMET R5 R0 K3 + 0x881C0304, // 0006 GETMBR R7 R1 K4 + 0x7C140400, // 0007 CALL R5 2 + 0xB81A0A00, // 0008 GETNGBL R6 K5 + 0x88180D06, // 0009 GETMBR R6 R6 K6 + 0x1C180806, // 000A EQ R6 R4 R6 + 0x781A000A, // 000B JMPF R6 #0017 + 0xB81A0E00, // 000C GETNGBL R6 K7 + 0x8C180D08, // 000D GETMET R6 R6 K8 + 0x58200009, // 000E LDCONST R8 K9 + 0x5824000A, // 000F LDCONST R9 K10 + 0x7C180600, // 0010 CALL R6 3 + 0x78160003, // 0011 JMPF R5 #0016 + 0x8C180B0B, // 0012 GETMET R6 R5 K11 + 0x5C200200, // 0013 MOVE R8 R1 + 0x7C180400, // 0014 CALL R6 2 + 0x80040C00, // 0015 RET 1 R6 + 0x7002000E, // 0016 JMP #0026 + 0xB81A0E00, // 0017 GETNGBL R6 K7 + 0x8C180D08, // 0018 GETMET R6 R6 K8 + 0x8C20070C, // 0019 GETMET R8 R3 K12 + 0x5828000D, // 001A LDCONST R10 K13 + 0x5C2C0800, // 001B MOVE R11 R4 + 0x7C200600, // 001C CALL R8 3 + 0x5824000A, // 001D LDCONST R9 K10 + 0x7C180600, // 001E CALL R6 3 + 0x78160005, // 001F JMPF R5 #0026 + 0x8C180B0E, // 0020 GETMET R6 R5 K14 + 0x5C200200, // 0021 MOVE R8 R1 + 0x7C180400, // 0022 CALL R6 2 + 0x8C18010F, // 0023 GETMET R6 R0 K15 + 0x88200304, // 0024 GETMBR R8 R1 K4 + 0x7C180400, // 0025 CALL R6 2 + 0x50180000, // 0026 LDBOOL R6 0 0 + 0x80040C00, // 0027 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_read_request +********************************************************************/ +be_local_closure(Matter_IM_process_read_request, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(ReadRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(attributes_requests), + /* K4 */ be_nested_str_weak(_inner_process_read_request), + /* K5 */ be_nested_str_weak(session), + /* K6 */ be_nested_str_weak(send_report_data), + }), + be_str_weak(process_read_request), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0x88100703, // 0006 GETMBR R4 R3 K3 + 0x4C140000, // 0007 LDNIL R5 + 0x20100805, // 0008 NE R4 R4 R5 + 0x78120007, // 0009 JMPF R4 #0012 + 0x8C100104, // 000A GETMET R4 R0 K4 + 0x88180305, // 000B GETMBR R6 R1 K5 + 0x5C1C0600, // 000C MOVE R7 R3 + 0x7C100600, // 000D CALL R4 3 + 0x8C140106, // 000E GETMET R5 R0 K6 + 0x5C1C0200, // 000F MOVE R7 R1 + 0x5C200800, // 0010 MOVE R8 R4 + 0x7C140600, // 0011 CALL R5 3 + 0x50100200, // 0012 LDBOOL R4 1 0 + 0x80040800, // 0013 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_write_response +********************************************************************/ +be_local_closure(Matter_IM_send_write_response, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_WriteResponse), + }), + be_str_weak(send_write_response), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_250ms +********************************************************************/ +be_local_closure(Matter_IM_every_250ms, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(subs), + /* K1 */ be_nested_str_weak(every_250ms), + }), + be_str_weak(every_250ms), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: process_incoming ********************************************************************/ @@ -912,6 +977,628 @@ be_local_closure(Matter_IM_process_incoming, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: send_subscribe_update +********************************************************************/ +be_local_closure(Matter_IM_send_subscribe_update, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[26]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(session), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(ReadRequestMessage), + /* K4 */ be_nested_str_weak(fabric_filtered), + /* K5 */ be_nested_str_weak(attributes_requests), + /* K6 */ be_nested_str_weak(updates), + /* K7 */ be_nested_str_weak(AttributePathIB), + /* K8 */ be_nested_str_weak(endpoint), + /* K9 */ be_nested_str_weak(cluster), + /* K10 */ be_nested_str_weak(attribute), + /* K11 */ be_nested_str_weak(push), + /* K12 */ be_nested_str_weak(stop_iteration), + /* K13 */ be_const_int(0), + /* K14 */ be_nested_str_weak(tasmota), + /* K15 */ be_nested_str_weak(log), + /* K16 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_data_X20_X20sub_id_X3D), + /* K17 */ be_nested_str_weak(subscription_id), + /* K18 */ be_const_int(2), + /* K19 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_alive_X20sub_id_X3D), + /* K20 */ be_nested_str_weak(_inner_process_read_request), + /* K21 */ be_nested_str_weak(suppress_response), + /* K22 */ be_nested_str_weak(send_queue), + /* K23 */ be_nested_str_weak(IM_ReportDataSubscribed), + /* K24 */ be_nested_str_weak(__message_handler), + /* K25 */ be_nested_str_weak(send_enqueued), + }), + be_str_weak(send_subscribe_update), + &be_const_str_solidified, + ( &(const binstruction[80]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0xB8120400, // 0002 GETNGBL R4 K2 + 0x8C100903, // 0003 GETMET R4 R4 K3 + 0x7C100200, // 0004 CALL R4 1 + 0x50140000, // 0005 LDBOOL R5 0 0 + 0x90120805, // 0006 SETMBR R4 K4 R5 + 0x60140012, // 0007 GETGBL R5 G18 + 0x7C140000, // 0008 CALL R5 0 + 0x90120A05, // 0009 SETMBR R4 K5 R5 + 0x60140010, // 000A GETGBL R5 G16 + 0x88180306, // 000B GETMBR R6 R1 K6 + 0x7C140200, // 000C CALL R5 1 + 0xA802000F, // 000D EXBLK 0 #001E + 0x5C180A00, // 000E MOVE R6 R5 + 0x7C180000, // 000F CALL R6 0 + 0xB81E0400, // 0010 GETNGBL R7 K2 + 0x8C1C0F07, // 0011 GETMET R7 R7 K7 + 0x7C1C0200, // 0012 CALL R7 1 + 0x88200D08, // 0013 GETMBR R8 R6 K8 + 0x901E1008, // 0014 SETMBR R7 K8 R8 + 0x88200D09, // 0015 GETMBR R8 R6 K9 + 0x901E1208, // 0016 SETMBR R7 K9 R8 + 0x88200D0A, // 0017 GETMBR R8 R6 K10 + 0x901E1408, // 0018 SETMBR R7 K10 R8 + 0x88200905, // 0019 GETMBR R8 R4 K5 + 0x8C20110B, // 001A GETMET R8 R8 K11 + 0x5C280E00, // 001B MOVE R10 R7 + 0x7C200400, // 001C CALL R8 2 + 0x7001FFEF, // 001D JMP #000E + 0x5814000C, // 001E LDCONST R5 K12 + 0xAC140200, // 001F CATCH R5 1 0 + 0xB0080000, // 0020 RAISE 2 R0 R0 + 0x6014000C, // 0021 GETGBL R5 G12 + 0x88180905, // 0022 GETMBR R6 R4 K5 + 0x7C140200, // 0023 CALL R5 1 + 0x24140B0D, // 0024 GT R5 R5 K13 + 0x78160008, // 0025 JMPF R5 #002F + 0xB8161C00, // 0026 GETNGBL R5 K14 + 0x8C140B0F, // 0027 GETMET R5 R5 K15 + 0x601C0008, // 0028 GETGBL R7 G8 + 0x88200311, // 0029 GETMBR R8 R1 K17 + 0x7C1C0200, // 002A CALL R7 1 + 0x001E2007, // 002B ADD R7 K16 R7 + 0x58200012, // 002C LDCONST R8 K18 + 0x7C140600, // 002D CALL R5 3 + 0x70020007, // 002E JMP #0037 + 0xB8161C00, // 002F GETNGBL R5 K14 + 0x8C140B0F, // 0030 GETMET R5 R5 K15 + 0x601C0008, // 0031 GETGBL R7 G8 + 0x88200311, // 0032 GETMBR R8 R1 K17 + 0x7C1C0200, // 0033 CALL R7 1 + 0x001E2607, // 0034 ADD R7 K19 R7 + 0x58200012, // 0035 LDCONST R8 K18 + 0x7C140600, // 0036 CALL R5 3 + 0x8C140114, // 0037 GETMET R5 R0 K20 + 0x5C1C0600, // 0038 MOVE R7 R3 + 0x5C200800, // 0039 MOVE R8 R4 + 0x7C140600, // 003A CALL R5 3 + 0x6018000C, // 003B GETGBL R6 G12 + 0x881C0905, // 003C GETMBR R7 R4 K5 + 0x7C180200, // 003D CALL R6 1 + 0x1C180D0D, // 003E EQ R6 R6 K13 + 0x90162A06, // 003F SETMBR R5 K21 R6 + 0x88180311, // 0040 GETMBR R6 R1 K17 + 0x90162206, // 0041 SETMBR R5 K17 R6 + 0x88180116, // 0042 GETMBR R6 R0 K22 + 0x8C180D0B, // 0043 GETMET R6 R6 K11 + 0xB8220400, // 0044 GETNGBL R8 K2 + 0x8C201117, // 0045 GETMET R8 R8 K23 + 0x88280718, // 0046 GETMBR R10 R3 K24 + 0x5C2C0600, // 0047 MOVE R11 R3 + 0x5C300A00, // 0048 MOVE R12 R5 + 0x5C340200, // 0049 MOVE R13 R1 + 0x7C200A00, // 004A CALL R8 5 + 0x7C180400, // 004B CALL R6 2 + 0x8C180119, // 004C GETMET R6 R0 K25 + 0x88200718, // 004D GETMBR R8 R3 K24 + 0x7C180400, // 004E CALL R6 2 + 0x80000000, // 004F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_incoming_ack +********************************************************************/ +be_local_closure(Matter_IM_process_incoming_ack, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(find_sendqueue_by_exchangeid), + /* K1 */ be_nested_str_weak(exchange_id), + /* K2 */ be_nested_str_weak(ack_received), + }), + be_str_weak(process_incoming_ack), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x88100301, // 0001 GETMBR R4 R1 K1 + 0x7C080400, // 0002 CALL R2 2 + 0x780A0003, // 0003 JMPF R2 #0008 + 0x8C0C0502, // 0004 GETMET R3 R2 K2 + 0x5C140200, // 0005 MOVE R5 R1 + 0x7C0C0400, // 0006 CALL R3 2 + 0x80040600, // 0007 RET 1 R3 + 0x500C0000, // 0008 LDBOOL R3 0 0 + 0x80040600, // 0009 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_subscribe_response +********************************************************************/ +be_local_closure(Matter_IM_send_subscribe_response, /* name */ + be_nested_proto( + 11, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_SubscribeResponse), + }), + be_str_weak(send_subscribe_response), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0xB81A0400, // 0002 GETNGBL R6 K2 + 0x8C180D03, // 0003 GETMET R6 R6 K3 + 0x5C200200, // 0004 MOVE R8 R1 + 0x5C240400, // 0005 MOVE R9 R2 + 0x5C280600, // 0006 MOVE R10 R3 + 0x7C180800, // 0007 CALL R6 4 + 0x7C100400, // 0008 CALL R4 2 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_status +********************************************************************/ +be_local_closure(Matter_IM_send_status, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_Status), + }), + be_str_weak(send_status), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_invoke_request +********************************************************************/ +be_local_closure(Matter_IM_process_invoke_request, /* name */ + be_nested_proto( + 19, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[48]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20IM_X3Ainvoke_request_X20processing_X20start), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(Path), + /* K6 */ be_nested_str_weak(InvokeRequestMessage), + /* K7 */ be_nested_str_weak(from_TLV), + /* K8 */ be_nested_str_weak(invoke_requests), + /* K9 */ be_nested_str_weak(InvokeResponseMessage), + /* K10 */ be_nested_str_weak(suppress_response), + /* K11 */ be_nested_str_weak(invoke_responses), + /* K12 */ be_nested_str_weak(endpoint), + /* K13 */ be_nested_str_weak(command_path), + /* K14 */ be_nested_str_weak(cluster), + /* K15 */ be_nested_str_weak(command), + /* K16 */ be_nested_str_weak(status), + /* K17 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K18 */ be_nested_str_weak(get_command_name), + /* K19 */ be_nested_str_weak(format), + /* K20 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X25s_X20_X25s_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K21 */ be_nested_str_weak(), + /* K22 */ be_nested_str_weak(remote_ip), + /* K23 */ be_nested_str_weak(remote_port), + /* K24 */ be_const_int(2), + /* K25 */ be_nested_str_weak(device), + /* K26 */ be_nested_str_weak(invoke_request), + /* K27 */ be_nested_str_weak(session), + /* K28 */ be_nested_str_weak(command_fields), + /* K29 */ be_nested_str_weak(InvokeResponseIB), + /* K30 */ be_nested_str_weak(SUCCESS), + /* K31 */ be_nested_str_weak(CommandStatusIB), + /* K32 */ be_nested_str_weak(CommandPathIB), + /* K33 */ be_nested_str_weak(StatusIB), + /* K34 */ be_nested_str_weak(push), + /* K35 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20OK), + /* K36 */ be_nested_str_weak(CommandDataIB), + /* K37 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X25s_X20_X25s), + /* K38 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20Status_X3D0x_X2502X), + /* K39 */ be_nested_str_weak(MTR_X3A_X20_Ignore), + /* K40 */ be_nested_str_weak(stop_iteration), + /* K41 */ be_nested_str_weak(MTR_X3A_X20invoke_responses_X3D), + /* K42 */ be_const_int(0), + /* K43 */ be_nested_str_weak(MTR_X3A_X20InvokeResponse_X3D), + /* K44 */ be_nested_str_weak(MTR_X3A_X20InvokeResponseTLV_X3D), + /* K45 */ be_nested_str_weak(to_TLV), + /* K46 */ be_const_int(3), + /* K47 */ be_nested_str_weak(send_invoke_response), + }), + be_str_weak(process_invoke_request), + &be_const_str_solidified, + ( &(const binstruction[271]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x58180003, // 0003 LDCONST R6 K3 + 0x541E0003, // 0004 LDINT R7 4 + 0x7C100600, // 0005 CALL R4 3 + 0xB8120800, // 0006 GETNGBL R4 K4 + 0x8C100905, // 0007 GETMET R4 R4 K5 + 0x7C100200, // 0008 CALL R4 1 + 0xB8160800, // 0009 GETNGBL R5 K4 + 0x8C140B06, // 000A GETMET R5 R5 K6 + 0x7C140200, // 000B CALL R5 1 + 0x8C140B07, // 000C GETMET R5 R5 K7 + 0x5C1C0400, // 000D MOVE R7 R2 + 0x7C140400, // 000E CALL R5 2 + 0x88180B08, // 000F GETMBR R6 R5 K8 + 0x4C1C0000, // 0010 LDNIL R7 + 0x20180C07, // 0011 NE R6 R6 R7 + 0x781A00FA, // 0012 JMPF R6 #010E + 0xB81A0800, // 0013 GETNGBL R6 K4 + 0x8C180D09, // 0014 GETMET R6 R6 K9 + 0x7C180200, // 0015 CALL R6 1 + 0x501C0000, // 0016 LDBOOL R7 0 0 + 0x901A1407, // 0017 SETMBR R6 K10 R7 + 0x601C0012, // 0018 GETGBL R7 G18 + 0x7C1C0000, // 0019 CALL R7 0 + 0x901A1607, // 001A SETMBR R6 K11 R7 + 0x601C0010, // 001B GETGBL R7 G16 + 0x88200B08, // 001C GETMBR R8 R5 K8 + 0x7C1C0200, // 001D CALL R7 1 + 0xA80200C4, // 001E EXBLK 0 #00E4 + 0x5C200E00, // 001F MOVE R8 R7 + 0x7C200000, // 0020 CALL R8 0 + 0x8824110D, // 0021 GETMBR R9 R8 K13 + 0x8824130C, // 0022 GETMBR R9 R9 K12 + 0x90121809, // 0023 SETMBR R4 K12 R9 + 0x8824110D, // 0024 GETMBR R9 R8 K13 + 0x8824130E, // 0025 GETMBR R9 R9 K14 + 0x90121C09, // 0026 SETMBR R4 K14 R9 + 0x8824110D, // 0027 GETMBR R9 R8 K13 + 0x8824130F, // 0028 GETMBR R9 R9 K15 + 0x90121E09, // 0029 SETMBR R4 K15 R9 + 0xB8260800, // 002A GETNGBL R9 K4 + 0x88241311, // 002B GETMBR R9 R9 K17 + 0x90122009, // 002C SETMBR R4 K16 R9 + 0xB8260800, // 002D GETNGBL R9 K4 + 0x8C241312, // 002E GETMET R9 R9 K18 + 0x882C090E, // 002F GETMBR R11 R4 K14 + 0x8830090F, // 0030 GETMBR R12 R4 K15 + 0x7C240600, // 0031 CALL R9 3 + 0xB82A0200, // 0032 GETNGBL R10 K1 + 0x8C281502, // 0033 GETMET R10 R10 K2 + 0x8C300713, // 0034 GETMET R12 R3 K19 + 0x58380014, // 0035 LDCONST R14 K20 + 0x603C0008, // 0036 GETGBL R15 G8 + 0x5C400800, // 0037 MOVE R16 R4 + 0x7C3C0200, // 0038 CALL R15 1 + 0x78260001, // 0039 JMPF R9 #003C + 0x5C401200, // 003A MOVE R16 R9 + 0x70020000, // 003B JMP #003D + 0x58400015, // 003C LDCONST R16 K21 + 0x88440316, // 003D GETMBR R17 R1 K22 + 0x88480317, // 003E GETMBR R18 R1 K23 + 0x7C300C00, // 003F CALL R12 6 + 0x58340018, // 0040 LDCONST R13 K24 + 0x7C280600, // 0041 CALL R10 3 + 0x88280119, // 0042 GETMBR R10 R0 K25 + 0x8C28151A, // 0043 GETMET R10 R10 K26 + 0x8830031B, // 0044 GETMBR R12 R1 K27 + 0x8834111C, // 0045 GETMBR R13 R8 K28 + 0x5C380800, // 0046 MOVE R14 R4 + 0x7C280800, // 0047 CALL R10 4 + 0xB82E0800, // 0048 GETNGBL R11 K4 + 0x8C2C171D, // 0049 GETMET R11 R11 K29 + 0x7C2C0200, // 004A CALL R11 1 + 0x50300200, // 004B LDBOOL R12 1 0 + 0x1C30140C, // 004C EQ R12 R10 R12 + 0x74320004, // 004D JMPT R12 #0053 + 0x88300910, // 004E GETMBR R12 R4 K16 + 0xB8360800, // 004F GETNGBL R13 K4 + 0x88341B1E, // 0050 GETMBR R13 R13 K30 + 0x1C30180D, // 0051 EQ R12 R12 R13 + 0x78320028, // 0052 JMPF R12 #007C + 0xB8320800, // 0053 GETNGBL R12 K4 + 0x8C30191F, // 0054 GETMET R12 R12 K31 + 0x7C300200, // 0055 CALL R12 1 + 0x902E200C, // 0056 SETMBR R11 K16 R12 + 0x88301710, // 0057 GETMBR R12 R11 K16 + 0xB8360800, // 0058 GETNGBL R13 K4 + 0x8C341B20, // 0059 GETMET R13 R13 K32 + 0x7C340200, // 005A CALL R13 1 + 0x90321A0D, // 005B SETMBR R12 K13 R13 + 0x88301710, // 005C GETMBR R12 R11 K16 + 0x8830190D, // 005D GETMBR R12 R12 K13 + 0x8834090C, // 005E GETMBR R13 R4 K12 + 0x9032180D, // 005F SETMBR R12 K12 R13 + 0x88301710, // 0060 GETMBR R12 R11 K16 + 0x8830190D, // 0061 GETMBR R12 R12 K13 + 0x8834090E, // 0062 GETMBR R13 R4 K14 + 0x90321C0D, // 0063 SETMBR R12 K14 R13 + 0x88301710, // 0064 GETMBR R12 R11 K16 + 0x8830190D, // 0065 GETMBR R12 R12 K13 + 0x8834090F, // 0066 GETMBR R13 R4 K15 + 0x90321E0D, // 0067 SETMBR R12 K15 R13 + 0x88301710, // 0068 GETMBR R12 R11 K16 + 0xB8360800, // 0069 GETNGBL R13 K4 + 0x8C341B21, // 006A GETMET R13 R13 K33 + 0x7C340200, // 006B CALL R13 1 + 0x9032200D, // 006C SETMBR R12 K16 R13 + 0x88301710, // 006D GETMBR R12 R11 K16 + 0x88301910, // 006E GETMBR R12 R12 K16 + 0xB8360800, // 006F GETNGBL R13 K4 + 0x88341B1E, // 0070 GETMBR R13 R13 K30 + 0x9032200D, // 0071 SETMBR R12 K16 R13 + 0x88300D0B, // 0072 GETMBR R12 R6 K11 + 0x8C301922, // 0073 GETMET R12 R12 K34 + 0x5C381600, // 0074 MOVE R14 R11 + 0x7C300400, // 0075 CALL R12 2 + 0xB8320200, // 0076 GETNGBL R12 K1 + 0x8C301902, // 0077 GETMET R12 R12 K2 + 0x58380023, // 0078 LDCONST R14 K35 + 0x583C0018, // 0079 LDCONST R15 K24 + 0x7C300600, // 007A CALL R12 3 + 0x70020066, // 007B JMP #00E3 + 0x4C300000, // 007C LDNIL R12 + 0x2030140C, // 007D NE R12 R10 R12 + 0x7832002F, // 007E JMPF R12 #00AF + 0xB8320800, // 007F GETNGBL R12 K4 + 0x8C301924, // 0080 GETMET R12 R12 K36 + 0x7C300200, // 0081 CALL R12 1 + 0x902E1E0C, // 0082 SETMBR R11 K15 R12 + 0x8830170F, // 0083 GETMBR R12 R11 K15 + 0xB8360800, // 0084 GETNGBL R13 K4 + 0x8C341B20, // 0085 GETMET R13 R13 K32 + 0x7C340200, // 0086 CALL R13 1 + 0x90321A0D, // 0087 SETMBR R12 K13 R13 + 0x8830170F, // 0088 GETMBR R12 R11 K15 + 0x8830190D, // 0089 GETMBR R12 R12 K13 + 0x8834090C, // 008A GETMBR R13 R4 K12 + 0x9032180D, // 008B SETMBR R12 K12 R13 + 0x8830170F, // 008C GETMBR R12 R11 K15 + 0x8830190D, // 008D GETMBR R12 R12 K13 + 0x8834090E, // 008E GETMBR R13 R4 K14 + 0x90321C0D, // 008F SETMBR R12 K14 R13 + 0x8830170F, // 0090 GETMBR R12 R11 K15 + 0x8830190D, // 0091 GETMBR R12 R12 K13 + 0x8834090F, // 0092 GETMBR R13 R4 K15 + 0x90321E0D, // 0093 SETMBR R12 K15 R13 + 0x8830170F, // 0094 GETMBR R12 R11 K15 + 0x9032380A, // 0095 SETMBR R12 K28 R10 + 0x88300D0B, // 0096 GETMBR R12 R6 K11 + 0x8C301922, // 0097 GETMET R12 R12 K34 + 0x5C381600, // 0098 MOVE R14 R11 + 0x7C300400, // 0099 CALL R12 2 + 0xB8320800, // 009A GETNGBL R12 K4 + 0x8C301912, // 009B GETMET R12 R12 K18 + 0x8838090E, // 009C GETMBR R14 R4 K14 + 0x883C090F, // 009D GETMBR R15 R4 K15 + 0x7C300600, // 009E CALL R12 3 + 0x5C241800, // 009F MOVE R9 R12 + 0xB8320200, // 00A0 GETNGBL R12 K1 + 0x8C301902, // 00A1 GETMET R12 R12 K2 + 0x8C380713, // 00A2 GETMET R14 R3 K19 + 0x58400025, // 00A3 LDCONST R16 K37 + 0x60440008, // 00A4 GETGBL R17 G8 + 0x5C480800, // 00A5 MOVE R18 R4 + 0x7C440200, // 00A6 CALL R17 1 + 0x78260001, // 00A7 JMPF R9 #00AA + 0x5C481200, // 00A8 MOVE R18 R9 + 0x70020000, // 00A9 JMP #00AB + 0x58480015, // 00AA LDCONST R18 K21 + 0x7C380800, // 00AB CALL R14 4 + 0x583C0018, // 00AC LDCONST R15 K24 + 0x7C300600, // 00AD CALL R12 3 + 0x70020033, // 00AE JMP #00E3 + 0x88300910, // 00AF GETMBR R12 R4 K16 + 0x4C340000, // 00B0 LDNIL R13 + 0x2030180D, // 00B1 NE R12 R12 R13 + 0x7832002A, // 00B2 JMPF R12 #00DE + 0xB8320800, // 00B3 GETNGBL R12 K4 + 0x8C30191F, // 00B4 GETMET R12 R12 K31 + 0x7C300200, // 00B5 CALL R12 1 + 0x902E200C, // 00B6 SETMBR R11 K16 R12 + 0x88301710, // 00B7 GETMBR R12 R11 K16 + 0xB8360800, // 00B8 GETNGBL R13 K4 + 0x8C341B20, // 00B9 GETMET R13 R13 K32 + 0x7C340200, // 00BA CALL R13 1 + 0x90321A0D, // 00BB SETMBR R12 K13 R13 + 0x88301710, // 00BC GETMBR R12 R11 K16 + 0x8830190D, // 00BD GETMBR R12 R12 K13 + 0x8834090C, // 00BE GETMBR R13 R4 K12 + 0x9032180D, // 00BF SETMBR R12 K12 R13 + 0x88301710, // 00C0 GETMBR R12 R11 K16 + 0x8830190D, // 00C1 GETMBR R12 R12 K13 + 0x8834090E, // 00C2 GETMBR R13 R4 K14 + 0x90321C0D, // 00C3 SETMBR R12 K14 R13 + 0x88301710, // 00C4 GETMBR R12 R11 K16 + 0x8830190D, // 00C5 GETMBR R12 R12 K13 + 0x8834090F, // 00C6 GETMBR R13 R4 K15 + 0x90321E0D, // 00C7 SETMBR R12 K15 R13 + 0x88301710, // 00C8 GETMBR R12 R11 K16 + 0xB8360800, // 00C9 GETNGBL R13 K4 + 0x8C341B21, // 00CA GETMET R13 R13 K33 + 0x7C340200, // 00CB CALL R13 1 + 0x9032200D, // 00CC SETMBR R12 K16 R13 + 0x88301710, // 00CD GETMBR R12 R11 K16 + 0x88301910, // 00CE GETMBR R12 R12 K16 + 0x88340910, // 00CF GETMBR R13 R4 K16 + 0x9032200D, // 00D0 SETMBR R12 K16 R13 + 0x88300D0B, // 00D1 GETMBR R12 R6 K11 + 0x8C301922, // 00D2 GETMET R12 R12 K34 + 0x5C381600, // 00D3 MOVE R14 R11 + 0x7C300400, // 00D4 CALL R12 2 + 0xB8320200, // 00D5 GETNGBL R12 K1 + 0x8C301902, // 00D6 GETMET R12 R12 K2 + 0x8C380713, // 00D7 GETMET R14 R3 K19 + 0x58400026, // 00D8 LDCONST R16 K38 + 0x88440910, // 00D9 GETMBR R17 R4 K16 + 0x7C380600, // 00DA CALL R14 3 + 0x583C0018, // 00DB LDCONST R15 K24 + 0x7C300600, // 00DC CALL R12 3 + 0x70020004, // 00DD JMP #00E3 + 0xB8320200, // 00DE GETNGBL R12 K1 + 0x8C301902, // 00DF GETMET R12 R12 K2 + 0x58380027, // 00E0 LDCONST R14 K39 + 0x583C0018, // 00E1 LDCONST R15 K24 + 0x7C300600, // 00E2 CALL R12 3 + 0x7001FF3A, // 00E3 JMP #001F + 0x581C0028, // 00E4 LDCONST R7 K40 + 0xAC1C0200, // 00E5 CATCH R7 1 0 + 0xB0080000, // 00E6 RAISE 2 R0 R0 + 0xB81E0200, // 00E7 GETNGBL R7 K1 + 0x8C1C0F02, // 00E8 GETMET R7 R7 K2 + 0x60240008, // 00E9 GETGBL R9 G8 + 0x88280D0B, // 00EA GETMBR R10 R6 K11 + 0x7C240200, // 00EB CALL R9 1 + 0x00265209, // 00EC ADD R9 K41 R9 + 0x542A0003, // 00ED LDINT R10 4 + 0x7C1C0600, // 00EE CALL R7 3 + 0x601C000C, // 00EF GETGBL R7 G12 + 0x88200D0B, // 00F0 GETMBR R8 R6 K11 + 0x7C1C0200, // 00F1 CALL R7 1 + 0x241C0F2A, // 00F2 GT R7 R7 K42 + 0x781E0015, // 00F3 JMPF R7 #010A + 0xB81E0200, // 00F4 GETNGBL R7 K1 + 0x8C1C0F02, // 00F5 GETMET R7 R7 K2 + 0x60240008, // 00F6 GETGBL R9 G8 + 0x5C280C00, // 00F7 MOVE R10 R6 + 0x7C240200, // 00F8 CALL R9 1 + 0x00265609, // 00F9 ADD R9 K43 R9 + 0x542A0003, // 00FA LDINT R10 4 + 0x7C1C0600, // 00FB CALL R7 3 + 0xB81E0200, // 00FC GETNGBL R7 K1 + 0x8C1C0F02, // 00FD GETMET R7 R7 K2 + 0x60240008, // 00FE GETGBL R9 G8 + 0x8C280D2D, // 00FF GETMET R10 R6 K45 + 0x7C280200, // 0100 CALL R10 1 + 0x7C240200, // 0101 CALL R9 1 + 0x00265809, // 0102 ADD R9 K44 R9 + 0x5828002E, // 0103 LDCONST R10 K46 + 0x7C1C0600, // 0104 CALL R7 3 + 0x8C1C012F, // 0105 GETMET R7 R0 K47 + 0x5C240200, // 0106 MOVE R9 R1 + 0x5C280C00, // 0107 MOVE R10 R6 + 0x7C1C0600, // 0108 CALL R7 3 + 0x70020001, // 0109 JMP #010C + 0x501C0000, // 010A LDBOOL R7 0 0 + 0x80040E00, // 010B RET 1 R7 + 0x501C0200, // 010C LDBOOL R7 1 0 + 0x80040E00, // 010D RET 1 R7 + 0x80000000, // 010E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_report_data +********************************************************************/ +be_local_closure(Matter_IM_send_report_data, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_ReportData), + }), + be_str_weak(send_report_data), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: init ********************************************************************/ @@ -952,9 +1639,9 @@ be_local_closure(Matter_IM_init, /* name */ /******************************************************************** -** Solidified function: report_data +** Solidified function: process_write_response ********************************************************************/ -be_local_closure(Matter_IM_report_data, /* name */ +be_local_closure(Matter_IM_process_write_response, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ @@ -967,14 +1654,63 @@ be_local_closure(Matter_IM_report_data, /* name */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(ReportDataMessage), + /* K2 */ be_nested_str_weak(WriteResponseMessage), /* K3 */ be_nested_str_weak(from_TLV), /* K4 */ be_nested_str_weak(tasmota), /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20ReportDataMessage_X3D), + /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20WriteResponseMessage_X3D), /* K7 */ be_const_int(2), }), - be_str_weak(report_data), + be_str_weak(process_write_response), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100903, // 0004 GETMET R4 R4 K3 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x601C0008, // 0009 GETGBL R7 G8 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C1C0200, // 000B CALL R7 1 + 0x001E0C07, // 000C ADD R7 K6 R7 + 0x58200007, // 000D LDCONST R8 K7 + 0x7C140600, // 000E CALL R5 3 + 0x50140000, // 000F LDBOOL R5 0 0 + 0x80040A00, // 0010 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: subscribe_response +********************************************************************/ +be_local_closure(Matter_IM_subscribe_response, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(SubscribeResponseMessage), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20SubscribeResponsetMessage_X3D), + /* K7 */ be_const_int(2), + }), + be_str_weak(subscribe_response), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ 0xA40E0000, // 0000 IMPORT R3 K0 @@ -1382,813 +2118,6 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: send_enqueued -********************************************************************/ -be_local_closure(Matter_IM_send_enqueued, /* 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_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(ready), - /* K3 */ be_nested_str_weak(send), - /* K4 */ be_nested_str_weak(remove), - /* K5 */ be_const_int(1), - }), - be_str_weak(send_enqueued), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0011, // 0005 JMPF R3 #0018 - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x88100702, // 0008 GETMBR R4 R3 K2 - 0x7812000B, // 0009 JMPF R4 #0016 - 0x8C100703, // 000A GETMET R4 R3 K3 - 0x5C180200, // 000B MOVE R6 R1 - 0x7C100400, // 000C CALL R4 2 - 0x78120005, // 000D JMPF R4 #0014 - 0x88140101, // 000E GETMBR R5 R0 K1 - 0x8C140B04, // 000F GETMET R5 R5 K4 - 0x5C1C0400, // 0010 MOVE R7 R2 - 0x7C140400, // 0011 CALL R5 2 - 0x04080505, // 0012 SUB R2 R2 K5 - 0x70020001, // 0013 JMP #0016 - 0x50140000, // 0014 LDBOOL R5 0 0 - 0x900E0405, // 0015 SETMBR R3 K2 R5 - 0x00080505, // 0016 ADD R2 R2 K5 - 0x7001FFE8, // 0017 JMP #0001 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_invoke_response -********************************************************************/ -be_local_closure(Matter_IM_send_invoke_response, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_InvokeResponse), - }), - be_str_weak(send_invoke_response), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_subscribe_update -********************************************************************/ -be_local_closure(Matter_IM_send_subscribe_update, /* name */ - be_nested_proto( - 14, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[26]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(session), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(ReadRequestMessage), - /* K4 */ be_nested_str_weak(fabric_filtered), - /* K5 */ be_nested_str_weak(attributes_requests), - /* K6 */ be_nested_str_weak(updates), - /* K7 */ be_nested_str_weak(AttributePathIB), - /* K8 */ be_nested_str_weak(endpoint), - /* K9 */ be_nested_str_weak(cluster), - /* K10 */ be_nested_str_weak(attribute), - /* K11 */ be_nested_str_weak(push), - /* K12 */ be_nested_str_weak(stop_iteration), - /* K13 */ be_const_int(0), - /* K14 */ be_nested_str_weak(tasmota), - /* K15 */ be_nested_str_weak(log), - /* K16 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_data_X20_X20sub_id_X3D), - /* K17 */ be_nested_str_weak(subscription_id), - /* K18 */ be_const_int(2), - /* K19 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_alive_X20sub_id_X3D), - /* K20 */ be_nested_str_weak(_inner_process_read_request), - /* K21 */ be_nested_str_weak(suppress_response), - /* K22 */ be_nested_str_weak(send_queue), - /* K23 */ be_nested_str_weak(IM_ReportDataSubscribed), - /* K24 */ be_nested_str_weak(__message_handler), - /* K25 */ be_nested_str_weak(send_enqueued), - }), - be_str_weak(send_subscribe_update), - &be_const_str_solidified, - ( &(const binstruction[80]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0xB8120400, // 0002 GETNGBL R4 K2 - 0x8C100903, // 0003 GETMET R4 R4 K3 - 0x7C100200, // 0004 CALL R4 1 - 0x50140000, // 0005 LDBOOL R5 0 0 - 0x90120805, // 0006 SETMBR R4 K4 R5 - 0x60140012, // 0007 GETGBL R5 G18 - 0x7C140000, // 0008 CALL R5 0 - 0x90120A05, // 0009 SETMBR R4 K5 R5 - 0x60140010, // 000A GETGBL R5 G16 - 0x88180306, // 000B GETMBR R6 R1 K6 - 0x7C140200, // 000C CALL R5 1 - 0xA802000F, // 000D EXBLK 0 #001E - 0x5C180A00, // 000E MOVE R6 R5 - 0x7C180000, // 000F CALL R6 0 - 0xB81E0400, // 0010 GETNGBL R7 K2 - 0x8C1C0F07, // 0011 GETMET R7 R7 K7 - 0x7C1C0200, // 0012 CALL R7 1 - 0x88200D08, // 0013 GETMBR R8 R6 K8 - 0x901E1008, // 0014 SETMBR R7 K8 R8 - 0x88200D09, // 0015 GETMBR R8 R6 K9 - 0x901E1208, // 0016 SETMBR R7 K9 R8 - 0x88200D0A, // 0017 GETMBR R8 R6 K10 - 0x901E1408, // 0018 SETMBR R7 K10 R8 - 0x88200905, // 0019 GETMBR R8 R4 K5 - 0x8C20110B, // 001A GETMET R8 R8 K11 - 0x5C280E00, // 001B MOVE R10 R7 - 0x7C200400, // 001C CALL R8 2 - 0x7001FFEF, // 001D JMP #000E - 0x5814000C, // 001E LDCONST R5 K12 - 0xAC140200, // 001F CATCH R5 1 0 - 0xB0080000, // 0020 RAISE 2 R0 R0 - 0x6014000C, // 0021 GETGBL R5 G12 - 0x88180905, // 0022 GETMBR R6 R4 K5 - 0x7C140200, // 0023 CALL R5 1 - 0x24140B0D, // 0024 GT R5 R5 K13 - 0x78160008, // 0025 JMPF R5 #002F - 0xB8161C00, // 0026 GETNGBL R5 K14 - 0x8C140B0F, // 0027 GETMET R5 R5 K15 - 0x601C0008, // 0028 GETGBL R7 G8 - 0x88200311, // 0029 GETMBR R8 R1 K17 - 0x7C1C0200, // 002A CALL R7 1 - 0x001E2007, // 002B ADD R7 K16 R7 - 0x58200012, // 002C LDCONST R8 K18 - 0x7C140600, // 002D CALL R5 3 - 0x70020007, // 002E JMP #0037 - 0xB8161C00, // 002F GETNGBL R5 K14 - 0x8C140B0F, // 0030 GETMET R5 R5 K15 - 0x601C0008, // 0031 GETGBL R7 G8 - 0x88200311, // 0032 GETMBR R8 R1 K17 - 0x7C1C0200, // 0033 CALL R7 1 - 0x001E2607, // 0034 ADD R7 K19 R7 - 0x58200012, // 0035 LDCONST R8 K18 - 0x7C140600, // 0036 CALL R5 3 - 0x8C140114, // 0037 GETMET R5 R0 K20 - 0x5C1C0600, // 0038 MOVE R7 R3 - 0x5C200800, // 0039 MOVE R8 R4 - 0x7C140600, // 003A CALL R5 3 - 0x6018000C, // 003B GETGBL R6 G12 - 0x881C0905, // 003C GETMBR R7 R4 K5 - 0x7C180200, // 003D CALL R6 1 - 0x1C180D0D, // 003E EQ R6 R6 K13 - 0x90162A06, // 003F SETMBR R5 K21 R6 - 0x88180311, // 0040 GETMBR R6 R1 K17 - 0x90162206, // 0041 SETMBR R5 K17 R6 - 0x88180116, // 0042 GETMBR R6 R0 K22 - 0x8C180D0B, // 0043 GETMET R6 R6 K11 - 0xB8220400, // 0044 GETNGBL R8 K2 - 0x8C201117, // 0045 GETMET R8 R8 K23 - 0x88280718, // 0046 GETMBR R10 R3 K24 - 0x5C2C0600, // 0047 MOVE R11 R3 - 0x5C300A00, // 0048 MOVE R12 R5 - 0x5C340200, // 0049 MOVE R13 R1 - 0x7C200A00, // 004A CALL R8 5 - 0x7C180400, // 004B CALL R6 2 - 0x8C180119, // 004C GETMET R6 R0 K25 - 0x88200718, // 004D GETMBR R8 R3 K24 - 0x7C180400, // 004E CALL R6 2 - 0x80000000, // 004F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -be_local_closure(Matter_IM_every_second, /* name */ - be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_status -********************************************************************/ -be_local_closure(Matter_IM_send_status, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_Status), - }), - be_str_weak(send_status), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_report_data -********************************************************************/ -be_local_closure(Matter_IM_send_report_data, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_ReportData), - }), - be_str_weak(send_report_data), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_write_request -********************************************************************/ -be_local_closure(Matter_IM_process_write_request, /* name */ - be_nested_proto( - 20, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 19, /* nstack */ - 5, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[26]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(get_attribute_name), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_nested_str_weak(_X20_X28), - /* K6 */ be_nested_str_weak(_X29), - /* K7 */ be_nested_str_weak(), - /* K8 */ be_nested_str_weak(status), - /* K9 */ be_nested_str_weak(UNSUPPORTED_WRITE), - /* K10 */ be_nested_str_weak(write_attribute), - /* K11 */ be_nested_str_weak(session), - /* K12 */ be_nested_str_weak(SUCCESS), - /* K13 */ be_nested_str_weak(AttributeStatusIB), - /* K14 */ be_nested_str_weak(path), - /* K15 */ be_nested_str_weak(AttributePathIB), - /* K16 */ be_nested_str_weak(StatusIB), - /* K17 */ be_nested_str_weak(endpoint), - /* K18 */ be_nested_str_weak(write_responses), - /* K19 */ be_nested_str_weak(push), - /* K20 */ be_nested_str_weak(tasmota), - /* K21 */ be_nested_str_weak(log), - /* K22 */ be_nested_str_weak(format), - /* K23 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K24 */ be_const_int(2), - /* K25 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20IGNORED), - }), - be_str_weak(write_single_attribute), - &be_const_str_solidified, - ( &(const binstruction[97]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0xB81A0200, // 0001 GETNGBL R6 K1 - 0x8C180D02, // 0002 GETMET R6 R6 K2 - 0x88200503, // 0003 GETMBR R8 R2 K3 - 0x88240504, // 0004 GETMBR R9 R2 K4 - 0x7C180600, // 0005 CALL R6 3 - 0x781A0002, // 0006 JMPF R6 #000A - 0x001E0A06, // 0007 ADD R7 K5 R6 - 0x001C0F06, // 0008 ADD R7 R7 K6 - 0x70020000, // 0009 JMP #000B - 0x581C0007, // 000A LDCONST R7 K7 - 0x5C180E00, // 000B MOVE R6 R7 - 0xB81E0200, // 000C GETNGBL R7 K1 - 0x881C0F09, // 000D GETMBR R7 R7 K9 - 0x900A1007, // 000E SETMBR R2 K8 R7 - 0x4C1C0000, // 000F LDNIL R7 - 0x201C0207, // 0010 NE R7 R1 R7 - 0x781E0006, // 0011 JMPF R7 #0019 - 0x8C1C030A, // 0012 GETMET R7 R1 K10 - 0x68240000, // 0013 GETUPV R9 U0 - 0x8824130B, // 0014 GETMBR R9 R9 K11 - 0x5C280400, // 0015 MOVE R10 R2 - 0x5C2C0600, // 0016 MOVE R11 R3 - 0x7C1C0800, // 0017 CALL R7 4 - 0x70020000, // 0018 JMP #001A - 0x4C1C0000, // 0019 LDNIL R7 - 0x781E0002, // 001A JMPF R7 #001E - 0xB8220200, // 001B GETNGBL R8 K1 - 0x8820110C, // 001C GETMBR R8 R8 K12 - 0x900A1008, // 001D SETMBR R2 K8 R8 - 0x88200508, // 001E GETMBR R8 R2 K8 - 0x4C240000, // 001F LDNIL R9 - 0x20201009, // 0020 NE R8 R8 R9 - 0x78220032, // 0021 JMPF R8 #0055 - 0x78120030, // 0022 JMPF R4 #0054 - 0xB8220200, // 0023 GETNGBL R8 K1 - 0x8C20110D, // 0024 GETMET R8 R8 K13 - 0x7C200200, // 0025 CALL R8 1 - 0xB8260200, // 0026 GETNGBL R9 K1 - 0x8C24130F, // 0027 GETMET R9 R9 K15 - 0x7C240200, // 0028 CALL R9 1 - 0x90221C09, // 0029 SETMBR R8 K14 R9 - 0xB8260200, // 002A GETNGBL R9 K1 - 0x8C241310, // 002B GETMET R9 R9 K16 - 0x7C240200, // 002C CALL R9 1 - 0x90221009, // 002D SETMBR R8 K8 R9 - 0x8824110E, // 002E GETMBR R9 R8 K14 - 0x88280511, // 002F GETMBR R10 R2 K17 - 0x9026220A, // 0030 SETMBR R9 K17 R10 - 0x8824110E, // 0031 GETMBR R9 R8 K14 - 0x88280503, // 0032 GETMBR R10 R2 K3 - 0x9026060A, // 0033 SETMBR R9 K3 R10 - 0x8824110E, // 0034 GETMBR R9 R8 K14 - 0x88280504, // 0035 GETMBR R10 R2 K4 - 0x9026080A, // 0036 SETMBR R9 K4 R10 - 0x88241108, // 0037 GETMBR R9 R8 K8 - 0x88280508, // 0038 GETMBR R10 R2 K8 - 0x9026100A, // 0039 SETMBR R9 K8 R10 - 0x88240112, // 003A GETMBR R9 R0 K18 - 0x8C241313, // 003B GETMET R9 R9 K19 - 0x5C2C1000, // 003C MOVE R11 R8 - 0x7C240400, // 003D CALL R9 2 - 0xB8262800, // 003E GETNGBL R9 K20 - 0x8C241315, // 003F GETMET R9 R9 K21 - 0x8C2C0B16, // 0040 GETMET R11 R5 K22 - 0x58340017, // 0041 LDCONST R13 K23 - 0x60380008, // 0042 GETGBL R14 G8 - 0x5C3C0400, // 0043 MOVE R15 R2 - 0x7C380200, // 0044 CALL R14 1 - 0x5C3C0C00, // 0045 MOVE R15 R6 - 0x88400508, // 0046 GETMBR R16 R2 K8 - 0x88440508, // 0047 GETMBR R17 R2 K8 - 0xB84A0200, // 0048 GETNGBL R18 K1 - 0x8848250C, // 0049 GETMBR R18 R18 K12 - 0x1C442212, // 004A EQ R17 R17 R18 - 0x78460001, // 004B JMPF R17 #004E - 0x5844000C, // 004C LDCONST R17 K12 - 0x70020000, // 004D JMP #004F - 0x58440007, // 004E LDCONST R17 K7 - 0x7C2C0C00, // 004F CALL R11 6 - 0x58300018, // 0050 LDCONST R12 K24 - 0x7C240600, // 0051 CALL R9 3 - 0x50240200, // 0052 LDBOOL R9 1 0 - 0x80041200, // 0053 RET 1 R9 - 0x7002000A, // 0054 JMP #0060 - 0xB8222800, // 0055 GETNGBL R8 K20 - 0x8C201115, // 0056 GETMET R8 R8 K21 - 0x8C280B16, // 0057 GETMET R10 R5 K22 - 0x58300019, // 0058 LDCONST R12 K25 - 0x60340008, // 0059 GETGBL R13 G8 - 0x5C380400, // 005A MOVE R14 R2 - 0x7C340200, // 005B CALL R13 1 - 0x5C380C00, // 005C MOVE R14 R6 - 0x7C280800, // 005D CALL R10 4 - 0x582C0018, // 005E LDCONST R11 K24 - 0x7C200600, // 005F CALL R8 3 - 0x80000000, // 0060 RET 0 - }) - ), - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 3]) { /* upvals */ - be_local_const_upval(1, 7), - be_local_const_upval(1, 9), - be_local_const_upval(1, 13), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x68100001, // 0001 GETUPV R4 U1 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x681C0002, // 0004 GETUPV R7 U2 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C0C0A00, // 0006 CALL R3 5 - 0x80040600, // 0007 RET 1 R3 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[36]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(WriteRequestMessage), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20WriteRequestMessage_X3D), - /* K7 */ be_const_int(3), - /* K8 */ be_nested_str_weak(suppress_response), - /* K9 */ be_nested_str_weak(device), - /* K10 */ be_nested_str_weak(get_active_endpoints), - /* K11 */ be_nested_str_weak(MTR_X3A_X20IM_X3Awrite_request_X20processing_X20start), - /* K12 */ be_nested_str_weak(Path), - /* K13 */ be_nested_str_weak(write_requests), - /* K14 */ be_nested_str_weak(WriteResponseMessage), - /* K15 */ be_nested_str_weak(write_responses), - /* K16 */ be_nested_str_weak(path), - /* K17 */ be_nested_str_weak(data), - /* K18 */ be_nested_str_weak(endpoint), - /* K19 */ be_nested_str_weak(cluster), - /* K20 */ be_nested_str_weak(attribute), - /* K21 */ be_nested_str_weak(status), - /* K22 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K23 */ be_nested_str_weak(INVALID_ACTION), - /* K24 */ be_nested_str_weak(get_attribute_name), - /* K25 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), - /* K26 */ be_nested_str_weak(_X20_X28), - /* K27 */ be_nested_str_weak(_X29), - /* K28 */ be_nested_str_weak(), - /* K29 */ be_const_int(2), - /* K30 */ be_nested_str_weak(process_attribute_expansion), - /* K31 */ be_nested_str_weak(stop_iteration), - /* K32 */ be_nested_str_weak(MTR_X3A_X20ReportWriteMessage_X3D), - /* K33 */ be_nested_str_weak(MTR_X3A_X20ReportWriteMessageTLV_X3D), - /* K34 */ be_nested_str_weak(to_TLV), - /* K35 */ be_nested_str_weak(send_write_response), - }), - be_str_weak(process_write_request), - &be_const_str_solidified, - ( &(const binstruction[134]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 - 0x7C100200, // 0003 CALL R4 1 - 0x8C100903, // 0004 GETMET R4 R4 K3 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C100400, // 0006 CALL R4 2 - 0xB8160800, // 0007 GETNGBL R5 K4 - 0x8C140B05, // 0008 GETMET R5 R5 K5 - 0x601C0008, // 0009 GETGBL R7 G8 - 0x5C200800, // 000A MOVE R8 R4 - 0x7C1C0200, // 000B CALL R7 1 - 0x001E0C07, // 000C ADD R7 K6 R7 - 0x58200007, // 000D LDCONST R8 K7 - 0x7C140600, // 000E CALL R5 3 - 0x88140908, // 000F GETMBR R5 R4 K8 - 0x88180109, // 0010 GETMBR R6 R0 K9 - 0x8C180D0A, // 0011 GETMET R6 R6 K10 - 0x7C180200, // 0012 CALL R6 1 - 0x841C0000, // 0013 CLOSURE R7 P0 - 0xB8220800, // 0014 GETNGBL R8 K4 - 0x8C201105, // 0015 GETMET R8 R8 K5 - 0x5828000B, // 0016 LDCONST R10 K11 - 0x542E0003, // 0017 LDINT R11 4 - 0x7C200600, // 0018 CALL R8 3 - 0xB8220200, // 0019 GETNGBL R8 K1 - 0x8C20110C, // 001A GETMET R8 R8 K12 - 0x7C200200, // 001B CALL R8 1 - 0x8824090D, // 001C GETMBR R9 R4 K13 - 0x4C280000, // 001D LDNIL R10 - 0x2024120A, // 001E NE R9 R9 R10 - 0x78260062, // 001F JMPF R9 #0083 - 0xB8260200, // 0020 GETNGBL R9 K1 - 0x8C24130E, // 0021 GETMET R9 R9 K14 - 0x7C240200, // 0022 CALL R9 1 - 0x60280012, // 0023 GETGBL R10 G18 - 0x7C280000, // 0024 CALL R10 0 - 0x90261E0A, // 0025 SETMBR R9 K15 R10 - 0x60280010, // 0026 GETGBL R10 G16 - 0x882C090D, // 0027 GETMBR R11 R4 K13 - 0x7C280200, // 0028 CALL R10 1 - 0xA802003D, // 0029 EXBLK 0 #0068 - 0x5C2C1400, // 002A MOVE R11 R10 - 0x7C2C0000, // 002B CALL R11 0 - 0x88301710, // 002C GETMBR R12 R11 K16 - 0x88341711, // 002D GETMBR R13 R11 K17 - 0x88381912, // 002E GETMBR R14 R12 K18 - 0x9022240E, // 002F SETMBR R8 K18 R14 - 0x88381913, // 0030 GETMBR R14 R12 K19 - 0x9022260E, // 0031 SETMBR R8 K19 R14 - 0x88381914, // 0032 GETMBR R14 R12 K20 - 0x9022280E, // 0033 SETMBR R8 K20 R14 - 0xB83A0200, // 0034 GETNGBL R14 K1 - 0x88381D16, // 0035 GETMBR R14 R14 K22 - 0x90222A0E, // 0036 SETMBR R8 K21 R14 - 0x88381113, // 0037 GETMBR R14 R8 K19 - 0x4C3C0000, // 0038 LDNIL R15 - 0x1C381C0F, // 0039 EQ R14 R14 R15 - 0x743A0003, // 003A JMPT R14 #003F - 0x88381114, // 003B GETMBR R14 R8 K20 - 0x4C3C0000, // 003C LDNIL R15 - 0x1C381C0F, // 003D EQ R14 R14 R15 - 0x783A000A, // 003E JMPF R14 #004A - 0xB83A0200, // 003F GETNGBL R14 K1 - 0x88381D17, // 0040 GETMBR R14 R14 K23 - 0x90222A0E, // 0041 SETMBR R8 K21 R14 - 0x5C380E00, // 0042 MOVE R14 R7 - 0x5C3C1200, // 0043 MOVE R15 R9 - 0x4C400000, // 0044 LDNIL R16 - 0x5C441000, // 0045 MOVE R17 R8 - 0x4C480000, // 0046 LDNIL R18 - 0x504C0200, // 0047 LDBOOL R19 1 0 - 0x7C380A00, // 0048 CALL R14 5 - 0x7001FFDF, // 0049 JMP #002A - 0x88381112, // 004A GETMBR R14 R8 K18 - 0x4C3C0000, // 004B LDNIL R15 - 0x1C381C0F, // 004C EQ R14 R14 R15 - 0x783A0012, // 004D JMPF R14 #0061 - 0xB83A0200, // 004E GETNGBL R14 K1 - 0x8C381D18, // 004F GETMET R14 R14 K24 - 0x88401113, // 0050 GETMBR R16 R8 K19 - 0x88441114, // 0051 GETMBR R17 R8 K20 - 0x7C380600, // 0052 CALL R14 3 - 0xB83E0800, // 0053 GETNGBL R15 K4 - 0x8C3C1F05, // 0054 GETMET R15 R15 K5 - 0x60440008, // 0055 GETGBL R17 G8 - 0x5C481000, // 0056 MOVE R18 R8 - 0x7C440200, // 0057 CALL R17 1 - 0x00463211, // 0058 ADD R17 K25 R17 - 0x783A0002, // 0059 JMPF R14 #005D - 0x004A340E, // 005A ADD R18 K26 R14 - 0x0048251B, // 005B ADD R18 R18 K27 - 0x70020000, // 005C JMP #005E - 0x5848001C, // 005D LDCONST R18 K28 - 0x00442212, // 005E ADD R17 R17 R18 - 0x5848001D, // 005F LDCONST R18 K29 - 0x7C3C0600, // 0060 CALL R15 3 - 0x88380109, // 0061 GETMBR R14 R0 K9 - 0x8C381D1E, // 0062 GETMET R14 R14 K30 - 0x5C401000, // 0063 MOVE R16 R8 - 0x84440001, // 0064 CLOSURE R17 P1 - 0x7C380600, // 0065 CALL R14 3 - 0xA0280000, // 0066 CLOSE R10 - 0x7001FFC1, // 0067 JMP #002A - 0x5828001F, // 0068 LDCONST R10 K31 - 0xAC280200, // 0069 CATCH R10 1 0 - 0xB0080000, // 006A RAISE 2 R0 R0 - 0xB82A0800, // 006B GETNGBL R10 K4 - 0x8C281505, // 006C GETMET R10 R10 K5 - 0x60300008, // 006D GETGBL R12 G8 - 0x5C341200, // 006E MOVE R13 R9 - 0x7C300200, // 006F CALL R12 1 - 0x0032400C, // 0070 ADD R12 K32 R12 - 0x54360003, // 0071 LDINT R13 4 - 0x7C280600, // 0072 CALL R10 3 - 0xB82A0800, // 0073 GETNGBL R10 K4 - 0x8C281505, // 0074 GETMET R10 R10 K5 - 0x60300008, // 0075 GETGBL R12 G8 - 0x8C341322, // 0076 GETMET R13 R9 K34 - 0x7C340200, // 0077 CALL R13 1 - 0x7C300200, // 0078 CALL R12 1 - 0x0032420C, // 0079 ADD R12 K33 R12 - 0x58340007, // 007A LDCONST R13 K7 - 0x7C280600, // 007B CALL R10 3 - 0x5C280A00, // 007C MOVE R10 R5 - 0x742A0003, // 007D JMPT R10 #0082 - 0x8C280123, // 007E GETMET R10 R0 K35 - 0x5C300200, // 007F MOVE R12 R1 - 0x5C341200, // 0080 MOVE R13 R9 - 0x7C280600, // 0081 CALL R10 3 - 0xA0240000, // 0082 CLOSE R9 - 0x50240200, // 0083 LDBOOL R9 1 0 - 0xA0000000, // 0084 CLOSE R0 - 0x80041200, // 0085 RET 1 R9 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_incoming_ack -********************************************************************/ -be_local_closure(Matter_IM_process_incoming_ack, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(find_sendqueue_by_exchangeid), - /* K1 */ be_nested_str_weak(exchange_id), - /* K2 */ be_nested_str_weak(ack_received), - }), - be_str_weak(process_incoming_ack), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x88100301, // 0001 GETMBR R4 R1 K1 - 0x7C080400, // 0002 CALL R2 2 - 0x780A0003, // 0003 JMPF R2 #0008 - 0x8C0C0502, // 0004 GETMET R3 R2 K2 - 0x5C140200, // 0005 MOVE R5 R1 - 0x7C0C0400, // 0006 CALL R3 2 - 0x80040600, // 0007 RET 1 R3 - 0x500C0000, // 0008 LDBOOL R3 0 0 - 0x80040600, // 0009 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_subscribe_response -********************************************************************/ -be_local_closure(Matter_IM_send_subscribe_response, /* name */ - be_nested_proto( - 11, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_SubscribeResponse), - }), - be_str_weak(send_subscribe_response), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0xB81A0400, // 0002 GETNGBL R6 K2 - 0x8C180D03, // 0003 GETMET R6 R6 K3 - 0x5C200200, // 0004 MOVE R8 R1 - 0x5C240400, // 0005 MOVE R9 R2 - 0x5C280600, // 0006 MOVE R10 R3 - 0x7C180800, // 0007 CALL R6 4 - 0x7C100400, // 0008 CALL R4 2 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: subscribe_response -********************************************************************/ -be_local_closure(Matter_IM_subscribe_response, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(SubscribeResponseMessage), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20SubscribeResponsetMessage_X3D), - /* K7 */ be_const_int(2), - }), - be_str_weak(subscribe_response), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 - 0x7C100200, // 0003 CALL R4 1 - 0x8C100903, // 0004 GETMET R4 R4 K3 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C100400, // 0006 CALL R4 2 - 0xB8160800, // 0007 GETNGBL R5 K4 - 0x8C140B05, // 0008 GETMET R5 R5 K5 - 0x601C0008, // 0009 GETGBL R7 G8 - 0x5C200800, // 000A MOVE R8 R4 - 0x7C1C0200, // 000B CALL R7 1 - 0x001E0C07, // 000C ADD R7 K6 R7 - 0x58200007, // 000D LDCONST R8 K7 - 0x7C140600, // 000E CALL R5 3 - 0x50140000, // 000F LDBOOL R5 0 0 - 0x80040A00, // 0010 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: find_sendqueue_by_exchangeid ********************************************************************/ @@ -2239,57 +2168,6 @@ be_local_closure(Matter_IM_find_sendqueue_by_exchangeid, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: process_read_request -********************************************************************/ -be_local_closure(Matter_IM_process_read_request, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(ReadRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(attributes_requests), - /* K4 */ be_nested_str_weak(_inner_process_read_request), - /* K5 */ be_nested_str_weak(session), - /* K6 */ be_nested_str_weak(send_report_data), - }), - be_str_weak(process_read_request), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x88100703, // 0006 GETMBR R4 R3 K3 - 0x4C140000, // 0007 LDNIL R5 - 0x20100805, // 0008 NE R4 R4 R5 - 0x78120007, // 0009 JMPF R4 #0012 - 0x8C100104, // 000A GETMET R4 R0 K4 - 0x88180305, // 000B GETMBR R6 R1 K5 - 0x5C1C0600, // 000C MOVE R7 R3 - 0x7C100600, // 000D CALL R4 3 - 0x8C140106, // 000E GETMET R5 R0 K6 - 0x5C1C0200, // 000F MOVE R7 R1 - 0x5C200800, // 0010 MOVE R8 R4 - 0x7C140600, // 0011 CALL R5 3 - 0x50100200, // 0012 LDBOOL R4 1 0 - 0x80040800, // 0013 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: process_invoke_response ********************************************************************/ @@ -2339,42 +2217,251 @@ be_local_closure(Matter_IM_process_invoke_response, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: send_enqueued +********************************************************************/ +be_local_closure(Matter_IM_send_enqueued, /* 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_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(ready), + /* K3 */ be_nested_str_weak(send), + /* K4 */ be_nested_str_weak(remove), + /* K5 */ be_const_int(1), + }), + be_str_weak(send_enqueued), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0011, // 0005 JMPF R3 #0018 + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x88100702, // 0008 GETMBR R4 R3 K2 + 0x7812000B, // 0009 JMPF R4 #0016 + 0x8C100703, // 000A GETMET R4 R3 K3 + 0x5C180200, // 000B MOVE R6 R1 + 0x7C100400, // 000C CALL R4 2 + 0x78120005, // 000D JMPF R4 #0014 + 0x88140101, // 000E GETMBR R5 R0 K1 + 0x8C140B04, // 000F GETMET R5 R5 K4 + 0x5C1C0400, // 0010 MOVE R7 R2 + 0x7C140400, // 0011 CALL R5 2 + 0x04080505, // 0012 SUB R2 R2 K5 + 0x70020001, // 0013 JMP #0016 + 0x50140000, // 0014 LDBOOL R5 0 0 + 0x900E0405, // 0015 SETMBR R3 K2 R5 + 0x00080505, // 0016 ADD R2 R2 K5 + 0x7001FFE8, // 0017 JMP #0001 + 0x80000000, // 0018 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_timed_request +********************************************************************/ +be_local_closure(Matter_IM_process_timed_request, /* name */ + be_nested_proto( + 13, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(TimedRequestMessage), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20TimedRequestMessage_X3D), + /* K7 */ be_const_int(3), + /* K8 */ be_nested_str_weak(format), + /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20TimedRequest_X3D_X25i_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K10 */ be_nested_str_weak(timeout), + /* K11 */ be_nested_str_weak(remote_ip), + /* K12 */ be_nested_str_weak(remote_port), + /* K13 */ be_const_int(2), + /* K14 */ be_nested_str_weak(send_status), + /* K15 */ be_nested_str_weak(SUCCESS), + }), + be_str_weak(process_timed_request), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100903, // 0004 GETMET R4 R4 K3 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x601C0008, // 0009 GETGBL R7 G8 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C1C0200, // 000B CALL R7 1 + 0x001E0C07, // 000C ADD R7 K6 R7 + 0x58200007, // 000D LDCONST R8 K7 + 0x7C140600, // 000E CALL R5 3 + 0xB8160800, // 000F GETNGBL R5 K4 + 0x8C140B05, // 0010 GETMET R5 R5 K5 + 0x8C1C0708, // 0011 GETMET R7 R3 K8 + 0x58240009, // 0012 LDCONST R9 K9 + 0x8828090A, // 0013 GETMBR R10 R4 K10 + 0x882C030B, // 0014 GETMBR R11 R1 K11 + 0x8830030C, // 0015 GETMBR R12 R1 K12 + 0x7C1C0A00, // 0016 CALL R7 5 + 0x5820000D, // 0017 LDCONST R8 K13 + 0x7C140600, // 0018 CALL R5 3 + 0x8C14010E, // 0019 GETMET R5 R0 K14 + 0x5C1C0200, // 001A MOVE R7 R1 + 0xB8220200, // 001B GETNGBL R8 K1 + 0x8820110F, // 001C GETMBR R8 R8 K15 + 0x7C140600, // 001D CALL R5 3 + 0x50140200, // 001E LDBOOL R5 1 0 + 0x80040A00, // 001F RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +be_local_closure(Matter_IM_every_second, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(expire_sendqueue), + }), + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_sendqueue_by_exchangeid +********************************************************************/ +be_local_closure(Matter_IM_remove_sendqueue_by_exchangeid, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(get_exchangeid), + /* K3 */ be_nested_str_weak(remove), + /* K4 */ be_const_int(1), + }), + be_str_weak(remove_sendqueue_by_exchangeid), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x80000400, // 0003 RET 0 + 0x58080000, // 0004 LDCONST R2 K0 + 0x600C000C, // 0005 GETGBL R3 G12 + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x7C0C0200, // 0007 CALL R3 1 + 0x140C0403, // 0008 LT R3 R2 R3 + 0x780E000C, // 0009 JMPF R3 #0017 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x940C0602, // 000B GETIDX R3 R3 R2 + 0x8C0C0702, // 000C GETMET R3 R3 K2 + 0x7C0C0200, // 000D CALL R3 1 + 0x1C0C0601, // 000E EQ R3 R3 R1 + 0x780E0004, // 000F JMPF R3 #0015 + 0x880C0101, // 0010 GETMBR R3 R0 K1 + 0x8C0C0703, // 0011 GETMET R3 R3 K3 + 0x5C140400, // 0012 MOVE R5 R2 + 0x7C0C0400, // 0013 CALL R3 2 + 0x70020000, // 0014 JMP #0016 + 0x00080504, // 0015 ADD R2 R2 K4 + 0x7001FFED, // 0016 JMP #0005 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_IM ********************************************************************/ be_local_class(Matter_IM, 3, NULL, - be_nested_map(28, + be_nested_map(29, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(process_timed_request, -1), be_const_closure(Matter_IM_process_timed_request_closure) }, - { be_const_key_weak(process_status_response, -1), be_const_closure(Matter_IM_process_status_response_closure) }, - { be_const_key_weak(process_invoke_response, -1), be_const_closure(Matter_IM_process_invoke_response_closure) }, + { be_const_key_weak(expire_sendqueue, -1), be_const_closure(Matter_IM_expire_sendqueue_closure) }, + { be_const_key_weak(device, -1), be_const_var(0) }, { be_const_key_weak(send_queue, -1), be_const_var(2) }, - { be_const_key_weak(process_write_response, -1), be_const_closure(Matter_IM_process_write_response_closure) }, - { be_const_key_weak(process_invoke_request, 9), be_const_closure(Matter_IM_process_invoke_request_closure) }, - { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_remove_sendqueue_by_exchangeid_closure) }, - { be_const_key_weak(send_write_response, -1), be_const_closure(Matter_IM_send_write_response_closure) }, - { be_const_key_weak(every_250ms, -1), be_const_closure(Matter_IM_every_250ms_closure) }, - { be_const_key_weak(subscribe_request, -1), be_const_closure(Matter_IM_subscribe_request_closure) }, - { be_const_key_weak(init, -1), be_const_closure(Matter_IM_init_closure) }, - { be_const_key_weak(find_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_find_sendqueue_by_exchangeid_closure) }, { be_const_key_weak(report_data, -1), be_const_closure(Matter_IM_report_data_closure) }, - { be_const_key_weak(send_report_data, 24), be_const_closure(Matter_IM_send_report_data_closure) }, - { be_const_key_weak(send_enqueued, -1), be_const_closure(Matter_IM_send_enqueued_closure) }, - { be_const_key_weak(send_subscribe_response, -1), be_const_closure(Matter_IM_send_subscribe_response_closure) }, - { be_const_key_weak(send_subscribe_update, -1), be_const_closure(Matter_IM_send_subscribe_update_closure) }, - { be_const_key_weak(every_second, 11), be_const_closure(Matter_IM_every_second_closure) }, { be_const_key_weak(send_status, -1), be_const_closure(Matter_IM_send_status_closure) }, - { be_const_key_weak(process_incoming, 13), be_const_closure(Matter_IM_process_incoming_closure) }, - { be_const_key_weak(process_write_request, -1), be_const_closure(Matter_IM_process_write_request_closure) }, - { be_const_key_weak(process_incoming_ack, -1), be_const_closure(Matter_IM_process_incoming_ack_closure) }, - { be_const_key_weak(send_invoke_response, 15), be_const_closure(Matter_IM_send_invoke_response_closure) }, - { be_const_key_weak(subscribe_response, -1), be_const_closure(Matter_IM_subscribe_response_closure) }, - { be_const_key_weak(_inner_process_read_request, 10), be_const_closure(Matter_IM__inner_process_read_request_closure) }, + { be_const_key_weak(subscribe_request, 23), be_const_closure(Matter_IM_subscribe_request_closure) }, + { be_const_key_weak(send_invoke_response, -1), be_const_closure(Matter_IM_send_invoke_response_closure) }, + { be_const_key_weak(process_status_response, -1), be_const_closure(Matter_IM_process_status_response_closure) }, { be_const_key_weak(process_read_request, -1), be_const_closure(Matter_IM_process_read_request_closure) }, { be_const_key_weak(subs, -1), be_const_var(1) }, - { be_const_key_weak(device, 2), be_const_var(0) }, + { be_const_key_weak(every_250ms, 25), be_const_closure(Matter_IM_every_250ms_closure) }, + { be_const_key_weak(process_incoming, -1), be_const_closure(Matter_IM_process_incoming_closure) }, + { be_const_key_weak(every_second, -1), be_const_closure(Matter_IM_every_second_closure) }, + { be_const_key_weak(process_invoke_request, -1), be_const_closure(Matter_IM_process_invoke_request_closure) }, + { be_const_key_weak(send_subscribe_response, -1), be_const_closure(Matter_IM_send_subscribe_response_closure) }, + { be_const_key_weak(process_incoming_ack, 4), be_const_closure(Matter_IM_process_incoming_ack_closure) }, + { be_const_key_weak(send_write_response, 13), be_const_closure(Matter_IM_send_write_response_closure) }, + { be_const_key_weak(send_enqueued, 18), be_const_closure(Matter_IM_send_enqueued_closure) }, + { be_const_key_weak(process_invoke_response, -1), be_const_closure(Matter_IM_process_invoke_response_closure) }, + { be_const_key_weak(find_sendqueue_by_exchangeid, 22), be_const_closure(Matter_IM_find_sendqueue_by_exchangeid_closure) }, + { be_const_key_weak(send_subscribe_update, 19), be_const_closure(Matter_IM_send_subscribe_update_closure) }, + { be_const_key_weak(send_report_data, -1), be_const_closure(Matter_IM_send_report_data_closure) }, + { be_const_key_weak(subscribe_response, 21), be_const_closure(Matter_IM_subscribe_response_closure) }, + { be_const_key_weak(process_write_response, -1), be_const_closure(Matter_IM_process_write_response_closure) }, + { be_const_key_weak(process_write_request, 17), be_const_closure(Matter_IM_process_write_request_closure) }, + { be_const_key_weak(init, -1), be_const_closure(Matter_IM_init_closure) }, + { be_const_key_weak(_inner_process_read_request, 12), be_const_closure(Matter_IM__inner_process_read_request_closure) }, + { be_const_key_weak(process_timed_request, 9), be_const_closure(Matter_IM_process_timed_request_closure) }, + { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(Matter_IM_remove_sendqueue_by_exchangeid_closure) }, })), be_str_weak(Matter_IM) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h index b7b9dedb1..18cb0891c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h @@ -148,41 +148,47 @@ void be_load_Matter_Path_class(bvm *vm) { extern const bclass be_class_Matter_IM_Message; /******************************************************************** -** Solidified function: status_ok_received +** Solidified function: status_error_received ********************************************************************/ -be_local_closure(Matter_IM_Message_status_ok_received, /* name */ +be_local_closure(Matter_IM_Message_status_error_received, /* name */ be_nested_proto( - 7, /* nstack */ + 2, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(resp), - /* K1 */ be_nested_str_weak(build_response), - /* K2 */ be_nested_str_weak(opcode), - /* K3 */ be_nested_str_weak(x_flag_r), - /* K4 */ be_nested_str_weak(ready), - }), - be_str_weak(status_ok_received), + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(status_error_received), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x78060007, // 0000 JMPF R1 #0009 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x88100100, // 0002 GETMBR R4 R0 K0 - 0x88100902, // 0003 GETMBR R4 R4 K2 - 0x88140100, // 0004 GETMBR R5 R0 K0 - 0x88140B03, // 0005 GETMBR R5 R5 K3 - 0x88180100, // 0006 GETMBR R6 R0 K0 - 0x7C080800, // 0007 CALL R2 4 - 0x90020002, // 0008 SETMBR R0 K0 R2 - 0x50080200, // 0009 LDBOOL R2 1 0 - 0x90020802, // 000A SETMBR R0 K4 R2 - 0x50080200, // 000B LDBOOL R2 1 0 - 0x80040400, // 000C RET 1 R2 + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: reached_timeout +********************************************************************/ +be_local_closure(Matter_IM_Message_reached_timeout, /* 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(reached_timeout), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 }) ) ); @@ -270,6 +276,94 @@ be_local_closure(Matter_IM_Message_send, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: ack_received +********************************************************************/ +be_local_closure(Matter_IM_Message_ack_received, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(expiration), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(millis), + /* K3 */ be_nested_str_weak(MSG_TIMEOUT), + }), + be_str_weak(ack_received), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xB80A0200, // 0000 GETNGBL R2 K1 + 0x8C080502, // 0001 GETMET R2 R2 K2 + 0x7C080200, // 0002 CALL R2 1 + 0x880C0103, // 0003 GETMBR R3 R0 K3 + 0x00080403, // 0004 ADD R2 R2 R3 + 0x90020002, // 0005 SETMBR R0 K0 R2 + 0x50080000, // 0006 LDBOOL R2 0 0 + 0x80040400, // 0007 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: status_ok_received +********************************************************************/ +be_local_closure(Matter_IM_Message_status_ok_received, /* 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(expiration), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(millis), + /* K3 */ be_nested_str_weak(MSG_TIMEOUT), + /* K4 */ be_nested_str_weak(resp), + /* K5 */ be_nested_str_weak(build_response), + /* K6 */ be_nested_str_weak(opcode), + /* K7 */ be_nested_str_weak(x_flag_r), + /* K8 */ be_nested_str_weak(ready), + }), + be_str_weak(status_ok_received), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0xB80A0200, // 0000 GETNGBL R2 K1 + 0x8C080502, // 0001 GETMET R2 R2 K2 + 0x7C080200, // 0002 CALL R2 1 + 0x880C0103, // 0003 GETMBR R3 R0 K3 + 0x00080403, // 0004 ADD R2 R2 R3 + 0x90020002, // 0005 SETMBR R0 K0 R2 + 0x78060007, // 0006 JMPF R1 #000F + 0x8C080305, // 0007 GETMET R2 R1 K5 + 0x88100104, // 0008 GETMBR R4 R0 K4 + 0x88100906, // 0009 GETMBR R4 R4 K6 + 0x88140104, // 000A GETMBR R5 R0 K4 + 0x88140B07, // 000B GETMBR R5 R5 K7 + 0x88180104, // 000C GETMBR R6 R0 K4 + 0x7C080800, // 000D CALL R2 4 + 0x90020802, // 000E SETMBR R0 K4 R2 + 0x50080200, // 000F LDBOOL R2 1 0 + 0x90021002, // 0010 SETMBR R0 K8 R2 + 0x50080200, // 0011 LDBOOL R2 1 0 + 0x80040400, // 0012 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: init ********************************************************************/ @@ -283,14 +377,18 @@ be_local_closure(Matter_IM_Message_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ + ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(resp), /* K1 */ be_nested_str_weak(build_response), /* K2 */ be_nested_str_weak(ready), + /* K3 */ be_nested_str_weak(expiration), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(millis), + /* K6 */ be_nested_str_weak(MSG_TIMEOUT), }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ + ( &(const binstruction[14]) { /* code */ 0x8C100301, // 0000 GETMET R4 R1 K1 0x5C180400, // 0001 MOVE R6 R2 0x5C1C0600, // 0002 MOVE R7 R3 @@ -298,56 +396,13 @@ be_local_closure(Matter_IM_Message_init, /* name */ 0x90020004, // 0004 SETMBR R0 K0 R4 0x50100200, // 0005 LDBOOL R4 1 0 0x90020404, // 0006 SETMBR R0 K2 R4 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: status_error_received -********************************************************************/ -be_local_closure(Matter_IM_Message_status_error_received, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(status_error_received), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: ack_received -********************************************************************/ -be_local_closure(Matter_IM_Message_ack_received, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(ack_received), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x50080000, // 0000 LDBOOL R2 0 0 - 0x80040400, // 0001 RET 1 R2 + 0xB8120800, // 0007 GETNGBL R4 K4 + 0x8C100905, // 0008 GETMET R4 R4 K5 + 0x7C100200, // 0009 CALL R4 1 + 0x88140106, // 000A GETMBR R5 R0 K6 + 0x00100805, // 000B ADD R4 R4 R5 + 0x90020604, // 000C SETMBR R0 K3 R4 + 0x80000000, // 000D RET 0 }) ) ); @@ -358,19 +413,22 @@ be_local_closure(Matter_IM_Message_ack_received, /* name */ ** Solidified class: Matter_IM_Message ********************************************************************/ be_local_class(Matter_IM_Message, - 3, + 4, NULL, - be_nested_map(9, + be_nested_map(12, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(data, -1), be_const_var(2) }, - { be_const_key_weak(get_exchangeid, -1), be_const_closure(Matter_IM_Message_get_exchangeid_closure) }, + { be_const_key_weak(expiration, 9), be_const_var(0) }, + { be_const_key_weak(data, -1), be_const_var(3) }, { be_const_key_weak(init, -1), be_const_closure(Matter_IM_Message_init_closure) }, - { be_const_key_weak(resp, -1), be_const_var(0) }, - { be_const_key_weak(send, 0), be_const_closure(Matter_IM_Message_send_closure) }, - { be_const_key_weak(ready, 2), be_const_var(1) }, - { be_const_key_weak(status_ok_received, 5), be_const_closure(Matter_IM_Message_status_ok_received_closure) }, - { be_const_key_weak(status_error_received, -1), be_const_closure(Matter_IM_Message_status_error_received_closure) }, + { be_const_key_weak(resp, 2), be_const_var(1) }, + { be_const_key_weak(status_error_received, 6), be_const_closure(Matter_IM_Message_status_error_received_closure) }, + { be_const_key_weak(reached_timeout, -1), be_const_closure(Matter_IM_Message_reached_timeout_closure) }, + { be_const_key_weak(get_exchangeid, -1), be_const_closure(Matter_IM_Message_get_exchangeid_closure) }, + { be_const_key_weak(send, -1), be_const_closure(Matter_IM_Message_send_closure) }, { be_const_key_weak(ack_received, -1), be_const_closure(Matter_IM_Message_ack_received_closure) }, + { be_const_key_weak(status_ok_received, 11), be_const_closure(Matter_IM_Message_status_ok_received_closure) }, + { be_const_key_weak(MSG_TIMEOUT, -1), be_const_int(10000) }, + { be_const_key_weak(ready, -1), be_const_var(2) }, })), be_str_weak(Matter_IM_Message) ); @@ -578,6 +636,45 @@ void be_load_Matter_IM_WriteResponse_class(bvm *vm) { extern const bclass be_class_Matter_IM_ReportData; +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(Matter_IM_ReportData_init, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(data), + /* K2 */ be_nested_str_weak(ready), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x541A0004, // 0005 LDINT R6 5 + 0x501C0200, // 0006 LDBOOL R7 1 0 + 0x7C0C0800, // 0007 CALL R3 4 + 0x90020202, // 0008 SETMBR R0 K1 R2 + 0x500C0200, // 0009 LDBOOL R3 1 0 + 0x90020403, // 000A SETMBR R0 K2 R3 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: send ********************************************************************/ @@ -591,7 +688,7 @@ be_local_closure(Matter_IM_ReportData_send, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ + ( &(const bvalue[28]) { /* constants */ /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(resp), /* K2 */ be_nested_str_weak(data), @@ -620,13 +717,10 @@ be_local_closure(Matter_IM_ReportData_send, /* name */ /* K25 */ be_nested_str_weak(remote_port), /* K26 */ be_nested_str_weak(message_counter), /* K27 */ be_nested_str_weak(MTR_X3A_X20to_be_sent_later_X20TLV), - /* K28 */ be_nested_str_weak(expiration), - /* K29 */ be_nested_str_weak(millis), - /* K30 */ be_nested_str_weak(MSG_TIMEOUT), }), be_str_weak(send), &be_const_str_solidified, - ( &(const binstruction[139]) { /* code */ + ( &(const binstruction[133]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x880C0101, // 0001 GETMBR R3 R0 K1 0x88100102, // 0002 GETMBR R4 R0 K2 @@ -744,7 +838,7 @@ be_local_closure(Matter_IM_ReportData_send, /* name */ 0x5C281000, // 0072 MOVE R10 R8 0x7C240200, // 0073 CALL R9 1 0x24241304, // 0074 GT R9 R9 K4 - 0x78260011, // 0075 JMPF R9 #0088 + 0x7826000B, // 0075 JMPF R9 #0082 0x90120A08, // 0076 SETMBR R4 K5 R8 0xB8261400, // 0077 GETNGBL R9 K10 0x8C24130B, // 0078 GETMET R9 R9 K11 @@ -754,67 +848,12 @@ be_local_closure(Matter_IM_ReportData_send, /* name */ 0x002E360B, // 007C ADD R11 K27 R11 0x58300011, // 007D LDCONST R12 K17 0x7C240600, // 007E CALL R9 3 - 0xB8261400, // 007F GETNGBL R9 K10 - 0x8C24131D, // 0080 GETMET R9 R9 K29 - 0x7C240200, // 0081 CALL R9 1 - 0x8828011E, // 0082 GETMBR R10 R0 K30 - 0x0024120A, // 0083 ADD R9 R9 R10 - 0x90023809, // 0084 SETMBR R0 K28 R9 - 0x50240000, // 0085 LDBOOL R9 0 0 - 0x80041200, // 0086 RET 1 R9 - 0x70020001, // 0087 JMP #008A - 0x50240200, // 0088 LDBOOL R9 1 0 - 0x80041200, // 0089 RET 1 R9 - 0x80000000, // 008A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Matter_IM_ReportData_init, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(data), - /* K2 */ be_nested_str_weak(ready), - /* K3 */ be_nested_str_weak(expiration), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(millis), - /* K6 */ be_nested_str_weak(MSG_TIMEOUT), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x541A0004, // 0005 LDINT R6 5 - 0x501C0200, // 0006 LDBOOL R7 1 0 - 0x7C0C0800, // 0007 CALL R3 4 - 0x90020202, // 0008 SETMBR R0 K1 R2 - 0x500C0200, // 0009 LDBOOL R3 1 0 - 0x90020403, // 000A SETMBR R0 K2 R3 - 0xB80E0800, // 000B GETNGBL R3 K4 - 0x8C0C0705, // 000C GETMET R3 R3 K5 - 0x7C0C0200, // 000D CALL R3 1 - 0x88100106, // 000E GETMBR R4 R0 K6 - 0x000C0604, // 000F ADD R3 R3 R4 - 0x90020603, // 0010 SETMBR R0 K3 R3 - 0x80000000, // 0011 RET 0 + 0x50240000, // 007F LDBOOL R9 0 0 + 0x80041200, // 0080 RET 1 R9 + 0x70020001, // 0081 JMP #0084 + 0x50240200, // 0082 LDBOOL R9 1 0 + 0x80041200, // 0083 RET 1 R9 + 0x80000000, // 0084 RET 0 }) ) ); @@ -826,15 +865,13 @@ be_local_closure(Matter_IM_ReportData_init, /* name */ ********************************************************************/ extern const bclass be_class_Matter_IM_Message; be_local_class(Matter_IM_ReportData, - 1, + 0, &be_class_Matter_IM_Message, - be_nested_map(5, + be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(expiration, 2), be_const_var(0) }, - { be_const_key_weak(send, -1), be_const_closure(Matter_IM_ReportData_send_closure) }, { be_const_key_weak(init, -1), be_const_closure(Matter_IM_ReportData_init_closure) }, - { be_const_key_weak(MAX_MESSAGE, 4), be_const_int(1200) }, - { be_const_key_weak(MSG_TIMEOUT, -1), be_const_int(10000) }, + { be_const_key_weak(send, -1), be_const_closure(Matter_IM_ReportData_send_closure) }, + { be_const_key_weak(MAX_MESSAGE, -1), be_const_int(1200) }, })), be_str_weak(Matter_IM_ReportData) ); @@ -848,6 +885,212 @@ void be_load_Matter_IM_ReportData_class(bvm *vm) { extern const bclass be_class_Matter_IM_ReportDataSubscribed; +/******************************************************************** +** Solidified function: ack_received +********************************************************************/ +be_local_closure(Matter_IM_ReportDataSubscribed_ack_received, /* 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[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(ack_received), + /* K1 */ be_nested_str_weak(report_data_phase), + /* K2 */ be_nested_str_weak(ready), + }), + be_str_weak(ack_received), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x740A0004, // 0007 JMPT R2 #000D + 0x50080200, // 0008 LDBOOL R2 1 0 + 0x90020402, // 0009 SETMBR R0 K2 R2 + 0x50080200, // 000A LDBOOL R2 1 0 + 0x80040400, // 000B RET 1 R2 + 0x70020001, // 000C JMP #000F + 0x50080000, // 000D LDBOOL R2 0 0 + 0x80040400, // 000E RET 1 R2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: status_ok_received +********************************************************************/ +be_local_closure(Matter_IM_ReportDataSubscribed_status_ok_received, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(report_data_phase), + /* K1 */ be_nested_str_weak(status_ok_received), + }), + be_str_weak(status_ok_received), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0007, // 0001 JMPF R2 #000A + 0x60080003, // 0002 GETGBL R2 G3 + 0x5C0C0000, // 0003 MOVE R3 R0 + 0x7C080200, // 0004 CALL R2 1 + 0x8C080501, // 0005 GETMET R2 R2 K1 + 0x5C100200, // 0006 MOVE R4 R1 + 0x7C080400, // 0007 CALL R2 2 + 0x80040400, // 0008 RET 1 R2 + 0x70020007, // 0009 JMP #0012 + 0x60080003, // 000A GETGBL R2 G3 + 0x5C0C0000, // 000B MOVE R3 R0 + 0x7C080200, // 000C CALL R2 1 + 0x8C080501, // 000D GETMET R2 R2 K1 + 0x4C100000, // 000E LDNIL R4 + 0x7C080400, // 000F CALL R2 2 + 0x50080000, // 0010 LDBOOL R2 0 0 + 0x80040400, // 0011 RET 1 R2 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: reached_timeout +********************************************************************/ +be_local_closure(Matter_IM_ReportDataSubscribed_reached_timeout, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(sub), + /* K1 */ be_nested_str_weak(remove_self), + }), + be_str_weak(reached_timeout), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(Matter_IM_ReportDataSubscribed_init, /* name */ + be_nested_proto( + 11, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(resp), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(Frame), + /* K3 */ be_nested_str_weak(initiate_response), + /* K4 */ be_nested_str_weak(data), + /* K5 */ be_nested_str_weak(ready), + /* K6 */ be_nested_str_weak(expiration), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(millis), + /* K9 */ be_nested_str_weak(MSG_TIMEOUT), + /* K10 */ be_nested_str_weak(sub), + /* K11 */ be_nested_str_weak(report_data_phase), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0xB8160200, // 0000 GETNGBL R5 K1 + 0x88140B02, // 0001 GETMBR R5 R5 K2 + 0x8C140B03, // 0002 GETMET R5 R5 K3 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x54260004, // 0005 LDINT R9 5 + 0x50280200, // 0006 LDBOOL R10 1 0 + 0x7C140A00, // 0007 CALL R5 5 + 0x90020005, // 0008 SETMBR R0 K0 R5 + 0x90020803, // 0009 SETMBR R0 K4 R3 + 0x50140200, // 000A LDBOOL R5 1 0 + 0x90020A05, // 000B SETMBR R0 K5 R5 + 0xB8160E00, // 000C GETNGBL R5 K7 + 0x8C140B08, // 000D GETMET R5 R5 K8 + 0x7C140200, // 000E CALL R5 1 + 0x88180109, // 000F GETMBR R6 R0 K9 + 0x00140A06, // 0010 ADD R5 R5 R6 + 0x90020C05, // 0011 SETMBR R0 K6 R5 + 0x90021404, // 0012 SETMBR R0 K10 R4 + 0x50140200, // 0013 LDBOOL R5 1 0 + 0x90021605, // 0014 SETMBR R0 K11 R5 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: status_error_received +********************************************************************/ +be_local_closure(Matter_IM_ReportDataSubscribed_status_error_received, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(sub), + /* K1 */ be_nested_str_weak(remove_self), + }), + be_str_weak(status_error_received), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: send ********************************************************************/ @@ -941,172 +1184,6 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: status_error_received -********************************************************************/ -be_local_closure(Matter_IM_ReportDataSubscribed_status_error_received, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(sub), - /* K1 */ be_nested_str_weak(remove_self), - }), - be_str_weak(status_error_received), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: ack_received -********************************************************************/ -be_local_closure(Matter_IM_ReportDataSubscribed_ack_received, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(report_data_phase), - }), - be_str_weak(ack_received), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0002, // 0001 JMPT R2 #0005 - 0x50080200, // 0002 LDBOOL R2 1 0 - 0x80040400, // 0003 RET 1 R2 - 0x70020001, // 0004 JMP #0007 - 0x50080000, // 0005 LDBOOL R2 0 0 - 0x80040400, // 0006 RET 1 R2 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: status_ok_received -********************************************************************/ -be_local_closure(Matter_IM_ReportDataSubscribed_status_ok_received, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 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(report_data_phase), - /* K1 */ be_nested_str_weak(status_ok_received), - }), - be_str_weak(status_ok_received), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0007, // 0001 JMPF R2 #000A - 0x60080003, // 0002 GETGBL R2 G3 - 0x5C0C0000, // 0003 MOVE R3 R0 - 0x7C080200, // 0004 CALL R2 1 - 0x8C080501, // 0005 GETMET R2 R2 K1 - 0x5C100200, // 0006 MOVE R4 R1 - 0x7C080400, // 0007 CALL R2 2 - 0x80040400, // 0008 RET 1 R2 - 0x70020007, // 0009 JMP #0012 - 0x60080003, // 000A GETGBL R2 G3 - 0x5C0C0000, // 000B MOVE R3 R0 - 0x7C080200, // 000C CALL R2 1 - 0x8C080501, // 000D GETMET R2 R2 K1 - 0x4C100000, // 000E LDNIL R4 - 0x7C080400, // 000F CALL R2 2 - 0x50080000, // 0010 LDBOOL R2 0 0 - 0x80040400, // 0011 RET 1 R2 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Matter_IM_ReportDataSubscribed_init, /* name */ - be_nested_proto( - 11, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(resp), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(Frame), - /* K3 */ be_nested_str_weak(initiate_response), - /* K4 */ be_nested_str_weak(data), - /* K5 */ be_nested_str_weak(ready), - /* K6 */ be_nested_str_weak(expiration), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(millis), - /* K9 */ be_nested_str_weak(MSG_TIMEOUT), - /* K10 */ be_nested_str_weak(sub), - /* K11 */ be_nested_str_weak(report_data_phase), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0xB8160200, // 0000 GETNGBL R5 K1 - 0x88140B02, // 0001 GETMBR R5 R5 K2 - 0x8C140B03, // 0002 GETMET R5 R5 K3 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x54260004, // 0005 LDINT R9 5 - 0x50280200, // 0006 LDBOOL R10 1 0 - 0x7C140A00, // 0007 CALL R5 5 - 0x90020005, // 0008 SETMBR R0 K0 R5 - 0x90020803, // 0009 SETMBR R0 K4 R3 - 0x50140200, // 000A LDBOOL R5 1 0 - 0x90020A05, // 000B SETMBR R0 K5 R5 - 0xB8160E00, // 000C GETNGBL R5 K7 - 0x8C140B08, // 000D GETMET R5 R5 K8 - 0x7C140200, // 000E CALL R5 1 - 0x88180109, // 000F GETMBR R6 R0 K9 - 0x00140A06, // 0010 ADD R5 R5 R6 - 0x90020C05, // 0011 SETMBR R0 K6 R5 - 0x90021404, // 0012 SETMBR R0 K10 R4 - 0x50140200, // 0013 LDBOOL R5 1 0 - 0x90021605, // 0014 SETMBR R0 K11 R5 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_IM_ReportDataSubscribed ********************************************************************/ @@ -1114,15 +1191,16 @@ extern const bclass be_class_Matter_IM_ReportData; be_local_class(Matter_IM_ReportDataSubscribed, 2, &be_class_Matter_IM_ReportData, - be_nested_map(7, + be_nested_map(8, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(init, 1), be_const_closure(Matter_IM_ReportDataSubscribed_init_closure) }, + { be_const_key_weak(ack_received, 1), be_const_closure(Matter_IM_ReportDataSubscribed_ack_received_closure) }, { be_const_key_weak(status_ok_received, -1), be_const_closure(Matter_IM_ReportDataSubscribed_status_ok_received_closure) }, - { be_const_key_weak(send, 4), be_const_closure(Matter_IM_ReportDataSubscribed_send_closure) }, - { be_const_key_weak(ack_received, -1), be_const_closure(Matter_IM_ReportDataSubscribed_ack_received_closure) }, - { be_const_key_weak(sub, 6), be_const_var(0) }, - { be_const_key_weak(status_error_received, 0), be_const_closure(Matter_IM_ReportDataSubscribed_status_error_received_closure) }, - { be_const_key_weak(report_data_phase, -1), be_const_var(1) }, + { be_const_key_weak(status_error_received, -1), be_const_closure(Matter_IM_ReportDataSubscribed_status_error_received_closure) }, + { be_const_key_weak(init, -1), be_const_closure(Matter_IM_ReportDataSubscribed_init_closure) }, + { be_const_key_weak(report_data_phase, 2), be_const_var(1) }, + { be_const_key_weak(reached_timeout, 6), be_const_closure(Matter_IM_ReportDataSubscribed_reached_timeout_closure) }, + { be_const_key_weak(sub, -1), be_const_var(0) }, + { be_const_key_weak(send, -1), be_const_closure(Matter_IM_ReportDataSubscribed_send_closure) }, })), be_str_weak(Matter_IM_ReportDataSubscribed) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h index 7feacf75b..fd15e66a9 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h @@ -213,7 +213,7 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ + ( &(const bvalue[22]) { /* constants */ /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(TLV), @@ -222,23 +222,24 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */ /* K5 */ be_const_int(0), /* K6 */ be_nested_str_weak(Matter_TLV_array), /* K7 */ be_nested_str_weak(TYPES), - /* K8 */ be_nested_str_weak(add_struct), - /* K9 */ be_nested_str_weak(add_TLV), - /* K10 */ be_nested_str_weak(U2), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(stop_iteration), - /* K13 */ be_nested_str_weak(get_cluster_list), - /* K14 */ be_nested_str_weak(U4), - /* K15 */ be_const_int(2), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(create_TLV), - /* K18 */ be_nested_str_weak(U1), - /* K19 */ be_nested_str_weak(BOOL), - /* K20 */ be_nested_str_weak(onoff), + /* K8 */ be_nested_str_weak(keys), + /* K9 */ be_nested_str_weak(add_struct), + /* K10 */ be_nested_str_weak(add_TLV), + /* K11 */ be_nested_str_weak(U2), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(stop_iteration), + /* K14 */ be_nested_str_weak(get_cluster_list), + /* K15 */ be_nested_str_weak(U4), + /* K16 */ be_const_int(2), + /* K17 */ be_const_int(3), + /* K18 */ be_nested_str_weak(create_TLV), + /* K19 */ be_nested_str_weak(U1), + /* K20 */ be_nested_str_weak(BOOL), + /* K21 */ be_nested_str_weak(onoff), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[113]) { /* code */ + ( &(const binstruction[208]) { /* code */ 0xA40E0000, // 0000 IMPORT R3 K0 0xB8120200, // 0001 GETNGBL R4 K1 0x88100902, // 0002 GETMBR R4 R4 K2 @@ -246,112 +247,207 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */ 0x88180504, // 0004 GETMBR R6 R2 K4 0x541E001C, // 0005 LDINT R7 29 0x1C1C0A07, // 0006 EQ R7 R5 R7 - 0x781E0042, // 0007 JMPF R7 #004B + 0x781E0057, // 0007 JMPF R7 #0060 0x1C1C0D05, // 0008 EQ R7 R6 K5 - 0x781E0019, // 0009 JMPF R7 #0024 + 0x781E001C, // 0009 JMPF R7 #0027 0x8C1C0906, // 000A GETMET R7 R4 K6 0x7C1C0200, // 000B CALL R7 1 0x60200010, // 000C GETGBL R8 G16 0x88240107, // 000D GETMBR R9 R0 K7 - 0x7C200200, // 000E CALL R8 1 - 0xA802000E, // 000F EXBLK 0 #001F - 0x5C241000, // 0010 MOVE R9 R8 - 0x7C240000, // 0011 CALL R9 0 - 0x8C280F08, // 0012 GETMET R10 R7 K8 - 0x7C280200, // 0013 CALL R10 1 - 0x8C2C1509, // 0014 GETMET R11 R10 K9 - 0x58340005, // 0015 LDCONST R13 K5 - 0x8838090A, // 0016 GETMBR R14 R4 K10 - 0x5C3C1200, // 0017 MOVE R15 R9 - 0x7C2C0800, // 0018 CALL R11 4 - 0x8C2C1509, // 0019 GETMET R11 R10 K9 - 0x5834000B, // 001A LDCONST R13 K11 - 0x8838090A, // 001B GETMBR R14 R4 K10 - 0x583C000B, // 001C LDCONST R15 K11 - 0x7C2C0800, // 001D CALL R11 4 - 0x7001FFF0, // 001E JMP #0010 - 0x5820000C, // 001F LDCONST R8 K12 - 0xAC200200, // 0020 CATCH R8 1 0 - 0xB0080000, // 0021 RAISE 2 R0 R0 - 0x80040E00, // 0022 RET 1 R7 - 0x70020025, // 0023 JMP #004A - 0x1C1C0D0B, // 0024 EQ R7 R6 K11 - 0x781E0013, // 0025 JMPF R7 #003A - 0x8C1C0906, // 0026 GETMET R7 R4 K6 - 0x7C1C0200, // 0027 CALL R7 1 - 0x60200010, // 0028 GETGBL R8 G16 - 0x8C24010D, // 0029 GETMET R9 R0 K13 - 0x7C240200, // 002A CALL R9 1 - 0x7C200200, // 002B CALL R8 1 - 0xA8020007, // 002C EXBLK 0 #0035 - 0x5C241000, // 002D MOVE R9 R8 - 0x7C240000, // 002E CALL R9 0 - 0x8C280F09, // 002F GETMET R10 R7 K9 - 0x4C300000, // 0030 LDNIL R12 - 0x8834090E, // 0031 GETMBR R13 R4 K14 - 0x5C381200, // 0032 MOVE R14 R9 - 0x7C280800, // 0033 CALL R10 4 - 0x7001FFF7, // 0034 JMP #002D - 0x5820000C, // 0035 LDCONST R8 K12 - 0xAC200200, // 0036 CATCH R8 1 0 - 0xB0080000, // 0037 RAISE 2 R0 R0 - 0x80040E00, // 0038 RET 1 R7 - 0x7002000F, // 0039 JMP #004A - 0x1C1C0D0F, // 003A EQ R7 R6 K15 - 0x781E0008, // 003B JMPF R7 #0045 - 0x8C1C0906, // 003C GETMET R7 R4 K6 - 0x7C1C0200, // 003D CALL R7 1 - 0x8C200F09, // 003E GETMET R8 R7 K9 - 0x4C280000, // 003F LDNIL R10 - 0x882C090A, // 0040 GETMBR R11 R4 K10 - 0x54320005, // 0041 LDINT R12 6 - 0x7C200800, // 0042 CALL R8 4 - 0x80040E00, // 0043 RET 1 R7 - 0x70020004, // 0044 JMP #004A - 0x1C1C0D10, // 0045 EQ R7 R6 K16 - 0x781E0002, // 0046 JMPF R7 #004A - 0x8C1C0906, // 0047 GETMET R7 R4 K6 - 0x7C1C0200, // 0048 CALL R7 1 - 0x80040E00, // 0049 RET 1 R7 - 0x70020024, // 004A JMP #0070 - 0x1C1C0B10, // 004B EQ R7 R5 K16 - 0x781E000F, // 004C JMPF R7 #005D - 0x1C1C0D05, // 004D EQ R7 R6 K5 - 0x781E0005, // 004E JMPF R7 #0055 - 0x8C1C0911, // 004F GETMET R7 R4 K17 - 0x8824090A, // 0050 GETMBR R9 R4 K10 - 0x58280005, // 0051 LDCONST R10 K5 - 0x7C1C0600, // 0052 CALL R7 3 - 0x80040E00, // 0053 RET 1 R7 - 0x70020006, // 0054 JMP #005C - 0x1C1C0D0B, // 0055 EQ R7 R6 K11 - 0x781E0004, // 0056 JMPF R7 #005C - 0x8C1C0911, // 0057 GETMET R7 R4 K17 - 0x88240912, // 0058 GETMBR R9 R4 K18 - 0x58280005, // 0059 LDCONST R10 K5 - 0x7C1C0600, // 005A CALL R7 3 - 0x80040E00, // 005B RET 1 R7 - 0x70020012, // 005C JMP #0070 - 0x541E0005, // 005D LDINT R7 6 - 0x1C1C0A07, // 005E EQ R7 R5 R7 - 0x781E000F, // 005F JMPF R7 #0070 - 0x1C1C0D05, // 0060 EQ R7 R6 K5 - 0x781E0005, // 0061 JMPF R7 #0068 - 0x8C1C0911, // 0062 GETMET R7 R4 K17 - 0x88240913, // 0063 GETMBR R9 R4 K19 - 0x88280114, // 0064 GETMBR R10 R0 K20 - 0x7C1C0600, // 0065 CALL R7 3 - 0x80040E00, // 0066 RET 1 R7 - 0x70020007, // 0067 JMP #0070 - 0x541EFFFB, // 0068 LDINT R7 65532 - 0x1C1C0C07, // 0069 EQ R7 R6 R7 - 0x781E0004, // 006A JMPF R7 #0070 - 0x8C1C0911, // 006B GETMET R7 R4 K17 - 0x8824090E, // 006C GETMBR R9 R4 K14 - 0x58280005, // 006D LDCONST R10 K5 - 0x7C1C0600, // 006E CALL R7 3 - 0x80040E00, // 006F RET 1 R7 - 0x80000000, // 0070 RET 0 + 0x8C241308, // 000E GETMET R9 R9 K8 + 0x7C240200, // 000F CALL R9 1 + 0x7C200200, // 0010 CALL R8 1 + 0xA802000F, // 0011 EXBLK 0 #0022 + 0x5C241000, // 0012 MOVE R9 R8 + 0x7C240000, // 0013 CALL R9 0 + 0x8C280F09, // 0014 GETMET R10 R7 K9 + 0x7C280200, // 0015 CALL R10 1 + 0x8C2C150A, // 0016 GETMET R11 R10 K10 + 0x58340005, // 0017 LDCONST R13 K5 + 0x8838090B, // 0018 GETMBR R14 R4 K11 + 0x5C3C1200, // 0019 MOVE R15 R9 + 0x7C2C0800, // 001A CALL R11 4 + 0x8C2C150A, // 001B GETMET R11 R10 K10 + 0x5834000C, // 001C LDCONST R13 K12 + 0x8838090B, // 001D GETMBR R14 R4 K11 + 0x883C0107, // 001E GETMBR R15 R0 K7 + 0x943C1E09, // 001F GETIDX R15 R15 R9 + 0x7C2C0800, // 0020 CALL R11 4 + 0x7001FFEF, // 0021 JMP #0012 + 0x5820000D, // 0022 LDCONST R8 K13 + 0xAC200200, // 0023 CATCH R8 1 0 + 0xB0080000, // 0024 RAISE 2 R0 R0 + 0x80040E00, // 0025 RET 1 R7 + 0x70020037, // 0026 JMP #005F + 0x1C1C0D0C, // 0027 EQ R7 R6 K12 + 0x781E0013, // 0028 JMPF R7 #003D + 0x8C1C0906, // 0029 GETMET R7 R4 K6 + 0x7C1C0200, // 002A CALL R7 1 + 0x60200010, // 002B GETGBL R8 G16 + 0x8C24010E, // 002C GETMET R9 R0 K14 + 0x7C240200, // 002D CALL R9 1 + 0x7C200200, // 002E CALL R8 1 + 0xA8020007, // 002F EXBLK 0 #0038 + 0x5C241000, // 0030 MOVE R9 R8 + 0x7C240000, // 0031 CALL R9 0 + 0x8C280F0A, // 0032 GETMET R10 R7 K10 + 0x4C300000, // 0033 LDNIL R12 + 0x8834090F, // 0034 GETMBR R13 R4 K15 + 0x5C381200, // 0035 MOVE R14 R9 + 0x7C280800, // 0036 CALL R10 4 + 0x7001FFF7, // 0037 JMP #0030 + 0x5820000D, // 0038 LDCONST R8 K13 + 0xAC200200, // 0039 CATCH R8 1 0 + 0xB0080000, // 003A RAISE 2 R0 R0 + 0x80040E00, // 003B RET 1 R7 + 0x70020021, // 003C JMP #005F + 0x1C1C0D10, // 003D EQ R7 R6 K16 + 0x781E0008, // 003E JMPF R7 #0048 + 0x8C1C0906, // 003F GETMET R7 R4 K6 + 0x7C1C0200, // 0040 CALL R7 1 + 0x8C200F0A, // 0041 GETMET R8 R7 K10 + 0x4C280000, // 0042 LDNIL R10 + 0x882C090B, // 0043 GETMBR R11 R4 K11 + 0x54320005, // 0044 LDINT R12 6 + 0x7C200800, // 0045 CALL R8 4 + 0x80040E00, // 0046 RET 1 R7 + 0x70020016, // 0047 JMP #005F + 0x1C1C0D11, // 0048 EQ R7 R6 K17 + 0x781E0003, // 0049 JMPF R7 #004E + 0x8C1C0906, // 004A GETMET R7 R4 K6 + 0x7C1C0200, // 004B CALL R7 1 + 0x80040E00, // 004C RET 1 R7 + 0x70020010, // 004D JMP #005F + 0x541EFFFB, // 004E LDINT R7 65532 + 0x1C1C0C07, // 004F EQ R7 R6 R7 + 0x781E0005, // 0050 JMPF R7 #0057 + 0x8C1C0912, // 0051 GETMET R7 R4 K18 + 0x8824090F, // 0052 GETMBR R9 R4 K15 + 0x58280005, // 0053 LDCONST R10 K5 + 0x7C1C0600, // 0054 CALL R7 3 + 0x80040E00, // 0055 RET 1 R7 + 0x70020007, // 0056 JMP #005F + 0x541EFFFC, // 0057 LDINT R7 65533 + 0x1C1C0C07, // 0058 EQ R7 R6 R7 + 0x781E0004, // 0059 JMPF R7 #005F + 0x8C1C0912, // 005A GETMET R7 R4 K18 + 0x8824090F, // 005B GETMBR R9 R4 K15 + 0x5828000C, // 005C LDCONST R10 K12 + 0x7C1C0600, // 005D CALL R7 3 + 0x80040E00, // 005E RET 1 R7 + 0x7002006E, // 005F JMP #00CF + 0x1C1C0B11, // 0060 EQ R7 R5 K17 + 0x781E0021, // 0061 JMPF R7 #0084 + 0x1C1C0D05, // 0062 EQ R7 R6 K5 + 0x781E0005, // 0063 JMPF R7 #006A + 0x8C1C0912, // 0064 GETMET R7 R4 K18 + 0x8824090B, // 0065 GETMBR R9 R4 K11 + 0x58280005, // 0066 LDCONST R10 K5 + 0x7C1C0600, // 0067 CALL R7 3 + 0x80040E00, // 0068 RET 1 R7 + 0x70020018, // 0069 JMP #0083 + 0x1C1C0D0C, // 006A EQ R7 R6 K12 + 0x781E0005, // 006B JMPF R7 #0072 + 0x8C1C0912, // 006C GETMET R7 R4 K18 + 0x88240913, // 006D GETMBR R9 R4 K19 + 0x58280005, // 006E LDCONST R10 K5 + 0x7C1C0600, // 006F CALL R7 3 + 0x80040E00, // 0070 RET 1 R7 + 0x70020010, // 0071 JMP #0083 + 0x541EFFFB, // 0072 LDINT R7 65532 + 0x1C1C0C07, // 0073 EQ R7 R6 R7 + 0x781E0005, // 0074 JMPF R7 #007B + 0x8C1C0912, // 0075 GETMET R7 R4 K18 + 0x8824090F, // 0076 GETMBR R9 R4 K15 + 0x58280005, // 0077 LDCONST R10 K5 + 0x7C1C0600, // 0078 CALL R7 3 + 0x80040E00, // 0079 RET 1 R7 + 0x70020007, // 007A JMP #0083 + 0x541EFFFC, // 007B LDINT R7 65533 + 0x1C1C0C07, // 007C EQ R7 R6 R7 + 0x781E0004, // 007D JMPF R7 #0083 + 0x8C1C0912, // 007E GETMET R7 R4 K18 + 0x8824090F, // 007F GETMBR R9 R4 K15 + 0x542A0003, // 0080 LDINT R10 4 + 0x7C1C0600, // 0081 CALL R7 3 + 0x80040E00, // 0082 RET 1 R7 + 0x7002004A, // 0083 JMP #00CF + 0x541E0003, // 0084 LDINT R7 4 + 0x1C1C0A07, // 0085 EQ R7 R5 R7 + 0x781E0016, // 0086 JMPF R7 #009E + 0x1C1C0D05, // 0087 EQ R7 R6 K5 + 0x781E0002, // 0088 JMPF R7 #008C + 0x4C1C0000, // 0089 LDNIL R7 + 0x80040E00, // 008A RET 1 R7 + 0x70020010, // 008B JMP #009D + 0x541EFFFB, // 008C LDINT R7 65532 + 0x1C1C0C07, // 008D EQ R7 R6 R7 + 0x781E0005, // 008E JMPF R7 #0095 + 0x8C1C0912, // 008F GETMET R7 R4 K18 + 0x8824090F, // 0090 GETMBR R9 R4 K15 + 0x58280005, // 0091 LDCONST R10 K5 + 0x7C1C0600, // 0092 CALL R7 3 + 0x80040E00, // 0093 RET 1 R7 + 0x70020007, // 0094 JMP #009D + 0x541EFFFC, // 0095 LDINT R7 65533 + 0x1C1C0C07, // 0096 EQ R7 R6 R7 + 0x781E0004, // 0097 JMPF R7 #009D + 0x8C1C0912, // 0098 GETMET R7 R4 K18 + 0x8824090F, // 0099 GETMBR R9 R4 K15 + 0x542A0003, // 009A LDINT R10 4 + 0x7C1C0600, // 009B CALL R7 3 + 0x80040E00, // 009C RET 1 R7 + 0x70020030, // 009D JMP #00CF + 0x541E0004, // 009E LDINT R7 5 + 0x1C1C0A07, // 009F EQ R7 R5 R7 + 0x781E0011, // 00A0 JMPF R7 #00B3 + 0x541EFFFB, // 00A1 LDINT R7 65532 + 0x1C1C0C07, // 00A2 EQ R7 R6 R7 + 0x781E0005, // 00A3 JMPF R7 #00AA + 0x8C1C0912, // 00A4 GETMET R7 R4 K18 + 0x8824090F, // 00A5 GETMBR R9 R4 K15 + 0x58280005, // 00A6 LDCONST R10 K5 + 0x7C1C0600, // 00A7 CALL R7 3 + 0x80040E00, // 00A8 RET 1 R7 + 0x70020007, // 00A9 JMP #00B2 + 0x541EFFFC, // 00AA LDINT R7 65533 + 0x1C1C0C07, // 00AB EQ R7 R6 R7 + 0x781E0004, // 00AC JMPF R7 #00B2 + 0x8C1C0912, // 00AD GETMET R7 R4 K18 + 0x8824090F, // 00AE GETMBR R9 R4 K15 + 0x542A0003, // 00AF LDINT R10 4 + 0x7C1C0600, // 00B0 CALL R7 3 + 0x80040E00, // 00B1 RET 1 R7 + 0x7002001B, // 00B2 JMP #00CF + 0x541E0005, // 00B3 LDINT R7 6 + 0x1C1C0A07, // 00B4 EQ R7 R5 R7 + 0x781E0018, // 00B5 JMPF R7 #00CF + 0x1C1C0D05, // 00B6 EQ R7 R6 K5 + 0x781E0005, // 00B7 JMPF R7 #00BE + 0x8C1C0912, // 00B8 GETMET R7 R4 K18 + 0x88240914, // 00B9 GETMBR R9 R4 K20 + 0x88280115, // 00BA GETMBR R10 R0 K21 + 0x7C1C0600, // 00BB CALL R7 3 + 0x80040E00, // 00BC RET 1 R7 + 0x70020010, // 00BD JMP #00CF + 0x541EFFFB, // 00BE LDINT R7 65532 + 0x1C1C0C07, // 00BF EQ R7 R6 R7 + 0x781E0005, // 00C0 JMPF R7 #00C7 + 0x8C1C0912, // 00C1 GETMET R7 R4 K18 + 0x8824090F, // 00C2 GETMBR R9 R4 K15 + 0x58280005, // 00C3 LDCONST R10 K5 + 0x7C1C0600, // 00C4 CALL R7 3 + 0x80040E00, // 00C5 RET 1 R7 + 0x70020007, // 00C6 JMP #00CF + 0x541EFFFC, // 00C7 LDINT R7 65533 + 0x1C1C0C07, // 00C8 EQ R7 R6 R7 + 0x781E0004, // 00C9 JMPF R7 #00CF + 0x8C1C0912, // 00CA GETMET R7 R4 K18 + 0x8824090F, // 00CB GETMBR R9 R4 K15 + 0x542A0003, // 00CC LDINT R10 4 + 0x7C1C0600, // 00CD CALL R7 3 + 0x80040E00, // 00CE RET 1 R7 + 0x80000000, // 00CF RET 0 }) ) ); @@ -369,10 +465,10 @@ be_local_class(Matter_Plugin_OnOff, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(read_attribute, 6), be_const_closure(Matter_Plugin_OnOff_read_attribute_closure) }, { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_OnOff_init_closure) }, - { be_const_key_weak(TYPES, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(1, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(256), + { be_const_key_weak(TYPES, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(266, -1), be_const_int(2) }, })) ) } )) }, { be_const_key_weak(invoke_request, 1), be_const_closure(Matter_Plugin_OnOff_invoke_request_closure) }, { be_const_key_weak(onoff, -1), be_const_var(0) }, @@ -386,7 +482,7 @@ be_local_class(Matter_Plugin_OnOff, be_const_map( * be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(6, + be_const_list( * be_nested_list(8, ( (struct bvalue*) &(const bvalue[]) { be_const_int(0), be_const_int(1), @@ -394,31 +490,40 @@ be_local_class(Matter_Plugin_OnOff, be_const_int(3), be_const_int(4), be_const_int(5), + be_const_int(65532), + be_const_int(65533), })) ) } )) }, { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(2, + be_const_list( * be_nested_list(3, ( (struct bvalue*) &(const bvalue[]) { be_const_int(0), be_const_int(65532), + be_const_int(65533), })) ) } )) }, { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(4, + be_const_list( * be_nested_list(6, ( (struct bvalue*) &(const bvalue[]) { be_const_int(0), be_const_int(1), be_const_int(2), be_const_int(3), + be_const_int(65532), + be_const_int(65533), })) ) } )) }, { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(2, + be_const_list( * be_nested_list(4, ( (struct bvalue*) &(const bvalue[]) { be_const_int(0), be_const_int(1), + be_const_int(65532), + be_const_int(65533), })) ) } )) }, { be_const_key_int(4, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(1, + be_const_list( * be_nested_list(3, ( (struct bvalue*) &(const bvalue[]) { be_const_int(0), + be_const_int(65532), + be_const_int(65533), })) ) } )) }, })) ) } )) }, })), 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 57afc789f..0447a8dea 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 @@ -19,7 +19,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[81]) { /* constants */ + ( &(const bvalue[82]) { /* constants */ /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(TLV), @@ -97,14 +97,15 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ /* K74 */ be_nested_str_weak(Version), /* K75 */ be_nested_str_weak(locale), /* K76 */ be_nested_str_weak(TYPES), - /* K77 */ be_nested_str_weak(get_cluster_list), - /* K78 */ be_nested_str_weak(get_active_endpoints), - /* K79 */ be_nested_str_weak(status), - /* K80 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K77 */ be_nested_str_weak(keys), + /* K78 */ be_nested_str_weak(get_cluster_list), + /* K79 */ be_nested_str_weak(get_active_endpoints), + /* K80 */ be_nested_str_weak(status), + /* K81 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[808]) { /* code */ + ( &(const binstruction[811]) { /* code */ 0xA40E0000, // 0000 IMPORT R3 K0 0xB8120200, // 0001 GETNGBL R4 K1 0x88100902, // 0002 GETMBR R4 R4 K2 @@ -161,11 +162,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 - 0x700202ED, // 0038 JMP #0327 + 0x700202F0, // 0038 JMP #032A 0x541E0031, // 0039 LDINT R7 50 0x1C1C0A07, // 003A EQ R7 R5 R7 0x781E0000, // 003B JMPF R7 #003D - 0x700202E9, // 003C JMP #0327 + 0x700202EC, // 003C JMP #032A 0x541E0032, // 003D LDINT R7 51 0x1C1C0A07, // 003E EQ R7 R5 R7 0x781E00DA, // 003F JMPF R7 #011B @@ -387,11 +388,11 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x50280000, // 0117 LDBOOL R10 0 0 0x7C1C0600, // 0118 CALL R7 3 0x80040E00, // 0119 RET 1 R7 - 0x7002020B, // 011A JMP #0327 + 0x7002020E, // 011A JMP #032A 0x541E0033, // 011B LDINT R7 52 0x1C1C0A07, // 011C EQ R7 R5 R7 0x781E0000, // 011D JMPF R7 #011F - 0x70020207, // 011E JMP #0327 + 0x7002020A, // 011E JMP #032A 0x541E0037, // 011F LDINT R7 56 0x1C1C0A07, // 0120 EQ R7 R5 R7 0x781E002C, // 0121 JMPF R7 #014F @@ -439,7 +440,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x5C2C0E00, // 014B MOVE R11 R7 0x7C200600, // 014C CALL R8 3 0x80041000, // 014D RET 1 R8 - 0x700201D7, // 014E JMP #0327 + 0x700201DA, // 014E JMP #032A 0x541E003D, // 014F LDINT R7 62 0x1C1C0A07, // 0150 EQ R7 R5 R7 0x781E0082, // 0151 JMPF R7 #01D5 @@ -567,17 +568,17 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x4C240000, // 01CB LDNIL R9 0x1C241009, // 01CC EQ R9 R8 R9 0x78260000, // 01CD JMPF R9 #01CF - 0x58200005, // 01CE LDCONST R8 K5 + 0x5421FFFE, // 01CE LDINT R8 -1 0x8C240906, // 01CF GETMET R9 R4 K6 0x882C090E, // 01D0 GETMBR R11 R4 K14 - 0x5C301000, // 01D1 MOVE R12 R8 + 0x00301109, // 01D1 ADD R12 R8 K9 0x7C240600, // 01D2 CALL R9 3 0x80041200, // 01D3 RET 1 R9 - 0x70020151, // 01D4 JMP #0327 + 0x70020154, // 01D4 JMP #032A 0x541E003B, // 01D5 LDINT R7 60 0x1C1C0A07, // 01D6 EQ R7 R5 R7 0x781E0000, // 01D7 JMPF R7 #01D9 - 0x7002014D, // 01D8 JMP #0327 + 0x70020150, // 01D8 JMP #032A 0x541E0027, // 01D9 LDINT R7 40 0x1C1C0A07, // 01DA EQ R7 R5 R7 0x781E0080, // 01DB JMPF R7 #025D @@ -677,7 +678,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x781E0005, // 0239 JMPF R7 #0240 0x8C1C0906, // 023A GETMET R7 R4 K6 0x8824090C, // 023B GETMBR R9 R4 K12 - 0x58280005, // 023C LDCONST R10 K5 + 0x58280009, // 023C LDCONST R10 K9 0x7C1C0600, // 023D CALL R7 3 0x80040E00, // 023E RET 1 R7 0x7002001B, // 023F JMP #025C @@ -709,11 +710,11 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x7C280600, // 0259 CALL R10 3 0x7C1C0600, // 025A CALL R7 3 0x80040E00, // 025B RET 1 R7 - 0x700200C9, // 025C JMP #0327 + 0x700200CC, // 025C JMP #032A 0x541E003E, // 025D LDINT R7 63 0x1C1C0A07, // 025E EQ R7 R5 R7 0x781E0000, // 025F JMPF R7 #0261 - 0x700200C5, // 0260 JMP #0327 + 0x700200C8, // 0260 JMP #032A 0x541E0029, // 0261 LDINT R7 42 0x1C1C0A07, // 0262 EQ R7 R5 R7 0x781E001D, // 0263 JMPF R7 #0282 @@ -746,7 +747,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x4C280000, // 027E LDNIL R10 0x7C1C0600, // 027F CALL R7 3 0x80040E00, // 0280 RET 1 R7 - 0x700200A4, // 0281 JMP #0327 + 0x700200A7, // 0281 JMP #032A 0x541E002A, // 0282 LDINT R7 43 0x1C1C0A07, // 0283 EQ R7 R5 R7 0x781E0016, // 0284 JMPF R7 #029C @@ -772,7 +773,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x7C300200, // 0298 CALL R12 1 0x7C200800, // 0299 CALL R8 4 0x80040E00, // 029A RET 1 R7 - 0x7002008A, // 029B JMP #0327 + 0x7002008D, // 029B JMP #032A 0x541E002B, // 029C LDINT R7 44 0x1C1C0A07, // 029D EQ R7 R5 R7 0x781E001C, // 029E JMPF R7 #02BC @@ -804,7 +805,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x7C2C0600, // 02B8 CALL R11 3 0x7C200600, // 02B9 CALL R8 3 0x80040E00, // 02BA RET 1 R7 - 0x7002006A, // 02BB JMP #0327 + 0x7002006D, // 02BB JMP #032A 0x541E0030, // 02BC LDINT R7 49 0x1C1C0A07, // 02BD EQ R7 R5 R7 0x781E0010, // 02BE JMPF R7 #02D0 @@ -824,95 +825,98 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0x58280005, // 02CC LDCONST R10 K5 0x7C1C0600, // 02CD CALL R7 3 0x80040E00, // 02CE RET 1 R7 - 0x70020056, // 02CF JMP #0327 + 0x70020059, // 02CF JMP #032A 0x541E001C, // 02D0 LDINT R7 29 0x1C1C0A07, // 02D1 EQ R7 R5 R7 - 0x781E0050, // 02D2 JMPF R7 #0324 + 0x781E0053, // 02D2 JMPF R7 #0327 0x1C1C0D05, // 02D3 EQ R7 R6 K5 - 0x781E0019, // 02D4 JMPF R7 #02EF + 0x781E001C, // 02D4 JMPF R7 #02F2 0x8C1C0911, // 02D5 GETMET R7 R4 K17 0x7C1C0200, // 02D6 CALL R7 1 0x60200010, // 02D7 GETGBL R8 G16 0x8824014C, // 02D8 GETMBR R9 R0 K76 - 0x7C200200, // 02D9 CALL R8 1 - 0xA802000E, // 02DA EXBLK 0 #02EA - 0x5C241000, // 02DB MOVE R9 R8 - 0x7C240000, // 02DC CALL R9 0 - 0x8C280F15, // 02DD GETMET R10 R7 K21 - 0x7C280200, // 02DE CALL R10 1 - 0x8C2C150B, // 02DF GETMET R11 R10 K11 - 0x58340005, // 02E0 LDCONST R13 K5 - 0x8838090C, // 02E1 GETMBR R14 R4 K12 - 0x5C3C1200, // 02E2 MOVE R15 R9 - 0x7C2C0800, // 02E3 CALL R11 4 - 0x8C2C150B, // 02E4 GETMET R11 R10 K11 - 0x58340009, // 02E5 LDCONST R13 K9 - 0x8838090C, // 02E6 GETMBR R14 R4 K12 - 0x583C0009, // 02E7 LDCONST R15 K9 - 0x7C2C0800, // 02E8 CALL R11 4 - 0x7001FFF0, // 02E9 JMP #02DB - 0x58200039, // 02EA LDCONST R8 K57 - 0xAC200200, // 02EB CATCH R8 1 0 - 0xB0080000, // 02EC RAISE 2 R0 R0 - 0x80040E00, // 02ED RET 1 R7 - 0x70020033, // 02EE JMP #0323 - 0x1C1C0D09, // 02EF EQ R7 R6 K9 - 0x781E0013, // 02F0 JMPF R7 #0305 - 0x8C1C0911, // 02F1 GETMET R7 R4 K17 - 0x7C1C0200, // 02F2 CALL R7 1 - 0x60200010, // 02F3 GETGBL R8 G16 - 0x8C24014D, // 02F4 GETMET R9 R0 K77 - 0x7C240200, // 02F5 CALL R9 1 - 0x7C200200, // 02F6 CALL R8 1 - 0xA8020007, // 02F7 EXBLK 0 #0300 - 0x5C241000, // 02F8 MOVE R9 R8 - 0x7C240000, // 02F9 CALL R9 0 - 0x8C280F0B, // 02FA GETMET R10 R7 K11 - 0x4C300000, // 02FB LDNIL R12 - 0x8834092A, // 02FC GETMBR R13 R4 K42 - 0x5C381200, // 02FD MOVE R14 R9 - 0x7C280800, // 02FE CALL R10 4 - 0x7001FFF7, // 02FF JMP #02F8 - 0x58200039, // 0300 LDCONST R8 K57 - 0xAC200200, // 0301 CATCH R8 1 0 - 0xB0080000, // 0302 RAISE 2 R0 R0 - 0x80040E00, // 0303 RET 1 R7 - 0x7002001D, // 0304 JMP #0323 - 0x1C1C0D0D, // 0305 EQ R7 R6 K13 - 0x781E0003, // 0306 JMPF R7 #030B - 0x8C1C0911, // 0307 GETMET R7 R4 K17 - 0x7C1C0200, // 0308 CALL R7 1 - 0x80040E00, // 0309 RET 1 R7 - 0x70020017, // 030A JMP #0323 - 0x1C1C0D0F, // 030B EQ R7 R6 K15 - 0x781E0015, // 030C JMPF R7 #0323 - 0x881C0133, // 030D GETMBR R7 R0 K51 - 0x8C1C0F4E, // 030E GETMET R7 R7 K78 - 0x50240200, // 030F LDBOOL R9 1 0 - 0x7C1C0400, // 0310 CALL R7 2 - 0x8C200911, // 0311 GETMET R8 R4 K17 - 0x7C200200, // 0312 CALL R8 1 - 0x60240010, // 0313 GETGBL R9 G16 - 0x5C280E00, // 0314 MOVE R10 R7 - 0x7C240200, // 0315 CALL R9 1 - 0xA8020007, // 0316 EXBLK 0 #031F - 0x5C281200, // 0317 MOVE R10 R9 - 0x7C280000, // 0318 CALL R10 0 - 0x8C2C110B, // 0319 GETMET R11 R8 K11 - 0x4C340000, // 031A LDNIL R13 - 0x8838090C, // 031B GETMBR R14 R4 K12 - 0x5C3C1400, // 031C MOVE R15 R10 - 0x7C2C0800, // 031D CALL R11 4 - 0x7001FFF7, // 031E JMP #0317 - 0x58240039, // 031F LDCONST R9 K57 - 0xAC240200, // 0320 CATCH R9 1 0 - 0xB0080000, // 0321 RAISE 2 R0 R0 - 0x80041000, // 0322 RET 1 R8 - 0x70020002, // 0323 JMP #0327 - 0xB81E0200, // 0324 GETNGBL R7 K1 - 0x881C0F50, // 0325 GETMBR R7 R7 K80 - 0x900A9E07, // 0326 SETMBR R2 K79 R7 - 0x80000000, // 0327 RET 0 + 0x8C24134D, // 02D9 GETMET R9 R9 K77 + 0x7C240200, // 02DA CALL R9 1 + 0x7C200200, // 02DB CALL R8 1 + 0xA802000F, // 02DC EXBLK 0 #02ED + 0x5C241000, // 02DD MOVE R9 R8 + 0x7C240000, // 02DE CALL R9 0 + 0x8C280F15, // 02DF GETMET R10 R7 K21 + 0x7C280200, // 02E0 CALL R10 1 + 0x8C2C150B, // 02E1 GETMET R11 R10 K11 + 0x58340005, // 02E2 LDCONST R13 K5 + 0x8838090C, // 02E3 GETMBR R14 R4 K12 + 0x5C3C1200, // 02E4 MOVE R15 R9 + 0x7C2C0800, // 02E5 CALL R11 4 + 0x8C2C150B, // 02E6 GETMET R11 R10 K11 + 0x58340009, // 02E7 LDCONST R13 K9 + 0x8838090C, // 02E8 GETMBR R14 R4 K12 + 0x883C014C, // 02E9 GETMBR R15 R0 K76 + 0x943C1E09, // 02EA GETIDX R15 R15 R9 + 0x7C2C0800, // 02EB CALL R11 4 + 0x7001FFEF, // 02EC JMP #02DD + 0x58200039, // 02ED LDCONST R8 K57 + 0xAC200200, // 02EE CATCH R8 1 0 + 0xB0080000, // 02EF RAISE 2 R0 R0 + 0x80040E00, // 02F0 RET 1 R7 + 0x70020033, // 02F1 JMP #0326 + 0x1C1C0D09, // 02F2 EQ R7 R6 K9 + 0x781E0013, // 02F3 JMPF R7 #0308 + 0x8C1C0911, // 02F4 GETMET R7 R4 K17 + 0x7C1C0200, // 02F5 CALL R7 1 + 0x60200010, // 02F6 GETGBL R8 G16 + 0x8C24014E, // 02F7 GETMET R9 R0 K78 + 0x7C240200, // 02F8 CALL R9 1 + 0x7C200200, // 02F9 CALL R8 1 + 0xA8020007, // 02FA EXBLK 0 #0303 + 0x5C241000, // 02FB MOVE R9 R8 + 0x7C240000, // 02FC CALL R9 0 + 0x8C280F0B, // 02FD GETMET R10 R7 K11 + 0x4C300000, // 02FE LDNIL R12 + 0x8834092A, // 02FF GETMBR R13 R4 K42 + 0x5C381200, // 0300 MOVE R14 R9 + 0x7C280800, // 0301 CALL R10 4 + 0x7001FFF7, // 0302 JMP #02FB + 0x58200039, // 0303 LDCONST R8 K57 + 0xAC200200, // 0304 CATCH R8 1 0 + 0xB0080000, // 0305 RAISE 2 R0 R0 + 0x80040E00, // 0306 RET 1 R7 + 0x7002001D, // 0307 JMP #0326 + 0x1C1C0D0D, // 0308 EQ R7 R6 K13 + 0x781E0003, // 0309 JMPF R7 #030E + 0x8C1C0911, // 030A GETMET R7 R4 K17 + 0x7C1C0200, // 030B CALL R7 1 + 0x80040E00, // 030C RET 1 R7 + 0x70020017, // 030D JMP #0326 + 0x1C1C0D0F, // 030E EQ R7 R6 K15 + 0x781E0015, // 030F JMPF R7 #0326 + 0x881C0133, // 0310 GETMBR R7 R0 K51 + 0x8C1C0F4F, // 0311 GETMET R7 R7 K79 + 0x50240200, // 0312 LDBOOL R9 1 0 + 0x7C1C0400, // 0313 CALL R7 2 + 0x8C200911, // 0314 GETMET R8 R4 K17 + 0x7C200200, // 0315 CALL R8 1 + 0x60240010, // 0316 GETGBL R9 G16 + 0x5C280E00, // 0317 MOVE R10 R7 + 0x7C240200, // 0318 CALL R9 1 + 0xA8020007, // 0319 EXBLK 0 #0322 + 0x5C281200, // 031A MOVE R10 R9 + 0x7C280000, // 031B CALL R10 0 + 0x8C2C110B, // 031C GETMET R11 R8 K11 + 0x4C340000, // 031D LDNIL R13 + 0x8838090C, // 031E GETMBR R14 R4 K12 + 0x5C3C1400, // 031F MOVE R15 R10 + 0x7C2C0800, // 0320 CALL R11 4 + 0x7001FFF7, // 0321 JMP #031A + 0x58240039, // 0322 LDCONST R9 K57 + 0xAC240200, // 0323 CATCH R9 1 0 + 0xB0080000, // 0324 RAISE 2 R0 R0 + 0x80041000, // 0325 RET 1 R8 + 0x70020002, // 0326 JMP #032A + 0xB81E0200, // 0327 GETNGBL R7 K1 + 0x881C0F51, // 0328 GETMBR R7 R7 K81 + 0x900AA007, // 0329 SETMBR R2 K80 R7 + 0x80000000, // 032A RET 0 }) ) ); @@ -1189,7 +1193,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */ }), be_str_weak(invoke_request), &be_const_str_solidified, - ( &(const binstruction[494]) { /* code */ + ( &(const binstruction[502]) { /* code */ 0xA4120000, // 0000 IMPORT R4 K0 0xB8160200, // 0001 GETNGBL R5 K1 0x88140B02, // 0002 GETMBR R5 R5 K2 @@ -1278,10 +1282,10 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */ 0x5C2C0200, // 0055 MOVE R11 R1 0x7C240400, // 0056 CALL R9 2 0x80041000, // 0057 RET 1 R8 - 0x70020193, // 0058 JMP #01ED + 0x7002019B, // 0058 JMP #01F5 0x5422003D, // 0059 LDINT R8 62 0x1C200C08, // 005A EQ R8 R6 R8 - 0x78220190, // 005B JMPF R8 #01ED + 0x78220191, // 005B JMPF R8 #01EE 0x1C200F0E, // 005C EQ R8 R7 K14 0x7822001D, // 005D JMPF R8 #007C 0x8C200506, // 005E GETMET R8 R2 K6 @@ -1683,7 +1687,15 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */ 0x900E280A, // 01EA SETMBR R3 K20 R10 0x4C280000, // 01EB LDNIL R10 0x80041400, // 01EC RET 1 R10 - 0x80000000, // 01ED RET 0 + 0x70020006, // 01ED JMP #01F5 + 0x54220029, // 01EE LDINT R8 42 + 0x1C200C08, // 01EF EQ R8 R6 R8 + 0x78220003, // 01F0 JMPF R8 #01F5 + 0x1C200F05, // 01F1 EQ R8 R7 K5 + 0x78220001, // 01F2 JMPF R8 #01F5 + 0x50200200, // 01F3 LDBOOL R8 1 0 + 0x80041000, // 01F4 RET 1 R8 + 0x80000000, // 01F5 RET 0 }) ) ); @@ -1702,11 +1714,29 @@ be_local_class(Matter_Plugin_Root, { be_const_key_weak(read_attribute, 1), be_const_closure(Matter_Plugin_Root_read_attribute_closure) }, { be_const_key_weak(invoke_request, 2), be_const_closure(Matter_Plugin_Root_invoke_request_closure) }, { be_const_key_weak(CLUSTERS, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(15, + be_const_map( * be_nested_map(14, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(60, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(0, + { be_const_key_int(56, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(3, ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(7), + })) ) } )) }, + { be_const_key_int(29, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(4, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + })) ) } )) }, + { be_const_key_int(44, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(3, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), })) ) } )) }, { be_const_key_int(31, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(4, @@ -1716,17 +1746,17 @@ be_local_class(Matter_Plugin_Root, be_const_int(3), be_const_int(4), })) ) } )) }, - { be_const_key_int(62, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(6, + { be_const_key_int(60, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(0, + ( (struct bvalue*) &(const bvalue[]) { + })) ) } )) }, + { be_const_key_int(43, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(2, ( (struct bvalue*) &(const bvalue[]) { be_const_int(0), be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), })) ) } )) }, - { be_const_key_int(48, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + { be_const_key_int(48, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(5, ( (struct bvalue*) &(const bvalue[]) { be_const_int(0), @@ -1735,12 +1765,9 @@ be_local_class(Matter_Plugin_Root, be_const_int(3), be_const_int(4), })) ) } )) }, - { be_const_key_int(49, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(3, + { be_const_key_int(63, 13), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(0, ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(4), - be_const_int(65532), })) ) } )) }, { be_const_key_int(50, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(0, @@ -1758,17 +1785,15 @@ be_local_class(Matter_Plugin_Root, be_const_list( * be_nested_list(0, ( (struct bvalue*) &(const bvalue[]) { })) ) } )) }, - { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(4, + { be_const_key_int(62, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(6, ( (struct bvalue*) &(const bvalue[]) { be_const_int(0), be_const_int(1), be_const_int(2), be_const_int(3), - })) ) } )) }, - { be_const_key_int(63, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(0, - ( (struct bvalue*) &(const bvalue[]) { + be_const_int(4), + be_const_int(5), })) ) } )) }, { be_const_key_int(40, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(11, @@ -1785,39 +1810,18 @@ be_local_class(Matter_Plugin_Root, be_const_int(9), be_const_int(18), })) ) } )) }, - { be_const_key_int(56, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + { be_const_key_int(49, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(3, ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(7), - })) ) } )) }, - { be_const_key_int(42, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(4, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), be_const_int(3), - })) ) } )) }, - { be_const_key_int(43, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(2, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - })) ) } )) }, - { be_const_key_int(44, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(3, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), + be_const_int(4), + be_const_int(65532), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(1, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(22), + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(22, -1), be_const_int(1) }, })) ) } )) }, { be_const_key_weak(write_attribute, -1), be_const_closure(Matter_Plugin_Root_write_attribute_closure) }, { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Root_init_closure) },