mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-23 18:56:38 +00:00
Matter automatically exposes all detected Temperature sensors (#18430)
* Matter automatically exposes all detected Temperature sensors * Read sensors every 30 seconds * Fix sensor numbering
This commit is contained in:
parent
de45a7af26
commit
82e94108d4
@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
- Matter support in now stabilized for Apple and Google (not tested with Alexa)
|
- Matter support in now stabilized for Apple and Google (not tested with Alexa)
|
||||||
- Berry `instrospect.name()` to get names of functions, modules and classes (#18422)
|
- Berry `instrospect.name()` to get names of functions, modules and classes (#18422)
|
||||||
- Berry add `searchall()` and `matchall()` to `re` module and pre-compiled patterns
|
- Berry add `searchall()` and `matchall()` to `re` module and pre-compiled patterns
|
||||||
|
- Matter automatically exposes all detected Temperature sensors
|
||||||
|
|
||||||
### Breaking Changed
|
### Breaking Changed
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ class Matter_Commisioning_Context
|
|||||||
if msg.opcode != 0x20 || msg.local_session_id != 0 || msg.protocol_id != 0
|
if msg.opcode != 0x20 || msg.local_session_id != 0 || msg.protocol_id != 0
|
||||||
tasmota.log("MTR: invalid PBKDFParamRequest message", 2)
|
tasmota.log("MTR: invalid PBKDFParamRequest message", 2)
|
||||||
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
||||||
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
var pbkdfparamreq = matter.PBKDFParamRequest().parse(msg.raw, msg.app_payload_idx)
|
var pbkdfparamreq = matter.PBKDFParamRequest().parse(msg.raw, msg.app_payload_idx)
|
||||||
@ -126,7 +126,7 @@ class Matter_Commisioning_Context
|
|||||||
if pbkdfparamreq.passcodeId != 0
|
if pbkdfparamreq.passcodeId != 0
|
||||||
tasmota.log("MTR: non-zero passcode id", 2)
|
tasmota.log("MTR: non-zero passcode id", 2)
|
||||||
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
||||||
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -164,7 +164,7 @@ class Matter_Commisioning_Context
|
|||||||
if msg.opcode != 0x22 || msg.local_session_id != 0 || msg.protocol_id != 0
|
if msg.opcode != 0x22 || msg.local_session_id != 0 || msg.protocol_id != 0
|
||||||
tasmota.log("MTR: invalid Pake1 message", 2)
|
tasmota.log("MTR: invalid Pake1 message", 2)
|
||||||
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
||||||
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
var pake1 = matter.Pake1().parse(msg.raw, msg.app_payload_idx)
|
var pake1 = matter.Pake1().parse(msg.raw, msg.app_payload_idx)
|
||||||
@ -247,7 +247,7 @@ class Matter_Commisioning_Context
|
|||||||
if msg.opcode != 0x24 || msg.local_session_id != 0 || msg.protocol_id != 0
|
if msg.opcode != 0x24 || msg.local_session_id != 0 || msg.protocol_id != 0
|
||||||
tasmota.log("MTR: invalid Pake3 message", 2)
|
tasmota.log("MTR: invalid Pake3 message", 2)
|
||||||
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
||||||
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
var pake3 = matter.Pake3().parse(msg.raw, msg.app_payload_idx)
|
var pake3 = matter.Pake3().parse(msg.raw, msg.app_payload_idx)
|
||||||
@ -259,7 +259,7 @@ class Matter_Commisioning_Context
|
|||||||
if cA != session.__spake_cA
|
if cA != session.__spake_cA
|
||||||
tasmota.log("MTR: invalid cA received", 2)
|
tasmota.log("MTR: invalid cA received", 2)
|
||||||
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
||||||
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -278,7 +278,7 @@ class Matter_Commisioning_Context
|
|||||||
# tasmota.log("MTR: ******************************", 4)
|
# tasmota.log("MTR: ******************************", 4)
|
||||||
|
|
||||||
# StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS)
|
# StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS)
|
||||||
var raw = self.send_status_report(msg, 0x00, 0x0000, 0x0000, false)
|
self.send_status_report(msg, 0x00, 0x0000, 0x0000, false)
|
||||||
|
|
||||||
self.add_session(session.__future_local_session_id, session.__future_initiator_session_id, I2RKey, R2IKey, AttestationChallenge, created)
|
self.add_session(session.__future_local_session_id, session.__future_initiator_session_id, I2RKey, R2IKey, AttestationChallenge, created)
|
||||||
return true
|
return true
|
||||||
@ -315,7 +315,7 @@ class Matter_Commisioning_Context
|
|||||||
if msg.opcode != 0x30 || msg.local_session_id != 0 || msg.protocol_id != 0
|
if msg.opcode != 0x30 || msg.local_session_id != 0 || msg.protocol_id != 0
|
||||||
# tasmota.log("MTR: invalid Sigma1 message", 2)
|
# tasmota.log("MTR: invalid Sigma1 message", 2)
|
||||||
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
||||||
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
var sigma1 = matter.Sigma1().parse(msg.raw, msg.app_payload_idx)
|
var sigma1 = matter.Sigma1().parse(msg.raw, msg.app_payload_idx)
|
||||||
@ -445,7 +445,7 @@ class Matter_Commisioning_Context
|
|||||||
|
|
||||||
if session == nil || session._fabric == nil
|
if session == nil || session._fabric == nil
|
||||||
tasmota.log("MTR: StatusReport(GeneralCode: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: NO_SHARED_TRUST_ROOTS)", 2)
|
tasmota.log("MTR: StatusReport(GeneralCode: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: NO_SHARED_TRUST_ROOTS)", 2)
|
||||||
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0001, false)
|
self.send_status_report(msg, 0x01, 0x0000, 0x0001, false)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
session._source_node_id = msg.source_node_id
|
session._source_node_id = msg.source_node_id
|
||||||
@ -539,7 +539,7 @@ class Matter_Commisioning_Context
|
|||||||
# sanity checks
|
# sanity checks
|
||||||
if msg.opcode != 0x32 || msg.local_session_id != 0 || msg.protocol_id != 0
|
if msg.opcode != 0x32 || msg.local_session_id != 0 || msg.protocol_id != 0
|
||||||
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
||||||
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
var session = msg.session
|
var session = msg.session
|
||||||
@ -576,7 +576,7 @@ class Matter_Commisioning_Context
|
|||||||
if TBETag3 != tag
|
if TBETag3 != tag
|
||||||
tasmota.log("MTR: Tag don't match", 2)
|
tasmota.log("MTR: Tag don't match", 2)
|
||||||
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
||||||
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -618,7 +618,7 @@ class Matter_Commisioning_Context
|
|||||||
tasmota.log("MTR: sigma3_tbs does not have a valid signature", 2)
|
tasmota.log("MTR: sigma3_tbs does not have a valid signature", 2)
|
||||||
tasmota.log("MTR: ******************* Invalid signature, trying anyways", 2)
|
tasmota.log("MTR: ******************* Invalid signature, trying anyways", 2)
|
||||||
# tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
# tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
|
||||||
# var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
# self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
|
||||||
# return false
|
# return false
|
||||||
else
|
else
|
||||||
# All good, compute new keys
|
# All good, compute new keys
|
||||||
@ -654,7 +654,7 @@ class Matter_Commisioning_Context
|
|||||||
tasmota.log("MTR: ******************************", 4)
|
tasmota.log("MTR: ******************************", 4)
|
||||||
|
|
||||||
# StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS)
|
# StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS)
|
||||||
var raw = self.send_status_report(msg, 0x00, 0x0000, 0x0000, true)
|
self.send_status_report(msg, 0x00, 0x0000, 0x0000, true)
|
||||||
|
|
||||||
session.close()
|
session.close()
|
||||||
session.set_keys(i2r, r2i, ac, created)
|
session.set_keys(i2r, r2i, ac, created)
|
||||||
|
@ -116,8 +116,8 @@ class Matter_Device
|
|||||||
# autoconfigure other plugins
|
# autoconfigure other plugins
|
||||||
self.autoconf_device()
|
self.autoconf_device()
|
||||||
|
|
||||||
# for now read sensors every 5 seconds
|
# for now read sensors every 30 seconds
|
||||||
tasmota.add_cron("*/5 * * * * *", def () self._trigger_read_sensors() end, "matter_sensors_5s")
|
tasmota.add_cron("*/30 * * * * *", def () self._trigger_read_sensors() end, "matter_sensors_30s")
|
||||||
|
|
||||||
self._start_udp(self.UDP_PORT)
|
self._start_udp(self.UDP_PORT)
|
||||||
|
|
||||||
@ -908,6 +908,7 @@ class Matter_Device
|
|||||||
#
|
#
|
||||||
def autoconf_device()
|
def autoconf_device()
|
||||||
import string
|
import string
|
||||||
|
import json
|
||||||
# check if we have a light
|
# check if we have a light
|
||||||
var endpoint = 1
|
var endpoint = 1
|
||||||
var light_present = false
|
var light_present = false
|
||||||
@ -944,7 +945,33 @@ class Matter_Device
|
|||||||
endpoint += 1
|
endpoint += 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# auto-detect sensors
|
||||||
|
var sensors = json.load(tasmota.read_sensors())
|
||||||
|
|
||||||
|
# temperature sensors
|
||||||
|
# they are starting at endpoint `32..39` (8 max)
|
||||||
|
endpoint = 0x20
|
||||||
|
for k1:self.k2l(sensors)
|
||||||
|
var sensor_2 = sensors[k1]
|
||||||
|
if isinstance(sensor_2, map) && sensor_2.contains("Temperature")
|
||||||
|
var temp_rule = k1 + "#Temperature"
|
||||||
|
self.plugins.push(matter.Plugin_Temp_Sensor(self, endpoint, temp_rule))
|
||||||
|
tasmota.log(string.format("MTR: Endpoint:%i Temperature (%s)", endpoint, temp_rule), 2)
|
||||||
|
endpoint += 1
|
||||||
end
|
end
|
||||||
|
if endpoint > 0x28 break end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
# get keys of a map in sorted order
|
||||||
|
static def k2l(m) var l=[] if m==nil return l end for k:m.keys() l.push(k) end
|
||||||
|
for i:1..size(l)-1 var k = l[i] var j = i while (j > 0) && (l[j-1] > k) l[j] = l[j-1] j -= 1 end l[j] = k end return l
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# keys to llist
|
||||||
|
|
||||||
end
|
end
|
||||||
matter.Device = Matter_Device
|
matter.Device = Matter_Device
|
||||||
|
|
||||||
|
@ -445,10 +445,10 @@ class Matter_IM_SubscribeResponse : Matter_IM_ReportData
|
|||||||
|
|
||||||
# Status ok received
|
# Status ok received
|
||||||
def status_ok_received(msg)
|
def status_ok_received(msg)
|
||||||
# import string
|
import string
|
||||||
# tasmota.log(string.format("MTR: IM_SubscribeResponse status_ok_received sub=%i exch=%i ack=%i last_counter=%i", self.sub.subscription_id, self.resp.exchange_id, msg.ack_message_counter ? msg.ack_message_counter : 0 , self.last_counter), 3)
|
# tasmota.log(string.format("MTR: IM_SubscribeResponse status_ok_received sub=%i exch=%i ack=%i last_counter=%i", self.sub.subscription_id, self.resp.exchange_id, msg.ack_message_counter ? msg.ack_message_counter : 0 , self.last_counter), 3)
|
||||||
# once we receive ack, open flow for subscriptions
|
# once we receive ack, open flow for subscriptions
|
||||||
# tasmota.log(string.format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 2)
|
tasmota.log(string.format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 2)
|
||||||
return super(self).status_ok_received(msg)
|
return super(self).status_ok_received(msg)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -352,8 +352,8 @@ be_local_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest, /* name
|
|||||||
0x5828000A, // 001B LDCONST R10 K10
|
0x5828000A, // 001B LDCONST R10 K10
|
||||||
0x502C0000, // 001C LDBOOL R11 0 0
|
0x502C0000, // 001C LDBOOL R11 0 0
|
||||||
0x7C140C00, // 001D CALL R5 6
|
0x7C140C00, // 001D CALL R5 6
|
||||||
0x50180000, // 001E LDBOOL R6 0 0
|
0x50140000, // 001E LDBOOL R5 0 0
|
||||||
0x80040C00, // 001F RET 1 R6
|
0x80040A00, // 001F RET 1 R5
|
||||||
0xB8161C00, // 0020 GETNGBL R5 K14
|
0xB8161C00, // 0020 GETNGBL R5 K14
|
||||||
0x8C140B0F, // 0021 GETMET R5 R5 K15
|
0x8C140B0F, // 0021 GETMET R5 R5 K15
|
||||||
0x7C140200, // 0022 CALL R5 1
|
0x7C140200, // 0022 CALL R5 1
|
||||||
@ -389,8 +389,8 @@ be_local_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest, /* name
|
|||||||
0x582C000A, // 0040 LDCONST R11 K10
|
0x582C000A, // 0040 LDCONST R11 K10
|
||||||
0x50300000, // 0041 LDBOOL R12 0 0
|
0x50300000, // 0041 LDBOOL R12 0 0
|
||||||
0x7C180C00, // 0042 CALL R6 6
|
0x7C180C00, // 0042 CALL R6 6
|
||||||
0x501C0000, // 0043 LDBOOL R7 0 0
|
0x50180000, // 0043 LDBOOL R6 0 0
|
||||||
0x80040E00, // 0044 RET 1 R7
|
0x80040C00, // 0044 RET 1 R6
|
||||||
0x88180B19, // 0045 GETMBR R6 R5 K25
|
0x88180B19, // 0045 GETMBR R6 R5 K25
|
||||||
0x90123006, // 0046 SETMBR R4 K24 R6
|
0x90123006, // 0046 SETMBR R4 K24 R6
|
||||||
0x8818011B, // 0047 GETMBR R6 R0 K27
|
0x8818011B, // 0047 GETMBR R6 R0 K27
|
||||||
@ -597,8 +597,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake1, /* name */
|
|||||||
0x58240009, // 001A LDCONST R9 K9
|
0x58240009, // 001A LDCONST R9 K9
|
||||||
0x50280000, // 001B LDBOOL R10 0 0
|
0x50280000, // 001B LDBOOL R10 0 0
|
||||||
0x7C100C00, // 001C CALL R4 6
|
0x7C100C00, // 001C CALL R4 6
|
||||||
0x50140000, // 001D LDBOOL R5 0 0
|
0x50100000, // 001D LDBOOL R4 0 0
|
||||||
0x80040A00, // 001E RET 1 R5
|
0x80040800, // 001E RET 1 R4
|
||||||
0xB8121A00, // 001F GETNGBL R4 K13
|
0xB8121A00, // 001F GETNGBL R4 K13
|
||||||
0x8C10090E, // 0020 GETMET R4 R4 K14
|
0x8C10090E, // 0020 GETMET R4 R4 K14
|
||||||
0x7C100200, // 0021 CALL R4 1
|
0x7C100200, // 0021 CALL R4 1
|
||||||
@ -716,7 +716,7 @@ be_local_closure(Matter_Commisioning_Context_init, /* name */
|
|||||||
********************************************************************/
|
********************************************************************/
|
||||||
be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
|
be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
|
||||||
be_nested_proto(
|
be_nested_proto(
|
||||||
20, /* nstack */
|
19, /* nstack */
|
||||||
2, /* argc */
|
2, /* argc */
|
||||||
2, /* varg */
|
2, /* varg */
|
||||||
0, /* has upvals */
|
0, /* has upvals */
|
||||||
@ -789,8 +789,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
|
|||||||
0x58240009, // 001A LDCONST R9 K9
|
0x58240009, // 001A LDCONST R9 K9
|
||||||
0x50280000, // 001B LDBOOL R10 0 0
|
0x50280000, // 001B LDBOOL R10 0 0
|
||||||
0x7C100C00, // 001C CALL R4 6
|
0x7C100C00, // 001C CALL R4 6
|
||||||
0x50140000, // 001D LDBOOL R5 0 0
|
0x50100000, // 001D LDBOOL R4 0 0
|
||||||
0x80040A00, // 001E RET 1 R5
|
0x80040800, // 001E RET 1 R4
|
||||||
0xB8121A00, // 001F GETNGBL R4 K13
|
0xB8121A00, // 001F GETNGBL R4 K13
|
||||||
0x8C10090E, // 0020 GETMET R4 R4 K14
|
0x8C10090E, // 0020 GETMET R4 R4 K14
|
||||||
0x7C100200, // 0021 CALL R4 1
|
0x7C100200, // 0021 CALL R4 1
|
||||||
@ -819,8 +819,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
|
|||||||
0x582C0009, // 0038 LDCONST R11 K9
|
0x582C0009, // 0038 LDCONST R11 K9
|
||||||
0x50300000, // 0039 LDBOOL R12 0 0
|
0x50300000, // 0039 LDBOOL R12 0 0
|
||||||
0x7C180C00, // 003A CALL R6 6
|
0x7C180C00, // 003A CALL R6 6
|
||||||
0x501C0000, // 003B LDBOOL R7 0 0
|
0x50180000, // 003B LDBOOL R6 0 0
|
||||||
0x80040E00, // 003C RET 1 R7
|
0x80040C00, // 003C RET 1 R6
|
||||||
0xB81A0C00, // 003D GETNGBL R6 K6
|
0xB81A0C00, // 003D GETNGBL R6 K6
|
||||||
0x8C180D15, // 003E GETMET R6 R6 K21
|
0x8C180D15, // 003E GETMET R6 R6 K21
|
||||||
0x7C180200, // 003F CALL R6 1
|
0x7C180200, // 003F CALL R6 1
|
||||||
@ -856,16 +856,16 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
|
|||||||
0x58400004, // 005D LDCONST R16 K4
|
0x58400004, // 005D LDCONST R16 K4
|
||||||
0x50440000, // 005E LDBOOL R17 0 0
|
0x50440000, // 005E LDBOOL R17 0 0
|
||||||
0x7C2C0C00, // 005F CALL R11 6
|
0x7C2C0C00, // 005F CALL R11 6
|
||||||
0x8C30011C, // 0060 GETMET R12 R0 K28
|
0x8C2C011C, // 0060 GETMET R11 R0 K28
|
||||||
0x8838071D, // 0061 GETMBR R14 R3 K29
|
0x8834071D, // 0061 GETMBR R13 R3 K29
|
||||||
0x883C071E, // 0062 GETMBR R15 R3 K30
|
0x8838071E, // 0062 GETMBR R14 R3 K30
|
||||||
0x5C401000, // 0063 MOVE R16 R8
|
0x5C3C1000, // 0063 MOVE R15 R8
|
||||||
0x5C441200, // 0064 MOVE R17 R9
|
0x5C401200, // 0064 MOVE R16 R9
|
||||||
0x5C481400, // 0065 MOVE R18 R10
|
0x5C441400, // 0065 MOVE R17 R10
|
||||||
0x5C4C0C00, // 0066 MOVE R19 R6
|
0x5C480C00, // 0066 MOVE R18 R6
|
||||||
0x7C300E00, // 0067 CALL R12 7
|
0x7C2C0E00, // 0067 CALL R11 7
|
||||||
0x50300200, // 0068 LDBOOL R12 1 0
|
0x502C0200, // 0068 LDBOOL R11 1 0
|
||||||
0x80041800, // 0069 RET 1 R12
|
0x80041600, // 0069 RET 1 R11
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -1014,8 +1014,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
|
|||||||
0x58200008, // 0014 LDCONST R8 K8
|
0x58200008, // 0014 LDCONST R8 K8
|
||||||
0x50240000, // 0015 LDBOOL R9 0 0
|
0x50240000, // 0015 LDBOOL R9 0 0
|
||||||
0x7C0C0C00, // 0016 CALL R3 6
|
0x7C0C0C00, // 0016 CALL R3 6
|
||||||
0x50100000, // 0017 LDBOOL R4 0 0
|
0x500C0000, // 0017 LDBOOL R3 0 0
|
||||||
0x80040800, // 0018 RET 1 R4
|
0x80040600, // 0018 RET 1 R3
|
||||||
0x880C030B, // 0019 GETMBR R3 R1 K11
|
0x880C030B, // 0019 GETMBR R3 R1 K11
|
||||||
0xB8121800, // 001A GETNGBL R4 K12
|
0xB8121800, // 001A GETNGBL R4 K12
|
||||||
0x8C10090D, // 001B GETMET R4 R4 K13
|
0x8C10090D, // 001B GETMET R4 R4 K13
|
||||||
@ -1197,8 +1197,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
|
|||||||
0x58480008, // 00CB LDCONST R18 K8
|
0x58480008, // 00CB LDCONST R18 K8
|
||||||
0x504C0000, // 00CC LDBOOL R19 0 0
|
0x504C0000, // 00CC LDBOOL R19 0 0
|
||||||
0x7C340C00, // 00CD CALL R13 6
|
0x7C340C00, // 00CD CALL R13 6
|
||||||
0x50380000, // 00CE LDBOOL R14 0 0
|
0x50340000, // 00CE LDBOOL R13 0 0
|
||||||
0x80041C00, // 00CF RET 1 R14
|
0x80041A00, // 00CF RET 1 R13
|
||||||
0xB8361800, // 00D0 GETNGBL R13 K12
|
0xB8361800, // 00D0 GETNGBL R13 K12
|
||||||
0x88341B31, // 00D1 GETMBR R13 R13 K49
|
0x88341B31, // 00D1 GETMBR R13 R13 K49
|
||||||
0x8C341B0E, // 00D2 GETMET R13 R13 K14
|
0x8C341B0E, // 00D2 GETMET R13 R13 K14
|
||||||
@ -1523,28 +1523,28 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
|
|||||||
0x58880003, // 0211 LDCONST R34 K3
|
0x58880003, // 0211 LDCONST R34 K3
|
||||||
0x508C0200, // 0212 LDBOOL R35 1 0
|
0x508C0200, // 0212 LDBOOL R35 1 0
|
||||||
0x7C740C00, // 0213 CALL R29 6
|
0x7C740C00, // 0213 CALL R29 6
|
||||||
0x8C78075D, // 0214 GETMET R30 R3 K93
|
0x8C74075D, // 0214 GETMET R29 R3 K93
|
||||||
0x7C780200, // 0215 CALL R30 1
|
0x7C740200, // 0215 CALL R29 1
|
||||||
0x8C78075E, // 0216 GETMET R30 R3 K94
|
0x8C74075E, // 0216 GETMET R29 R3 K94
|
||||||
0x5C803200, // 0217 MOVE R32 R25
|
0x5C7C3200, // 0217 MOVE R31 R25
|
||||||
0x5C843400, // 0218 MOVE R33 R26
|
0x5C803400, // 0218 MOVE R32 R26
|
||||||
0x5C883600, // 0219 MOVE R34 R27
|
0x5C843600, // 0219 MOVE R33 R27
|
||||||
0x5C8C3800, // 021A MOVE R35 R28
|
0x5C883800, // 021A MOVE R34 R28
|
||||||
0x7C780A00, // 021B CALL R30 5
|
0x7C740A00, // 021B CALL R29 5
|
||||||
0x900EBF03, // 021C SETMBR R3 K95 K3
|
0x900EBF03, // 021C SETMBR R3 K95 K3
|
||||||
0x8C780760, // 021D GETMET R30 R3 K96
|
0x8C740760, // 021D GETMET R29 R3 K96
|
||||||
0x7C780200, // 021E CALL R30 1
|
0x7C740200, // 021E CALL R29 1
|
||||||
0x8C780761, // 021F GETMET R30 R3 K97
|
0x8C740761, // 021F GETMET R29 R3 K97
|
||||||
0x50800200, // 0220 LDBOOL R32 1 0
|
0x507C0200, // 0220 LDBOOL R31 1 0
|
||||||
0x7C780400, // 0221 CALL R30 2
|
0x7C740400, // 0221 CALL R29 2
|
||||||
0x8C780762, // 0222 GETMET R30 R3 K98
|
0x8C740762, // 0222 GETMET R29 R3 K98
|
||||||
0x7C780200, // 0223 CALL R30 1
|
0x7C740200, // 0223 CALL R29 1
|
||||||
0x8C780763, // 0224 GETMET R30 R3 K99
|
0x8C740763, // 0224 GETMET R29 R3 K99
|
||||||
0x7C780200, // 0225 CALL R30 1
|
0x7C740200, // 0225 CALL R29 1
|
||||||
0x8C780764, // 0226 GETMET R30 R3 K100
|
0x8C740764, // 0226 GETMET R29 R3 K100
|
||||||
0x7C780200, // 0227 CALL R30 1
|
0x7C740200, // 0227 CALL R29 1
|
||||||
0x50780200, // 0228 LDBOOL R30 1 0
|
0x50740200, // 0228 LDBOOL R29 1 0
|
||||||
0x80043C00, // 0229 RET 1 R30
|
0x80043A00, // 0229 RET 1 R29
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -1882,8 +1882,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
|
|||||||
0x5828000A, // 0016 LDCONST R10 K10
|
0x5828000A, // 0016 LDCONST R10 K10
|
||||||
0x502C0000, // 0017 LDBOOL R11 0 0
|
0x502C0000, // 0017 LDBOOL R11 0 0
|
||||||
0x7C140C00, // 0018 CALL R5 6
|
0x7C140C00, // 0018 CALL R5 6
|
||||||
0x50180000, // 0019 LDBOOL R6 0 0
|
0x50140000, // 0019 LDBOOL R5 0 0
|
||||||
0x80040C00, // 001A RET 1 R6
|
0x80040A00, // 001A RET 1 R5
|
||||||
0xB8161A00, // 001B GETNGBL R5 K13
|
0xB8161A00, // 001B GETNGBL R5 K13
|
||||||
0x8C140B0E, // 001C GETMET R5 R5 K14
|
0x8C140B0E, // 001C GETMET R5 R5 K14
|
||||||
0x7C140200, // 001D CALL R5 1
|
0x7C140200, // 001D CALL R5 1
|
||||||
@ -2299,8 +2299,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
|
|||||||
0x5838000C, // 01B7 LDCONST R14 K12
|
0x5838000C, // 01B7 LDCONST R14 K12
|
||||||
0x503C0000, // 01B8 LDBOOL R15 0 0
|
0x503C0000, // 01B8 LDBOOL R15 0 0
|
||||||
0x7C240C00, // 01B9 CALL R9 6
|
0x7C240C00, // 01B9 CALL R9 6
|
||||||
0x50280000, // 01BA LDBOOL R10 0 0
|
0x50240000, // 01BA LDBOOL R9 0 0
|
||||||
0x80041400, // 01BB RET 1 R10
|
0x80041200, // 01BB RET 1 R9
|
||||||
0x88240331, // 01BC GETMBR R9 R1 K49
|
0x88240331, // 01BC GETMBR R9 R1 K49
|
||||||
0x90126009, // 01BD SETMBR R4 K48 R9
|
0x90126009, // 01BD SETMBR R4 K48 R9
|
||||||
0x8C240932, // 01BE GETMET R9 R4 K50
|
0x8C240932, // 01BE GETMET R9 R4 K50
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1440,7 +1440,7 @@ be_local_closure(Matter_IM_SubscribeResponse_init, /* name */
|
|||||||
********************************************************************/
|
********************************************************************/
|
||||||
be_local_closure(Matter_IM_SubscribeResponse_status_ok_received, /* name */
|
be_local_closure(Matter_IM_SubscribeResponse_status_ok_received, /* name */
|
||||||
be_nested_proto(
|
be_nested_proto(
|
||||||
5, /* nstack */
|
10, /* nstack */
|
||||||
2, /* argc */
|
2, /* argc */
|
||||||
2, /* varg */
|
2, /* varg */
|
||||||
0, /* has upvals */
|
0, /* has upvals */
|
||||||
@ -1448,19 +1448,41 @@ be_local_closure(Matter_IM_SubscribeResponse_status_ok_received, /* name */
|
|||||||
0, /* has sup protos */
|
0, /* has sup protos */
|
||||||
NULL, /* no sub protos */
|
NULL, /* no sub protos */
|
||||||
1, /* has constants */
|
1, /* has constants */
|
||||||
( &(const bvalue[ 1]) { /* constants */
|
( &(const bvalue[11]) { /* constants */
|
||||||
/* K0 */ be_nested_str_weak(status_ok_received),
|
/* 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_X3ESub_OK_X20_X20_X20_X20_X28_X256i_X29_X20sub_X3D_X25i),
|
||||||
|
/* K5 */ be_nested_str_weak(session),
|
||||||
|
/* K6 */ be_nested_str_weak(local_session_id),
|
||||||
|
/* K7 */ be_nested_str_weak(sub),
|
||||||
|
/* K8 */ be_nested_str_weak(subscription_id),
|
||||||
|
/* K9 */ be_const_int(2),
|
||||||
|
/* K10 */ be_nested_str_weak(status_ok_received),
|
||||||
}),
|
}),
|
||||||
be_str_weak(status_ok_received),
|
be_str_weak(status_ok_received),
|
||||||
&be_const_str_solidified,
|
&be_const_str_solidified,
|
||||||
( &(const binstruction[ 7]) { /* code */
|
( &(const binstruction[19]) { /* code */
|
||||||
0x60080003, // 0000 GETGBL R2 G3
|
0xA40A0000, // 0000 IMPORT R2 K0
|
||||||
0x5C0C0000, // 0001 MOVE R3 R0
|
0xB80E0200, // 0001 GETNGBL R3 K1
|
||||||
0x7C080200, // 0002 CALL R2 1
|
0x8C0C0702, // 0002 GETMET R3 R3 K2
|
||||||
0x8C080500, // 0003 GETMET R2 R2 K0
|
0x8C140503, // 0003 GETMET R5 R2 K3
|
||||||
0x5C100200, // 0004 MOVE R4 R1
|
0x581C0004, // 0004 LDCONST R7 K4
|
||||||
0x7C080400, // 0005 CALL R2 2
|
0x88200305, // 0005 GETMBR R8 R1 K5
|
||||||
0x80040400, // 0006 RET 1 R2
|
0x88201106, // 0006 GETMBR R8 R8 K6
|
||||||
|
0x88240107, // 0007 GETMBR R9 R0 K7
|
||||||
|
0x88241308, // 0008 GETMBR R9 R9 K8
|
||||||
|
0x7C140800, // 0009 CALL R5 4
|
||||||
|
0x58180009, // 000A LDCONST R6 K9
|
||||||
|
0x7C0C0600, // 000B CALL R3 3
|
||||||
|
0x600C0003, // 000C GETGBL R3 G3
|
||||||
|
0x5C100000, // 000D MOVE R4 R0
|
||||||
|
0x7C0C0200, // 000E CALL R3 1
|
||||||
|
0x8C0C070A, // 000F GETMET R3 R3 K10
|
||||||
|
0x5C140200, // 0010 MOVE R5 R1
|
||||||
|
0x7C0C0400, // 0011 CALL R3 2
|
||||||
|
0x80040600, // 0012 RET 1 R3
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user