Matter aggregator relocated to endpoint 1 for Google compatibility, may break existing associations (#20654)

This commit is contained in:
s-hadinger 2024-02-03 19:56:29 +01:00 committed by GitHub
parent 92b8bb3c9b
commit 110c88e8e1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
39 changed files with 6650 additions and 6283 deletions

View File

@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file.
- Berry `introspect.contains` and `bytes.addfloat` (#20635)
### Breaking Changed
- Matter aggregator relocated to endpoint 1 for Google compatibility, may break existing associations
### Changed
- Library OneWire-Stickbreaker by TasmotaOneWire supporting Shelly Plus Add-On (#20580)

View File

@ -285,7 +285,8 @@ module matter (scope: global, strings: weak) {
_STYLESHEET, comptr(MATTER_STYLESHEET)
_ADD_ENDPOINT_JS, comptr(MATTER_ADD_ENDPOINT_HINTS_JS)
MATTER_OPTION, int(151) // SetOption151 enables Matter
AGGREGATOR_ENDPOINT, int(0xFE) // for Alexa we need only 8 bits endpoints
AGGREGATOR_ENDPOINT, int(0x0001) // some controllers require aggregator to be endpoint 1
START_ENDPOINT, int(0x0002) // endpoint where to start devices
seconds_to_dhm, ctype_func(matter_seconds_to_dhm)
Verhoeff, class(be_class_Matter_Verhoeff)

View File

@ -43,6 +43,7 @@ class Matter_Fabric : Matter_Expirable
var _store # reference back to session store
# timestamp
var created
var deleted # timestamp when the deletion of fabric was requested, and deferred
# fabric-index
var fabric_index # index number for fabrics, starts with `1`
var fabric_parent # index of the parent fabric, i.e. the fabric that triggered the provisioning (if nested)
@ -76,6 +77,7 @@ class Matter_Fabric : Matter_Expirable
self._sessions = matter.Expirable_list()
self.fabric_label = ""
self.created = tasmota.rtc_utc()
# self.deleted = nil # no need to actually set to nil
# init group counters
self._counter_group_data_snd_impl = matter.Counter()
self._counter_group_ctrl_snd_impl = matter.Counter()
@ -276,6 +278,16 @@ class Matter_Fabric : Matter_Expirable
return session
end
#############################################################
# Mark for deleteion in the near future
#
def mark_for_deletion()
self.deleted = tasmota.rtc_utc()
end
def is_marked_for_deletion()
return self.deleted != nil
end
#############################################################
# Fabric::tojson()
#

View File

@ -38,7 +38,6 @@ class Matter_Plugin
# Configuration of the plugin: clusters and type
static var CLUSTERS = {
0x001D: [0,1,2,3,0xFFFC,0xFFFD], # Descriptor Cluster 9.5 p.453
0x0039: [0x11], # Bridged Device Basic Information 9.13 p.485
}
# Accepted Update commands for virtual devices
static var UPDATE_COMMANDS = []
@ -266,14 +265,6 @@ class Matter_Plugin
return tlv_solo.set(TLV.U4, 1) # "Initial Release"
end
# ====================================================================================================
elif cluster == 0x0039 # ========== Bridged Device Basic Information 9.13 p.485 ==========
if attribute == 0x0011 # ---------- Reachable / bool ----------
return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable
else
return super(self).read_attribute(session, ctx, tlv_solo) # rest is handled by 0x0028
end
else
return nil
end

View File

@ -26,9 +26,10 @@ import matter
class Matter_Plugin_Aggregator : Matter_Plugin
static var TYPE = "aggregator" # name of the plug-in in json
static var DISPLAY_NAME = "Aggregator" # display name of the plug-in
# static var CLUSTERS = {
# # 0x001D: inherited # Descriptor Cluster 9.5 p.453
# }
static var CLUSTERS = matter.consolidate_clusters(_class, {
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
0x0003: [0,1,0xFFFC,0xFFFD], # Identify 1.2 p.16
})
static var TYPES = { 0x000E: 1 } # Aggregator
#############################################################
@ -39,14 +40,30 @@ class Matter_Plugin_Aggregator : Matter_Plugin
var cluster = ctx.cluster
var attribute = ctx.attribute
if cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
# ====================================================================================================
if cluster == 0x0003 # ========== Identify 1.2 p.16 ==========
if attribute == 0x0000 # ---------- IdentifyTime / u2 ----------
return tlv_solo.set(TLV.U2, 0) # no identification in progress
elif attribute == 0x0001 # ---------- IdentifyType / enum8 ----------
return tlv_solo.set(TLV.U1, 0) # IdentifyType = 0x00 None
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
return tlv_solo.set(TLV.U4, 0) # no features
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
return tlv_solo.set(TLV.U4, 4) # "new data model format and notation"
end
elif cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
if attribute == 0x0002 # ---------- ClientList / list[cluster-id] ----------
var pl = TLV.Matter_TLV_array()
# from connectedhome reference implementation
pl.add_TLV(nil, TLV.U2, 0x001E) # Binding
return pl
# overwrite PartsList
if attribute == 0x0003 # ---------- PartsList / list[endpoint-no]----------
elif attribute == 0x0003 # ---------- PartsList / list[endpoint-no]----------
var pl = TLV.Matter_TLV_array()
var eps = self.device.get_active_endpoints(true)
for ep: eps
if ep < matter.AGGREGATOR_ENDPOINT
if ep != matter.AGGREGATOR_ENDPOINT
pl.add_TLV(nil, TLV.U2, ep) # add each endpoint
end
end
@ -62,6 +79,39 @@ class Matter_Plugin_Aggregator : Matter_Plugin
# no match found, return that the attribute is unsupported
end
#############################################################
# Invoke a command
#
# returns a TLV object if successful, contains the response
# or an `int` to indicate a status
def invoke_request(session, val, ctx)
var TLV = matter.TLV
var cluster = ctx.cluster
var command = ctx.command
# ====================================================================================================
if cluster == 0x0003 # ========== Identify 1.2 p.16 ==========
if command == 0x0000 # ---------- Identify ----------
# ignore
return true
elif command == 0x0001 # ---------- IdentifyQuery ----------
# create IdentifyQueryResponse
# ID=1
# 0=Certificate (octstr)
var iqr = TLV.Matter_TLV_struct()
iqr.add_TLV(0, TLV.U2, 0) # Timeout
ctx.command = 0x00 # IdentifyQueryResponse
return iqr
elif command == 0x0040 # ---------- TriggerEffect ----------
# ignore
return true
end
else
return super(self).invoke_request(session, val, ctx)
end
end
end
matter.Plugin_Aggregator = Matter_Plugin_Aggregator

View File

@ -119,8 +119,6 @@ class Matter_Plugin_Device : Matter_Plugin
return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable
elif attribute == 0x0012 # ---------- UniqueID / string 32 max ----------
return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", ""))
else
return super(self).read_attribute(session, ctx, tlv_solo)
end
else

View File

@ -154,6 +154,7 @@ class Matter_Plugin_Root : Matter_Plugin
var nocl = TLV.Matter_TLV_array() # NOCs, p.711
var fabs = ctx.fabric_filtered ? [session.get_fabric()] : self.device.sessions.active_fabrics()
for loc_fabric: fabs
if loc_fabric.is_marked_for_deletion() continue end # fabric is scheduled for deletion
if loc_fabric == nil continue end
var nocs = nocl.add_struct(nil)
nocs.add_TLV(1, TLV.B2, loc_fabric.get_noc()) # NOC
@ -166,6 +167,7 @@ class Matter_Plugin_Root : Matter_Plugin
var fabs = ctx.fabric_filtered ? [session.get_fabric()] : self.device.sessions.active_fabrics()
for loc_fabric: fabs
if loc_fabric == nil continue end
if loc_fabric.is_marked_for_deletion() continue end # fabric is scheduled for deletion
var root_ca_tlv = TLV.parse(loc_fabric.get_ca())
var fab = fabrics.add_struct(nil) # encoding see p.303
fab.add_TLV(1, TLV.B2, root_ca_tlv.findsubval(9)) # RootPublicKey
@ -305,14 +307,20 @@ class Matter_Plugin_Root : Matter_Plugin
elif cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
# overwrite ClientList
if attribute == 0x0002 # ---------- ClientList / list[cluster-id] ----------
var pl = TLV.Matter_TLV_array()
# from connectedhome reference implementation
pl.add_TLV(nil, TLV.U2, 0x001F) # Access Control Cluster
return pl
# overwrite PartsList
if attribute == 0x0003 # ---------- PartsList / list[endpoint-no]----------
elif attribute == 0x0003 # ---------- PartsList / list[endpoint-no]----------
var pl = TLV.Matter_TLV_array()
var eps = self.device.get_active_endpoints(true)
var disable_bridge_mode = self.device.disable_bridge_mode
for ep: eps
# if bridge mode is disabled, don't announce Aggregatore (above 0xFF00)
if !disable_bridge_mode || ep < matter.AGGREGATOR_ENDPOINT
if !disable_bridge_mode || ep != matter.AGGREGATOR_ENDPOINT
pl.add_TLV(nil, TLV.U2, ep) # add each endpoint
end
end
@ -572,6 +580,7 @@ class Matter_Plugin_Root : Matter_Plugin
if fab.get_fabric_index() == index
# tasmota.log("MTR: removing fabric " + fab.get_fabric_id().copy().reverse().tohex(), 2)
# defer actual removal to send a response
fab.mark_for_deletion() # this should not appear anymore in the list
tasmota.set_timer(2000, def () self.device.remove_fabric(fab) end)
return true # Ok
end

View File

@ -786,6 +786,7 @@ class Matter_Device
if self.plugins_config != nil
tasmota.log("MTR: load_config = " + str(self.plugins_config), 3)
self.adjust_next_ep()
self.check_config_ep()
self.plugins_persist = true
end
self.plugins_config_remotes = j.find("remotes", {})
@ -1160,7 +1161,7 @@ class Matter_Device
var m = {}
# check if we have a light
var endpoint = 1
var endpoint = matter.START_ENDPOINT
var light_present = false
import light
@ -1399,6 +1400,25 @@ class Matter_Device
self.attribute_updated(matter.AGGREGATOR_ENDPOINT, 0x001D, 0x0003, false)
end
#############################################################
# Check that all ep are valid, i.e. don't collied with root or aggregator
#
def check_config_ep()
# copy into list so we can change the map on the fly
var keys = []
for k: self.plugins_config.keys() k.push(int(k)) end
for ep: keys
if ep == 0
tasmota.log("MTR: invalid entry with ep '0'", 2)
self.plugins_config.remove(str(ep))
elif ep == matter.AGGREGATOR_ENDPOINT
tasmota.log(f"MTR: endpoint {ep} collides wit aggregator, relocating to {self.next_ep}", 2)
self.plugins_config[str(self.next_ep)] = self.plugins_config[str(ep)]
self.plugins_config.remove(str(ep))
end
end
end
#############################################################
# Adjust next_ep
#

View File

@ -273,7 +273,7 @@ be_local_closure(Matter_Plugin_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[20]) { /* constants */
( &(const bvalue[18]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
@ -292,12 +292,10 @@ be_local_closure(Matter_Plugin_read_attribute, /* name */
/* K15 */ be_const_int(2),
/* K16 */ be_const_int(3),
/* K17 */ be_nested_str_weak(set),
/* K18 */ be_nested_str_weak(BOOL),
/* K19 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[114]) { /* code */
( &(const binstruction[92]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
@ -386,32 +384,10 @@ be_local_closure(Matter_Plugin_read_attribute, /* name */
0x5828000B, // 0055 LDCONST R10 K11
0x7C1C0600, // 0056 CALL R7 3
0x80040E00, // 0057 RET 1 R7
0x70020017, // 0058 JMP #0071
0x541E0038, // 0059 LDINT R7 57
0x1C1C0A07, // 005A EQ R7 R5 R7
0x781E0012, // 005B JMPF R7 #006F
0x541E0010, // 005C LDINT R7 17
0x1C1C0C07, // 005D EQ R7 R6 R7
0x781E0005, // 005E JMPF R7 #0065
0x8C1C0711, // 005F GETMET R7 R3 K17
0x88240912, // 0060 GETMBR R9 R4 K18
0x5828000B, // 0061 LDCONST R10 K11
0x7C1C0600, // 0062 CALL R7 3
0x80040E00, // 0063 RET 1 R7
0x70020008, // 0064 JMP #006E
0x601C0003, // 0065 GETGBL R7 G3
0x5C200000, // 0066 MOVE R8 R0
0x7C1C0200, // 0067 CALL R7 1
0x8C1C0F13, // 0068 GETMET R7 R7 K19
0x5C240200, // 0069 MOVE R9 R1
0x5C280400, // 006A MOVE R10 R2
0x5C2C0600, // 006B MOVE R11 R3
0x7C1C0800, // 006C CALL R7 4
0x80040E00, // 006D RET 1 R7
0x70020001, // 006E JMP #0071
0x4C1C0000, // 006F LDNIL R7
0x80040E00, // 0070 RET 1 R7
0x80000000, // 0071 RET 0
0x70020001, // 0058 JMP #005B
0x4C1C0000, // 0059 LDNIL R7
0x80040E00, // 005A RET 1 R7
0x80000000, // 005B RET 0
})
)
);
@ -1303,7 +1279,7 @@ be_local_class(Matter_Plugin,
{ be_const_key_weak(VIRTUAL, 6), be_const_bool(0) },
{ be_const_key_weak(node_label, 34), be_const_var(5) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(6,
@ -1314,11 +1290,6 @@ be_local_class(Matter_Plugin,
be_const_int(3),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, 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(17),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(update_shadow_lazy, -1), be_const_closure(Matter_Plugin_update_shadow_lazy_closure) },

View File

@ -19,80 +19,207 @@ be_local_closure(Matter_Plugin_Aggregator_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[13]) { /* constants */
( &(const bvalue[19]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(3),
/* K5 */ be_nested_str_weak(Matter_TLV_array),
/* K6 */ be_nested_str_weak(device),
/* K7 */ be_nested_str_weak(get_active_endpoints),
/* K8 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
/* K9 */ be_nested_str_weak(add_TLV),
/* K10 */ be_nested_str_weak(U2),
/* K11 */ be_nested_str_weak(stop_iteration),
/* K12 */ be_nested_str_weak(read_attribute),
/* K5 */ be_const_int(0),
/* K6 */ be_nested_str_weak(set),
/* K7 */ be_nested_str_weak(U2),
/* K8 */ be_const_int(1),
/* K9 */ be_nested_str_weak(U1),
/* K10 */ be_nested_str_weak(U4),
/* K11 */ be_const_int(2),
/* K12 */ be_nested_str_weak(Matter_TLV_array),
/* K13 */ be_nested_str_weak(add_TLV),
/* K14 */ be_nested_str_weak(device),
/* K15 */ be_nested_str_weak(get_active_endpoints),
/* K16 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
/* K17 */ be_nested_str_weak(stop_iteration),
/* K18 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[56]) { /* code */
( &(const binstruction[103]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
0x88180503, // 0003 GETMBR R6 R2 K3
0x541E001C, // 0004 LDINT R7 29
0x1C1C0A07, // 0005 EQ R7 R5 R7
0x781E0026, // 0006 JMPF R7 #002E
0x1C1C0D04, // 0007 EQ R7 R6 K4
0x781E001A, // 0008 JMPF R7 #0024
0x8C1C0905, // 0009 GETMET R7 R4 K5
0x7C1C0200, // 000A CALL R7 1
0x88200106, // 000B GETMBR R8 R0 K6
0x8C201107, // 000C GETMET R8 R8 K7
0x50280200, // 000D LDBOOL R10 1 0
0x7C200400, // 000E CALL R8 2
0x60240010, // 000F GETGBL R9 G16
0x5C281000, // 0010 MOVE R10 R8
0x7C240200, // 0011 CALL R9 1
0xA802000B, // 0012 EXBLK 0 #001F
0x5C281200, // 0013 MOVE R10 R9
0x7C280000, // 0014 CALL R10 0
0xB82E0000, // 0015 GETNGBL R11 K0
0x882C1708, // 0016 GETMBR R11 R11 K8
0x142C140B, // 0017 LT R11 R10 R11
0x782E0004, // 0018 JMPF R11 #001E
0x8C2C0F09, // 0019 GETMET R11 R7 K9
0x4C340000, // 001A LDNIL R13
0x8838090A, // 001B GETMBR R14 R4 K10
0x5C3C1400, // 001C MOVE R15 R10
0x7C2C0800, // 001D CALL R11 4
0x7001FFF3, // 001E JMP #0013
0x5824000B, // 001F LDCONST R9 K11
0xAC240200, // 0020 CATCH R9 1 0
0xB0080000, // 0021 RAISE 2 R0 R0
0x80040E00, // 0022 RET 1 R7
0x70020008, // 0023 JMP #002D
0x601C0003, // 0024 GETGBL R7 G3
0x5C200000, // 0025 MOVE R8 R0
0x7C1C0200, // 0026 CALL R7 1
0x8C1C0F0C, // 0027 GETMET R7 R7 K12
0x5C240200, // 0028 MOVE R9 R1
0x5C280400, // 0029 MOVE R10 R2
0x5C2C0600, // 002A MOVE R11 R3
0x7C1C0800, // 002B CALL R7 4
0x80040E00, // 002C RET 1 R7
0x70020008, // 002D JMP #0037
0x601C0003, // 002E GETGBL R7 G3
0x5C200000, // 002F MOVE R8 R0
0x7C1C0200, // 0030 CALL R7 1
0x8C1C0F0C, // 0031 GETMET R7 R7 K12
0x5C240200, // 0032 MOVE R9 R1
0x5C280400, // 0033 MOVE R10 R2
0x5C2C0600, // 0034 MOVE R11 R3
0x7C1C0800, // 0035 CALL R7 4
0x80040E00, // 0036 RET 1 R7
0x80000000, // 0037 RET 0
0x1C1C0B04, // 0004 EQ R7 R5 K4
0x781E0021, // 0005 JMPF R7 #0028
0x1C1C0D05, // 0006 EQ R7 R6 K5
0x781E0005, // 0007 JMPF R7 #000E
0x8C1C0706, // 0008 GETMET R7 R3 K6
0x88240907, // 0009 GETMBR R9 R4 K7
0x58280005, // 000A LDCONST R10 K5
0x7C1C0600, // 000B CALL R7 3
0x80040E00, // 000C RET 1 R7
0x70020018, // 000D JMP #0027
0x1C1C0D08, // 000E EQ R7 R6 K8
0x781E0005, // 000F JMPF R7 #0016
0x8C1C0706, // 0010 GETMET R7 R3 K6
0x88240909, // 0011 GETMBR R9 R4 K9
0x58280005, // 0012 LDCONST R10 K5
0x7C1C0600, // 0013 CALL R7 3
0x80040E00, // 0014 RET 1 R7
0x70020010, // 0015 JMP #0027
0x541EFFFB, // 0016 LDINT R7 65532
0x1C1C0C07, // 0017 EQ R7 R6 R7
0x781E0005, // 0018 JMPF R7 #001F
0x8C1C0706, // 0019 GETMET R7 R3 K6
0x8824090A, // 001A GETMBR R9 R4 K10
0x58280005, // 001B LDCONST R10 K5
0x7C1C0600, // 001C CALL R7 3
0x80040E00, // 001D RET 1 R7
0x70020007, // 001E JMP #0027
0x541EFFFC, // 001F LDINT R7 65533
0x1C1C0C07, // 0020 EQ R7 R6 R7
0x781E0004, // 0021 JMPF R7 #0027
0x8C1C0706, // 0022 GETMET R7 R3 K6
0x8824090A, // 0023 GETMBR R9 R4 K10
0x542A0003, // 0024 LDINT R10 4
0x7C1C0600, // 0025 CALL R7 3
0x80040E00, // 0026 RET 1 R7
0x7002003D, // 0027 JMP #0066
0x541E001C, // 0028 LDINT R7 29
0x1C1C0A07, // 0029 EQ R7 R5 R7
0x781E0031, // 002A JMPF R7 #005D
0x1C1C0D0B, // 002B EQ R7 R6 K11
0x781E0008, // 002C JMPF R7 #0036
0x8C1C090C, // 002D GETMET R7 R4 K12
0x7C1C0200, // 002E CALL R7 1
0x8C200F0D, // 002F GETMET R8 R7 K13
0x4C280000, // 0030 LDNIL R10
0x882C0907, // 0031 GETMBR R11 R4 K7
0x5432001D, // 0032 LDINT R12 30
0x7C200800, // 0033 CALL R8 4
0x80040E00, // 0034 RET 1 R7
0x70020025, // 0035 JMP #005C
0x1C1C0D04, // 0036 EQ R7 R6 K4
0x781E001A, // 0037 JMPF R7 #0053
0x8C1C090C, // 0038 GETMET R7 R4 K12
0x7C1C0200, // 0039 CALL R7 1
0x8820010E, // 003A GETMBR R8 R0 K14
0x8C20110F, // 003B GETMET R8 R8 K15
0x50280200, // 003C LDBOOL R10 1 0
0x7C200400, // 003D CALL R8 2
0x60240010, // 003E GETGBL R9 G16
0x5C281000, // 003F MOVE R10 R8
0x7C240200, // 0040 CALL R9 1
0xA802000B, // 0041 EXBLK 0 #004E
0x5C281200, // 0042 MOVE R10 R9
0x7C280000, // 0043 CALL R10 0
0xB82E0000, // 0044 GETNGBL R11 K0
0x882C1710, // 0045 GETMBR R11 R11 K16
0x202C140B, // 0046 NE R11 R10 R11
0x782E0004, // 0047 JMPF R11 #004D
0x8C2C0F0D, // 0048 GETMET R11 R7 K13
0x4C340000, // 0049 LDNIL R13
0x88380907, // 004A GETMBR R14 R4 K7
0x5C3C1400, // 004B MOVE R15 R10
0x7C2C0800, // 004C CALL R11 4
0x7001FFF3, // 004D JMP #0042
0x58240011, // 004E LDCONST R9 K17
0xAC240200, // 004F CATCH R9 1 0
0xB0080000, // 0050 RAISE 2 R0 R0
0x80040E00, // 0051 RET 1 R7
0x70020008, // 0052 JMP #005C
0x601C0003, // 0053 GETGBL R7 G3
0x5C200000, // 0054 MOVE R8 R0
0x7C1C0200, // 0055 CALL R7 1
0x8C1C0F12, // 0056 GETMET R7 R7 K18
0x5C240200, // 0057 MOVE R9 R1
0x5C280400, // 0058 MOVE R10 R2
0x5C2C0600, // 0059 MOVE R11 R3
0x7C1C0800, // 005A CALL R7 4
0x80040E00, // 005B RET 1 R7
0x70020008, // 005C JMP #0066
0x601C0003, // 005D GETGBL R7 G3
0x5C200000, // 005E MOVE R8 R0
0x7C1C0200, // 005F CALL R7 1
0x8C1C0F12, // 0060 GETMET R7 R7 K18
0x5C240200, // 0061 MOVE R9 R1
0x5C280400, // 0062 MOVE R10 R2
0x5C2C0600, // 0063 MOVE R11 R3
0x7C1C0800, // 0064 CALL R7 4
0x80040E00, // 0065 RET 1 R7
0x80000000, // 0066 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
be_local_closure(Matter_Plugin_Aggregator_invoke_request, /* name */
be_nested_proto(
13, /* nstack */
4, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[11]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
/* K3 */ be_nested_str_weak(command),
/* K4 */ be_const_int(3),
/* K5 */ be_const_int(0),
/* K6 */ be_const_int(1),
/* K7 */ be_nested_str_weak(Matter_TLV_struct),
/* K8 */ be_nested_str_weak(add_TLV),
/* K9 */ be_nested_str_weak(U2),
/* K10 */ be_nested_str_weak(invoke_request),
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
( &(const binstruction[39]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140702, // 0002 GETMBR R5 R3 K2
0x88180703, // 0003 GETMBR R6 R3 K3
0x1C1C0B04, // 0004 EQ R7 R5 K4
0x781E0016, // 0005 JMPF R7 #001D
0x1C1C0D05, // 0006 EQ R7 R6 K5
0x781E0002, // 0007 JMPF R7 #000B
0x501C0200, // 0008 LDBOOL R7 1 0
0x80040E00, // 0009 RET 1 R7
0x70020010, // 000A JMP #001C
0x1C1C0D06, // 000B EQ R7 R6 K6
0x781E0009, // 000C JMPF R7 #0017
0x8C1C0907, // 000D GETMET R7 R4 K7
0x7C1C0200, // 000E CALL R7 1
0x8C200F08, // 000F GETMET R8 R7 K8
0x58280005, // 0010 LDCONST R10 K5
0x882C0909, // 0011 GETMBR R11 R4 K9
0x58300005, // 0012 LDCONST R12 K5
0x7C200800, // 0013 CALL R8 4
0x900E0705, // 0014 SETMBR R3 K3 K5
0x80040E00, // 0015 RET 1 R7
0x70020004, // 0016 JMP #001C
0x541E003F, // 0017 LDINT R7 64
0x1C1C0C07, // 0018 EQ R7 R6 R7
0x781E0001, // 0019 JMPF R7 #001C
0x501C0200, // 001A LDBOOL R7 1 0
0x80040E00, // 001B RET 1 R7
0x70020008, // 001C JMP #0026
0x601C0003, // 001D GETGBL R7 G3
0x5C200000, // 001E MOVE R8 R0
0x7C1C0200, // 001F CALL R7 1
0x8C1C0F0A, // 0020 GETMET R7 R7 K10
0x5C240200, // 0021 MOVE R9 R1
0x5C280400, // 0022 MOVE R10 R2
0x5C2C0600, // 0023 MOVE R11 R3
0x7C1C0800, // 0024 CALL R7 4
0x80040E00, // 0025 RET 1 R7
0x80000000, // 0026 RET 0
})
)
);
@ -106,16 +233,39 @@ extern const bclass be_class_Matter_Plugin;
be_local_class(Matter_Plugin_Aggregator,
0,
&be_class_Matter_Plugin,
be_nested_map(4,
be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Aggregator_read_attribute_closure) },
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(aggregator) },
{ 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(14, -1), be_const_int(1) },
})) ) } )) },
{ be_const_key_weak(TYPE, 3), be_nested_str_weak(aggregator) },
{ be_const_key_weak(read_attribute, 0), be_const_closure(Matter_Plugin_Aggregator_read_attribute_closure) },
{ be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Aggregator) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(29, -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_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, 0), 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(65532),
be_const_int(65533),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Aggregator_invoke_request_closure) },
})),
be_str_weak(Matter_Plugin_Aggregator)
);

