diff --git a/CHANGELOG.md b/CHANGELOG.md index fb248461a27e..a008d72ce38f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Added - Matter ability to add or remove endpoint in bridge mode (code only) +- Matter add controller's Vendor Name to logs and UI ### Breaking Changed diff --git a/lib/libesp32/berry_matter/generate/be_matter_vendors.h b/lib/libesp32/berry_matter/generate/be_matter_vendors.h new file mode 100644 index 000000000000..44b96de6de9d --- /dev/null +++ b/lib/libesp32/berry_matter/generate/be_matter_vendors.h @@ -0,0 +1,92 @@ +/*********************************************************************************\ +* List of Matter Vendors +* From: https://on.dcl.csa-iot.org/dcl/vendorinfo/vendors +* +* Generated content, do not edit +\*********************************************************************************/ +#include +#include + +typedef struct { + uint16_t id; + const char* name; +} matter_vendor_t; + +const matter_vendor_t matter_Vendors[] = { + + { 0x100B, "Signify"}, + { 0x101D, "Assa Abloy"}, + { 0x1021, "Legrand Group"}, + { 0x1037, "NXP Semiconductors"}, + { 0x105E, "Schneider"}, + { 0x109B, "Leviton"}, + { 0x10D0, "Qorvo"}, + { 0x10EE, "UEI"}, + { 0x10F2, "ubisys"}, + { 0x111D, "Comcast Communications"}, + { 0x115A, "Nanoleaf"}, + { 0x115F, "Aqara"}, + { 0x1160, "Sengled"}, + { 0x1168, "Leedarson"}, + { 0x117E, "Feibit"}, + { 0x1188, "TP-Link"}, + { 0x118C, "Midea Group"}, + { 0x120B, "HEIMAN"}, + { 0x1217, "Amazon Alexa"}, + { 0x1219, "ORVIBO"}, + { 0x125D, "Tuya"}, + { 0x127F, "Nordic Semiconductor ASA"}, + { 0x1280, "Siterwell"}, + { 0x1286, "CoolKit"}, + { 0x128F, "EGLO"}, + { 0x130A, "Eve"}, + { 0x130D, "BouffaloLab"}, + { 0x1312, "Yeelight"}, + { 0x131B, "Espressif Systems"}, + { 0x131E, "CAME S.p.A."}, + { 0x131F, "Longan.link"}, + { 0x1321, "SONOFF"}, + { 0x1333, "Becker Antriebe"}, + { 0x1339, "GE Lighting, a Savant company"}, + { 0x133F, "ASR"}, + { 0x1342, "Beken Corporation"}, + { 0x1344, "Eltako"}, + { 0x1345, "Meross"}, + { 0x1346, "Rafael"}, + { 0x1349, "Apple Home"}, + { 0x134E, "tado"}, + { 0x134F, "mediola"}, + { 0x1351, "HooRii Technology"}, + { 0x135D, "Nuki"}, + { 0x1362, "deveritec GmbH"}, + { 0x1365, "Dooya"}, + { 0x136E, "Ambi Labs Limited"}, + { 0x1371, "Tridonic"}, + { 0x1372, "innovation matters"}, + { 0x137F, "NEO"}, + { 0x1381, "Amazon Prime Video"}, + { 0x1384, "Apple Keychain"}, + { 0x1386, "Skylux"}, + { 0x1387, "Qianyan"}, + { 0x138A, "Nature"}, + { 0x1391, "Kasa"}, + { 0x1392, "Tapo"}, + { 0x1397, "SwitchBot"}, + { 0x139C, "Zemismart Technology Limited"}, + { 0x1400, "Uascent"}, + { 0x1403, "Arlec Australia"}, + { 0x1404, "Phaten"}, + { 0x1407, "ThirdReality"}, + { 0x1410, "Quectel"}, + { 0x1413, "1Home"}, + { 0x1415, "Caveman"}, + { 0x1419, "Lorex"}, + { 0x141B, "Rang Dong VN"}, + { 0x141E, "TUO Accessories LLC"}, + { 0x141F, "Ductech"}, + { 0x142D, "QH"}, + { 0x142F, "QIACHIP"}, + { 0x6006, "Google LLC"}, + + { 0xFFFF, NULL }, +}; diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index bef0a425344d..72deac883dbe 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -77,6 +77,17 @@ extern const bclass be_class_Matter_QRCode; #include "../generate/be_matter_clusters.h" #include "../generate/be_matter_opcodes.h" +#include "../generate/be_matter_vendors.h" + +const char* matter_get_vendor_name(uint16_t id) { + for (const matter_vendor_t * vnd = matter_Vendors; vnd->id != 0xFFFF; vnd++) { + if (vnd->id == id) { + return vnd->name; + } + } + return NULL; +} +BE_FUNC_CTYPE_DECLARE(matter_get_vendor_name, "s", "i") const char* matter_get_cluster_name(uint16_t cluster) { for (const matter_cluster_t * cl = matterAllClusters; cl->id != 0xFFFF; cl++) { @@ -253,6 +264,7 @@ module matter (scope: global, strings: weak) { member, closure(matter_member_closure) get_ip_bytes, ctype_func(matter_get_ip_bytes) + get_vendor_name, ctype_func(matter_get_vendor_name) get_cluster_name, ctype_func(matter_get_cluster_name) get_attribute_name, ctype_func(matter_get_attribute_name) is_attribute_writable, ctype_func(matter_is_attribute_writable) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be b/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be index 046201337bc6..14f538e24923 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be @@ -95,6 +95,18 @@ class Matter_Fabric : Matter_Expirable def get_ca() return self.root_ca_certificate end def get_fabric_index() return self.fabric_index end + def get_admin_vendor_name() + var vnd = self.admin_vendor + if vnd == nil return "" end + var name = matter.get_vendor_name(vnd) + if name != nil + return name + else + import string + return string.format("0x%04X", vnd) + end + end + def set_fabric_index(v) self.fabric_index = v end def set_ca(ca) self.root_ca_certificate = ca @@ -205,7 +217,7 @@ class Matter_Fabric : Matter_Expirable # Called before removal def log_new_fabric() import string - tasmota.log(string.format("MTR: +Fabric fab='%s' vendorid=0x%04X", self.get_fabric_id().copy().reverse().tohex(), self.admin_vendor), 2) + tasmota.log(string.format("MTR: +Fabric fab='%s' vendorid=%s", self.get_fabric_id().copy().reverse().tohex(), self.get_admin_vendor_name()), 2) end ############################################################# diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be index c856ed1027c0..88249ba9761a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be @@ -205,7 +205,7 @@ class Matter_UI if !label label = "" end label = webserver.html_escape(label) # protect against HTML injection - webserver.content_send(string.format("
 #%i %s (0x%04X) 

", f.get_fabric_index(), label, f.get_admin_vendor())) + webserver.content_send(string.format("
 #%i %s (%s) 

