Matter fix PartsList attribute (#18266)

This commit is contained in:
s-hadinger 2023-03-26 12:15:18 +02:00 committed by GitHub
parent 215c9cc30f
commit 537713caa8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 2050 additions and 1113 deletions

View File

@ -151,6 +151,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because
#include "solidify/solidified_Matter_Plugin_Root.h"
#include "solidify/solidified_Matter_Plugin_Device.h"
#include "solidify/solidified_Matter_Plugin_OnOff.h"
#include "solidify/solidified_Matter_Plugin_Light3.h"
#include "solidify/solidified_Matter_Plugin_Temp_Sensor.h"
/*********************************************************************************************\
@ -319,6 +320,7 @@ module matter (scope: global, strings: weak) {
Plugin_Root, class(be_class_Matter_Plugin_Root) // Generic behavior common to all devices
Plugin_Device, class(be_class_Matter_Plugin_Device) // Generic device (abstract)
Plugin_OnOff, class(be_class_Matter_Plugin_OnOff) // Relay/Light behavior (OnOff)
Plugin_Light3, class(be_class_Matter_Plugin_Light3) // Relay/Light behavior (OnOff)
Plugin_Temp_Sensor, class(be_class_Matter_Plugin_Temp_Sensor) // Temperature Sensor
}

View File

@ -88,6 +88,7 @@ class Matter_Device
# add the default plugin
self.plugins.push(matter.Plugin_Root(self, 0))
self.plugins.push(matter.Plugin_OnOff(self, 1, 0#-tasmota relay 1-#))
# self.plugins.push(matter.Plugin_Light3(self, 2))
# self.plugins.push(matter.Plugin_Temp_Sensor(self, 2, "ESP32#Temperature"))
# for now read sensors every 5 seconds

View File

@ -23,11 +23,12 @@
#@ solidify:Matter_Plugin,weak
class Matter_Plugin
static var EMPTY_LIST = []
static var EMPTY_MAP = {}
static var CLUSTERS = {
0x001D: [0,1,2,3,0xFFFC,0xFFFD], # Descriptor Cluster 9.5 p.453
}
var device # reference to the `device` global object
var endpoint # current endpoint
var clusters # map from cluster to list of attributes
var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy
#############################################################
# MVC Model
@ -41,7 +42,7 @@ class Matter_Plugin
def init(device, endpoint)
self.device = device
self.endpoint = endpoint
self.clusters = self.EMPTY_LIST
self.clusters = self.consolidate_clusters()
end
#############################################################
@ -53,14 +54,37 @@ class Matter_Plugin
self.device.attribute_updated(endpoint, cluster, attribute, fabric_specific)
end
#############################################################
# consolidate_clusters
#
# Build a consolidated map of all the `CLUSTERS` static vars
# from the inheritance hierarchy
def consolidate_clusters()
def real_super(o) return super(o) end # enclose `super()` in a static function to disable special behavior for super in instances
var ret = {}
var o = self # start with self
while o != nil # when we rich highest class, `super()` returns `nil`
var CL = o.CLUSTERS
for k: CL.keys()
# check if key already exists
if !ret.contains(k) ret[k] = [] end
for attr: CL[k] # iterate on values
if ret[k].find(attr) == nil
ret[k].push(attr)
end
end
end
o = real_super(o)
end
return ret
end
#############################################################
# Which endpoints does it handle (list of numbers)
def get_endpoint()
return self.endpoint
end
def get_cluster_map()
return self.clusters
end
def get_cluster_list(ep)
var ret = []
for k: self.clusters.keys()
@ -69,7 +93,7 @@ class Matter_Plugin
return ret
end
def get_attribute_list(ep, cluster)
return self.clusters.find(cluster, self.EMPTY_LIST)
return self.clusters.find(cluster, [])
end
#############################################################
@ -86,7 +110,41 @@ class Matter_Plugin
#############################################################
# read attribute
def read_attribute(session, ctx)
return nil
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
if cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
if attribute == 0x0000 # ---------- DeviceTypeList / list[DeviceTypeStruct] ----------
var dtl = TLV.Matter_TLV_array()
for dt: self.TYPES.keys()
var d1 = dtl.add_struct()
d1.add_TLV(0, TLV.U2, dt) # DeviceType
d1.add_TLV(1, TLV.U2, self.TYPES[dt]) # Revision
end
return dtl
elif attribute == 0x0001 # ---------- ServerList / list[cluster-id] ----------
var sl = TLV.Matter_TLV_array()
for cl: self.get_cluster_list()
sl.add_TLV(nil, TLV.U4, cl)
end
return sl
elif attribute == 0x0002 # ---------- ClientList / list[cluster-id] ----------
var cl = TLV.Matter_TLV_array()
return cl
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) #
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
return TLV.create_TLV(TLV.U4, 1) # "Initial Release"
end
else
return nil
end
end
#############################################################

View File

@ -24,7 +24,7 @@ class Matter_Plugin end
class Matter_Plugin_Device : Matter_Plugin
static var CLUSTERS = {
0x001D: [0,1,2,3,0xFFFC,0xFFFD], # Descriptor Cluster 9.5 p.453
# 0x001D: inherited # 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
}
@ -34,7 +34,6 @@ class Matter_Plugin_Device : Matter_Plugin
# Constructor
def init(device, endpoint, tasmota_relay_index)
super(self).init(device, endpoint)
self.clusters = self.CLUSTERS
end
#############################################################
@ -46,37 +45,8 @@ class Matter_Plugin_Device : Matter_Plugin
var cluster = ctx.cluster
var attribute = ctx.attribute
if cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
if attribute == 0x0000 # ---------- DeviceTypeList / list[DeviceTypeStruct] ----------
var dtl = TLV.Matter_TLV_array()
for dt: self.TYPES.keys()
var d1 = dtl.add_struct()
d1.add_TLV(0, TLV.U2, dt) # DeviceType
d1.add_TLV(1, TLV.U2, self.TYPES[dt]) # Revision
end
return dtl
elif attribute == 0x0001 # ---------- ServerList / list[cluster-id] ----------
var sl = TLV.Matter_TLV_array()
for cl: self.get_cluster_list()
sl.add_TLV(nil, TLV.U4, cl)
end
return sl
elif attribute == 0x0002 # ---------- ClientList / list[cluster-id] ----------
var cl = TLV.Matter_TLV_array()
cl.add_TLV(nil, TLV.U2, 0x0006)
return cl
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) #
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
return TLV.create_TLV(TLV.U4, 1) # "Initial Release"
end
# ====================================================================================================
elif cluster == 0x0003 # ========== Identify 1.2 p.16 ==========
if cluster == 0x0003 # ========== Identify 1.2 p.16 ==========
if attribute == 0x0000 # ---------- IdentifyTime / u2 ----------
return TLV.create_TLV(TLV.U2, 0) # no identification in progress
elif attribute == 0x0001 # ---------- IdentifyType / enum8 ----------

View File

@ -0,0 +1,266 @@
#
# Matter_Plugin_Light3.be - implements the behavior for a Light with 3 channels (RGB)
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Matter plug-in for core behavior
# dummy declaration for solidification
class Matter_Plugin end
#@ solidify:Matter_Plugin_Light3,weak
class Matter_Plugin_Light3 : Matter_Plugin
static var CLUSTERS = {
# 0x001D: inherited # 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
0x0008: [0,0x0F,0x11,0xFFFC,0xFFFD], # Level Control 1.6 p.57
0x0300: [0,1,7,8,0xF,0x4001,0x400A,0xFFFC,0xFFFD],# Color Control 3.2 p.111
}
static var TYPES = { 0x010D: 2 } # Extended Color Light
var shadow_hue, shadow_bri, shadow_sat
var shadow_onoff # fake status for now # TODO
#############################################################
# Constructor
def init(device, endpoint)
super(self).init(device, endpoint)
self.shadow_hue = 0
# self.get_onoff() # read actual value
# if tasmota_relay_index == nil tasmota_relay_index = 0 end
# self.tasmota_relay_index = tasmota_relay_index
end
#############################################################
# Update shadow
#
def update_shadow()
import light
var light_status = light.get()
var bri = light_status.find('bri', nil)
var hue = light_status.find('hue', nil)
var sat = light_status.find('sat', nil)
var pow = light_status.find('power', nil)
if bri != nil self.shadow_bri = tasmota.scale_uint(bri, 0, 255, 0, 254) end
if hue != nil self.shadow_hue = tasmota.scale_uint(hue, 0, 360, 0, 254) end
if sat != nil self.shadow_sat = tasmota.scale_uint(sat, 0, 255, 0, 254) end
if pow != self.shadow_onoff self.attribute_updated(nil, 0x0006, 0x0000) self.shadow_onoff = pow end
if bri != self.shadow_bri self.attribute_updated(nil, 0x0008, 0x0000) self.shadow_bri = bri end
if hue != self.shadow_hue self.attribute_updated(nil, 0x0300, 0x0000) self.shadow_hue = hue end
if sat != self.shadow_sat self.attribute_updated(nil, 0x0300, 0x0001) self.shadow_sat = sat end
end
# #############################################################
# # Model
# #
# def set_onoff(v)
# tasmota.set_power(self.tasmota_relay_index, bool(v))
# self.get_onoff()
# end
# #############################################################
# # get_onoff
# #
# # Update shadow and signal any change
# def get_onoff()
# var state = tasmota.get_power(self.tasmota_relay_index)
# if state != nil
# if self.shadow_onoff != nil && self.shadow_onoff != bool(state)
# self.onoff_changed() # signal any change
# end
# self.shadow_onoff = state
# end
# if self.shadow_onoff == nil self.shadow_onoff = false end # avoid any `nil` value when initializing
# return self.shadow_onoff
# end
#############################################################
# read an attribute
#
def read_attribute(session, ctx)
import string
var TLV = matter.TLV
var cluster = ctx.cluster
var attribute = ctx.attribute
# ====================================================================================================
if cluster == 0x0003 # ========== Identify 1.2 p.16 ==========
if attribute == 0x0000 # ---------- IdentifyTime / u2 ----------
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) # no features
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
return TLV.create_TLV(TLV.U4, 4) # "new data model format and notation"
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)#
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
return TLV.create_TLV(TLV.U4, 4)# "new data model format and notation"
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
# ====================================================================================================
elif cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
if attribute == 0x0000 # ---------- OnOff / bool ----------
return TLV.create_TLV(TLV.BOOL, self.shadow_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
# ====================================================================================================
elif cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
if attribute == 0x0000 # ---------- CurrentLevel / u1 ----------
return TLV.create_TLV(TLV.U1, 0x88)
elif attribute == 0x000F # ---------- Options / map8 ----------
return TLV.create_TLV(TLV.U1, 0) #
elif attribute == 0x0011 # ---------- OnLevel / u1 ----------
return TLV.create_TLV(TLV.U1, 1) #
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
return TLV.create_TLV(TLV.U4, 0X01) # OnOff
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation"
end
# ====================================================================================================
elif cluster == 0x0300 # ========== Color Control 3.2 p.111 ==========
if attribute == 0x0000 # ---------- CurrentHue / u1 ----------
return TLV.create_TLV(TLV.U1, self.shadow_hue)
elif attribute == 0x0001 # ---------- CurrentSaturation / u2 ----------
return TLV.create_TLV(TLV.U1, self.shadow_sat)
elif attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ----------
return TLV.create_TLV(TLV.U1, 0)
elif attribute == 0x0008 # ---------- ColorMode / u1 ----------
return TLV.create_TLV(TLV.U1, 0)
elif attribute == 0x000F # ---------- Options / u1 ----------
return TLV.create_TLV(TLV.U1, 0)
elif attribute == 0x4001 # ---------- EnhancedColorMode / u1 ----------
return TLV.create_TLV(TLV.U1, 0)
elif attribute == 0x400A # ---------- ColorCapabilities / map2 ----------
return TLV.create_TLV(TLV.U1, 0)
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
return TLV.create_TLV(TLV.U4, 0x01) # HS
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
end
else
return super(self).read_attribute(session, ctx)
end
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
# ====================================================================================================
elif cluster == 0x0004 # ========== Groups 1.3 p.21 ==========
# TODO
return true
# ====================================================================================================
elif cluster == 0x0005 # ========== Scenes 1.4 p.30 ==========
# TODO
return true
# ====================================================================================================
elif cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
if command == 0x0000 # ---------- Off ----------
self.set_onoff(false)
return true
elif command == 0x0001 # ---------- On ----------
self.set_onoff(true)
return true
elif command == 0x0002 # ---------- Toggle ----------
self.set_onoff(!self.get_onoff())
return true
end
# ====================================================================================================
elif cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
if command == 0x0000 # ---------- MoveToLevel ----------
return true
elif command == 0x0001 # ---------- Move ----------
return true
elif command == 0x0002 # ---------- Step ----------
return true
elif command == 0x0003 # ---------- Stop ----------
return true
elif command == 0x0004 # ---------- MoveToLevelWithOnOff ----------
return true
elif command == 0x0005 # ---------- MoveWithOnOff ----------
return true
elif command == 0x0006 # ---------- StepWithOnOff ----------
return true
elif command == 0x0007 # ---------- StopWithOnOff ----------
return true
end
end
end
#############################################################
# Signal that onoff attribute changed
def onoff_changed()
self.attribute_updated(nil, 0x0006, 0x0000) # send to all endpoints
end
#############################################################
# every_second
def every_second()
self.update_shadow() # force reading value and sending subscriptions
end
end
matter.Plugin_Light3 = Matter_Plugin_Light3

View File

@ -26,7 +26,7 @@ class Matter_Plugin end
class Matter_Plugin_OnOff : Matter_Plugin
static var CLUSTERS = {
0x001D: [0,1,2,3,0xFFFC,0xFFFD], # Descriptor Cluster 9.5 p.453
# 0x001D: inherited # 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
@ -42,7 +42,6 @@ class Matter_Plugin_OnOff : Matter_Plugin
# Constructor
def init(device, endpoint, tasmota_relay_index)
super(self).init(device, endpoint)
self.clusters = self.CLUSTERS
self.get_onoff() # read actual value
if tasmota_relay_index == nil tasmota_relay_index = 0 end
self.tasmota_relay_index = tasmota_relay_index
@ -80,37 +79,8 @@ class Matter_Plugin_OnOff : Matter_Plugin
var cluster = ctx.cluster
var attribute = ctx.attribute
if cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
if attribute == 0x0000 # ---------- DeviceTypeList / list[DeviceTypeStruct] ----------
var dtl = TLV.Matter_TLV_array()
for dt: self.TYPES.keys()
var d1 = dtl.add_struct()
d1.add_TLV(0, TLV.U2, dt) # DeviceType
d1.add_TLV(1, TLV.U2, self.TYPES[dt]) # Revision
end
return dtl
elif attribute == 0x0001 # ---------- ServerList / list[cluster-id] ----------
var sl = TLV.Matter_TLV_array()
for cl: self.get_cluster_list()
sl.add_TLV(nil, TLV.U4, cl)
end
return sl
elif attribute == 0x0002 # ---------- ClientList / list[cluster-id] ----------
var cl = TLV.Matter_TLV_array()
cl.add_TLV(nil, TLV.U2, 0x0006)
return cl
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) #
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
return TLV.create_TLV(TLV.U4, 1) # "Initial Release"
end
# ====================================================================================================
elif cluster == 0x0003 # ========== Identify 1.2 p.16 ==========
if cluster == 0x0003 # ========== Identify 1.2 p.16 ==========
if attribute == 0x0000 # ---------- IdentifyTime / u2 ----------
return TLV.create_TLV(TLV.U2, 0) # no identification in progress
elif attribute == 0x0001 # ---------- IdentifyType / enum8 ----------
@ -163,8 +133,9 @@ class Matter_Plugin_OnOff : Matter_Plugin
return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
end
else
return super(self).read_attribute(session, ctx)
end
# no match found, return that the attribute is unsupported end
end
#############################################################

View File

@ -26,7 +26,7 @@ class Matter_Plugin end
class Matter_Plugin_Root : Matter_Plugin
static var CLUSTERS = {
0x001D: [0,1,2,3], # Descriptor Cluster 9.5 p.453
# 0x001D: inherited # 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,0x0A,0x0F,0x12,0x13],# Basic Information Cluster cluster 11.1 p.565
# 0x002A: [0,1,2,3], # OTA Software Update Requestor Cluster Definition 11.19.7 p.762
@ -48,7 +48,6 @@ class Matter_Plugin_Root : Matter_Plugin
# Constructor
def init(device, endpoint)
super(self).init(device, endpoint)
self.clusters = self.CLUSTERS
end
#############################################################
@ -290,36 +289,22 @@ class Matter_Plugin_Root : Matter_Plugin
return TLV.create_TLV(TLV.U4, 0x04) # Put Eth for now which should work for any on-network
end
# ====================================================================================================
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.keys()
var d1 = dtl.add_struct()
d1.add_TLV(0, TLV.U2, dt) # DeviceType
d1.add_TLV(1, TLV.U2, self.TYPES[dt]) # Revision
end
return dtl
elif attribute == 0x0001 # ---------- ServerList / list[cluster-id] ----------
var sl = TLV.Matter_TLV_array()
for cl: self.get_cluster_list()
sl.add_TLV(nil, TLV.U4, cl)
end
return sl
elif attribute == 0x0002 # ---------- ClientList / list[cluster-id] ----------
var cl = TLV.Matter_TLV_array()
return cl
elif attribute == 0x0003 # ---------- PartsList / list[endpoint-no]----------
var eps = self.device.get_active_endpoints(true)
elif cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
# overwrite PartsList
if attribute == 0x0003 # ---------- PartsList / list[endpoint-no]----------
var pl = TLV.Matter_TLV_array()
var eps = self.device.get_active_endpoints(true)
for ep: eps
pl.add_TLV(nil, TLV.U2, ep) # add each endpoint
end
return pl
else
return super(self).read_attribute(session, ctx)
end
else
ctx.status = matter.UNSUPPORTED_CLUSTER
return super(self).read_attribute(session, ctx)
end
# no match found, return that the attribute is unsupported
@ -591,6 +576,9 @@ class Matter_Plugin_Root : Matter_Plugin
if command == 0x0000 # ---------- DefaultOTAProviders ----------
return true # OK
end
else
return super(self).invoke_request(session, val, ctx)
end
end

View File

@ -26,9 +26,9 @@ class Matter_Plugin_Device end
class Matter_Plugin_Temp_Sensor : Matter_Plugin_Device
static var CLUSTERS = {
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
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
# 0x0003: inherited # Identify 1.2 p.16
# 0x0004: inherited # Groups 1.3 p.21
0x0402: [0,1,2], # Temperature Measurement p.97 - no writable
}
static var TYPES = { 0x0302: 2 } # Temperature Sensor, rev 2
@ -41,7 +41,6 @@ class Matter_Plugin_Temp_Sensor : Matter_Plugin_Device
# Constructor
def init(device, endpoint, sensor_filter)
super(self).init(device, endpoint)
self.clusters = self.CLUSTERS
self.tasmota_sensor_filter = sensor_filter
self.tasmota_sensor_matcher = tasmota.Rule_Matcher.parse(sensor_filter)
end

View File

@ -7,200 +7,102 @@
extern const bclass be_class_Matter_Plugin;
/********************************************************************
** Solidified function: read_attribute
** Solidified function: consolidate_clusters
********************************************************************/
be_local_closure(Matter_Plugin_read_attribute, /* name */
be_local_closure(Matter_Plugin_consolidate_clusters, /* name */
be_nested_proto(
4, /* nstack */
3, /* 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(read_attribute),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x4C0C0000, // 0000 LDNIL R3
0x80040600, // 0001 RET 1 R3
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: write_attribute
********************************************************************/
be_local_closure(Matter_Plugin_write_attribute, /* name */
be_nested_proto(
5, /* nstack */
4, /* 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(write_attribute),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x4C100000, // 0000 LDNIL R4
0x80040800, // 0001 RET 1 R4
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
be_local_closure(Matter_Plugin_invoke_request, /* name */
be_nested_proto(
5, /* nstack */
4, /* 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(invoke_request),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x4C100000, // 0000 LDNIL R4
0x80040800, // 0001 RET 1 R4
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: every_second
********************************************************************/
be_local_closure(Matter_Plugin_every_second, /* name */
be_nested_proto(
1, /* nstack */
12, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(every_second),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
0x80000000, // 0000 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: subscribe_attribute
********************************************************************/
be_local_closure(Matter_Plugin_subscribe_attribute, /* name */
be_nested_proto(
6, /* nstack */
5, /* 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(subscribe_attribute),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x4C140000, // 0000 LDNIL R5
0x80040A00, // 0001 RET 1 R5
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: subscribe_event
********************************************************************/
be_local_closure(Matter_Plugin_subscribe_event, /* name */
be_nested_proto(
6, /* nstack */
5, /* 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(subscribe_event),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x4C140000, // 0000 LDNIL R5
0x80040A00, // 0001 RET 1 R5
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: read_event
********************************************************************/
be_local_closure(Matter_Plugin_read_event, /* name */
be_nested_proto(
6, /* nstack */
5, /* 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(read_event),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x4C140000, // 0000 LDNIL R5
0x80040A00, // 0001 RET 1 R5
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: get_endpoint
********************************************************************/
be_local_closure(Matter_Plugin_get_endpoint, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(endpoint),
1, /* has sup protos */
( &(const struct bproto*[ 1]) {
be_nested_proto(
3, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(real_super),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040003, // 0000 GETGBL R1 G3
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
),
}),
be_str_weak(get_endpoint),
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(CLUSTERS),
/* K1 */ be_nested_str_weak(keys),
/* K2 */ be_nested_str_weak(contains),
/* K3 */ be_nested_str_weak(find),
/* K4 */ be_nested_str_weak(push),
/* K5 */ be_nested_str_weak(stop_iteration),
}),
be_str_weak(consolidate_clusters),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x80040200, // 0001 RET 1 R1
( &(const binstruction[53]) { /* code */
0x84040000, // 0000 CLOSURE R1 P0
0x60080013, // 0001 GETGBL R2 G19
0x7C080000, // 0002 CALL R2 0
0x5C0C0000, // 0003 MOVE R3 R0
0x4C100000, // 0004 LDNIL R4
0x20100604, // 0005 NE R4 R3 R4
0x7812002C, // 0006 JMPF R4 #0034
0x88100700, // 0007 GETMBR R4 R3 K0
0x60140010, // 0008 GETGBL R5 G16
0x8C180901, // 0009 GETMET R6 R4 K1
0x7C180200, // 000A CALL R6 1
0x7C140200, // 000B CALL R5 1
0xA802001E, // 000C EXBLK 0 #002C
0x5C180A00, // 000D MOVE R6 R5
0x7C180000, // 000E CALL R6 0
0x8C1C0502, // 000F GETMET R7 R2 K2
0x5C240C00, // 0010 MOVE R9 R6
0x7C1C0400, // 0011 CALL R7 2
0x741E0002, // 0012 JMPT R7 #0016
0x601C0012, // 0013 GETGBL R7 G18
0x7C1C0000, // 0014 CALL R7 0
0x98080C07, // 0015 SETIDX R2 R6 R7
0x601C0010, // 0016 GETGBL R7 G16
0x94200806, // 0017 GETIDX R8 R4 R6
0x7C1C0200, // 0018 CALL R7 1
0xA802000D, // 0019 EXBLK 0 #0028
0x5C200E00, // 001A MOVE R8 R7
0x7C200000, // 001B CALL R8 0
0x94240406, // 001C GETIDX R9 R2 R6
0x8C241303, // 001D GETMET R9 R9 K3
0x5C2C1000, // 001E MOVE R11 R8
0x7C240400, // 001F CALL R9 2
0x4C280000, // 0020 LDNIL R10
0x1C24120A, // 0021 EQ R9 R9 R10
0x78260003, // 0022 JMPF R9 #0027
0x94240406, // 0023 GETIDX R9 R2 R6
0x8C241304, // 0024 GETMET R9 R9 K4
0x5C2C1000, // 0025 MOVE R11 R8
0x7C240400, // 0026 CALL R9 2
0x7001FFF1, // 0027 JMP #001A
0x581C0005, // 0028 LDCONST R7 K5
0xAC1C0200, // 0029 CATCH R7 1 0
0xB0080000, // 002A RAISE 2 R0 R0
0x7001FFE0, // 002B JMP #000D
0x58140005, // 002C LDCONST R5 K5
0xAC140200, // 002D CATCH R5 1 0
0xB0080000, // 002E RAISE 2 R0 R0
0x5C140200, // 002F MOVE R5 R1
0x5C180600, // 0030 MOVE R6 R3
0x7C140200, // 0031 CALL R5 1
0x5C0C0A00, // 0032 MOVE R3 R5
0x7001FFCF, // 0033 JMP #0004
0x80040400, // 0034 RET 1 R2
})
)
);
@ -212,7 +114,7 @@ be_local_closure(Matter_Plugin_get_endpoint, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_init, /* name */
be_nested_proto(
4, /* nstack */
5, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
@ -224,16 +126,152 @@ be_local_closure(Matter_Plugin_init, /* name */
/* K0 */ be_nested_str_weak(device),
/* K1 */ be_nested_str_weak(endpoint),
/* K2 */ be_nested_str_weak(clusters),
/* K3 */ be_nested_str_weak(EMPTY_LIST),
/* K3 */ be_nested_str_weak(consolidate_clusters),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
( &(const binstruction[ 6]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
0x90020202, // 0001 SETMBR R0 K1 R2
0x880C0103, // 0002 GETMBR R3 R0 K3
0x90020403, // 0003 SETMBR R0 K2 R3
0x80000000, // 0004 RET 0
0x8C0C0103, // 0002 GETMET R3 R0 K3
0x7C0C0200, // 0003 CALL R3 1
0x90020403, // 0004 SETMBR R0 K2 R3
0x80000000, // 0005 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
be_local_closure(Matter_Plugin_read_attribute, /* name */
be_nested_proto(
15, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[18]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
/* K1 */ be_nested_str_weak(TLV),
/* K2 */ be_nested_str_weak(cluster),
/* K3 */ be_nested_str_weak(attribute),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(Matter_TLV_array),
/* K6 */ be_nested_str_weak(TYPES),
/* K7 */ be_nested_str_weak(keys),
/* 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),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[93]) { /* code */
0xB80E0000, // 0000 GETNGBL R3 K0
0x880C0701, // 0001 GETMBR R3 R3 K1
0x88100502, // 0002 GETMBR R4 R2 K2
0x88140503, // 0003 GETMBR R5 R2 K3
0x541A001C, // 0004 LDINT R6 29
0x1C180806, // 0005 EQ R6 R4 R6
0x781A0052, // 0006 JMPF R6 #005A
0x1C180B04, // 0007 EQ R6 R5 K4
0x781A001C, // 0008 JMPF R6 #0026
0x8C180705, // 0009 GETMET R6 R3 K5
0x7C180200, // 000A CALL R6 1
0x601C0010, // 000B GETGBL R7 G16
0x88200106, // 000C GETMBR R8 R0 K6
0x8C201107, // 000D GETMET R8 R8 K7
0x7C200200, // 000E CALL R8 1
0x7C1C0200, // 000F CALL R7 1
0xA802000F, // 0010 EXBLK 0 #0021
0x5C200E00, // 0011 MOVE R8 R7
0x7C200000, // 0012 CALL R8 0
0x8C240D08, // 0013 GETMET R9 R6 K8
0x7C240200, // 0014 CALL R9 1
0x8C281309, // 0015 GETMET R10 R9 K9
0x58300004, // 0016 LDCONST R12 K4
0x8834070A, // 0017 GETMBR R13 R3 K10
0x5C381000, // 0018 MOVE R14 R8
0x7C280800, // 0019 CALL R10 4
0x8C281309, // 001A GETMET R10 R9 K9
0x5830000B, // 001B LDCONST R12 K11
0x8834070A, // 001C GETMBR R13 R3 K10
0x88380106, // 001D GETMBR R14 R0 K6
0x94381C08, // 001E GETIDX R14 R14 R8
0x7C280800, // 001F CALL R10 4
0x7001FFEF, // 0020 JMP #0011
0x581C000C, // 0021 LDCONST R7 K12
0xAC1C0200, // 0022 CATCH R7 1 0
0xB0080000, // 0023 RAISE 2 R0 R0
0x80040C00, // 0024 RET 1 R6
0x70020032, // 0025 JMP #0059
0x1C180B0B, // 0026 EQ R6 R5 K11
0x781A0013, // 0027 JMPF R6 #003C
0x8C180705, // 0028 GETMET R6 R3 K5
0x7C180200, // 0029 CALL R6 1
0x601C0010, // 002A GETGBL R7 G16
0x8C20010D, // 002B GETMET R8 R0 K13
0x7C200200, // 002C CALL R8 1
0x7C1C0200, // 002D CALL R7 1
0xA8020007, // 002E EXBLK 0 #0037
0x5C200E00, // 002F MOVE R8 R7
0x7C200000, // 0030 CALL R8 0
0x8C240D09, // 0031 GETMET R9 R6 K9
0x4C2C0000, // 0032 LDNIL R11
0x8830070E, // 0033 GETMBR R12 R3 K14
0x5C341000, // 0034 MOVE R13 R8
0x7C240800, // 0035 CALL R9 4
0x7001FFF7, // 0036 JMP #002F
0x581C000C, // 0037 LDCONST R7 K12
0xAC1C0200, // 0038 CATCH R7 1 0
0xB0080000, // 0039 RAISE 2 R0 R0
0x80040C00, // 003A RET 1 R6
0x7002001C, // 003B JMP #0059
0x1C180B0F, // 003C EQ R6 R5 K15
0x781A0003, // 003D JMPF R6 #0042
0x8C180705, // 003E GETMET R6 R3 K5
0x7C180200, // 003F CALL R6 1
0x80040C00, // 0040 RET 1 R6
0x70020016, // 0041 JMP #0059
0x1C180B10, // 0042 EQ R6 R5 K16
0x781A0003, // 0043 JMPF R6 #0048
0x8C180705, // 0044 GETMET R6 R3 K5
0x7C180200, // 0045 CALL R6 1
0x80040C00, // 0046 RET 1 R6
0x70020010, // 0047 JMP #0059
0x541AFFFB, // 0048 LDINT R6 65532
0x1C180A06, // 0049 EQ R6 R5 R6
0x781A0005, // 004A JMPF R6 #0051
0x8C180711, // 004B GETMET R6 R3 K17
0x8820070E, // 004C GETMBR R8 R3 K14
0x58240004, // 004D LDCONST R9 K4
0x7C180600, // 004E CALL R6 3
0x80040C00, // 004F RET 1 R6
0x70020007, // 0050 JMP #0059
0x541AFFFC, // 0051 LDINT R6 65533
0x1C180A06, // 0052 EQ R6 R5 R6
0x781A0004, // 0053 JMPF R6 #0059
0x8C180711, // 0054 GETMET R6 R3 K17
0x8820070E, // 0055 GETMBR R8 R3 K14
0x5824000B, // 0056 LDCONST R9 K11
0x7C180600, // 0057 CALL R6 3
0x80040C00, // 0058 RET 1 R6
0x70020001, // 0059 JMP #005C
0x4C180000, // 005A LDNIL R6
0x80040C00, // 005B RET 1 R6
0x80000000, // 005C RET 0
})
)
);
@ -283,6 +321,55 @@ be_local_closure(Matter_Plugin_has, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: subscribe_attribute
********************************************************************/
be_local_closure(Matter_Plugin_subscribe_attribute, /* name */
be_nested_proto(
6, /* nstack */
5, /* 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(subscribe_attribute),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x4C140000, // 0000 LDNIL R5
0x80040A00, // 0001 RET 1 R5
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: every_second
********************************************************************/
be_local_closure(Matter_Plugin_every_second, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(every_second),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
0x80000000, // 0000 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: timed_request
********************************************************************/
@ -308,39 +395,6 @@ be_local_closure(Matter_Plugin_timed_request, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: get_attribute_list
********************************************************************/
be_local_closure(Matter_Plugin_get_attribute_list, /* name */
be_nested_proto(
7, /* 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(clusters),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(EMPTY_LIST),
}),
be_str_weak(get_attribute_list),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
0x880C0100, // 0000 GETMBR R3 R0 K0
0x8C0C0701, // 0001 GETMET R3 R3 K1
0x5C140400, // 0002 MOVE R5 R2
0x88180102, // 0003 GETMBR R6 R0 K2
0x7C0C0600, // 0004 CALL R3 3
0x80040600, // 0005 RET 1 R3
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: get_cluster_list
********************************************************************/
@ -388,26 +442,107 @@ be_local_closure(Matter_Plugin_get_cluster_list, /* name */
/********************************************************************
** Solidified function: get_cluster_map
** Solidified function: get_attribute_list
********************************************************************/
be_local_closure(Matter_Plugin_get_cluster_map, /* name */
be_local_closure(Matter_Plugin_get_attribute_list, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
7, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(clusters),
/* K1 */ be_nested_str_weak(find),
}),
be_str_weak(get_cluster_map),
be_str_weak(get_attribute_list),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
0x880C0100, // 0000 GETMBR R3 R0 K0
0x8C0C0701, // 0001 GETMET R3 R3 K1
0x5C140400, // 0002 MOVE R5 R2
0x60180012, // 0003 GETGBL R6 G18
0x7C180000, // 0004 CALL R6 0
0x7C0C0600, // 0005 CALL R3 3
0x80040600, // 0006 RET 1 R3
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: read_event
********************************************************************/
be_local_closure(Matter_Plugin_read_event, /* name */
be_nested_proto(
6, /* nstack */
5, /* 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(read_event),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x80040200, // 0001 RET 1 R1
0x4C140000, // 0000 LDNIL R5
0x80040A00, // 0001 RET 1 R5
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: subscribe_event
********************************************************************/
be_local_closure(Matter_Plugin_subscribe_event, /* name */
be_nested_proto(
6, /* nstack */
5, /* 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(subscribe_event),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x4C140000, // 0000 LDNIL R5
0x80040A00, // 0001 RET 1 R5
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: write_attribute
********************************************************************/
be_local_closure(Matter_Plugin_write_attribute, /* name */
be_nested_proto(
5, /* nstack */
4, /* 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(write_attribute),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x4C100000, // 0000 LDNIL R4
0x80040800, // 0001 RET 1 R4
})
)
);
@ -477,41 +612,99 @@ be_local_closure(Matter_Plugin_parse_sensors, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: get_endpoint
********************************************************************/
be_local_closure(Matter_Plugin_get_endpoint, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(endpoint),
}),
be_str_weak(get_endpoint),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x80040200, // 0001 RET 1 R1
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
be_local_closure(Matter_Plugin_invoke_request, /* name */
be_nested_proto(
5, /* nstack */
4, /* 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(invoke_request),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x4C100000, // 0000 LDNIL R4
0x80040800, // 0001 RET 1 R4
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified class: Matter_Plugin
********************************************************************/
be_local_class(Matter_Plugin,
3,
NULL,
be_nested_map(21,
be_nested_map(20,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_read_attribute_closure) },
{ be_const_key_weak(parse_sensors, 13), be_const_closure(Matter_Plugin_parse_sensors_closure) },
{ be_const_key_weak(has, -1), be_const_closure(Matter_Plugin_has_closure) },
{ be_const_key_weak(every_second, -1), be_const_closure(Matter_Plugin_every_second_closure) },
{ be_const_key_weak(write_attribute, 9), be_const_closure(Matter_Plugin_write_attribute_closure) },
{ be_const_key_weak(subscribe_event, -1), be_const_closure(Matter_Plugin_subscribe_event_closure) },
{ be_const_key_weak(device, -1), be_const_var(0) },
{ be_const_key_weak(endpoint, -1), be_const_var(1) },
{ be_const_key_weak(EMPTY_LIST, -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_weak(attribute_updated, 20), be_const_closure(Matter_Plugin_attribute_updated_closure) },
{ be_const_key_weak(get_endpoint, 2), be_const_closure(Matter_Plugin_get_endpoint_closure) },
{ be_const_key_weak(EMPTY_MAP, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(0,
( (struct bmapnode*) &(const bmapnode[]) {
})) ) } )) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_init_closure) },
{ be_const_key_weak(get_cluster_map, 17), be_const_closure(Matter_Plugin_get_cluster_map_closure) },
{ be_const_key_weak(invoke_request, 18), be_const_closure(Matter_Plugin_invoke_request_closure) },
{ be_const_key_weak(read_event, 1), be_const_closure(Matter_Plugin_read_event_closure) },
{ be_const_key_weak(get_cluster_list, -1), be_const_closure(Matter_Plugin_get_cluster_list_closure) },
{ be_const_key_weak(get_attribute_list, -1), be_const_closure(Matter_Plugin_get_attribute_list_closure) },
{ be_const_key_weak(timed_request, -1), be_const_closure(Matter_Plugin_timed_request_closure) },
{ be_const_key_weak(consolidate_clusters, -1), be_const_closure(Matter_Plugin_consolidate_clusters_closure) },
{ be_const_key_weak(clusters, -1), be_const_var(2) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_read_attribute_closure) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_invoke_request_closure) },
{ be_const_key_weak(subscribe_attribute, -1), be_const_closure(Matter_Plugin_subscribe_attribute_closure) },
{ be_const_key_weak(every_second, -1), be_const_closure(Matter_Plugin_every_second_closure) },
{ be_const_key_weak(timed_request, 1), be_const_closure(Matter_Plugin_timed_request_closure) },
{ be_const_key_weak(get_cluster_list, 3), be_const_closure(Matter_Plugin_get_cluster_list_closure) },
{ be_const_key_weak(endpoint, -1), be_const_var(1) },
{ be_const_key_weak(get_attribute_list, -1), be_const_closure(Matter_Plugin_get_attribute_list_closure) },
{ be_const_key_weak(read_event, -1), be_const_closure(Matter_Plugin_read_event_closure) },
{ be_const_key_weak(device, -1), be_const_var(0) },
{ be_const_key_weak(subscribe_event, -1), be_const_closure(Matter_Plugin_subscribe_event_closure) },
{ be_const_key_weak(attribute_updated, 18), be_const_closure(Matter_Plugin_attribute_updated_closure) },
{ be_const_key_weak(CLUSTERS, -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(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_weak(init, 13), be_const_closure(Matter_Plugin_init_closure) },
{ be_const_key_weak(parse_sensors, -1), be_const_closure(Matter_Plugin_parse_sensors_closure) },
{ be_const_key_weak(get_endpoint, -1), be_const_closure(Matter_Plugin_get_endpoint_closure) },
{ be_const_key_weak(write_attribute, 19), be_const_closure(Matter_Plugin_write_attribute_closure) },
{ be_const_key_weak(has, -1), be_const_closure(Matter_Plugin_has_closure) },
})),
be_str_weak(Matter_Plugin)
);

View File

@ -91,7 +91,7 @@ be_local_closure(Matter_Plugin_Device_invoke_request, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
be_nested_proto(
16, /* nstack */
11, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
@ -99,199 +99,100 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[21]) { /* constants */
( &(const bvalue[13]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV),
/* K3 */ be_nested_str_weak(cluster),
/* K4 */ be_nested_str_weak(attribute),
/* K5 */ be_const_int(0),
/* K6 */ be_nested_str_weak(Matter_TLV_array),
/* K7 */ be_nested_str_weak(TYPES),
/* 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(read_attribute),
/* K5 */ be_const_int(3),
/* K6 */ be_const_int(0),
/* K7 */ be_nested_str_weak(create_TLV),
/* K8 */ be_nested_str_weak(U2),
/* K9 */ be_const_int(1),
/* K10 */ be_nested_str_weak(U1),
/* K11 */ be_nested_str_weak(U4),
/* K12 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[167]) { /* code */
( &(const binstruction[76]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x88100902, // 0002 GETMBR R4 R4 K2
0x88140503, // 0003 GETMBR R5 R2 K3
0x88180504, // 0004 GETMBR R6 R2 K4
0x541E001C, // 0005 LDINT R7 29
0x1C1C0A07, // 0006 EQ R7 R5 R7
0x781E0057, // 0007 JMPF R7 #0060
0x1C1C0D05, // 0008 EQ R7 R6 K5
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
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
0x70020045, // 005F JMP #00A6
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
0x70020021, // 0083 JMP #00A6
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
0x70020007, // 009D JMP #00A6
0x601C0003, // 009E GETGBL R7 G3
0x5C200000, // 009F MOVE R8 R0
0x7C1C0200, // 00A0 CALL R7 1
0x8C1C0F14, // 00A1 GETMET R7 R7 K20
0x5C240200, // 00A2 MOVE R9 R1
0x5C280400, // 00A3 MOVE R10 R2
0x7C1C0600, // 00A4 CALL R7 3
0x80040E00, // 00A5 RET 1 R7
0x80000000, // 00A6 RET 0
0x1C1C0B05, // 0005 EQ R7 R5 K5
0x781E0021, // 0006 JMPF R7 #0029
0x1C1C0D06, // 0007 EQ R7 R6 K6
0x781E0005, // 0008 JMPF R7 #000F
0x8C1C0907, // 0009 GETMET R7 R4 K7
0x88240908, // 000A GETMBR R9 R4 K8
0x58280006, // 000B LDCONST R10 K6
0x7C1C0600, // 000C CALL R7 3
0x80040E00, // 000D RET 1 R7
0x70020018, // 000E JMP #0028
0x1C1C0D09, // 000F EQ R7 R6 K9
0x781E0005, // 0010 JMPF R7 #0017
0x8C1C0907, // 0011 GETMET R7 R4 K7
0x8824090A, // 0012 GETMBR R9 R4 K10
0x58280006, // 0013 LDCONST R10 K6
0x7C1C0600, // 0014 CALL R7 3
0x80040E00, // 0015 RET 1 R7
0x70020010, // 0016 JMP #0028
0x541EFFFB, // 0017 LDINT R7 65532
0x1C1C0C07, // 0018 EQ R7 R6 R7
0x781E0005, // 0019 JMPF R7 #0020
0x8C1C0907, // 001A GETMET R7 R4 K7
0x8824090B, // 001B GETMBR R9 R4 K11
0x58280006, // 001C LDCONST R10 K6
0x7C1C0600, // 001D CALL R7 3
0x80040E00, // 001E RET 1 R7
0x70020007, // 001F JMP #0028
0x541EFFFC, // 0020 LDINT R7 65533
0x1C1C0C07, // 0021 EQ R7 R6 R7
0x781E0004, // 0022 JMPF R7 #0028
0x8C1C0907, // 0023 GETMET R7 R4 K7
0x8824090B, // 0024 GETMBR R9 R4 K11
0x542A0003, // 0025 LDINT R10 4
0x7C1C0600, // 0026 CALL R7 3
0x80040E00, // 0027 RET 1 R7
0x70020021, // 0028 JMP #004B
0x541E0003, // 0029 LDINT R7 4
0x1C1C0A07, // 002A EQ R7 R5 R7
0x781E0016, // 002B JMPF R7 #0043
0x1C1C0D06, // 002C EQ R7 R6 K6
0x781E0002, // 002D JMPF R7 #0031
0x4C1C0000, // 002E LDNIL R7
0x80040E00, // 002F RET 1 R7
0x70020010, // 0030 JMP #0042
0x541EFFFB, // 0031 LDINT R7 65532
0x1C1C0C07, // 0032 EQ R7 R6 R7
0x781E0005, // 0033 JMPF R7 #003A
0x8C1C0907, // 0034 GETMET R7 R4 K7
0x8824090B, // 0035 GETMBR R9 R4 K11
0x58280006, // 0036 LDCONST R10 K6
0x7C1C0600, // 0037 CALL R7 3
0x80040E00, // 0038 RET 1 R7
0x70020007, // 0039 JMP #0042
0x541EFFFC, // 003A LDINT R7 65533
0x1C1C0C07, // 003B EQ R7 R6 R7
0x781E0004, // 003C JMPF R7 #0042
0x8C1C0907, // 003D GETMET R7 R4 K7
0x8824090B, // 003E GETMBR R9 R4 K11
0x542A0003, // 003F LDINT R10 4
0x7C1C0600, // 0040 CALL R7 3
0x80040E00, // 0041 RET 1 R7
0x70020007, // 0042 JMP #004B
0x601C0003, // 0043 GETGBL R7 G3
0x5C200000, // 0044 MOVE R8 R0
0x7C1C0200, // 0045 CALL R7 1
0x8C1C0F0C, // 0046 GETMET R7 R7 K12
0x5C240200, // 0047 MOVE R9 R1
0x5C280400, // 0048 MOVE R10 R2
0x7C1C0600, // 0049 CALL R7 3
0x80040E00, // 004A RET 1 R7
0x80000000, // 004B RET 0
})
)
);
@ -311,14 +212,12 @@ be_local_closure(Matter_Plugin_Device_init, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(init),
/* K1 */ be_nested_str_weak(clusters),
/* K2 */ be_nested_str_weak(CLUSTERS),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
( &(const binstruction[ 8]) { /* code */
0x60100003, // 0000 GETGBL R4 G3
0x5C140000, // 0001 MOVE R5 R0
0x7C100200, // 0002 CALL R4 1
@ -326,9 +225,7 @@ be_local_closure(Matter_Plugin_Device_init, /* name */
0x5C180200, // 0004 MOVE R6 R1
0x5C1C0400, // 0005 MOVE R7 R2
0x7C100600, // 0006 CALL R4 3
0x88100102, // 0007 GETMBR R4 R0 K2
0x90020204, // 0008 SETMBR R0 K1 R4
0x80000000, // 0009 RET 0
0x80000000, // 0007 RET 0
})
)
);
@ -353,16 +250,8 @@ be_local_class(Matter_Plugin_Device,
{ be_const_key_weak(invoke_request, 1), be_const_closure(Matter_Plugin_Device_invoke_request_closure) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Device_init_closure) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(3,
be_const_map( * be_nested_map(2,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(3, -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(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,
( (struct bvalue*) &(const bvalue[]) {
@ -370,13 +259,11 @@ 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(3, -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_int(65532),
be_const_int(65533),
})) ) } )) },

View File

@ -0,0 +1,784 @@
/* Solidification of Matter_Plugin_Light3.h */
/********************************************************************\
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
extern const bclass be_class_Matter_Plugin_Light3;
/********************************************************************
** Solidified function: onoff_changed
********************************************************************/
be_local_closure(Matter_Plugin_Light3_onoff_changed, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(attribute_updated),
/* K1 */ be_const_int(0),
}),
be_str_weak(onoff_changed),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0
0x4C0C0000, // 0001 LDNIL R3
0x54120005, // 0002 LDINT R4 6
0x58140001, // 0003 LDCONST R5 K1
0x7C040800, // 0004 CALL R1 4
0x80000000, // 0005 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: init
********************************************************************/
be_local_closure(Matter_Plugin_Light3_init, /* name */
be_nested_proto(
7, /* 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(shadow_hue),
/* K2 */ be_const_int(0),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* 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
0x5C180400, // 0005 MOVE R6 R2
0x7C0C0600, // 0006 CALL R3 3
0x90020302, // 0007 SETMBR R0 K1 K2
0x80000000, // 0008 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
be_nested_proto(
11, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[17]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV),
/* K3 */ be_nested_str_weak(cluster),
/* K4 */ be_nested_str_weak(attribute),
/* K5 */ be_const_int(3),
/* K6 */ be_const_int(0),
/* K7 */ be_nested_str_weak(create_TLV),
/* K8 */ be_nested_str_weak(U2),
/* K9 */ be_const_int(1),
/* K10 */ be_nested_str_weak(U1),
/* K11 */ be_nested_str_weak(U4),
/* K12 */ be_nested_str_weak(BOOL),
/* K13 */ be_nested_str_weak(shadow_onoff),
/* K14 */ be_nested_str_weak(shadow_hue),
/* K15 */ be_nested_str_weak(shadow_sat),
/* K16 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[255]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x88100902, // 0002 GETMBR R4 R4 K2
0x88140503, // 0003 GETMBR R5 R2 K3
0x88180504, // 0004 GETMBR R6 R2 K4
0x1C1C0B05, // 0005 EQ R7 R5 K5
0x781E0021, // 0006 JMPF R7 #0029
0x1C1C0D06, // 0007 EQ R7 R6 K6
0x781E0005, // 0008 JMPF R7 #000F
0x8C1C0907, // 0009 GETMET R7 R4 K7
0x88240908, // 000A GETMBR R9 R4 K8
0x58280006, // 000B LDCONST R10 K6
0x7C1C0600, // 000C CALL R7 3
0x80040E00, // 000D RET 1 R7
0x70020018, // 000E JMP #0028
0x1C1C0D09, // 000F EQ R7 R6 K9
0x781E0005, // 0010 JMPF R7 #0017
0x8C1C0907, // 0011 GETMET R7 R4 K7
0x8824090A, // 0012 GETMBR R9 R4 K10
0x58280006, // 0013 LDCONST R10 K6
0x7C1C0600, // 0014 CALL R7 3
0x80040E00, // 0015 RET 1 R7
0x70020010, // 0016 JMP #0028
0x541EFFFB, // 0017 LDINT R7 65532
0x1C1C0C07, // 0018 EQ R7 R6 R7
0x781E0005, // 0019 JMPF R7 #0020
0x8C1C0907, // 001A GETMET R7 R4 K7
0x8824090B, // 001B GETMBR R9 R4 K11
0x58280006, // 001C LDCONST R10 K6
0x7C1C0600, // 001D CALL R7 3
0x80040E00, // 001E RET 1 R7
0x70020007, // 001F JMP #0028
0x541EFFFC, // 0020 LDINT R7 65533
0x1C1C0C07, // 0021 EQ R7 R6 R7
0x781E0004, // 0022 JMPF R7 #0028
0x8C1C0907, // 0023 GETMET R7 R4 K7
0x8824090B, // 0024 GETMBR R9 R4 K11
0x542A0003, // 0025 LDINT R10 4
0x7C1C0600, // 0026 CALL R7 3
0x80040E00, // 0027 RET 1 R7
0x700200D4, // 0028 JMP #00FE
0x541E0003, // 0029 LDINT R7 4
0x1C1C0A07, // 002A EQ R7 R5 R7
0x781E0016, // 002B JMPF R7 #0043
0x1C1C0D06, // 002C EQ R7 R6 K6
0x781E0002, // 002D JMPF R7 #0031
0x4C1C0000, // 002E LDNIL R7
0x80040E00, // 002F RET 1 R7
0x70020010, // 0030 JMP #0042
0x541EFFFB, // 0031 LDINT R7 65532
0x1C1C0C07, // 0032 EQ R7 R6 R7
0x781E0005, // 0033 JMPF R7 #003A
0x8C1C0907, // 0034 GETMET R7 R4 K7
0x8824090B, // 0035 GETMBR R9 R4 K11
0x58280006, // 0036 LDCONST R10 K6
0x7C1C0600, // 0037 CALL R7 3
0x80040E00, // 0038 RET 1 R7
0x70020007, // 0039 JMP #0042
0x541EFFFC, // 003A LDINT R7 65533
0x1C1C0C07, // 003B EQ R7 R6 R7
0x781E0004, // 003C JMPF R7 #0042
0x8C1C0907, // 003D GETMET R7 R4 K7
0x8824090B, // 003E GETMBR R9 R4 K11
0x542A0003, // 003F LDINT R10 4
0x7C1C0600, // 0040 CALL R7 3
0x80040E00, // 0041 RET 1 R7
0x700200BA, // 0042 JMP #00FE
0x541E0004, // 0043 LDINT R7 5
0x1C1C0A07, // 0044 EQ R7 R5 R7
0x781E0011, // 0045 JMPF R7 #0058
0x541EFFFB, // 0046 LDINT R7 65532
0x1C1C0C07, // 0047 EQ R7 R6 R7
0x781E0005, // 0048 JMPF R7 #004F
0x8C1C0907, // 0049 GETMET R7 R4 K7
0x8824090B, // 004A GETMBR R9 R4 K11
0x58280006, // 004B LDCONST R10 K6
0x7C1C0600, // 004C CALL R7 3
0x80040E00, // 004D RET 1 R7
0x70020007, // 004E JMP #0057
0x541EFFFC, // 004F LDINT R7 65533
0x1C1C0C07, // 0050 EQ R7 R6 R7
0x781E0004, // 0051 JMPF R7 #0057
0x8C1C0907, // 0052 GETMET R7 R4 K7
0x8824090B, // 0053 GETMBR R9 R4 K11
0x542A0003, // 0054 LDINT R10 4
0x7C1C0600, // 0055 CALL R7 3
0x80040E00, // 0056 RET 1 R7
0x700200A5, // 0057 JMP #00FE
0x541E0005, // 0058 LDINT R7 6
0x1C1C0A07, // 0059 EQ R7 R5 R7
0x781E0019, // 005A JMPF R7 #0075
0x1C1C0D06, // 005B EQ R7 R6 K6
0x781E0005, // 005C JMPF R7 #0063
0x8C1C0907, // 005D GETMET R7 R4 K7
0x8824090C, // 005E GETMBR R9 R4 K12
0x8828010D, // 005F GETMBR R10 R0 K13
0x7C1C0600, // 0060 CALL R7 3
0x80040E00, // 0061 RET 1 R7
0x70020010, // 0062 JMP #0074
0x541EFFFB, // 0063 LDINT R7 65532
0x1C1C0C07, // 0064 EQ R7 R6 R7
0x781E0005, // 0065 JMPF R7 #006C
0x8C1C0907, // 0066 GETMET R7 R4 K7
0x8824090B, // 0067 GETMBR R9 R4 K11
0x58280006, // 0068 LDCONST R10 K6
0x7C1C0600, // 0069 CALL R7 3
0x80040E00, // 006A RET 1 R7
0x70020007, // 006B JMP #0074
0x541EFFFC, // 006C LDINT R7 65533
0x1C1C0C07, // 006D EQ R7 R6 R7
0x781E0004, // 006E JMPF R7 #0074
0x8C1C0907, // 006F GETMET R7 R4 K7
0x8824090B, // 0070 GETMBR R9 R4 K11
0x542A0003, // 0071 LDINT R10 4
0x7C1C0600, // 0072 CALL R7 3
0x80040E00, // 0073 RET 1 R7
0x70020088, // 0074 JMP #00FE
0x541E0007, // 0075 LDINT R7 8
0x1C1C0A07, // 0076 EQ R7 R5 R7
0x781E002B, // 0077 JMPF R7 #00A4
0x1C1C0D06, // 0078 EQ R7 R6 K6
0x781E0005, // 0079 JMPF R7 #0080
0x8C1C0907, // 007A GETMET R7 R4 K7
0x8824090A, // 007B GETMBR R9 R4 K10
0x542A0087, // 007C LDINT R10 136
0x7C1C0600, // 007D CALL R7 3
0x80040E00, // 007E RET 1 R7
0x70020022, // 007F JMP #00A3
0x541E000E, // 0080 LDINT R7 15
0x1C1C0C07, // 0081 EQ R7 R6 R7
0x781E0005, // 0082 JMPF R7 #0089
0x8C1C0907, // 0083 GETMET R7 R4 K7
0x8824090A, // 0084 GETMBR R9 R4 K10
0x58280006, // 0085 LDCONST R10 K6
0x7C1C0600, // 0086 CALL R7 3
0x80040E00, // 0087 RET 1 R7
0x70020019, // 0088 JMP #00A3
0x541E0010, // 0089 LDINT R7 17
0x1C1C0C07, // 008A EQ R7 R6 R7
0x781E0005, // 008B JMPF R7 #0092
0x8C1C0907, // 008C GETMET R7 R4 K7
0x8824090A, // 008D GETMBR R9 R4 K10
0x58280009, // 008E LDCONST R10 K9
0x7C1C0600, // 008F CALL R7 3
0x80040E00, // 0090 RET 1 R7
0x70020010, // 0091 JMP #00A3
0x541EFFFB, // 0092 LDINT R7 65532
0x1C1C0C07, // 0093 EQ R7 R6 R7
0x781E0005, // 0094 JMPF R7 #009B
0x8C1C0907, // 0095 GETMET R7 R4 K7
0x8824090B, // 0096 GETMBR R9 R4 K11
0x58280009, // 0097 LDCONST R10 K9
0x7C1C0600, // 0098 CALL R7 3
0x80040E00, // 0099 RET 1 R7
0x70020007, // 009A JMP #00A3
0x541EFFFC, // 009B LDINT R7 65533
0x1C1C0C07, // 009C EQ R7 R6 R7
0x781E0004, // 009D JMPF R7 #00A3
0x8C1C0907, // 009E GETMET R7 R4 K7
0x8824090B, // 009F GETMBR R9 R4 K11
0x542A0004, // 00A0 LDINT R10 5
0x7C1C0600, // 00A1 CALL R7 3
0x80040E00, // 00A2 RET 1 R7
0x70020059, // 00A3 JMP #00FE
0x541E02FF, // 00A4 LDINT R7 768
0x1C1C0A07, // 00A5 EQ R7 R5 R7
0x781E004E, // 00A6 JMPF R7 #00F6
0x1C1C0D06, // 00A7 EQ R7 R6 K6
0x781E0005, // 00A8 JMPF R7 #00AF
0x8C1C0907, // 00A9 GETMET R7 R4 K7
0x8824090A, // 00AA GETMBR R9 R4 K10
0x8828010E, // 00AB GETMBR R10 R0 K14
0x7C1C0600, // 00AC CALL R7 3
0x80040E00, // 00AD RET 1 R7
0x70020045, // 00AE JMP #00F5
0x1C1C0D09, // 00AF EQ R7 R6 K9
0x781E0005, // 00B0 JMPF R7 #00B7
0x8C1C0907, // 00B1 GETMET R7 R4 K7
0x8824090A, // 00B2 GETMBR R9 R4 K10
0x8828010F, // 00B3 GETMBR R10 R0 K15
0x7C1C0600, // 00B4 CALL R7 3
0x80040E00, // 00B5 RET 1 R7
0x7002003D, // 00B6 JMP #00F5
0x541E0006, // 00B7 LDINT R7 7
0x1C1C0C07, // 00B8 EQ R7 R6 R7
0x781E0005, // 00B9 JMPF R7 #00C0
0x8C1C0907, // 00BA GETMET R7 R4 K7
0x8824090A, // 00BB GETMBR R9 R4 K10
0x58280006, // 00BC LDCONST R10 K6
0x7C1C0600, // 00BD CALL R7 3
0x80040E00, // 00BE RET 1 R7
0x70020034, // 00BF JMP #00F5
0x541E0007, // 00C0 LDINT R7 8
0x1C1C0C07, // 00C1 EQ R7 R6 R7
0x781E0005, // 00C2 JMPF R7 #00C9
0x8C1C0907, // 00C3 GETMET R7 R4 K7
0x8824090A, // 00C4 GETMBR R9 R4 K10
0x58280006, // 00C5 LDCONST R10 K6
0x7C1C0600, // 00C6 CALL R7 3
0x80040E00, // 00C7 RET 1 R7
0x7002002B, // 00C8 JMP #00F5
0x541E000E, // 00C9 LDINT R7 15
0x1C1C0C07, // 00CA EQ R7 R6 R7
0x781E0005, // 00CB JMPF R7 #00D2
0x8C1C0907, // 00CC GETMET R7 R4 K7
0x8824090A, // 00CD GETMBR R9 R4 K10
0x58280006, // 00CE LDCONST R10 K6
0x7C1C0600, // 00CF CALL R7 3
0x80040E00, // 00D0 RET 1 R7
0x70020022, // 00D1 JMP #00F5
0x541E4000, // 00D2 LDINT R7 16385
0x1C1C0C07, // 00D3 EQ R7 R6 R7
0x781E0005, // 00D4 JMPF R7 #00DB
0x8C1C0907, // 00D5 GETMET R7 R4 K7
0x8824090A, // 00D6 GETMBR R9 R4 K10
0x58280006, // 00D7 LDCONST R10 K6
0x7C1C0600, // 00D8 CALL R7 3
0x80040E00, // 00D9 RET 1 R7
0x70020019, // 00DA JMP #00F5
0x541E4009, // 00DB LDINT R7 16394
0x1C1C0C07, // 00DC EQ R7 R6 R7
0x781E0005, // 00DD JMPF R7 #00E4
0x8C1C0907, // 00DE GETMET R7 R4 K7
0x8824090A, // 00DF GETMBR R9 R4 K10
0x58280006, // 00E0 LDCONST R10 K6
0x7C1C0600, // 00E1 CALL R7 3
0x80040E00, // 00E2 RET 1 R7
0x70020010, // 00E3 JMP #00F5
0x541EFFFB, // 00E4 LDINT R7 65532
0x1C1C0C07, // 00E5 EQ R7 R6 R7
0x781E0005, // 00E6 JMPF R7 #00ED
0x8C1C0907, // 00E7 GETMET R7 R4 K7
0x8824090B, // 00E8 GETMBR R9 R4 K11
0x58280009, // 00E9 LDCONST R10 K9
0x7C1C0600, // 00EA CALL R7 3
0x80040E00, // 00EB RET 1 R7
0x70020007, // 00EC JMP #00F5
0x541EFFFC, // 00ED LDINT R7 65533
0x1C1C0C07, // 00EE EQ R7 R6 R7
0x781E0004, // 00EF JMPF R7 #00F5
0x8C1C0907, // 00F0 GETMET R7 R4 K7
0x8824090B, // 00F1 GETMBR R9 R4 K11
0x542A0004, // 00F2 LDINT R10 5
0x7C1C0600, // 00F3 CALL R7 3
0x80040E00, // 00F4 RET 1 R7
0x70020007, // 00F5 JMP #00FE
0x601C0003, // 00F6 GETGBL R7 G3
0x5C200000, // 00F7 MOVE R8 R0
0x7C1C0200, // 00F8 CALL R7 1
0x8C1C0F10, // 00F9 GETMET R7 R7 K16
0x5C240200, // 00FA MOVE R9 R1
0x5C280400, // 00FB MOVE R10 R2
0x7C1C0600, // 00FC CALL R7 3
0x80040E00, // 00FD RET 1 R7
0x80000000, // 00FE RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: update_shadow
********************************************************************/
be_local_closure(Matter_Plugin_Light3_update_shadow, /* name */
be_nested_proto(
14, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[16]) { /* constants */
/* K0 */ be_nested_str_weak(light),
/* K1 */ be_nested_str_weak(get),
/* K2 */ be_nested_str_weak(find),
/* K3 */ be_nested_str_weak(bri),
/* K4 */ be_nested_str_weak(hue),
/* K5 */ be_nested_str_weak(sat),
/* K6 */ be_nested_str_weak(power),
/* K7 */ be_nested_str_weak(shadow_bri),
/* K8 */ be_nested_str_weak(tasmota),
/* K9 */ be_nested_str_weak(scale_uint),
/* K10 */ be_const_int(0),
/* K11 */ be_nested_str_weak(shadow_hue),
/* K12 */ be_nested_str_weak(shadow_sat),
/* K13 */ be_nested_str_weak(shadow_onoff),
/* K14 */ be_nested_str_weak(attribute_updated),
/* K15 */ be_const_int(1),
}),
be_str_weak(update_shadow),
&be_const_str_solidified,
( &(const binstruction[92]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x8C080301, // 0001 GETMET R2 R1 K1
0x7C080200, // 0002 CALL R2 1
0x8C0C0502, // 0003 GETMET R3 R2 K2
0x58140003, // 0004 LDCONST R5 K3
0x4C180000, // 0005 LDNIL R6
0x7C0C0600, // 0006 CALL R3 3
0x8C100502, // 0007 GETMET R4 R2 K2
0x58180004, // 0008 LDCONST R6 K4
0x4C1C0000, // 0009 LDNIL R7
0x7C100600, // 000A CALL R4 3
0x8C140502, // 000B GETMET R5 R2 K2
0x581C0005, // 000C LDCONST R7 K5
0x4C200000, // 000D LDNIL R8
0x7C140600, // 000E CALL R5 3
0x8C180502, // 000F GETMET R6 R2 K2
0x58200006, // 0010 LDCONST R8 K6
0x4C240000, // 0011 LDNIL R9
0x7C180600, // 0012 CALL R6 3
0x4C1C0000, // 0013 LDNIL R7
0x201C0607, // 0014 NE R7 R3 R7
0x781E0008, // 0015 JMPF R7 #001F
0xB81E1000, // 0016 GETNGBL R7 K8
0x8C1C0F09, // 0017 GETMET R7 R7 K9
0x5C240600, // 0018 MOVE R9 R3
0x5828000A, // 0019 LDCONST R10 K10
0x542E00FE, // 001A LDINT R11 255
0x5830000A, // 001B LDCONST R12 K10
0x543600FD, // 001C LDINT R13 254
0x7C1C0C00, // 001D CALL R7 6
0x90020E07, // 001E SETMBR R0 K7 R7
0x4C1C0000, // 001F LDNIL R7
0x201C0807, // 0020 NE R7 R4 R7
0x781E0008, // 0021 JMPF R7 #002B
0xB81E1000, // 0022 GETNGBL R7 K8
0x8C1C0F09, // 0023 GETMET R7 R7 K9
0x5C240800, // 0024 MOVE R9 R4
0x5828000A, // 0025 LDCONST R10 K10
0x542E0167, // 0026 LDINT R11 360
0x5830000A, // 0027 LDCONST R12 K10
0x543600FD, // 0028 LDINT R13 254
0x7C1C0C00, // 0029 CALL R7 6
0x90021607, // 002A SETMBR R0 K11 R7
0x4C1C0000, // 002B LDNIL R7
0x201C0A07, // 002C NE R7 R5 R7
0x781E0008, // 002D JMPF R7 #0037
0xB81E1000, // 002E GETNGBL R7 K8
0x8C1C0F09, // 002F GETMET R7 R7 K9
0x5C240A00, // 0030 MOVE R9 R5
0x5828000A, // 0031 LDCONST R10 K10
0x542E00FE, // 0032 LDINT R11 255
0x5830000A, // 0033 LDCONST R12 K10
0x543600FD, // 0034 LDINT R13 254
0x7C1C0C00, // 0035 CALL R7 6
0x90021807, // 0036 SETMBR R0 K12 R7
0x881C010D, // 0037 GETMBR R7 R0 K13
0x201C0C07, // 0038 NE R7 R6 R7
0x781E0005, // 0039 JMPF R7 #0040
0x8C1C010E, // 003A GETMET R7 R0 K14
0x4C240000, // 003B LDNIL R9
0x542A0005, // 003C LDINT R10 6
0x582C000A, // 003D LDCONST R11 K10
0x7C1C0800, // 003E CALL R7 4
0x90021A06, // 003F SETMBR R0 K13 R6
0x881C0107, // 0040 GETMBR R7 R0 K7
0x201C0607, // 0041 NE R7 R3 R7
0x781E0005, // 0042 JMPF R7 #0049
0x8C1C010E, // 0043 GETMET R7 R0 K14
0x4C240000, // 0044 LDNIL R9
0x542A0007, // 0045 LDINT R10 8
0x582C000A, // 0046 LDCONST R11 K10
0x7C1C0800, // 0047 CALL R7 4
0x90020E03, // 0048 SETMBR R0 K7 R3
0x881C010B, // 0049 GETMBR R7 R0 K11
0x201C0807, // 004A NE R7 R4 R7
0x781E0005, // 004B JMPF R7 #0052
0x8C1C010E, // 004C GETMET R7 R0 K14
0x4C240000, // 004D LDNIL R9
0x542A02FF, // 004E LDINT R10 768
0x582C000A, // 004F LDCONST R11 K10
0x7C1C0800, // 0050 CALL R7 4
0x90021604, // 0051 SETMBR R0 K11 R4
0x881C010C, // 0052 GETMBR R7 R0 K12
0x201C0A07, // 0053 NE R7 R5 R7
0x781E0005, // 0054 JMPF R7 #005B
0x8C1C010E, // 0055 GETMET R7 R0 K14
0x4C240000, // 0056 LDNIL R9
0x542A02FF, // 0057 LDINT R10 768
0x582C000F, // 0058 LDCONST R11 K15
0x7C1C0800, // 0059 CALL R7 4
0x90021805, // 005A SETMBR R0 K12 R5
0x80000000, // 005B RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: every_second
********************************************************************/
be_local_closure(Matter_Plugin_Light3_every_second, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(update_shadow),
}),
be_str_weak(every_second),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0
0x7C040200, // 0001 CALL R1 1
0x80000000, // 0002 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
be_local_closure(Matter_Plugin_Light3_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[13]) { /* 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(set_onoff),
/* K11 */ be_const_int(2),
/* K12 */ be_nested_str_weak(get_onoff),
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
( &(const binstruction[119]) { /* 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
0x70020058, // 001C JMP #0076
0x541E0003, // 001D LDINT R7 4
0x1C1C0A07, // 001E EQ R7 R5 R7
0x781E0002, // 001F JMPF R7 #0023
0x501C0200, // 0020 LDBOOL R7 1 0
0x80040E00, // 0021 RET 1 R7
0x70020052, // 0022 JMP #0076
0x541E0004, // 0023 LDINT R7 5
0x1C1C0A07, // 0024 EQ R7 R5 R7
0x781E0002, // 0025 JMPF R7 #0029
0x501C0200, // 0026 LDBOOL R7 1 0
0x80040E00, // 0027 RET 1 R7
0x7002004C, // 0028 JMP #0076
0x541E0005, // 0029 LDINT R7 6
0x1C1C0A07, // 002A EQ R7 R5 R7
0x781E001B, // 002B JMPF R7 #0048
0x1C1C0D05, // 002C EQ R7 R6 K5
0x781E0005, // 002D JMPF R7 #0034
0x8C1C010A, // 002E GETMET R7 R0 K10
0x50240000, // 002F LDBOOL R9 0 0
0x7C1C0400, // 0030 CALL R7 2
0x501C0200, // 0031 LDBOOL R7 1 0
0x80040E00, // 0032 RET 1 R7
0x70020012, // 0033 JMP #0047
0x1C1C0D06, // 0034 EQ R7 R6 K6
0x781E0005, // 0035 JMPF R7 #003C
0x8C1C010A, // 0036 GETMET R7 R0 K10
0x50240200, // 0037 LDBOOL R9 1 0
0x7C1C0400, // 0038 CALL R7 2
0x501C0200, // 0039 LDBOOL R7 1 0
0x80040E00, // 003A RET 1 R7
0x7002000A, // 003B JMP #0047
0x1C1C0D0B, // 003C EQ R7 R6 K11
0x781E0008, // 003D JMPF R7 #0047
0x8C1C010A, // 003E GETMET R7 R0 K10
0x8C24010C, // 003F GETMET R9 R0 K12
0x7C240200, // 0040 CALL R9 1
0x78260000, // 0041 JMPF R9 #0043
0x50240001, // 0042 LDBOOL R9 0 1
0x50240200, // 0043 LDBOOL R9 1 0
0x7C1C0400, // 0044 CALL R7 2
0x501C0200, // 0045 LDBOOL R7 1 0
0x80040E00, // 0046 RET 1 R7
0x7002002D, // 0047 JMP #0076
0x541E0007, // 0048 LDINT R7 8
0x1C1C0A07, // 0049 EQ R7 R5 R7
0x781E002A, // 004A JMPF R7 #0076
0x1C1C0D05, // 004B EQ R7 R6 K5
0x781E0002, // 004C JMPF R7 #0050
0x501C0200, // 004D LDBOOL R7 1 0
0x80040E00, // 004E RET 1 R7
0x70020025, // 004F JMP #0076
0x1C1C0D06, // 0050 EQ R7 R6 K6
0x781E0002, // 0051 JMPF R7 #0055
0x501C0200, // 0052 LDBOOL R7 1 0
0x80040E00, // 0053 RET 1 R7
0x70020020, // 0054 JMP #0076
0x1C1C0D0B, // 0055 EQ R7 R6 K11
0x781E0002, // 0056 JMPF R7 #005A
0x501C0200, // 0057 LDBOOL R7 1 0
0x80040E00, // 0058 RET 1 R7
0x7002001B, // 0059 JMP #0076
0x1C1C0D04, // 005A EQ R7 R6 K4
0x781E0002, // 005B JMPF R7 #005F
0x501C0200, // 005C LDBOOL R7 1 0
0x80040E00, // 005D RET 1 R7
0x70020016, // 005E JMP #0076
0x541E0003, // 005F LDINT R7 4
0x1C1C0C07, // 0060 EQ R7 R6 R7
0x781E0002, // 0061 JMPF R7 #0065
0x501C0200, // 0062 LDBOOL R7 1 0
0x80040E00, // 0063 RET 1 R7
0x70020010, // 0064 JMP #0076
0x541E0004, // 0065 LDINT R7 5
0x1C1C0C07, // 0066 EQ R7 R6 R7
0x781E0002, // 0067 JMPF R7 #006B
0x501C0200, // 0068 LDBOOL R7 1 0
0x80040E00, // 0069 RET 1 R7
0x7002000A, // 006A JMP #0076
0x541E0005, // 006B LDINT R7 6
0x1C1C0C07, // 006C EQ R7 R6 R7
0x781E0002, // 006D JMPF R7 #0071
0x501C0200, // 006E LDBOOL R7 1 0
0x80040E00, // 006F RET 1 R7
0x70020004, // 0070 JMP #0076
0x541E0006, // 0071 LDINT R7 7
0x1C1C0C07, // 0072 EQ R7 R6 R7
0x781E0001, // 0073 JMPF R7 #0076
0x501C0200, // 0074 LDBOOL R7 1 0
0x80040E00, // 0075 RET 1 R7
0x80000000, // 0076 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified class: Matter_Plugin_Light3
********************************************************************/
extern const bclass be_class_Matter_Plugin;
be_local_class(Matter_Plugin_Light3,
4,
&be_class_Matter_Plugin,
be_nested_map(12,
( (struct bmapnode*) &(const bmapnode[]) {
{ 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(269, -1), be_const_int(2) },
})) ) } )) },
{ be_const_key_weak(shadow_bri, 7), be_const_var(1) },
{ be_const_key_weak(onoff_changed, 0), be_const_closure(Matter_Plugin_Light3_onoff_changed_closure) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Light3_init_closure) },
{ be_const_key_weak(shadow_hue, 8), be_const_var(0) },
{ be_const_key_weak(shadow_sat, -1), be_const_var(2) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Light3_read_attribute_closure) },
{ be_const_key_weak(update_shadow, -1), be_const_closure(Matter_Plugin_Light3_update_shadow_closure) },
{ be_const_key_weak(shadow_onoff, -1), be_const_var(3) },
{ be_const_key_weak(every_second, -1), be_const_closure(Matter_Plugin_Light3_every_second_closure) },
{ be_const_key_weak(CLUSTERS, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(6, 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(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(768, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(9,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(7),
be_const_int(8),
be_const_int(15),
be_const_int(16385),
be_const_int(16394),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(8, -1), 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),
be_const_int(15),
be_const_int(17),
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(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, -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(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(8,
( (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_int(65532),
be_const_int(65533),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Light3_invoke_request_closure) },
})),
be_str_weak(Matter_Plugin_Light3)
);
/*******************************************************************/
void be_load_Matter_Plugin_Light3_class(bvm *vm) {
be_pushntvclass(vm, &be_class_Matter_Plugin_Light3);
be_setglobal(vm, "Matter_Plugin_Light3");
be_pop(vm, 1);
}
/********************************************************************/
/* End of solidification */

View File

@ -294,7 +294,7 @@ be_local_closure(Matter_Plugin_OnOff_set_onoff, /* name */
********************************************************************/
be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */
be_nested_proto(
16, /* nstack */
12, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
@ -302,289 +302,200 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[22]) { /* constants */
( &(const bvalue[15]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV),
/* K3 */ be_nested_str_weak(cluster),
/* K4 */ be_nested_str_weak(attribute),
/* K5 */ be_const_int(0),
/* K6 */ be_nested_str_weak(Matter_TLV_array),
/* K7 */ be_nested_str_weak(TYPES),
/* 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(get_onoff),
/* K5 */ be_const_int(3),
/* K6 */ be_const_int(0),
/* K7 */ be_nested_str_weak(create_TLV),
/* K8 */ be_nested_str_weak(U2),
/* K9 */ be_const_int(1),
/* K10 */ be_nested_str_weak(U1),
/* K11 */ be_nested_str_weak(U4),
/* K12 */ be_nested_str_weak(BOOL),
/* K13 */ be_nested_str_weak(get_onoff),
/* K14 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[256]) { /* code */
( &(const binstruction[174]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x88100902, // 0002 GETMBR R4 R4 K2
0x88140503, // 0003 GETMBR R5 R2 K3
0x88180504, // 0004 GETMBR R6 R2 K4
0x541E001C, // 0005 LDINT R7 29
0x1C1C0A07, // 0006 EQ R7 R5 R7
0x781E0057, // 0007 JMPF R7 #0060
0x1C1C0D05, // 0008 EQ R7 R6 K5
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
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
0x7002009E, // 005F JMP #00FF
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
0x7002007A, // 0083 JMP #00FF
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
0x70020060, // 009D JMP #00FF
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
0x7002004B, // 00B2 JMP #00FF
0x541E0005, // 00B3 LDINT R7 6
0x1C1C0A07, // 00B4 EQ R7 R5 R7
0x781E001A, // 00B5 JMPF R7 #00D1
0x1C1C0D05, // 00B6 EQ R7 R6 K5
0x781E0006, // 00B7 JMPF R7 #00BF
0x8C1C0912, // 00B8 GETMET R7 R4 K18
0x88240914, // 00B9 GETMBR R9 R4 K20
0x8C280115, // 00BA GETMET R10 R0 K21
0x7C280200, // 00BB CALL R10 1
0x7C1C0600, // 00BC CALL R7 3
0x80040E00, // 00BD RET 1 R7
0x70020010, // 00BE JMP #00D0
0x541EFFFB, // 00BF LDINT R7 65532
0x1C1C0C07, // 00C0 EQ R7 R6 R7
0x781E0005, // 00C1 JMPF R7 #00C8
0x8C1C0912, // 00C2 GETMET R7 R4 K18
0x8824090F, // 00C3 GETMBR R9 R4 K15
0x58280005, // 00C4 LDCONST R10 K5
0x7C1C0600, // 00C5 CALL R7 3
0x80040E00, // 00C6 RET 1 R7
0x70020007, // 00C7 JMP #00D0
0x541EFFFC, // 00C8 LDINT R7 65533
0x1C1C0C07, // 00C9 EQ R7 R6 R7
0x781E0004, // 00CA JMPF R7 #00D0
0x8C1C0912, // 00CB GETMET R7 R4 K18
0x8824090F, // 00CC GETMBR R9 R4 K15
0x542A0003, // 00CD LDINT R10 4
0x7C1C0600, // 00CE CALL R7 3
0x80040E00, // 00CF RET 1 R7
0x7002002D, // 00D0 JMP #00FF
0x541E0007, // 00D1 LDINT R7 8
0x1C1C0A07, // 00D2 EQ R7 R5 R7
0x781E002A, // 00D3 JMPF R7 #00FF
0x1C1C0D05, // 00D4 EQ R7 R6 K5
0x781E0005, // 00D5 JMPF R7 #00DC
0x8C1C0912, // 00D6 GETMET R7 R4 K18
0x88240913, // 00D7 GETMBR R9 R4 K19
0x542A0087, // 00D8 LDINT R10 136
0x7C1C0600, // 00D9 CALL R7 3
0x80040E00, // 00DA RET 1 R7
0x70020022, // 00DB JMP #00FF
0x541E000E, // 00DC LDINT R7 15
0x1C1C0C07, // 00DD EQ R7 R6 R7
0x781E0005, // 00DE JMPF R7 #00E5
0x8C1C0912, // 00DF GETMET R7 R4 K18
0x88240913, // 00E0 GETMBR R9 R4 K19
0x58280005, // 00E1 LDCONST R10 K5
0x7C1C0600, // 00E2 CALL R7 3
0x80040E00, // 00E3 RET 1 R7
0x70020019, // 00E4 JMP #00FF
0x541E000F, // 00E5 LDINT R7 16
0x1C1C0C07, // 00E6 EQ R7 R6 R7
0x781E0005, // 00E7 JMPF R7 #00EE
0x8C1C0912, // 00E8 GETMET R7 R4 K18
0x88240913, // 00E9 GETMBR R9 R4 K19
0x5828000C, // 00EA LDCONST R10 K12
0x7C1C0600, // 00EB CALL R7 3
0x80040E00, // 00EC RET 1 R7
0x70020010, // 00ED JMP #00FF
0x541EFFFB, // 00EE LDINT R7 65532
0x1C1C0C07, // 00EF EQ R7 R6 R7
0x781E0005, // 00F0 JMPF R7 #00F7
0x8C1C0912, // 00F1 GETMET R7 R4 K18
0x8824090F, // 00F2 GETMBR R9 R4 K15
0x58280005, // 00F3 LDCONST R10 K5
0x7C1C0600, // 00F4 CALL R7 3
0x80040E00, // 00F5 RET 1 R7
0x70020007, // 00F6 JMP #00FF
0x541EFFFC, // 00F7 LDINT R7 65533
0x1C1C0C07, // 00F8 EQ R7 R6 R7
0x781E0004, // 00F9 JMPF R7 #00FF
0x8C1C0912, // 00FA GETMET R7 R4 K18
0x8824090F, // 00FB GETMBR R9 R4 K15
0x542A0003, // 00FC LDINT R10 4
0x7C1C0600, // 00FD CALL R7 3
0x80040E00, // 00FE RET 1 R7
0x80000000, // 00FF RET 0
0x1C1C0B05, // 0005 EQ R7 R5 K5
0x781E0021, // 0006 JMPF R7 #0029
0x1C1C0D06, // 0007 EQ R7 R6 K6
0x781E0005, // 0008 JMPF R7 #000F
0x8C1C0907, // 0009 GETMET R7 R4 K7
0x88240908, // 000A GETMBR R9 R4 K8
0x58280006, // 000B LDCONST R10 K6
0x7C1C0600, // 000C CALL R7 3
0x80040E00, // 000D RET 1 R7
0x70020018, // 000E JMP #0028
0x1C1C0D09, // 000F EQ R7 R6 K9
0x781E0005, // 0010 JMPF R7 #0017
0x8C1C0907, // 0011 GETMET R7 R4 K7
0x8824090A, // 0012 GETMBR R9 R4 K10
0x58280006, // 0013 LDCONST R10 K6
0x7C1C0600, // 0014 CALL R7 3
0x80040E00, // 0015 RET 1 R7
0x70020010, // 0016 JMP #0028
0x541EFFFB, // 0017 LDINT R7 65532
0x1C1C0C07, // 0018 EQ R7 R6 R7
0x781E0005, // 0019 JMPF R7 #0020
0x8C1C0907, // 001A GETMET R7 R4 K7
0x8824090B, // 001B GETMBR R9 R4 K11
0x58280006, // 001C LDCONST R10 K6
0x7C1C0600, // 001D CALL R7 3
0x80040E00, // 001E RET 1 R7
0x70020007, // 001F JMP #0028
0x541EFFFC, // 0020 LDINT R7 65533
0x1C1C0C07, // 0021 EQ R7 R6 R7
0x781E0004, // 0022 JMPF R7 #0028
0x8C1C0907, // 0023 GETMET R7 R4 K7
0x8824090B, // 0024 GETMBR R9 R4 K11
0x542A0003, // 0025 LDINT R10 4
0x7C1C0600, // 0026 CALL R7 3
0x80040E00, // 0027 RET 1 R7
0x70020083, // 0028 JMP #00AD
0x541E0003, // 0029 LDINT R7 4
0x1C1C0A07, // 002A EQ R7 R5 R7
0x781E0016, // 002B JMPF R7 #0043
0x1C1C0D06, // 002C EQ R7 R6 K6
0x781E0002, // 002D JMPF R7 #0031
0x4C1C0000, // 002E LDNIL R7
0x80040E00, // 002F RET 1 R7
0x70020010, // 0030 JMP #0042
0x541EFFFB, // 0031 LDINT R7 65532
0x1C1C0C07, // 0032 EQ R7 R6 R7
0x781E0005, // 0033 JMPF R7 #003A
0x8C1C0907, // 0034 GETMET R7 R4 K7
0x8824090B, // 0035 GETMBR R9 R4 K11
0x58280006, // 0036 LDCONST R10 K6
0x7C1C0600, // 0037 CALL R7 3
0x80040E00, // 0038 RET 1 R7
0x70020007, // 0039 JMP #0042
0x541EFFFC, // 003A LDINT R7 65533
0x1C1C0C07, // 003B EQ R7 R6 R7
0x781E0004, // 003C JMPF R7 #0042
0x8C1C0907, // 003D GETMET R7 R4 K7
0x8824090B, // 003E GETMBR R9 R4 K11
0x542A0003, // 003F LDINT R10 4
0x7C1C0600, // 0040 CALL R7 3
0x80040E00, // 0041 RET 1 R7
0x70020069, // 0042 JMP #00AD
0x541E0004, // 0043 LDINT R7 5
0x1C1C0A07, // 0044 EQ R7 R5 R7
0x781E0011, // 0045 JMPF R7 #0058
0x541EFFFB, // 0046 LDINT R7 65532
0x1C1C0C07, // 0047 EQ R7 R6 R7
0x781E0005, // 0048 JMPF R7 #004F
0x8C1C0907, // 0049 GETMET R7 R4 K7
0x8824090B, // 004A GETMBR R9 R4 K11
0x58280006, // 004B LDCONST R10 K6
0x7C1C0600, // 004C CALL R7 3
0x80040E00, // 004D RET 1 R7
0x70020007, // 004E JMP #0057
0x541EFFFC, // 004F LDINT R7 65533
0x1C1C0C07, // 0050 EQ R7 R6 R7
0x781E0004, // 0051 JMPF R7 #0057
0x8C1C0907, // 0052 GETMET R7 R4 K7
0x8824090B, // 0053 GETMBR R9 R4 K11
0x542A0003, // 0054 LDINT R10 4
0x7C1C0600, // 0055 CALL R7 3
0x80040E00, // 0056 RET 1 R7
0x70020054, // 0057 JMP #00AD
0x541E0005, // 0058 LDINT R7 6
0x1C1C0A07, // 0059 EQ R7 R5 R7
0x781E001A, // 005A JMPF R7 #0076
0x1C1C0D06, // 005B EQ R7 R6 K6
0x781E0006, // 005C JMPF R7 #0064
0x8C1C0907, // 005D GETMET R7 R4 K7
0x8824090C, // 005E GETMBR R9 R4 K12
0x8C28010D, // 005F GETMET R10 R0 K13
0x7C280200, // 0060 CALL R10 1
0x7C1C0600, // 0061 CALL R7 3
0x80040E00, // 0062 RET 1 R7
0x70020010, // 0063 JMP #0075
0x541EFFFB, // 0064 LDINT R7 65532
0x1C1C0C07, // 0065 EQ R7 R6 R7
0x781E0005, // 0066 JMPF R7 #006D
0x8C1C0907, // 0067 GETMET R7 R4 K7
0x8824090B, // 0068 GETMBR R9 R4 K11
0x58280006, // 0069 LDCONST R10 K6
0x7C1C0600, // 006A CALL R7 3
0x80040E00, // 006B RET 1 R7
0x70020007, // 006C JMP #0075
0x541EFFFC, // 006D LDINT R7 65533
0x1C1C0C07, // 006E EQ R7 R6 R7
0x781E0004, // 006F JMPF R7 #0075
0x8C1C0907, // 0070 GETMET R7 R4 K7
0x8824090B, // 0071 GETMBR R9 R4 K11
0x542A0003, // 0072 LDINT R10 4
0x7C1C0600, // 0073 CALL R7 3
0x80040E00, // 0074 RET 1 R7
0x70020036, // 0075 JMP #00AD
0x541E0007, // 0076 LDINT R7 8
0x1C1C0A07, // 0077 EQ R7 R5 R7
0x781E002B, // 0078 JMPF R7 #00A5
0x1C1C0D06, // 0079 EQ R7 R6 K6
0x781E0005, // 007A JMPF R7 #0081
0x8C1C0907, // 007B GETMET R7 R4 K7
0x8824090A, // 007C GETMBR R9 R4 K10
0x542A0087, // 007D LDINT R10 136
0x7C1C0600, // 007E CALL R7 3
0x80040E00, // 007F RET 1 R7
0x70020022, // 0080 JMP #00A4
0x541E000E, // 0081 LDINT R7 15
0x1C1C0C07, // 0082 EQ R7 R6 R7
0x781E0005, // 0083 JMPF R7 #008A
0x8C1C0907, // 0084 GETMET R7 R4 K7
0x8824090A, // 0085 GETMBR R9 R4 K10
0x58280006, // 0086 LDCONST R10 K6
0x7C1C0600, // 0087 CALL R7 3
0x80040E00, // 0088 RET 1 R7
0x70020019, // 0089 JMP #00A4
0x541E000F, // 008A LDINT R7 16
0x1C1C0C07, // 008B EQ R7 R6 R7
0x781E0005, // 008C JMPF R7 #0093
0x8C1C0907, // 008D GETMET R7 R4 K7
0x8824090A, // 008E GETMBR R9 R4 K10
0x58280009, // 008F LDCONST R10 K9
0x7C1C0600, // 0090 CALL R7 3
0x80040E00, // 0091 RET 1 R7
0x70020010, // 0092 JMP #00A4
0x541EFFFB, // 0093 LDINT R7 65532
0x1C1C0C07, // 0094 EQ R7 R6 R7
0x781E0005, // 0095 JMPF R7 #009C
0x8C1C0907, // 0096 GETMET R7 R4 K7
0x8824090B, // 0097 GETMBR R9 R4 K11
0x58280006, // 0098 LDCONST R10 K6
0x7C1C0600, // 0099 CALL R7 3
0x80040E00, // 009A RET 1 R7
0x70020007, // 009B JMP #00A4
0x541EFFFC, // 009C LDINT R7 65533
0x1C1C0C07, // 009D EQ R7 R6 R7
0x781E0004, // 009E JMPF R7 #00A4
0x8C1C0907, // 009F GETMET R7 R4 K7
0x8824090B, // 00A0 GETMBR R9 R4 K11
0x542A0003, // 00A1 LDINT R10 4
0x7C1C0600, // 00A2 CALL R7 3
0x80040E00, // 00A3 RET 1 R7
0x70020007, // 00A4 JMP #00AD
0x601C0003, // 00A5 GETGBL R7 G3
0x5C200000, // 00A6 MOVE R8 R0
0x7C1C0200, // 00A7 CALL R7 1
0x8C1C0F0E, // 00A8 GETMET R7 R7 K14
0x5C240200, // 00A9 MOVE R9 R1
0x5C280400, // 00AA MOVE R10 R2
0x7C1C0600, // 00AB CALL R7 3
0x80040E00, // 00AC RET 1 R7
0x80000000, // 00AD RET 0
})
)
);
@ -604,17 +515,15 @@ be_local_closure(Matter_Plugin_OnOff_init, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(init),
/* K1 */ be_nested_str_weak(clusters),
/* K2 */ be_nested_str_weak(CLUSTERS),
/* K3 */ be_nested_str_weak(get_onoff),
/* K4 */ be_const_int(0),
/* K5 */ be_nested_str_weak(tasmota_relay_index),
/* K1 */ be_nested_str_weak(get_onoff),
/* K2 */ be_const_int(0),
/* K3 */ be_nested_str_weak(tasmota_relay_index),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
( &(const binstruction[15]) { /* code */
0x60100003, // 0000 GETGBL R4 G3
0x5C140000, // 0001 MOVE R5 R0
0x7C100200, // 0002 CALL R4 1
@ -622,16 +531,14 @@ be_local_closure(Matter_Plugin_OnOff_init, /* name */
0x5C180200, // 0004 MOVE R6 R1
0x5C1C0400, // 0005 MOVE R7 R2
0x7C100600, // 0006 CALL R4 3
0x88100102, // 0007 GETMBR R4 R0 K2
0x90020204, // 0008 SETMBR R0 K1 R4
0x8C100103, // 0009 GETMET R4 R0 K3
0x7C100200, // 000A CALL R4 1
0x4C100000, // 000B LDNIL R4
0x1C100604, // 000C EQ R4 R3 R4
0x78120000, // 000D JMPF R4 #000F
0x580C0004, // 000E LDCONST R3 K4
0x90020A03, // 000F SETMBR R0 K5 R3
0x80000000, // 0010 RET 0
0x8C100101, // 0007 GETMET R4 R0 K1
0x7C100200, // 0008 CALL R4 1
0x4C100000, // 0009 LDNIL R4
0x1C100604, // 000A EQ R4 R3 R4
0x78120000, // 000B JMPF R4 #000D
0x580C0002, // 000C LDCONST R3 K2
0x90020603, // 000D SETMBR R0 K3 R3
0x80000000, // 000E RET 0
})
)
);
@ -686,8 +593,15 @@ be_local_class(Matter_Plugin_OnOff,
})) ) } )) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_OnOff_read_attribute_closure) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(5,
be_const_map( * be_nested_map(4,
( (struct bmapnode*) &(const bmapnode[]) {
{ 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(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(8,
( (struct bvalue*) &(const bvalue[]) {
@ -706,16 +620,6 @@ be_local_class(Matter_Plugin_OnOff,
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(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(4,
@ -724,13 +628,6 @@ be_local_class(Matter_Plugin_OnOff,
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(3,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(set_onoff, -1), be_const_closure(Matter_Plugin_OnOff_set_onoff_closure) },

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[90]) { /* constants */
( &(const bvalue[86]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV),
@ -104,16 +104,12 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
/* K81 */ be_nested_str_weak(Hardware),
/* K82 */ be_nested_str_weak(Version),
/* K83 */ be_nested_str_weak(locale),
/* K84 */ be_nested_str_weak(TYPES),
/* K85 */ be_nested_str_weak(keys),
/* K86 */ be_nested_str_weak(get_cluster_list),
/* K87 */ be_nested_str_weak(get_active_endpoints),
/* K88 */ be_nested_str_weak(status),
/* K89 */ be_nested_str_weak(UNSUPPORTED_CLUSTER),
/* K84 */ be_nested_str_weak(get_active_endpoints),
/* K85 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[918]) { /* code */
( &(const binstruction[873]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x88100902, // 0002 GETMBR R4 R4 K2
@ -170,11 +166,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
0x7002035B, // 0038 JMP #0395
0x7002032E, // 0038 JMP #0368
0x541E0031, // 0039 LDINT R7 50
0x1C1C0A07, // 003A EQ R7 R5 R7
0x781E0000, // 003B JMPF R7 #003D
0x70020357, // 003C JMP #0395
0x7002032A, // 003C JMP #0368
0x541E0032, // 003D LDINT R7 51
0x1C1C0A07, // 003E EQ R7 R5 R7
0x781E00DC, // 003F JMPF R7 #011D
@ -398,11 +394,11 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0x50280000, // 0119 LDBOOL R10 0 0
0x7C1C0600, // 011A CALL R7 3
0x80040E00, // 011B RET 1 R7
0x70020277, // 011C JMP #0395
0x7002024A, // 011C JMP #0368
0x541E0033, // 011D LDINT R7 52
0x1C1C0A07, // 011E EQ R7 R5 R7
0x781E0000, // 011F JMPF R7 #0121
0x70020273, // 0120 JMP #0395
0x70020246, // 0120 JMP #0368
0x541E0037, // 0121 LDINT R7 56
0x1C1C0A07, // 0122 EQ R7 R5 R7
0x781E002C, // 0123 JMPF R7 #0151
@ -450,7 +446,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0x5C2C0E00, // 014D MOVE R11 R7
0x7C200600, // 014E CALL R8 3
0x80041000, // 014F RET 1 R8
0x70020243, // 0150 JMP #0395
0x70020216, // 0150 JMP #0368
0x541E003D, // 0151 LDINT R7 62
0x1C1C0A07, // 0152 EQ R7 R5 R7
0x781E008B, // 0153 JMPF R7 #01E0
@ -593,7 +589,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0x7C280200, // 01DC CALL R10 1
0x7C1C0600, // 01DD CALL R7 3
0x80040E00, // 01DE RET 1 R7
0x700201B4, // 01DF JMP #0395
0x70020187, // 01DF JMP #0368
0x541E003B, // 01E0 LDINT R7 60
0x1C1C0A07, // 01E1 EQ R7 R5 R7
0x781E003C, // 01E2 JMPF R7 #0220
@ -657,7 +653,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0x4C2C0000, // 021C LDNIL R11
0x7C200600, // 021D CALL R8 3
0x80041000, // 021E RET 1 R8
0x70020174, // 021F JMP #0395
0x70020147, // 021F JMP #0368
0x541E0027, // 0220 LDINT R7 40
0x1C1C0A07, // 0221 EQ R7 R5 R7
0x781E00A4, // 0222 JMPF R7 #02C8
@ -825,11 +821,11 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0x5830000F, // 02C4 LDCONST R12 K15
0x7C200800, // 02C5 CALL R8 4
0x80040E00, // 02C6 RET 1 R7
0x700200CC, // 02C7 JMP #0395
0x7002009F, // 02C7 JMP #0368
0x541E003E, // 02C8 LDINT R7 63
0x1C1C0A07, // 02C9 EQ R7 R5 R7
0x781E0000, // 02CA JMPF R7 #02CC
0x700200C8, // 02CB JMP #0395
0x7002009B, // 02CB JMP #0368
0x541E0029, // 02CC LDINT R7 42
0x1C1C0A07, // 02CD EQ R7 R5 R7
0x781E001D, // 02CE JMPF R7 #02ED
@ -862,7 +858,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0x4C280000, // 02E9 LDNIL R10
0x7C1C0600, // 02EA CALL R7 3
0x80040E00, // 02EB RET 1 R7
0x700200A7, // 02EC JMP #0395
0x7002007A, // 02EC JMP #0368
0x541E002A, // 02ED LDINT R7 43
0x1C1C0A07, // 02EE EQ R7 R5 R7
0x781E0016, // 02EF JMPF R7 #0307
@ -888,7 +884,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0x7C300200, // 0303 CALL R12 1
0x7C200800, // 0304 CALL R8 4
0x80040E00, // 0305 RET 1 R7
0x7002008D, // 0306 JMP #0395
0x70020060, // 0306 JMP #0368
0x541E002B, // 0307 LDINT R7 44
0x1C1C0A07, // 0308 EQ R7 R5 R7
0x781E001C, // 0309 JMPF R7 #0327
@ -920,7 +916,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0x7C2C0600, // 0323 CALL R11 3
0x7C200600, // 0324 CALL R8 3
0x80040E00, // 0325 RET 1 R7
0x7002006D, // 0326 JMP #0395
0x70020040, // 0326 JMP #0368
0x541E0030, // 0327 LDINT R7 49
0x1C1C0A07, // 0328 EQ R7 R5 R7
0x781E0010, // 0329 JMPF R7 #033B
@ -940,98 +936,53 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
0x542A0003, // 0337 LDINT R10 4
0x7C1C0600, // 0338 CALL R7 3
0x80040E00, // 0339 RET 1 R7
0x70020059, // 033A JMP #0395
0x7002002C, // 033A JMP #0368
0x541E001C, // 033B LDINT R7 29
0x1C1C0A07, // 033C EQ R7 R5 R7
0x781E0053, // 033D JMPF R7 #0392
0x1C1C0D05, // 033E EQ R7 R6 K5
0x781E001C, // 033F JMPF R7 #035D
0x781E0021, // 033D JMPF R7 #0360
0x1C1C0D0F, // 033E EQ R7 R6 K15
0x781E0016, // 033F JMPF R7 #0357
0x8C1C0911, // 0340 GETMET R7 R4 K17
0x7C1C0200, // 0341 CALL R7 1
0x60200010, // 0342 GETGBL R8 G16
0x88240154, // 0343 GETMBR R9 R0 K84
0x8C241355, // 0344 GETMET R9 R9 K85
0x7C240200, // 0345 CALL R9 1
0x7C200200, // 0346 CALL R8 1
0xA802000F, // 0347 EXBLK 0 #0358
0x5C241000, // 0348 MOVE R9 R8
0x7C240000, // 0349 CALL R9 0
0x8C280F15, // 034A GETMET R10 R7 K21
0x7C280200, // 034B CALL R10 1
0x8C2C150B, // 034C GETMET R11 R10 K11
0x58340005, // 034D LDCONST R13 K5
0x88200133, // 0342 GETMBR R8 R0 K51
0x8C201154, // 0343 GETMET R8 R8 K84
0x50280200, // 0344 LDBOOL R10 1 0
0x7C200400, // 0345 CALL R8 2
0x60240010, // 0346 GETGBL R9 G16
0x5C281000, // 0347 MOVE R10 R8
0x7C240200, // 0348 CALL R9 1
0xA8020007, // 0349 EXBLK 0 #0352
0x5C281200, // 034A MOVE R10 R9
0x7C280000, // 034B CALL R10 0
0x8C2C0F0B, // 034C GETMET R11 R7 K11
0x4C340000, // 034D LDNIL R13
0x8838090C, // 034E GETMBR R14 R4 K12
0x5C3C1200, // 034F MOVE R15 R9
0x5C3C1400, // 034F MOVE R15 R10
0x7C2C0800, // 0350 CALL R11 4
0x8C2C150B, // 0351 GETMET R11 R10 K11
0x58340009, // 0352 LDCONST R13 K9
0x8838090C, // 0353 GETMBR R14 R4 K12
0x883C0154, // 0354 GETMBR R15 R0 K84
0x943C1E09, // 0355 GETIDX R15 R15 R9
0x7C2C0800, // 0356 CALL R11 4
0x7001FFEF, // 0357 JMP #0348
0x5820003A, // 0358 LDCONST R8 K58
0xAC200200, // 0359 CATCH R8 1 0
0xB0080000, // 035A RAISE 2 R0 R0
0x80040E00, // 035B RET 1 R7
0x70020033, // 035C JMP #0391
0x1C1C0D09, // 035D EQ R7 R6 K9
0x781E0013, // 035E JMPF R7 #0373
0x8C1C0911, // 035F GETMET R7 R4 K17
0x7C1C0200, // 0360 CALL R7 1
0x60200010, // 0361 GETGBL R8 G16
0x8C240156, // 0362 GETMET R9 R0 K86
0x7C240200, // 0363 CALL R9 1
0x7C200200, // 0364 CALL R8 1
0xA8020007, // 0365 EXBLK 0 #036E
0x5C241000, // 0366 MOVE R9 R8
0x7C240000, // 0367 CALL R9 0
0x8C280F0B, // 0368 GETMET R10 R7 K11
0x4C300000, // 0369 LDNIL R12
0x8834092A, // 036A GETMBR R13 R4 K42
0x5C381200, // 036B MOVE R14 R9
0x7C280800, // 036C CALL R10 4
0x7001FFF7, // 036D JMP #0366
0x5820003A, // 036E LDCONST R8 K58
0xAC200200, // 036F CATCH R8 1 0
0xB0080000, // 0370 RAISE 2 R0 R0
0x80040E00, // 0371 RET 1 R7
0x7002001D, // 0372 JMP #0391
0x1C1C0D0D, // 0373 EQ R7 R6 K13
0x781E0003, // 0374 JMPF R7 #0379
0x8C1C0911, // 0375 GETMET R7 R4 K17
0x7C1C0200, // 0376 CALL R7 1
0x80040E00, // 0377 RET 1 R7
0x70020017, // 0378 JMP #0391
0x1C1C0D0F, // 0379 EQ R7 R6 K15
0x781E0015, // 037A JMPF R7 #0391
0x881C0133, // 037B GETMBR R7 R0 K51
0x8C1C0F57, // 037C GETMET R7 R7 K87
0x50240200, // 037D LDBOOL R9 1 0
0x7C1C0400, // 037E CALL R7 2
0x8C200911, // 037F GETMET R8 R4 K17
0x7C200200, // 0380 CALL R8 1
0x60240010, // 0381 GETGBL R9 G16
0x5C280E00, // 0382 MOVE R10 R7
0x7C240200, // 0383 CALL R9 1
0xA8020007, // 0384 EXBLK 0 #038D
0x5C281200, // 0385 MOVE R10 R9
0x7C280000, // 0386 CALL R10 0
0x8C2C110B, // 0387 GETMET R11 R8 K11
0x4C340000, // 0388 LDNIL R13
0x8838090C, // 0389 GETMBR R14 R4 K12
0x5C3C1400, // 038A MOVE R15 R10
0x7C2C0800, // 038B CALL R11 4
0x7001FFF7, // 038C JMP #0385
0x5824003A, // 038D LDCONST R9 K58
0xAC240200, // 038E CATCH R9 1 0
0xB0080000, // 038F RAISE 2 R0 R0
0x80041000, // 0390 RET 1 R8
0x70020002, // 0391 JMP #0395
0xB81E0200, // 0392 GETNGBL R7 K1
0x881C0F59, // 0393 GETMBR R7 R7 K89
0x900AB007, // 0394 SETMBR R2 K88 R7
0x80000000, // 0395 RET 0
0x7001FFF7, // 0351 JMP #034A
0x5824003A, // 0352 LDCONST R9 K58
0xAC240200, // 0353 CATCH R9 1 0
0xB0080000, // 0354 RAISE 2 R0 R0
0x80040E00, // 0355 RET 1 R7
0x70020007, // 0356 JMP #035F
0x601C0003, // 0357 GETGBL R7 G3
0x5C200000, // 0358 MOVE R8 R0
0x7C1C0200, // 0359 CALL R7 1
0x8C1C0F55, // 035A GETMET R7 R7 K85
0x5C240200, // 035B MOVE R9 R1
0x5C280400, // 035C MOVE R10 R2
0x7C1C0600, // 035D CALL R7 3
0x80040E00, // 035E RET 1 R7
0x70020007, // 035F JMP #0368
0x601C0003, // 0360 GETGBL R7 G3
0x5C200000, // 0361 MOVE R8 R0
0x7C1C0200, // 0362 CALL R7 1
0x8C1C0F55, // 0363 GETMET R7 R7 K85
0x5C240200, // 0364 MOVE R9 R1
0x5C280400, // 0365 MOVE R10 R2
0x7C1C0600, // 0366 CALL R7 3
0x80040E00, // 0367 RET 1 R7
0x80000000, // 0368 RET 0
})
)
);
@ -1192,14 +1143,12 @@ be_local_closure(Matter_Plugin_Root_init, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(init),
/* K1 */ be_nested_str_weak(clusters),
/* K2 */ be_nested_str_weak(CLUSTERS),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
( &(const binstruction[ 8]) { /* code */
0x600C0003, // 0000 GETGBL R3 G3
0x5C100000, // 0001 MOVE R4 R0
0x7C0C0200, // 0002 CALL R3 1
@ -1207,9 +1156,7 @@ be_local_closure(Matter_Plugin_Root_init, /* name */
0x5C140200, // 0004 MOVE R5 R1
0x5C180400, // 0005 MOVE R6 R2
0x7C0C0600, // 0006 CALL R3 3
0x880C0102, // 0007 GETMBR R3 R0 K2
0x90020203, // 0008 SETMBR R0 K1 R3
0x80000000, // 0009 RET 0
0x80000000, // 0007 RET 0
})
)
);
@ -1229,7 +1176,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[94]) { /* constants */
( &(const bvalue[95]) { /* constants */
/* K0 */ be_nested_str_weak(crypto),
/* K1 */ be_nested_str_weak(string),
/* K2 */ be_nested_str_weak(matter),
@ -1324,10 +1271,11 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
/* K91 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D),
/* K92 */ be_nested_str_weak(start_root_basic_commissioning),
/* K93 */ be_nested_str_weak(stop_basic_commissioning),
/* K94 */ be_nested_str_weak(invoke_request),
}),
be_str_weak(invoke_request),
&be_const_str_solidified,
( &(const binstruction[684]) { /* code */
( &(const binstruction[694]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0
0xA4160200, // 0001 IMPORT R5 K1
0xB81A0400, // 0002 GETNGBL R6 K2
@ -1421,7 +1369,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
0x5C300200, // 005A MOVE R12 R1
0x7C280400, // 005B CALL R10 2
0x80041200, // 005C RET 1 R9
0x7002024C, // 005D JMP #02AB
0x70020256, // 005D JMP #02B5
0x5426003D, // 005E LDINT R9 62
0x1C240E09, // 005F EQ R9 R7 R9
0x782601BF, // 0060 JMPF R9 #0221
@ -1872,7 +1820,7 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
0x900E2E0A, // 021D SETMBR R3 K23 R10
0x4C280000, // 021E LDNIL R10
0x80041400, // 021F RET 1 R10
0x70020089, // 0220 JMP #02AB
0x70020093, // 0220 JMP #02B5
0x5426003B, // 0221 LDINT R9 60
0x1C240E09, // 0222 EQ R9 R7 R9
0x7826007F, // 0223 JMPF R9 #02A4
@ -2003,15 +1951,25 @@ be_local_closure(Matter_Plugin_Root_invoke_request, /* name */
0x7C240200, // 02A0 CALL R9 1
0x50240200, // 02A1 LDBOOL R9 1 0
0x80041200, // 02A2 RET 1 R9
0x70020006, // 02A3 JMP #02AB
0x70020010, // 02A3 JMP #02B5
0x54260029, // 02A4 LDINT R9 42
0x1C240E09, // 02A5 EQ R9 R7 R9
0x78260003, // 02A6 JMPF R9 #02AB
0x78260004, // 02A6 JMPF R9 #02AC
0x1C241106, // 02A7 EQ R9 R8 K6
0x78260001, // 02A8 JMPF R9 #02AB
0x50240200, // 02A9 LDBOOL R9 1 0
0x80041200, // 02AA RET 1 R9
0x80000000, // 02AB RET 0
0x70020008, // 02AB JMP #02B5
0x60240003, // 02AC GETGBL R9 G3
0x5C280000, // 02AD MOVE R10 R0
0x7C240200, // 02AE CALL R9 1
0x8C24135E, // 02AF GETMET R9 R9 K94
0x5C2C0200, // 02B0 MOVE R11 R1
0x5C300400, // 02B1 MOVE R12 R2
0x5C340600, // 02B2 MOVE R13 R3
0x7C240800, // 02B3 CALL R9 4
0x80041200, // 02B4 RET 1 R9
0x80000000, // 02B5 RET 0
})
)
);
@ -2036,89 +1994,11 @@ be_local_class(Matter_Plugin_Root,
})) ) } )) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Root_init_closure) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(14,
be_const_map( * be_nested_map(13,
( (struct bmapnode*) &(const bmapnode[]) {
{ 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,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(2),
be_const_int(3),
be_const_int(4),
})) ) } )) },
{ be_const_key_int(60, -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(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(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),
be_const_int(1),
be_const_int(2),
be_const_int(3),
be_const_int(4),
})) ) } )) },
{ 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_key_int(50, -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(51, -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(8),
})) ) } )) },
{ be_const_key_int(52, -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(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_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(14,
@ -2138,12 +2018,82 @@ be_local_class(Matter_Plugin_Root,
be_const_int(18),
be_const_int(19),
})) ) } )) },
{ be_const_key_int(49, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
{ 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_int(4),
be_const_int(5),
})) ) } )) },
{ 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_key_int(56, 6), 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(44, 7), 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(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(31, -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(2),
be_const_int(3),
be_const_int(4),
})) ) } )) },
{ be_const_key_int(60, -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(48, -1), 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),
be_const_int(1),
be_const_int(2),
be_const_int(3),
be_const_int(4),
})) ) } )) },
{ be_const_key_int(49, 2), 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(3),
be_const_int(4),
be_const_int(65532),
})) ) } )) },
{ be_const_key_int(50, 3), 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(51, -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(8),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Root_invoke_request_closure) },