View File

@ -60,7 +60,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[264]) { /* code */
( &(const binstruction[254]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140502, // 0002 GETMBR R5 R2 K2
@ -100,7 +100,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x542A0003, // 0024 LDINT R10 4
0x7C1C0600, // 0025 CALL R7 3
0x80040E00, // 0026 RET 1 R7
0x700200DE, // 0027 JMP #0107
0x700200D4, // 0027 JMP #00FD
0x541E0003, // 0028 LDINT R7 4
0x1C1C0A07, // 0029 EQ R7 R5 R7
0x781E0016, // 002A JMPF R7 #0042
@ -126,7 +126,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x542A0003, // 003E LDINT R10 4
0x7C1C0600, // 003F CALL R7 3
0x80040E00, // 0040 RET 1 R7
0x700200C4, // 0041 JMP #0107
0x700200BA, // 0041 JMP #00FD
0x541E0004, // 0042 LDINT R7 5
0x1C1C0A07, // 0043 EQ R7 R5 R7
0x781E0011, // 0044 JMPF R7 #0057
@ -147,7 +147,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x542A0003, // 0053 LDINT R10 4
0x7C1C0600, // 0054 CALL R7 3
0x80040E00, // 0055 RET 1 R7
0x700200AF, // 0056 JMP #0107
0x700200A5, // 0056 JMP #00FD
0x541E001C, // 0057 LDINT R7 29
0x1C1C0A07, // 0058 EQ R7 R5 R7
0x781E003E, // 0059 JMPF R7 #0099
@ -213,10 +213,10 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x5C2C0600, // 0095 MOVE R11 R3
0x7C1C0800, // 0096 CALL R7 4
0x80040E00, // 0097 RET 1 R7
0x7002006D, // 0098 JMP #0107
0x70020063, // 0098 JMP #00FD
0x541E0038, // 0099 LDINT R7 57
0x1C1C0A07, // 009A EQ R7 R5 R7
0x781E0061, // 009B JMPF R7 #00FE
0x781E0057, // 009B JMPF R7 #00F4
0xA41E2E00, // 009C IMPORT R7 K23
0x1C200D04, // 009D EQ R8 R6 K4
0x7822000A, // 009E JMPF R8 #00AA
@ -230,7 +230,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x942C171B, // 00A6 GETIDX R11 R11 K27
0x7C200600, // 00A7 CALL R8 3
0x80041000, // 00A8 RET 1 R8
0x70020052, // 00A9 JMP #00FD
0x70020048, // 00A9 JMP #00F3
0x54220004, // 00AA LDINT R8 5
0x1C200C08, // 00AB EQ R8 R6 R8
0x78220006, // 00AC JMPF R8 #00B4
@ -240,7 +240,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x7C2C0200, // 00B0 CALL R11 1
0x7C200600, // 00B1 CALL R8 3
0x80041000, // 00B2 RET 1 R8
0x70020048, // 00B3 JMP #00FD
0x7002003E, // 00B3 JMP #00F3
0x54220009, // 00B4 LDINT R8 10
0x1C200C08, // 00B5 EQ R8 R6 R8
0x78220015, // 00B6 JMPF R8 #00CD
@ -265,7 +265,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x5C341000, // 00C9 MOVE R13 R8
0x7C280600, // 00CA CALL R10 3
0x80041400, // 00CB RET 1 R10
0x7002002F, // 00CC JMP #00FD
0x70020025, // 00CC JMP #00F3
0x5422000E, // 00CD LDINT R8 15
0x1C200C08, // 00CE EQ R8 R6 R8
0x7822000B, // 00CF JMPF R8 #00DC
@ -280,7 +280,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x7C2C0600, // 00D8 CALL R11 3
0x7C200600, // 00D9 CALL R8 3
0x80041000, // 00DA RET 1 R8
0x70020020, // 00DB JMP #00FD
0x70020016, // 00DB JMP #00F3
0x54220010, // 00DC LDINT R8 17
0x1C200C08, // 00DD EQ R8 R6 R8
0x78220005, // 00DE JMPF R8 #00E5
@ -289,10 +289,10 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x582C0008, // 00E1 LDCONST R11 K8
0x7C200600, // 00E2 CALL R8 3
0x80041000, // 00E3 RET 1 R8
0x70020017, // 00E4 JMP #00FD
0x7002000D, // 00E4 JMP #00F3
0x54220011, // 00E5 LDINT R8 18
0x1C200C08, // 00E6 EQ R8 R6 R8
0x7822000B, // 00E7 JMPF R8 #00F4
0x7822000A, // 00E7 JMPF R8 #00F3
0x8C200706, // 00E8 GETMET R8 R3 K6
0x88280918, // 00E9 GETMBR R10 R4 K24
0xB82E3200, // 00EA GETNGBL R11 K25
@ -305,26 +305,16 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0x7C200600, // 00F1 CALL R8 3
0x80041000, // 00F2 RET 1 R8
0x70020008, // 00F3 JMP #00FD
0x60200003, // 00F4 GETGBL R8 G3
0x5C240000, // 00F5 MOVE R9 R0
0x7C200200, // 00F6 CALL R8 1
0x8C201116, // 00F7 GETMET R8 R8 K22
0x5C280200, // 00F8 MOVE R10 R1
0x5C2C0400, // 00F9 MOVE R11 R2
0x5C300600, // 00FA MOVE R12 R3
0x7C200800, // 00FB CALL R8 4
0x80041000, // 00FC RET 1 R8
0x70020008, // 00FD JMP #0107
0x601C0003, // 00FE GETGBL R7 G3
0x5C200000, // 00FF MOVE R8 R0
0x7C1C0200, // 0100 CALL R7 1
0x8C1C0F16, // 0101 GETMET R7 R7 K22
0x5C240200, // 0102 MOVE R9 R1
0x5C280400, // 0103 MOVE R10 R2
0x5C2C0600, // 0104 MOVE R11 R3
0x7C1C0800, // 0105 CALL R7 4
0x80040E00, // 0106 RET 1 R7
0x80000000, // 0107 RET 0
0x601C0003, // 00F4 GETGBL R7 G3
0x5C200000, // 00F5 MOVE R8 R0
0x7C1C0200, // 00F6 CALL R7 1
0x8C1C0F16, // 00F7 GETMET R7 R7 K22
0x5C240200, // 00F8 MOVE R9 R1
0x5C280400, // 00F9 MOVE R10 R2
0x5C2C0600, // 00FA MOVE R11 R3
0x7C1C0800, // 00FB CALL R7 4
0x80040E00, // 00FC RET 1 R7
0x80000000, // 00FD RET 0
})
)
);
@ -597,17 +587,19 @@ be_local_class(Matter_Plugin_Device,
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(3,
{ be_const_key_int(29, -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_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),
@ -623,13 +615,10 @@ be_local_class(Matter_Plugin_Device,
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(6,
{ be_const_key_int(4, 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_int(3),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },

View File

@ -761,9 +761,8 @@ be_local_class(Matter_Plugin_Light1,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -484,9 +484,8 @@ be_local_class(Matter_Plugin_OnOff,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -415,9 +415,8 @@ be_local_class(Matter_Plugin_Sensor_Contact,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -432,9 +432,8 @@ be_local_class(Matter_Plugin_Sensor_Occupancy,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -300,9 +300,8 @@ be_local_class(Matter_Plugin_Sensor_OnOff,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -696,9 +696,8 @@ be_local_class(Matter_Plugin_Shutter,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -513,9 +513,8 @@ be_local_class(Matter_Plugin_Bridge_Light0,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -372,9 +372,8 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Contact,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -392,9 +392,8 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -528,9 +528,8 @@ be_local_class(Matter_Plugin_Light2,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -690,9 +690,8 @@ be_local_class(Matter_Plugin_Light3,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -219,9 +219,8 @@ be_local_class(Matter_Plugin_Sensor_Flow,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -227,9 +227,8 @@ be_local_class(Matter_Plugin_Sensor_Humidity,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -238,9 +238,8 @@ be_local_class(Matter_Plugin_Sensor_Illuminance,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -227,9 +227,8 @@ be_local_class(Matter_Plugin_Sensor_Pressure,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -240,9 +240,8 @@ be_local_class(Matter_Plugin_Sensor_Temp,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -470,9 +470,8 @@ be_local_class(Matter_Plugin_ShutterTilt,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -579,9 +579,8 @@ be_local_class(Matter_Plugin_Bridge_Light1,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -256,9 +256,8 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Flow,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -272,9 +272,8 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Humidity,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -275,9 +275,8 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Illuminance,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -264,9 +264,8 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Pressure,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -282,9 +282,8 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Temp,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -560,9 +560,8 @@ be_local_class(Matter_Plugin_Bridge_Light2,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),

View File

@ -736,9 +736,8 @@ be_local_class(Matter_Plugin_Bridge_Light3,
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(7,
be_const_list( * be_nested_list(6,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
be_const_int(3),
be_const_int(5),
be_const_int(10),