", f.get_fabric_index(), label, f.get_admin_vendor_name())) var fabric_rev = f.get_fabric_id().copy().reverse() var deviceid_rev = f.get_device_id().copy().reverse() diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h index 35fc747c31ea..fc973c91516b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h @@ -7,11 +7,11 @@ extern const bclass be_class_Matter_Fabric; /******************************************************************** -** Solidified function: get_device_id +** Solidified function: counter_group_data_snd_next ********************************************************************/ -be_local_closure(Matter_Fabric_get_device_id, /* name */ +be_local_closure(Matter_Fabric_counter_group_data_snd_next, /* name */ be_nested_proto( - 2, /* nstack */ + 9, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -19,14 +19,54 @@ be_local_closure(Matter_Fabric_get_device_id, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(device_id), + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(_counter_group_data_snd_impl), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(log), + /* K5 */ be_nested_str_weak(format), + /* K6 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_data_snd_X3D_X25i), + /* K7 */ be_const_int(3), + /* K8 */ be_nested_str_weak(matter), + /* K9 */ be_nested_str_weak(Counter), + /* K10 */ be_nested_str_weak(is_greater), + /* K11 */ be_nested_str_weak(counter_group_data_snd), + /* K12 */ be_nested_str_weak(_GROUP_SND_INCR), + /* K13 */ be_nested_str_weak(does_persist), + /* K14 */ be_nested_str_weak(save), }), - be_str_weak(get_device_id), + be_str_weak(counter_group_data_snd_next), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[28]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x7C080200, // 0003 CALL R2 1 + 0xB80E0600, // 0004 GETNGBL R3 K3 + 0x8C0C0704, // 0005 GETMET R3 R3 K4 + 0x8C140305, // 0006 GETMET R5 R1 K5 + 0x581C0006, // 0007 LDCONST R7 K6 + 0x5C200400, // 0008 MOVE R8 R2 + 0x7C140600, // 0009 CALL R5 3 + 0x58180007, // 000A LDCONST R6 K7 + 0x7C0C0600, // 000B CALL R3 3 + 0xB80E1000, // 000C GETNGBL R3 K8 + 0x880C0709, // 000D GETMBR R3 R3 K9 + 0x8C0C070A, // 000E GETMET R3 R3 K10 + 0x5C140400, // 000F MOVE R5 R2 + 0x8818010B, // 0010 GETMBR R6 R0 K11 + 0x7C0C0600, // 0011 CALL R3 3 + 0x780E0007, // 0012 JMPF R3 #001B + 0x880C010C, // 0013 GETMBR R3 R0 K12 + 0x000C0403, // 0014 ADD R3 R2 R3 + 0x90021603, // 0015 SETMBR R0 K11 R3 + 0x8C0C010D, // 0016 GETMET R3 R0 K13 + 0x7C0C0200, // 0017 CALL R3 1 + 0x780E0001, // 0018 JMPF R3 #001B + 0x8C0C010E, // 0019 GETMET R3 R0 K14 + 0x7C0C0200, // 001A CALL R3 1 + 0x80040400, // 001B RET 1 R2 }) ) ); @@ -34,11 +74,11 @@ be_local_closure(Matter_Fabric_get_device_id, /* name */ /******************************************************************** -** Solidified function: hydrate_post +** Solidified function: get_ca_pub ********************************************************************/ -be_local_closure(Matter_Fabric_hydrate_post, /* name */ +be_local_closure(Matter_Fabric_get_ca_pub, /* name */ be_nested_proto( - 4, /* nstack */ + 6, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -46,34 +86,28 @@ be_local_closure(Matter_Fabric_hydrate_post, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(_counter_group_data_snd_impl), - /* K1 */ be_nested_str_weak(reset), - /* K2 */ be_nested_str_weak(counter_group_data_snd), - /* K3 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), - /* K4 */ be_nested_str_weak(counter_group_ctrl_snd), - /* K5 */ be_nested_str_weak(val), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(root_ca_certificate), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(TLV), + /* K3 */ be_nested_str_weak(parse), + /* K4 */ be_nested_str_weak(findsubval), }), - be_str_weak(hydrate_post), + be_str_weak(get_ca_pub), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ + ( &(const binstruction[12]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x7C040400, // 0003 CALL R1 2 - 0x88040103, // 0004 GETMBR R1 R0 K3 - 0x8C040301, // 0005 GETMET R1 R1 K1 - 0x880C0104, // 0006 GETMBR R3 R0 K4 - 0x7C040400, // 0007 CALL R1 2 - 0x88040100, // 0008 GETMBR R1 R0 K0 - 0x8C040305, // 0009 GETMET R1 R1 K5 - 0x7C040200, // 000A CALL R1 1 - 0x90020401, // 000B SETMBR R0 K2 R1 - 0x88040103, // 000C GETMBR R1 R0 K3 - 0x8C040305, // 000D GETMET R1 R1 K5 - 0x7C040200, // 000E CALL R1 1 - 0x90020801, // 000F SETMBR R0 K4 R1 - 0x80000000, // 0010 RET 0 + 0x78060008, // 0001 JMPF R1 #000B + 0xB80A0200, // 0002 GETNGBL R2 K1 + 0x88080502, // 0003 GETMBR R2 R2 K2 + 0x8C080503, // 0004 GETMET R2 R2 K3 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x8C0C0504, // 0007 GETMET R3 R2 K4 + 0x54160008, // 0008 LDINT R5 9 + 0x7C0C0400, // 0009 CALL R3 2 + 0x80040600, // 000A RET 1 R3 + 0x80000000, // 000B RET 0 }) ) ); @@ -81,12 +115,12 @@ be_local_closure(Matter_Fabric_hydrate_post, /* name */ /******************************************************************** -** Solidified function: set_ca +** Solidified function: get_device_id ********************************************************************/ -be_local_closure(Matter_Fabric_set_ca, /* name */ +be_local_closure(Matter_Fabric_get_device_id, /* name */ be_nested_proto( 2, /* nstack */ - 2, /* argc */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -94,13 +128,13 @@ be_local_closure(Matter_Fabric_set_ca, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(root_ca_certificate), + /* K0 */ be_nested_str_weak(device_id), }), - be_str_weak(set_ca), + be_str_weak(get_device_id), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -108,40 +142,56 @@ be_local_closure(Matter_Fabric_set_ca, /* name */ /******************************************************************** -** Solidified function: fabric_completed +** Solidified function: add_session ********************************************************************/ -be_local_closure(Matter_Fabric_fabric_completed, /* name */ +be_local_closure(Matter_Fabric_add_session, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ + 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(set_no_expiration), - /* K1 */ be_nested_str_weak(set_persist), - /* K2 */ be_nested_str_weak(assign_fabric_index), - /* K3 */ be_nested_str_weak(_store), - /* K4 */ be_nested_str_weak(add_fabric), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(_sessions), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(_MAX_CASE), + /* K3 */ be_nested_str_weak(remove), + /* K4 */ be_nested_str_weak(get_oldest_session), + /* K5 */ be_nested_str_weak(push), }), - be_str_weak(fabric_completed), + be_str_weak(add_session), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x500C0200, // 0003 LDBOOL R3 1 0 - 0x7C040400, // 0004 CALL R1 2 - 0x8C040102, // 0005 GETMET R1 R0 K2 - 0x7C040200, // 0006 CALL R1 1 - 0x88040103, // 0007 GETMBR R1 R0 K3 - 0x8C040304, // 0008 GETMET R1 R1 K4 - 0x5C0C0000, // 0009 MOVE R3 R0 - 0x7C040400, // 000A CALL R1 2 - 0x80000000, // 000B RET 0 + ( &(const binstruction[27]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x1C080403, // 0005 EQ R2 R2 R3 + 0x780A0012, // 0006 JMPF R2 #001A + 0x6008000C, // 0007 GETGBL R2 G12 + 0x880C0100, // 0008 GETMBR R3 R0 K0 + 0x7C080200, // 0009 CALL R2 1 + 0x880C0102, // 000A GETMBR R3 R0 K2 + 0x28080403, // 000B GE R2 R2 R3 + 0x780A0008, // 000C JMPF R2 #0016 + 0x88080100, // 000D GETMBR R2 R0 K0 + 0x8C080503, // 000E GETMET R2 R2 K3 + 0x88100100, // 000F GETMBR R4 R0 K0 + 0x8C100901, // 0010 GETMET R4 R4 K1 + 0x8C180104, // 0011 GETMET R6 R0 K4 + 0x7C180200, // 0012 CALL R6 1 + 0x7C100400, // 0013 CALL R4 2 + 0x7C080400, // 0014 CALL R2 2 + 0x7001FFF0, // 0015 JMP #0007 + 0x88080100, // 0016 GETMBR R2 R0 K0 + 0x8C080505, // 0017 GETMET R2 R2 K5 + 0x5C100200, // 0018 MOVE R4 R1 + 0x7C080400, // 0019 CALL R2 2 + 0x80000000, // 001A RET 0 }) ) ); @@ -149,11 +199,11 @@ be_local_closure(Matter_Fabric_fabric_completed, /* name */ /******************************************************************** -** Solidified function: get_fabric_compressed +** Solidified function: get_oldest_session ********************************************************************/ -be_local_closure(Matter_Fabric_get_fabric_compressed, /* name */ +be_local_closure(Matter_Fabric_get_oldest_session, /* name */ be_nested_proto( - 2, /* nstack */ + 4, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -162,13 +212,15 @@ be_local_closure(Matter_Fabric_get_fabric_compressed, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(fabric_compressed), + /* K0 */ be_nested_str_weak(get_old_recent_session), }), - be_str_weak(get_fabric_compressed), + be_str_weak(get_oldest_session), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[ 4]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x500C0200, // 0001 LDBOOL R3 1 0 + 0x7C040400, // 0002 CALL R1 2 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -176,91 +228,144 @@ be_local_closure(Matter_Fabric_get_fabric_compressed, /* name */ /******************************************************************** -** Solidified function: get_ca_pub +** Solidified function: fromjson ********************************************************************/ -be_local_closure(Matter_Fabric_get_ca_pub, /* name */ +be_local_closure(Matter_Fabric_fromjson, /* name */ be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ + 16, /* nstack */ + 2, /* argc */ + 4, /* 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(root_ca_certificate), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(parse), - /* K4 */ be_nested_str_weak(findsubval), + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Fabric), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(introspect), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(Fabric), + /* K5 */ be_nested_str_weak(keys), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(_), + /* K8 */ be_nested_str_weak(find), + /* K9 */ be_nested_str_weak(0x), + /* K10 */ be_nested_str_weak(set), + /* K11 */ be_nested_str_weak(fromhex), + /* K12 */ be_const_int(2), + /* K13 */ be_const_int(2147483647), + /* K14 */ be_nested_str_weak(_X24_X24), + /* K15 */ be_nested_str_weak(fromb64), + /* K16 */ be_nested_str_weak(stop_iteration), + /* K17 */ be_nested_str_weak(hydrate_post), }), - be_str_weak(get_ca_pub), + be_str_weak(fromjson), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060008, // 0001 JMPF R1 #000B - 0xB80A0200, // 0002 GETNGBL R2 K1 - 0x88080502, // 0003 GETMBR R2 R2 K2 - 0x8C080503, // 0004 GETMET R2 R2 K3 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x8C0C0504, // 0007 GETMET R3 R2 K4 - 0x54160008, // 0008 LDINT R5 9 - 0x7C0C0400, // 0009 CALL R3 2 - 0x80040600, // 000A RET 1 R3 - 0x80000000, // 000B RET 0 - }) - ) + ( &(const binstruction[76]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0xA40E0200, // 0001 IMPORT R3 K1 + 0xA4120400, // 0002 IMPORT R4 K2 + 0xB8160600, // 0003 GETNGBL R5 K3 + 0x8C140B04, // 0004 GETMET R5 R5 K4 + 0x5C1C0000, // 0005 MOVE R7 R0 + 0x7C140400, // 0006 CALL R5 2 + 0x60180010, // 0007 GETGBL R6 G16 + 0x8C1C0305, // 0008 GETMET R7 R1 K5 + 0x7C1C0200, // 0009 CALL R7 1 + 0x7C180200, // 000A CALL R6 1 + 0xA8020039, // 000B EXBLK 0 #0046 + 0x5C1C0C00, // 000C MOVE R7 R6 + 0x7C1C0000, // 000D CALL R7 0 + 0x94200F06, // 000E GETIDX R8 R7 K6 + 0x1C201107, // 000F EQ R8 R8 K7 + 0x78220000, // 0010 JMPF R8 #0012 + 0x7001FFF9, // 0011 JMP #000C + 0x94200207, // 0012 GETIDX R8 R1 R7 + 0x60240004, // 0013 GETGBL R9 G4 + 0x5C281000, // 0014 MOVE R10 R8 + 0x7C240200, // 0015 CALL R9 1 + 0x1C241301, // 0016 EQ R9 R9 K1 + 0x78260027, // 0017 JMPF R9 #0040 + 0x8C240708, // 0018 GETMET R9 R3 K8 + 0x5C2C1000, // 0019 MOVE R11 R8 + 0x58300009, // 001A LDCONST R12 K9 + 0x7C240600, // 001B CALL R9 3 + 0x1C241306, // 001C EQ R9 R9 K6 + 0x7826000A, // 001D JMPF R9 #0029 + 0x8C24090A, // 001E GETMET R9 R4 K10 + 0x5C2C0A00, // 001F MOVE R11 R5 + 0x5C300E00, // 0020 MOVE R12 R7 + 0x60340015, // 0021 GETGBL R13 G21 + 0x7C340000, // 0022 CALL R13 0 + 0x8C341B0B, // 0023 GETMET R13 R13 K11 + 0x403E190D, // 0024 CONNECT R15 K12 K13 + 0x943C100F, // 0025 GETIDX R15 R8 R15 + 0x7C340400, // 0026 CALL R13 2 + 0x7C240800, // 0027 CALL R9 4 + 0x70020015, // 0028 JMP #003F + 0x8C240708, // 0029 GETMET R9 R3 K8 + 0x5C2C1000, // 002A MOVE R11 R8 + 0x5830000E, // 002B LDCONST R12 K14 + 0x7C240600, // 002C CALL R9 3 + 0x1C241306, // 002D EQ R9 R9 K6 + 0x7826000A, // 002E JMPF R9 #003A + 0x8C24090A, // 002F GETMET R9 R4 K10 + 0x5C2C0A00, // 0030 MOVE R11 R5 + 0x5C300E00, // 0031 MOVE R12 R7 + 0x60340015, // 0032 GETGBL R13 G21 + 0x7C340000, // 0033 CALL R13 0 + 0x8C341B0F, // 0034 GETMET R13 R13 K15 + 0x403E190D, // 0035 CONNECT R15 K12 K13 + 0x943C100F, // 0036 GETIDX R15 R8 R15 + 0x7C340400, // 0037 CALL R13 2 + 0x7C240800, // 0038 CALL R9 4 + 0x70020004, // 0039 JMP #003F + 0x8C24090A, // 003A GETMET R9 R4 K10 + 0x5C2C0A00, // 003B MOVE R11 R5 + 0x5C300E00, // 003C MOVE R12 R7 + 0x5C341000, // 003D MOVE R13 R8 + 0x7C240800, // 003E CALL R9 4 + 0x70020004, // 003F JMP #0045 + 0x8C24090A, // 0040 GETMET R9 R4 K10 + 0x5C2C0A00, // 0041 MOVE R11 R5 + 0x5C300E00, // 0042 MOVE R12 R7 + 0x5C341000, // 0043 MOVE R13 R8 + 0x7C240800, // 0044 CALL R9 4 + 0x7001FFC5, // 0045 JMP #000C + 0x58180010, // 0046 LDCONST R6 K16 + 0xAC180200, // 0047 CATCH R6 1 0 + 0xB0080000, // 0048 RAISE 2 R0 R0 + 0x8C180B11, // 0049 GETMET R6 R5 K17 + 0x7C180200, // 004A CALL R6 1 + 0x80040A00, // 004B RET 1 R5 + }) + ) ); /*******************************************************************/ /******************************************************************** -** Solidified function: before_remove +** Solidified function: set_fabric_index ********************************************************************/ -be_local_closure(Matter_Fabric_before_remove, /* name */ +be_local_closure(Matter_Fabric_set_fabric_index, /* name */ be_nested_proto( - 9, /* nstack */ - 1, /* argc */ + 2, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(format), - /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2DFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20_X28removed_X29), - /* K5 */ be_nested_str_weak(get_fabric_id), - /* K6 */ be_nested_str_weak(copy), - /* K7 */ be_nested_str_weak(reverse), - /* K8 */ be_nested_str_weak(tohex), - /* K9 */ be_const_int(2), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(fabric_index), }), - be_str_weak(before_remove), + be_str_weak(set_fabric_index), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x8C100303, // 0003 GETMET R4 R1 K3 - 0x58180004, // 0004 LDCONST R6 K4 - 0x8C1C0105, // 0005 GETMET R7 R0 K5 - 0x7C1C0200, // 0006 CALL R7 1 - 0x8C1C0F06, // 0007 GETMET R7 R7 K6 - 0x7C1C0200, // 0008 CALL R7 1 - 0x8C1C0F07, // 0009 GETMET R7 R7 K7 - 0x7C1C0200, // 000A CALL R7 1 - 0x8C1C0F08, // 000B GETMET R7 R7 K8 - 0x7C1C0200, // 000C CALL R7 1 - 0x7C100600, // 000D CALL R4 3 - 0x58140009, // 000E LDCONST R5 K9 - 0x7C080600, // 000F CALL R2 3 - 0x80000000, // 0010 RET 0 + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 }) ) ); @@ -268,26 +373,74 @@ be_local_closure(Matter_Fabric_before_remove, /* name */ /******************************************************************** -** Solidified function: get_ca +** Solidified function: init ********************************************************************/ -be_local_closure(Matter_Fabric_get_ca, /* name */ +be_local_closure(Matter_Fabric_init, /* name */ be_nested_proto( - 2, /* nstack */ - 1, /* argc */ + 5, /* nstack */ + 2, /* 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(root_ca_certificate), + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(_store), + /* K2 */ be_nested_str_weak(_sessions), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(Expirable_list), + /* K5 */ be_nested_str_weak(fabric_label), + /* K6 */ be_nested_str_weak(), + /* K7 */ be_nested_str_weak(created), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(rtc), + /* K10 */ be_nested_str_weak(utc), + /* K11 */ be_nested_str_weak(_counter_group_data_snd_impl), + /* K12 */ be_nested_str_weak(Counter), + /* K13 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), + /* K14 */ be_nested_str_weak(counter_group_data_snd), + /* K15 */ be_nested_str_weak(next), + /* K16 */ be_nested_str_weak(_GROUP_SND_INCR), + /* K17 */ be_nested_str_weak(counter_group_ctrl_snd), }), - be_str_weak(get_ca), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[33]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x90020201, // 0001 SETMBR R0 K1 R1 + 0xB80E0600, // 0002 GETNGBL R3 K3 + 0x8C0C0704, // 0003 GETMET R3 R3 K4 + 0x7C0C0200, // 0004 CALL R3 1 + 0x90020403, // 0005 SETMBR R0 K2 R3 + 0x90020B06, // 0006 SETMBR R0 K5 K6 + 0xB80E1000, // 0007 GETNGBL R3 K8 + 0x8C0C0709, // 0008 GETMET R3 R3 K9 + 0x7C0C0200, // 0009 CALL R3 1 + 0x940C070A, // 000A GETIDX R3 R3 K10 + 0x90020E03, // 000B SETMBR R0 K7 R3 + 0xB80E0600, // 000C GETNGBL R3 K3 + 0x8C0C070C, // 000D GETMET R3 R3 K12 + 0x7C0C0200, // 000E CALL R3 1 + 0x90021603, // 000F SETMBR R0 K11 R3 + 0xB80E0600, // 0010 GETNGBL R3 K3 + 0x8C0C070C, // 0011 GETMET R3 R3 K12 + 0x7C0C0200, // 0012 CALL R3 1 + 0x90021A03, // 0013 SETMBR R0 K13 R3 + 0x880C010B, // 0014 GETMBR R3 R0 K11 + 0x8C0C070F, // 0015 GETMET R3 R3 K15 + 0x7C0C0200, // 0016 CALL R3 1 + 0x88100110, // 0017 GETMBR R4 R0 K16 + 0x000C0604, // 0018 ADD R3 R3 R4 + 0x90021C03, // 0019 SETMBR R0 K14 R3 + 0x880C010B, // 001A GETMBR R3 R0 K11 + 0x8C0C070F, // 001B GETMET R3 R3 K15 + 0x7C0C0200, // 001C CALL R3 1 + 0x88100110, // 001D GETMBR R4 R0 K16 + 0x000C0604, // 001E ADD R3 R3 R4 + 0x90022203, // 001F SETMBR R0 K17 R3 + 0x80000000, // 0020 RET 0 }) ) ); @@ -295,11 +448,11 @@ be_local_closure(Matter_Fabric_get_ca, /* name */ /******************************************************************** -** Solidified function: log_new_fabric +** Solidified function: fabric_completed ********************************************************************/ -be_local_closure(Matter_Fabric_log_new_fabric, /* name */ +be_local_closure(Matter_Fabric_fabric_completed, /* name */ be_nested_proto( - 9, /* nstack */ + 4, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -307,40 +460,28 @@ be_local_closure(Matter_Fabric_log_new_fabric, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(format), - /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2BFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20vendorid_X3D0x_X2504X), - /* K5 */ be_nested_str_weak(get_fabric_id), - /* K6 */ be_nested_str_weak(copy), - /* K7 */ be_nested_str_weak(reverse), - /* K8 */ be_nested_str_weak(tohex), - /* K9 */ be_nested_str_weak(admin_vendor), - /* K10 */ be_const_int(2), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(set_no_expiration), + /* K1 */ be_nested_str_weak(set_persist), + /* K2 */ be_nested_str_weak(assign_fabric_index), + /* K3 */ be_nested_str_weak(_store), + /* K4 */ be_nested_str_weak(add_fabric), }), - be_str_weak(log_new_fabric), + be_str_weak(fabric_completed), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x8C100303, // 0003 GETMET R4 R1 K3 - 0x58180004, // 0004 LDCONST R6 K4 - 0x8C1C0105, // 0005 GETMET R7 R0 K5 - 0x7C1C0200, // 0006 CALL R7 1 - 0x8C1C0F06, // 0007 GETMET R7 R7 K6 - 0x7C1C0200, // 0008 CALL R7 1 - 0x8C1C0F07, // 0009 GETMET R7 R7 K7 - 0x7C1C0200, // 000A CALL R7 1 - 0x8C1C0F08, // 000B GETMET R7 R7 K8 - 0x7C1C0200, // 000C CALL R7 1 - 0x88200109, // 000D GETMBR R8 R0 K9 - 0x7C100800, // 000E CALL R4 4 - 0x5814000A, // 000F LDCONST R5 K10 - 0x7C080600, // 0010 CALL R2 3 - 0x80000000, // 0011 RET 0 + ( &(const binstruction[12]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x500C0200, // 0003 LDBOOL R3 1 0 + 0x7C040400, // 0004 CALL R1 2 + 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x7C040200, // 0006 CALL R1 1 + 0x88040103, // 0007 GETMBR R1 R0 K3 + 0x8C040304, // 0008 GETMET R1 R1 K4 + 0x5C0C0000, // 0009 MOVE R3 R0 + 0x7C040400, // 000A CALL R1 2 + 0x80000000, // 000B RET 0 }) ) ); @@ -348,217 +489,12 @@ be_local_closure(Matter_Fabric_log_new_fabric, /* name */ /******************************************************************** -** Solidified function: set_fabric_index +** Solidified function: counter_group_ctrl_snd_next ********************************************************************/ -be_local_closure(Matter_Fabric_set_fabric_index, /* name */ +be_local_closure(Matter_Fabric_counter_group_ctrl_snd_next, /* name */ be_nested_proto( - 2, /* nstack */ - 2, /* 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(fabric_index), - }), - be_str_weak(set_fabric_index), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: assign_fabric_index -********************************************************************/ -be_local_closure(Matter_Fabric_assign_fabric_index, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(get_fabric_index), - /* K1 */ be_nested_str_weak(set_fabric_index), - /* K2 */ be_nested_str_weak(_store), - /* K3 */ be_nested_str_weak(next_fabric_idx), - }), - be_str_weak(assign_fabric_index), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x1C040202, // 0003 EQ R1 R1 R2 - 0x78060004, // 0004 JMPF R1 #000A - 0x8C040101, // 0005 GETMET R1 R0 K1 - 0x880C0102, // 0006 GETMBR R3 R0 K2 - 0x8C0C0703, // 0007 GETMET R3 R3 K3 - 0x7C0C0200, // 0008 CALL R3 1 - 0x7C040400, // 0009 CALL R1 2 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_ipk_epoch_key -********************************************************************/ -be_local_closure(Matter_Fabric_get_ipk_epoch_key, /* 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(ipk_epoch_key), - }), - be_str_weak(get_ipk_epoch_key), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_pk -********************************************************************/ -be_local_closure(Matter_Fabric_set_pk, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* 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(no_private_key), - }), - be_str_weak(set_pk), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_ipk_epoch_key -********************************************************************/ -be_local_closure(Matter_Fabric_set_ipk_epoch_key, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* 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(ipk_epoch_key), - }), - be_str_weak(set_ipk_epoch_key), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_old_recent_session -********************************************************************/ -be_local_closure(Matter_Fabric_get_old_recent_session, /* 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[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_sessions), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(last_used), - /* K3 */ be_const_int(1), - }), - be_str_weak(get_old_recent_session), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x6008000C, // 0000 GETGBL R2 G12 - 0x880C0100, // 0001 GETMBR R3 R0 K0 - 0x7C080200, // 0002 CALL R2 1 - 0x1C080501, // 0003 EQ R2 R2 K1 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x4C080000, // 0005 LDNIL R2 - 0x80040400, // 0006 RET 1 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x94080501, // 0008 GETIDX R2 R2 K1 - 0x880C0502, // 0009 GETMBR R3 R2 K2 - 0x58100003, // 000A LDCONST R4 K3 - 0x6014000C, // 000B GETGBL R5 G12 - 0x88180100, // 000C GETMBR R6 R0 K0 - 0x7C140200, // 000D CALL R5 1 - 0x14140805, // 000E LT R5 R4 R5 - 0x7816000C, // 000F JMPF R5 #001D - 0x88140100, // 0010 GETMBR R5 R0 K0 - 0x94140A04, // 0011 GETIDX R5 R5 R4 - 0x88140B02, // 0012 GETMBR R5 R5 K2 - 0x78060001, // 0013 JMPF R1 #0016 - 0x14180A03, // 0014 LT R6 R5 R3 - 0x70020000, // 0015 JMP #0017 - 0x24180A03, // 0016 GT R6 R5 R3 - 0x781A0002, // 0017 JMPF R6 #001B - 0x88180100, // 0018 GETMBR R6 R0 K0 - 0x94080C04, // 0019 GETIDX R2 R6 R4 - 0x5C0C0A00, // 001A MOVE R3 R5 - 0x00100903, // 001B ADD R4 R4 K3 - 0x7001FFED, // 001C JMP #000B - 0x80040400, // 001D RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: counter_group_ctrl_snd_next -********************************************************************/ -be_local_closure(Matter_Fabric_counter_group_ctrl_snd_next, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ + 9, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -620,9 +556,9 @@ be_local_closure(Matter_Fabric_counter_group_ctrl_snd_next, /* name */ /******************************************************************** -** Solidified function: get_admin_vendor +** Solidified function: get_ipk_epoch_key ********************************************************************/ -be_local_closure(Matter_Fabric_get_admin_vendor, /* name */ +be_local_closure(Matter_Fabric_get_ipk_epoch_key, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -633,9 +569,9 @@ be_local_closure(Matter_Fabric_get_admin_vendor, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(admin_vendor), + /* K0 */ be_nested_str_weak(ipk_epoch_key), }), - be_str_weak(get_admin_vendor), + be_str_weak(get_ipk_epoch_key), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -647,172 +583,12 @@ be_local_closure(Matter_Fabric_get_admin_vendor, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: tojson ********************************************************************/ -be_local_closure(Matter_Fabric_init, /* name */ +be_local_closure(Matter_Fabric_tojson, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(_store), - /* K2 */ be_nested_str_weak(_sessions), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Expirable_list), - /* K5 */ be_nested_str_weak(fabric_label), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(created), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(rtc), - /* K10 */ be_nested_str_weak(utc), - /* K11 */ be_nested_str_weak(_counter_group_data_snd_impl), - /* K12 */ be_nested_str_weak(Counter), - /* K13 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), - /* K14 */ be_nested_str_weak(counter_group_data_snd), - /* K15 */ be_nested_str_weak(next), - /* K16 */ be_nested_str_weak(_GROUP_SND_INCR), - /* K17 */ be_nested_str_weak(counter_group_ctrl_snd), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x90020201, // 0001 SETMBR R0 K1 R1 - 0xB80E0600, // 0002 GETNGBL R3 K3 - 0x8C0C0704, // 0003 GETMET R3 R3 K4 - 0x7C0C0200, // 0004 CALL R3 1 - 0x90020403, // 0005 SETMBR R0 K2 R3 - 0x90020B06, // 0006 SETMBR R0 K5 K6 - 0xB80E1000, // 0007 GETNGBL R3 K8 - 0x8C0C0709, // 0008 GETMET R3 R3 K9 - 0x7C0C0200, // 0009 CALL R3 1 - 0x940C070A, // 000A GETIDX R3 R3 K10 - 0x90020E03, // 000B SETMBR R0 K7 R3 - 0xB80E0600, // 000C GETNGBL R3 K3 - 0x8C0C070C, // 000D GETMET R3 R3 K12 - 0x7C0C0200, // 000E CALL R3 1 - 0x90021603, // 000F SETMBR R0 K11 R3 - 0xB80E0600, // 0010 GETNGBL R3 K3 - 0x8C0C070C, // 0011 GETMET R3 R3 K12 - 0x7C0C0200, // 0012 CALL R3 1 - 0x90021A03, // 0013 SETMBR R0 K13 R3 - 0x880C010B, // 0014 GETMBR R3 R0 K11 - 0x8C0C070F, // 0015 GETMET R3 R3 K15 - 0x7C0C0200, // 0016 CALL R3 1 - 0x88100110, // 0017 GETMBR R4 R0 K16 - 0x000C0604, // 0018 ADD R3 R3 R4 - 0x90021C03, // 0019 SETMBR R0 K14 R3 - 0x880C010B, // 001A GETMBR R3 R0 K11 - 0x8C0C070F, // 001B GETMET R3 R3 K15 - 0x7C0C0200, // 001C CALL R3 1 - 0x88100110, // 001D GETMBR R4 R0 K16 - 0x000C0604, // 001E ADD R3 R3 R4 - 0x90022203, // 001F SETMBR R0 K17 R3 - 0x80000000, // 0020 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_oldest_session -********************************************************************/ -be_local_closure(Matter_Fabric_get_oldest_session, /* name */ - be_nested_proto( - 4, /* 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_old_recent_session), - }), - be_str_weak(get_oldest_session), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x500C0200, // 0001 LDBOOL R3 1 0 - 0x7C040400, // 0002 CALL R1 2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_admin_subject_vendor -********************************************************************/ -be_local_closure(Matter_Fabric_set_admin_subject_vendor, /* name */ - be_nested_proto( - 3, /* nstack */ - 3, /* 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(admin_subject), - /* K1 */ be_nested_str_weak(admin_vendor), - }), - be_str_weak(set_admin_subject_vendor), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_fabric_label -********************************************************************/ -be_local_closure(Matter_Fabric_get_fabric_label, /* 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(fabric_label), - }), - be_str_weak(get_fabric_label), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tojson -********************************************************************/ -be_local_closure(Matter_Fabric_tojson, /* name */ - be_nested_proto( - 18, /* nstack */ - 1, /* argc */ + 18, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -979,6 +755,45 @@ be_local_closure(Matter_Fabric_tojson, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: assign_fabric_index +********************************************************************/ +be_local_closure(Matter_Fabric_assign_fabric_index, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(get_fabric_index), + /* K1 */ be_nested_str_weak(set_fabric_index), + /* K2 */ be_nested_str_weak(_store), + /* K3 */ be_nested_str_weak(next_fabric_idx), + }), + be_str_weak(assign_fabric_index), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x1C040202, // 0003 EQ R1 R1 R2 + 0x78060004, // 0004 JMPF R1 #000A + 0x8C040101, // 0005 GETMET R1 R0 K1 + 0x880C0102, // 0006 GETMBR R3 R0 K2 + 0x8C0C0703, // 0007 GETMET R3 R3 K3 + 0x7C0C0200, // 0008 CALL R3 1 + 0x7C040400, // 0009 CALL R1 2 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: get_admin_subject ********************************************************************/ @@ -1007,56 +822,371 @@ be_local_closure(Matter_Fabric_get_admin_subject, /* name */ /******************************************************************** -** Solidified function: add_session +** Solidified function: get_fabric_compressed ********************************************************************/ -be_local_closure(Matter_Fabric_add_session, /* name */ +be_local_closure(Matter_Fabric_get_fabric_compressed, /* name */ be_nested_proto( - 8, /* nstack */ - 2, /* argc */ + 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[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(_sessions), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(_MAX_CASE), - /* K3 */ be_nested_str_weak(remove), - /* K4 */ be_nested_str_weak(get_oldest_session), - /* K5 */ be_nested_str_weak(push), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(fabric_compressed), }), - be_str_weak(add_session), + be_str_weak(get_fabric_compressed), &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x1C080403, // 0005 EQ R2 R2 R3 - 0x780A0012, // 0006 JMPF R2 #001A - 0x6008000C, // 0007 GETGBL R2 G12 - 0x880C0100, // 0008 GETMBR R3 R0 K0 - 0x7C080200, // 0009 CALL R2 1 - 0x880C0102, // 000A GETMBR R3 R0 K2 - 0x28080403, // 000B GE R2 R2 R3 - 0x780A0008, // 000C JMPF R2 #0016 - 0x88080100, // 000D GETMBR R2 R0 K0 - 0x8C080503, // 000E GETMET R2 R2 K3 - 0x88100100, // 000F GETMBR R4 R0 K0 - 0x8C100901, // 0010 GETMET R4 R4 K1 - 0x8C180104, // 0011 GETMET R6 R0 K4 - 0x7C180200, // 0012 CALL R6 1 - 0x7C100400, // 0013 CALL R4 2 - 0x7C080400, // 0014 CALL R2 2 - 0x7001FFF0, // 0015 JMP #0007 - 0x88080100, // 0016 GETMBR R2 R0 K0 - 0x8C080505, // 0017 GETMET R2 R2 K5 - 0x5C100200, // 0018 MOVE R4 R1 - 0x7C080400, // 0019 CALL R2 2 - 0x80000000, // 001A RET 0 + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: fabric_candidate +********************************************************************/ +be_local_closure(Matter_Fabric_fabric_candidate, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(set_expire_in_seconds), + /* K1 */ be_nested_str_weak(assign_fabric_index), + /* K2 */ be_nested_str_weak(_store), + /* K3 */ be_nested_str_weak(add_fabric), + }), + be_str_weak(fabric_candidate), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E0077, // 0001 LDINT R3 120 + 0x7C040400, // 0002 CALL R1 2 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x88040102, // 0005 GETMBR R1 R0 K2 + 0x8C040303, // 0006 GETMET R1 R1 K3 + 0x5C0C0000, // 0007 MOVE R3 R0 + 0x7C040400, // 0008 CALL R1 2 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_fabric_label +********************************************************************/ +be_local_closure(Matter_Fabric_get_fabric_label, /* 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(fabric_label), + }), + be_str_weak(get_fabric_label), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_noc_icac +********************************************************************/ +be_local_closure(Matter_Fabric_set_noc_icac, /* name */ + be_nested_proto( + 3, /* nstack */ + 3, /* 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(noc), + /* K1 */ be_nested_str_weak(icac), + }), + be_str_weak(set_noc_icac), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_newest_session +********************************************************************/ +be_local_closure(Matter_Fabric_get_newest_session, /* name */ + be_nested_proto( + 4, /* 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_old_recent_session), + }), + be_str_weak(get_newest_session), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x500C0000, // 0001 LDBOOL R3 0 0 + 0x7C040400, // 0002 CALL R1 2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: before_remove +********************************************************************/ +be_local_closure(Matter_Fabric_before_remove, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(format), + /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2DFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20_X28removed_X29), + /* K5 */ be_nested_str_weak(get_fabric_id), + /* K6 */ be_nested_str_weak(copy), + /* K7 */ be_nested_str_weak(reverse), + /* K8 */ be_nested_str_weak(tohex), + /* K9 */ be_const_int(2), + }), + be_str_weak(before_remove), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xB80A0200, // 0001 GETNGBL R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x8C100303, // 0003 GETMET R4 R1 K3 + 0x58180004, // 0004 LDCONST R6 K4 + 0x8C1C0105, // 0005 GETMET R7 R0 K5 + 0x7C1C0200, // 0006 CALL R7 1 + 0x8C1C0F06, // 0007 GETMET R7 R7 K6 + 0x7C1C0200, // 0008 CALL R7 1 + 0x8C1C0F07, // 0009 GETMET R7 R7 K7 + 0x7C1C0200, // 000A CALL R7 1 + 0x8C1C0F08, // 000B GETMET R7 R7 K8 + 0x7C1C0200, // 000C CALL R7 1 + 0x7C100600, // 000D CALL R4 3 + 0x58140009, // 000E LDCONST R5 K9 + 0x7C080600, // 000F CALL R2 3 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_fabric_device +********************************************************************/ +be_local_closure(Matter_Fabric_set_fabric_device, /* name */ + be_nested_proto( + 7, /* nstack */ + 5, /* 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(fabric_id), + /* K1 */ be_nested_str_weak(device_id), + /* K2 */ be_nested_str_weak(fabric_compressed), + /* K3 */ be_nested_str_weak(fabric_parent), + /* K4 */ be_nested_str_weak(get_fabric_index), + }), + be_str_weak(set_fabric_device), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x90020403, // 0002 SETMBR R0 K2 R3 + 0x4C140000, // 0003 LDNIL R5 + 0x20140805, // 0004 NE R5 R4 R5 + 0x78160002, // 0005 JMPF R5 #0009 + 0x8C140904, // 0006 GETMET R5 R4 K4 + 0x7C140200, // 0007 CALL R5 1 + 0x70020000, // 0008 JMP #000A + 0x4C140000, // 0009 LDNIL R5 + 0x90020605, // 000A SETMBR R0 K3 R5 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_ipk_epoch_key +********************************************************************/ +be_local_closure(Matter_Fabric_set_ipk_epoch_key, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* 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(ipk_epoch_key), + }), + be_str_weak(set_ipk_epoch_key), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_ipk_group_key +********************************************************************/ +be_local_closure(Matter_Fabric_get_ipk_group_key, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(ipk_epoch_key), + /* K1 */ be_nested_str_weak(fabric_compressed), + /* K2 */ be_nested_str_weak(crypto), + /* K3 */ be_nested_str_weak(HKDF_SHA256), + /* K4 */ be_nested_str_weak(fromstring), + /* K5 */ be_nested_str_weak(_GROUP_KEY), + /* K6 */ be_nested_str_weak(derive), + }), + be_str_weak(get_ipk_group_key), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x74060003, // 0003 JMPT R1 #0008 + 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x4C080000, // 0005 LDNIL R2 + 0x1C040202, // 0006 EQ R1 R1 R2 + 0x78060001, // 0007 JMPF R1 #000A + 0x4C040000, // 0008 LDNIL R1 + 0x80040200, // 0009 RET 1 R1 + 0xA4060400, // 000A IMPORT R1 K2 + 0x8C080303, // 000B GETMET R2 R1 K3 + 0x7C080200, // 000C CALL R2 1 + 0x600C0015, // 000D GETGBL R3 G21 + 0x7C0C0000, // 000E CALL R3 0 + 0x8C0C0704, // 000F GETMET R3 R3 K4 + 0x88140105, // 0010 GETMBR R5 R0 K5 + 0x7C0C0400, // 0011 CALL R3 2 + 0x8C100506, // 0012 GETMET R4 R2 K6 + 0x88180100, // 0013 GETMBR R6 R0 K0 + 0x881C0101, // 0014 GETMBR R7 R0 K1 + 0x5C200600, // 0015 MOVE R8 R3 + 0x5426000F, // 0016 LDINT R9 16 + 0x7C100A00, // 0017 CALL R4 5 + 0x80040800, // 0018 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: hydrate_post +********************************************************************/ +be_local_closure(Matter_Fabric_hydrate_post, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* 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(_counter_group_data_snd_impl), + /* K1 */ be_nested_str_weak(reset), + /* K2 */ be_nested_str_weak(counter_group_data_snd), + /* K3 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), + /* K4 */ be_nested_str_weak(counter_group_ctrl_snd), + /* K5 */ be_nested_str_weak(val), + }), + be_str_weak(hydrate_post), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x7C040400, // 0003 CALL R1 2 + 0x88040103, // 0004 GETMBR R1 R0 K3 + 0x8C040301, // 0005 GETMET R1 R1 K1 + 0x880C0104, // 0006 GETMBR R3 R0 K4 + 0x7C040400, // 0007 CALL R1 2 + 0x88040100, // 0008 GETMBR R1 R0 K0 + 0x8C040305, // 0009 GETMET R1 R1 K5 + 0x7C040200, // 000A CALL R1 1 + 0x90020401, // 000B SETMBR R0 K2 R1 + 0x88040103, // 000C GETMBR R1 R0 K3 + 0x8C040305, // 000D GETMET R1 R1 K5 + 0x7C040200, // 000E CALL R1 1 + 0x90020801, // 000F SETMBR R0 K4 R1 + 0x80000000, // 0010 RET 0 }) ) ); @@ -1064,28 +1194,51 @@ be_local_closure(Matter_Fabric_add_session, /* name */ /******************************************************************** -** Solidified function: set_noc_icac +** Solidified function: get_admin_vendor_name ********************************************************************/ -be_local_closure(Matter_Fabric_set_noc_icac, /* name */ +be_local_closure(Matter_Fabric_get_admin_vendor_name, /* name */ be_nested_proto( - 3, /* nstack */ - 3, /* argc */ + 8, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(noc), - /* K1 */ be_nested_str_weak(icac), + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(admin_vendor), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(get_vendor_name), + /* K4 */ be_nested_str_weak(string), + /* K5 */ be_nested_str_weak(format), + /* K6 */ be_nested_str_weak(0x_X2504X), }), - be_str_weak(set_noc_icac), + be_str_weak(get_admin_vendor_name), &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x80000000, // 0002 RET 0 + ( &(const binstruction[21]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C080202, // 0002 EQ R2 R1 R2 + 0x780A0000, // 0003 JMPF R2 #0005 + 0x80060200, // 0004 RET 1 K1 + 0xB80A0400, // 0005 GETNGBL R2 K2 + 0x8C080503, // 0006 GETMET R2 R2 K3 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x4C0C0000, // 0009 LDNIL R3 + 0x200C0403, // 000A NE R3 R2 R3 + 0x780E0001, // 000B JMPF R3 #000E + 0x80040400, // 000C RET 1 R2 + 0x70020005, // 000D JMP #0014 + 0xA40E0800, // 000E IMPORT R3 K4 + 0x8C100705, // 000F GETMET R4 R3 K5 + 0x58180006, // 0010 LDCONST R6 K6 + 0x5C1C0200, // 0011 MOVE R7 R1 + 0x7C100600, // 0012 CALL R4 3 + 0x80040800, // 0013 RET 1 R4 + 0x80000000, // 0014 RET 0 }) ) ); @@ -1093,12 +1246,12 @@ be_local_closure(Matter_Fabric_set_noc_icac, /* name */ /******************************************************************** -** Solidified function: get_newest_session +** Solidified function: set_pk ********************************************************************/ -be_local_closure(Matter_Fabric_get_newest_session, /* name */ +be_local_closure(Matter_Fabric_set_pk, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ + 2, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1106,15 +1259,13 @@ be_local_closure(Matter_Fabric_get_newest_session, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(get_old_recent_session), + /* K0 */ be_nested_str_weak(no_private_key), }), - be_str_weak(get_newest_session), + be_str_weak(set_pk), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x500C0000, // 0001 LDBOOL R3 0 0 - 0x7C040400, // 0002 CALL R1 2 - 0x80040200, // 0003 RET 1 R1 + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 }) ) ); @@ -1122,9 +1273,9 @@ be_local_closure(Matter_Fabric_get_newest_session, /* name */ /******************************************************************** -** Solidified function: get_fabric_index +** Solidified function: get_icac ********************************************************************/ -be_local_closure(Matter_Fabric_get_fabric_index, /* name */ +be_local_closure(Matter_Fabric_get_icac, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -1135,9 +1286,9 @@ be_local_closure(Matter_Fabric_get_fabric_index, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(fabric_index), + /* K0 */ be_nested_str_weak(icac), }), - be_str_weak(get_fabric_index), + be_str_weak(get_icac), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -1149,40 +1300,28 @@ be_local_closure(Matter_Fabric_get_fabric_index, /* name */ /******************************************************************** -** Solidified function: set_fabric_device +** Solidified function: set_admin_subject_vendor ********************************************************************/ -be_local_closure(Matter_Fabric_set_fabric_device, /* name */ +be_local_closure(Matter_Fabric_set_admin_subject_vendor, /* name */ be_nested_proto( - 7, /* nstack */ - 5, /* argc */ + 3, /* nstack */ + 3, /* 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(fabric_id), - /* K1 */ be_nested_str_weak(device_id), - /* K2 */ be_nested_str_weak(fabric_compressed), - /* K3 */ be_nested_str_weak(fabric_parent), - /* K4 */ be_nested_str_weak(get_fabric_index), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(admin_subject), + /* K1 */ be_nested_str_weak(admin_vendor), }), - be_str_weak(set_fabric_device), + be_str_weak(set_admin_subject_vendor), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ + ( &(const binstruction[ 3]) { /* code */ 0x90020001, // 0000 SETMBR R0 K0 R1 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x90020403, // 0002 SETMBR R0 K2 R3 - 0x4C140000, // 0003 LDNIL R5 - 0x20140805, // 0004 NE R5 R4 R5 - 0x78160002, // 0005 JMPF R5 #0009 - 0x8C140904, // 0006 GETMET R5 R4 K4 - 0x7C140200, // 0007 CALL R5 1 - 0x70020000, // 0008 JMP #000A - 0x4C140000, // 0009 LDNIL R5 - 0x90020605, // 000A SETMBR R0 K3 R5 - 0x80000000, // 000B RET 0 + 0x80000000, // 0002 RET 0 }) ) ); @@ -1190,9 +1329,9 @@ be_local_closure(Matter_Fabric_set_fabric_device, /* name */ /******************************************************************** -** Solidified function: get_ipk_group_key +** Solidified function: log_new_fabric ********************************************************************/ -be_local_closure(Matter_Fabric_get_ipk_group_key, /* name */ +be_local_closure(Matter_Fabric_log_new_fabric, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ @@ -1202,43 +1341,41 @@ be_local_closure(Matter_Fabric_get_ipk_group_key, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(ipk_epoch_key), - /* K1 */ be_nested_str_weak(fabric_compressed), - /* K2 */ be_nested_str_weak(crypto), - /* K3 */ be_nested_str_weak(HKDF_SHA256), - /* K4 */ be_nested_str_weak(fromstring), - /* K5 */ be_nested_str_weak(_GROUP_KEY), - /* K6 */ be_nested_str_weak(derive), + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(format), + /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2BFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20vendorid_X3D_X25s), + /* K5 */ be_nested_str_weak(get_fabric_id), + /* K6 */ be_nested_str_weak(copy), + /* K7 */ be_nested_str_weak(reverse), + /* K8 */ be_nested_str_weak(tohex), + /* K9 */ be_nested_str_weak(get_admin_vendor_name), + /* K10 */ be_const_int(2), }), - be_str_weak(get_ipk_group_key), + be_str_weak(log_new_fabric), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x74060003, // 0003 JMPT R1 #0008 - 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x4C080000, // 0005 LDNIL R2 - 0x1C040202, // 0006 EQ R1 R1 R2 - 0x78060001, // 0007 JMPF R1 #000A - 0x4C040000, // 0008 LDNIL R1 - 0x80040200, // 0009 RET 1 R1 - 0xA4060400, // 000A IMPORT R1 K2 - 0x8C080303, // 000B GETMET R2 R1 K3 - 0x7C080200, // 000C CALL R2 1 - 0x600C0015, // 000D GETGBL R3 G21 - 0x7C0C0000, // 000E CALL R3 0 - 0x8C0C0704, // 000F GETMET R3 R3 K4 - 0x88140105, // 0010 GETMBR R5 R0 K5 - 0x7C0C0400, // 0011 CALL R3 2 - 0x8C100506, // 0012 GETMET R4 R2 K6 - 0x88180100, // 0013 GETMBR R6 R0 K0 - 0x881C0101, // 0014 GETMBR R7 R0 K1 - 0x5C200600, // 0015 MOVE R8 R3 - 0x5426000F, // 0016 LDINT R9 16 - 0x7C100A00, // 0017 CALL R4 5 - 0x80040800, // 0018 RET 1 R4 + ( &(const binstruction[19]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xB80A0200, // 0001 GETNGBL R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x8C100303, // 0003 GETMET R4 R1 K3 + 0x58180004, // 0004 LDCONST R6 K4 + 0x8C1C0105, // 0005 GETMET R7 R0 K5 + 0x7C1C0200, // 0006 CALL R7 1 + 0x8C1C0F06, // 0007 GETMET R7 R7 K6 + 0x7C1C0200, // 0008 CALL R7 1 + 0x8C1C0F07, // 0009 GETMET R7 R7 K7 + 0x7C1C0200, // 000A CALL R7 1 + 0x8C1C0F08, // 000B GETMET R7 R7 K8 + 0x7C1C0200, // 000C CALL R7 1 + 0x8C200109, // 000D GETMET R8 R0 K9 + 0x7C200200, // 000E CALL R8 1 + 0x7C100800, // 000F CALL R4 4 + 0x5814000A, // 0010 LDCONST R5 K10 + 0x7C080600, // 0011 CALL R2 3 + 0x80000000, // 0012 RET 0 }) ) ); @@ -1246,11 +1383,11 @@ be_local_closure(Matter_Fabric_get_ipk_group_key, /* name */ /******************************************************************** -** Solidified function: fabric_candidate +** Solidified function: get_pk ********************************************************************/ -be_local_closure(Matter_Fabric_fabric_candidate, /* name */ +be_local_closure(Matter_Fabric_get_pk, /* name */ be_nested_proto( - 4, /* nstack */ + 2, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1258,25 +1395,14 @@ be_local_closure(Matter_Fabric_fabric_candidate, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(set_expire_in_seconds), - /* K1 */ be_nested_str_weak(assign_fabric_index), - /* K2 */ be_nested_str_weak(_store), - /* K3 */ be_nested_str_weak(add_fabric), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(no_private_key), }), - be_str_weak(fabric_candidate), + be_str_weak(get_pk), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0077, // 0001 LDINT R3 120 - 0x7C040400, // 0002 CALL R1 2 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x88040102, // 0005 GETMBR R1 R0 K2 - 0x8C040303, // 0006 GETMET R1 R1 K3 - 0x5C0C0000, // 0007 MOVE R3 R0 - 0x7C040400, // 0008 CALL R1 2 - 0x80000000, // 0009 RET 0 + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -1284,66 +1410,26 @@ be_local_closure(Matter_Fabric_fabric_candidate, /* name */ /******************************************************************** -** Solidified function: counter_group_data_snd_next +** Solidified function: get_admin_vendor ********************************************************************/ -be_local_closure(Matter_Fabric_counter_group_data_snd_next, /* name */ +be_local_closure(Matter_Fabric_get_admin_vendor, /* name */ be_nested_proto( - 9, /* nstack */ + 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[15]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(_counter_group_data_snd_impl), - /* K2 */ be_nested_str_weak(next), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(log), - /* K5 */ be_nested_str_weak(format), - /* K6 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_data_snd_X3D_X25i), - /* K7 */ be_const_int(3), - /* K8 */ be_nested_str_weak(matter), - /* K9 */ be_nested_str_weak(Counter), - /* K10 */ be_nested_str_weak(is_greater), - /* K11 */ be_nested_str_weak(counter_group_data_snd), - /* K12 */ be_nested_str_weak(_GROUP_SND_INCR), - /* K13 */ be_nested_str_weak(does_persist), - /* K14 */ be_nested_str_weak(save), - }), - be_str_weak(counter_group_data_snd_next), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x7C080200, // 0003 CALL R2 1 - 0xB80E0600, // 0004 GETNGBL R3 K3 - 0x8C0C0704, // 0005 GETMET R3 R3 K4 - 0x8C140305, // 0006 GETMET R5 R1 K5 - 0x581C0006, // 0007 LDCONST R7 K6 - 0x5C200400, // 0008 MOVE R8 R2 - 0x7C140600, // 0009 CALL R5 3 - 0x58180007, // 000A LDCONST R6 K7 - 0x7C0C0600, // 000B CALL R3 3 - 0xB80E1000, // 000C GETNGBL R3 K8 - 0x880C0709, // 000D GETMBR R3 R3 K9 - 0x8C0C070A, // 000E GETMET R3 R3 K10 - 0x5C140400, // 000F MOVE R5 R2 - 0x8818010B, // 0010 GETMBR R6 R0 K11 - 0x7C0C0600, // 0011 CALL R3 3 - 0x780E0007, // 0012 JMPF R3 #001B - 0x880C010C, // 0013 GETMBR R3 R0 K12 - 0x000C0403, // 0014 ADD R3 R2 R3 - 0x90021603, // 0015 SETMBR R0 K11 R3 - 0x8C0C010D, // 0016 GETMET R3 R0 K13 - 0x7C0C0200, // 0017 CALL R3 1 - 0x780E0001, // 0018 JMPF R3 #001B - 0x8C0C010E, // 0019 GETMET R3 R0 K14 - 0x7C0C0200, // 001A CALL R3 1 - 0x80040400, // 001B RET 1 R2 + 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(admin_vendor), + }), + be_str_weak(get_admin_vendor), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -1351,9 +1437,9 @@ be_local_closure(Matter_Fabric_counter_group_data_snd_next, /* name */ /******************************************************************** -** Solidified function: get_noc +** Solidified function: get_fabric_id ********************************************************************/ -be_local_closure(Matter_Fabric_get_noc, /* name */ +be_local_closure(Matter_Fabric_get_fabric_id, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -1364,9 +1450,9 @@ be_local_closure(Matter_Fabric_get_noc, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(noc), + /* K0 */ be_nested_str_weak(fabric_id), }), - be_str_weak(get_noc), + be_str_weak(get_fabric_id), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -1378,9 +1464,36 @@ be_local_closure(Matter_Fabric_get_noc, /* name */ /******************************************************************** -** Solidified function: get_pk +** Solidified function: set_ca ********************************************************************/ -be_local_closure(Matter_Fabric_get_pk, /* name */ +be_local_closure(Matter_Fabric_set_ca, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* 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(root_ca_certificate), + }), + be_str_weak(set_ca), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_noc +********************************************************************/ +be_local_closure(Matter_Fabric_get_noc, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -1391,9 +1504,9 @@ be_local_closure(Matter_Fabric_get_pk, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(no_private_key), + /* K0 */ be_nested_str_weak(noc), }), - be_str_weak(get_pk), + be_str_weak(get_noc), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -1405,9 +1518,9 @@ be_local_closure(Matter_Fabric_get_pk, /* name */ /******************************************************************** -** Solidified function: get_fabric_id +** Solidified function: get_fabric_index ********************************************************************/ -be_local_closure(Matter_Fabric_get_fabric_id, /* name */ +be_local_closure(Matter_Fabric_get_fabric_index, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -1418,9 +1531,9 @@ be_local_closure(Matter_Fabric_get_fabric_id, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(fabric_id), + /* K0 */ be_nested_str_weak(fabric_index), }), - be_str_weak(get_fabric_id), + be_str_weak(get_fabric_index), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -1432,9 +1545,9 @@ be_local_closure(Matter_Fabric_get_fabric_id, /* name */ /******************************************************************** -** Solidified function: get_icac +** Solidified function: get_ca ********************************************************************/ -be_local_closure(Matter_Fabric_get_icac, /* name */ +be_local_closure(Matter_Fabric_get_ca, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -1445,9 +1558,9 @@ be_local_closure(Matter_Fabric_get_icac, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(icac), + /* K0 */ be_nested_str_weak(root_ca_certificate), }), - be_str_weak(get_icac), + be_str_weak(get_ca), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -1459,117 +1572,57 @@ be_local_closure(Matter_Fabric_get_icac, /* name */ /******************************************************************** -** Solidified function: fromjson +** Solidified function: get_old_recent_session ********************************************************************/ -be_local_closure(Matter_Fabric_fromjson, /* name */ +be_local_closure(Matter_Fabric_get_old_recent_session, /* name */ be_nested_proto( - 16, /* nstack */ + 7, /* nstack */ 2, /* argc */ - 4, /* varg */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Fabric), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(introspect), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Fabric), - /* K5 */ be_nested_str_weak(keys), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(_), - /* K8 */ be_nested_str_weak(find), - /* K9 */ be_nested_str_weak(0x), - /* K10 */ be_nested_str_weak(set), - /* K11 */ be_nested_str_weak(fromhex), - /* K12 */ be_const_int(2), - /* K13 */ be_const_int(2147483647), - /* K14 */ be_nested_str_weak(_X24_X24), - /* K15 */ be_nested_str_weak(fromb64), - /* K16 */ be_nested_str_weak(stop_iteration), - /* K17 */ be_nested_str_weak(hydrate_post), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(_sessions), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(last_used), + /* K3 */ be_const_int(1), }), - be_str_weak(fromjson), + be_str_weak(get_old_recent_session), &be_const_str_solidified, - ( &(const binstruction[76]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0xA4120400, // 0002 IMPORT R4 K2 - 0xB8160600, // 0003 GETNGBL R5 K3 - 0x8C140B04, // 0004 GETMET R5 R5 K4 - 0x5C1C0000, // 0005 MOVE R7 R0 - 0x7C140400, // 0006 CALL R5 2 - 0x60180010, // 0007 GETGBL R6 G16 - 0x8C1C0305, // 0008 GETMET R7 R1 K5 - 0x7C1C0200, // 0009 CALL R7 1 - 0x7C180200, // 000A CALL R6 1 - 0xA8020039, // 000B EXBLK 0 #0046 - 0x5C1C0C00, // 000C MOVE R7 R6 - 0x7C1C0000, // 000D CALL R7 0 - 0x94200F06, // 000E GETIDX R8 R7 K6 - 0x1C201107, // 000F EQ R8 R8 K7 - 0x78220000, // 0010 JMPF R8 #0012 - 0x7001FFF9, // 0011 JMP #000C - 0x94200207, // 0012 GETIDX R8 R1 R7 - 0x60240004, // 0013 GETGBL R9 G4 - 0x5C281000, // 0014 MOVE R10 R8 - 0x7C240200, // 0015 CALL R9 1 - 0x1C241301, // 0016 EQ R9 R9 K1 - 0x78260027, // 0017 JMPF R9 #0040 - 0x8C240708, // 0018 GETMET R9 R3 K8 - 0x5C2C1000, // 0019 MOVE R11 R8 - 0x58300009, // 001A LDCONST R12 K9 - 0x7C240600, // 001B CALL R9 3 - 0x1C241306, // 001C EQ R9 R9 K6 - 0x7826000A, // 001D JMPF R9 #0029 - 0x8C24090A, // 001E GETMET R9 R4 K10 - 0x5C2C0A00, // 001F MOVE R11 R5 - 0x5C300E00, // 0020 MOVE R12 R7 - 0x60340015, // 0021 GETGBL R13 G21 - 0x7C340000, // 0022 CALL R13 0 - 0x8C341B0B, // 0023 GETMET R13 R13 K11 - 0x403E190D, // 0024 CONNECT R15 K12 K13 - 0x943C100F, // 0025 GETIDX R15 R8 R15 - 0x7C340400, // 0026 CALL R13 2 - 0x7C240800, // 0027 CALL R9 4 - 0x70020015, // 0028 JMP #003F - 0x8C240708, // 0029 GETMET R9 R3 K8 - 0x5C2C1000, // 002A MOVE R11 R8 - 0x5830000E, // 002B LDCONST R12 K14 - 0x7C240600, // 002C CALL R9 3 - 0x1C241306, // 002D EQ R9 R9 K6 - 0x7826000A, // 002E JMPF R9 #003A - 0x8C24090A, // 002F GETMET R9 R4 K10 - 0x5C2C0A00, // 0030 MOVE R11 R5 - 0x5C300E00, // 0031 MOVE R12 R7 - 0x60340015, // 0032 GETGBL R13 G21 - 0x7C340000, // 0033 CALL R13 0 - 0x8C341B0F, // 0034 GETMET R13 R13 K15 - 0x403E190D, // 0035 CONNECT R15 K12 K13 - 0x943C100F, // 0036 GETIDX R15 R8 R15 - 0x7C340400, // 0037 CALL R13 2 - 0x7C240800, // 0038 CALL R9 4 - 0x70020004, // 0039 JMP #003F - 0x8C24090A, // 003A GETMET R9 R4 K10 - 0x5C2C0A00, // 003B MOVE R11 R5 - 0x5C300E00, // 003C MOVE R12 R7 - 0x5C341000, // 003D MOVE R13 R8 - 0x7C240800, // 003E CALL R9 4 - 0x70020004, // 003F JMP #0045 - 0x8C24090A, // 0040 GETMET R9 R4 K10 - 0x5C2C0A00, // 0041 MOVE R11 R5 - 0x5C300E00, // 0042 MOVE R12 R7 - 0x5C341000, // 0043 MOVE R13 R8 - 0x7C240800, // 0044 CALL R9 4 - 0x7001FFC5, // 0045 JMP #000C - 0x58180010, // 0046 LDCONST R6 K16 - 0xAC180200, // 0047 CATCH R6 1 0 - 0xB0080000, // 0048 RAISE 2 R0 R0 - 0x8C180B11, // 0049 GETMET R6 R5 K17 - 0x7C180200, // 004A CALL R6 1 - 0x80040A00, // 004B RET 1 R5 + ( &(const binstruction[30]) { /* code */ + 0x6008000C, // 0000 GETGBL R2 G12 + 0x880C0100, // 0001 GETMBR R3 R0 K0 + 0x7C080200, // 0002 CALL R2 1 + 0x1C080501, // 0003 EQ R2 R2 K1 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x4C080000, // 0005 LDNIL R2 + 0x80040400, // 0006 RET 1 R2 + 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x94080501, // 0008 GETIDX R2 R2 K1 + 0x880C0502, // 0009 GETMBR R3 R2 K2 + 0x58100003, // 000A LDCONST R4 K3 + 0x6014000C, // 000B GETGBL R5 G12 + 0x88180100, // 000C GETMBR R6 R0 K0 + 0x7C140200, // 000D CALL R5 1 + 0x14140805, // 000E LT R5 R4 R5 + 0x7816000C, // 000F JMPF R5 #001D + 0x88140100, // 0010 GETMBR R5 R0 K0 + 0x94140A04, // 0011 GETIDX R5 R5 R4 + 0x88140B02, // 0012 GETMBR R5 R5 K2 + 0x78060001, // 0013 JMPF R1 #0016 + 0x14180A03, // 0014 LT R6 R5 R3 + 0x70020000, // 0015 JMP #0017 + 0x24180A03, // 0016 GT R6 R5 R3 + 0x781A0002, // 0017 JMPF R6 #001B + 0x88180100, // 0018 GETMBR R6 R0 K0 + 0x94080C04, // 0019 GETIDX R2 R6 R4 + 0x5C0C0A00, // 001A MOVE R3 R5 + 0x00100903, // 001B ADD R4 R4 K3 + 0x7001FFED, // 001C JMP #000B + 0x80040400, // 001D RET 1 R2 }) ) ); @@ -1583,67 +1636,68 @@ extern const bclass be_class_Matter_Expirable; be_local_class(Matter_Fabric, 20, &be_class_Matter_Expirable, - be_nested_map(59, + be_nested_map(60, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(icac, -1), be_const_var(8) }, - { be_const_key_weak(hydrate_post, -1), be_const_closure(Matter_Fabric_hydrate_post_closure) }, - { be_const_key_weak(set_ca, 32), be_const_closure(Matter_Fabric_set_ca_closure) }, - { be_const_key_weak(fabric_completed, 4), be_const_closure(Matter_Fabric_fabric_completed_closure) }, - { be_const_key_weak(_counter_group_data_snd_impl, 26), be_const_var(16) }, - { be_const_key_weak(get_oldest_session, -1), be_const_closure(Matter_Fabric_get_oldest_session_closure) }, - { be_const_key_weak(get_ca_pub, -1), be_const_closure(Matter_Fabric_get_ca_pub_closure) }, - { be_const_key_weak(before_remove, -1), be_const_closure(Matter_Fabric_before_remove_closure) }, - { be_const_key_weak(get_ca, -1), be_const_closure(Matter_Fabric_get_ca_closure) }, { be_const_key_weak(fabric_index, -1), be_const_var(2) }, - { be_const_key_weak(fabric_compressed, -1), be_const_var(11) }, - { be_const_key_weak(log_new_fabric, -1), be_const_closure(Matter_Fabric_log_new_fabric_closure) }, + { be_const_key_weak(fromjson, -1), be_const_static_closure(Matter_Fabric_fromjson_closure) }, + { be_const_key_weak(root_ca_certificate, -1), be_const_var(6) }, + { be_const_key_weak(ipk_epoch_key, -1), be_const_var(9) }, + { be_const_key_weak(get_ca, 34), be_const_closure(Matter_Fabric_get_ca_closure) }, { be_const_key_weak(noc, -1), be_const_var(7) }, + { be_const_key_weak(get_device_id, -1), be_const_closure(Matter_Fabric_get_device_id_closure) }, + { be_const_key_weak(add_session, -1), be_const_closure(Matter_Fabric_add_session_closure) }, + { be_const_key_weak(get_oldest_session, 50), be_const_closure(Matter_Fabric_get_oldest_session_closure) }, + { be_const_key_weak(fabric_parent, -1), be_const_var(3) }, + { be_const_key_weak(no_private_key, -1), be_const_var(5) }, + { be_const_key_weak(admin_vendor, 1), be_const_var(19) }, + { be_const_key_weak(fabric_id, -1), be_const_var(10) }, + { be_const_key_weak(device_id, -1), be_const_var(12) }, { be_const_key_weak(set_fabric_index, -1), be_const_closure(Matter_Fabric_set_fabric_index_closure) }, - { be_const_key_weak(_MAX_CASE, -1), be_const_int(5) }, - { be_const_key_weak(_store, -1), be_const_var(0) }, - { be_const_key_weak(get_ipk_epoch_key, -1), be_const_closure(Matter_Fabric_get_ipk_epoch_key_closure) }, - { be_const_key_weak(root_ca_certificate, -1), be_const_var(6) }, - { be_const_key_weak(set_pk, -1), be_const_closure(Matter_Fabric_set_pk_closure) }, + { be_const_key_weak(init, -1), be_const_closure(Matter_Fabric_init_closure) }, + { be_const_key_weak(counter_group_ctrl_snd, -1), be_const_var(15) }, + { be_const_key_weak(fabric_label, -1), be_const_var(13) }, + { be_const_key_weak(fabric_completed, -1), be_const_closure(Matter_Fabric_fabric_completed_closure) }, + { be_const_key_weak(created, -1), be_const_var(1) }, + { be_const_key_weak(fabric_compressed, -1), be_const_var(11) }, + { be_const_key_weak(icac, -1), be_const_var(8) }, + { be_const_key_weak(_counter_group_data_snd_impl, 2), be_const_var(16) }, + { be_const_key_weak(_store, 57), be_const_var(0) }, + { be_const_key_weak(get_ca_pub, 32), be_const_closure(Matter_Fabric_get_ca_pub_closure) }, + { be_const_key_weak(_GROUP_KEY, 16), be_nested_str_weak(GroupKey_X20v1_X2E0) }, { be_const_key_weak(tojson, -1), be_const_closure(Matter_Fabric_tojson_closure) }, - { be_const_key_weak(assign_fabric_index, 57), be_const_closure(Matter_Fabric_assign_fabric_index_closure) }, - { be_const_key_weak(set_noc_icac, -1), be_const_closure(Matter_Fabric_set_noc_icac_closure) }, - { be_const_key_weak(get_icac, -1), be_const_closure(Matter_Fabric_get_icac_closure) }, - { be_const_key_weak(counter_group_ctrl_snd_next, 22), be_const_closure(Matter_Fabric_counter_group_ctrl_snd_next_closure) }, - { be_const_key_weak(get_admin_vendor, -1), be_const_closure(Matter_Fabric_get_admin_vendor_closure) }, - { be_const_key_weak(counter_group_data_snd, -1), be_const_var(14) }, - { be_const_key_weak(get_newest_session, 0), be_const_closure(Matter_Fabric_get_newest_session_closure) }, - { be_const_key_weak(set_admin_subject_vendor, -1), be_const_closure(Matter_Fabric_set_admin_subject_vendor_closure) }, - { be_const_key_weak(device_id, -1), be_const_var(12) }, - { be_const_key_weak(get_fabric_compressed, 19), be_const_closure(Matter_Fabric_get_fabric_compressed_closure) }, - { be_const_key_weak(get_pk, 17), be_const_closure(Matter_Fabric_get_pk_closure) }, - { be_const_key_weak(init, 30), be_const_closure(Matter_Fabric_init_closure) }, - { be_const_key_weak(get_noc, -1), be_const_closure(Matter_Fabric_get_noc_closure) }, - { be_const_key_weak(set_ipk_epoch_key, 21), be_const_closure(Matter_Fabric_set_ipk_epoch_key_closure) }, - { be_const_key_weak(get_old_recent_session, 47), be_const_closure(Matter_Fabric_get_old_recent_session_closure) }, - { be_const_key_weak(fabric_parent, -1), be_const_var(3) }, - { be_const_key_weak(admin_vendor, -1), be_const_var(19) }, - { be_const_key_weak(counter_group_data_snd_next, 42), be_const_closure(Matter_Fabric_counter_group_data_snd_next_closure) }, - { be_const_key_weak(get_fabric_index, -1), be_const_closure(Matter_Fabric_get_fabric_index_closure) }, - { be_const_key_weak(set_fabric_device, -1), be_const_closure(Matter_Fabric_set_fabric_device_closure) }, - { be_const_key_weak(get_fabric_label, 46), be_const_closure(Matter_Fabric_get_fabric_label_closure) }, - { be_const_key_weak(get_device_id, 36), be_const_closure(Matter_Fabric_get_device_id_closure) }, - { be_const_key_weak(_sessions, -1), be_const_var(4) }, + { be_const_key_weak(assign_fabric_index, -1), be_const_closure(Matter_Fabric_assign_fabric_index_closure) }, + { be_const_key_weak(get_admin_subject, -1), be_const_closure(Matter_Fabric_get_admin_subject_closure) }, + { be_const_key_weak(_MAX_CASE, -1), be_const_int(5) }, { be_const_key_weak(fabric_candidate, -1), be_const_closure(Matter_Fabric_fabric_candidate_closure) }, - { be_const_key_weak(_GROUP_SND_INCR, 37), be_const_int(32) }, - { be_const_key_weak(_GROUP_KEY, -1), be_nested_str_weak(GroupKey_X20v1_X2E0) }, + { be_const_key_weak(_GROUP_SND_INCR, 36), be_const_int(32) }, + { be_const_key_weak(get_fabric_label, 55), be_const_closure(Matter_Fabric_get_fabric_label_closure) }, + { be_const_key_weak(set_noc_icac, -1), be_const_closure(Matter_Fabric_set_noc_icac_closure) }, + { be_const_key_weak(get_noc, 52), be_const_closure(Matter_Fabric_get_noc_closure) }, + { be_const_key_weak(before_remove, -1), be_const_closure(Matter_Fabric_before_remove_closure) }, + { be_const_key_weak(get_admin_vendor_name, -1), be_const_closure(Matter_Fabric_get_admin_vendor_name_closure) }, + { be_const_key_weak(set_ca, -1), be_const_closure(Matter_Fabric_set_ca_closure) }, { be_const_key_weak(get_ipk_group_key, -1), be_const_closure(Matter_Fabric_get_ipk_group_key_closure) }, - { be_const_key_weak(ipk_epoch_key, 51), be_const_var(9) }, - { be_const_key_weak(get_admin_subject, 28), be_const_closure(Matter_Fabric_get_admin_subject_closure) }, + { be_const_key_weak(hydrate_post, -1), be_const_closure(Matter_Fabric_hydrate_post_closure) }, + { be_const_key_weak(set_ipk_epoch_key, 31), be_const_closure(Matter_Fabric_set_ipk_epoch_key_closure) }, + { be_const_key_weak(set_pk, -1), be_const_closure(Matter_Fabric_set_pk_closure) }, + { be_const_key_weak(set_admin_subject_vendor, -1), be_const_closure(Matter_Fabric_set_admin_subject_vendor_closure) }, + { be_const_key_weak(get_fabric_compressed, 42), be_const_closure(Matter_Fabric_get_fabric_compressed_closure) }, + { be_const_key_weak(log_new_fabric, -1), be_const_closure(Matter_Fabric_log_new_fabric_closure) }, + { be_const_key_weak(get_pk, -1), be_const_closure(Matter_Fabric_get_pk_closure) }, + { be_const_key_weak(get_admin_vendor, -1), be_const_closure(Matter_Fabric_get_admin_vendor_closure) }, { be_const_key_weak(get_fabric_id, -1), be_const_closure(Matter_Fabric_get_fabric_id_closure) }, - { be_const_key_weak(no_private_key, 25), be_const_var(5) }, - { be_const_key_weak(counter_group_ctrl_snd, 5), be_const_var(15) }, - { be_const_key_weak(fabric_id, -1), be_const_var(10) }, + { be_const_key_weak(get_icac, 37), be_const_closure(Matter_Fabric_get_icac_closure) }, { be_const_key_weak(_counter_group_ctrl_snd_impl, -1), be_const_var(17) }, - { be_const_key_weak(fromjson, -1), be_const_static_closure(Matter_Fabric_fromjson_closure) }, - { be_const_key_weak(add_session, 14), be_const_closure(Matter_Fabric_add_session_closure) }, - { be_const_key_weak(fabric_label, -1), be_const_var(13) }, - { be_const_key_weak(created, -1), be_const_var(1) }, - { be_const_key_weak(admin_subject, -1), be_const_var(18) }, + { be_const_key_weak(set_fabric_device, -1), be_const_closure(Matter_Fabric_set_fabric_device_closure) }, + { be_const_key_weak(admin_subject, 5), be_const_var(18) }, + { be_const_key_weak(counter_group_data_snd, -1), be_const_var(14) }, + { be_const_key_weak(get_newest_session, 29), be_const_closure(Matter_Fabric_get_newest_session_closure) }, + { be_const_key_weak(get_fabric_index, -1), be_const_closure(Matter_Fabric_get_fabric_index_closure) }, + { be_const_key_weak(get_ipk_epoch_key, -1), be_const_closure(Matter_Fabric_get_ipk_epoch_key_closure) }, + { be_const_key_weak(counter_group_data_snd_next, 4), be_const_closure(Matter_Fabric_counter_group_data_snd_next_closure) }, + { be_const_key_weak(counter_group_ctrl_snd_next, -1), be_const_closure(Matter_Fabric_counter_group_ctrl_snd_next_closure) }, + { be_const_key_weak(get_old_recent_session, -1), be_const_closure(Matter_Fabric_get_old_recent_session_closure) }, + { be_const_key_weak(_sessions, 0), be_const_var(4) }, })), be_str_weak(Matter_Fabric) ); 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 8fc759a4556d..37d664f8c445 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -1505,9 +1505,9 @@ be_local_closure(Matter_UI_show_fabric_info, /* name */ /* K13 */ be_nested_str_weak(_X3CNo_X20label_X3E), /* K14 */ be_nested_str_weak(html_escape), /* K15 */ be_nested_str_weak(format), - /* K16 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3B_X23_X25i_X20_X25s_X3C_X2Fb_X3E_X20_X280x_X2504X_X29_X26nbsp_X3B_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K16 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3B_X23_X25i_X20_X25s_X3C_X2Fb_X3E_X20_X28_X25s_X29_X26nbsp_X3B_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E), /* K17 */ be_nested_str_weak(get_fabric_index), - /* K18 */ be_nested_str_weak(get_admin_vendor), + /* K18 */ be_nested_str_weak(get_admin_vendor_name), /* K19 */ be_nested_str_weak(get_fabric_id), /* K20 */ be_nested_str_weak(copy), /* K21 */ be_nested_str_weak(reverse), diff --git a/lib/libesp32/berry_matter/tools/vendor_to_c.be b/lib/libesp32/berry_matter/tools/vendor_to_c.be new file mode 100644 index 000000000000..bff47fb42e3f --- /dev/null +++ b/lib/libesp32/berry_matter/tools/vendor_to_c.be @@ -0,0 +1,91 @@ + +import json +import string + +var f = open("vendors.json") +var j = json.load(f.read()) +f.close() + +for elt: j["vendorInfo"] + + print(string.format(' { 0x%04X, "%s"},', elt['vendorID'], elt['vendorName'])) + +end + +#- + + { 0x100B, "Signify"}, + { 0x101D, "Assa Abloy"}, + { 0x1021, "Legrand Group"}, + { 0x1037, "NXP Semiconductors"}, + { 0x105E, "Schneider"}, + { 0x109B, "Leviton"}, + { 0x10D0, "Qorvo"}, + { 0x10EE, "UEI"}, + { 0x10F2, "ubisys"}, + { 0x111D, "Comcast Communications"}, + { 0x115A, "Nanoleaf"}, + { 0x115F, "Aqara"}, + { 0x1160, "Sengled"}, + { 0x1168, "Leedarson"}, + { 0x117E, "Feibit"}, + { 0x1188, "TP-Link"}, + { 0x118C, "Midea Group"}, + { 0x120B, "HEIMAN"}, + { 0x1217, "Amazon Alexa"}, + { 0x1219, "ORVIBO"}, + { 0x125D, "Tuya"}, + { 0x127F, "Nordic Semiconductor ASA"}, + { 0x1280, "Siterwell"}, + { 0x1286, "CoolKit"}, + { 0x128F, "EGLO"}, + { 0x130A, "Eve"}, + { 0x130D, "BouffaloLab"}, + { 0x1312, "Yeelight"}, + { 0x131B, "Espressif Systems"}, + { 0x131E, "CAME S.p.A."}, + { 0x131F, "Longan.link"}, + { 0x1321, "SONOFF"}, + { 0x1333, "Becker Antriebe"}, + { 0x1339, "GE Lighting, a Savant company"}, + { 0x133F, "ASR"}, + { 0x1342, "Beken Corporation"}, + { 0x1344, "Eltako"}, + { 0x1345, "Meross"}, + { 0x1346, "Rafael"}, + { 0x1349, "Apple Home"}, + { 0x134E, "tado"}, + { 0x134F, "mediola"}, + { 0x1351, "HooRii Technology"}, + { 0x135D, "Nuki"}, + { 0x1362, "deveritec GmbH"}, + { 0x1365, "Dooya"}, + { 0x136E, "Ambi Labs Limited"}, + { 0x1371, "Tridonic"}, + { 0x1372, "innovation matters"}, + { 0x137F, "NEO"}, + { 0x1381, "Amazon Prime Video"}, + { 0x1384, "Apple Keychain"}, + { 0x1386, "Skylux"}, + { 0x1387, "Qianyan"}, + { 0x138A, "Nature"}, + { 0x1391, "Kasa"}, + { 0x1392, "Tapo"}, + { 0x1397, "SwitchBot"}, + { 0x139C, "Zemismart Technology Limited"}, + { 0x1400, "Uascent"}, + { 0x1403, "Arlec Australia"}, + { 0x1404, "Phaten"}, + { 0x1407, "ThirdReality"}, + { 0x1410, "Quectel"}, + { 0x1413, "1Home"}, + { 0x1415, "Caveman"}, + { 0x1419, "Lorex"}, + { 0x141B, "Rang Dong VN"}, + { 0x141E, "TUO Accessories LLC"}, + { 0x141F, "Ductech"}, + { 0x142D, "QH"}, + { 0x142F, "QIACHIP"}, + { 0x6006, "Google LLC"}, + +-# diff --git a/lib/libesp32/berry_matter/tools/vendors.json b/lib/libesp32/berry_matter/tools/vendors.json new file mode 100644 index 000000000000..4a47f884ed3a --- /dev/null +++ b/lib/libesp32/berry_matter/tools/vendors.json @@ -0,0 +1,592 @@ +{ + "vendorInfo": [ + { + "vendorID": 4107, + "vendorName": "Signify", + "companyLegalName": "Signify Netherlands B.V.", + "companyPreferredName": "Signify", + "vendorLandingPageURL": "https://www.signify.com/", + "creator": "cosmos1xx8fg5nu4lesn448ytds8yjql47jp8gnfh6hck" + }, + { + "vendorID": 4125, + "vendorName": "Assa Abloy", + "companyLegalName": "Assa Abloy", + "companyPreferredName": "", + "vendorLandingPageURL": "http://www.yalehome.com", + "creator": "cosmos18wrgwrrccn49ejv4hstz9czxgw9dc2s2l9f94k" + }, + { + "vendorID": 4129, + "vendorName": "Legrand Group", + "companyLegalName": "Legrand", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.legrand.com", + "creator": "cosmos1elm6sf9yd2n7y0l0rve4zru0ukanv76vtrjnt3" + }, + { + "vendorID": 4151, + "vendorName": "NXP Semiconductors", + "companyLegalName": "NXP Semiconductors N.V.", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.nxp.com", + "creator": "cosmos1ck0arz4kky9l9qtdvqrct7783ffv2yftgmj9ch" + }, + { + "vendorID": 4190, + "vendorName": "Schneider", + "companyLegalName": "Schneider Electric", + "companyPreferredName": "Schneider Electric", + "vendorLandingPageURL": "", + "creator": "cosmos14kre58wpgterp7t9yy0393ecel9hpz9fnul6pc" + }, + { + "vendorID": 4251, + "vendorName": "Leviton", + "companyLegalName": "Leviton Manufacturing Company", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.leviton.com", + "creator": "cosmos1ypyp8zrqeu64rjmx3u34ghvl64uajr67uams3d" + }, + { + "vendorID": 4304, + "vendorName": "Qorvo", + "companyLegalName": "Qorvo, Inc.", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.qorvo.com/", + "creator": "cosmos1qrpkuzgm7hfejejfyg20g34tjxlt4k8dsspq52" + }, + { + "vendorID": 4334, + "vendorName": "UEI", + "companyLegalName": "Universal Electronics Inc", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.uei.com/", + "creator": "cosmos1pvrad6x6ettwgudttqd97r9wvarvnj5davpltg" + }, + { + "vendorID": 4338, + "vendorName": "ubisys", + "companyLegalName": "ubisys technologies GmbH", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.ubisys.de", + "creator": "cosmos1rxydw26p5k4f9rtwln6r3srvw4qq9pxnxadr3d" + }, + { + "vendorID": 4381, + "vendorName": "Comcast Communications", + "companyLegalName": "Comcast", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos1xcv4q8sjvf7nw4qj2yt5kledgwyf3ycxw8c0pe" + }, + { + "vendorID": 4442, + "vendorName": "Nanoleaf", + "companyLegalName": "Nanoleaf Ltd.", + "companyPreferredName": "", + "vendorLandingPageURL": "https://nanoleaf.me", + "creator": "cosmos1sggrrmw05e6alve8umwdaszade5qxyt53kthud" + }, + { + "vendorID": 4447, + "vendorName": "Aqara", + "companyLegalName": "Lumi United Technology Co., Ltd.", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.aqara.com/", + "creator": "cosmos1qpz3ghnqj6my7gzegkftzav9hpxymkx6zdk73v" + }, + { + "vendorID": 4448, + "vendorName": "Sengled", + "companyLegalName": "Sengled Co., Ltd.", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos1arhkv0n34xylxz9suy73dpyk6de32gpym9l3sw" + }, + { + "vendorID": 4456, + "vendorName": "Leedarson", + "companyLegalName": "Leedarson IoT Technology Inc.", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos1mzg0v94yg0cmkjqe2jqsys44tvvfk9mt2d889d" + }, + { + "vendorID": 4478, + "vendorName": "Feibit", + "companyLegalName": "Shenzhen Feibit Electronic Technology Co.,Ltd", + "companyPreferredName": "Feibit", + "vendorLandingPageURL": "http://www.feibit.com", + "creator": "cosmos162y3ehrqpuu2xjvmgq6qq7yqtdh6mlwh32wv2h" + }, + { + "vendorID": 4488, + "vendorName": "TP-Link", + "companyLegalName": "TP-Link Corporation Limited", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.tp-link.com", + "creator": "cosmos1jxpj6rr8vnetz9a2ec08az5fwqpuf4zt4hhygv" + }, + { + "vendorID": 4492, + "vendorName": "Midea Group", + "companyLegalName": "Midea Group", + "companyPreferredName": "Midea", + "vendorLandingPageURL": "", + "creator": "cosmos1a7c8us8jl76f8uue6xf9gzzqklfmfdyh8nedae" + }, + { + "vendorID": 4619, + "vendorName": "HEIMAN", + "companyLegalName": "Shenzhen Heiman Technology Co., Ltd.", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos16s4lqhxyqdr5lq6gmfpskjtwjf7dwc0lktn6dt" + }, + { + "vendorID": 4631, + "vendorName": "Amazon Alexa", + "companyLegalName": "Amazon.com, Inc.", + "companyPreferredName": "Amazon Alexa", + "vendorLandingPageURL": "https://www.amazon.com", + "creator": "cosmos152v4ejapsjl222zew0ll4eeltc0h2phh5hzpu3" + }, + { + "vendorID": 4633, + "vendorName": "ORVIBO", + "companyLegalName": "Shenzhen ORVIBO Technology Co., Ltd.", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.orvibo.com", + "creator": "cosmos1u7um30yf68zugm897tgpq7s6vhkhk4t2ykm0hq" + }, + { + "vendorID": 4701, + "vendorName": "Tuya", + "companyLegalName": "Tuya Global Inc.", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos13pwvzq2zk0r3fxuc2a5jhadnx6tda5ar2tcpp9" + }, + { + "vendorID": 4735, + "vendorName": "Nordic Semiconductor ASA", + "companyLegalName": "Nordic Semiconductor ASA", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.nordicsemi.com", + "creator": "cosmos1eatgwsxtjz0tlchllzasjfcac6m56n30njc3k2" + }, + { + "vendorID": 4736, + "vendorName": "Siterwell", + "companyLegalName": "Siterwell Electronics Co., Limited", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos1u3uhlkepx9dz9asrlucuupw2md2frvkwv583nr" + }, + { + "vendorID": 4742, + "vendorName": "CoolKit", + "companyLegalName": "SHENZHEN Coolkit Technology CO.,LTD.", + "companyPreferredName": "CoolKit", + "vendorLandingPageURL": "https://www.coolkit.cn/", + "creator": "cosmos18m8lehnvqx8zytn22fkekelt7xgmrl7cga37tl" + }, + { + "vendorID": 4751, + "vendorName": "EGLO", + "companyLegalName": "EGLO Leuchten GmbH", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.eglo.com/en/", + "creator": "cosmos1veu2f7mtgvfw8ezjfmhs64cqyt9wp2weas2rga" + }, + { + "vendorID": 4874, + "vendorName": "Eve", + "companyLegalName": "Eve Systems GmbH", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.evehome.com", + "creator": "cosmos1yh0ld8jl26rgycrtank8slxepmc8xzgyrzv99t" + }, + { + "vendorID": 4877, + "vendorName": "BouffaloLab", + "companyLegalName": "Bouffalo Lab (Nanjing) Co., Ltd.", + "companyPreferredName": "Bouffalo Lab ", + "vendorLandingPageURL": "https://www.bouffalolab.com/", + "creator": "cosmos1l8qwcjgfcnvlmtxrlcjrsmy9068mlck2cw68kx" + }, + { + "vendorID": 4882, + "vendorName": "Yeelight", + "companyLegalName": "Qingdao Yeelink Information Technology Co., Ltd.", + "companyPreferredName": "Yeelink Information Technology", + "vendorLandingPageURL": "https://en.yeelight.com/#", + "creator": "cosmos18fcq3647dkwur0d0zjyenj8sk57jehq4a8epaf" + }, + { + "vendorID": 4891, + "vendorName": "Espressif Systems", + "companyLegalName": "Espressif Systems (Shanghai) Co. Ltd.", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.espressif.com", + "creator": "cosmos1vncrg6hk30kutk4nr26mvyqc92zkygcc7aemzt" + }, + { + "vendorID": 4894, + "vendorName": "CAME S.p.A.", + "companyLegalName": "CAME S.p.A.", + "companyPreferredName": "CAME S.p.A.", + "vendorLandingPageURL": "https://www.came.com/", + "creator": "cosmos1kxjh94dcvnym6265nmxcjpn9xpkx0y7e3jjeqc" + }, + { + "vendorID": 4895, + "vendorName": "Longan.link", + "companyLegalName": "Longan Link Tech Co.,LTD", + "companyPreferredName": "", + "vendorLandingPageURL": "https://longan.link/", + "creator": "cosmos1qnd2v3n0f0ukja8z0jm4jqsqs5qhxa6ncvcxuv" + }, + { + "vendorID": 4897, + "vendorName": "SONOFF", + "companyLegalName": "Shenzhen Sonoff Technologies Co.,Ltd.", + "companyPreferredName": "SONOFF", + "vendorLandingPageURL": "https://sonoff.tech/", + "creator": "cosmos160c6r8rc2pgpgucasw4ae5gfqtz5vzcc6ay2sz" + }, + { + "vendorID": 4915, + "vendorName": "Becker Antriebe", + "companyLegalName": "Becker Antriebe GmbH", + "companyPreferredName": "Becker Antriebe", + "vendorLandingPageURL": "https://www.becker-antriebe.com/", + "creator": "cosmos1f6knru06kkxm306ckgs93zs9aqyrk9axgqh5wq" + }, + { + "vendorID": 4921, + "vendorName": "GE Lighting, a Savant company", + "companyLegalName": "GE Lighting, a Savant company", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.gelighting.com/", + "creator": "cosmos130t4m26ynex82jcgkqguxpffpva05e4zugn0xc" + }, + { + "vendorID": 4927, + "vendorName": "ASR", + "companyLegalName": "ASR Microelectronics(ShenZhen)Co., Ltd.", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos14a9n65wmumympggqnquu5ptq042ff69nehztk7" + }, + { + "vendorID": 4930, + "vendorName": "Beken Corporation", + "companyLegalName": "beken", + "companyPreferredName": "", + "vendorLandingPageURL": "http://www.bekencorp.com/", + "creator": "cosmos1aru484uj9dqkpnqg768tl6m66fvz9wkqcg79cw" + }, + { + "vendorID": 4932, + "vendorName": "Eltako", + "companyLegalName": "Eltako GmbH", + "companyPreferredName": "Eltako", + "vendorLandingPageURL": "https://www.eltako.com", + "creator": "cosmos1n3kqdwqh33grxcnzdeknercyt3wekc5zl4n3dg" + }, + { + "vendorID": 4933, + "vendorName": "Meross", + "companyLegalName": "Chengdu Meross Technology Co., Ltd.", + "companyPreferredName": "Meross", + "vendorLandingPageURL": "https://www.meross.com", + "creator": "cosmos18qu47pmqwylzm9w2tezyrmvcwmkew5yyvw3d6n" + }, + { + "vendorID": 4934, + "vendorName": "Rafael", + "companyLegalName": "Rafael Microelectronics, Inc.", + "companyPreferredName": "Rafael", + "vendorLandingPageURL": "", + "creator": "cosmos14myns7fehcxm2c896k5syhzr7zsyf7g4jdlk08" + }, + { + "vendorID": 4937, + "vendorName": "Apple Home", + "companyLegalName": "Apple Inc.", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.apple.com/home-app", + "creator": "cosmos1ysl37yl5nmcg8qr64knpscahq5zel3hjtxmvyt" + }, + { + "vendorID": 4942, + "vendorName": "tado", + "companyLegalName": "tado GmbH", + "companyPreferredName": "tado°", + "vendorLandingPageURL": "https://www.tado.com/", + "creator": "cosmos1sacvh2z4w0f3d657a2tdw2w4ha87743c8qahkv" + }, + { + "vendorID": 4943, + "vendorName": "mediola", + "companyLegalName": "mediola - connected living AG", + "companyPreferredName": "mediola", + "vendorLandingPageURL": "https://www.mediola.com", + "creator": "cosmos1j2w2zq787mkwltsdhzlxpnm50s8nrvg85u20dh" + }, + { + "vendorID": 4945, + "vendorName": "HooRii Technology", + "companyLegalName": "HooRii Technology CO., LTD", + "companyPreferredName": "HooRii Technology", + "vendorLandingPageURL": "https://www.hoorii.io/", + "creator": "cosmos1etk35ufz9z4x56t63tap7ncsvk5k5zw2npmlcu" + }, + { + "vendorID": 4957, + "vendorName": "Nuki", + "companyLegalName": "Nuki Home Solutions GmbH", + "companyPreferredName": "Nuki", + "vendorLandingPageURL": "https://nuki.io", + "creator": "cosmos1tdslga3va6luqzy2x3nlwxfh80f99vly5800ls" + }, + { + "vendorID": 4962, + "vendorName": "deveritec GmbH", + "companyLegalName": "deveritec GmbH", + "companyPreferredName": "", + "vendorLandingPageURL": "https://deveritec.de", + "creator": "cosmos19740ad8368h0h33rcu6gugtxgvyuws7puqg0za" + }, + { + "vendorID": 4965, + "vendorName": "Dooya", + "companyLegalName": "Ningbo Dooya Mechanic \u0026 Electronic Technology Co.,Ltd", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos1pqypa94grwkmk2d7e0ncdctfav5wyycu787tmk" + }, + { + "vendorID": 4974, + "vendorName": "Ambi Labs Limited", + "companyLegalName": "Ambi Labs Limited", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos12st2nx5elvkyswv7nqw6xh6j67vg472lcv0299" + }, + { + "vendorID": 4977, + "vendorName": "Tridonic", + "companyLegalName": "Tridonic GmbH \u0026 Co KG", + "companyPreferredName": "Tridonic", + "vendorLandingPageURL": "https://www.tridonic.com/matter", + "creator": "cosmos16ad3em3nrqzf854p03audmgdl3pc384467yzav" + }, + { + "vendorID": 4978, + "vendorName": "innovation matters", + "companyLegalName": "innovation matters iot GmbH", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.innovation-matters.at/", + "creator": "cosmos1v6x4nte50al0jjynvldwqse9n4ceajmja3wvph" + }, + { + "vendorID": 4991, + "vendorName": "NEO", + "companyLegalName": "Shenzhen NEO Electronic CO", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos18cvsug5mc7vj9a6kxaj0fwp99vj9ga3xd3lnql" + }, + { + "vendorID": 4993, + "vendorName": "Amazon Prime Video", + "companyLegalName": "Amazon.com, Inc.", + "companyPreferredName": "Amazon Prime Video", + "vendorLandingPageURL": "https://www.amazon.com", + "creator": "cosmos1akrkaxvlfwnnk2phtxewadmel4s567wr8xmfj8" + }, + { + "vendorID": 4996, + "vendorName": "Apple Keychain", + "companyLegalName": "Apple Inc.", + "companyPreferredName": "", + "vendorLandingPageURL": "https://support.apple.com/en-us/HT213441", + "creator": "cosmos1qqgp6p73z0lku4qzeajgtxtzy24xx467j0v0kp" + }, + { + "vendorID": 4998, + "vendorName": "Skylux", + "companyLegalName": "Skylux N.V.", + "companyPreferredName": "Skylux", + "vendorLandingPageURL": "https://www.skylux.eu", + "creator": "cosmos1f9haxa732cy6rmm3nc88q9fxx9zv0m0qn3kzcm" + }, + { + "vendorID": 4999, + "vendorName": "Qianyan", + "companyLegalName": "Shenzhen Qianyan Technology LTD", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos10plhr0fh27nred7nra3s6dld26gzcw6etje4gk" + }, + { + "vendorID": 5002, + "vendorName": "Nature", + "companyLegalName": "Nature Inc.", + "companyPreferredName": "", + "vendorLandingPageURL": "https://nature.global/", + "creator": "cosmos1yvwf85sx9mp53kptfwfz49cmmznvj2j0efavzu" + }, + { + "vendorID": 5009, + "vendorName": "Kasa", + "companyLegalName": "TP-Link Corporation Limited", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.kasasmart.com", + "creator": "cosmos1fjwwzm8zs9yc2hq73tqggdylcmm0ujmuc7x9wn" + }, + { + "vendorID": 5010, + "vendorName": "Tapo", + "companyLegalName": "TP-Link Corporation Limited", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.tapo.com", + "creator": "cosmos1acw4mmmf26e7jkxqm5epu7g56tcgz0walk3vs8" + }, + { + "vendorID": 5015, + "vendorName": "SwitchBot", + "companyLegalName": "Woan Technology (Shenzhen) Co., Ltd. ", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos1dc9patujyr2av2ezggudfalfag7p7scc0t3wnk" + }, + { + "vendorID": 5020, + "vendorName": "Zemismart Technology Limited", + "companyLegalName": "Zemismart Technology Limited", + "companyPreferredName": "Zemismart", + "vendorLandingPageURL": "https://www.zemismart.com", + "creator": "cosmos1mrv5zh6r6kcfln34vju5kfup4mv9lw27u33yj0" + }, + { + "vendorID": 5120, + "vendorName": "Uascent", + "companyLegalName": "Uascent Technology Company Limited", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos1ynw4zl6xqnvh5zhzhhpxjc6kt8z8wvxkp8edsw" + }, + { + "vendorID": 5123, + "vendorName": "Arlec Australia", + "companyLegalName": "Arlec Australia Pty. Ltd.", + "companyPreferredName": "Grid Connect", + "vendorLandingPageURL": "https://grid-connect.com.au/", + "creator": "cosmos1d9ut0ysdlw68r0705q8tagf7y9cf3d686fpf73" + }, + { + "vendorID": 5124, + "vendorName": "Phaten", + "companyLegalName": "Shenzhen Phaten Technology Co., Ltd.", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.phaten.com", + "creator": "cosmos1h4rf0hjzf498s2lu0rf8m52ujst2gl7lpdnexs" + }, + { + "vendorID": 5127, + "vendorName": "ThirdReality", + "companyLegalName": "Jiangsu Shushi Technology Co., Ltd.", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos1qwnh6tj4n938g3fmncqna22zmfxx50vnd22yux" + }, + { + "vendorID": 5136, + "vendorName": "Quectel", + "companyLegalName": "Quectel Wireless Solutions Co., Ltd.", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.quectel.com", + "creator": "cosmos1dqrg6w2jjs7sft59dpqngjzyfdjh4xjn5rjct5" + }, + { + "vendorID": 5139, + "vendorName": "1Home", + "companyLegalName": "1Home Solutions GmbH", + "companyPreferredName": "", + "vendorLandingPageURL": "https://www.1home.io/", + "creator": "cosmos1nzyp28afpumk0djal2w35s2pcl0q3e57euplkq" + }, + { + "vendorID": 5141, + "vendorName": "Caveman", + "companyLegalName": "Nanoleaf Ltd.", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos1smgmnl90h9srczk926l5kt7rydjpq7x0smc5e7" + }, + { + "vendorID": 5145, + "vendorName": "Lorex", + "companyLegalName": "Lorex Technology Inc.", + "companyPreferredName": "Lorex", + "vendorLandingPageURL": "https://www.lorex.com/", + "creator": "cosmos1c98nn3uphuya0w4km5uzamjwpkawksf5g6h5m5" + }, + { + "vendorID": 5147, + "vendorName": "Rang Dong VN", + "companyLegalName": "Rang Dong Light Source \u0026 Vacuum Flask JSC", + "companyPreferredName": "Rang Dong Light Source \u0026 Vacuum Flask JSC", + "vendorLandingPageURL": "https://rangdong.com.vn/", + "creator": "cosmos1023z8vredmrn7xlzjlrlv6wdqh0fpzs8jlc9rx" + }, + { + "vendorID": 5150, + "vendorName": "TUO Accessories LLC", + "companyLegalName": "TUO Accessories LLC", + "companyPreferredName": "TUO Accessories", + "vendorLandingPageURL": "http://tuoaccessories.com", + "creator": "cosmos1vn34dnlqvz5e997ws53yfj6a2622duzf3gg80d" + }, + { + "vendorID": 5151, + "vendorName": "Ductech", + "companyLegalName": "DUCTECH Co., Ltd.", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos18nqp48ce5k7j8qvuwk7tnzmckwsd8k2tlnj850" + }, + { + "vendorID": 5165, + "vendorName": "QH", + "companyLegalName": "Zhongshan QIHANG Electronic Technology Co.", + "companyPreferredName": "QIHANG", + "vendorLandingPageURL": "https://zsqhkj.1688.com/", + "creator": "cosmos13zzg6t6gaz36p8ctguatrguwuep9wmza6lptet" + }, + { + "vendorID": 5167, + "vendorName": "QIACHIP", + "companyLegalName": "Shenzhen QIACHIP Wireless E-commerce Co.", + "companyPreferredName": "QIACHIP", + "vendorLandingPageURL": "https://qiachip.com", + "creator": "cosmos1rhjya3hdvpyr2a3ur7s5hj48ce2qndyfcz07ht" + }, + { + "vendorID": 24582, + "vendorName": "Google LLC", + "companyLegalName": "Google LLC", + "companyPreferredName": "", + "vendorLandingPageURL": "", + "creator": "cosmos1kelvhh6cy2vmaj5zczxj52k4nys2w4e2u3awvq" + } + ], + "pagination": { + "next_key": null, + "total": "73" + } +} \ No newline at end of file