diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index f936e03f9..336ec566e 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -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 } diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be index a7c8f3f7f..b79976ad3 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be @@ -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 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be index 7168483a0..223155c61 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be @@ -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 ############################################################# diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be index 4cab5fbad..864b536bf 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be @@ -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 ---------- diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be new file mode 100644 index 000000000..b0d951ff0 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be @@ -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 . +# + +# 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 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be index f8c53f57b..a62d4fe39 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_OnOff.be @@ -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 ############################################################# diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be index 990b43a40..8ad1b08d1 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Root.be @@ -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 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Temp_Sensor.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Temp_Sensor.be index 89a1c23bf..3375bce6d 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Temp_Sensor.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Temp_Sensor.be @@ -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 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h index 036c5ef4e..02c9c2805 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h @@ -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) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h index ac2b71929..b50a887fe 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h @@ -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), })) ) } )) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h new file mode 100644 index 000000000..cfb6e8d1a --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h @@ -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 */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h index 9d3b3bb05..f0ecd333d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_OnOff.h @@ -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) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h index 06c3db2ad..fddf2ccc9 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Root.h @@ -19,7 +19,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[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) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Temp_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Temp_Sensor.h index d80da61cb..0c91b56c3 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Temp_Sensor.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Temp_Sensor.h @@ -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) },