mirror of https://github.com/arendst/Tasmota.git
Matter fix Network Featuremap (#18202)
This commit is contained in:
parent
cc09ff21e1
commit
09255d6373
|
@ -110,7 +110,7 @@ class Matter_Device
|
|||
self.compute_pbkdf(self.passcode)
|
||||
|
||||
# if no fabric is configured, automatically open commissioning at restart
|
||||
if size(self.sessions.fabrics) == 0
|
||||
if self.sessions.count_active_fabrics() == 0
|
||||
self.start_basic_commissioning()
|
||||
end
|
||||
end
|
||||
|
@ -274,6 +274,7 @@ class Matter_Device
|
|||
#
|
||||
def start_commissioning_complete(session)
|
||||
tasmota.log("MTR: *** Commissioning complete ***", 2)
|
||||
self.stop_basic_commissioning() # by default close commissioning when it's complete
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -168,6 +168,18 @@ class Matter_Expirable_list : list
|
|||
return f
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# Count the number of persistable objects
|
||||
def count_persistables()
|
||||
var ret = 0
|
||||
var idx = 0
|
||||
while idx < size(self)
|
||||
if self[idx]._persist ret += 1 end
|
||||
idx += 1
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# every_second
|
||||
def every_second()
|
||||
|
|
|
@ -269,7 +269,7 @@ class Matter_Plugin_Root : Matter_Plugin
|
|||
if attribute == 0x0003 # ---------- ConnectMaxTimeSeconds / uint8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 30) # 30 - value taking from example in esp-matter
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0) # 15s ??? TOOD what should we put here?
|
||||
return TLV.create_TLV(TLV.U4, 0x04) # Put Eth for now which should work for any on-network
|
||||
end
|
||||
|
||||
# ====================================================================================================
|
||||
|
|
|
@ -601,6 +601,15 @@ class Matter_Session_Store
|
|||
end
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# Count active fabrics
|
||||
#
|
||||
# Count the number of commissionned fabrics, i.e. persisted
|
||||
def count_active_fabrics(f)
|
||||
self.remove_expired() # clean before saving
|
||||
return self.fabrics.count_persistables()
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# add session
|
||||
def create_session(local_session_id, initiator_session_id)
|
||||
|
|
|
@ -160,7 +160,7 @@ class Matter_UI
|
|||
webserver.content_send("<p>Passcode:</p>")
|
||||
webserver.content_send(string.format("<input type='number' min='1' max='99999998' name='passcode' value='%i'>", self.device.passcode))
|
||||
webserver.content_send("<p>Distinguish id:</p>")
|
||||
webserver.content_send(string.format("<input type='number' min='0' max='2047' name='discriminator' value='%i'>", self.device.discriminator))
|
||||
webserver.content_send(string.format("<input type='number' min='0' max='4095' name='discriminator' value='%i'>", self.device.discriminator))
|
||||
webserver.content_send(string.format("<p><input type='checkbox' name='ipv4'%s>IPv4 only</p>", self.device.ipv4only ? " checked" : ""))
|
||||
webserver.content_send("<p></p><button name='passcode' class='button bgrn'>Change</button></form></p>")
|
||||
webserver.content_send("<p></p></fieldset><p></p>")
|
||||
|
@ -314,6 +314,14 @@ class Matter_UI
|
|||
end
|
||||
|
||||
# mtc0 = close, mtc1 = open commissioning
|
||||
var fabrics_count = self.device.sessions.count_active_fabrics()
|
||||
if fabrics_count == 0
|
||||
webserver.content_send(string.format("<div style='text-align:right;font-size:11px;color:#aaa;'>%s</div>", "No active associaition"))
|
||||
else
|
||||
var plural = fabrics_count > 1
|
||||
webserver.content_send(string.format("<div style='text-align:right;font-size:11px;color:#aaa;'>%s</div>", str(fabrics_count) + " active association" + (plural ? "s" : "")))
|
||||
end
|
||||
|
||||
webserver.content_send(string.format("<button onclick='la(\"&mtc%i=1\");'>", self.device.commissioning_open == nil ? 1 : 0))
|
||||
webserver.content_send(matter._LOGO)
|
||||
if self.device.commissioning_open == nil
|
||||
|
|
|
@ -1516,25 +1516,24 @@ be_local_closure(Matter_Device_init_basic_commissioning, /* name */
|
|||
/* K0 */ be_nested_str_weak(compute_pbkdf),
|
||||
/* K1 */ be_nested_str_weak(passcode),
|
||||
/* K2 */ be_nested_str_weak(sessions),
|
||||
/* K3 */ be_nested_str_weak(fabrics),
|
||||
/* K3 */ be_nested_str_weak(count_active_fabrics),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(start_basic_commissioning),
|
||||
}),
|
||||
be_str_weak(init_basic_commissioning),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[12]) { /* code */
|
||||
( &(const binstruction[11]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x880C0101, // 0001 GETMBR R3 R0 K1
|
||||
0x7C040400, // 0002 CALL R1 2
|
||||
0x6004000C, // 0003 GETGBL R1 G12
|
||||
0x88080102, // 0004 GETMBR R2 R0 K2
|
||||
0x88080503, // 0005 GETMBR R2 R2 K3
|
||||
0x7C040200, // 0006 CALL R1 1
|
||||
0x1C040304, // 0007 EQ R1 R1 K4
|
||||
0x78060001, // 0008 JMPF R1 #000B
|
||||
0x8C040105, // 0009 GETMET R1 R0 K5
|
||||
0x7C040200, // 000A CALL R1 1
|
||||
0x80000000, // 000B RET 0
|
||||
0x88040102, // 0003 GETMBR R1 R0 K2
|
||||
0x8C040303, // 0004 GETMET R1 R1 K3
|
||||
0x7C040200, // 0005 CALL R1 1
|
||||
0x1C040304, // 0006 EQ R1 R1 K4
|
||||
0x78060001, // 0007 JMPF R1 #000A
|
||||
0x8C040105, // 0008 GETMET R1 R0 K5
|
||||
0x7C040200, // 0009 CALL R1 1
|
||||
0x80000000, // 000A RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -2371,21 +2370,24 @@ be_local_closure(Matter_Device_start_commissioning_complete, /* name */
|
|||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(tasmota),
|
||||
/* K1 */ be_nested_str_weak(log),
|
||||
/* K2 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20Commissioning_X20complete_X20_X2A_X2A_X2A),
|
||||
/* K3 */ be_const_int(2),
|
||||
/* K4 */ be_nested_str_weak(stop_basic_commissioning),
|
||||
}),
|
||||
be_str_weak(start_commissioning_complete),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 6]) { /* code */
|
||||
( &(const binstruction[ 8]) { /* code */
|
||||
0xB80A0000, // 0000 GETNGBL R2 K0
|
||||
0x8C080501, // 0001 GETMET R2 R2 K1
|
||||
0x58100002, // 0002 LDCONST R4 K2
|
||||
0x58140003, // 0003 LDCONST R5 K3
|
||||
0x7C080600, // 0004 CALL R2 3
|
||||
0x80000000, // 0005 RET 0
|
||||
0x8C080104, // 0005 GETMET R2 R0 K4
|
||||
0x7C080200, // 0006 CALL R2 1
|
||||
0x80000000, // 0007 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
|
|
@ -399,11 +399,11 @@ void be_load_Matter_Expirable_class(bvm *vm) {
|
|||
extern const bclass be_class_Matter_Expirable_list;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: every_second
|
||||
** Solidified function: count_persistables
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Expirable_list_every_second, /* name */
|
||||
be_local_closure(Matter_Expirable_list_count_persistables, /* name */
|
||||
be_nested_proto(
|
||||
3, /* nstack */
|
||||
5, /* nstack */
|
||||
1, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
|
@ -411,15 +411,79 @@ be_local_closure(Matter_Expirable_list_every_second, /* name */
|
|||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(remove_expired),
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_const_int(0),
|
||||
/* K1 */ be_nested_str_weak(_persist),
|
||||
/* K2 */ be_const_int(1),
|
||||
}),
|
||||
be_str_weak(every_second),
|
||||
be_str_weak(count_persistables),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 3]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x7C040200, // 0001 CALL R1 1
|
||||
0x80000000, // 0002 RET 0
|
||||
( &(const binstruction[14]) { /* code */
|
||||
0x58040000, // 0000 LDCONST R1 K0
|
||||
0x58080000, // 0001 LDCONST R2 K0
|
||||
0x600C000C, // 0002 GETGBL R3 G12
|
||||
0x5C100000, // 0003 MOVE R4 R0
|
||||
0x7C0C0200, // 0004 CALL R3 1
|
||||
0x140C0403, // 0005 LT R3 R2 R3
|
||||
0x780E0005, // 0006 JMPF R3 #000D
|
||||
0x940C0002, // 0007 GETIDX R3 R0 R2
|
||||
0x880C0701, // 0008 GETMBR R3 R3 K1
|
||||
0x780E0000, // 0009 JMPF R3 #000B
|
||||
0x00040302, // 000A ADD R1 R1 K2
|
||||
0x00080502, // 000B ADD R2 R2 K2
|
||||
0x7001FFF4, // 000C JMP #0002
|
||||
0x80040200, // 000D RET 1 R1
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: remove_expired
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Expirable_list_remove_expired, /* name */
|
||||
be_nested_proto(
|
||||
6, /* nstack */
|
||||
1, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_const_int(0),
|
||||
/* K1 */ be_nested_str_weak(has_expired),
|
||||
/* K2 */ be_nested_str_weak(_persist),
|
||||
/* K3 */ be_nested_str_weak(remove),
|
||||
/* K4 */ be_const_int(1),
|
||||
}),
|
||||
be_str_weak(remove_expired),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[22]) { /* code */
|
||||
0x50040000, // 0000 LDBOOL R1 0 0
|
||||
0x58080000, // 0001 LDCONST R2 K0
|
||||
0x600C000C, // 0002 GETGBL R3 G12
|
||||
0x5C100000, // 0003 MOVE R4 R0
|
||||
0x7C0C0200, // 0004 CALL R3 1
|
||||
0x140C0403, // 0005 LT R3 R2 R3
|
||||
0x780E000D, // 0006 JMPF R3 #0015
|
||||
0x940C0002, // 0007 GETIDX R3 R0 R2
|
||||
0x8C0C0701, // 0008 GETMET R3 R3 K1
|
||||
0x7C0C0200, // 0009 CALL R3 1
|
||||
0x780E0007, // 000A JMPF R3 #0013
|
||||
0x940C0002, // 000B GETIDX R3 R0 R2
|
||||
0x880C0702, // 000C GETMBR R3 R3 K2
|
||||
0x780E0000, // 000D JMPF R3 #000F
|
||||
0x50040200, // 000E LDBOOL R1 1 0
|
||||
0x8C0C0103, // 000F GETMET R3 R0 K3
|
||||
0x5C140400, // 0010 MOVE R5 R2
|
||||
0x7C0C0400, // 0011 CALL R3 2
|
||||
0x70020000, // 0012 JMP #0014
|
||||
0x00080504, // 0013 ADD R2 R2 K4
|
||||
0x7001FFEC, // 0014 JMP #0002
|
||||
0x80040200, // 0015 RET 1 R1
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -475,58 +539,11 @@ be_local_closure(Matter_Expirable_list_setitem, /* name */
|
|||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: push
|
||||
** Solidified function: every_second
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Expirable_list_push, /* name */
|
||||
be_local_closure(Matter_Expirable_list_every_second, /* 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[ 6]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(matter),
|
||||
/* K1 */ be_nested_str_weak(Expirable),
|
||||
/* K2 */ be_nested_str_weak(type_error),
|
||||
/* K3 */ be_nested_str_weak(argument_X20must_X20be_X20of_X20class_X20_X27Expirable_X27),
|
||||
/* K4 */ be_nested_str_weak(set_parent_list),
|
||||
/* K5 */ be_nested_str_weak(push),
|
||||
}),
|
||||
be_str_weak(push),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[17]) { /* code */
|
||||
0x6008000F, // 0000 GETGBL R2 G15
|
||||
0x5C0C0200, // 0001 MOVE R3 R1
|
||||
0xB8120000, // 0002 GETNGBL R4 K0
|
||||
0x88100901, // 0003 GETMBR R4 R4 K1
|
||||
0x7C080400, // 0004 CALL R2 2
|
||||
0x740A0000, // 0005 JMPT R2 #0007
|
||||
0xB0060503, // 0006 RAISE 1 K2 K3
|
||||
0x8C080304, // 0007 GETMET R2 R1 K4
|
||||
0x5C100000, // 0008 MOVE R4 R0
|
||||
0x7C080400, // 0009 CALL R2 2
|
||||
0x60080003, // 000A GETGBL R2 G3
|
||||
0x5C0C0000, // 000B MOVE R3 R0
|
||||
0x7C080200, // 000C CALL R2 1
|
||||
0x8C080505, // 000D GETMET R2 R2 K5
|
||||
0x5C100200, // 000E MOVE R4 R1
|
||||
0x7C080400, // 000F CALL R2 2
|
||||
0x80040400, // 0010 RET 1 R2
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: remove_expired
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Expirable_list_remove_expired, /* name */
|
||||
be_nested_proto(
|
||||
6, /* nstack */
|
||||
3, /* nstack */
|
||||
1, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
|
@ -534,38 +551,15 @@ be_local_closure(Matter_Expirable_list_remove_expired, /* name */
|
|||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
/* K0 */ be_const_int(0),
|
||||
/* K1 */ be_nested_str_weak(has_expired),
|
||||
/* K2 */ be_nested_str_weak(_persist),
|
||||
/* K3 */ be_nested_str_weak(remove),
|
||||
/* K4 */ be_const_int(1),
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(remove_expired),
|
||||
}),
|
||||
be_str_weak(remove_expired),
|
||||
be_str_weak(every_second),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[22]) { /* code */
|
||||
0x50040000, // 0000 LDBOOL R1 0 0
|
||||
0x58080000, // 0001 LDCONST R2 K0
|
||||
0x600C000C, // 0002 GETGBL R3 G12
|
||||
0x5C100000, // 0003 MOVE R4 R0
|
||||
0x7C0C0200, // 0004 CALL R3 1
|
||||
0x140C0403, // 0005 LT R3 R2 R3
|
||||
0x780E000D, // 0006 JMPF R3 #0015
|
||||
0x940C0002, // 0007 GETIDX R3 R0 R2
|
||||
0x8C0C0701, // 0008 GETMET R3 R3 K1
|
||||
0x7C0C0200, // 0009 CALL R3 1
|
||||
0x780E0007, // 000A JMPF R3 #0013
|
||||
0x940C0002, // 000B GETIDX R3 R0 R2
|
||||
0x880C0702, // 000C GETMBR R3 R3 K2
|
||||
0x780E0000, // 000D JMPF R3 #000F
|
||||
0x50040200, // 000E LDBOOL R1 1 0
|
||||
0x8C0C0103, // 000F GETMET R3 R0 K3
|
||||
0x5C140400, // 0010 MOVE R5 R2
|
||||
0x7C0C0400, // 0011 CALL R3 2
|
||||
0x70020000, // 0012 JMP #0014
|
||||
0x00080504, // 0013 ADD R2 R2 K4
|
||||
0x7001FFEC, // 0014 JMP #0002
|
||||
0x80040200, // 0015 RET 1 R1
|
||||
( &(const binstruction[ 3]) { /* code */
|
||||
0x8C040100, // 0000 GETMET R1 R0 K0
|
||||
0x7C040200, // 0001 CALL R1 1
|
||||
0x80000000, // 0002 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -631,6 +625,53 @@ be_local_closure(Matter_Expirable_list_persistables, /* name */
|
|||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: push
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Expirable_list_push, /* 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[ 6]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(matter),
|
||||
/* K1 */ be_nested_str_weak(Expirable),
|
||||
/* K2 */ be_nested_str_weak(type_error),
|
||||
/* K3 */ be_nested_str_weak(argument_X20must_X20be_X20of_X20class_X20_X27Expirable_X27),
|
||||
/* K4 */ be_nested_str_weak(set_parent_list),
|
||||
/* K5 */ be_nested_str_weak(push),
|
||||
}),
|
||||
be_str_weak(push),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[17]) { /* code */
|
||||
0x6008000F, // 0000 GETGBL R2 G15
|
||||
0x5C0C0200, // 0001 MOVE R3 R1
|
||||
0xB8120000, // 0002 GETNGBL R4 K0
|
||||
0x88100901, // 0003 GETMBR R4 R4 K1
|
||||
0x7C080400, // 0004 CALL R2 2
|
||||
0x740A0000, // 0005 JMPT R2 #0007
|
||||
0xB0060503, // 0006 RAISE 1 K2 K3
|
||||
0x8C080304, // 0007 GETMET R2 R1 K4
|
||||
0x5C100000, // 0008 MOVE R4 R0
|
||||
0x7C080400, // 0009 CALL R2 2
|
||||
0x60080003, // 000A GETGBL R2 G3
|
||||
0x5C0C0000, // 000B MOVE R3 R0
|
||||
0x7C080200, // 000C CALL R2 1
|
||||
0x8C080505, // 000D GETMET R2 R2 K5
|
||||
0x5C100200, // 000E MOVE R4 R1
|
||||
0x7C080400, // 000F CALL R2 2
|
||||
0x80040400, // 0010 RET 1 R2
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Matter_Expirable_list
|
||||
********************************************************************/
|
||||
|
@ -638,13 +679,14 @@ extern const bclass be_class_list;
|
|||
be_local_class(Matter_Expirable_list,
|
||||
0,
|
||||
&be_class_list,
|
||||
be_nested_map(5,
|
||||
be_nested_map(6,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(every_second, 4), be_const_closure(Matter_Expirable_list_every_second_closure) },
|
||||
{ be_const_key_weak(count_persistables, -1), be_const_closure(Matter_Expirable_list_count_persistables_closure) },
|
||||
{ be_const_key_weak(every_second, -1), be_const_closure(Matter_Expirable_list_every_second_closure) },
|
||||
{ be_const_key_weak(setitem, -1), be_const_closure(Matter_Expirable_list_setitem_closure) },
|
||||
{ be_const_key_weak(push, -1), be_const_closure(Matter_Expirable_list_push_closure) },
|
||||
{ be_const_key_weak(remove_expired, -1), be_const_closure(Matter_Expirable_list_remove_expired_closure) },
|
||||
{ be_const_key_weak(remove_expired, 1), be_const_closure(Matter_Expirable_list_remove_expired_closure) },
|
||||
{ be_const_key_weak(persistables, -1), be_const_closure(Matter_Expirable_list_persistables_closure) },
|
||||
{ be_const_key_weak(push, -1), be_const_closure(Matter_Expirable_list_push_closure) },
|
||||
})),
|
||||
be_str_weak(Matter_Expirable_list)
|
||||
);
|
||||
|
|
|
@ -855,7 +855,7 @@ be_local_closure(Matter_Plugin_Root_read_attribute, /* name */
|
|||
0x781E0004, // 02E8 JMPF R7 #02EE
|
||||
0x8C1C0906, // 02E9 GETMET R7 R4 K6
|
||||
0x8824092A, // 02EA GETMBR R9 R4 K42
|
||||
0x58280005, // 02EB LDCONST R10 K5
|
||||
0x542A0003, // 02EB LDINT R10 4
|
||||
0x7C1C0600, // 02EC CALL R7 3
|
||||
0x80040E00, // 02ED RET 1 R7
|
||||
0x70020059, // 02EE JMP #0349
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -158,7 +158,7 @@ be_local_closure(Matter_UI_show_fabric_info, /* name */
|
|||
********************************************************************/
|
||||
be_local_closure(Matter_UI_web_sensor, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
13, /* nstack */
|
||||
1, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
|
@ -166,7 +166,7 @@ be_local_closure(Matter_UI_web_sensor, /* name */
|
|||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[17]) { /* constants */
|
||||
( &(const bvalue[24]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(webserver),
|
||||
/* K1 */ be_nested_str_weak(string),
|
||||
/* K2 */ be_nested_str_weak(tasmota),
|
||||
|
@ -176,18 +176,25 @@ be_local_closure(Matter_UI_web_sensor, /* name */
|
|||
/* K6 */ be_nested_str_weak(device),
|
||||
/* K7 */ be_nested_str_weak(commissioning_open),
|
||||
/* K8 */ be_nested_str_weak(show_commissioning_info),
|
||||
/* K9 */ be_nested_str_weak(content_send),
|
||||
/* K10 */ be_nested_str_weak(format),
|
||||
/* K11 */ be_nested_str_weak(_X3Cbutton_X20onclick_X3D_X27la_X28_X22_X26mtc_X25i_X3D1_X22_X29_X3B_X27_X3E),
|
||||
/* K12 */ be_const_int(1),
|
||||
/* K13 */ be_const_int(0),
|
||||
/* K14 */ be_nested_str_weak(_LOGO),
|
||||
/* K15 */ be_nested_str_weak(_X20Open_X20Commissioning_X3C_X2Fbutton_X3E),
|
||||
/* K16 */ be_nested_str_weak(_X20Close_X20Commissioning_X3C_X2Fbutton_X3E),
|
||||
/* K9 */ be_nested_str_weak(sessions),
|
||||
/* K10 */ be_nested_str_weak(count_active_fabrics),
|
||||
/* K11 */ be_const_int(0),
|
||||
/* K12 */ be_nested_str_weak(content_send),
|
||||
/* K13 */ be_nested_str_weak(format),
|
||||
/* K14 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27text_X2Dalign_X3Aright_X3Bfont_X2Dsize_X3A11px_X3Bcolor_X3A_X23aaa_X3B_X27_X3E_X25s_X3C_X2Fdiv_X3E),
|
||||
/* K15 */ be_nested_str_weak(No_X20active_X20associaition),
|
||||
/* K16 */ be_const_int(1),
|
||||
/* K17 */ be_nested_str_weak(_X20active_X20association),
|
||||
/* K18 */ be_nested_str_weak(s),
|
||||
/* K19 */ be_nested_str_weak(),
|
||||
/* K20 */ be_nested_str_weak(_X3Cbutton_X20onclick_X3D_X27la_X28_X22_X26mtc_X25i_X3D1_X22_X29_X3B_X27_X3E),
|
||||
/* K21 */ be_nested_str_weak(_LOGO),
|
||||
/* K22 */ be_nested_str_weak(_X20Open_X20Commissioning_X3C_X2Fbutton_X3E),
|
||||
/* K23 */ be_nested_str_weak(_X20Close_X20Commissioning_X3C_X2Fbutton_X3E),
|
||||
}),
|
||||
be_str_weak(web_sensor),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[43]) { /* code */
|
||||
( &(const binstruction[71]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0xA40A0200, // 0001 IMPORT R2 K1
|
||||
0xB80E0400, // 0002 GETNGBL R3 K2
|
||||
|
@ -195,42 +202,70 @@ be_local_closure(Matter_UI_web_sensor, /* name */
|
|||
0xB8160800, // 0004 GETNGBL R5 K4
|
||||
0x88140B05, // 0005 GETMBR R5 R5 K5
|
||||
0x7C0C0400, // 0006 CALL R3 2
|
||||
0x780E0021, // 0007 JMPF R3 #002A
|
||||
0x780E003D, // 0007 JMPF R3 #0046
|
||||
0x88100106, // 0008 GETMBR R4 R0 K6
|
||||
0x88100907, // 0009 GETMBR R4 R4 K7
|
||||
0x78120001, // 000A JMPF R4 #000D
|
||||
0x8C100108, // 000B GETMET R4 R0 K8
|
||||
0x7C100200, // 000C CALL R4 1
|
||||
0x8C100309, // 000D GETMET R4 R1 K9
|
||||
0x8C18050A, // 000E GETMET R6 R2 K10
|
||||
0x5820000B, // 000F LDCONST R8 K11
|
||||
0x88240106, // 0010 GETMBR R9 R0 K6
|
||||
0x88241307, // 0011 GETMBR R9 R9 K7
|
||||
0x4C280000, // 0012 LDNIL R10
|
||||
0x1C24120A, // 0013 EQ R9 R9 R10
|
||||
0x78260001, // 0014 JMPF R9 #0017
|
||||
0x5824000C, // 0015 LDCONST R9 K12
|
||||
0x70020000, // 0016 JMP #0018
|
||||
0x5824000D, // 0017 LDCONST R9 K13
|
||||
0x7C180600, // 0018 CALL R6 3
|
||||
0x7C100400, // 0019 CALL R4 2
|
||||
0x8C100309, // 001A GETMET R4 R1 K9
|
||||
0xB81A0800, // 001B GETNGBL R6 K4
|
||||
0x88180D0E, // 001C GETMBR R6 R6 K14
|
||||
0x7C100400, // 001D CALL R4 2
|
||||
0x88100106, // 001E GETMBR R4 R0 K6
|
||||
0x88100907, // 001F GETMBR R4 R4 K7
|
||||
0x4C140000, // 0020 LDNIL R5
|
||||
0x1C100805, // 0021 EQ R4 R4 R5
|
||||
0x78120003, // 0022 JMPF R4 #0027
|
||||
0x8C100309, // 0023 GETMET R4 R1 K9
|
||||
0x5818000F, // 0024 LDCONST R6 K15
|
||||
0x7C100400, // 0025 CALL R4 2
|
||||
0x70020002, // 0026 JMP #002A
|
||||
0x8C100309, // 0027 GETMET R4 R1 K9
|
||||
0x58180010, // 0028 LDCONST R6 K16
|
||||
0x7C100400, // 0029 CALL R4 2
|
||||
0x80000000, // 002A RET 0
|
||||
0x88100106, // 000D GETMBR R4 R0 K6
|
||||
0x88100909, // 000E GETMBR R4 R4 K9
|
||||
0x8C10090A, // 000F GETMET R4 R4 K10
|
||||
0x7C100200, // 0010 CALL R4 1
|
||||
0x1C14090B, // 0011 EQ R5 R4 K11
|
||||
0x78160006, // 0012 JMPF R5 #001A
|
||||
0x8C14030C, // 0013 GETMET R5 R1 K12
|
||||
0x8C1C050D, // 0014 GETMET R7 R2 K13
|
||||
0x5824000E, // 0015 LDCONST R9 K14
|
||||
0x5828000F, // 0016 LDCONST R10 K15
|
||||
0x7C1C0600, // 0017 CALL R7 3
|
||||
0x7C140400, // 0018 CALL R5 2
|
||||
0x7002000E, // 0019 JMP #0029
|
||||
0x24140910, // 001A GT R5 R4 K16
|
||||
0x8C18030C, // 001B GETMET R6 R1 K12
|
||||
0x8C20050D, // 001C GETMET R8 R2 K13
|
||||
0x5828000E, // 001D LDCONST R10 K14
|
||||
0x602C0008, // 001E GETGBL R11 G8
|
||||
0x5C300800, // 001F MOVE R12 R4
|
||||
0x7C2C0200, // 0020 CALL R11 1
|
||||
0x002C1711, // 0021 ADD R11 R11 K17
|
||||
0x78160001, // 0022 JMPF R5 #0025
|
||||
0x58300012, // 0023 LDCONST R12 K18
|
||||
0x70020000, // 0024 JMP #0026
|
||||
0x58300013, // 0025 LDCONST R12 K19
|
||||
0x002C160C, // 0026 ADD R11 R11 R12
|
||||
0x7C200600, // 0027 CALL R8 3
|
||||
0x7C180400, // 0028 CALL R6 2
|
||||
0x8C14030C, // 0029 GETMET R5 R1 K12
|
||||
0x8C1C050D, // 002A GETMET R7 R2 K13
|
||||
0x58240014, // 002B LDCONST R9 K20
|
||||
0x88280106, // 002C GETMBR R10 R0 K6
|
||||
0x88281507, // 002D GETMBR R10 R10 K7
|
||||
0x4C2C0000, // 002E LDNIL R11
|
||||
0x1C28140B, // 002F EQ R10 R10 R11
|
||||
0x782A0001, // 0030 JMPF R10 #0033
|
||||
0x58280010, // 0031 LDCONST R10 K16
|
||||
0x70020000, // 0032 JMP #0034
|
||||
0x5828000B, // 0033 LDCONST R10 K11
|
||||
0x7C1C0600, // 0034 CALL R7 3
|
||||
0x7C140400, // 0035 CALL R5 2
|
||||
0x8C14030C, // 0036 GETMET R5 R1 K12
|
||||
0xB81E0800, // 0037 GETNGBL R7 K4
|
||||
0x881C0F15, // 0038 GETMBR R7 R7 K21
|
||||
0x7C140400, // 0039 CALL R5 2
|
||||
0x88140106, // 003A GETMBR R5 R0 K6
|
||||
0x88140B07, // 003B GETMBR R5 R5 K7
|
||||
0x4C180000, // 003C LDNIL R6
|
||||
0x1C140A06, // 003D EQ R5 R5 R6
|
||||
0x78160003, // 003E JMPF R5 #0043
|
||||
0x8C14030C, // 003F GETMET R5 R1 K12
|
||||
0x581C0016, // 0040 LDCONST R7 K22
|
||||
0x7C140400, // 0041 CALL R5 2
|
||||
0x70020002, // 0042 JMP #0046
|
||||
0x8C14030C, // 0043 GETMET R5 R1 K12
|
||||
0x581C0017, // 0044 LDCONST R7 K23
|
||||
0x7C140400, // 0045 CALL R5 2
|
||||
0x80000000, // 0046 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -701,7 +736,7 @@ be_local_closure(Matter_UI_show_passcode_form, /* name */
|
|||
/* K8 */ be_nested_str_weak(device),
|
||||
/* K9 */ be_nested_str_weak(passcode),
|
||||
/* K10 */ be_nested_str_weak(_X3Cp_X3EDistinguish_X20id_X3A_X3C_X2Fp_X3E),
|
||||
/* K11 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X270_X27_X20max_X3D_X272047_X27_X20name_X3D_X27discriminator_X27_X20value_X3D_X27_X25i_X27_X3E),
|
||||
/* K11 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X270_X27_X20max_X3D_X274095_X27_X20name_X3D_X27discriminator_X27_X20value_X3D_X27_X25i_X27_X3E),
|
||||
/* K12 */ be_nested_str_weak(discriminator),
|
||||
/* K13 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27ipv4_X27_X25s_X3EIPv4_X20only_X3C_X2Fp_X3E),
|
||||
/* K14 */ be_nested_str_weak(ipv4only),
|
||||
|
|
Loading…
Reference in New Issue