From 4bac940a407c68bca1c6ee2cc4d34bd7f0bb7087 Mon Sep 17 00:00:00 2001
From: s-hadinger <49731213+s-hadinger@users.noreply.github.com>
Date: Mon, 17 Apr 2023 21:49:12 +0200
Subject: [PATCH] Matter add sensors: Humidity, Pressure, Illuminance; optimize
memory (#18441)
---
CHANGELOG.md | 1 +
lib/libesp32/berry/default/berry_conf.h | 2 +-
.../berry_matter/src/be_matter_module.c | 12 +-
.../src/embedded/Matter_Commissioning.be | 8 +-
.../src/embedded/Matter_Device.be | 55 ++-
.../berry_matter/src/embedded/Matter_IM.be | 44 +-
.../src/embedded/Matter_IM_Message.be | 23 +-
.../src/embedded/Matter_Plugin_Sensor.be | 76 ++++
.../embedded/Matter_Plugin_Sensor_Humidity.be | 84 ++++
.../embedded/Matter_Plugin_Sensor_Light.be | 84 ++++
.../embedded/Matter_Plugin_Sensor_Pressure.be | 84 ++++
...Sensor.be => Matter_Plugin_Sensor_Temp.be} | 69 +---
.../berry_matter/src/embedded/Matter_TLV.be | 16 +-
.../solidified_Matter_Commissioning.h | 29 +-
.../src/solidify/solidified_Matter_Device.h | 295 +++++++++++---
.../src/solidify/solidified_Matter_IM.h | 376 ++++++++++--------
.../solidify/solidified_Matter_IM_Message.h | 287 ++++++-------
.../solidified_Matter_Plugin_Sensor.h | 179 +++++++++
...solidified_Matter_Plugin_Sensor_Humidity.h | 220 ++++++++++
.../solidified_Matter_Plugin_Sensor_Light.h | 219 ++++++++++
...solidified_Matter_Plugin_Sensor_Pressure.h | 219 ++++++++++
.../solidified_Matter_Plugin_Sensor_Temp.h | 215 ++++++++++
.../solidified_Matter_Plugin_Temp_Sensor.h | 295 --------------
.../src/solidify/solidified_Matter_TLV.h | 75 ++--
24 files changed, 2135 insertions(+), 832 deletions(-)
create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor.be
create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Humidity.be
create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Light.be
create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Pressure.be
rename lib/libesp32/berry_matter/src/embedded/{Matter_Plugin_Temp_Sensor.be => Matter_Plugin_Sensor_Temp.be} (51%)
create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor.h
create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Humidity.h
create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Light.h
create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Pressure.h
create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Temp.h
delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Temp_Sensor.h
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 852b29bbe..d1a2655cc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -29,6 +29,7 @@ All notable changes to this project will be documented in this file.
- Berry `instrospect.name()` to get names of functions, modules and classes (#18422)
- Berry add `searchall()` and `matchall()` to `re` module and pre-compiled patterns (#18429)
- Matter automatically exposes all detected Temperature sensors (#18430)
+- Matter add sensors: Humidity, Pressure, Illuminance; optimize memory
### Changed
- ESP32 LVGL library from v8.3.5 to v8.3.6 (no functional change)
diff --git a/lib/libesp32/berry/default/berry_conf.h b/lib/libesp32/berry/default/berry_conf.h
index 18d64ad81..d4aa71573 100644
--- a/lib/libesp32/berry/default/berry_conf.h
+++ b/lib/libesp32/berry/default/berry_conf.h
@@ -226,7 +226,7 @@
#define BE_USE_OS_MODULE 0
#define BE_USE_GLOBAL_MODULE 1
#define BE_USE_SYS_MODULE 1
- #define BE_USE_DEBUG_MODULE 0
+ #define BE_USE_DEBUG_MODULE 1
#define BE_USE_GC_MODULE 1
#define BE_USE_SOLIDIFY_MODULE 0
#define BE_USE_INTROSPECT_MODULE 1
diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c
index 8b5d31b5c..8dbccd3a9 100644
--- a/lib/libesp32/berry_matter/src/be_matter_module.c
+++ b/lib/libesp32/berry_matter/src/be_matter_module.c
@@ -159,7 +159,11 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because
#include "solidify/solidified_Matter_Plugin_Light1.h"
#include "solidify/solidified_Matter_Plugin_Light2.h"
#include "solidify/solidified_Matter_Plugin_Light3.h"
-#include "solidify/solidified_Matter_Plugin_Temp_Sensor.h"
+#include "solidify/solidified_Matter_Plugin_Sensor.h"
+#include "solidify/solidified_Matter_Plugin_Sensor_Pressure.h"
+#include "solidify/solidified_Matter_Plugin_Sensor_Temp.h"
+#include "solidify/solidified_Matter_Plugin_Sensor_Light.h"
+#include "solidify/solidified_Matter_Plugin_Sensor_Humidity.h"
/*********************************************************************************************\
* Get a bytes() object of the certificate DAC/PAI_Cert
@@ -333,7 +337,11 @@ module matter (scope: global, strings: weak) {
Plugin_Light1, class(be_class_Matter_Plugin_Light1) // Dimmable Light
Plugin_Light2, class(be_class_Matter_Plugin_Light2) // Color Temperature Light
Plugin_Light3, class(be_class_Matter_Plugin_Light3) // Extended Color Light
- Plugin_Temp_Sensor, class(be_class_Matter_Plugin_Temp_Sensor) // Temperature Sensor
+ Plugin_Sensor, class(be_class_Matter_Plugin_Sensor) // Generic Sensor
+ Plugin_Sensor_Pressure, class(be_class_Matter_Plugin_Sensor_Pressure) // Pressure Sensor
+ Plugin_Sensor_Temp, class(be_class_Matter_Plugin_Sensor_Temp) // Temperature Sensor
+ Plugin_Sensor_Light, class(be_class_Matter_Plugin_Sensor_Light) // Light Sensor
+ Plugin_Sensor_Humidity, class(be_class_Matter_Plugin_Sensor_Humidity) // Humidity Sensor
}
@const_object_info_end */
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be
index 546c05fb4..7235186e4 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be
@@ -305,10 +305,10 @@ class Matter_Commisioning_Context
end
end
# TODO if there is only 1 fabric, we can try to use it anyways
- if size(self.device.sessions.fabrics) == 1
- tasmota.log("MTR: *** Could not find fabric, trying only fabric in store", 2)
- return self.device.sessions.fabrics[0]
- end
+ # if size(self.device.sessions.fabrics) == 1
+ # tasmota.log("MTR: *** Could not find fabric, trying only fabric in store", 2)
+ # return self.device.sessions.fabrics[0]
+ # end
return nil
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be
index fddeea62e..f4ce634a9 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be
@@ -147,6 +147,10 @@ class Matter_Device
var pairing_code = self.compute_manual_pairing_code()
tasmota.log(string.format("MTR: Manual pairing code: %s-%s-%s", pairing_code[0..3], pairing_code[4..6], pairing_code[7..]), 2)
+ # output MQTT
+ var qr_code = self.compute_qrcode_content()
+ tasmota.publish_result(string.format('{"Matter":{"Commissioning":1,"PairingCode":"%s","QRCode":"%s"}}', pairing_code, qr_code), 'Matter')
+
# compute PBKDF
self._compute_pbkdf(self.root_passcode, self.root_iterations, self.root_salt)
self.start_basic_commissioning(timeout_s, self.root_iterations, self.root_discriminator, self.root_salt, self.root_w0, #-self.root_w1,-# self.root_L, nil)
@@ -202,6 +206,9 @@ class Matter_Device
#############################################################
# Stop PASE commissioning, mostly called when CASE is about to start
def stop_basic_commissioning()
+ if self.is_root_commissioning_open()
+ tasmota.publish_result('{"Matter":{"Commissioning":0}}', 'Matter')
+ end
self.commissioning_open = nil
self.mdns_remove_PASE()
@@ -548,6 +555,7 @@ class Matter_Device
ctx.cluster = cl
ctx.attribute = at
var finished = cb(pi, ctx, direct) # call the callback with the plugin and the context
+ # tasmota.log("MTR: gc="+str(tasmota.gc()), 2)
if direct && finished return end
end
end
@@ -955,13 +963,55 @@ class Matter_Device
var sensor_2 = sensors[k1]
if isinstance(sensor_2, map) && sensor_2.contains("Temperature")
var temp_rule = k1 + "#Temperature"
- self.plugins.push(matter.Plugin_Temp_Sensor(self, endpoint, temp_rule))
+ self.plugins.push(matter.Plugin_Sensor_Temp(self, endpoint, temp_rule))
tasmota.log(string.format("MTR: Endpoint:%i Temperature (%s)", endpoint, temp_rule), 2)
endpoint += 1
end
if endpoint > 0x28 break end
end
+ # pressure sensors
+ # they are starting at endpoint `40..47` (8 max)
+ endpoint = 0x28
+ for k1:self.k2l(sensors)
+ var sensor_2 = sensors[k1]
+ if isinstance(sensor_2, map) && sensor_2.contains("Pressure")
+ var temp_rule = k1 + "#Pressure"
+ self.plugins.push(matter.Plugin_Sensor_Pressure(self, endpoint, temp_rule))
+ tasmota.log(string.format("MTR: Endpoint:%i Pressure (%s)", endpoint, temp_rule), 2)
+ endpoint += 1
+ end
+ if endpoint > 0x2F break end
+ end
+
+ # light sensors
+ # they are starting at endpoint `48..55` (8 max)
+ endpoint = 0x30
+ for k1:self.k2l(sensors)
+ var sensor_2 = sensors[k1]
+ if isinstance(sensor_2, map) && sensor_2.contains("Illuminance")
+ var temp_rule = k1 + "#Illuminance"
+ self.plugins.push(matter.Plugin_Sensor_Light(self, endpoint, temp_rule))
+ tasmota.log(string.format("MTR: Endpoint:%i Light (%s)", endpoint, temp_rule), 2)
+ endpoint += 1
+ end
+ if endpoint > 0x38 break end
+ end
+
+ # huidity sensors
+ # they are starting at endpoint `56..63` (8 max)
+ endpoint = 0x38
+ for k1:self.k2l(sensors)
+ var sensor_2 = sensors[k1]
+ if isinstance(sensor_2, map) && sensor_2.contains("Humidity")
+ var temp_rule = k1 + "#Humidity"
+ self.plugins.push(matter.Plugin_Sensor_Humidity(self, endpoint, temp_rule))
+ tasmota.log(string.format("MTR: Endpoint:%i Humidity (%s)", endpoint, temp_rule), 2)
+ endpoint += 1
+ end
+ if endpoint > 0x40 break end
+ end
+
end
# get keys of a map in sorted order
@@ -969,9 +1019,6 @@ class Matter_Device
for i:1..size(l)-1 var k = l[i] var j = i while (j > 0) && (l[j-1] > k) l[j] = l[j-1] j -= 1 end l[j] = k end return l
end
-
- # keys to llist
-
end
matter.Device = Matter_Device
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be
index ca6e2efcc..50c17bd82 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be
@@ -221,7 +221,11 @@ class Matter_IM
attr_name = attr_name ? " (" + attr_name + ")" : ""
# Special case to report unsupported item, if pi==nil
var res = (pi != nil) ? pi.read_attribute(session, ctx) : nil
+ var found = true # stop expansion since we have a value
+ var a1_raw # this is the bytes() block we need to add to response (or nil)
if res != nil
+ var res_str = str(res) # get the value with anonymous tag before it is tagged, for logging
+
var a1 = matter.AttributeReportIB()
a1.attribute_data = matter.AttributeDataIB()
a1.attribute_data.data_version = 1
@@ -233,16 +237,15 @@ class Matter_IM
var a1_tlv = a1.to_TLV()
var a1_len = a1_tlv.encode_len()
- var a1_bytes = bytes(a1_len)
- var a2 = TLV.create_TLV(TLV.RAW, a1_tlv.tlv2raw(a1_bytes))
+ var a1_bytes = bytes(a1_len) # pre-size bytes() to the actual size
+ a1_raw = a1_tlv.tlv2raw(a1_bytes)
+ # tasmota.log(string.format("MTR: guessed len=%i actual=%i '%s'", a1_len, size(a1_raw), a1_raw.tohex()), 2)
- ret.attribute_reports.push(a2)
if !no_log
- tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - %s", session.local_session_id, str(ctx), attr_name, str(res)), 2)
- end
- return true # stop expansion since we have a value
+ tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - %s", session.local_session_id, str(ctx), attr_name, res_str), 2)
+ end
elif ctx.status != nil
- if direct
+ if direct # we report an error only if a concrete direct read, not with wildcards
var a1 = matter.AttributeReportIB()
a1.attribute_status = matter.AttributeStatusIB()
a1.attribute_status.path = matter.AttributePathIB()
@@ -254,18 +257,33 @@ class Matter_IM
var a1_tlv = a1.to_TLV()
var a1_len = a1_tlv.encode_len()
- var a1_bytes = bytes(a1_len)
- var a2 = TLV.create_TLV(TLV.RAW, a1_tlv.tlv2raw(a1_bytes))
-
- ret.attribute_reports.push(a2)
+ var a1_bytes = bytes(a1_len) # pre-size bytes() to the actual size
+ a1_raw = a1_tlv.tlv2raw(a1_bytes)
+
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 2)
- return true
end
else
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - IGNORED", session.local_session_id, str(ctx), attr_name), 2)
# ignore if content is nil and status is undefined
- return false
+ found = false
end
+
+ # check if we still have enough room in last block
+ if a1_raw # do we have bytes to add, and it's not zero size
+ if size(ret.attribute_reports) == 0
+ ret.attribute_reports.push(a1_raw) # push raw binary instead of a TLV
+ else # already blocks present, see if we can add to the latest, or need to create a new block
+ var last_block = ret.attribute_reports[-1]
+ if size(last_block) + size(a1_raw) <= matter.IM_ReportData.MAX_MESSAGE
+ # add to last block
+ last_block .. a1_raw
+ else
+ ret.attribute_reports.push(a1_raw) # push raw binary instead of a TLV
+ end
+ end
+ end
+
+ return found # return true if we had a match
end
var endpoints = self.device.get_active_endpoints()
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be
index 4b3f3f219..b0cdaa32a 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be
@@ -171,26 +171,11 @@ class Matter_IM_ReportData : Matter_IM_Message
var data = self.data # TLV data of the response (if any)
var was_chunked = data.more_chunked_messages # is this following a chunked packet?
- # compute the acceptable size
- var msg_sz = 0 # message size up to now
- var elements = 0 # number of elements added
- var sz_attribute_reports = (data.attribute_reports != nil) ? size(data.attribute_reports) : 0
- if sz_attribute_reports > 0
- msg_sz = data.attribute_reports[0].to_TLV().encode_len()
- elements = 1
- end
- while msg_sz < self.MAX_MESSAGE && elements < sz_attribute_reports
- var next_sz = data.attribute_reports[elements].to_TLV().encode_len()
- if msg_sz + next_sz < self.MAX_MESSAGE
- msg_sz += next_sz
- elements += 1
- else
- break
- end
- end
+ # the message were grouped by right-sized binaries upfront, we just need to send one block at time
+ var elements = 1 # number of elements added
# tasmota.log(string.format("MTR: exch=%i elements=%i msg_sz=%i total=%i", self.get_exchangeid(), elements, msg_sz, sz_attribute_reports), 3)
- var next_elemnts = []
+ var next_elemnts
if data.attribute_reports != nil
next_elemnts = data.attribute_reports[elements .. ]
data.attribute_reports = data.attribute_reports[0 .. elements - 1]
@@ -222,7 +207,7 @@ class Matter_IM_ReportData : Matter_IM_Message
responder.send_response_frame(resp)
self.last_counter = resp.message_counter
- if size(next_elemnts) > 0
+ if next_elemnts != nil && size(next_elemnts) > 0
data.attribute_reports = next_elemnts
tasmota.log(string.format("MTR: to_be_sent_later size=%i exch=%i", size(data.attribute_reports), resp.exchange_id), 3)
self.ready = false # wait for Status Report before continuing sending
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor.be
new file mode 100644
index 000000000..740b34c46
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor.be
@@ -0,0 +1,76 @@
+#
+# Matter_Plugin_Sensor.be - implements the behavior for a generic Sensor
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+# Matter plug-in for core behavior
+
+# dummy declaration for solidification
+class Matter_Plugin_Device end
+
+#@ solidify:Matter_Plugin_Sensor,weak
+
+class Matter_Plugin_Sensor : Matter_Plugin_Device
+ var tasmota_sensor_filter # Rule-type filter to the value, like "ESP32#Temperature"
+ var tasmota_sensor_matcher # Actual matcher object
+ var shadow_value # Last known value
+
+ #############################################################
+ # Constructor
+ def init(device, endpoint, sensor_filter)
+ super(self).init(device, endpoint)
+ self.tasmota_sensor_filter = sensor_filter
+ self.tasmota_sensor_matcher = tasmota.Rule_Matcher.parse(sensor_filter)
+ end
+
+ #############################################################
+ # parse sensor
+ #
+ # The device calls regularly `tasmota.read_sensors()` and converts
+ # it to json.
+ def parse_sensors(payload)
+ if self.tasmota_sensor_matcher
+ var val = self.pre_value(real(self.tasmota_sensor_matcher.match(payload)))
+ if val != nil
+ if val != self.shadow_value
+ self.valued_changed(val)
+ end
+ self.shadow_value = val
+ end
+ end
+ end
+
+ #############################################################
+ # Called when the value changed compared to shadow value
+ #
+ # This must be overriden.
+ # This is where you call `self.attribute_updated(nil, , )`
+ def valued_changed(val)
+ # self.attribute_updated(nil, 0x0402, 0x0000)
+ end
+
+ #############################################################
+ # Pre-process value
+ #
+ # This must be overriden.
+ # This allows to convert the raw sensor value to the target one, typically int
+ def pre_value(val)
+ return val
+ end
+
+end
+matter.Plugin_Sensor = Matter_Plugin_Sensor
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Humidity.be
new file mode 100644
index 000000000..e06a9b54a
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Humidity.be
@@ -0,0 +1,84 @@
+#
+# Matter_Plugin_Sensor_Pressure.be - implements the behavior for a Pressure Sensor
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+# Matter plug-in for core behavior
+
+# dummy declaration for solidification
+class Matter_Plugin_Sensor end
+
+#@ solidify:Matter_Plugin_Sensor_Humidity,weak
+
+class Matter_Plugin_Sensor_Humidity : Matter_Plugin_Sensor
+ static var CLUSTERS = {
+ 0x0405: [0,1,2,0xFFFC,0xFFFD], # Humidity Measurement p.102 - no writable
+ }
+ static var TYPES = { 0x0307: 2 } # Humidity Sensor, rev 2
+
+ #############################################################
+ # Pre-process value
+ #
+ # This must be overriden.
+ # This allows to convert the raw sensor value to the target one, typically int
+ def pre_value(val)
+ return int(val * 100) # 1/100th of percentage
+ end
+
+ #############################################################
+ # Called when the value changed compared to shadow value
+ #
+ # This must be overriden.
+ # This is where you call `self.attribute_updated(nil, , )`
+ def valued_changed(val)
+ self.attribute_updated(nil, 0x0405, 0x0000)
+ 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 == 0x0405 # ========== Humidity Measurement 2.4 p.98 ==========
+ if attribute == 0x0000 # ---------- Humidity / u16 ----------
+ if self.shadow_value != nil
+ return TLV.create_TLV(TLV.U2, int(self.shadow_value))
+ else
+ return TLV.create_TLV(TLV.NULL, nil)
+ end
+ elif attribute == 0x0001 # ---------- MinMeasuredValue / u16 ----------
+ return TLV.create_TLV(TLV.U2, 500) # 0%
+ elif attribute == 0x0002 # ---------- MaxMeasuredValue / u16 ----------
+ return TLV.create_TLV(TLV.U2, 10000) # 100%
+ elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
+ return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range
+ elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
+ return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
+ end
+
+ else
+ return super(self).read_attribute(session, ctx)
+ end
+ end
+
+end
+matter.Plugin_Sensor_Humidity = Matter_Plugin_Sensor_Humidity
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Light.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Light.be
new file mode 100644
index 000000000..27faeef9b
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Light.be
@@ -0,0 +1,84 @@
+#
+# Matter_Plugin_Sensor_Light.be - implements the behavior for a Light Sensor
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+# Matter plug-in for core behavior
+
+# dummy declaration for solidification
+class Matter_Plugin_Sensor end
+
+#@ solidify:Matter_Plugin_Sensor_Light,weak
+
+class Matter_Plugin_Sensor_Light : Matter_Plugin_Sensor
+ static var CLUSTERS = {
+ 0x0400: [0,1,2,0xFFFC,0xFFFD], # Illuminance Measurement p.95 - no writable
+ }
+ static var TYPES = { 0x0106: 2 } # Temperature Sensor, rev 2
+
+ #############################################################
+ # Pre-process value
+ #
+ # This must be overriden.
+ # This allows to convert the raw sensor value to the target one, typically int
+ def pre_value(val)
+ return int(val) # value in lux
+ end
+
+ #############################################################
+ # Called when the value changed compared to shadow value
+ #
+ # This must be overriden.
+ # This is where you call `self.attribute_updated(nil, , )`
+ def valued_changed(val)
+ self.attribute_updated(nil, 0x0400, 0x0000)
+ 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 == 0x0400 # ========== Illuminance Measurement 2.2 p.95 ==========
+ if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
+ if self.shadow_value != nil
+ return TLV.create_TLV(TLV.I2, int(self.shadow_value))
+ else
+ return TLV.create_TLV(TLV.NULL, nil)
+ end
+ elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
+ return TLV.create_TLV(TLV.I2, 0) # 0 lux
+ elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
+ return TLV.create_TLV(TLV.I2, 10000) # 10000 lux
+ elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
+ return TLV.create_TLV(TLV.U4, 0)
+ elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
+ return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
+ end
+
+ else
+ return super(self).read_attribute(session, ctx)
+ end
+ end
+
+end
+matter.Plugin_Sensor_Pressure = Matter_Plugin_Sensor_Pressure
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Pressure.be
new file mode 100644
index 000000000..aa6366ce2
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Pressure.be
@@ -0,0 +1,84 @@
+#
+# Matter_Plugin_Sensor_Pressure.be - implements the behavior for a Pressure Sensor
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+# Matter plug-in for core behavior
+
+# dummy declaration for solidification
+class Matter_Plugin_Sensor end
+
+#@ solidify:Matter_Plugin_Sensor_Pressure,weak
+
+class Matter_Plugin_Sensor_Pressure : Matter_Plugin_Sensor
+ static var CLUSTERS = {
+ 0x0403: [0,1,2,0xFFFC,0xFFFD], # Temperature Measurement p.97 - no writable
+ }
+ static var TYPES = { 0x0305: 2 } # Temperature Sensor, rev 2
+
+ #############################################################
+ # Pre-process value
+ #
+ # This must be overriden.
+ # This allows to convert the raw sensor value to the target one, typically int
+ def pre_value(val)
+ return int(val)
+ end
+
+ #############################################################
+ # Called when the value changed compared to shadow value
+ #
+ # This must be overriden.
+ # This is where you call `self.attribute_updated(nil, , )`
+ def valued_changed(val)
+ self.attribute_updated(nil, 0x0403, 0x0000)
+ 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 == 0x0403 # ========== Pressure Measurement 2.4 p.98 ==========
+ if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
+ if self.shadow_value != nil
+ return TLV.create_TLV(TLV.I2, int(self.shadow_value))
+ else
+ return TLV.create_TLV(TLV.NULL, nil)
+ end
+ elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
+ return TLV.create_TLV(TLV.I2, 500) # 500 hPA
+ elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
+ return TLV.create_TLV(TLV.I2, 1500) # 1500 hPA
+ elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
+ return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range
+ elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
+ return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
+ end
+
+ else
+ return super(self).read_attribute(session, ctx)
+ end
+ end
+
+end
+matter.Plugin_Sensor_Pressure = Matter_Plugin_Sensor_Pressure
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Temp_Sensor.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Temp.be
similarity index 51%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Temp_Sensor.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Temp.be
index 3375bce6d..2ef420a94 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Temp_Sensor.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_Temp.be
@@ -1,5 +1,5 @@
#
-# Matter_Plugin_Temp_Sensor.be - implements the behavior for a Temperature Sensor
+# Matter_Plugin_Sensor_Temp.be - implements the behavior for a Temperature Sensor
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
@@ -20,56 +20,32 @@
# Matter plug-in for core behavior
# dummy declaration for solidification
-class Matter_Plugin_Device end
+class Matter_Plugin_Sensor end
-#@ solidify:Matter_Plugin_Temp_Sensor,weak
+#@ solidify:Matter_Plugin_Sensor_Temp,weak
-class Matter_Plugin_Temp_Sensor : Matter_Plugin_Device
+class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor
static var CLUSTERS = {
- # 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
- var tasmota_sensor_filter # Rule-type filter to the value, like "ESP32#Temperature"
- var tasmota_sensor_matcher # Actual matcher object
- var shadow_temperature # fake status for now # TODO
-
#############################################################
- # Constructor
- def init(device, endpoint, sensor_filter)
- super(self).init(device, endpoint)
- self.tasmota_sensor_filter = sensor_filter
- self.tasmota_sensor_matcher = tasmota.Rule_Matcher.parse(sensor_filter)
+ # Pre-process value
+ #
+ # This must be overriden.
+ # This allows to convert the raw sensor value to the target one, typically int
+ def pre_value(val)
+ return int(val * 100)
end
#############################################################
- # parse sensor
+ # Called when the value changed compared to shadow value
#
- # The device calls regularly `tasmota.read_sensors()` and converts
- # it to json.
- def parse_sensors(payload)
- if self.tasmota_sensor_matcher
- var val = real(self.tasmota_sensor_matcher.match(payload))
- if val != nil
- # import string
- # tasmota.log(string.format("MTR: update temperature for endpoint %i - %.1f C", self.endpoint,), 3)
- if val != self.shadow_temperature
- self.attribute_updated(nil, 0x0402, 0x0000)
- end
- self.shadow_temperature = val
- end
- end
- end
-
- #############################################################
- # get_temperature
- #
- # Update shadow and signal any change
- def get_temperature()
- return self.shadow_temperature
+ # This must be overriden.
+ # This is where you call `self.attribute_updated(nil, , )`
+ def valued_changed(val)
+ self.attribute_updated(nil, 0x0402, 0x0000)
end
#############################################################
@@ -84,8 +60,8 @@ class Matter_Plugin_Temp_Sensor : Matter_Plugin_Device
# ====================================================================================================
if cluster == 0x0402 # ========== Temperature Measurement 2.3 p.97 ==========
if attribute == 0x0000 # ---------- MeasuredValue / i16 (*100) ----------
- if self.shadow_temperature != nil
- return TLV.create_TLV(TLV.I2, int(self.shadow_temperature * 100))
+ if self.shadow_value != nil
+ return TLV.create_TLV(TLV.I2, self.shadow_value)
else
return TLV.create_TLV(TLV.NULL, nil)
end
@@ -93,6 +69,10 @@ class Matter_Plugin_Temp_Sensor : Matter_Plugin_Device
return TLV.create_TLV(TLV.I2, -5000) # -50 °C
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ----------
return TLV.create_TLV(TLV.I2, 15000) # 150 °C
+ elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
+ return TLV.create_TLV(TLV.U4, 0)
+ elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
+ return TLV.create_TLV(TLV.U4, 4) # 4 = New data model format and notation
end
else
@@ -100,10 +80,5 @@ class Matter_Plugin_Temp_Sensor : Matter_Plugin_Device
end
end
- #############################################################
- # every_second
- def every_second()
- self.get_temperature() # force reading value and sending subscriptions
- end
end
-matter.Plugin_Temp_Sensor = Matter_Plugin_Temp_Sensor
+matter.Plugin_Sensor_Temp = Matter_Plugin_Sensor_Temp
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be
index 084548102..24c4567e2 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be
@@ -637,7 +637,11 @@ class Matter_TLV
# output each one after the other
for v : val_list
- v.tlv2raw(b)
+ if isinstance(v, bytes)
+ b .. v
+ else
+ v.tlv2raw(b)
+ end
end
# add 'end of container'
@@ -728,9 +732,13 @@ class Matter_TLV
# returns `self` to allow calls to be chained
def add_obj(tag, obj)
if obj != nil
- var value = obj.to_TLV()
- value.tag_sub = tag
- self.val.push(value)
+ if isinstance(obj, bytes)
+ self.val.push(obj)
+ else
+ var value = obj.to_TLV()
+ value.tag_sub = tag
+ self.val.push(value)
+ end
end
return self
end
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h
index 486fbdcdf..af2acb9fa 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h
@@ -66,7 +66,7 @@ be_local_closure(Matter_Commisioning_Context_find_fabric_by_destination_id, /*
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[25]) { /* constants */
+ ( &(const bvalue[21]) { /* constants */
/* K0 */ be_nested_str_weak(crypto),
/* K1 */ be_nested_str_weak(tasmota),
/* K2 */ be_nested_str_weak(log),
@@ -88,14 +88,10 @@ be_local_closure(Matter_Commisioning_Context_find_fabric_by_destination_id, /*
/* K18 */ be_nested_str_weak(out),
/* K19 */ be_nested_str_weak(MTR_X3A_X20SIGMA1_X3A_X20candidateDestinationId_X3D),
/* K20 */ be_nested_str_weak(stop_iteration),
- /* K21 */ be_const_int(1),
- /* K22 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20Could_X20not_X20find_X20fabric_X2C_X20trying_X20only_X20fabric_X20in_X20store),
- /* K23 */ be_const_int(2),
- /* K24 */ be_const_int(0),
}),
be_str_weak(find_fabric_by_destination_id),
&be_const_str_solidified,
- ( &(const binstruction[94]) { /* code */
+ ( &(const binstruction[77]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x8C100902, // 0002 GETMET R4 R4 K2
@@ -171,25 +167,8 @@ be_local_closure(Matter_Commisioning_Context_find_fabric_by_destination_id, /*
0x58100014, // 0048 LDCONST R4 K20
0xAC100200, // 0049 CATCH R4 1 0
0xB0080000, // 004A RAISE 2 R0 R0
- 0x6010000C, // 004B GETGBL R4 G12
- 0x88140106, // 004C GETMBR R5 R0 K6
- 0x88140B07, // 004D GETMBR R5 R5 K7
- 0x88140B08, // 004E GETMBR R5 R5 K8
- 0x7C100200, // 004F CALL R4 1
- 0x1C100915, // 0050 EQ R4 R4 K21
- 0x78120009, // 0051 JMPF R4 #005C
- 0xB8120200, // 0052 GETNGBL R4 K1
- 0x8C100902, // 0053 GETMET R4 R4 K2
- 0x58180016, // 0054 LDCONST R6 K22
- 0x581C0017, // 0055 LDCONST R7 K23
- 0x7C100600, // 0056 CALL R4 3
- 0x88100106, // 0057 GETMBR R4 R0 K6
- 0x88100907, // 0058 GETMBR R4 R4 K7
- 0x88100908, // 0059 GETMBR R4 R4 K8
- 0x94100918, // 005A GETIDX R4 R4 K24
- 0x80040800, // 005B RET 1 R4
- 0x4C100000, // 005C LDNIL R4
- 0x80040800, // 005D RET 1 R4
+ 0x4C100000, // 004B LDNIL R4
+ 0x80040800, // 004C RET 1 R4
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h
index c7b55883b..ba71e5d7c 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h
@@ -898,7 +898,7 @@ be_local_closure(Matter_Device_sort_distinct, /* name */
********************************************************************/
be_local_closure(Matter_Device_stop_basic_commissioning, /* name */
be_nested_proto(
- 3, /* nstack */
+ 5, /* nstack */
1, /* argc */
2, /* varg */
0, /* has upvals */
@@ -906,36 +906,49 @@ be_local_closure(Matter_Device_stop_basic_commissioning, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(commissioning_open),
- /* K1 */ be_nested_str_weak(mdns_remove_PASE),
- /* K2 */ be_nested_str_weak(commissioning_iterations),
- /* K3 */ be_nested_str_weak(commissioning_discriminator),
- /* K4 */ be_nested_str_weak(commissioning_salt),
- /* K5 */ be_nested_str_weak(commissioning_w0),
- /* K6 */ be_nested_str_weak(commissioning_L),
- /* K7 */ be_nested_str_weak(commissioning_admin_fabric),
+ ( &(const bvalue[13]) { /* constants */
+ /* K0 */ be_nested_str_weak(is_root_commissioning_open),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(publish_result),
+ /* K3 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D),
+ /* K4 */ be_nested_str_weak(Matter),
+ /* K5 */ be_nested_str_weak(commissioning_open),
+ /* K6 */ be_nested_str_weak(mdns_remove_PASE),
+ /* K7 */ be_nested_str_weak(commissioning_iterations),
+ /* K8 */ be_nested_str_weak(commissioning_discriminator),
+ /* K9 */ be_nested_str_weak(commissioning_salt),
+ /* K10 */ be_nested_str_weak(commissioning_w0),
+ /* K11 */ be_nested_str_weak(commissioning_L),
+ /* K12 */ be_nested_str_weak(commissioning_admin_fabric),
}),
be_str_weak(stop_basic_commissioning),
&be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0x4C040000, // 0000 LDNIL R1
- 0x90020001, // 0001 SETMBR R0 K0 R1
- 0x8C040101, // 0002 GETMET R1 R0 K1
- 0x7C040200, // 0003 CALL R1 1
- 0x4C040000, // 0004 LDNIL R1
- 0x90020401, // 0005 SETMBR R0 K2 R1
- 0x4C040000, // 0006 LDNIL R1
- 0x90020601, // 0007 SETMBR R0 K3 R1
+ ( &(const binstruction[25]) { /* code */
+ 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x7C040200, // 0001 CALL R1 1
+ 0x78060004, // 0002 JMPF R1 #0008
+ 0xB8060200, // 0003 GETNGBL R1 K1
+ 0x8C040302, // 0004 GETMET R1 R1 K2
+ 0x580C0003, // 0005 LDCONST R3 K3
+ 0x58100004, // 0006 LDCONST R4 K4
+ 0x7C040600, // 0007 CALL R1 3
0x4C040000, // 0008 LDNIL R1
- 0x90020801, // 0009 SETMBR R0 K4 R1
- 0x4C040000, // 000A LDNIL R1
- 0x90020A01, // 000B SETMBR R0 K5 R1
+ 0x90020A01, // 0009 SETMBR R0 K5 R1
+ 0x8C040106, // 000A GETMET R1 R0 K6
+ 0x7C040200, // 000B CALL R1 1
0x4C040000, // 000C LDNIL R1
- 0x90020C01, // 000D SETMBR R0 K6 R1
+ 0x90020E01, // 000D SETMBR R0 K7 R1
0x4C040000, // 000E LDNIL R1
- 0x90020E01, // 000F SETMBR R0 K7 R1
- 0x80000000, // 0010 RET 0
+ 0x90021001, // 000F SETMBR R0 K8 R1
+ 0x4C040000, // 0010 LDNIL R1
+ 0x90021201, // 0011 SETMBR R0 K9 R1
+ 0x4C040000, // 0012 LDNIL R1
+ 0x90021401, // 0013 SETMBR R0 K10 R1
+ 0x4C040000, // 0014 LDNIL R1
+ 0x90021601, // 0015 SETMBR R0 K11 R1
+ 0x4C040000, // 0016 LDNIL R1
+ 0x90021801, // 0017 SETMBR R0 K12 R1
+ 0x80000000, // 0018 RET 0
})
)
);
@@ -1067,7 +1080,7 @@ be_local_closure(Matter_Device_every_250ms, /* name */
********************************************************************/
be_local_closure(Matter_Device_start_root_basic_commissioning, /* name */
be_nested_proto(
- 13, /* nstack */
+ 14, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@@ -1075,7 +1088,7 @@ be_local_closure(Matter_Device_start_root_basic_commissioning, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[19]) { /* constants */
+ ( &(const bvalue[23]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(PASE_TIMEOUT),
/* K2 */ be_nested_str_weak(compute_manual_pairing_code),
@@ -1087,18 +1100,22 @@ be_local_closure(Matter_Device_start_root_basic_commissioning, /* name */
/* K8 */ be_const_int(3),
/* K9 */ be_const_int(2147483647),
/* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(_compute_pbkdf),
- /* K12 */ be_nested_str_weak(root_passcode),
- /* K13 */ be_nested_str_weak(root_iterations),
- /* K14 */ be_nested_str_weak(root_salt),
- /* K15 */ be_nested_str_weak(start_basic_commissioning),
- /* K16 */ be_nested_str_weak(root_discriminator),
- /* K17 */ be_nested_str_weak(root_w0),
- /* K18 */ be_nested_str_weak(root_L),
+ /* K11 */ be_nested_str_weak(compute_qrcode_content),
+ /* K12 */ be_nested_str_weak(publish_result),
+ /* K13 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D),
+ /* K14 */ be_nested_str_weak(Matter),
+ /* K15 */ be_nested_str_weak(_compute_pbkdf),
+ /* K16 */ be_nested_str_weak(root_passcode),
+ /* K17 */ be_nested_str_weak(root_iterations),
+ /* K18 */ be_nested_str_weak(root_salt),
+ /* K19 */ be_nested_str_weak(start_basic_commissioning),
+ /* K20 */ be_nested_str_weak(root_discriminator),
+ /* K21 */ be_nested_str_weak(root_w0),
+ /* K22 */ be_nested_str_weak(root_L),
}),
be_str_weak(start_root_basic_commissioning),
&be_const_str_solidified,
- ( &(const binstruction[38]) { /* code */
+ ( &(const binstruction[49]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
0x4C0C0000, // 0001 LDNIL R3
0x1C0C0203, // 0002 EQ R3 R1 R3
@@ -1123,20 +1140,31 @@ be_local_closure(Matter_Device_start_root_basic_commissioning, /* name */
0x581C000A, // 0015 LDCONST R7 K10
0x7C100600, // 0016 CALL R4 3
0x8C10010B, // 0017 GETMET R4 R0 K11
- 0x8818010C, // 0018 GETMBR R6 R0 K12
- 0x881C010D, // 0019 GETMBR R7 R0 K13
- 0x8820010E, // 001A GETMBR R8 R0 K14
- 0x7C100800, // 001B CALL R4 4
- 0x8C10010F, // 001C GETMET R4 R0 K15
- 0x5C180200, // 001D MOVE R6 R1
- 0x881C010D, // 001E GETMBR R7 R0 K13
- 0x88200110, // 001F GETMBR R8 R0 K16
- 0x8824010E, // 0020 GETMBR R9 R0 K14
- 0x88280111, // 0021 GETMBR R10 R0 K17
- 0x882C0112, // 0022 GETMBR R11 R0 K18
- 0x4C300000, // 0023 LDNIL R12
- 0x7C101000, // 0024 CALL R4 8
- 0x80000000, // 0025 RET 0
+ 0x7C100200, // 0018 CALL R4 1
+ 0xB8160600, // 0019 GETNGBL R5 K3
+ 0x8C140B0C, // 001A GETMET R5 R5 K12
+ 0x8C1C0505, // 001B GETMET R7 R2 K5
+ 0x5824000D, // 001C LDCONST R9 K13
+ 0x5C280600, // 001D MOVE R10 R3
+ 0x5C2C0800, // 001E MOVE R11 R4
+ 0x7C1C0800, // 001F CALL R7 4
+ 0x5820000E, // 0020 LDCONST R8 K14
+ 0x7C140600, // 0021 CALL R5 3
+ 0x8C14010F, // 0022 GETMET R5 R0 K15
+ 0x881C0110, // 0023 GETMBR R7 R0 K16
+ 0x88200111, // 0024 GETMBR R8 R0 K17
+ 0x88240112, // 0025 GETMBR R9 R0 K18
+ 0x7C140800, // 0026 CALL R5 4
+ 0x8C140113, // 0027 GETMET R5 R0 K19
+ 0x5C1C0200, // 0028 MOVE R7 R1
+ 0x88200111, // 0029 GETMBR R8 R0 K17
+ 0x88240114, // 002A GETMBR R9 R0 K20
+ 0x88280112, // 002B GETMBR R10 R0 K18
+ 0x882C0115, // 002C GETMBR R11 R0 K21
+ 0x88300116, // 002D GETMBR R12 R0 K22
+ 0x4C340000, // 002E LDNIL R13
+ 0x7C141000, // 002F CALL R5 8
+ 0x80000000, // 0030 RET 0
})
)
);
@@ -3294,7 +3322,7 @@ be_local_closure(Matter_Device_autoconf_device, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[34]) { /* constants */
+ ( &(const bvalue[46]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(json),
/* K2 */ be_const_int(1),
@@ -3326,13 +3354,25 @@ be_local_closure(Matter_Device_autoconf_device, /* name */
/* K28 */ be_nested_str_weak(contains),
/* K29 */ be_nested_str_weak(Temperature),
/* K30 */ be_nested_str_weak(_X23Temperature),
- /* K31 */ be_nested_str_weak(Plugin_Temp_Sensor),
+ /* K31 */ be_nested_str_weak(Plugin_Sensor_Temp),
/* K32 */ be_nested_str_weak(MTR_X3A_X20Endpoint_X3A_X25i_X20Temperature_X20_X28_X25s_X29),
/* K33 */ be_nested_str_weak(stop_iteration),
+ /* K34 */ be_nested_str_weak(Pressure),
+ /* K35 */ be_nested_str_weak(_X23Pressure),
+ /* K36 */ be_nested_str_weak(Plugin_Sensor_Pressure),
+ /* K37 */ be_nested_str_weak(MTR_X3A_X20Endpoint_X3A_X25i_X20Pressure_X20_X28_X25s_X29),
+ /* K38 */ be_nested_str_weak(Illuminance),
+ /* K39 */ be_nested_str_weak(_X23Illuminance),
+ /* K40 */ be_nested_str_weak(Plugin_Sensor_Light),
+ /* K41 */ be_nested_str_weak(MTR_X3A_X20Endpoint_X3A_X25i_X20Light_X20_X28_X25s_X29),
+ /* K42 */ be_nested_str_weak(Humidity),
+ /* K43 */ be_nested_str_weak(_X23Humidity),
+ /* K44 */ be_nested_str_weak(Plugin_Sensor_Humidity),
+ /* K45 */ be_nested_str_weak(MTR_X3A_X20Endpoint_X3A_X25i_X20Humidity_X20_X28_X25s_X29),
}),
be_str_weak(autoconf_device),
&be_const_str_solidified,
- ( &(const binstruction[160]) { /* code */
+ ( &(const binstruction[307]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1
0x580C0002, // 0002 LDCONST R3 K2
@@ -3492,7 +3532,154 @@ be_local_closure(Matter_Device_autoconf_device, /* name */
0x58280021, // 009C LDCONST R10 K33
0xAC280200, // 009D CATCH R10 1 0
0xB0080000, // 009E RAISE 2 R0 R0
- 0x80000000, // 009F RET 0
+ 0x540E0027, // 009F LDINT R3 40
+ 0x60280010, // 00A0 GETGBL R10 G16
+ 0x8C2C011B, // 00A1 GETMET R11 R0 K27
+ 0x5C341200, // 00A2 MOVE R13 R9
+ 0x7C2C0400, // 00A3 CALL R11 2
+ 0x7C280200, // 00A4 CALL R10 1
+ 0xA8020026, // 00A5 EXBLK 0 #00CD
+ 0x5C2C1400, // 00A6 MOVE R11 R10
+ 0x7C2C0000, // 00A7 CALL R11 0
+ 0x9430120B, // 00A8 GETIDX R12 R9 R11
+ 0x6034000F, // 00A9 GETGBL R13 G15
+ 0x5C381800, // 00AA MOVE R14 R12
+ 0x603C0013, // 00AB GETGBL R15 G19
+ 0x7C340400, // 00AC CALL R13 2
+ 0x78360017, // 00AD JMPF R13 #00C6
+ 0x8C34191C, // 00AE GETMET R13 R12 K28
+ 0x583C0022, // 00AF LDCONST R15 K34
+ 0x7C340400, // 00B0 CALL R13 2
+ 0x78360013, // 00B1 JMPF R13 #00C6
+ 0x00341723, // 00B2 ADD R13 R11 K35
+ 0x88380109, // 00B3 GETMBR R14 R0 K9
+ 0x8C381D0A, // 00B4 GETMET R14 R14 K10
+ 0xB8421600, // 00B5 GETNGBL R16 K11
+ 0x8C402124, // 00B6 GETMET R16 R16 K36
+ 0x5C480000, // 00B7 MOVE R18 R0
+ 0x5C4C0600, // 00B8 MOVE R19 R3
+ 0x5C501A00, // 00B9 MOVE R20 R13
+ 0x7C400800, // 00BA CALL R16 4
+ 0x7C380400, // 00BB CALL R14 2
+ 0xB83A1A00, // 00BC GETNGBL R14 K13
+ 0x8C381D0E, // 00BD GETMET R14 R14 K14
+ 0x8C40030F, // 00BE GETMET R16 R1 K15
+ 0x58480025, // 00BF LDCONST R18 K37
+ 0x5C4C0600, // 00C0 MOVE R19 R3
+ 0x5C501A00, // 00C1 MOVE R20 R13
+ 0x7C400800, // 00C2 CALL R16 4
+ 0x58440011, // 00C3 LDCONST R17 K17
+ 0x7C380600, // 00C4 CALL R14 3
+ 0x000C0702, // 00C5 ADD R3 R3 K2
+ 0x5436002E, // 00C6 LDINT R13 47
+ 0x2434060D, // 00C7 GT R13 R3 R13
+ 0x78360000, // 00C8 JMPF R13 #00CA
+ 0x70020000, // 00C9 JMP #00CB
+ 0x7001FFDA, // 00CA JMP #00A6
+ 0xA8040001, // 00CB EXBLK 1 1
+ 0x70020002, // 00CC JMP #00D0
+ 0x58280021, // 00CD LDCONST R10 K33
+ 0xAC280200, // 00CE CATCH R10 1 0
+ 0xB0080000, // 00CF RAISE 2 R0 R0
+ 0x540E002F, // 00D0 LDINT R3 48
+ 0x60280010, // 00D1 GETGBL R10 G16
+ 0x8C2C011B, // 00D2 GETMET R11 R0 K27
+ 0x5C341200, // 00D3 MOVE R13 R9
+ 0x7C2C0400, // 00D4 CALL R11 2
+ 0x7C280200, // 00D5 CALL R10 1
+ 0xA8020026, // 00D6 EXBLK 0 #00FE
+ 0x5C2C1400, // 00D7 MOVE R11 R10
+ 0x7C2C0000, // 00D8 CALL R11 0
+ 0x9430120B, // 00D9 GETIDX R12 R9 R11
+ 0x6034000F, // 00DA GETGBL R13 G15
+ 0x5C381800, // 00DB MOVE R14 R12
+ 0x603C0013, // 00DC GETGBL R15 G19
+ 0x7C340400, // 00DD CALL R13 2
+ 0x78360017, // 00DE JMPF R13 #00F7
+ 0x8C34191C, // 00DF GETMET R13 R12 K28
+ 0x583C0026, // 00E0 LDCONST R15 K38
+ 0x7C340400, // 00E1 CALL R13 2
+ 0x78360013, // 00E2 JMPF R13 #00F7
+ 0x00341727, // 00E3 ADD R13 R11 K39
+ 0x88380109, // 00E4 GETMBR R14 R0 K9
+ 0x8C381D0A, // 00E5 GETMET R14 R14 K10
+ 0xB8421600, // 00E6 GETNGBL R16 K11
+ 0x8C402128, // 00E7 GETMET R16 R16 K40
+ 0x5C480000, // 00E8 MOVE R18 R0
+ 0x5C4C0600, // 00E9 MOVE R19 R3
+ 0x5C501A00, // 00EA MOVE R20 R13
+ 0x7C400800, // 00EB CALL R16 4
+ 0x7C380400, // 00EC CALL R14 2
+ 0xB83A1A00, // 00ED GETNGBL R14 K13
+ 0x8C381D0E, // 00EE GETMET R14 R14 K14
+ 0x8C40030F, // 00EF GETMET R16 R1 K15
+ 0x58480029, // 00F0 LDCONST R18 K41
+ 0x5C4C0600, // 00F1 MOVE R19 R3
+ 0x5C501A00, // 00F2 MOVE R20 R13
+ 0x7C400800, // 00F3 CALL R16 4
+ 0x58440011, // 00F4 LDCONST R17 K17
+ 0x7C380600, // 00F5 CALL R14 3
+ 0x000C0702, // 00F6 ADD R3 R3 K2
+ 0x54360037, // 00F7 LDINT R13 56
+ 0x2434060D, // 00F8 GT R13 R3 R13
+ 0x78360000, // 00F9 JMPF R13 #00FB
+ 0x70020000, // 00FA JMP #00FC
+ 0x7001FFDA, // 00FB JMP #00D7
+ 0xA8040001, // 00FC EXBLK 1 1
+ 0x70020002, // 00FD JMP #0101
+ 0x58280021, // 00FE LDCONST R10 K33
+ 0xAC280200, // 00FF CATCH R10 1 0
+ 0xB0080000, // 0100 RAISE 2 R0 R0
+ 0x540E0037, // 0101 LDINT R3 56
+ 0x60280010, // 0102 GETGBL R10 G16
+ 0x8C2C011B, // 0103 GETMET R11 R0 K27
+ 0x5C341200, // 0104 MOVE R13 R9
+ 0x7C2C0400, // 0105 CALL R11 2
+ 0x7C280200, // 0106 CALL R10 1
+ 0xA8020026, // 0107 EXBLK 0 #012F
+ 0x5C2C1400, // 0108 MOVE R11 R10
+ 0x7C2C0000, // 0109 CALL R11 0
+ 0x9430120B, // 010A GETIDX R12 R9 R11
+ 0x6034000F, // 010B GETGBL R13 G15
+ 0x5C381800, // 010C MOVE R14 R12
+ 0x603C0013, // 010D GETGBL R15 G19
+ 0x7C340400, // 010E CALL R13 2
+ 0x78360017, // 010F JMPF R13 #0128
+ 0x8C34191C, // 0110 GETMET R13 R12 K28
+ 0x583C002A, // 0111 LDCONST R15 K42
+ 0x7C340400, // 0112 CALL R13 2
+ 0x78360013, // 0113 JMPF R13 #0128
+ 0x0034172B, // 0114 ADD R13 R11 K43
+ 0x88380109, // 0115 GETMBR R14 R0 K9
+ 0x8C381D0A, // 0116 GETMET R14 R14 K10
+ 0xB8421600, // 0117 GETNGBL R16 K11
+ 0x8C40212C, // 0118 GETMET R16 R16 K44
+ 0x5C480000, // 0119 MOVE R18 R0
+ 0x5C4C0600, // 011A MOVE R19 R3
+ 0x5C501A00, // 011B MOVE R20 R13
+ 0x7C400800, // 011C CALL R16 4
+ 0x7C380400, // 011D CALL R14 2
+ 0xB83A1A00, // 011E GETNGBL R14 K13
+ 0x8C381D0E, // 011F GETMET R14 R14 K14
+ 0x8C40030F, // 0120 GETMET R16 R1 K15
+ 0x5848002D, // 0121 LDCONST R18 K45
+ 0x5C4C0600, // 0122 MOVE R19 R3
+ 0x5C501A00, // 0123 MOVE R20 R13
+ 0x7C400800, // 0124 CALL R16 4
+ 0x58440011, // 0125 LDCONST R17 K17
+ 0x7C380600, // 0126 CALL R14 3
+ 0x000C0702, // 0127 ADD R3 R3 K2
+ 0x5436003F, // 0128 LDINT R13 64
+ 0x2434060D, // 0129 GT R13 R3 R13
+ 0x78360000, // 012A JMPF R13 #012C
+ 0x70020000, // 012B JMP #012D
+ 0x7001FFDA, // 012C JMP #0108
+ 0xA8040001, // 012D EXBLK 1 1
+ 0x70020002, // 012E JMP #0132
+ 0x58280021, // 012F LDCONST R10 K33
+ 0xAC280200, // 0130 CATCH R10 1 0
+ 0xB0080000, // 0131 RAISE 2 R0 R0
+ 0x80000000, // 0132 RET 0
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h
index 0246ef549..df537be23 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h
@@ -1371,7 +1371,7 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */
1, /* has sup protos */
( &(const struct bproto*[ 2]) {
be_nested_proto(
- 23, /* nstack */
+ 25, /* nstack */
4, /* argc */
0, /* varg */
1, /* has upvals */
@@ -1382,7 +1382,7 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[39]) { /* constants */
+ ( &(const bvalue[40]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV),
@@ -1404,28 +1404,29 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */
/* K18 */ be_nested_str_weak(data),
/* K19 */ be_nested_str_weak(to_TLV),
/* K20 */ be_nested_str_weak(encode_len),
- /* K21 */ be_nested_str_weak(create_TLV),
- /* K22 */ be_nested_str_weak(RAW),
- /* K23 */ be_nested_str_weak(tlv2raw),
- /* K24 */ be_nested_str_weak(attribute_reports),
- /* K25 */ be_nested_str_weak(push),
- /* K26 */ be_nested_str_weak(tasmota),
- /* K27 */ be_nested_str_weak(log),
- /* K28 */ be_nested_str_weak(format),
- /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s),
- /* K30 */ be_nested_str_weak(local_session_id),
- /* K31 */ be_const_int(2),
- /* K32 */ be_nested_str_weak(status),
- /* K33 */ be_nested_str_weak(attribute_status),
- /* K34 */ be_nested_str_weak(AttributeStatusIB),
- /* K35 */ be_nested_str_weak(StatusIB),
- /* K36 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s),
- /* K37 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
- /* K38 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED),
+ /* K21 */ be_nested_str_weak(tlv2raw),
+ /* K22 */ be_nested_str_weak(tasmota),
+ /* K23 */ be_nested_str_weak(log),
+ /* K24 */ be_nested_str_weak(format),
+ /* K25 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s),
+ /* K26 */ be_nested_str_weak(local_session_id),
+ /* K27 */ be_const_int(2),
+ /* K28 */ be_nested_str_weak(status),
+ /* K29 */ be_nested_str_weak(attribute_status),
+ /* K30 */ be_nested_str_weak(AttributeStatusIB),
+ /* K31 */ be_nested_str_weak(StatusIB),
+ /* K32 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s),
+ /* K33 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
+ /* K34 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED),
+ /* K35 */ be_nested_str_weak(attribute_reports),
+ /* K36 */ be_const_int(0),
+ /* K37 */ be_nested_str_weak(push),
+ /* K38 */ be_nested_str_weak(IM_ReportData),
+ /* K39 */ be_nested_str_weak(MAX_MESSAGE),
}),
be_str_weak(read_single_attribute),
&be_const_str_solidified,
- ( &(const binstruction[175]) { /* code */
+ ( &(const binstruction[206]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0
0xB8160200, // 0001 GETNGBL R5 K1
0x88140B02, // 0002 GETMBR R5 R5 K2
@@ -1449,158 +1450,189 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */
0x7C1C0600, // 0014 CALL R7 3
0x70020000, // 0015 JMP #0017
0x4C1C0000, // 0016 LDNIL R7
- 0x4C200000, // 0017 LDNIL R8
- 0x20200E08, // 0018 NE R8 R7 R8
- 0x78220041, // 0019 JMPF R8 #005C
- 0xB8220200, // 001A GETNGBL R8 K1
- 0x8C20110A, // 001B GETMET R8 R8 K10
- 0x7C200200, // 001C CALL R8 1
- 0xB8260200, // 001D GETNGBL R9 K1
- 0x8C24130C, // 001E GETMET R9 R9 K12
- 0x7C240200, // 001F CALL R9 1
- 0x90221609, // 0020 SETMBR R8 K11 R9
- 0x8824110B, // 0021 GETMBR R9 R8 K11
- 0x90261B0E, // 0022 SETMBR R9 K13 K14
- 0x8824110B, // 0023 GETMBR R9 R8 K11
- 0xB82A0200, // 0024 GETNGBL R10 K1
- 0x8C281510, // 0025 GETMET R10 R10 K16
- 0x7C280200, // 0026 CALL R10 1
- 0x90261E0A, // 0027 SETMBR R9 K15 R10
- 0x8824110B, // 0028 GETMBR R9 R8 K11
- 0x8824130F, // 0029 GETMBR R9 R9 K15
- 0x88280511, // 002A GETMBR R10 R2 K17
- 0x9026220A, // 002B SETMBR R9 K17 R10
- 0x8824110B, // 002C GETMBR R9 R8 K11
- 0x8824130F, // 002D GETMBR R9 R9 K15
- 0x88280504, // 002E GETMBR R10 R2 K4
- 0x9026080A, // 002F SETMBR R9 K4 R10
- 0x8824110B, // 0030 GETMBR R9 R8 K11
- 0x8824130F, // 0031 GETMBR R9 R9 K15
- 0x88280505, // 0032 GETMBR R10 R2 K5
- 0x90260A0A, // 0033 SETMBR R9 K5 R10
- 0x8824110B, // 0034 GETMBR R9 R8 K11
- 0x90262407, // 0035 SETMBR R9 K18 R7
- 0x8C241113, // 0036 GETMET R9 R8 K19
- 0x7C240200, // 0037 CALL R9 1
- 0x8C281314, // 0038 GETMET R10 R9 K20
- 0x7C280200, // 0039 CALL R10 1
- 0x602C0015, // 003A GETGBL R11 G21
- 0x5C301400, // 003B MOVE R12 R10
- 0x7C2C0200, // 003C CALL R11 1
- 0x8C300B15, // 003D GETMET R12 R5 K21
- 0x88380B16, // 003E GETMBR R14 R5 K22
- 0x8C3C1317, // 003F GETMET R15 R9 K23
- 0x5C441600, // 0040 MOVE R17 R11
- 0x7C3C0400, // 0041 CALL R15 2
- 0x7C300600, // 0042 CALL R12 3
- 0x88340118, // 0043 GETMBR R13 R0 K24
- 0x8C341B19, // 0044 GETMET R13 R13 K25
- 0x5C3C1800, // 0045 MOVE R15 R12
- 0x7C340400, // 0046 CALL R13 2
- 0x68340001, // 0047 GETUPV R13 U1
- 0x7436000F, // 0048 JMPT R13 #0059
- 0xB8363400, // 0049 GETNGBL R13 K26
- 0x8C341B1B, // 004A GETMET R13 R13 K27
- 0x8C3C091C, // 004B GETMET R15 R4 K28
- 0x5844001D, // 004C LDCONST R17 K29
- 0x68480000, // 004D GETUPV R18 U0
- 0x8848251E, // 004E GETMBR R18 R18 K30
- 0x604C0008, // 004F GETGBL R19 G8
- 0x5C500400, // 0050 MOVE R20 R2
- 0x7C4C0200, // 0051 CALL R19 1
- 0x5C500C00, // 0052 MOVE R20 R6
- 0x60540008, // 0053 GETGBL R21 G8
- 0x5C580E00, // 0054 MOVE R22 R7
- 0x7C540200, // 0055 CALL R21 1
- 0x7C3C0C00, // 0056 CALL R15 6
- 0x5840001F, // 0057 LDCONST R16 K31
- 0x7C340600, // 0058 CALL R13 3
- 0x50340200, // 0059 LDBOOL R13 1 0
- 0x80041A00, // 005A RET 1 R13
- 0x70020051, // 005B JMP #00AE
- 0x88200520, // 005C GETMBR R8 R2 K32
- 0x4C240000, // 005D LDNIL R9
- 0x20201009, // 005E NE R8 R8 R9
- 0x7822003E, // 005F JMPF R8 #009F
- 0x780E003C, // 0060 JMPF R3 #009E
- 0xB8220200, // 0061 GETNGBL R8 K1
- 0x8C20110A, // 0062 GETMET R8 R8 K10
- 0x7C200200, // 0063 CALL R8 1
- 0xB8260200, // 0064 GETNGBL R9 K1
- 0x8C241322, // 0065 GETMET R9 R9 K34
- 0x7C240200, // 0066 CALL R9 1
- 0x90224209, // 0067 SETMBR R8 K33 R9
- 0x88241121, // 0068 GETMBR R9 R8 K33
- 0xB82A0200, // 0069 GETNGBL R10 K1
- 0x8C281510, // 006A GETMET R10 R10 K16
- 0x7C280200, // 006B CALL R10 1
- 0x90261E0A, // 006C SETMBR R9 K15 R10
- 0x88241121, // 006D GETMBR R9 R8 K33
- 0xB82A0200, // 006E GETNGBL R10 K1
- 0x8C281523, // 006F GETMET R10 R10 K35
- 0x7C280200, // 0070 CALL R10 1
- 0x9026400A, // 0071 SETMBR R9 K32 R10
- 0x88241121, // 0072 GETMBR R9 R8 K33
- 0x8824130F, // 0073 GETMBR R9 R9 K15
- 0x88280511, // 0074 GETMBR R10 R2 K17
- 0x9026220A, // 0075 SETMBR R9 K17 R10
- 0x88241121, // 0076 GETMBR R9 R8 K33
- 0x8824130F, // 0077 GETMBR R9 R9 K15
- 0x88280504, // 0078 GETMBR R10 R2 K4
- 0x9026080A, // 0079 SETMBR R9 K4 R10
- 0x88241121, // 007A GETMBR R9 R8 K33
- 0x8824130F, // 007B GETMBR R9 R9 K15
- 0x88280505, // 007C GETMBR R10 R2 K5
- 0x90260A0A, // 007D SETMBR R9 K5 R10
- 0x88241121, // 007E GETMBR R9 R8 K33
- 0x88241320, // 007F GETMBR R9 R9 K32
- 0x88280520, // 0080 GETMBR R10 R2 K32
- 0x9026400A, // 0081 SETMBR R9 K32 R10
- 0x88240118, // 0082 GETMBR R9 R0 K24
- 0x8C241319, // 0083 GETMET R9 R9 K25
- 0x5C2C1000, // 0084 MOVE R11 R8
- 0x7C240400, // 0085 CALL R9 2
- 0xB8263400, // 0086 GETNGBL R9 K26
- 0x8C24131B, // 0087 GETMET R9 R9 K27
- 0x8C2C091C, // 0088 GETMET R11 R4 K28
- 0x58340024, // 0089 LDCONST R13 K36
- 0x68380000, // 008A GETUPV R14 U0
- 0x88381D1E, // 008B GETMBR R14 R14 K30
- 0x603C0008, // 008C GETGBL R15 G8
- 0x5C400400, // 008D MOVE R16 R2
- 0x7C3C0200, // 008E CALL R15 1
- 0x5C400C00, // 008F MOVE R16 R6
- 0x88440520, // 0090 GETMBR R17 R2 K32
- 0x88480520, // 0091 GETMBR R18 R2 K32
- 0xB84E0200, // 0092 GETNGBL R19 K1
- 0x884C2725, // 0093 GETMBR R19 R19 K37
- 0x1C482413, // 0094 EQ R18 R18 R19
- 0x784A0001, // 0095 JMPF R18 #0098
- 0x58480025, // 0096 LDCONST R18 K37
- 0x70020000, // 0097 JMP #0099
- 0x58480008, // 0098 LDCONST R18 K8
- 0x7C2C0E00, // 0099 CALL R11 7
- 0x5830001F, // 009A LDCONST R12 K31
- 0x7C240600, // 009B CALL R9 3
- 0x50240200, // 009C LDBOOL R9 1 0
- 0x80041200, // 009D RET 1 R9
- 0x7002000E, // 009E JMP #00AE
- 0xB8223400, // 009F GETNGBL R8 K26
- 0x8C20111B, // 00A0 GETMET R8 R8 K27
- 0x8C28091C, // 00A1 GETMET R10 R4 K28
- 0x58300026, // 00A2 LDCONST R12 K38
- 0x68340000, // 00A3 GETUPV R13 U0
- 0x88341B1E, // 00A4 GETMBR R13 R13 K30
- 0x60380008, // 00A5 GETGBL R14 G8
- 0x5C3C0400, // 00A6 MOVE R15 R2
- 0x7C380200, // 00A7 CALL R14 1
- 0x5C3C0C00, // 00A8 MOVE R15 R6
- 0x7C280A00, // 00A9 CALL R10 5
- 0x582C001F, // 00AA LDCONST R11 K31
- 0x7C200600, // 00AB CALL R8 3
+ 0x50200200, // 0017 LDBOOL R8 1 0
+ 0x4C240000, // 0018 LDNIL R9
+ 0x4C280000, // 0019 LDNIL R10
+ 0x20280E0A, // 001A NE R10 R7 R10
+ 0x782A003A, // 001B JMPF R10 #0057
+ 0x60280008, // 001C GETGBL R10 G8
+ 0x5C2C0E00, // 001D MOVE R11 R7
+ 0x7C280200, // 001E CALL R10 1
+ 0xB82E0200, // 001F GETNGBL R11 K1
+ 0x8C2C170A, // 0020 GETMET R11 R11 K10
+ 0x7C2C0200, // 0021 CALL R11 1
+ 0xB8320200, // 0022 GETNGBL R12 K1
+ 0x8C30190C, // 0023 GETMET R12 R12 K12
+ 0x7C300200, // 0024 CALL R12 1
+ 0x902E160C, // 0025 SETMBR R11 K11 R12
+ 0x8830170B, // 0026 GETMBR R12 R11 K11
+ 0x90321B0E, // 0027 SETMBR R12 K13 K14
+ 0x8830170B, // 0028 GETMBR R12 R11 K11
+ 0xB8360200, // 0029 GETNGBL R13 K1
+ 0x8C341B10, // 002A GETMET R13 R13 K16
+ 0x7C340200, // 002B CALL R13 1
+ 0x90321E0D, // 002C SETMBR R12 K15 R13
+ 0x8830170B, // 002D GETMBR R12 R11 K11
+ 0x8830190F, // 002E GETMBR R12 R12 K15
+ 0x88340511, // 002F GETMBR R13 R2 K17
+ 0x9032220D, // 0030 SETMBR R12 K17 R13
+ 0x8830170B, // 0031 GETMBR R12 R11 K11
+ 0x8830190F, // 0032 GETMBR R12 R12 K15
+ 0x88340504, // 0033 GETMBR R13 R2 K4
+ 0x9032080D, // 0034 SETMBR R12 K4 R13
+ 0x8830170B, // 0035 GETMBR R12 R11 K11
+ 0x8830190F, // 0036 GETMBR R12 R12 K15
+ 0x88340505, // 0037 GETMBR R13 R2 K5
+ 0x90320A0D, // 0038 SETMBR R12 K5 R13
+ 0x8830170B, // 0039 GETMBR R12 R11 K11
+ 0x90322407, // 003A SETMBR R12 K18 R7
+ 0x8C301713, // 003B GETMET R12 R11 K19
+ 0x7C300200, // 003C CALL R12 1
+ 0x8C341914, // 003D GETMET R13 R12 K20
+ 0x7C340200, // 003E CALL R13 1
+ 0x60380015, // 003F GETGBL R14 G21
+ 0x5C3C1A00, // 0040 MOVE R15 R13
+ 0x7C380200, // 0041 CALL R14 1
+ 0x8C3C1915, // 0042 GETMET R15 R12 K21
+ 0x5C441C00, // 0043 MOVE R17 R14
+ 0x7C3C0400, // 0044 CALL R15 2
+ 0x5C241E00, // 0045 MOVE R9 R15
+ 0x683C0001, // 0046 GETUPV R15 U1
+ 0x743E000D, // 0047 JMPT R15 #0056
+ 0xB83E2C00, // 0048 GETNGBL R15 K22
+ 0x8C3C1F17, // 0049 GETMET R15 R15 K23
+ 0x8C440918, // 004A GETMET R17 R4 K24
+ 0x584C0019, // 004B LDCONST R19 K25
+ 0x68500000, // 004C GETUPV R20 U0
+ 0x8850291A, // 004D GETMBR R20 R20 K26
+ 0x60540008, // 004E GETGBL R21 G8
+ 0x5C580400, // 004F MOVE R22 R2
+ 0x7C540200, // 0050 CALL R21 1
+ 0x5C580C00, // 0051 MOVE R22 R6
+ 0x5C5C1400, // 0052 MOVE R23 R10
+ 0x7C440C00, // 0053 CALL R17 6
+ 0x5848001B, // 0054 LDCONST R18 K27
+ 0x7C3C0600, // 0055 CALL R15 3
+ 0x70020055, // 0056 JMP #00AD
+ 0x8828051C, // 0057 GETMBR R10 R2 K28
+ 0x4C2C0000, // 0058 LDNIL R11
+ 0x2028140B, // 0059 NE R10 R10 R11
+ 0x782A0043, // 005A JMPF R10 #009F
+ 0x780E0041, // 005B JMPF R3 #009E
+ 0xB82A0200, // 005C GETNGBL R10 K1
+ 0x8C28150A, // 005D GETMET R10 R10 K10
+ 0x7C280200, // 005E CALL R10 1
+ 0xB82E0200, // 005F GETNGBL R11 K1
+ 0x8C2C171E, // 0060 GETMET R11 R11 K30
+ 0x7C2C0200, // 0061 CALL R11 1
+ 0x902A3A0B, // 0062 SETMBR R10 K29 R11
+ 0x882C151D, // 0063 GETMBR R11 R10 K29
+ 0xB8320200, // 0064 GETNGBL R12 K1
+ 0x8C301910, // 0065 GETMET R12 R12 K16
+ 0x7C300200, // 0066 CALL R12 1
+ 0x902E1E0C, // 0067 SETMBR R11 K15 R12
+ 0x882C151D, // 0068 GETMBR R11 R10 K29
+ 0xB8320200, // 0069 GETNGBL R12 K1
+ 0x8C30191F, // 006A GETMET R12 R12 K31
+ 0x7C300200, // 006B CALL R12 1
+ 0x902E380C, // 006C SETMBR R11 K28 R12
+ 0x882C151D, // 006D GETMBR R11 R10 K29
+ 0x882C170F, // 006E GETMBR R11 R11 K15
+ 0x88300511, // 006F GETMBR R12 R2 K17
+ 0x902E220C, // 0070 SETMBR R11 K17 R12
+ 0x882C151D, // 0071 GETMBR R11 R10 K29
+ 0x882C170F, // 0072 GETMBR R11 R11 K15
+ 0x88300504, // 0073 GETMBR R12 R2 K4
+ 0x902E080C, // 0074 SETMBR R11 K4 R12
+ 0x882C151D, // 0075 GETMBR R11 R10 K29
+ 0x882C170F, // 0076 GETMBR R11 R11 K15
+ 0x88300505, // 0077 GETMBR R12 R2 K5
+ 0x902E0A0C, // 0078 SETMBR R11 K5 R12
+ 0x882C151D, // 0079 GETMBR R11 R10 K29
+ 0x882C171C, // 007A GETMBR R11 R11 K28
+ 0x8830051C, // 007B GETMBR R12 R2 K28
+ 0x902E380C, // 007C SETMBR R11 K28 R12
+ 0x8C2C1513, // 007D GETMET R11 R10 K19
+ 0x7C2C0200, // 007E CALL R11 1
+ 0x8C301714, // 007F GETMET R12 R11 K20
+ 0x7C300200, // 0080 CALL R12 1
+ 0x60340015, // 0081 GETGBL R13 G21
+ 0x5C381800, // 0082 MOVE R14 R12
+ 0x7C340200, // 0083 CALL R13 1
+ 0x8C381715, // 0084 GETMET R14 R11 K21
+ 0x5C401A00, // 0085 MOVE R16 R13
+ 0x7C380400, // 0086 CALL R14 2
+ 0x5C241C00, // 0087 MOVE R9 R14
+ 0xB83A2C00, // 0088 GETNGBL R14 K22
+ 0x8C381D17, // 0089 GETMET R14 R14 K23
+ 0x8C400918, // 008A GETMET R16 R4 K24
+ 0x58480020, // 008B LDCONST R18 K32
+ 0x684C0000, // 008C GETUPV R19 U0
+ 0x884C271A, // 008D GETMBR R19 R19 K26
+ 0x60500008, // 008E GETGBL R20 G8
+ 0x5C540400, // 008F MOVE R21 R2
+ 0x7C500200, // 0090 CALL R20 1
+ 0x5C540C00, // 0091 MOVE R21 R6
+ 0x8858051C, // 0092 GETMBR R22 R2 K28
+ 0x885C051C, // 0093 GETMBR R23 R2 K28
+ 0xB8620200, // 0094 GETNGBL R24 K1
+ 0x88603121, // 0095 GETMBR R24 R24 K33
+ 0x1C5C2E18, // 0096 EQ R23 R23 R24
+ 0x785E0001, // 0097 JMPF R23 #009A
+ 0x585C0021, // 0098 LDCONST R23 K33
+ 0x70020000, // 0099 JMP #009B
+ 0x585C0008, // 009A LDCONST R23 K8
+ 0x7C400E00, // 009B CALL R16 7
+ 0x5844001B, // 009C LDCONST R17 K27
+ 0x7C380600, // 009D CALL R14 3
+ 0x7002000D, // 009E JMP #00AD
+ 0xB82A2C00, // 009F GETNGBL R10 K22
+ 0x8C281517, // 00A0 GETMET R10 R10 K23
+ 0x8C300918, // 00A1 GETMET R12 R4 K24
+ 0x58380022, // 00A2 LDCONST R14 K34
+ 0x683C0000, // 00A3 GETUPV R15 U0
+ 0x883C1F1A, // 00A4 GETMBR R15 R15 K26
+ 0x60400008, // 00A5 GETGBL R16 G8
+ 0x5C440400, // 00A6 MOVE R17 R2
+ 0x7C400200, // 00A7 CALL R16 1
+ 0x5C440C00, // 00A8 MOVE R17 R6
+ 0x7C300A00, // 00A9 CALL R12 5
+ 0x5834001B, // 00AA LDCONST R13 K27
+ 0x7C280600, // 00AB CALL R10 3
0x50200000, // 00AC LDBOOL R8 0 0
- 0x80041000, // 00AD RET 1 R8
- 0x80000000, // 00AE RET 0
+ 0x7826001E, // 00AD JMPF R9 #00CD
+ 0x6028000C, // 00AE GETGBL R10 G12
+ 0x882C0123, // 00AF GETMBR R11 R0 K35
+ 0x7C280200, // 00B0 CALL R10 1
+ 0x1C281524, // 00B1 EQ R10 R10 K36
+ 0x782A0004, // 00B2 JMPF R10 #00B8
+ 0x88280123, // 00B3 GETMBR R10 R0 K35
+ 0x8C281525, // 00B4 GETMET R10 R10 K37
+ 0x5C301200, // 00B5 MOVE R12 R9
+ 0x7C280400, // 00B6 CALL R10 2
+ 0x70020014, // 00B7 JMP #00CD
+ 0x5429FFFE, // 00B8 LDINT R10 -1
+ 0x882C0123, // 00B9 GETMBR R11 R0 K35
+ 0x9428160A, // 00BA GETIDX R10 R11 R10
+ 0x6030000C, // 00BB GETGBL R12 G12
+ 0x5C341400, // 00BC MOVE R13 R10
+ 0x7C300200, // 00BD CALL R12 1
+ 0x6034000C, // 00BE GETGBL R13 G12
+ 0x5C381200, // 00BF MOVE R14 R9
+ 0x7C340200, // 00C0 CALL R13 1
+ 0x0030180D, // 00C1 ADD R12 R12 R13
+ 0xB8360200, // 00C2 GETNGBL R13 K1
+ 0x88341B26, // 00C3 GETMBR R13 R13 K38
+ 0x88341B27, // 00C4 GETMBR R13 R13 K39
+ 0x1830180D, // 00C5 LE R12 R12 R13
+ 0x78320001, // 00C6 JMPF R12 #00C9
+ 0x40301409, // 00C7 CONNECT R12 R10 R9
+ 0x70020003, // 00C8 JMP #00CD
+ 0x882C0123, // 00C9 GETMBR R11 R0 K35
+ 0x8C2C1725, // 00CA GETMET R11 R11 K37
+ 0x5C341200, // 00CB MOVE R13 R9
+ 0x7C2C0400, // 00CC CALL R11 2
+ 0x80041000, // 00CD RET 1 R8
})
),
be_nested_proto(
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h
index e476fbf5c..b1b6f21da 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h
@@ -529,7 +529,7 @@ extern const bclass be_class_Matter_IM_ReportData;
********************************************************************/
be_local_closure(Matter_IM_ReportData_send_im, /* name */
be_nested_proto(
- 21, /* nstack */
+ 19, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
@@ -537,43 +537,42 @@ be_local_closure(Matter_IM_ReportData_send_im, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[32]) { /* constants */
+ ( &(const bvalue[31]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(ready),
/* K2 */ be_nested_str_weak(resp),
/* K3 */ be_nested_str_weak(data),
/* K4 */ be_nested_str_weak(more_chunked_messages),
- /* K5 */ be_const_int(0),
+ /* K5 */ be_const_int(1),
/* K6 */ be_nested_str_weak(attribute_reports),
- /* K7 */ be_nested_str_weak(to_TLV),
- /* K8 */ be_nested_str_weak(encode_len),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(MAX_MESSAGE),
- /* K11 */ be_const_int(2147483647),
- /* K12 */ be_nested_str_weak(tasmota),
- /* K13 */ be_nested_str_weak(log),
- /* K14 */ be_nested_str_weak(format),
- /* K15 */ be_nested_str_weak(MTR_X3A_X20_X2ERead_Attr_X20next_chunk_X20exch_X3D_X25i),
- /* K16 */ be_nested_str_weak(get_exchangeid),
- /* K17 */ be_const_int(3),
- /* K18 */ be_nested_str_weak(MTR_X3A_X20_X2ERead_Attr_X20first_chunk_X20exch_X3D_X25i),
- /* K19 */ be_nested_str_weak(tlv2raw),
- /* K20 */ be_nested_str_weak(encode_frame),
- /* K21 */ be_nested_str_weak(encrypt),
- /* K22 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s),
- /* K23 */ be_nested_str_weak(session),
- /* K24 */ be_nested_str_weak(local_session_id),
- /* K25 */ be_nested_str_weak(message_counter),
- /* K26 */ be_nested_str_weak(exchange_id),
- /* K27 */ be_nested_str_weak(ack_message_counter),
- /* K28 */ be_nested_str_weak(send_response_frame),
- /* K29 */ be_nested_str_weak(last_counter),
- /* K30 */ be_nested_str_weak(MTR_X3A_X20to_be_sent_later_X20size_X3D_X25i_X20exch_X3D_X25i),
- /* K31 */ be_nested_str_weak(finish),
+ /* K7 */ be_const_int(2147483647),
+ /* K8 */ be_const_int(0),
+ /* K9 */ be_nested_str_weak(tasmota),
+ /* K10 */ be_nested_str_weak(log),
+ /* K11 */ be_nested_str_weak(format),
+ /* K12 */ be_nested_str_weak(MTR_X3A_X20_X2ERead_Attr_X20next_chunk_X20exch_X3D_X25i),
+ /* K13 */ be_nested_str_weak(get_exchangeid),
+ /* K14 */ be_const_int(3),
+ /* K15 */ be_nested_str_weak(MTR_X3A_X20_X2ERead_Attr_X20first_chunk_X20exch_X3D_X25i),
+ /* K16 */ be_nested_str_weak(to_TLV),
+ /* K17 */ be_nested_str_weak(tlv2raw),
+ /* K18 */ be_nested_str_weak(MAX_MESSAGE),
+ /* K19 */ be_nested_str_weak(encode_frame),
+ /* K20 */ be_nested_str_weak(encrypt),
+ /* K21 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s),
+ /* K22 */ be_nested_str_weak(session),
+ /* K23 */ be_nested_str_weak(local_session_id),
+ /* K24 */ be_nested_str_weak(message_counter),
+ /* K25 */ be_nested_str_weak(exchange_id),
+ /* K26 */ be_nested_str_weak(ack_message_counter),
+ /* K27 */ be_nested_str_weak(send_response_frame),
+ /* K28 */ be_nested_str_weak(last_counter),
+ /* K29 */ be_nested_str_weak(MTR_X3A_X20to_be_sent_later_X20size_X3D_X25i_X20exch_X3D_X25i),
+ /* K30 */ be_nested_str_weak(finish),
}),
be_str_weak(send_im),
&be_const_str_solidified,
- ( &(const binstruction[147]) { /* code */
+ ( &(const binstruction[109]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
0x880C0101, // 0001 GETMBR R3 R0 K1
0x740E0001, // 0002 JMPT R3 #0005
@@ -583,144 +582,106 @@ be_local_closure(Matter_IM_ReportData_send_im, /* name */
0x88100103, // 0006 GETMBR R4 R0 K3
0x88140904, // 0007 GETMBR R5 R4 K4
0x58180005, // 0008 LDCONST R6 K5
- 0x581C0005, // 0009 LDCONST R7 K5
+ 0x4C1C0000, // 0009 LDNIL R7
0x88200906, // 000A GETMBR R8 R4 K6
0x4C240000, // 000B LDNIL R9
0x20201009, // 000C NE R8 R8 R9
- 0x78220003, // 000D JMPF R8 #0012
- 0x6020000C, // 000E GETGBL R8 G12
+ 0x7822000D, // 000D JMPF R8 #001C
+ 0x40200D07, // 000E CONNECT R8 R6 K7
0x88240906, // 000F GETMBR R9 R4 K6
- 0x7C200200, // 0010 CALL R8 1
- 0x70020000, // 0011 JMP #0013
- 0x58200005, // 0012 LDCONST R8 K5
- 0x24241105, // 0013 GT R9 R8 K5
- 0x78260007, // 0014 JMPF R9 #001D
- 0x88240906, // 0015 GETMBR R9 R4 K6
- 0x94241305, // 0016 GETIDX R9 R9 K5
- 0x8C241307, // 0017 GETMET R9 R9 K7
- 0x7C240200, // 0018 CALL R9 1
- 0x8C241308, // 0019 GETMET R9 R9 K8
- 0x7C240200, // 001A CALL R9 1
- 0x5C181200, // 001B MOVE R6 R9
- 0x581C0009, // 001C LDCONST R7 K9
- 0x8824010A, // 001D GETMBR R9 R0 K10
- 0x14240C09, // 001E LT R9 R6 R9
- 0x78260010, // 001F JMPF R9 #0031
- 0x14240E08, // 0020 LT R9 R7 R8
- 0x7826000E, // 0021 JMPF R9 #0031
- 0x88240906, // 0022 GETMBR R9 R4 K6
- 0x94241207, // 0023 GETIDX R9 R9 R7
- 0x8C241307, // 0024 GETMET R9 R9 K7
- 0x7C240200, // 0025 CALL R9 1
- 0x8C241308, // 0026 GETMET R9 R9 K8
- 0x7C240200, // 0027 CALL R9 1
- 0x00280C09, // 0028 ADD R10 R6 R9
- 0x882C010A, // 0029 GETMBR R11 R0 K10
- 0x1428140B, // 002A LT R10 R10 R11
- 0x782A0002, // 002B JMPF R10 #002F
- 0x00180C09, // 002C ADD R6 R6 R9
- 0x001C0F09, // 002D ADD R7 R7 K9
- 0x70020000, // 002E JMP #0030
- 0x70020000, // 002F JMP #0031
- 0x7001FFEB, // 0030 JMP #001D
- 0x60240012, // 0031 GETGBL R9 G18
- 0x7C240000, // 0032 CALL R9 0
- 0x88280906, // 0033 GETMBR R10 R4 K6
- 0x4C2C0000, // 0034 LDNIL R11
- 0x2028140B, // 0035 NE R10 R10 R11
- 0x782A000D, // 0036 JMPF R10 #0045
- 0x40280F0B, // 0037 CONNECT R10 R7 K11
- 0x882C0906, // 0038 GETMBR R11 R4 K6
- 0x9424160A, // 0039 GETIDX R9 R11 R10
- 0x04300F09, // 003A SUB R12 R7 K9
- 0x40320A0C, // 003B CONNECT R12 K5 R12
- 0x88340906, // 003C GETMBR R13 R4 K6
- 0x94301A0C, // 003D GETIDX R12 R13 R12
- 0x90120C0C, // 003E SETMBR R4 K6 R12
- 0x6030000C, // 003F GETGBL R12 G12
- 0x5C341200, // 0040 MOVE R13 R9
- 0x7C300200, // 0041 CALL R12 1
- 0x24301905, // 0042 GT R12 R12 K5
- 0x9012080C, // 0043 SETMBR R4 K4 R12
- 0x70020001, // 0044 JMP #0047
- 0x50280000, // 0045 LDBOOL R10 0 0
- 0x9012080A, // 0046 SETMBR R4 K4 R10
- 0x78160008, // 0047 JMPF R5 #0051
- 0xB82A1800, // 0048 GETNGBL R10 K12
- 0x8C28150D, // 0049 GETMET R10 R10 K13
- 0x8C30050E, // 004A GETMET R12 R2 K14
- 0x5838000F, // 004B LDCONST R14 K15
- 0x8C3C0110, // 004C GETMET R15 R0 K16
- 0x7C3C0200, // 004D CALL R15 1
- 0x7C300600, // 004E CALL R12 3
- 0x58340011, // 004F LDCONST R13 K17
- 0x7C280600, // 0050 CALL R10 3
- 0x88280904, // 0051 GETMBR R10 R4 K4
- 0x782A000A, // 0052 JMPF R10 #005E
- 0x5C280A00, // 0053 MOVE R10 R5
- 0x742A0008, // 0054 JMPT R10 #005E
- 0xB82A1800, // 0055 GETNGBL R10 K12
- 0x8C28150D, // 0056 GETMET R10 R10 K13
- 0x8C30050E, // 0057 GETMET R12 R2 K14
- 0x58380012, // 0058 LDCONST R14 K18
- 0x8C3C0110, // 0059 GETMET R15 R0 K16
- 0x7C3C0200, // 005A CALL R15 1
- 0x7C300600, // 005B CALL R12 3
- 0x58340011, // 005C LDCONST R13 K17
- 0x7C280600, // 005D CALL R10 3
- 0x88280103, // 005E GETMBR R10 R0 K3
- 0x8C281507, // 005F GETMET R10 R10 K7
- 0x7C280200, // 0060 CALL R10 1
- 0x8C2C1513, // 0061 GETMET R11 R10 K19
- 0x60340015, // 0062 GETGBL R13 G21
- 0x8838010A, // 0063 GETMBR R14 R0 K10
- 0x7C340200, // 0064 CALL R13 1
- 0x7C2C0400, // 0065 CALL R11 2
- 0x8C300714, // 0066 GETMET R12 R3 K20
- 0x5C381600, // 0067 MOVE R14 R11
- 0x7C300400, // 0068 CALL R12 2
- 0x8C300715, // 0069 GETMET R12 R3 K21
- 0x7C300200, // 006A CALL R12 1
- 0xB8321800, // 006B GETNGBL R12 K12
- 0x8C30190D, // 006C GETMET R12 R12 K13
- 0x8C38050E, // 006D GETMET R14 R2 K14
- 0x58400016, // 006E LDCONST R16 K22
- 0x88440717, // 006F GETMBR R17 R3 K23
- 0x88442318, // 0070 GETMBR R17 R17 K24
- 0x88480719, // 0071 GETMBR R18 R3 K25
- 0x884C071A, // 0072 GETMBR R19 R3 K26
- 0x8850071B, // 0073 GETMBR R20 R3 K27
- 0x7C380C00, // 0074 CALL R14 6
- 0x583C0011, // 0075 LDCONST R15 K17
- 0x7C300600, // 0076 CALL R12 3
- 0x8C30031C, // 0077 GETMET R12 R1 K28
- 0x5C380600, // 0078 MOVE R14 R3
- 0x7C300400, // 0079 CALL R12 2
- 0x88300719, // 007A GETMBR R12 R3 K25
- 0x90023A0C, // 007B SETMBR R0 K29 R12
- 0x6030000C, // 007C GETGBL R12 G12
- 0x5C341200, // 007D MOVE R13 R9
- 0x7C300200, // 007E CALL R12 1
- 0x24301905, // 007F GT R12 R12 K5
- 0x7832000E, // 0080 JMPF R12 #0090
- 0x90120C09, // 0081 SETMBR R4 K6 R9
- 0xB8321800, // 0082 GETNGBL R12 K12
- 0x8C30190D, // 0083 GETMET R12 R12 K13
- 0x8C38050E, // 0084 GETMET R14 R2 K14
- 0x5840001E, // 0085 LDCONST R16 K30
- 0x6044000C, // 0086 GETGBL R17 G12
- 0x88480906, // 0087 GETMBR R18 R4 K6
- 0x7C440200, // 0088 CALL R17 1
- 0x8848071A, // 0089 GETMBR R18 R3 K26
- 0x7C380800, // 008A CALL R14 4
- 0x583C0011, // 008B LDCONST R15 K17
- 0x7C300600, // 008C CALL R12 3
- 0x50300000, // 008D LDBOOL R12 0 0
- 0x9002020C, // 008E SETMBR R0 K1 R12
- 0x70020001, // 008F JMP #0092
- 0x50300200, // 0090 LDBOOL R12 1 0
- 0x90023E0C, // 0091 SETMBR R0 K31 R12
- 0x80000000, // 0092 RET 0
+ 0x941C1208, // 0010 GETIDX R7 R9 R8
+ 0x04280D05, // 0011 SUB R10 R6 K5
+ 0x402A100A, // 0012 CONNECT R10 K8 R10
+ 0x882C0906, // 0013 GETMBR R11 R4 K6
+ 0x9428160A, // 0014 GETIDX R10 R11 R10
+ 0x90120C0A, // 0015 SETMBR R4 K6 R10
+ 0x6028000C, // 0016 GETGBL R10 G12
+ 0x5C2C0E00, // 0017 MOVE R11 R7
+ 0x7C280200, // 0018 CALL R10 1
+ 0x24281508, // 0019 GT R10 R10 K8
+ 0x9012080A, // 001A SETMBR R4 K4 R10
+ 0x70020001, // 001B JMP #001E
+ 0x50200000, // 001C LDBOOL R8 0 0
+ 0x90120808, // 001D SETMBR R4 K4 R8
+ 0x78160008, // 001E JMPF R5 #0028
+ 0xB8221200, // 001F GETNGBL R8 K9
+ 0x8C20110A, // 0020 GETMET R8 R8 K10
+ 0x8C28050B, // 0021 GETMET R10 R2 K11
+ 0x5830000C, // 0022 LDCONST R12 K12
+ 0x8C34010D, // 0023 GETMET R13 R0 K13
+ 0x7C340200, // 0024 CALL R13 1
+ 0x7C280600, // 0025 CALL R10 3
+ 0x582C000E, // 0026 LDCONST R11 K14
+ 0x7C200600, // 0027 CALL R8 3
+ 0x88200904, // 0028 GETMBR R8 R4 K4
+ 0x7822000A, // 0029 JMPF R8 #0035
+ 0x5C200A00, // 002A MOVE R8 R5
+ 0x74220008, // 002B JMPT R8 #0035
+ 0xB8221200, // 002C GETNGBL R8 K9
+ 0x8C20110A, // 002D GETMET R8 R8 K10
+ 0x8C28050B, // 002E GETMET R10 R2 K11
+ 0x5830000F, // 002F LDCONST R12 K15
+ 0x8C34010D, // 0030 GETMET R13 R0 K13
+ 0x7C340200, // 0031 CALL R13 1
+ 0x7C280600, // 0032 CALL R10 3
+ 0x582C000E, // 0033 LDCONST R11 K14
+ 0x7C200600, // 0034 CALL R8 3
+ 0x88200103, // 0035 GETMBR R8 R0 K3
+ 0x8C201110, // 0036 GETMET R8 R8 K16
+ 0x7C200200, // 0037 CALL R8 1
+ 0x8C241111, // 0038 GETMET R9 R8 K17
+ 0x602C0015, // 0039 GETGBL R11 G21
+ 0x88300112, // 003A GETMBR R12 R0 K18
+ 0x7C2C0200, // 003B CALL R11 1
+ 0x7C240400, // 003C CALL R9 2
+ 0x8C280713, // 003D GETMET R10 R3 K19
+ 0x5C301200, // 003E MOVE R12 R9
+ 0x7C280400, // 003F CALL R10 2
+ 0x8C280714, // 0040 GETMET R10 R3 K20
+ 0x7C280200, // 0041 CALL R10 1
+ 0xB82A1200, // 0042 GETNGBL R10 K9
+ 0x8C28150A, // 0043 GETMET R10 R10 K10
+ 0x8C30050B, // 0044 GETMET R12 R2 K11
+ 0x58380015, // 0045 LDCONST R14 K21
+ 0x883C0716, // 0046 GETMBR R15 R3 K22
+ 0x883C1F17, // 0047 GETMBR R15 R15 K23
+ 0x88400718, // 0048 GETMBR R16 R3 K24
+ 0x88440719, // 0049 GETMBR R17 R3 K25
+ 0x8848071A, // 004A GETMBR R18 R3 K26
+ 0x7C300C00, // 004B CALL R12 6
+ 0x5834000E, // 004C LDCONST R13 K14
+ 0x7C280600, // 004D CALL R10 3
+ 0x8C28031B, // 004E GETMET R10 R1 K27
+ 0x5C300600, // 004F MOVE R12 R3
+ 0x7C280400, // 0050 CALL R10 2
+ 0x88280718, // 0051 GETMBR R10 R3 K24
+ 0x9002380A, // 0052 SETMBR R0 K28 R10
+ 0x4C280000, // 0053 LDNIL R10
+ 0x20280E0A, // 0054 NE R10 R7 R10
+ 0x782A0013, // 0055 JMPF R10 #006A
+ 0x6028000C, // 0056 GETGBL R10 G12
+ 0x5C2C0E00, // 0057 MOVE R11 R7
+ 0x7C280200, // 0058 CALL R10 1
+ 0x24281508, // 0059 GT R10 R10 K8
+ 0x782A000E, // 005A JMPF R10 #006A
+ 0x90120C07, // 005B SETMBR R4 K6 R7
+ 0xB82A1200, // 005C GETNGBL R10 K9
+ 0x8C28150A, // 005D GETMET R10 R10 K10
+ 0x8C30050B, // 005E GETMET R12 R2 K11
+ 0x5838001D, // 005F LDCONST R14 K29
+ 0x603C000C, // 0060 GETGBL R15 G12
+ 0x88400906, // 0061 GETMBR R16 R4 K6
+ 0x7C3C0200, // 0062 CALL R15 1
+ 0x88400719, // 0063 GETMBR R16 R3 K25
+ 0x7C300800, // 0064 CALL R12 4
+ 0x5834000E, // 0065 LDCONST R13 K14
+ 0x7C280600, // 0066 CALL R10 3
+ 0x50280000, // 0067 LDBOOL R10 0 0
+ 0x9002020A, // 0068 SETMBR R0 K1 R10
+ 0x70020001, // 0069 JMP #006C
+ 0x50280200, // 006A LDBOOL R10 1 0
+ 0x90023C0A, // 006B SETMBR R0 K30 R10
+ 0x80000000, // 006C RET 0
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor.h
new file mode 100644
index 000000000..f38d1d6d6
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor.h
@@ -0,0 +1,179 @@
+/* Solidification of Matter_Plugin_Sensor.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Sensor;
+
+/********************************************************************
+** Solidified function: pre_value
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_pre_value, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(pre_value),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80040200, // 0000 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_sensors
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_parse_sensors, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(tasmota_sensor_matcher),
+ /* K1 */ be_nested_str_weak(pre_value),
+ /* K2 */ be_nested_str_weak(match),
+ /* K3 */ be_nested_str_weak(shadow_value),
+ /* K4 */ be_nested_str_weak(valued_changed),
+ }),
+ be_str_weak(parse_sensors),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x780A0011, // 0001 JMPF R2 #0014
+ 0x8C080101, // 0002 GETMET R2 R0 K1
+ 0x6010000A, // 0003 GETGBL R4 G10
+ 0x88140100, // 0004 GETMBR R5 R0 K0
+ 0x8C140B02, // 0005 GETMET R5 R5 K2
+ 0x5C1C0200, // 0006 MOVE R7 R1
+ 0x7C140400, // 0007 CALL R5 2
+ 0x7C100200, // 0008 CALL R4 1
+ 0x7C080400, // 0009 CALL R2 2
+ 0x4C0C0000, // 000A LDNIL R3
+ 0x200C0403, // 000B NE R3 R2 R3
+ 0x780E0006, // 000C JMPF R3 #0014
+ 0x880C0103, // 000D GETMBR R3 R0 K3
+ 0x200C0403, // 000E NE R3 R2 R3
+ 0x780E0002, // 000F JMPF R3 #0013
+ 0x8C0C0104, // 0010 GETMET R3 R0 K4
+ 0x5C140400, // 0011 MOVE R5 R2
+ 0x7C0C0400, // 0012 CALL R3 2
+ 0x90020602, // 0013 SETMBR R0 K3 R2
+ 0x80000000, // 0014 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: valued_changed
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_valued_changed, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(valued_changed),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_init, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 4, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 6]) { /* constants */
+ /* K0 */ be_nested_str_weak(init),
+ /* 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[15]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C100900, // 0003 GETMET R4 R4 K0
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x5C1C0400, // 0005 MOVE R7 R2
+ 0x7C100600, // 0006 CALL R4 3
+ 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
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Sensor
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Device;
+be_local_class(Matter_Plugin_Sensor,
+ 3,
+ &be_class_Matter_Plugin_Device,
+ be_nested_map(7,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
+ { be_const_key_weak(pre_value, 2), be_const_closure(Matter_Plugin_Sensor_pre_value_closure) },
+ { be_const_key_weak(parse_sensors, -1), be_const_closure(Matter_Plugin_Sensor_parse_sensors_closure) },
+ { be_const_key_weak(shadow_value, -1), be_const_var(2) },
+ { be_const_key_weak(tasmota_sensor_filter, 3), be_const_var(0) },
+ { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Sensor_init_closure) },
+ { be_const_key_weak(valued_changed, 0), be_const_closure(Matter_Plugin_Sensor_valued_changed_closure) },
+ })),
+ be_str_weak(Matter_Plugin_Sensor)
+);
+/*******************************************************************/
+
+void be_load_Matter_Plugin_Sensor_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Matter_Plugin_Sensor);
+ be_setglobal(vm, "Matter_Plugin_Sensor");
+ be_pop(vm, 1);
+}
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Humidity.h
new file mode 100644
index 000000000..88c5d7c55
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Humidity.h
@@ -0,0 +1,220 @@
+/* Solidification of Matter_Plugin_Sensor_Humidity.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Sensor_Humidity;
+
+/********************************************************************
+** Solidified function: valued_changed
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Humidity_valued_changed, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(attribute_updated),
+ /* K1 */ be_const_int(0),
+ }),
+ be_str_weak(valued_changed),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x4C100000, // 0001 LDNIL R4
+ 0x54160404, // 0002 LDINT R5 1029
+ 0x58180001, // 0003 LDCONST R6 K1
+ 0x7C080800, // 0004 CALL R2 4
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: pre_value
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Humidity_pre_value, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(pre_value),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x540E0063, // 0001 LDINT R3 100
+ 0x080C0203, // 0002 MUL R3 R1 R3
+ 0x7C080200, // 0003 CALL R2 1
+ 0x80040400, // 0004 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has 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(shadow_value),
+ /* K7 */ be_nested_str_weak(create_TLV),
+ /* K8 */ be_nested_str_weak(U2),
+ /* K9 */ be_nested_str_weak(NULL),
+ /* K10 */ be_const_int(1),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(U4),
+ /* K13 */ be_const_int(3),
+ /* K14 */ be_nested_str_weak(read_attribute),
+ }),
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[71]) { /* 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
+ 0x541E0404, // 0005 LDINT R7 1029
+ 0x1C1C0A07, // 0006 EQ R7 R5 R7
+ 0x781E0035, // 0007 JMPF R7 #003E
+ 0x1C1C0D05, // 0008 EQ R7 R6 K5
+ 0x781E0011, // 0009 JMPF R7 #001C
+ 0x881C0106, // 000A GETMBR R7 R0 K6
+ 0x4C200000, // 000B LDNIL R8
+ 0x201C0E08, // 000C NE R7 R7 R8
+ 0x781E0007, // 000D JMPF R7 #0016
+ 0x8C1C0907, // 000E GETMET R7 R4 K7
+ 0x88240908, // 000F GETMBR R9 R4 K8
+ 0x60280009, // 0010 GETGBL R10 G9
+ 0x882C0106, // 0011 GETMBR R11 R0 K6
+ 0x7C280200, // 0012 CALL R10 1
+ 0x7C1C0600, // 0013 CALL R7 3
+ 0x80040E00, // 0014 RET 1 R7
+ 0x70020004, // 0015 JMP #001B
+ 0x8C1C0907, // 0016 GETMET R7 R4 K7
+ 0x88240909, // 0017 GETMBR R9 R4 K9
+ 0x4C280000, // 0018 LDNIL R10
+ 0x7C1C0600, // 0019 CALL R7 3
+ 0x80040E00, // 001A RET 1 R7
+ 0x70020020, // 001B JMP #003D
+ 0x1C1C0D0A, // 001C EQ R7 R6 K10
+ 0x781E0005, // 001D JMPF R7 #0024
+ 0x8C1C0907, // 001E GETMET R7 R4 K7
+ 0x88240908, // 001F GETMBR R9 R4 K8
+ 0x542A01F3, // 0020 LDINT R10 500
+ 0x7C1C0600, // 0021 CALL R7 3
+ 0x80040E00, // 0022 RET 1 R7
+ 0x70020018, // 0023 JMP #003D
+ 0x1C1C0D0B, // 0024 EQ R7 R6 K11
+ 0x781E0005, // 0025 JMPF R7 #002C
+ 0x8C1C0907, // 0026 GETMET R7 R4 K7
+ 0x88240908, // 0027 GETMBR R9 R4 K8
+ 0x542A270F, // 0028 LDINT R10 10000
+ 0x7C1C0600, // 0029 CALL R7 3
+ 0x80040E00, // 002A RET 1 R7
+ 0x70020010, // 002B JMP #003D
+ 0x541EFFFB, // 002C LDINT R7 65532
+ 0x1C1C0C07, // 002D EQ R7 R6 R7
+ 0x781E0005, // 002E JMPF R7 #0035
+ 0x8C1C0907, // 002F GETMET R7 R4 K7
+ 0x8824090C, // 0030 GETMBR R9 R4 K12
+ 0x58280005, // 0031 LDCONST R10 K5
+ 0x7C1C0600, // 0032 CALL R7 3
+ 0x80040E00, // 0033 RET 1 R7
+ 0x70020007, // 0034 JMP #003D
+ 0x541EFFFC, // 0035 LDINT R7 65533
+ 0x1C1C0C07, // 0036 EQ R7 R6 R7
+ 0x781E0004, // 0037 JMPF R7 #003D
+ 0x8C1C0907, // 0038 GETMET R7 R4 K7
+ 0x8824090C, // 0039 GETMBR R9 R4 K12
+ 0x5828000D, // 003A LDCONST R10 K13
+ 0x7C1C0600, // 003B CALL R7 3
+ 0x80040E00, // 003C RET 1 R7
+ 0x70020007, // 003D JMP #0046
+ 0x601C0003, // 003E GETGBL R7 G3
+ 0x5C200000, // 003F MOVE R8 R0
+ 0x7C1C0200, // 0040 CALL R7 1
+ 0x8C1C0F0E, // 0041 GETMET R7 R7 K14
+ 0x5C240200, // 0042 MOVE R9 R1
+ 0x5C280400, // 0043 MOVE R10 R2
+ 0x7C1C0600, // 0044 CALL R7 3
+ 0x80040E00, // 0045 RET 1 R7
+ 0x80000000, // 0046 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Sensor_Humidity
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor;
+be_local_class(Matter_Plugin_Sensor_Humidity,
+ 0,
+ &be_class_Matter_Plugin_Sensor,
+ be_nested_map(5,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(valued_changed, 3), be_const_closure(Matter_Plugin_Sensor_Humidity_valued_changed_closure) },
+ { be_const_key_weak(pre_value, -1), be_const_closure(Matter_Plugin_Sensor_Humidity_pre_value_closure) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Sensor_Humidity_read_attribute_closure) },
+ { 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(775, -1), be_const_int(2) },
+ })) ) } )) },
+ { 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(1029, -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(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ })) ) } )) },
+ })),
+ be_str_weak(Matter_Plugin_Sensor_Humidity)
+);
+/*******************************************************************/
+
+void be_load_Matter_Plugin_Sensor_Humidity_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Matter_Plugin_Sensor_Humidity);
+ be_setglobal(vm, "Matter_Plugin_Sensor_Humidity");
+ be_pop(vm, 1);
+}
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Light.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Light.h
new file mode 100644
index 000000000..4cc5a9cd9
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Light.h
@@ -0,0 +1,219 @@
+/* Solidification of Matter_Plugin_Sensor_Light.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Sensor_Light;
+
+/********************************************************************
+** Solidified function: valued_changed
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Light_valued_changed, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(attribute_updated),
+ /* K1 */ be_const_int(0),
+ }),
+ be_str_weak(valued_changed),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x4C100000, // 0001 LDNIL R4
+ 0x541603FF, // 0002 LDINT R5 1024
+ 0x58180001, // 0003 LDCONST R6 K1
+ 0x7C080800, // 0004 CALL R2 4
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: pre_value
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Light_pre_value, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(pre_value),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x80040400, // 0003 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Light_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has 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(shadow_value),
+ /* K7 */ be_nested_str_weak(create_TLV),
+ /* K8 */ be_nested_str_weak(I2),
+ /* K9 */ be_nested_str_weak(NULL),
+ /* K10 */ be_const_int(1),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(U4),
+ /* K13 */ be_const_int(3),
+ /* K14 */ be_nested_str_weak(read_attribute),
+ }),
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[71]) { /* 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
+ 0x541E03FF, // 0005 LDINT R7 1024
+ 0x1C1C0A07, // 0006 EQ R7 R5 R7
+ 0x781E0035, // 0007 JMPF R7 #003E
+ 0x1C1C0D05, // 0008 EQ R7 R6 K5
+ 0x781E0011, // 0009 JMPF R7 #001C
+ 0x881C0106, // 000A GETMBR R7 R0 K6
+ 0x4C200000, // 000B LDNIL R8
+ 0x201C0E08, // 000C NE R7 R7 R8
+ 0x781E0007, // 000D JMPF R7 #0016
+ 0x8C1C0907, // 000E GETMET R7 R4 K7
+ 0x88240908, // 000F GETMBR R9 R4 K8
+ 0x60280009, // 0010 GETGBL R10 G9
+ 0x882C0106, // 0011 GETMBR R11 R0 K6
+ 0x7C280200, // 0012 CALL R10 1
+ 0x7C1C0600, // 0013 CALL R7 3
+ 0x80040E00, // 0014 RET 1 R7
+ 0x70020004, // 0015 JMP #001B
+ 0x8C1C0907, // 0016 GETMET R7 R4 K7
+ 0x88240909, // 0017 GETMBR R9 R4 K9
+ 0x4C280000, // 0018 LDNIL R10
+ 0x7C1C0600, // 0019 CALL R7 3
+ 0x80040E00, // 001A RET 1 R7
+ 0x70020020, // 001B JMP #003D
+ 0x1C1C0D0A, // 001C EQ R7 R6 K10
+ 0x781E0005, // 001D JMPF R7 #0024
+ 0x8C1C0907, // 001E GETMET R7 R4 K7
+ 0x88240908, // 001F GETMBR R9 R4 K8
+ 0x58280005, // 0020 LDCONST R10 K5
+ 0x7C1C0600, // 0021 CALL R7 3
+ 0x80040E00, // 0022 RET 1 R7
+ 0x70020018, // 0023 JMP #003D
+ 0x1C1C0D0B, // 0024 EQ R7 R6 K11
+ 0x781E0005, // 0025 JMPF R7 #002C
+ 0x8C1C0907, // 0026 GETMET R7 R4 K7
+ 0x88240908, // 0027 GETMBR R9 R4 K8
+ 0x542A270F, // 0028 LDINT R10 10000
+ 0x7C1C0600, // 0029 CALL R7 3
+ 0x80040E00, // 002A RET 1 R7
+ 0x70020010, // 002B JMP #003D
+ 0x541EFFFB, // 002C LDINT R7 65532
+ 0x1C1C0C07, // 002D EQ R7 R6 R7
+ 0x781E0005, // 002E JMPF R7 #0035
+ 0x8C1C0907, // 002F GETMET R7 R4 K7
+ 0x8824090C, // 0030 GETMBR R9 R4 K12
+ 0x58280005, // 0031 LDCONST R10 K5
+ 0x7C1C0600, // 0032 CALL R7 3
+ 0x80040E00, // 0033 RET 1 R7
+ 0x70020007, // 0034 JMP #003D
+ 0x541EFFFC, // 0035 LDINT R7 65533
+ 0x1C1C0C07, // 0036 EQ R7 R6 R7
+ 0x781E0004, // 0037 JMPF R7 #003D
+ 0x8C1C0907, // 0038 GETMET R7 R4 K7
+ 0x8824090C, // 0039 GETMBR R9 R4 K12
+ 0x5828000D, // 003A LDCONST R10 K13
+ 0x7C1C0600, // 003B CALL R7 3
+ 0x80040E00, // 003C RET 1 R7
+ 0x70020007, // 003D JMP #0046
+ 0x601C0003, // 003E GETGBL R7 G3
+ 0x5C200000, // 003F MOVE R8 R0
+ 0x7C1C0200, // 0040 CALL R7 1
+ 0x8C1C0F0E, // 0041 GETMET R7 R7 K14
+ 0x5C240200, // 0042 MOVE R9 R1
+ 0x5C280400, // 0043 MOVE R10 R2
+ 0x7C1C0600, // 0044 CALL R7 3
+ 0x80040E00, // 0045 RET 1 R7
+ 0x80000000, // 0046 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Sensor_Light
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor;
+be_local_class(Matter_Plugin_Sensor_Light,
+ 0,
+ &be_class_Matter_Plugin_Sensor,
+ be_nested_map(5,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(valued_changed, 3), be_const_closure(Matter_Plugin_Sensor_Light_valued_changed_closure) },
+ { be_const_key_weak(pre_value, -1), be_const_closure(Matter_Plugin_Sensor_Light_pre_value_closure) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Sensor_Light_read_attribute_closure) },
+ { 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(262, -1), be_const_int(2) },
+ })) ) } )) },
+ { 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(1024, -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(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ })) ) } )) },
+ })),
+ be_str_weak(Matter_Plugin_Sensor_Light)
+);
+/*******************************************************************/
+
+void be_load_Matter_Plugin_Sensor_Light_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Matter_Plugin_Sensor_Light);
+ be_setglobal(vm, "Matter_Plugin_Sensor_Light");
+ be_pop(vm, 1);
+}
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Pressure.h
new file mode 100644
index 000000000..7918e7e0d
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Pressure.h
@@ -0,0 +1,219 @@
+/* Solidification of Matter_Plugin_Sensor_Pressure.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Sensor_Pressure;
+
+/********************************************************************
+** Solidified function: valued_changed
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Pressure_valued_changed, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(attribute_updated),
+ /* K1 */ be_const_int(0),
+ }),
+ be_str_weak(valued_changed),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x4C100000, // 0001 LDNIL R4
+ 0x54160402, // 0002 LDINT R5 1027
+ 0x58180001, // 0003 LDCONST R6 K1
+ 0x7C080800, // 0004 CALL R2 4
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: pre_value
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Pressure_pre_value, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(pre_value),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x80040400, // 0003 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 3, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has 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(shadow_value),
+ /* K7 */ be_nested_str_weak(create_TLV),
+ /* K8 */ be_nested_str_weak(I2),
+ /* K9 */ be_nested_str_weak(NULL),
+ /* K10 */ be_const_int(1),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(U4),
+ /* K13 */ be_const_int(3),
+ /* K14 */ be_nested_str_weak(read_attribute),
+ }),
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[71]) { /* 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
+ 0x541E0402, // 0005 LDINT R7 1027
+ 0x1C1C0A07, // 0006 EQ R7 R5 R7
+ 0x781E0035, // 0007 JMPF R7 #003E
+ 0x1C1C0D05, // 0008 EQ R7 R6 K5
+ 0x781E0011, // 0009 JMPF R7 #001C
+ 0x881C0106, // 000A GETMBR R7 R0 K6
+ 0x4C200000, // 000B LDNIL R8
+ 0x201C0E08, // 000C NE R7 R7 R8
+ 0x781E0007, // 000D JMPF R7 #0016
+ 0x8C1C0907, // 000E GETMET R7 R4 K7
+ 0x88240908, // 000F GETMBR R9 R4 K8
+ 0x60280009, // 0010 GETGBL R10 G9
+ 0x882C0106, // 0011 GETMBR R11 R0 K6
+ 0x7C280200, // 0012 CALL R10 1
+ 0x7C1C0600, // 0013 CALL R7 3
+ 0x80040E00, // 0014 RET 1 R7
+ 0x70020004, // 0015 JMP #001B
+ 0x8C1C0907, // 0016 GETMET R7 R4 K7
+ 0x88240909, // 0017 GETMBR R9 R4 K9
+ 0x4C280000, // 0018 LDNIL R10
+ 0x7C1C0600, // 0019 CALL R7 3
+ 0x80040E00, // 001A RET 1 R7
+ 0x70020020, // 001B JMP #003D
+ 0x1C1C0D0A, // 001C EQ R7 R6 K10
+ 0x781E0005, // 001D JMPF R7 #0024
+ 0x8C1C0907, // 001E GETMET R7 R4 K7
+ 0x88240908, // 001F GETMBR R9 R4 K8
+ 0x542A01F3, // 0020 LDINT R10 500
+ 0x7C1C0600, // 0021 CALL R7 3
+ 0x80040E00, // 0022 RET 1 R7
+ 0x70020018, // 0023 JMP #003D
+ 0x1C1C0D0B, // 0024 EQ R7 R6 K11
+ 0x781E0005, // 0025 JMPF R7 #002C
+ 0x8C1C0907, // 0026 GETMET R7 R4 K7
+ 0x88240908, // 0027 GETMBR R9 R4 K8
+ 0x542A05DB, // 0028 LDINT R10 1500
+ 0x7C1C0600, // 0029 CALL R7 3
+ 0x80040E00, // 002A RET 1 R7
+ 0x70020010, // 002B JMP #003D
+ 0x541EFFFB, // 002C LDINT R7 65532
+ 0x1C1C0C07, // 002D EQ R7 R6 R7
+ 0x781E0005, // 002E JMPF R7 #0035
+ 0x8C1C0907, // 002F GETMET R7 R4 K7
+ 0x8824090C, // 0030 GETMBR R9 R4 K12
+ 0x58280005, // 0031 LDCONST R10 K5
+ 0x7C1C0600, // 0032 CALL R7 3
+ 0x80040E00, // 0033 RET 1 R7
+ 0x70020007, // 0034 JMP #003D
+ 0x541EFFFC, // 0035 LDINT R7 65533
+ 0x1C1C0C07, // 0036 EQ R7 R6 R7
+ 0x781E0004, // 0037 JMPF R7 #003D
+ 0x8C1C0907, // 0038 GETMET R7 R4 K7
+ 0x8824090C, // 0039 GETMBR R9 R4 K12
+ 0x5828000D, // 003A LDCONST R10 K13
+ 0x7C1C0600, // 003B CALL R7 3
+ 0x80040E00, // 003C RET 1 R7
+ 0x70020007, // 003D JMP #0046
+ 0x601C0003, // 003E GETGBL R7 G3
+ 0x5C200000, // 003F MOVE R8 R0
+ 0x7C1C0200, // 0040 CALL R7 1
+ 0x8C1C0F0E, // 0041 GETMET R7 R7 K14
+ 0x5C240200, // 0042 MOVE R9 R1
+ 0x5C280400, // 0043 MOVE R10 R2
+ 0x7C1C0600, // 0044 CALL R7 3
+ 0x80040E00, // 0045 RET 1 R7
+ 0x80000000, // 0046 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Sensor_Pressure
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor;
+be_local_class(Matter_Plugin_Sensor_Pressure,
+ 0,
+ &be_class_Matter_Plugin_Sensor,
+ be_nested_map(5,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(valued_changed, 3), be_const_closure(Matter_Plugin_Sensor_Pressure_valued_changed_closure) },
+ { be_const_key_weak(pre_value, -1), be_const_closure(Matter_Plugin_Sensor_Pressure_pre_value_closure) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Sensor_Pressure_read_attribute_closure) },
+ { 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(773, -1), be_const_int(2) },
+ })) ) } )) },
+ { 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(1027, -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(65532),
+ be_const_int(65533),
+ })) ) } )) },
+ })) ) } )) },
+ })),
+ be_str_weak(Matter_Plugin_Sensor_Pressure)
+);
+/*******************************************************************/
+
+void be_load_Matter_Plugin_Sensor_Pressure_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Matter_Plugin_Sensor_Pressure);
+ be_setglobal(vm, "Matter_Plugin_Sensor_Pressure");
+ be_pop(vm, 1);
+}
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Temp.h
new file mode 100644
index 000000000..99d00d696
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_Temp.h
@@ -0,0 +1,215 @@
+/* Solidification of Matter_Plugin_Sensor_Temp.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Sensor_Temp;
+
+/********************************************************************
+** Solidified function: valued_changed
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Temp_valued_changed, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(attribute_updated),
+ /* K1 */ be_const_int(0),
+ }),
+ be_str_weak(valued_changed),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x4C100000, // 0001 LDNIL R4
+ 0x54160401, // 0002 LDINT R5 1026
+ 0x58180001, // 0003 LDCONST R6 K1
+ 0x7C080800, // 0004 CALL R2 4
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: pre_value
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Temp_pre_value, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(pre_value),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x540E0063, // 0001 LDINT R3 100
+ 0x080C0203, // 0002 MUL R3 R1 R3
+ 0x7C080200, // 0003 CALL R2 1
+ 0x80040400, // 0004 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(Matter_Plugin_Sensor_Temp_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[14]) { /* 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(shadow_value),
+ /* K7 */ be_nested_str_weak(create_TLV),
+ /* K8 */ be_nested_str_weak(I2),
+ /* K9 */ be_nested_str_weak(NULL),
+ /* K10 */ be_const_int(1),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(U4),
+ /* K13 */ be_nested_str_weak(read_attribute),
+ }),
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[69]) { /* 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
+ 0x541E0401, // 0005 LDINT R7 1026
+ 0x1C1C0A07, // 0006 EQ R7 R5 R7
+ 0x781E0033, // 0007 JMPF R7 #003C
+ 0x1C1C0D05, // 0008 EQ R7 R6 K5
+ 0x781E000F, // 0009 JMPF R7 #001A
+ 0x881C0106, // 000A GETMBR R7 R0 K6
+ 0x4C200000, // 000B LDNIL R8
+ 0x201C0E08, // 000C NE R7 R7 R8
+ 0x781E0005, // 000D JMPF R7 #0014
+ 0x8C1C0907, // 000E GETMET R7 R4 K7
+ 0x88240908, // 000F GETMBR R9 R4 K8
+ 0x88280106, // 0010 GETMBR R10 R0 K6
+ 0x7C1C0600, // 0011 CALL R7 3
+ 0x80040E00, // 0012 RET 1 R7
+ 0x70020004, // 0013 JMP #0019
+ 0x8C1C0907, // 0014 GETMET R7 R4 K7
+ 0x88240909, // 0015 GETMBR R9 R4 K9
+ 0x4C280000, // 0016 LDNIL R10
+ 0x7C1C0600, // 0017 CALL R7 3
+ 0x80040E00, // 0018 RET 1 R7
+ 0x70020020, // 0019 JMP #003B
+ 0x1C1C0D0A, // 001A EQ R7 R6 K10
+ 0x781E0005, // 001B JMPF R7 #0022
+ 0x8C1C0907, // 001C GETMET R7 R4 K7
+ 0x88240908, // 001D GETMBR R9 R4 K8
+ 0x5429EC77, // 001E LDINT R10 -5000
+ 0x7C1C0600, // 001F CALL R7 3
+ 0x80040E00, // 0020 RET 1 R7
+ 0x70020018, // 0021 JMP #003B
+ 0x1C1C0D0B, // 0022 EQ R7 R6 K11
+ 0x781E0005, // 0023 JMPF R7 #002A
+ 0x8C1C0907, // 0024 GETMET R7 R4 K7
+ 0x88240908, // 0025 GETMBR R9 R4 K8
+ 0x542A3A97, // 0026 LDINT R10 15000
+ 0x7C1C0600, // 0027 CALL R7 3
+ 0x80040E00, // 0028 RET 1 R7
+ 0x70020010, // 0029 JMP #003B
+ 0x541EFFFB, // 002A LDINT R7 65532
+ 0x1C1C0C07, // 002B EQ R7 R6 R7
+ 0x781E0005, // 002C JMPF R7 #0033
+ 0x8C1C0907, // 002D GETMET R7 R4 K7
+ 0x8824090C, // 002E GETMBR R9 R4 K12
+ 0x58280005, // 002F LDCONST R10 K5
+ 0x7C1C0600, // 0030 CALL R7 3
+ 0x80040E00, // 0031 RET 1 R7
+ 0x70020007, // 0032 JMP #003B
+ 0x541EFFFC, // 0033 LDINT R7 65533
+ 0x1C1C0C07, // 0034 EQ R7 R6 R7
+ 0x781E0004, // 0035 JMPF R7 #003B
+ 0x8C1C0907, // 0036 GETMET R7 R4 K7
+ 0x8824090C, // 0037 GETMBR R9 R4 K12
+ 0x542A0003, // 0038 LDINT R10 4
+ 0x7C1C0600, // 0039 CALL R7 3
+ 0x80040E00, // 003A RET 1 R7
+ 0x70020007, // 003B JMP #0044
+ 0x601C0003, // 003C GETGBL R7 G3
+ 0x5C200000, // 003D MOVE R8 R0
+ 0x7C1C0200, // 003E CALL R7 1
+ 0x8C1C0F0D, // 003F GETMET R7 R7 K13
+ 0x5C240200, // 0040 MOVE R9 R1
+ 0x5C280400, // 0041 MOVE R10 R2
+ 0x7C1C0600, // 0042 CALL R7 3
+ 0x80040E00, // 0043 RET 1 R7
+ 0x80000000, // 0044 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Sensor_Temp
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor;
+be_local_class(Matter_Plugin_Sensor_Temp,
+ 0,
+ &be_class_Matter_Plugin_Sensor,
+ be_nested_map(5,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(valued_changed, 3), be_const_closure(Matter_Plugin_Sensor_Temp_valued_changed_closure) },
+ { be_const_key_weak(pre_value, -1), be_const_closure(Matter_Plugin_Sensor_Temp_pre_value_closure) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Sensor_Temp_read_attribute_closure) },
+ { 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(770, -1), be_const_int(2) },
+ })) ) } )) },
+ { 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(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_str_weak(Matter_Plugin_Sensor_Temp)
+);
+/*******************************************************************/
+
+void be_load_Matter_Plugin_Sensor_Temp_class(bvm *vm) {
+ be_pushntvclass(vm, &be_class_Matter_Plugin_Sensor_Temp);
+ be_setglobal(vm, "Matter_Plugin_Sensor_Temp");
+ be_pop(vm, 1);
+}
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Temp_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Temp_Sensor.h
deleted file mode 100644
index 0c91b56c3..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Temp_Sensor.h
+++ /dev/null
@@ -1,295 +0,0 @@
-/* Solidification of Matter_Plugin_Temp_Sensor.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Temp_Sensor;
-
-/********************************************************************
-** Solidified function: get_temperature
-********************************************************************/
-be_local_closure(Matter_Plugin_Temp_Sensor_get_temperature, /* 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(shadow_temperature),
- }),
- be_str_weak(get_temperature),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: every_second
-********************************************************************/
-be_local_closure(Matter_Plugin_Temp_Sensor_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(get_temperature),
- }),
- 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: parse_sensors
-********************************************************************/
-be_local_closure(Matter_Plugin_Temp_Sensor_parse_sensors, /* name */
- be_nested_proto(
- 8, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_sensor_matcher),
- /* K1 */ be_nested_str_weak(match),
- /* K2 */ be_nested_str_weak(shadow_temperature),
- /* K3 */ be_nested_str_weak(attribute_updated),
- /* K4 */ be_const_int(0),
- }),
- be_str_weak(parse_sensors),
- &be_const_str_solidified,
- ( &(const binstruction[21]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x780A0011, // 0001 JMPF R2 #0014
- 0x6008000A, // 0002 GETGBL R2 G10
- 0x880C0100, // 0003 GETMBR R3 R0 K0
- 0x8C0C0701, // 0004 GETMET R3 R3 K1
- 0x5C140200, // 0005 MOVE R5 R1
- 0x7C0C0400, // 0006 CALL R3 2
- 0x7C080200, // 0007 CALL R2 1
- 0x4C0C0000, // 0008 LDNIL R3
- 0x200C0403, // 0009 NE R3 R2 R3
- 0x780E0008, // 000A JMPF R3 #0014
- 0x880C0102, // 000B GETMBR R3 R0 K2
- 0x200C0403, // 000C NE R3 R2 R3
- 0x780E0004, // 000D JMPF R3 #0013
- 0x8C0C0103, // 000E GETMET R3 R0 K3
- 0x4C140000, // 000F LDNIL R5
- 0x541A0401, // 0010 LDINT R6 1026
- 0x581C0004, // 0011 LDCONST R7 K4
- 0x7C0C0800, // 0012 CALL R3 4
- 0x90020402, // 0013 SETMBR R0 K2 R2
- 0x80000000, // 0014 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-be_local_closure(Matter_Plugin_Temp_Sensor_init, /* name */
- be_nested_proto(
- 8, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* 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[15]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x7C100600, // 0006 CALL R4 3
- 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
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-be_local_closure(Matter_Plugin_Temp_Sensor_read_attribute, /* name */
- be_nested_proto(
- 13, /* nstack */
- 3, /* 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(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(shadow_temperature),
- /* K7 */ be_nested_str_weak(create_TLV),
- /* K8 */ be_nested_str_weak(I2),
- /* K9 */ be_nested_str_weak(NULL),
- /* K10 */ be_const_int(1),
- /* K11 */ be_const_int(2),
- /* K12 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[55]) { /* 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
- 0x541E0401, // 0005 LDINT R7 1026
- 0x1C1C0A07, // 0006 EQ R7 R5 R7
- 0x781E0025, // 0007 JMPF R7 #002E
- 0x1C1C0D05, // 0008 EQ R7 R6 K5
- 0x781E0013, // 0009 JMPF R7 #001E
- 0x881C0106, // 000A GETMBR R7 R0 K6
- 0x4C200000, // 000B LDNIL R8
- 0x201C0E08, // 000C NE R7 R7 R8
- 0x781E0009, // 000D JMPF R7 #0018
- 0x8C1C0907, // 000E GETMET R7 R4 K7
- 0x88240908, // 000F GETMBR R9 R4 K8
- 0x60280009, // 0010 GETGBL R10 G9
- 0x882C0106, // 0011 GETMBR R11 R0 K6
- 0x54320063, // 0012 LDINT R12 100
- 0x082C160C, // 0013 MUL R11 R11 R12
- 0x7C280200, // 0014 CALL R10 1
- 0x7C1C0600, // 0015 CALL R7 3
- 0x80040E00, // 0016 RET 1 R7
- 0x70020004, // 0017 JMP #001D
- 0x8C1C0907, // 0018 GETMET R7 R4 K7
- 0x88240909, // 0019 GETMBR R9 R4 K9
- 0x4C280000, // 001A LDNIL R10
- 0x7C1C0600, // 001B CALL R7 3
- 0x80040E00, // 001C RET 1 R7
- 0x7002000E, // 001D JMP #002D
- 0x1C1C0D0A, // 001E EQ R7 R6 K10
- 0x781E0005, // 001F JMPF R7 #0026
- 0x8C1C0907, // 0020 GETMET R7 R4 K7
- 0x88240908, // 0021 GETMBR R9 R4 K8
- 0x5429EC77, // 0022 LDINT R10 -5000
- 0x7C1C0600, // 0023 CALL R7 3
- 0x80040E00, // 0024 RET 1 R7
- 0x70020006, // 0025 JMP #002D
- 0x1C1C0D0B, // 0026 EQ R7 R6 K11
- 0x781E0004, // 0027 JMPF R7 #002D
- 0x8C1C0907, // 0028 GETMET R7 R4 K7
- 0x88240908, // 0029 GETMBR R9 R4 K8
- 0x542A3A97, // 002A LDINT R10 15000
- 0x7C1C0600, // 002B CALL R7 3
- 0x80040E00, // 002C RET 1 R7
- 0x70020007, // 002D JMP #0036
- 0x601C0003, // 002E GETGBL R7 G3
- 0x5C200000, // 002F MOVE R8 R0
- 0x7C1C0200, // 0030 CALL R7 1
- 0x8C1C0F0C, // 0031 GETMET R7 R7 K12
- 0x5C240200, // 0032 MOVE R9 R1
- 0x5C280400, // 0033 MOVE R10 R2
- 0x7C1C0600, // 0034 CALL R7 3
- 0x80040E00, // 0035 RET 1 R7
- 0x80000000, // 0036 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Temp_Sensor
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Device;
-be_local_class(Matter_Plugin_Temp_Sensor,
- 3,
- &be_class_Matter_Plugin_Device,
- be_nested_map(10,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(TYPES, 7), 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(770, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Temp_Sensor_read_attribute_closure) },
- { 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(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { 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_weak(every_second, 3), be_const_closure(Matter_Plugin_Temp_Sensor_every_second_closure) },
- { be_const_key_weak(tasmota_sensor_filter, 8), be_const_var(0) },
- { be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
- { be_const_key_weak(parse_sensors, -1), be_const_closure(Matter_Plugin_Temp_Sensor_parse_sensors_closure) },
- { be_const_key_weak(shadow_temperature, -1), be_const_var(2) },
- })),
- be_str_weak(Matter_Plugin_Temp_Sensor)
-);
-/*******************************************************************/
-
-void be_load_Matter_Plugin_Temp_Sensor_class(bvm *vm) {
- be_pushntvclass(vm, &be_class_Matter_Plugin_Temp_Sensor);
- be_setglobal(vm, "Matter_Plugin_Temp_Sensor");
- be_pop(vm, 1);
-}
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h
index b29cd7a2f..6cc6300b0 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h
@@ -1861,25 +1861,35 @@ be_local_closure(Matter_TLV_list_add_obj, /* name */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(to_TLV),
- /* K1 */ be_nested_str_weak(tag_sub),
- /* K2 */ be_nested_str_weak(val),
- /* K3 */ be_nested_str_weak(push),
+ /* K0 */ be_nested_str_weak(val),
+ /* K1 */ be_nested_str_weak(push),
+ /* K2 */ be_nested_str_weak(to_TLV),
+ /* K3 */ be_nested_str_weak(tag_sub),
}),
be_str_weak(add_obj),
&be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
+ ( &(const binstruction[21]) { /* code */
0x4C0C0000, // 0000 LDNIL R3
0x200C0403, // 0001 NE R3 R2 R3
- 0x780E0006, // 0002 JMPF R3 #000A
- 0x8C0C0500, // 0003 GETMET R3 R2 K0
- 0x7C0C0200, // 0004 CALL R3 1
- 0x900E0201, // 0005 SETMBR R3 K1 R1
- 0x88100102, // 0006 GETMBR R4 R0 K2
- 0x8C100903, // 0007 GETMET R4 R4 K3
- 0x5C180600, // 0008 MOVE R6 R3
- 0x7C100400, // 0009 CALL R4 2
- 0x80040000, // 000A RET 1 R0
+ 0x780E0010, // 0002 JMPF R3 #0014
+ 0x600C000F, // 0003 GETGBL R3 G15
+ 0x5C100400, // 0004 MOVE R4 R2
+ 0x60140015, // 0005 GETGBL R5 G21
+ 0x7C0C0400, // 0006 CALL R3 2
+ 0x780E0004, // 0007 JMPF R3 #000D
+ 0x880C0100, // 0008 GETMBR R3 R0 K0
+ 0x8C0C0701, // 0009 GETMET R3 R3 K1
+ 0x5C140400, // 000A MOVE R5 R2
+ 0x7C0C0400, // 000B CALL R3 2
+ 0x70020006, // 000C JMP #0014
+ 0x8C0C0502, // 000D GETMET R3 R2 K2
+ 0x7C0C0200, // 000E CALL R3 1
+ 0x900E0601, // 000F SETMBR R3 K3 R1
+ 0x88100100, // 0010 GETMBR R4 R0 K0
+ 0x8C100901, // 0011 GETMET R4 R4 K1
+ 0x5C180600, // 0012 MOVE R6 R3
+ 0x7C100400, // 0013 CALL R4 2
+ 0x80040000, // 0014 RET 1 R0
})
)
);
@@ -2516,7 +2526,7 @@ be_local_closure(Matter_TLV_list_tlv2raw, /* name */
}),
be_str_weak(tlv2raw),
&be_const_str_solidified,
- ( &(const binstruction[37]) { /* code */
+ ( &(const binstruction[44]) { /* code */
0x4C080000, // 0000 LDNIL R2
0x1C080202, // 0001 EQ R2 R1 R2
0x780A0002, // 0002 JMPF R2 #0006
@@ -2538,22 +2548,29 @@ be_local_closure(Matter_TLV_list_tlv2raw, /* name */
0x600C0010, // 0012 GETGBL R3 G16
0x5C100400, // 0013 MOVE R4 R2
0x7C0C0200, // 0014 CALL R3 1
- 0xA8020005, // 0015 EXBLK 0 #001C
+ 0xA802000C, // 0015 EXBLK 0 #0023
0x5C100600, // 0016 MOVE R4 R3
0x7C100000, // 0017 CALL R4 0
- 0x8C140905, // 0018 GETMET R5 R4 K5
- 0x5C1C0200, // 0019 MOVE R7 R1
- 0x7C140400, // 001A CALL R5 2
- 0x7001FFF9, // 001B JMP #0016
- 0x580C0006, // 001C LDCONST R3 K6
- 0xAC0C0200, // 001D CATCH R3 1 0
- 0xB0080000, // 001E RAISE 2 R0 R0
- 0x8C0C0307, // 001F GETMET R3 R1 K7
- 0x88140108, // 0020 GETMBR R5 R0 K8
- 0x88140B09, // 0021 GETMBR R5 R5 K9
- 0x5818000A, // 0022 LDCONST R6 K10
- 0x7C0C0600, // 0023 CALL R3 3
- 0x80040200, // 0024 RET 1 R1
+ 0x6014000F, // 0018 GETGBL R5 G15
+ 0x5C180800, // 0019 MOVE R6 R4
+ 0x601C0015, // 001A GETGBL R7 G21
+ 0x7C140400, // 001B CALL R5 2
+ 0x78160001, // 001C JMPF R5 #001F
+ 0x40140204, // 001D CONNECT R5 R1 R4
+ 0x70020002, // 001E JMP #0022
+ 0x8C140905, // 001F GETMET R5 R4 K5
+ 0x5C1C0200, // 0020 MOVE R7 R1
+ 0x7C140400, // 0021 CALL R5 2
+ 0x7001FFF2, // 0022 JMP #0016
+ 0x580C0006, // 0023 LDCONST R3 K6
+ 0xAC0C0200, // 0024 CATCH R3 1 0
+ 0xB0080000, // 0025 RAISE 2 R0 R0
+ 0x8C0C0307, // 0026 GETMET R3 R1 K7
+ 0x88140108, // 0027 GETMBR R5 R0 K8
+ 0x88140B09, // 0028 GETMBR R5 R5 K9
+ 0x5818000A, // 0029 LDCONST R6 K10
+ 0x7C0C0600, // 002A CALL R3 3
+ 0x80040200, // 002B RET 1 R1
})
)
);