Fix Matter resumption final ack (#21673)

This commit is contained in:
s-hadinger 2024-06-22 10:15:39 +02:00 committed by GitHub
parent 9ac4712527
commit 40fb8fa7df
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 857 additions and 833 deletions

View File

@ -349,6 +349,7 @@ class Matter_Commisioning_Context
# Check that it's a resumption
if is_resumption
# Resumption p.169
log("MTR: Sigma1 Resumption", 3)
var s1rk_salt = sigma1.initiatorRandom + sigma1.resumptionID
var s1rk_info = bytes().fromstring("Sigma1_Resume")
var s1rk = crypto.HKDF_SHA256().derive(session_resumption.shared_secret, s1rk_salt, s1rk_info, 16)
@ -696,7 +697,8 @@ class Matter_Commisioning_Context
# placeholder, nothing to run for now
def parse_StatusReport(msg)
var session = msg.session
log("MTR: >Status "+msg.raw[msg.app_payload_idx..].tohex(), 3)
var status_msg = msg.raw[msg.app_payload_idx..].tohex()
log(f"MTR: >Status {status_msg}", (status_msg != "0000000000000000") ? 3 : 4)
return false # we don't explicitly ack the message
end

View File

@ -215,7 +215,7 @@ class Matter_Frame
raw.add(self.x_flags, 1)
# opcode (mandatory)
raw.add(self.opcode, 1)
raw.add(self.exchange_id & 0xFFFF, 2)
raw.add((self.exchange_id != nil) ? self.exchange_id & 0xFFFF : 0, 2)
raw.add(self.protocol_id, 2)
if self.x_flag_a raw.add(self.ack_message_counter, 4) end
# finally payload

View File

@ -50,6 +50,8 @@ class Matter_MessageHandler
def send_simple_ack(frame, reliable)
if frame.x_flag_r # nothing to respond, check if we need a standalone ack
var resp = frame.build_standalone_ack(reliable)
# special case, the local_session_id is not the one from the session
resp.local_session_id = frame.local_session_id
resp.encode_frame()
if tasmota.loglevel(4)
log(format("MTR: <Ack (%6i) ack=%i id=%i %s", resp.session.local_session_id, resp.ack_message_counter, resp.message_counter, reliable ? '{reliable}' : ''), 4)
@ -125,7 +127,8 @@ class Matter_MessageHandler
var op_name = matter.get_opcode_name(frame.opcode)
if !op_name op_name = format("0x%02X", frame.opcode) end
if tasmota.loglevel(3)
log(format("MTR: >Received (%6i) %s rid=%i exch=%i from [%s]:%i", session.local_session_id, op_name, frame.message_counter, frame.exchange_id, addr, port), 3)
log(format("MTR: >Received (%6i) %s from [%s]:%i", session.local_session_id, op_name, addr, port), 3)
# log(format("MTR: >Received (%6i) %s rid=%i exch=%i from [%s]:%i", session.local_session_id, op_name, frame.message_counter, frame.exchange_id, addr, port), 3)
end
else
if tasmota.loglevel(4)

View File

@ -228,7 +228,7 @@ be_local_closure(class_Matter_Frame_encode_frame, /* name */
}),
be_str_weak(encode_frame),
&be_const_str_solidified,
( &(const binstruction[155]) { /* code */
( &(const binstruction[161]) { /* code */
0x4C0C0000, // 0000 LDNIL R3
0x1C0C0403, // 0001 EQ R3 R2 R3
0x780E000A, // 0002 JMPF R3 #000E
@ -362,28 +362,34 @@ be_local_closure(class_Matter_Frame_encode_frame, /* name */
0x7C0C0600, // 0082 CALL R3 3
0x8C0C0505, // 0083 GETMET R3 R2 K5
0x88140118, // 0084 GETMBR R5 R0 K24
0x541AFFFE, // 0085 LDINT R6 65535
0x2C140A06, // 0086 AND R5 R5 R6
0x58180008, // 0087 LDCONST R6 K8
0x7C0C0600, // 0088 CALL R3 3
0x8C0C0505, // 0089 GETMET R3 R2 K5
0x88140119, // 008A GETMBR R5 R0 K25
0x58180008, // 008B LDCONST R6 K8
0x7C0C0600, // 008C CALL R3 3
0x880C0115, // 008D GETMBR R3 R0 K21
0x780E0003, // 008E JMPF R3 #0093
0x4C180000, // 0085 LDNIL R6
0x20140A06, // 0086 NE R5 R5 R6
0x78160003, // 0087 JMPF R5 #008C
0x88140118, // 0088 GETMBR R5 R0 K24
0x541AFFFE, // 0089 LDINT R6 65535
0x2C140A06, // 008A AND R5 R5 R6
0x70020000, // 008B JMP #008D
0x58140000, // 008C LDCONST R5 K0
0x58180008, // 008D LDCONST R6 K8
0x7C0C0600, // 008E CALL R3 3
0x8C0C0505, // 008F GETMET R3 R2 K5
0x8814011A, // 0090 GETMBR R5 R0 K26
0x541A0003, // 0091 LDINT R6 4
0x88140119, // 0090 GETMBR R5 R0 K25
0x58180008, // 0091 LDCONST R6 K8
0x7C0C0600, // 0092 CALL R3 3
0x600C000C, // 0093 GETGBL R3 G12
0x5C100400, // 0094 MOVE R4 R2
0x7C0C0200, // 0095 CALL R3 1
0x90023603, // 0096 SETMBR R0 K27 R3
0x78060000, // 0097 JMPF R1 #0099
0x400C0401, // 0098 CONNECT R3 R2 R1
0x90023802, // 0099 SETMBR R0 K28 R2
0x80040400, // 009A RET 1 R2
0x880C0115, // 0093 GETMBR R3 R0 K21
0x780E0003, // 0094 JMPF R3 #0099
0x8C0C0505, // 0095 GETMET R3 R2 K5
0x8814011A, // 0096 GETMBR R5 R0 K26
0x541A0003, // 0097 LDINT R6 4
0x7C0C0600, // 0098 CALL R3 3
0x600C000C, // 0099 GETGBL R3 G12
0x5C100400, // 009A MOVE R4 R2
0x7C0C0200, // 009B CALL R3 1
0x90023603, // 009C SETMBR R0 K27 R3
0x78060000, // 009D JMPF R1 #009F
0x400C0401, // 009E CONNECT R3 R2 R1
0x90023802, // 009F SETMBR R0 K28 R2
0x80040400, // 00A0 RET 1 R2
})
)
);

View File

@ -182,12 +182,12 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */
/* K31 */ be_nested_str_weak(get_opcode_name),
/* K32 */ be_nested_str_weak(0x_X2502X),
/* K33 */ be_const_int(3),
/* K34 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20rid_X3D_X25i_X20exch_X3D_X25i_X20from_X20_X5B_X25s_X5D_X3A_X25i),
/* K35 */ be_nested_str_weak(exchange_id),
/* K36 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i),
/* K37 */ be_nested_str_weak(x_flag_r),
/* K38 */ be_nested_str_weak(_X7Breliable_X7D_X20),
/* K39 */ be_nested_str_weak(),
/* K34 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20from_X20_X5B_X25s_X5D_X3A_X25i),
/* K35 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i),
/* K36 */ be_nested_str_weak(x_flag_r),
/* K37 */ be_nested_str_weak(_X7Breliable_X7D_X20),
/* K38 */ be_nested_str_weak(),
/* K39 */ be_nested_str_weak(exchange_id),
/* K40 */ be_nested_str_weak(ack_message_counter),
/* K41 */ be_nested_str_weak(commissioning),
/* K42 */ be_nested_str_weak(process_incoming),
@ -221,14 +221,14 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */
}),
be_str_weak(msg_received),
&be_const_str_solidified,
( &(const binstruction[356]) { /* code */
( &(const binstruction[354]) { /* code */
0x50100000, // 0000 LDBOOL R4 0 0
0xB8160000, // 0001 GETNGBL R5 K0
0x88140B01, // 0002 GETMBR R5 R5 K1
0x8C140B02, // 0003 GETMET R5 R5 K2
0x581C0003, // 0004 LDCONST R7 K3
0x7C140400, // 0005 CALL R5 2
0xA8020143, // 0006 EXBLK 0 #014B
0xA8020141, // 0006 EXBLK 0 #0149
0xB8160000, // 0007 GETNGBL R5 K0
0x8C140B04, // 0008 GETMET R5 R5 K4
0x5C1C0000, // 0009 MOVE R7 R0
@ -257,13 +257,13 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */
0x7C200400, // 0020 CALL R8 2
0xA8040001, // 0021 EXBLK 1 1
0x80041000, // 0022 RET 1 R8
0x70020122, // 0023 JMP #0147
0x70020120, // 0023 JMP #0145
0x881C0B0D, // 0024 GETMBR R7 R5 K13
0x1C1C0F0E, // 0025 EQ R7 R7 K14
0x781E007C, // 0026 JMPF R7 #00A4
0x781E007A, // 0026 JMPF R7 #00A2
0x881C0B0F, // 0027 GETMBR R7 R5 K15
0x1C1C0F0E, // 0028 EQ R7 R7 K14
0x781E0079, // 0029 JMPF R7 #00A4
0x781E0077, // 0029 JMPF R7 #00A2
0x881C0107, // 002A GETMBR R7 R0 K7
0x881C0F08, // 002B GETMBR R7 R7 K8
0x8C1C0F09, // 002C GETMET R7 R7 K9
@ -317,7 +317,7 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */
0x88200B1E, // 005C GETMBR R8 R5 K30
0x5426000F, // 005D LDINT R9 16
0x20201009, // 005E NE R8 R8 R9
0x7822001C, // 005F JMPF R8 #007D
0x7822001A, // 005F JMPF R8 #007B
0xB8220000, // 0060 GETNGBL R8 K0
0x8C20111F, // 0061 GETMET R8 R8 K31
0x88280B1E, // 0062 GETMBR R10 R5 K30
@ -333,251 +333,249 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */
0x8C241318, // 006C GETMET R9 R9 K24
0x582C0021, // 006D LDCONST R11 K33
0x7C240400, // 006E CALL R9 2
0x7826000B, // 006F JMPF R9 #007C
0x78260009, // 006F JMPF R9 #007A
0xB8260400, // 0070 GETNGBL R9 K2
0x60280018, // 0071 GETGBL R10 G24
0x582C0022, // 0072 LDCONST R11 K34
0x88300F0D, // 0073 GETMBR R12 R7 K13
0x5C341000, // 0074 MOVE R13 R8
0x88380B16, // 0075 GETMBR R14 R5 K22
0x883C0B23, // 0076 GETMBR R15 R5 K35
0x5C400400, // 0077 MOVE R16 R2
0x5C440600, // 0078 MOVE R17 R3
0x7C280E00, // 0079 CALL R10 7
0x582C0021, // 007A LDCONST R11 K33
0x7C240400, // 007B CALL R9 2
0x70020017, // 007C JMP #0095
0xB8222E00, // 007D GETNGBL R8 K23
0x8C201118, // 007E GETMET R8 R8 K24
0x542A0003, // 007F LDINT R10 4
0x7C200400, // 0080 CALL R8 2
0x78220012, // 0081 JMPF R8 #0095
0xB8220400, // 0082 GETNGBL R8 K2
0x60240018, // 0083 GETGBL R9 G24
0x58280024, // 0084 LDCONST R10 K36
0x882C0F0D, // 0085 GETMBR R11 R7 K13
0x88300B16, // 0086 GETMBR R12 R5 K22
0x88340B25, // 0087 GETMBR R13 R5 K37
0x78360001, // 0088 JMPF R13 #008B
0x5C380400, // 0075 MOVE R14 R2
0x5C3C0600, // 0076 MOVE R15 R3
0x7C280A00, // 0077 CALL R10 5
0x582C0021, // 0078 LDCONST R11 K33
0x7C240400, // 0079 CALL R9 2
0x70020017, // 007A JMP #0093
0xB8222E00, // 007B GETNGBL R8 K23
0x8C201118, // 007C GETMET R8 R8 K24
0x542A0003, // 007D LDINT R10 4
0x7C200400, // 007E CALL R8 2
0x78220012, // 007F JMPF R8 #0093
0xB8220400, // 0080 GETNGBL R8 K2
0x60240018, // 0081 GETGBL R9 G24
0x58280023, // 0082 LDCONST R10 K35
0x882C0F0D, // 0083 GETMBR R11 R7 K13
0x88300B16, // 0084 GETMBR R12 R5 K22
0x88340B24, // 0085 GETMBR R13 R5 K36
0x78360001, // 0086 JMPF R13 #0089
0x58340025, // 0087 LDCONST R13 K37
0x70020000, // 0088 JMP #008A
0x58340026, // 0089 LDCONST R13 K38
0x70020000, // 008A JMP #008C
0x58340027, // 008B LDCONST R13 K39
0x88380B23, // 008C GETMBR R14 R5 K35
0x603C0008, // 008D GETGBL R15 G8
0x88400B28, // 008E GETMBR R16 R5 K40
0x7C3C0200, // 008F CALL R15 1
0x5C400400, // 0090 MOVE R16 R2
0x5C440600, // 0091 MOVE R17 R3
0x7C241000, // 0092 CALL R9 8
0x542A0003, // 0093 LDINT R10 4
0x7C200400, // 0094 CALL R8 2
0x88200129, // 0095 GETMBR R8 R0 K41
0x8C20112A, // 0096 GETMET R8 R8 K42
0x5C280A00, // 0097 MOVE R10 R5
0x7C200400, // 0098 CALL R8 2
0x5C101000, // 0099 MOVE R4 R8
0x5C200800, // 009A MOVE R8 R4
0x74220003, // 009B JMPT R8 #00A0
0x8C20011B, // 009C GETMET R8 R0 K27
0x5C280A00, // 009D MOVE R10 R5
0x502C0000, // 009E LDBOOL R11 0 0
0x7C200600, // 009F CALL R8 3
0x50200200, // 00A0 LDBOOL R8 1 0
0xA8040001, // 00A1 EXBLK 1 1
0x80041000, // 00A2 RET 1 R8
0x700200A2, // 00A3 JMP #0147
0xB81E2E00, // 00A4 GETNGBL R7 K23
0x8C1C0F18, // 00A5 GETMET R7 R7 K24
0x54260003, // 00A6 LDINT R9 4
0x7C1C0400, // 00A7 CALL R7 2
0x781E0007, // 00A8 JMPF R7 #00B1
0xB81E0400, // 00A9 GETNGBL R7 K2
0x60200018, // 00AA GETGBL R8 G24
0x5824002B, // 00AB LDCONST R9 K43
0x88280B0D, // 00AC GETMBR R10 R5 K13
0x882C0B16, // 00AD GETMBR R11 R5 K22
0x7C200600, // 00AE CALL R8 3
0x54260003, // 00AF LDINT R9 4
0x7C1C0400, // 00B0 CALL R7 2
0x881C0107, // 00B1 GETMBR R7 R0 K7
0x881C0F08, // 00B2 GETMBR R7 R7 K8
0x8C1C0F2C, // 00B3 GETMET R7 R7 K44
0x88240B0D, // 00B4 GETMBR R9 R5 K13
0x7C1C0400, // 00B5 CALL R7 2
0x4C200000, // 00B6 LDNIL R8
0x1C200E08, // 00B7 EQ R8 R7 R8
0x78220009, // 00B8 JMPF R8 #00C3
0xB8220400, // 00B9 GETNGBL R8 K2
0x60240008, // 00BA GETGBL R9 G8
0x88280B0D, // 00BB GETMBR R10 R5 K13
0x7C240200, // 00BC CALL R9 1
0x00265A09, // 00BD ADD R9 K45 R9
0x58280021, // 00BE LDCONST R10 K33
0x7C200400, // 00BF CALL R8 2
0x50200000, // 00C0 LDBOOL R8 0 0
0xA8040001, // 00C1 EXBLK 1 1
0x80041000, // 00C2 RET 1 R8
0x780A0000, // 00C3 JMPF R2 #00C5
0x901E2002, // 00C4 SETMBR R7 K16 R2
0x780E0000, // 00C5 JMPF R3 #00C7
0x901E2203, // 00C6 SETMBR R7 K17 R3
0x901E2400, // 00C7 SETMBR R7 K18 R0
0x90162607, // 00C8 SETMBR R5 K19 R7
0x8C200F2E, // 00C9 GETMET R8 R7 K46
0x88280B16, // 00CA GETMBR R10 R5 K22
0x502C0200, // 00CB LDBOOL R11 1 0
0x7C200600, // 00CC CALL R8 3
0x74220017, // 00CD JMPT R8 #00E6
0xB8222E00, // 00CE GETNGBL R8 K23
0x8C201118, // 00CF GETMET R8 R8 K24
0x58280021, // 00D0 LDCONST R10 K33
0x7C200400, // 00D1 CALL R8 2
0x7822000B, // 00D2 JMPF R8 #00DF
0xB8220400, // 00D3 GETNGBL R8 K2
0x60240008, // 00D4 GETGBL R9 G8
0x88280B16, // 00D5 GETMBR R10 R5 K22
0x7C240200, // 00D6 CALL R9 1
0x00265E09, // 00D7 ADD R9 K47 R9
0x00241330, // 00D8 ADD R9 R9 K48
0x60280008, // 00D9 GETGBL R10 G8
0x882C0F31, // 00DA GETMBR R11 R7 K49
0x7C280200, // 00DB CALL R10 1
0x0024120A, // 00DC ADD R9 R9 R10
0x58280021, // 00DD LDCONST R10 K33
0x7C200400, // 00DE CALL R8 2
0x8C200132, // 00DF GETMET R8 R0 K50
0x5C280A00, // 00E0 MOVE R10 R5
0x502C0000, // 00E1 LDBOOL R11 0 0
0x7C200600, // 00E2 CALL R8 3
0x50200000, // 00E3 LDBOOL R8 0 0
0xA8040001, // 00E4 EXBLK 1 1
0x80041000, // 00E5 RET 1 R8
0x8C200B33, // 00E6 GETMET R8 R5 K51
0x7C200200, // 00E7 CALL R8 1
0xB8260000, // 00E8 GETNGBL R9 K0
0x88241301, // 00E9 GETMBR R9 R9 K1
0x8C241302, // 00EA GETMET R9 R9 K2
0x582C0034, // 00EB LDCONST R11 K52
0x7C240400, // 00EC CALL R9 2
0x5C241000, // 00ED MOVE R9 R8
0x74260002, // 00EE JMPT R9 #00F2
0x50240000, // 00EF LDBOOL R9 0 0
0xA8040001, // 00F0 EXBLK 1 1
0x80041200, // 00F1 RET 1 R9
0x8C240B1C, // 00F2 GETMET R9 R5 K28
0x7C240200, // 00F3 CALL R9 1
0xB8262E00, // 00F4 GETNGBL R9 K23
0x8C241318, // 00F5 GETMET R9 R9 K24
0x542E0003, // 00F6 LDINT R11 4
0x7C240400, // 00F7 CALL R9 2
0x78260012, // 00F8 JMPF R9 #010C
0xB8260400, // 00F9 GETNGBL R9 K2
0x60280008, // 00FA GETGBL R10 G8
0x882C0B36, // 00FB GETMBR R11 R5 K54
0x7C280200, // 00FC CALL R10 1
0x002A6A0A, // 00FD ADD R10 K53 R10
0x00281537, // 00FE ADD R10 R10 K55
0x602C0008, // 00FF GETGBL R11 G8
0x88300B1E, // 0100 GETMBR R12 R5 K30
0x7C2C0200, // 0101 CALL R11 1
0x0028140B, // 0102 ADD R10 R10 R11
0x00281538, // 0103 ADD R10 R10 K56
0x602C0008, // 0104 GETGBL R11 G8
0x88300B23, // 0105 GETMBR R12 R5 K35
0x5436FFFE, // 0106 LDINT R13 65535
0x2C30180D, // 0107 AND R12 R12 R13
0x7C2C0200, // 0108 CALL R11 1
0x0028140B, // 0109 ADD R10 R10 R11
0x542E0003, // 010A LDINT R11 4
0x7C240400, // 010B CALL R9 2
0x88240107, // 010C GETMBR R9 R0 K7
0x8C24131D, // 010D GETMET R9 R9 K29
0x5C2C0A00, // 010E MOVE R11 R5
0x7C240400, // 010F CALL R9 2
0x88240B36, // 0110 GETMBR R9 R5 K54
0x1C28130E, // 0111 EQ R10 R9 K14
0x782A000F, // 0112 JMPF R10 #0123
0x88280B1E, // 0113 GETMBR R10 R5 K30
0x542E000F, // 0114 LDINT R11 16
0x1C28140B, // 0115 EQ R10 R10 R11
0x782A0009, // 0116 JMPF R10 #0121
0x88280139, // 0117 GETMBR R10 R0 K57
0x8C28153A, // 0118 GETMET R10 R10 K58
0x5C300A00, // 0119 MOVE R12 R5
0x7C280400, // 011A CALL R10 2
0x5C101400, // 011B MOVE R4 R10
0x78120003, // 011C JMPF R4 #0121
0x88280139, // 011D GETMBR R10 R0 K57
0x8C28153B, // 011E GETMET R10 R10 K59
0x5C300000, // 011F MOVE R12 R0
0x7C280400, // 0120 CALL R10 2
0x50100200, // 0121 LDBOOL R4 1 0
0x70020023, // 0122 JMP #0147
0x1C28133C, // 0123 EQ R10 R9 K60
0x782A001A, // 0124 JMPF R10 #0140
0xB82A0000, // 0125 GETNGBL R10 K0
0x88281501, // 0126 GETMBR R10 R10 K1
0x8C281502, // 0127 GETMET R10 R10 K2
0x5830003D, // 0128 LDCONST R12 K61
0x7C280400, // 0129 CALL R10 2
0x88280139, // 012A GETMBR R10 R0 K57
0x8C28152A, // 012B GETMET R10 R10 K42
0x5C300A00, // 012C MOVE R12 R5
0x7C280400, // 012D CALL R10 2
0x5C101400, // 012E MOVE R4 R10
0xB82A0000, // 012F GETNGBL R10 K0
0x88281501, // 0130 GETMBR R10 R10 K1
0x8C281502, // 0131 GETMET R10 R10 K2
0x5830003E, // 0132 LDCONST R12 K62
0x7C280400, // 0133 CALL R10 2
0x78120004, // 0134 JMPF R4 #013A
0x88280139, // 0135 GETMBR R10 R0 K57
0x8C28153B, // 0136 GETMET R10 R10 K59
0x5C300000, // 0137 MOVE R12 R0
0x7C280400, // 0138 CALL R10 2
0x70020003, // 0139 JMP #013E
0x8C280132, // 013A GETMET R10 R0 K50
0x5C300A00, // 013B MOVE R12 R5
0x50340200, // 013C LDBOOL R13 1 0
0x7C280600, // 013D CALL R10 3
0x50100200, // 013E LDBOOL R4 1 0
0x70020006, // 013F JMP #0147
0xB82A0400, // 0140 GETNGBL R10 K2
0x602C0008, // 0141 GETGBL R11 G8
0x5C301200, // 0142 MOVE R12 R9
0x7C2C0200, // 0143 CALL R11 1
0x002E7E0B, // 0144 ADD R11 K63 R11
0x58300021, // 0145 LDCONST R12 K33
0x7C280400, // 0146 CALL R10 2
0x88380B27, // 008A GETMBR R14 R5 K39
0x603C0008, // 008B GETGBL R15 G8
0x88400B28, // 008C GETMBR R16 R5 K40
0x7C3C0200, // 008D CALL R15 1
0x5C400400, // 008E MOVE R16 R2
0x5C440600, // 008F MOVE R17 R3
0x7C241000, // 0090 CALL R9 8
0x542A0003, // 0091 LDINT R10 4
0x7C200400, // 0092 CALL R8 2
0x88200129, // 0093 GETMBR R8 R0 K41
0x8C20112A, // 0094 GETMET R8 R8 K42
0x5C280A00, // 0095 MOVE R10 R5
0x7C200400, // 0096 CALL R8 2
0x5C101000, // 0097 MOVE R4 R8
0x5C200800, // 0098 MOVE R8 R4
0x74220003, // 0099 JMPT R8 #009E
0x8C20011B, // 009A GETMET R8 R0 K27
0x5C280A00, // 009B MOVE R10 R5
0x502C0000, // 009C LDBOOL R11 0 0
0x7C200600, // 009D CALL R8 3
0x50200200, // 009E LDBOOL R8 1 0
0xA8040001, // 009F EXBLK 1 1
0x80041000, // 00A0 RET 1 R8
0x700200A2, // 00A1 JMP #0145
0xB81E2E00, // 00A2 GETNGBL R7 K23
0x8C1C0F18, // 00A3 GETMET R7 R7 K24
0x54260003, // 00A4 LDINT R9 4
0x7C1C0400, // 00A5 CALL R7 2
0x781E0007, // 00A6 JMPF R7 #00AF
0xB81E0400, // 00A7 GETNGBL R7 K2
0x60200018, // 00A8 GETGBL R8 G24
0x5824002B, // 00A9 LDCONST R9 K43
0x88280B0D, // 00AA GETMBR R10 R5 K13
0x882C0B16, // 00AB GETMBR R11 R5 K22
0x7C200600, // 00AC CALL R8 3
0x54260003, // 00AD LDINT R9 4
0x7C1C0400, // 00AE CALL R7 2
0x881C0107, // 00AF GETMBR R7 R0 K7
0x881C0F08, // 00B0 GETMBR R7 R7 K8
0x8C1C0F2C, // 00B1 GETMET R7 R7 K44
0x88240B0D, // 00B2 GETMBR R9 R5 K13
0x7C1C0400, // 00B3 CALL R7 2
0x4C200000, // 00B4 LDNIL R8
0x1C200E08, // 00B5 EQ R8 R7 R8
0x78220009, // 00B6 JMPF R8 #00C1
0xB8220400, // 00B7 GETNGBL R8 K2
0x60240008, // 00B8 GETGBL R9 G8
0x88280B0D, // 00B9 GETMBR R10 R5 K13
0x7C240200, // 00BA CALL R9 1
0x00265A09, // 00BB ADD R9 K45 R9
0x58280021, // 00BC LDCONST R10 K33
0x7C200400, // 00BD CALL R8 2
0x50200000, // 00BE LDBOOL R8 0 0
0xA8040001, // 00BF EXBLK 1 1
0x80041000, // 00C0 RET 1 R8
0x780A0000, // 00C1 JMPF R2 #00C3
0x901E2002, // 00C2 SETMBR R7 K16 R2
0x780E0000, // 00C3 JMPF R3 #00C5
0x901E2203, // 00C4 SETMBR R7 K17 R3
0x901E2400, // 00C5 SETMBR R7 K18 R0
0x90162607, // 00C6 SETMBR R5 K19 R7
0x8C200F2E, // 00C7 GETMET R8 R7 K46
0x88280B16, // 00C8 GETMBR R10 R5 K22
0x502C0200, // 00C9 LDBOOL R11 1 0
0x7C200600, // 00CA CALL R8 3
0x74220017, // 00CB JMPT R8 #00E4
0xB8222E00, // 00CC GETNGBL R8 K23
0x8C201118, // 00CD GETMET R8 R8 K24
0x58280021, // 00CE LDCONST R10 K33
0x7C200400, // 00CF CALL R8 2
0x7822000B, // 00D0 JMPF R8 #00DD
0xB8220400, // 00D1 GETNGBL R8 K2
0x60240008, // 00D2 GETGBL R9 G8
0x88280B16, // 00D3 GETMBR R10 R5 K22
0x7C240200, // 00D4 CALL R9 1
0x00265E09, // 00D5 ADD R9 K47 R9
0x00241330, // 00D6 ADD R9 R9 K48
0x60280008, // 00D7 GETGBL R10 G8
0x882C0F31, // 00D8 GETMBR R11 R7 K49
0x7C280200, // 00D9 CALL R10 1
0x0024120A, // 00DA ADD R9 R9 R10
0x58280021, // 00DB LDCONST R10 K33
0x7C200400, // 00DC CALL R8 2
0x8C200132, // 00DD GETMET R8 R0 K50
0x5C280A00, // 00DE MOVE R10 R5
0x502C0000, // 00DF LDBOOL R11 0 0
0x7C200600, // 00E0 CALL R8 3
0x50200000, // 00E1 LDBOOL R8 0 0
0xA8040001, // 00E2 EXBLK 1 1
0x80041000, // 00E3 RET 1 R8
0x8C200B33, // 00E4 GETMET R8 R5 K51
0x7C200200, // 00E5 CALL R8 1
0xB8260000, // 00E6 GETNGBL R9 K0
0x88241301, // 00E7 GETMBR R9 R9 K1
0x8C241302, // 00E8 GETMET R9 R9 K2
0x582C0034, // 00E9 LDCONST R11 K52
0x7C240400, // 00EA CALL R9 2
0x5C241000, // 00EB MOVE R9 R8
0x74260002, // 00EC JMPT R9 #00F0
0x50240000, // 00ED LDBOOL R9 0 0
0xA8040001, // 00EE EXBLK 1 1
0x80041200, // 00EF RET 1 R9
0x8C240B1C, // 00F0 GETMET R9 R5 K28
0x7C240200, // 00F1 CALL R9 1
0xB8262E00, // 00F2 GETNGBL R9 K23
0x8C241318, // 00F3 GETMET R9 R9 K24
0x542E0003, // 00F4 LDINT R11 4
0x7C240400, // 00F5 CALL R9 2
0x78260012, // 00F6 JMPF R9 #010A
0xB8260400, // 00F7 GETNGBL R9 K2
0x60280008, // 00F8 GETGBL R10 G8
0x882C0B36, // 00F9 GETMBR R11 R5 K54
0x7C280200, // 00FA CALL R10 1
0x002A6A0A, // 00FB ADD R10 K53 R10
0x00281537, // 00FC ADD R10 R10 K55
0x602C0008, // 00FD GETGBL R11 G8
0x88300B1E, // 00FE GETMBR R12 R5 K30
0x7C2C0200, // 00FF CALL R11 1
0x0028140B, // 0100 ADD R10 R10 R11
0x00281538, // 0101 ADD R10 R10 K56
0x602C0008, // 0102 GETGBL R11 G8
0x88300B27, // 0103 GETMBR R12 R5 K39
0x5436FFFE, // 0104 LDINT R13 65535
0x2C30180D, // 0105 AND R12 R12 R13
0x7C2C0200, // 0106 CALL R11 1
0x0028140B, // 0107 ADD R10 R10 R11
0x542E0003, // 0108 LDINT R11 4
0x7C240400, // 0109 CALL R9 2
0x88240107, // 010A GETMBR R9 R0 K7
0x8C24131D, // 010B GETMET R9 R9 K29
0x5C2C0A00, // 010C MOVE R11 R5
0x7C240400, // 010D CALL R9 2
0x88240B36, // 010E GETMBR R9 R5 K54
0x1C28130E, // 010F EQ R10 R9 K14
0x782A000F, // 0110 JMPF R10 #0121
0x88280B1E, // 0111 GETMBR R10 R5 K30
0x542E000F, // 0112 LDINT R11 16
0x1C28140B, // 0113 EQ R10 R10 R11
0x782A0009, // 0114 JMPF R10 #011F
0x88280139, // 0115 GETMBR R10 R0 K57
0x8C28153A, // 0116 GETMET R10 R10 K58
0x5C300A00, // 0117 MOVE R12 R5
0x7C280400, // 0118 CALL R10 2
0x5C101400, // 0119 MOVE R4 R10
0x78120003, // 011A JMPF R4 #011F
0x88280139, // 011B GETMBR R10 R0 K57
0x8C28153B, // 011C GETMET R10 R10 K59
0x5C300000, // 011D MOVE R12 R0
0x7C280400, // 011E CALL R10 2
0x50100200, // 011F LDBOOL R4 1 0
0x70020023, // 0120 JMP #0145
0x1C28133C, // 0121 EQ R10 R9 K60
0x782A001A, // 0122 JMPF R10 #013E
0xB82A0000, // 0123 GETNGBL R10 K0
0x88281501, // 0124 GETMBR R10 R10 K1
0x8C281502, // 0125 GETMET R10 R10 K2
0x5830003D, // 0126 LDCONST R12 K61
0x7C280400, // 0127 CALL R10 2
0x88280139, // 0128 GETMBR R10 R0 K57
0x8C28152A, // 0129 GETMET R10 R10 K42
0x5C300A00, // 012A MOVE R12 R5
0x7C280400, // 012B CALL R10 2
0x5C101400, // 012C MOVE R4 R10
0xB82A0000, // 012D GETNGBL R10 K0
0x88281501, // 012E GETMBR R10 R10 K1
0x8C281502, // 012F GETMET R10 R10 K2
0x5830003E, // 0130 LDCONST R12 K62
0x7C280400, // 0131 CALL R10 2
0x78120004, // 0132 JMPF R4 #0138
0x88280139, // 0133 GETMBR R10 R0 K57
0x8C28153B, // 0134 GETMET R10 R10 K59
0x5C300000, // 0135 MOVE R12 R0
0x7C280400, // 0136 CALL R10 2
0x70020003, // 0137 JMP #013C
0x8C280132, // 0138 GETMET R10 R0 K50
0x5C300A00, // 0139 MOVE R12 R5
0x50340200, // 013A LDBOOL R13 1 0
0x7C280600, // 013B CALL R10 3
0x50100200, // 013C LDBOOL R4 1 0
0x70020006, // 013D JMP #0145
0xB82A0400, // 013E GETNGBL R10 K2
0x602C0008, // 013F GETGBL R11 G8
0x5C301200, // 0140 MOVE R12 R9
0x7C2C0200, // 0141 CALL R11 1
0x002E7E0B, // 0142 ADD R11 K63 R11
0x58300021, // 0143 LDCONST R12 K33
0x7C280400, // 0144 CALL R10 2
0xA8040001, // 0145 EXBLK 1 1
0x80040800, // 0146 RET 1 R4
0xA8040001, // 0147 EXBLK 1 1
0x80040800, // 0148 RET 1 R4
0xA8040001, // 0149 EXBLK 1 1
0x70020017, // 014A JMP #0163
0xAC140002, // 014B CATCH R5 0 2
0x70020014, // 014C JMP #0162
0xB81E0400, // 014D GETNGBL R7 K2
0x60200008, // 014E GETGBL R8 G8
0x5C240A00, // 014F MOVE R9 R5
0x7C200200, // 0150 CALL R8 1
0x00228008, // 0151 ADD R8 K64 R8
0x00201141, // 0152 ADD R8 R8 K65
0x60240008, // 0153 GETGBL R9 G8
0x5C280C00, // 0154 MOVE R10 R6
0x7C240200, // 0155 CALL R9 1
0x00201009, // 0156 ADD R8 R8 R9
0x58240042, // 0157 LDCONST R9 K66
0x7C1C0400, // 0158 CALL R7 2
0xB81E2E00, // 0159 GETNGBL R7 K23
0x881C0F43, // 015A GETMBR R7 R7 K67
0x781E0002, // 015B JMPF R7 #015F
0xA41E8800, // 015C IMPORT R7 K68
0x8C200F45, // 015D GETMET R8 R7 K69
0x7C200200, // 015E CALL R8 1
0x501C0000, // 015F LDBOOL R7 0 0
0x80040E00, // 0160 RET 1 R7
0x70020000, // 0161 JMP #0163
0xB0080000, // 0162 RAISE 2 R0 R0
0x80000000, // 0163 RET 0
0x70020017, // 0148 JMP #0161
0xAC140002, // 0149 CATCH R5 0 2
0x70020014, // 014A JMP #0160
0xB81E0400, // 014B GETNGBL R7 K2
0x60200008, // 014C GETGBL R8 G8
0x5C240A00, // 014D MOVE R9 R5
0x7C200200, // 014E CALL R8 1
0x00228008, // 014F ADD R8 K64 R8
0x00201141, // 0150 ADD R8 R8 K65
0x60240008, // 0151 GETGBL R9 G8
0x5C280C00, // 0152 MOVE R10 R6
0x7C240200, // 0153 CALL R9 1
0x00201009, // 0154 ADD R8 R8 R9
0x58240042, // 0155 LDCONST R9 K66
0x7C1C0400, // 0156 CALL R7 2
0xB81E2E00, // 0157 GETNGBL R7 K23
0x881C0F43, // 0158 GETMBR R7 R7 K67
0x781E0002, // 0159 JMPF R7 #015D
0xA41E8800, // 015A IMPORT R7 K68
0x8C200F45, // 015B GETMET R8 R7 K69
0x7C200200, // 015C CALL R8 1
0x501C0000, // 015D LDBOOL R7 0 0
0x80040E00, // 015E RET 1 R7
0x70020000, // 015F JMP #0161
0xB0080000, // 0160 RAISE 2 R0 R0
0x80000000, // 0161 RET 0
})
)
);
@ -642,13 +640,13 @@ be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */
( &(const bvalue[14]) { /* constants */
/* K0 */ be_nested_str_weak(x_flag_r),
/* K1 */ be_nested_str_weak(build_standalone_ack),
/* K2 */ be_nested_str_weak(encode_frame),
/* K3 */ be_nested_str_weak(tasmota),
/* K4 */ be_nested_str_weak(loglevel),
/* K5 */ be_nested_str_weak(log),
/* K6 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s),
/* K7 */ be_nested_str_weak(session),
/* K8 */ be_nested_str_weak(local_session_id),
/* K2 */ be_nested_str_weak(local_session_id),
/* K3 */ be_nested_str_weak(encode_frame),
/* K4 */ be_nested_str_weak(tasmota),
/* K5 */ be_nested_str_weak(loglevel),
/* K6 */ be_nested_str_weak(log),
/* K7 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s),
/* K8 */ be_nested_str_weak(session),
/* K9 */ be_nested_str_weak(ack_message_counter),
/* K10 */ be_nested_str_weak(message_counter),
/* K11 */ be_nested_str_weak(_X7Breliable_X7D),
@ -657,37 +655,39 @@ be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */
}),
be_str_weak(send_simple_ack),
&be_const_str_solidified,
( &(const binstruction[30]) { /* code */
( &(const binstruction[32]) { /* code */
0x880C0300, // 0000 GETMBR R3 R1 K0
0x780E001A, // 0001 JMPF R3 #001D
0x780E001C, // 0001 JMPF R3 #001F
0x8C0C0301, // 0002 GETMET R3 R1 K1
0x5C140400, // 0003 MOVE R5 R2
0x7C0C0400, // 0004 CALL R3 2
0x8C100702, // 0005 GETMET R4 R3 K2
0x7C100200, // 0006 CALL R4 1
0xB8120600, // 0007 GETNGBL R4 K3
0x8C100904, // 0008 GETMET R4 R4 K4
0x541A0003, // 0009 LDINT R6 4
0x7C100400, // 000A CALL R4 2
0x7812000D, // 000B JMPF R4 #001A
0xB8120A00, // 000C GETNGBL R4 K5
0x60140018, // 000D GETGBL R5 G24
0x58180006, // 000E LDCONST R6 K6
0x881C0707, // 000F GETMBR R7 R3 K7
0x881C0F08, // 0010 GETMBR R7 R7 K8
0x88200709, // 0011 GETMBR R8 R3 K9
0x8824070A, // 0012 GETMBR R9 R3 K10
0x780A0001, // 0013 JMPF R2 #0016
0x5828000B, // 0014 LDCONST R10 K11
0x70020000, // 0015 JMP #0017
0x5828000C, // 0016 LDCONST R10 K12
0x7C140A00, // 0017 CALL R5 5
0x541A0003, // 0018 LDINT R6 4
0x7C100400, // 0019 CALL R4 2
0x8C10010D, // 001A GETMET R4 R0 K13
0x5C180600, // 001B MOVE R6 R3
0x7C100400, // 001C CALL R4 2
0x80000000, // 001D RET 0
0x88100302, // 0005 GETMBR R4 R1 K2
0x900E0404, // 0006 SETMBR R3 K2 R4
0x8C100703, // 0007 GETMET R4 R3 K3
0x7C100200, // 0008 CALL R4 1
0xB8120800, // 0009 GETNGBL R4 K4
0x8C100905, // 000A GETMET R4 R4 K5
0x541A0003, // 000B LDINT R6 4
0x7C100400, // 000C CALL R4 2
0x7812000D, // 000D JMPF R4 #001C
0xB8120C00, // 000E GETNGBL R4 K6
0x60140018, // 000F GETGBL R5 G24
0x58180007, // 0010 LDCONST R6 K7
0x881C0708, // 0011 GETMBR R7 R3 K8
0x881C0F02, // 0012 GETMBR R7 R7 K2
0x88200709, // 0013 GETMBR R8 R3 K9
0x8824070A, // 0014 GETMBR R9 R3 K10
0x780A0001, // 0015 JMPF R2 #0018
0x5828000B, // 0016 LDCONST R10 K11
0x70020000, // 0017 JMP #0019
0x5828000C, // 0018 LDCONST R10 K12
0x7C140A00, // 0019 CALL R5 5
0x541A0003, // 001A LDINT R6 4
0x7C100400, // 001B CALL R4 2
0x8C10010D, // 001C GETMET R4 R0 K13
0x5C180600, // 001D MOVE R6 R3
0x7C100400, // 001E CALL R4 2
0x80000000, // 001F RET 0
})
)
);