From f572d93ac6580f8f45147a2ac1d72cd82948deae Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 7 Jun 2023 19:23:28 +0200 Subject: [PATCH] Matter minor fixes (#18813) --- .../berry_matter/src/be_matter_module.c | 2 + .../src/embedded/Matter_Plugin_Bridge_HTTP.be | 3 +- .../embedded/Matter_Plugin_Bridge_Light0.be | 2 +- .../embedded/Matter_Plugin_Bridge_Light1.be | 2 +- .../embedded/Matter_Plugin_Bridge_Light2.be | 2 +- .../embedded/Matter_Plugin_Bridge_Light3.be | 6 +- .../embedded/Matter_Plugin_Bridge_OnOff.be | 2 +- .../Matter_Plugin_Bridge_Sensor_Humidity.be | 2 +- ...Matter_Plugin_Bridge_Sensor_Illuminance.be | 2 +- .../Matter_Plugin_Bridge_Sensor_Occupancy.be | 10 +- .../Matter_Plugin_Bridge_Sensor_Pressure.be | 2 +- .../Matter_Plugin_Bridge_Sensor_Temp.be | 2 +- .../src/embedded/Matter_Plugin_Device.be | 28 +- .../src/embedded/Matter_Plugin_Light3.be | 2 +- .../embedded/Matter_Plugin_Sensor_OnOff.be | 2 +- .../berry_matter/src/embedded/Matter_TLV.be | 6 + .../berry_matter/src/embedded/Matter_UI.be | 2 +- .../solidified_Matter_Plugin_Bridge_HTTP.h | 17 +- .../solidified_Matter_Plugin_Bridge_Light0.h | 3 +- .../solidified_Matter_Plugin_Bridge_Light1.h | 3 +- .../solidified_Matter_Plugin_Bridge_Light2.h | 3 +- .../solidified_Matter_Plugin_Bridge_Light3.h | 15 +- .../solidified_Matter_Plugin_Bridge_OnOff.h | 3 +- ...ied_Matter_Plugin_Bridge_Sensor_Humidity.h | 3 +- ..._Matter_Plugin_Bridge_Sensor_Illuminance.h | 3 +- ...ed_Matter_Plugin_Bridge_Sensor_Occupancy.h | 3 +- ...ied_Matter_Plugin_Bridge_Sensor_Pressure.h | 3 +- ...idified_Matter_Plugin_Bridge_Sensor_Temp.h | 3 +- .../solidified_Matter_Plugin_Device.h | 382 +++++++++++------- .../solidified_Matter_Plugin_Light3.h | 2 +- .../solidified_Matter_Plugin_Sensor_OnOff.h | 2 +- .../src/solidify/solidified_Matter_UI.h | 2 +- 32 files changed, 320 insertions(+), 204 deletions(-) diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index 72deac883..6f7af2ab0 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -227,6 +227,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h" #include "solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h" #include "solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h" +#include "solidify/solidified_Matter_Plugin_Sensor_OnOff.h" /*********************************************************************************************\ * Get a bytes() object of the certificate DAC/PAI_Cert @@ -416,6 +417,7 @@ module matter (scope: global, strings: weak) { Plugin_Sensor_Illuminance, class(be_class_Matter_Plugin_Sensor_Illuminance) // Illuminance Sensor Plugin_Sensor_Humidity, class(be_class_Matter_Plugin_Sensor_Humidity) // Humidity Sensor Plugin_Sensor_Occupancy, class(be_class_Matter_Plugin_Sensor_Occupancy) // Occupancy Sensor + Plugin_Sensor_OnOff, class(be_class_Matter_Plugin_Sensor_OnOff) // Simple OnOff Sensor Plugin_Bridge_HTTP, class(be_class_Matter_Plugin_Bridge_HTTP) // HTTP bridge superclass Plugin_Bridge_OnOff, class(be_class_Matter_Plugin_Bridge_OnOff) // HTTP Relay/Light behavior (OnOff) Plugin_Bridge_Light0, class(be_class_Matter_Plugin_Bridge_Light0) // HTTP OnOff Light diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_HTTP.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_HTTP.be index 12c487449..6a08b3427 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_HTTP.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_HTTP.be @@ -46,7 +46,6 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device # 0x0039: [0x11] # Bridged Device Basic Information 9.13 p.485 } - # static var TYPES = { 0x010A: 2 } # On/Off Light var http_remote # instance of Matter_HTTP_remote @@ -179,6 +178,8 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device if attribute == 0x0011 # ---------- Reachable / bool ---------- # self.is_reachable_lazy_sync() # Not needed anymore return TLV.create_TLV(TLV.BOOL, self.http_remote.reachable) # TODO find a way to do a ping + else + return super(self).read_attribute(session, ctx) end else diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light0.be index 7c1802264..b58d42de9 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light0.be @@ -40,7 +40,7 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP # 0x0005: inherited # Scenes 1.4 p.30 - no writable 0x0006: [0,0xFFFC,0xFFFD], # On/Off 1.5 p.48 } - static var TYPES = { 0x0100: 2, 0x0013: 1 } # OnOff Light, but not actually used because Relay is managed by OnOff + static var TYPES = { 0x0100: 2 } # OnOff Light, but not actually used because Relay is managed by OnOff var tasmota_relay_index # Relay number in Tasmota (one based) var shadow_onoff # fake status for now # TODO diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light1.be index bd51c6e0e..a8caa761f 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light1.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light1.be @@ -39,7 +39,7 @@ class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0 # 0x0006: inherited # On/Off 1.5 p.48 0x0008: [0,2,3,0x0F,0x11,0xFFFC,0xFFFD], # Level Control 1.6 p.57 } - static var TYPES = { 0x0101: 2, 0x0013: 1 } # Dimmable Light + static var TYPES = { 0x0101: 2 } # Dimmable Light var shadow_bri # var tasmota_relay_index # ingerited diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light2.be index 39abe4beb..4e0217eac 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light2.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light2.be @@ -40,7 +40,7 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1 # 0x0008: inherited # Level Control 1.6 p.57 0x0300: [7,8,0xF,0x400A,0x400B,0x400C,0xFFFC,0xFFFD], # Color Control 3.2 p.111 } - static var TYPES = { 0x010C: 2, 0x0013: 1 } # Dimmable Light + static var TYPES = { 0x010C: 2 } # Dimmable Light var shadow_ct var ct_min, ct_max diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light3.be index 8bfdc19e4..c9856a318 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light3.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Light3.be @@ -40,7 +40,7 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1 # 0x0008: inherited # Level Control 1.6 p.57 0x0300: [0,1,7,8,0xF,0x4001,0x400A,0xFFFC,0xFFFD],# Color Control 3.2 p.111 } - static var TYPES = { 0x010D: 2, 0x0013: 1 } # Extended Color Light + static var TYPES = { 0x010D: 2 } # Extended Color Light var shadow_hue, shadow_sat # 0..254 @@ -124,13 +124,13 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1 return TLV.create_TLV(TLV.U1, 0) elif attribute == 0x4001 # ---------- EnhancedColorMode / u1 ---------- return TLV.create_TLV(TLV.U1, 0) + elif attribute == 0x400A # ---------- ColorCapabilities / map32 ---------- + return TLV.create_TLV(TLV.U4, 0x01) # HS # Defined Primaries Information Attribute Set elif attribute == 0x0010 # ---------- NumberOfPrimaries / u1 ---------- return TLV.create_TLV(TLV.U1, 0) - elif attribute == 0x400A # ---------- ColorCapabilities / map32 ---------- - return TLV.create_TLV(TLV.U4, 0x01) elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- return TLV.create_TLV(TLV.U4, 0x01) # HS elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ---------- diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_OnOff.be index 96ca06eec..1552c0e6e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_OnOff.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_OnOff.be @@ -29,7 +29,7 @@ class Matter_Plugin_Bridge_Light0 end class Matter_Plugin_Bridge_OnOff : Matter_Plugin_Bridge_Light0 static var TYPE = "http_relay" # name of the plug-in in json static var NAME = "🔗 Relay" # display name of the plug-in - static var TYPES = { 0x010A: 2, 0x0013: 1 } # On/Off Plug-in Unit + static var TYPES = { 0x010A: 2 } # On/Off Plug-in Unit ############################################################# # web_values diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Humidity.be index 5c10a5283..ab314be2b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Humidity.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Humidity.be @@ -33,7 +33,7 @@ class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor static var CLUSTERS = { 0x0405: [0,1,2,0xFFFC,0xFFFD], # Humidity Measurement p.102 - no writable } - static var TYPES = { 0x0307: 2, 0x0013: 1 } # Humidity Sensor, rev 2 + static var TYPES = { 0x0307: 2 } # Humidity Sensor, rev 2 ############################################################# # Called when the value changed compared to shadow value diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Illuminance.be index d19d89a8f..8864e6802 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Illuminance.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Illuminance.be @@ -33,7 +33,7 @@ class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor static var CLUSTERS = { 0x0400: [0,1,2,0xFFFC,0xFFFD], # Illuminance Measurement p.95 - no writable } - static var TYPES = { 0x0106: 2, 0x0013: 1 } # Illuminance Sensor, rev 2 + static var TYPES = { 0x0106: 2 } # Illuminance Sensor, rev 2 ############################################################# # Called when the value changed compared to shadow value diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Occupancy.be index 1c9fd8a00..1cf6e56fa 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Occupancy.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Occupancy.be @@ -27,17 +27,17 @@ class Matter_Plugin_Bridge_HTTP end #@ solidify:Matter_Plugin_Bridge_Sensor_Occupancy,weak class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP - static var TYPE = "http_occupancy" # name of the plug-in in json - static var NAME = "🔗 Occupancy" # display name of the plug-in - static var ARG = "switch" # additional argument name (or empty if none) + static var TYPE = "http_occupancy" # name of the plug-in in json + static var NAME = "🔗 Occupancy" # display name of the plug-in + static var ARG = "switch" # additional argument name (or empty if none) static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type static var UPDATE_TIME = 5000 # update every 5s - static var UPDATE_CMD = "Status 8" # command to send for updates + static var UPDATE_CMD = "Status 8" # command to send for updates static var CLUSTERS = { 0x0406: [0,1,2,0xFFFC,0xFFFD], # Occupancy Sensing p.105 - no writable } - static var TYPES = { 0x0107: 2, 0x0013: 1 } # Occupancy Sensor, rev 2 + static var TYPES = { 0x0107: 2 } # Occupancy Sensor, rev 2 var tasmota_switch_index # Switch number in Tasmota (one based) var shadow_occupancy diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Pressure.be index 74aec0828..3b7930d40 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Pressure.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Pressure.be @@ -33,7 +33,7 @@ class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor static var CLUSTERS = { 0x0403: [0,1,2,0xFFFC,0xFFFD], # Pressure Measurement } - static var TYPES = { 0x0305: 2, 0x0013: 1 } # Temperature Sensor, rev 2 + static var TYPES = { 0x0305: 2 } # Temperature Sensor, rev 2 ############################################################# # Called when the value changed compared to shadow value diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Temp.be index 42aa90bc9..8d8d51969 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Temp.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Bridge_Sensor_Temp.be @@ -33,7 +33,7 @@ class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor static var CLUSTERS = { 0x0402: [0,1,2,0xFFFC,0xFFFD], # Temperature Measurement p.97 - no writable } - static var TYPES = { 0x0302: 2, 0x0013: 1 } # Temperature Sensor, rev 2 + static var TYPES = { 0x0302: 2 } # Temperature Sensor, rev 2 ############################################################# # Called when the value changed compared to shadow value diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be index a69dce90d..c35de9d4a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Device.be @@ -27,11 +27,13 @@ class Matter_Plugin end class Matter_Plugin_Device : Matter_Plugin static var CLUSTERS = { # 0x001D: inherited # Descriptor Cluster 9.5 p.453 + 0x0039: [0x11], # Bridged Device Basic Information 9.13 p.485 0x0003: [0,1,0xFFFC,0xFFFD], # Identify 1.2 p.16 0x0004: [0,0xFFFC,0xFFFD], # Groups 1.3 p.21 0x0005: [0,1,2,3,4,5,0xFFFC,0xFFFD], # Scenes 1.4 p.30 - no writable } - static var TYPES = { 0x0000: 0 } # fake type + static var TYPES = { 0x0013: 1 } # fake type + static var NON_BRIDGE_VENDOR = [ 0x1217, 0x1381 ] # Fabric VendorID not supporting Bridge mode ############################################################# # Constructor @@ -78,6 +80,30 @@ class Matter_Plugin_Device : Matter_Plugin return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting end + # ==================================================================================================== + elif cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ========== + + if attribute == 0x0000 # ---------- DeviceTypeList / list[DeviceTypeStruct] ---------- + # for device sub-classes, automatically add the Bridge Node type `0x0013: 1` + # unless the fabric doesn't support bridge mode (currently Alexa) + var dtl = TLV.Matter_TLV_array() + var types = self.TYPES + for dt: types.keys() + var d1 = dtl.add_struct() + d1.add_TLV(0, TLV.U2, dt) # DeviceType + d1.add_TLV(1, TLV.U2, types[dt]) # Revision + end + # if fabric is not Alexa + if self.NON_BRIDGE_VENDOR.find(session.get_admin_vendor()) == nil + var d1 = dtl.add_struct() + d1.add_TLV(0, TLV.U2, 0x0013) # DeviceType + d1.add_TLV(1, TLV.U2, 1) # Revision + end + return dtl + else + return super(self).read_attribute(session, ctx) + end + else return super(self).read_attribute(session, ctx) end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be index acfa4b17f..ad408a6cf 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Light3.be @@ -92,7 +92,7 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1 elif attribute == 0x4001 # ---------- EnhancedColorMode / u1 ---------- return TLV.create_TLV(TLV.U1, 0) elif attribute == 0x400A # ---------- ColorCapabilities / map2 ---------- - return TLV.create_TLV(TLV.U1, 0) + return TLV.create_TLV(TLV.U1, 0x01) # HS # Defined Primaries Information Attribute Set elif attribute == 0x0010 # ---------- NumberOfPrimaries / u1 ---------- diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_OnOff.be index be1184866..7df4da0b6 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_OnOff.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Sensor_OnOff.be @@ -25,7 +25,7 @@ class Matter_Plugin_Device end #@ solidify:Matter_Plugin_Sensor_OnOff,weak class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device - static var TYPE = "occupancy" # name of the plug-in in json + static var TYPE = "onoff" # name of the plug-in in json static var NAME = "OnOff" # display name of the plug-in static var ARG = "switch" # additional argument name (or empty if none) static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be index 24c4567e2..563d64f24 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be @@ -921,6 +921,12 @@ test_TLV(bytes("0001"), "1") test_TLV(bytes("08"), "false") test_TLV(bytes("09"), "true") +var TLV = matter.TLV +assert(TLV.create_TLV(TLV.BOOL, 1).tlv2raw() == bytes("09")) +assert(TLV.create_TLV(TLV.BOOL, true).tlv2raw() == bytes("09")) +assert(TLV.create_TLV(TLV.BOOL, 0).tlv2raw() == bytes("08")) +assert(TLV.create_TLV(TLV.BOOL, false).tlv2raw() == bytes("08")) + test_TLV(bytes("00FF"), "-1") test_TLV(bytes("05FFFF"), "65535U") diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be index 88249ba97..2043f1851 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be @@ -33,7 +33,7 @@ import matter ################################################################################# class Matter_UI static var _CLASSES_TYPES = "|relay|light0|light1|light2|light3|shutter|shutter+tilt" - "|temperature|pressure|illuminance|humidity|occupancy" + "|temperature|pressure|illuminance|humidity|occupancy|onoff" static var _CLASSES_TYPES2= "-http|http_relay|http_light0|http_light1|http_light2|http_light3" "|http_temperature|http_pressure|http_illuminance|http_humidity" "|http_occupancy" diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_HTTP.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_HTTP.h index 377e8f6f0..63cd5cde2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_HTTP.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_HTTP.h @@ -472,17 +472,17 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */ }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ + ( &(const binstruction[35]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x880C0701, // 0001 GETMBR R3 R3 K1 0x88100502, // 0002 GETMBR R4 R2 K2 0x88140503, // 0003 GETMBR R5 R2 K3 0x541A0038, // 0004 LDINT R6 57 0x1C180806, // 0005 EQ R6 R4 R6 - 0x781A0009, // 0006 JMPF R6 #0011 + 0x781A0012, // 0006 JMPF R6 #001A 0x541A0010, // 0007 LDINT R6 17 0x1C180A06, // 0008 EQ R6 R5 R6 - 0x781A0005, // 0009 JMPF R6 #0010 + 0x781A0006, // 0009 JMPF R6 #0011 0x8C180704, // 000A GETMET R6 R3 K4 0x88200705, // 000B GETMBR R8 R3 K5 0x88240106, // 000C GETMBR R9 R0 K6 @@ -498,7 +498,16 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */ 0x5C240400, // 0016 MOVE R9 R2 0x7C180600, // 0017 CALL R6 3 0x80040C00, // 0018 RET 1 R6 - 0x80000000, // 0019 RET 0 + 0x70020007, // 0019 JMP #0022 + 0x60180003, // 001A GETGBL R6 G3 + 0x5C1C0000, // 001B MOVE R7 R0 + 0x7C180200, // 001C CALL R6 1 + 0x8C180D08, // 001D GETMET R6 R6 K8 + 0x5C200200, // 001E MOVE R8 R1 + 0x5C240400, // 001F MOVE R9 R2 + 0x7C180600, // 0020 CALL R6 3 + 0x80040C00, // 0021 RET 1 R6 + 0x80000000, // 0022 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light0.h index 25839355b..e3f26664b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light0.h @@ -421,10 +421,9 @@ be_local_class(Matter_Plugin_Bridge_Light0, { be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Light_X200_X20On) }, { be_const_key_weak(tasmota_relay_index, -1), be_const_var(0) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, + be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(256, -1), be_const_int(2) }, - { be_const_key_int(19, -1), be_const_int(1) }, })) ) } )) }, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light1.h index d82710edf..9662d78a6 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light1.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light1.h @@ -503,10 +503,9 @@ be_local_class(Matter_Plugin_Bridge_Light1, { be_const_key_weak(web_value_dimmer, -1), be_const_closure(Matter_Plugin_Bridge_Light1_web_value_dimmer_closure) }, { be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_Light1_parse_update_closure) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, + be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(257, -1), be_const_int(2) }, - { be_const_key_int(19, 0), be_const_int(1) }, })) ) } )) }, { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Bridge_Light1_read_attribute_closure) }, { be_const_key_weak(TYPE, 2), be_nested_str_weak(http_light1) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light2.h index 637895aae..726a0fbb5 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light2.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light2.h @@ -563,10 +563,9 @@ be_local_class(Matter_Plugin_Bridge_Light2, })) ) } )) }, })) ) } )) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, + be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(268, -1), be_const_int(2) }, - { be_const_key_int(19, -1), be_const_int(1) }, })) ) } )) }, { be_const_key_weak(web_value_ct, -1), be_const_closure(Matter_Plugin_Bridge_Light2_web_value_ct_closure) }, { be_const_key_weak(set_ct, -1), be_const_closure(Matter_Plugin_Bridge_Light2_set_ct_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light3.h index ddbedf913..ca4edad38 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Light3.h @@ -561,21 +561,21 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */ 0x7C1C0600, // 004F CALL R7 3 0x80040E00, // 0050 RET 1 R7 0x70020022, // 0051 JMP #0075 - 0x541E000F, // 0052 LDINT R7 16 + 0x541E4009, // 0052 LDINT R7 16394 0x1C1C0C07, // 0053 EQ R7 R6 R7 0x781E0005, // 0054 JMPF R7 #005B 0x8C1C0908, // 0055 GETMET R7 R4 K8 - 0x88240909, // 0056 GETMBR R9 R4 K9 - 0x58280006, // 0057 LDCONST R10 K6 + 0x8824090D, // 0056 GETMBR R9 R4 K13 + 0x5828000B, // 0057 LDCONST R10 K11 0x7C1C0600, // 0058 CALL R7 3 0x80040E00, // 0059 RET 1 R7 0x70020019, // 005A JMP #0075 - 0x541E4009, // 005B LDINT R7 16394 + 0x541E000F, // 005B LDINT R7 16 0x1C1C0C07, // 005C EQ R7 R6 R7 0x781E0005, // 005D JMPF R7 #0064 0x8C1C0908, // 005E GETMET R7 R4 K8 - 0x8824090D, // 005F GETMBR R9 R4 K13 - 0x5828000B, // 0060 LDCONST R10 K11 + 0x88240909, // 005F GETMBR R9 R4 K9 + 0x58280006, // 0060 LDCONST R10 K6 0x7C1C0600, // 0061 CALL R7 3 0x80040E00, // 0062 RET 1 R7 0x70020010, // 0063 JMP #0075 @@ -715,10 +715,9 @@ be_local_class(Matter_Plugin_Bridge_Light3, { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Bridge_Light3_invoke_request_closure) }, { be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Light_X203_X20RGB) }, { be_const_key_weak(TYPES, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, + be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(269, -1), be_const_int(2) }, - { be_const_key_int(19, 0), be_const_int(1) }, })) ) } )) }, { be_const_key_weak(shadow_hue, 6), be_const_var(0) }, { be_const_key_weak(set_hue, -1), be_const_closure(Matter_Plugin_Bridge_Light3_set_hue_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_OnOff.h index a547e02c6..e8ad2ea11 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_OnOff.h @@ -63,10 +63,9 @@ be_local_class(Matter_Plugin_Bridge_OnOff, { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_relay) }, { be_const_key_weak(NAME, 3), be_nested_str_weak(_X26_X23x1F517_X3B_X20Relay) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, + be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(266, -1), be_const_int(2) }, - { be_const_key_int(19, -1), be_const_int(1) }, })) ) } )) }, })), be_str_weak(Matter_Plugin_Bridge_OnOff) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h index 1fa58bec6..7b37b1c0e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h @@ -261,10 +261,9 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Humidity, { be_const_key_weak(TYPE, 4), be_nested_str_weak(http_humidity) }, { be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Humidity) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, + be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(775, -1), be_const_int(2) }, - { be_const_key_int(19, 0), be_const_int(1) }, })) ) } )) }, })), be_str_weak(Matter_Plugin_Bridge_Sensor_Humidity) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h index 56eb9dec2..e113d191e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h @@ -263,10 +263,9 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Illuminance, { be_const_key_weak(TYPE, 4), be_nested_str_weak(http_illuminance) }, { be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Illuminance) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, + be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(262, -1), be_const_int(2) }, - { be_const_key_int(19, -1), be_const_int(1) }, })) ) } )) }, })), be_str_weak(Matter_Plugin_Bridge_Sensor_Illuminance) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h index 5edda2ce7..a89bb35fe 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h @@ -326,10 +326,9 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy, { be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Occupancy) }, { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_init_closure) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, + be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(263, -1), be_const_int(2) }, - { be_const_key_int(19, 0), be_const_int(1) }, })) ) } )) }, { be_const_key_weak(ARG_TYPE, 12), be_const_static_closure(Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E_closure) }, { be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_parse_update_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Pressure.h index 3b36094c4..795ca6577 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Pressure.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Pressure.h @@ -252,10 +252,9 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Pressure, { be_const_key_weak(TYPE, 4), be_nested_str_weak(http_pressure) }, { be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Pressure) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, + be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(773, -1), be_const_int(2) }, - { be_const_key_int(19, 0), be_const_int(1) }, })) ) } )) }, })), be_str_weak(Matter_Plugin_Bridge_Sensor_Pressure) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Temp.h index fb5ab423a..e4e35379a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Temp.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Bridge_Sensor_Temp.h @@ -258,10 +258,9 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Temp, { be_const_key_weak(TYPE, 4), be_nested_str_weak(http_temperature) }, { be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Temperature) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, + be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(770, -1), be_const_int(2) }, - { be_const_key_int(19, -1), be_const_int(1) }, })) ) } )) }, })), be_str_weak(Matter_Plugin_Bridge_Sensor_Temp) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h index 054d6a0db..dbdfafee4 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Device.h @@ -6,140 +6,6 @@ extern const bclass be_class_Matter_Plugin_Device; -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -be_local_closure(Matter_Plugin_Device_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[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(3), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(create_TLV), - /* K8 */ be_nested_str_weak(U2), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(U1), - /* K11 */ be_nested_str_weak(U4), - /* K12 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[97]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x88100902, // 0002 GETMBR R4 R4 K2 - 0x88140503, // 0003 GETMBR R5 R2 K3 - 0x88180504, // 0004 GETMBR R6 R2 K4 - 0x1C1C0B05, // 0005 EQ R7 R5 K5 - 0x781E0021, // 0006 JMPF R7 #0029 - 0x1C1C0D06, // 0007 EQ R7 R6 K6 - 0x781E0005, // 0008 JMPF R7 #000F - 0x8C1C0907, // 0009 GETMET R7 R4 K7 - 0x88240908, // 000A GETMBR R9 R4 K8 - 0x58280006, // 000B LDCONST R10 K6 - 0x7C1C0600, // 000C CALL R7 3 - 0x80040E00, // 000D RET 1 R7 - 0x70020018, // 000E JMP #0028 - 0x1C1C0D09, // 000F EQ R7 R6 K9 - 0x781E0005, // 0010 JMPF R7 #0017 - 0x8C1C0907, // 0011 GETMET R7 R4 K7 - 0x8824090A, // 0012 GETMBR R9 R4 K10 - 0x58280006, // 0013 LDCONST R10 K6 - 0x7C1C0600, // 0014 CALL R7 3 - 0x80040E00, // 0015 RET 1 R7 - 0x70020010, // 0016 JMP #0028 - 0x541EFFFB, // 0017 LDINT R7 65532 - 0x1C1C0C07, // 0018 EQ R7 R6 R7 - 0x781E0005, // 0019 JMPF R7 #0020 - 0x8C1C0907, // 001A GETMET R7 R4 K7 - 0x8824090B, // 001B GETMBR R9 R4 K11 - 0x58280006, // 001C LDCONST R10 K6 - 0x7C1C0600, // 001D CALL R7 3 - 0x80040E00, // 001E RET 1 R7 - 0x70020007, // 001F JMP #0028 - 0x541EFFFC, // 0020 LDINT R7 65533 - 0x1C1C0C07, // 0021 EQ R7 R6 R7 - 0x781E0004, // 0022 JMPF R7 #0028 - 0x8C1C0907, // 0023 GETMET R7 R4 K7 - 0x8824090B, // 0024 GETMBR R9 R4 K11 - 0x542A0003, // 0025 LDINT R10 4 - 0x7C1C0600, // 0026 CALL R7 3 - 0x80040E00, // 0027 RET 1 R7 - 0x70020036, // 0028 JMP #0060 - 0x541E0003, // 0029 LDINT R7 4 - 0x1C1C0A07, // 002A EQ R7 R5 R7 - 0x781E0016, // 002B JMPF R7 #0043 - 0x1C1C0D06, // 002C EQ R7 R6 K6 - 0x781E0002, // 002D JMPF R7 #0031 - 0x4C1C0000, // 002E LDNIL R7 - 0x80040E00, // 002F RET 1 R7 - 0x70020010, // 0030 JMP #0042 - 0x541EFFFB, // 0031 LDINT R7 65532 - 0x1C1C0C07, // 0032 EQ R7 R6 R7 - 0x781E0005, // 0033 JMPF R7 #003A - 0x8C1C0907, // 0034 GETMET R7 R4 K7 - 0x8824090B, // 0035 GETMBR R9 R4 K11 - 0x58280006, // 0036 LDCONST R10 K6 - 0x7C1C0600, // 0037 CALL R7 3 - 0x80040E00, // 0038 RET 1 R7 - 0x70020007, // 0039 JMP #0042 - 0x541EFFFC, // 003A LDINT R7 65533 - 0x1C1C0C07, // 003B EQ R7 R6 R7 - 0x781E0004, // 003C JMPF R7 #0042 - 0x8C1C0907, // 003D GETMET R7 R4 K7 - 0x8824090B, // 003E GETMBR R9 R4 K11 - 0x542A0003, // 003F LDINT R10 4 - 0x7C1C0600, // 0040 CALL R7 3 - 0x80040E00, // 0041 RET 1 R7 - 0x7002001C, // 0042 JMP #0060 - 0x541E0004, // 0043 LDINT R7 5 - 0x1C1C0A07, // 0044 EQ R7 R5 R7 - 0x781E0011, // 0045 JMPF R7 #0058 - 0x541EFFFB, // 0046 LDINT R7 65532 - 0x1C1C0C07, // 0047 EQ R7 R6 R7 - 0x781E0005, // 0048 JMPF R7 #004F - 0x8C1C0907, // 0049 GETMET R7 R4 K7 - 0x8824090B, // 004A GETMBR R9 R4 K11 - 0x58280006, // 004B LDCONST R10 K6 - 0x7C1C0600, // 004C CALL R7 3 - 0x80040E00, // 004D RET 1 R7 - 0x70020007, // 004E JMP #0057 - 0x541EFFFC, // 004F LDINT R7 65533 - 0x1C1C0C07, // 0050 EQ R7 R6 R7 - 0x781E0004, // 0051 JMPF R7 #0057 - 0x8C1C0907, // 0052 GETMET R7 R4 K7 - 0x8824090B, // 0053 GETMBR R9 R4 K11 - 0x542A0003, // 0054 LDINT R10 4 - 0x7C1C0600, // 0055 CALL R7 3 - 0x80040E00, // 0056 RET 1 R7 - 0x70020007, // 0057 JMP #0060 - 0x601C0003, // 0058 GETGBL R7 G3 - 0x5C200000, // 0059 MOVE R8 R0 - 0x7C1C0200, // 005A CALL R7 1 - 0x8C1C0F0C, // 005B GETMET R7 R7 K12 - 0x5C240200, // 005C MOVE R9 R1 - 0x5C280400, // 005D MOVE R10 R2 - 0x7C1C0600, // 005E CALL R7 3 - 0x80040E00, // 005F RET 1 R7 - 0x80000000, // 0060 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ @@ -226,6 +92,211 @@ be_local_closure(Matter_Plugin_Device_invoke_request, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: read_attribute +********************************************************************/ +be_local_closure(Matter_Plugin_Device_read_attribute, /* name */ + be_nested_proto( + 17, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[22]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(TLV), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_const_int(3), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(create_TLV), + /* K8 */ be_nested_str_weak(U2), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(U1), + /* K11 */ be_nested_str_weak(U4), + /* K12 */ be_nested_str_weak(Matter_TLV_array), + /* K13 */ be_nested_str_weak(TYPES), + /* K14 */ be_nested_str_weak(keys), + /* K15 */ be_nested_str_weak(add_struct), + /* K16 */ be_nested_str_weak(add_TLV), + /* K17 */ be_nested_str_weak(stop_iteration), + /* K18 */ be_nested_str_weak(NON_BRIDGE_VENDOR), + /* K19 */ be_nested_str_weak(find), + /* K20 */ be_nested_str_weak(get_admin_vendor), + /* K21 */ be_nested_str_weak(read_attribute), + }), + be_str_weak(read_attribute), + &be_const_str_solidified, + ( &(const binstruction[159]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x88100902, // 0002 GETMBR R4 R4 K2 + 0x88140503, // 0003 GETMBR R5 R2 K3 + 0x88180504, // 0004 GETMBR R6 R2 K4 + 0x1C1C0B05, // 0005 EQ R7 R5 K5 + 0x781E0021, // 0006 JMPF R7 #0029 + 0x1C1C0D06, // 0007 EQ R7 R6 K6 + 0x781E0005, // 0008 JMPF R7 #000F + 0x8C1C0907, // 0009 GETMET R7 R4 K7 + 0x88240908, // 000A GETMBR R9 R4 K8 + 0x58280006, // 000B LDCONST R10 K6 + 0x7C1C0600, // 000C CALL R7 3 + 0x80040E00, // 000D RET 1 R7 + 0x70020018, // 000E JMP #0028 + 0x1C1C0D09, // 000F EQ R7 R6 K9 + 0x781E0005, // 0010 JMPF R7 #0017 + 0x8C1C0907, // 0011 GETMET R7 R4 K7 + 0x8824090A, // 0012 GETMBR R9 R4 K10 + 0x58280006, // 0013 LDCONST R10 K6 + 0x7C1C0600, // 0014 CALL R7 3 + 0x80040E00, // 0015 RET 1 R7 + 0x70020010, // 0016 JMP #0028 + 0x541EFFFB, // 0017 LDINT R7 65532 + 0x1C1C0C07, // 0018 EQ R7 R6 R7 + 0x781E0005, // 0019 JMPF R7 #0020 + 0x8C1C0907, // 001A GETMET R7 R4 K7 + 0x8824090B, // 001B GETMBR R9 R4 K11 + 0x58280006, // 001C LDCONST R10 K6 + 0x7C1C0600, // 001D CALL R7 3 + 0x80040E00, // 001E RET 1 R7 + 0x70020007, // 001F JMP #0028 + 0x541EFFFC, // 0020 LDINT R7 65533 + 0x1C1C0C07, // 0021 EQ R7 R6 R7 + 0x781E0004, // 0022 JMPF R7 #0028 + 0x8C1C0907, // 0023 GETMET R7 R4 K7 + 0x8824090B, // 0024 GETMBR R9 R4 K11 + 0x542A0003, // 0025 LDINT R10 4 + 0x7C1C0600, // 0026 CALL R7 3 + 0x80040E00, // 0027 RET 1 R7 + 0x70020074, // 0028 JMP #009E + 0x541E0003, // 0029 LDINT R7 4 + 0x1C1C0A07, // 002A EQ R7 R5 R7 + 0x781E0016, // 002B JMPF R7 #0043 + 0x1C1C0D06, // 002C EQ R7 R6 K6 + 0x781E0002, // 002D JMPF R7 #0031 + 0x4C1C0000, // 002E LDNIL R7 + 0x80040E00, // 002F RET 1 R7 + 0x70020010, // 0030 JMP #0042 + 0x541EFFFB, // 0031 LDINT R7 65532 + 0x1C1C0C07, // 0032 EQ R7 R6 R7 + 0x781E0005, // 0033 JMPF R7 #003A + 0x8C1C0907, // 0034 GETMET R7 R4 K7 + 0x8824090B, // 0035 GETMBR R9 R4 K11 + 0x58280006, // 0036 LDCONST R10 K6 + 0x7C1C0600, // 0037 CALL R7 3 + 0x80040E00, // 0038 RET 1 R7 + 0x70020007, // 0039 JMP #0042 + 0x541EFFFC, // 003A LDINT R7 65533 + 0x1C1C0C07, // 003B EQ R7 R6 R7 + 0x781E0004, // 003C JMPF R7 #0042 + 0x8C1C0907, // 003D GETMET R7 R4 K7 + 0x8824090B, // 003E GETMBR R9 R4 K11 + 0x542A0003, // 003F LDINT R10 4 + 0x7C1C0600, // 0040 CALL R7 3 + 0x80040E00, // 0041 RET 1 R7 + 0x7002005A, // 0042 JMP #009E + 0x541E0004, // 0043 LDINT R7 5 + 0x1C1C0A07, // 0044 EQ R7 R5 R7 + 0x781E0011, // 0045 JMPF R7 #0058 + 0x541EFFFB, // 0046 LDINT R7 65532 + 0x1C1C0C07, // 0047 EQ R7 R6 R7 + 0x781E0005, // 0048 JMPF R7 #004F + 0x8C1C0907, // 0049 GETMET R7 R4 K7 + 0x8824090B, // 004A GETMBR R9 R4 K11 + 0x58280006, // 004B LDCONST R10 K6 + 0x7C1C0600, // 004C CALL R7 3 + 0x80040E00, // 004D RET 1 R7 + 0x70020007, // 004E JMP #0057 + 0x541EFFFC, // 004F LDINT R7 65533 + 0x1C1C0C07, // 0050 EQ R7 R6 R7 + 0x781E0004, // 0051 JMPF R7 #0057 + 0x8C1C0907, // 0052 GETMET R7 R4 K7 + 0x8824090B, // 0053 GETMBR R9 R4 K11 + 0x542A0003, // 0054 LDINT R10 4 + 0x7C1C0600, // 0055 CALL R7 3 + 0x80040E00, // 0056 RET 1 R7 + 0x70020045, // 0057 JMP #009E + 0x541E001C, // 0058 LDINT R7 29 + 0x1C1C0A07, // 0059 EQ R7 R5 R7 + 0x781E003A, // 005A JMPF R7 #0096 + 0x1C1C0D06, // 005B EQ R7 R6 K6 + 0x781E002F, // 005C JMPF R7 #008D + 0x8C1C090C, // 005D GETMET R7 R4 K12 + 0x7C1C0200, // 005E CALL R7 1 + 0x8820010D, // 005F GETMBR R8 R0 K13 + 0x60240010, // 0060 GETGBL R9 G16 + 0x8C28110E, // 0061 GETMET R10 R8 K14 + 0x7C280200, // 0062 CALL R10 1 + 0x7C240200, // 0063 CALL R9 1 + 0xA802000E, // 0064 EXBLK 0 #0074 + 0x5C281200, // 0065 MOVE R10 R9 + 0x7C280000, // 0066 CALL R10 0 + 0x8C2C0F0F, // 0067 GETMET R11 R7 K15 + 0x7C2C0200, // 0068 CALL R11 1 + 0x8C301710, // 0069 GETMET R12 R11 K16 + 0x58380006, // 006A LDCONST R14 K6 + 0x883C0908, // 006B GETMBR R15 R4 K8 + 0x5C401400, // 006C MOVE R16 R10 + 0x7C300800, // 006D CALL R12 4 + 0x8C301710, // 006E GETMET R12 R11 K16 + 0x58380009, // 006F LDCONST R14 K9 + 0x883C0908, // 0070 GETMBR R15 R4 K8 + 0x9440100A, // 0071 GETIDX R16 R8 R10 + 0x7C300800, // 0072 CALL R12 4 + 0x7001FFF0, // 0073 JMP #0065 + 0x58240011, // 0074 LDCONST R9 K17 + 0xAC240200, // 0075 CATCH R9 1 0 + 0xB0080000, // 0076 RAISE 2 R0 R0 + 0x88240112, // 0077 GETMBR R9 R0 K18 + 0x8C241313, // 0078 GETMET R9 R9 K19 + 0x8C2C0314, // 0079 GETMET R11 R1 K20 + 0x7C2C0200, // 007A CALL R11 1 + 0x7C240400, // 007B CALL R9 2 + 0x4C280000, // 007C LDNIL R10 + 0x1C24120A, // 007D EQ R9 R9 R10 + 0x7826000B, // 007E JMPF R9 #008B + 0x8C240F0F, // 007F GETMET R9 R7 K15 + 0x7C240200, // 0080 CALL R9 1 + 0x8C281310, // 0081 GETMET R10 R9 K16 + 0x58300006, // 0082 LDCONST R12 K6 + 0x88340908, // 0083 GETMBR R13 R4 K8 + 0x543A0012, // 0084 LDINT R14 19 + 0x7C280800, // 0085 CALL R10 4 + 0x8C281310, // 0086 GETMET R10 R9 K16 + 0x58300009, // 0087 LDCONST R12 K9 + 0x88340908, // 0088 GETMBR R13 R4 K8 + 0x58380009, // 0089 LDCONST R14 K9 + 0x7C280800, // 008A CALL R10 4 + 0x80040E00, // 008B RET 1 R7 + 0x70020007, // 008C JMP #0095 + 0x601C0003, // 008D GETGBL R7 G3 + 0x5C200000, // 008E MOVE R8 R0 + 0x7C1C0200, // 008F CALL R7 1 + 0x8C1C0F15, // 0090 GETMET R7 R7 K21 + 0x5C240200, // 0091 MOVE R9 R1 + 0x5C280400, // 0092 MOVE R10 R2 + 0x7C1C0600, // 0093 CALL R7 3 + 0x80040E00, // 0094 RET 1 R7 + 0x70020007, // 0095 JMP #009E + 0x601C0003, // 0096 GETGBL R7 G3 + 0x5C200000, // 0097 MOVE R8 R0 + 0x7C1C0200, // 0098 CALL R7 1 + 0x8C1C0F15, // 0099 GETMET R7 R7 K21 + 0x5C240200, // 009A MOVE R9 R1 + 0x5C280400, // 009B MOVE R10 R2 + 0x7C1C0600, // 009C CALL R7 3 + 0x80040E00, // 009D RET 1 R7 + 0x80000000, // 009E RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_Device ********************************************************************/ @@ -233,25 +304,35 @@ extern const bclass be_class_Matter_Plugin; be_local_class(Matter_Plugin_Device, 0, &be_class_Matter_Plugin, - be_nested_map(4, + be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, + { be_const_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(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(4, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65532), - be_const_int(65533), + { be_const_key_int(19, -1), be_const_int(1) }, })) ) } )) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Device_read_attribute_closure) }, + { be_const_key_weak(invoke_request, 1), be_const_closure(Matter_Plugin_Device_invoke_request_closure) }, + { be_const_key_weak(NON_BRIDGE_VENDOR, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(2, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(4631), + be_const_int(4993), + })) ) } )) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(4, + ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(3, ( (struct bvalue*) &(const bvalue[]) { be_const_int(0), be_const_int(65532), be_const_int(65533), + })) ) } )) }, + { be_const_key_int(57, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(1, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(17), })) ) } )) }, { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(8, @@ -265,14 +346,15 @@ be_local_class(Matter_Plugin_Device, be_const_int(65532), be_const_int(65533), })) ) } )) }, + { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(4, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(65532), + be_const_int(65533), })) ) } )) }, - { be_const_key_weak(TYPES, 0), 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(0, -1), be_const_int(0) }, })) ) } )) }, - { be_const_key_weak(read_attribute, 1), be_const_closure(Matter_Plugin_Device_read_attribute_closure) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Device_invoke_request_closure) }, })), be_str_weak(Matter_Plugin_Device) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h index 025159bc7..462c93f88 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Light3.h @@ -206,7 +206,7 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */ 0x781E0005, // 0040 JMPF R7 #0047 0x8C1C0907, // 0041 GETMET R7 R4 K7 0x88240908, // 0042 GETMBR R9 R4 K8 - 0x58280006, // 0043 LDCONST R10 K6 + 0x5828000A, // 0043 LDCONST R10 K10 0x7C1C0600, // 0044 CALL R7 3 0x80040E00, // 0045 RET 1 R7 0x70020019, // 0046 JMP #0061 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_OnOff.h index 3e14c2a04..3653ba167 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Sensor_OnOff.h @@ -256,7 +256,7 @@ be_local_class(Matter_Plugin_Sensor_OnOff, be_nested_map(12, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, - { be_const_key_weak(TYPE, 11), be_nested_str_weak(occupancy) }, + { be_const_key_weak(TYPE, 11), be_nested_str_weak(onoff) }, { 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[]) { diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index 37d664f8c..0e88e8429 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -2010,7 +2010,7 @@ be_local_class(Matter_UI, { be_const_key_weak(web_get_arg, -1), be_const_closure(Matter_UI_web_get_arg_closure) }, { be_const_key_weak(show_qrcode, 4), be_const_closure(Matter_UI_show_qrcode_closure) }, { be_const_key_weak(show_plugins_configuration, -1), be_const_closure(Matter_UI_show_plugins_configuration_closure) }, - { be_const_key_weak(_CLASSES_TYPES, -1), be_nested_str_weak(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy) }, + { be_const_key_weak(_CLASSES_TYPES, -1), be_nested_str_weak(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff) }, { be_const_key_weak(web_sensor, -1), be_const_closure(Matter_UI_web_sensor_closure) }, { be_const_key_weak(web_add_config_button, -1), be_const_closure(Matter_UI_web_add_config_button_closure) }, { be_const_key_weak(_CLASSES_TYPES2, 7), be_nested_str_weak(_X2Dhttp_X7Chttp_relay_X7Chttp_light0_X7Chttp_light1_X7Chttp_light2_X7Chttp_light3_X7Chttp_temperature_X7Chttp_pressure_X7Chttp_illuminance_X7Chttp_humidity_X7Chttp_occupancy) },