Matter finish subscription (#18027)

This commit is contained in:
s-hadinger 2023-02-23 09:38:58 +01:00 committed by GitHub
parent 6a6d7a1521
commit e80d053aa0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 2574 additions and 2203 deletions

View File

@ -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
#############################################################

View File

@ -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: <Replied OK", 2)
elif res != nil
a1.command = matter.CommandDataIB()
a1.command.command_path = matter.CommandPathIB()
@ -357,7 +375,9 @@ class Matter_IM
a1.status.status = matter.StatusIB()
a1.status.status.status = ctx.status
ret.invoke_responses.push(a1)
tasmota.log(string.format("MTR: <Replied Status=0x%02X", ctx.status), 2)
else
tasmota.log("MTR: _Ignore", 2)
# ignore if content is nil and status is undefined
end
end
@ -605,6 +625,7 @@ class Matter_IM
#############################################################
# placeholder, nothing to run for now
def every_second()
self.expire_sendqueue()
end
#############################################################

View File

@ -64,25 +64,34 @@ matter.Path = Matter_Path
# Superclass for all IM responses
#################################################################################
class Matter_IM_Message
var resp # response Frame object
var ready # bool: ready to send (true) or wait (false)
var data # TLV data of the response (if any)
static var MSG_TIMEOUT = 10000 # 10s
var expiration # expiration time for the reporting
var resp # response Frame object
var ready # bool: ready to send (true) or wait (false)
var data # TLV data of the response (if any)
# build a response message stub
def init(msg, opcode, reliable)
self.resp = msg.build_response(opcode, reliable)
self.ready = true
self.expiration = tasmota.millis() + self.MSG_TIMEOUT
end
# the message is being removed due to expiration
def reached_timeout()
end
# ack received for previous message, proceed to next (if any)
# return true if we manage the ack ourselves, false if it needs to be done upper
def ack_received(msg)
self.expiration = tasmota.millis() + self.MSG_TIMEOUT # give more time
return false
end
# Status Report OK received for previous message, proceed to next (if any)
# return true if we manage the ack ourselves, false if it needs to be done upper
def status_ok_received(msg)
self.expiration = tasmota.millis() + self.MSG_TIMEOUT # give more time
if msg
self.resp = msg.build_response(self.resp.opcode, self.resp.x_flag_r, self.resp) # update packet
end
@ -167,14 +176,11 @@ matter.IM_WriteResponse = Matter_IM_WriteResponse
#################################################################################
class Matter_IM_ReportData : Matter_IM_Message
static var MAX_MESSAGE = 1200 # max bytes size for a single TLV worklaod
static var MSG_TIMEOUT = 10000 # 10s
var expiration # expiration time for the reporting
def init(msg, data)
super(self).init(msg, 0x05 #-Report Data-#, true)
self.data = data
self.ready = true # send immediately
self.expiration = tasmota.millis() + self.MSG_TIMEOUT
end
# return true if transaction is complete (remove object from queue)
@ -224,7 +230,6 @@ class Matter_IM_ReportData : Matter_IM_Message
if size(next_elemnts) > 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

View File

@ -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

View File

@ -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

View File

@ -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
})
)
);

File diff suppressed because it is too large Load Diff

View File

@ -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)
);

View File

@ -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),
})) ) } )) },
})) ) } )) },
})),

View File

@ -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) },