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