View File

@ -124,19 +124,17 @@ be_local_closure(Matter_Plugin_Temp_Sensor_init, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(init),
/* K1 */ be_nested_str_weak(clusters),
/* K2 */ be_nested_str_weak(CLUSTERS),
/* K3 */ be_nested_str_weak(tasmota_sensor_filter),
/* K4 */ be_nested_str_weak(tasmota_sensor_matcher),
/* K5 */ be_nested_str_weak(tasmota),
/* K6 */ be_nested_str_weak(Rule_Matcher),
/* K7 */ be_nested_str_weak(parse),
/* K1 */ be_nested_str_weak(tasmota_sensor_filter),
/* K2 */ be_nested_str_weak(tasmota_sensor_matcher),
/* K3 */ be_nested_str_weak(tasmota),
/* K4 */ be_nested_str_weak(Rule_Matcher),
/* K5 */ be_nested_str_weak(parse),
}),
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
( &(const binstruction[15]) { /* code */
0x60100003, // 0000 GETGBL R4 G3
0x5C140000, // 0001 MOVE R5 R0
0x7C100200, // 0002 CALL R4 1
@ -144,16 +142,14 @@ be_local_closure(Matter_Plugin_Temp_Sensor_init, /* name */
0x5C180200, // 0004 MOVE R6 R1
0x5C1C0400, // 0005 MOVE R7 R2
0x7C100600, // 0006 CALL R4 3
0x88100102, // 0007 GETMBR R4 R0 K2
0x90020204, // 0008 SETMBR R0 K1 R4
0x90020603, // 0009 SETMBR R0 K3 R3
0xB8120A00, // 000A GETNGBL R4 K5
0x88100906, // 000B GETMBR R4 R4 K6
0x8C100907, // 000C GETMET R4 R4 K7
0x5C180600, // 000D MOVE R6 R3
0x7C100400, // 000E CALL R4 2
0x90020804, // 000F SETMBR R0 K4 R4
0x80000000, // 0010 RET 0
0x90020203, // 0007 SETMBR R0 K1 R3
0xB8120600, // 0008 GETNGBL R4 K3
0x88100904, // 0009 GETMBR R4 R4 K4
0x8C100905, // 000A GETMET R4 R4 K5
0x5C180600, // 000B MOVE R6 R3
0x7C100400, // 000C CALL R4 2
0x90020404, // 000D SETMBR R0 K2 R4
0x80000000, // 000E RET 0
})
)
);
@ -270,39 +266,14 @@ be_local_class(Matter_Plugin_Temp_Sensor,
{ be_const_key_weak(get_temperature, 1), be_const_closure(Matter_Plugin_Temp_Sensor_get_temperature_closure) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Temp_Sensor_init_closure) },
{ be_const_key_weak(CLUSTERS, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(4,
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ 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(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,
( (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(1026, -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(3, -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(65532),
be_const_int(65533),
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(every_second, 3), be_const_closure(Matter_Plugin_Temp_Sensor_every_second_closure) },