mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-24 19:26:37 +00:00
Matter latency improvement for single attribute reads and single commands (#19158)
This commit is contained in:
parent
d1a4296867
commit
758b0237b4
@ -20,6 +20,7 @@ All notable changes to this project will be documented in this file.
|
||||
- Configuration backup and restore now backup and restore ``.xdrvsetXXX`` files too (#18295)
|
||||
- Berry extend `range(lower, upper, incr)` to arbitrary increment
|
||||
- Berry updated syntax highlighting plugin for VSCode
|
||||
- Matter latency improvement for single attribute reads and single commands
|
||||
|
||||
### Fixed
|
||||
|
||||
|
@ -338,6 +338,7 @@ module matter (scope: global, strings: weak) {
|
||||
StatusIB, class(be_class_Matter_StatusIB)
|
||||
StatusResponseMessage, class(be_class_Matter_StatusResponseMessage)
|
||||
ReadRequestMessage, class(be_class_Matter_ReadRequestMessage)
|
||||
ReadRequestMessage_solo, class(be_class_Matter_ReadRequestMessage_solo)
|
||||
ReportDataMessage, class(be_class_Matter_ReportDataMessage)
|
||||
SubscribeRequestMessage, class(be_class_Matter_SubscribeRequestMessage)
|
||||
SubscribeResponseMessage, class(be_class_Matter_SubscribeResponseMessage)
|
||||
@ -345,6 +346,7 @@ module matter (scope: global, strings: weak) {
|
||||
WriteResponseMessage, class(be_class_Matter_WriteResponseMessage)
|
||||
TimedRequestMessage, class(be_class_Matter_TimedRequestMessage)
|
||||
InvokeRequestMessage, class(be_class_Matter_InvokeRequestMessage)
|
||||
InvokeRequestMessage_solo, class(be_class_Matter_InvokeRequestMessage_solo)
|
||||
InvokeResponseMessage, class(be_class_Matter_InvokeResponseMessage)
|
||||
|
||||
// Matter Commisioning messages
|
||||
|
@ -235,7 +235,7 @@ class Matter_Commisioning_Context
|
||||
var raw = resp.encode_frame(pake2_raw)
|
||||
|
||||
# log the fact that a new commissioning is starting
|
||||
tasmota.log(format("MTR: New Commissioning (PASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port))
|
||||
tasmota.log(format("MTR: New Commissioning (PASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2)
|
||||
|
||||
self.responder.send_response_frame(resp)
|
||||
return true
|
||||
@ -265,7 +265,7 @@ class Matter_Commisioning_Context
|
||||
end
|
||||
|
||||
# send PakeFinished and compute session key
|
||||
var created = tasmota.rtc()['utc']
|
||||
var created = tasmota.rtc_utc()
|
||||
var session_keys = crypto.HKDF_SHA256().derive(session.__spake_Ke, bytes(), bytes().fromstring(self.SEKeys_Info), 48)
|
||||
var I2RKey = session_keys[0..15]
|
||||
var R2IKey = session_keys[16..31]
|
||||
@ -406,7 +406,7 @@ class Matter_Commisioning_Context
|
||||
var i2r = session_keys[0..15]
|
||||
var r2i = session_keys[16..31]
|
||||
var ac = session_keys[32..47]
|
||||
var created = tasmota.rtc()['utc']
|
||||
var created = tasmota.rtc_utc()
|
||||
|
||||
# tasmota.log("MTR: ******************************", 4)
|
||||
# tasmota.log("MTR: I2RKey =" + i2r.tohex(), 4)
|
||||
@ -538,7 +538,7 @@ class Matter_Commisioning_Context
|
||||
var raw = resp.encode_frame(sigma2_raw)
|
||||
|
||||
# log the fact that a new connection is starting
|
||||
tasmota.log(format("MTR: New Connection (CASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port))
|
||||
tasmota.log(format("MTR: New Connection (CASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2)
|
||||
|
||||
self.responder.send_response_frame(resp)
|
||||
return true
|
||||
@ -658,7 +658,7 @@ class Matter_Commisioning_Context
|
||||
var i2r = session_keys[0..15]
|
||||
var r2i = session_keys[16..31]
|
||||
var ac = session_keys[32..47]
|
||||
var created = tasmota.rtc()['utc']
|
||||
var created = tasmota.rtc_utc()
|
||||
|
||||
# tasmota.log("MTR: ******************************", 4)
|
||||
# tasmota.log("MTR: I2RKey =" + i2r.tohex(), 4)
|
||||
|
@ -81,7 +81,7 @@ class Matter_Device
|
||||
return
|
||||
end # abort if SetOption 151 is not set
|
||||
|
||||
self.profiler = matter.Profiler()
|
||||
matter.profiler = matter.Profiler()
|
||||
self.started = false
|
||||
self.tick = 0
|
||||
self.plugins = []
|
||||
@ -514,18 +514,15 @@ class Matter_Device
|
||||
end
|
||||
|
||||
var endpoint = ctx.endpoint
|
||||
# var endpoint_mono = [ endpoint ]
|
||||
var endpoint_found = false # did any endpoint match
|
||||
var cluster = ctx.cluster
|
||||
# var cluster_mono = [ cluster ]
|
||||
var cluster_found = false
|
||||
var attribute = ctx.attribute
|
||||
# var attribute_mono = [ attribute ]
|
||||
var endpoint_found = false # did any endpoint match
|
||||
var cluster_found = false
|
||||
var attribute_found = false
|
||||
|
||||
var direct = (ctx.endpoint != nil) && (ctx.cluster != nil) && (ctx.attribute != nil) # true if the target is a precise attribute, false if it results from an expansion and error are ignored
|
||||
|
||||
# tasmota.log(format("MTR: process_attribute_expansion %s", str(ctx)), 4)
|
||||
# tasmota.log(f"MTR: process_attribute_expansion {str(ctx))}", 4)
|
||||
|
||||
# build the list of candidates
|
||||
|
||||
@ -541,7 +538,7 @@ class Matter_Device
|
||||
endpoint_found = true
|
||||
|
||||
# now explore the cluster list for 'ep'
|
||||
var cluster_list = pi.get_cluster_list(ep) # cluster_list is the actual list of candidate cluster for this pluging and endpoint
|
||||
var cluster_list = pi.get_cluster_list() # cluster_list is the actual list of candidate cluster for this pluging and endpoint
|
||||
# tasmota.log(format("MTR: pi=%s ep=%s cl_list=%s", str(pi), str(ep), str(cluster_list)), 4)
|
||||
for cl: cluster_list
|
||||
if cluster != nil && cl != cluster continue end # skip if specific cluster and no match
|
||||
@ -550,7 +547,7 @@ class Matter_Device
|
||||
cluster_found = true
|
||||
|
||||
# now filter on attributes
|
||||
var attr_list = pi.get_attribute_list(ep, cl)
|
||||
var attr_list = pi.get_attribute_list(cl)
|
||||
# tasmota.log(format("MTR: pi=%s ep=%s cl=%s at_list=%s", str(pi), str(ep), str(cl), str(attr_list)), 4)
|
||||
for at: attr_list
|
||||
if attribute != nil && at != attribute continue end # skip if specific attribute and no match
|
||||
@ -595,6 +592,44 @@ class Matter_Device
|
||||
end
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# Optimized version for a single endpoint/cluster/attribute
|
||||
#
|
||||
# Retrieve the plugin for a read
|
||||
def process_attribute_read_solo(ctx)
|
||||
var endpoint = ctx.endpoint
|
||||
# var endpoint_found = false # did any endpoint match
|
||||
var cluster = ctx.cluster
|
||||
# var cluster_found = false
|
||||
var attribute = ctx.attribute
|
||||
# var attribute_found = false
|
||||
|
||||
# all 3 elements must be non-nil
|
||||
if endpoint == nil || cluster == nil || attribute == nil return nil end
|
||||
|
||||
# look for plugin
|
||||
var pi = self.find_plugin_by_endpoint(endpoint)
|
||||
if pi == nil # endpoint not found
|
||||
ctx.status = matter.UNSUPPORTED_ENDPOINT
|
||||
return nil
|
||||
end
|
||||
|
||||
# check cluster
|
||||
if !pi.contains_cluster(cluster)
|
||||
ctx.status = matter.UNSUPPORTED_CLUSTER
|
||||
return nil
|
||||
end
|
||||
|
||||
# attribute list
|
||||
if !pi.contains_attribute(cluster, attribute)
|
||||
ctx.status = matter.UNSUPPORTED_ATTRIBUTE
|
||||
return nil
|
||||
end
|
||||
|
||||
# all good
|
||||
return pi
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# Return the list of endpoints from all plugins (distinct), exclud endpoint zero if `exclude_zero` is `true`
|
||||
def get_active_endpoints(exclude_zero)
|
||||
|
@ -96,7 +96,7 @@ class Matter_Expirable
|
||||
# set relative time in the future for expiration (in seconds)
|
||||
def set_expire_in_seconds(s, now)
|
||||
if s == nil return end
|
||||
if now == nil now = tasmota.rtc()['utc'] end
|
||||
if now == nil now = tasmota.rtc_utc() end
|
||||
self.set_expire_time(now + s)
|
||||
end
|
||||
|
||||
@ -104,7 +104,7 @@ class Matter_Expirable
|
||||
# set relative time in the future for expiration (in seconds)
|
||||
# returns `true` if expiration date has been reached
|
||||
def has_expired(now)
|
||||
if now == nil now = tasmota.rtc()['utc'] end
|
||||
if now == nil now = tasmota.rtc_utc() end
|
||||
if self._expiration != nil
|
||||
return now >= self._expiration
|
||||
end
|
||||
|
@ -75,7 +75,7 @@ class Matter_Fabric : Matter_Expirable
|
||||
self._store = store
|
||||
self._sessions = matter.Expirable_list()
|
||||
self.fabric_label = ""
|
||||
self.created = tasmota.rtc()['utc']
|
||||
self.created = tasmota.rtc_utc()
|
||||
# init group counters
|
||||
self._counter_group_data_snd_impl = matter.Counter()
|
||||
self._counter_group_ctrl_snd_impl = matter.Counter()
|
||||
|
@ -189,7 +189,7 @@ class Matter_HTTP_remote : Matter_HTTP_async
|
||||
if alive
|
||||
# device is known to be reachable
|
||||
self.reachable = true
|
||||
self.reachable_utc = tasmota.rtc()['utc']
|
||||
self.reachable_utc = tasmota.rtc_utc()
|
||||
else
|
||||
self.reachable = false
|
||||
end
|
||||
@ -344,7 +344,7 @@ class Matter_HTTP_remote : Matter_HTTP_async
|
||||
|
||||
var seconds = -1 # default if no known value
|
||||
if self.reachable_utc != nil
|
||||
seconds = tasmota.rtc()['utc'] - self.reachable_utc
|
||||
seconds = tasmota.rtc_utc() - self.reachable_utc
|
||||
end
|
||||
return matter.seconds_to_dhm(seconds)
|
||||
end
|
||||
|
@ -28,30 +28,53 @@ class Matter_IM
|
||||
var device
|
||||
var subs_shop # subscriptions shop
|
||||
|
||||
var send_queue # list of IM_Message queued for sending as part of exchange-id
|
||||
var send_queue # list of IM_Message queued for sending as part of exchange-id
|
||||
|
||||
var read_request_solo # instance of ReadRequestMessage_solo to optimize single reads
|
||||
var invoke_request_solo # instance of InvokeRequestMessage_solo to optimize single reads
|
||||
var tlv_solo # instance of Matter_TLV_item for simple responses
|
||||
|
||||
def init(device)
|
||||
self.device = device
|
||||
self.send_queue = []
|
||||
self.subs_shop = matter.IM_Subscription_Shop(self)
|
||||
self.read_request_solo = matter.ReadRequestMessage_solo()
|
||||
self.invoke_request_solo = matter.InvokeRequestMessage_solo()
|
||||
self.tlv_solo = matter.TLV.Matter_TLV_item()
|
||||
end
|
||||
|
||||
def process_incoming(msg)
|
||||
# messages are always TLV, decode payload
|
||||
# tasmota.log("MTR: received IM message " + matter.inspect(msg), 3)
|
||||
|
||||
var opcode = msg.opcode
|
||||
|
||||
# Fast-Track processing
|
||||
# first pass is optimized for simple frequent messages and avoids complete decoding of TLV
|
||||
if opcode == 0x02 # Read Request
|
||||
var read_request_solo = self.read_request_solo.from_raw(msg.raw, msg.app_payload_idx)
|
||||
if read_request_solo != nil
|
||||
# tasmota.log(f"MTR: process_incoming {read_request_solo=}")
|
||||
return self.process_read_request_solo(msg, read_request_solo)
|
||||
end
|
||||
elif opcode == 0x08 # Invoke Request
|
||||
var invoke_request_solo = self.invoke_request_solo.from_raw(msg.raw, msg.app_payload_idx)
|
||||
# tasmota.log(f"MTR: {invoke_request_solo=} {msg.raw[msg.app_payload_idx .. ].tohex()} {msg.app_payload_idx=} {msg.raw.tohex()}")
|
||||
if invoke_request_solo != nil
|
||||
return self.process_invoke_request_solo(msg, invoke_request_solo)
|
||||
end
|
||||
end
|
||||
|
||||
# tasmota.log("MTR: received IM message " + matter.inspect(msg), 3)
|
||||
var val = matter.TLV.parse(msg.raw, msg.app_payload_idx)
|
||||
|
||||
# tasmota.log("MTR: IM TLV: " + str(val), 3)
|
||||
|
||||
var InteractionModelRevision = val.findsubval(0xFF)
|
||||
# var InteractionModelRevision = val.findsubval(0xFF)
|
||||
# tasmota.log("MTR: InteractionModelRevision=" + (InteractionModelRevision != nil ? str(InteractionModelRevision) : "nil"), 4)
|
||||
|
||||
var opcode = msg.opcode
|
||||
if opcode == 0x01 # Status Response
|
||||
return self.process_status_response(msg, val)
|
||||
elif opcode == 0x02 # Read Request
|
||||
self.send_ack_now(msg)
|
||||
# self.send_ack_now(msg) # to improve latency, we don't automatically Ack on invoke request
|
||||
return self.process_read_request(msg, val)
|
||||
elif opcode == 0x03 # Subscribe Request
|
||||
self.send_ack_now(msg)
|
||||
@ -216,48 +239,30 @@ class Matter_IM
|
||||
var TLV = matter.TLV
|
||||
var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute)
|
||||
attr_name = attr_name ? " (" + attr_name + ")" : ""
|
||||
|
||||
# Special case to report unsupported item, if pi==nil
|
||||
var res = (pi != nil) ? pi.read_attribute(session, ctx) : nil
|
||||
var res = (pi != nil) ? pi.read_attribute(session, ctx, self.tlv_solo) : nil
|
||||
var found = true # stop expansion since we have a value
|
||||
var a1_raw # this is the bytes() block we need to add to response (or nil)
|
||||
if res != nil
|
||||
var res_str = str(res) # get the value with anonymous tag before it is tagged, for logging
|
||||
var res_str = res.to_str_val() # get the value with anonymous tag before it is tagged, for logging
|
||||
|
||||
var a1 = matter.AttributeReportIB()
|
||||
a1.attribute_data = matter.AttributeDataIB()
|
||||
a1.attribute_data.data_version = 1
|
||||
a1.attribute_data.path = matter.AttributePathIB()
|
||||
a1.attribute_data.path.endpoint = ctx.endpoint
|
||||
a1.attribute_data.path.cluster = ctx.cluster
|
||||
a1.attribute_data.path.attribute = ctx.attribute
|
||||
a1.attribute_data.data = res
|
||||
|
||||
var a1_tlv = a1.to_TLV()
|
||||
var a1_len = a1_tlv.encode_len()
|
||||
var a1_bytes = bytes(a1_len) # pre-size bytes() to the actual size
|
||||
a1_raw = a1_tlv.tlv2raw(a1_bytes)
|
||||
# tasmota.log(format("MTR: guessed len=%i actual=%i '%s'", a1_len, size(a1_raw), a1_raw.tohex()), 2)
|
||||
# encode directly raw bytes()
|
||||
a1_raw = bytes(48) # pre-reserve 48 bytes
|
||||
self.attributedata2raw(a1_raw, ctx, res)
|
||||
|
||||
if !no_log
|
||||
tasmota.log(format("MTR: >Read_Attr (%6i) %s%s - %s", session.local_session_id, str(ctx), attr_name, res_str), 3)
|
||||
end
|
||||
elif ctx.status != nil
|
||||
if direct # we report an error only if a concrete direct read, not with wildcards
|
||||
var a1 = matter.AttributeReportIB()
|
||||
a1.attribute_status = matter.AttributeStatusIB()
|
||||
a1.attribute_status.path = matter.AttributePathIB()
|
||||
a1.attribute_status.status = matter.StatusIB()
|
||||
a1.attribute_status.path.endpoint = ctx.endpoint
|
||||
a1.attribute_status.path.cluster = ctx.cluster
|
||||
a1.attribute_status.path.attribute = ctx.attribute
|
||||
a1.attribute_status.status.status = ctx.status
|
||||
# encode directly raw bytes()
|
||||
a1_raw = bytes(48) # pre-reserve 48 bytes
|
||||
self.attributestatus2raw(a1_raw, ctx, ctx.status)
|
||||
|
||||
var a1_tlv = a1.to_TLV()
|
||||
var a1_len = a1_tlv.encode_len()
|
||||
var a1_bytes = bytes(a1_len) # pre-size bytes() to the actual size
|
||||
a1_raw = a1_tlv.tlv2raw(a1_bytes)
|
||||
|
||||
tasmota.log(format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 3)
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 3)
|
||||
end
|
||||
end
|
||||
else
|
||||
tasmota.log(format("MTR: >Read_Attr (%6i) %s%s - IGNORED", session.local_session_id, str(ctx), attr_name), 3)
|
||||
@ -323,6 +328,280 @@ class Matter_IM
|
||||
return ret
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# path2raw
|
||||
#
|
||||
# Encodes endpoint/cluster/attribute as `AttributePathIB` elements
|
||||
# Takes sub-tag
|
||||
#
|
||||
# 1 = AttributePathIB
|
||||
# 0 = EnableTagCompression bool opt
|
||||
# 1 = Node
|
||||
# 2 = Endpoint
|
||||
# 3 = Cluste
|
||||
# 4 = Attribute
|
||||
# 5 = ListIndex (opt)
|
||||
#
|
||||
# 3701 1 = LIST
|
||||
# 2402 01 2 = 1U (U1)
|
||||
# 2403 39 3 = 0x39U (U1)
|
||||
# 2404 11 4 = 0x11U (U1)
|
||||
# 18
|
||||
def path2raw(raw, ctx, sub_tag)
|
||||
# open struct
|
||||
raw.add(0x37, 1) # add 37
|
||||
raw.add(sub_tag, 1) # add sub_tag
|
||||
# add endpoint
|
||||
if ctx.endpoint <= 0xFF # endpoint is 16 bits max
|
||||
raw.add(0x2402, -2) # add 2402
|
||||
raw.add(ctx.endpoint, 1)
|
||||
else
|
||||
raw.add(0x2502, -2) # add 2502
|
||||
raw.add(ctx.endpoint, 2)
|
||||
end
|
||||
# add cluster
|
||||
if ctx.cluster <= 0xFF # cluster is 32 bits max
|
||||
raw.add(0x2403, -2) # add 2403
|
||||
raw.add(ctx.cluster, 1)
|
||||
elif ctx.cluster <= 0xFFFF
|
||||
raw.add(0x2503, -2) # add 2503
|
||||
raw.add(ctx.cluster, 2)
|
||||
else
|
||||
raw.add(0x2603, -2) # add 2603
|
||||
raw.add(ctx.cluster, 4)
|
||||
end
|
||||
# add attribute
|
||||
if ctx.attribute <= 0xFF # cluster is 32 bits max
|
||||
raw.add(0x2404, -2) # add 2404
|
||||
raw.add(ctx.attribute, 1)
|
||||
elif ctx.attribute <= 0xFFFF
|
||||
raw.add(0x2504, -2) # add 2504
|
||||
raw.add(ctx.attribute, 2)
|
||||
else
|
||||
raw.add(0x2604, -2) # add 2604
|
||||
raw.add(ctx.attribute, 4)
|
||||
end
|
||||
raw.add(0x18, 1) # add 18
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# attributedata2raw
|
||||
#
|
||||
# generate a raw version of AttributeDataIB
|
||||
#
|
||||
# Typical answer
|
||||
#
|
||||
# AttributeReportIB
|
||||
# 0 = AttributeStatusIB
|
||||
# 1 = AttributeDataIB
|
||||
# 0 = DataVersion U1
|
||||
# 1 = AttributePathIB
|
||||
# 0 = EnableTagCompression bool opt
|
||||
# 1 = Node
|
||||
# 2 = Endpoint
|
||||
# 3 = Cluste
|
||||
# 4 = Attribute
|
||||
# 5 = ListIndex (opt)
|
||||
# 2 = Data
|
||||
#
|
||||
# 153601.15350124000137012402012403392404111829021818.1824FF0118
|
||||
# 15350124000137012402012403392404111829021818
|
||||
# 1535012400013701
|
||||
# 240201240339240411
|
||||
# 1829021818
|
||||
#
|
||||
# 15
|
||||
# 3501 1 = {}
|
||||
# 2400 01 0 = 1U (U1)
|
||||
# 3701 1 = LIST
|
||||
# 2402 01 2 = 1U (U1)
|
||||
# 2403 39 3 = 0x39U (U1)
|
||||
# 2404 11 4 = 0x11U (U1)
|
||||
# 18
|
||||
# 2902 2 = True
|
||||
# 18
|
||||
# 18
|
||||
def attributedata2raw(raw, ctx, val)
|
||||
raw.add(0x15350124, -4) # add 15350124
|
||||
raw.add(0x0001, -2) # add 0001
|
||||
|
||||
self.path2raw(raw, ctx, 0x01)
|
||||
|
||||
# add value with tag 2
|
||||
val.tag_sub = 2
|
||||
val.tlv2raw(raw)
|
||||
# close 2 structs
|
||||
raw.add(0x1818, -2)
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# attributedata2raw
|
||||
#
|
||||
# generate a raw version of AttributeStatusIB
|
||||
#
|
||||
#
|
||||
# Typical answer
|
||||
#
|
||||
# AttributeReportIB
|
||||
# 0 = AttributeStatusIB
|
||||
# 0 = AttributePathIB
|
||||
# 0 = EnableTagCompression bool opt
|
||||
# 1 = Node
|
||||
# 2 = Endpoint
|
||||
# 3 = Cluste
|
||||
# 4 = Attribute
|
||||
# 5 = ListIndex (opt)
|
||||
# 1 = StatusIB
|
||||
# 0 = Status (u1)
|
||||
# 1 = ClusterStatus (u1)
|
||||
# 1 = AttributeDataIB
|
||||
#
|
||||
# 15360115350037002402012403022404031835012400041818181824FF0118
|
||||
# 153601 1535003700 - 2402012403022404031835012400041818181824FF0118
|
||||
#
|
||||
# 15
|
||||
# 3601
|
||||
#
|
||||
# 15
|
||||
# 3500 0 = struct
|
||||
# 3700 0 = list
|
||||
# 240201 2 = 1U endpoint
|
||||
# 240302 3 = 2U cluster
|
||||
# 240403 4 = 3U attribute
|
||||
# 18
|
||||
# 3501 1 = struct
|
||||
# 240004 0 = 4U status
|
||||
# 18
|
||||
# 18
|
||||
# 18
|
||||
#
|
||||
# 18
|
||||
# 24FF01
|
||||
# 18
|
||||
def attributestatus2raw(raw, ctx, status)
|
||||
raw.add(0x15, 1) # add 15
|
||||
raw.add(0x3500, -2) # add 3500
|
||||
|
||||
self.path2raw(raw, ctx, 0x00)
|
||||
|
||||
raw.add(0x3501, -2) # add 3501 for status
|
||||
# status
|
||||
if ctx.status <= 255
|
||||
raw.add(0x2400, -2) # add 2400
|
||||
raw.add(ctx.status, 1)
|
||||
else
|
||||
raw.add(0x2500, -2) # add 2500
|
||||
raw.add(ctx.status, 2)
|
||||
end
|
||||
# close
|
||||
raw.add(0x1818, -2) # add 1818
|
||||
raw.add(0x18, 1) # add 18
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# attributedata2raw
|
||||
#
|
||||
# generate a raw version of InvokeResponseIB()
|
||||
# Typical answer
|
||||
#
|
||||
# 1535013700240011240122240244183501240000181818
|
||||
#
|
||||
# 0 = CommandDataIB
|
||||
# 0 = CommandPathIB
|
||||
# 0 = endpoint u2
|
||||
# 1 = cluster u4
|
||||
# 2 = command u4
|
||||
# 1 = <fields>
|
||||
# 1 = CommandStatusIB
|
||||
# 0 = CommandPathIB
|
||||
# 0 = endpoint u2
|
||||
# 1 = cluster u4
|
||||
# 2 = command u4
|
||||
# 1 = StatusIB
|
||||
# 0 = status u1
|
||||
# 1 = ClusterStatus u1
|
||||
#
|
||||
# 1535013700240011240122240244183501240000181818
|
||||
# 15
|
||||
# 3501 1 = struct
|
||||
# 3700 0 = list
|
||||
# 240011 0 = endpoint
|
||||
# 240122 1 = cluster
|
||||
# 240244 2 = command
|
||||
# 18
|
||||
# 3501 1 = struct
|
||||
# 240000 0 = 0 (status)
|
||||
# 18
|
||||
# 18
|
||||
# 18
|
||||
#
|
||||
# 1535003700240011240122240244182401031818
|
||||
# 15
|
||||
# 3500 0 = struct
|
||||
# 3700 0 = list
|
||||
# 240011 0 = endpoint
|
||||
# 240122 1 = cluster
|
||||
# 240244 2 = command
|
||||
# 18
|
||||
# 240103 1 = <field>
|
||||
# 18
|
||||
# 18
|
||||
def invokeresponse2raw(raw, ctx, val)
|
||||
raw.add(0x15, 1) # add 15
|
||||
if val == nil
|
||||
raw.add(0x3501, -2) # add 3500
|
||||
else
|
||||
raw.add(0x3500, -2) # add 3500
|
||||
end
|
||||
raw.add(0x3700, -2) # add 3700
|
||||
# add endpoint
|
||||
if ctx.endpoint <= 0xFF # endpoint is 16 bits max
|
||||
raw.add(0x2400, -2) # add 2400
|
||||
raw.add(ctx.endpoint, 1)
|
||||
else
|
||||
raw.add(0x2500, -2) # add 2500
|
||||
raw.add(ctx.endpoint, 2)
|
||||
end
|
||||
# add cluster
|
||||
if ctx.cluster <= 0xFF # cluster is 32 bits max
|
||||
raw.add(0x2401, -2) # add 2401
|
||||
raw.add(ctx.cluster, 1)
|
||||
elif ctx.cluster <= 0xFFFF
|
||||
raw.add(0x2501, -2) # add 2501
|
||||
raw.add(ctx.cluster, 2)
|
||||
else
|
||||
raw.add(0x2601, -2) # add 2601
|
||||
raw.add(ctx.cluster, 4)
|
||||
end
|
||||
# add attribute
|
||||
if ctx.command <= 0xFF # cluster is 32 bits max
|
||||
raw.add(0x2402, -2) # add 2402
|
||||
raw.add(ctx.command, 1)
|
||||
elif ctx.command <= 0xFFFF
|
||||
raw.add(0x2502, -2) # add 2502
|
||||
raw.add(ctx.command, 2)
|
||||
else
|
||||
raw.add(0x2602, -2) # add 2602
|
||||
raw.add(ctx.command, 4)
|
||||
end
|
||||
raw.add(0x18, 1) # add 18
|
||||
|
||||
# either value or statuc
|
||||
if val == nil
|
||||
var status = ctx.status
|
||||
if status == nil status = matter.SUCCESS end
|
||||
raw.add(0x3501, -2) # add 3501
|
||||
raw.add(0x2400, -2) # add 2400
|
||||
raw.add(ctx.status, 1) # add status:1
|
||||
raw.add(0x18, 1) # add 18
|
||||
else
|
||||
val.tag_sub = 1 # set sub_tag for reponse
|
||||
val.tlv2raw(raw)
|
||||
end
|
||||
# close
|
||||
raw.add(0x1818, -2) # add 1818
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# process IM 0x02 Read Request
|
||||
#
|
||||
@ -330,8 +609,10 @@ class Matter_IM
|
||||
# returns `true` if processed, `false` if silently ignored,
|
||||
# or raises an exception
|
||||
def process_read_request(msg, val)
|
||||
self.device.profiler.log("read_request_start")
|
||||
matter.profiler.log("read_request_start")
|
||||
# matter.profiler.log(str(val))
|
||||
var query = matter.ReadRequestMessage().from_TLV(val)
|
||||
# matter.profiler.log(str(query))
|
||||
if query.attributes_requests != nil
|
||||
var ret = self._inner_process_read_request(msg.session, query)
|
||||
self.send_report_data(msg, ret)
|
||||
@ -340,6 +621,133 @@ class Matter_IM
|
||||
return true
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# process IM 0x02 Read Request
|
||||
#
|
||||
# val is the TLV structure
|
||||
# returns `true` if processed, `false` if silently ignored,
|
||||
# or raises an exception
|
||||
def process_read_request_solo(msg, ctx)
|
||||
# matter.profiler.log("read_request_solo start")
|
||||
# matter.profiler.log(str(val))
|
||||
# var query = matter.ReadRequestMessage().from_TLV(val)
|
||||
# matter.profiler.log("read_request_start-TLV")
|
||||
|
||||
# prepare fallback error
|
||||
ctx.status = matter.INVALID_ACTION
|
||||
|
||||
# TODO
|
||||
# find pi for this endpoint/cluster/attribute
|
||||
var pi = self.device.process_attribute_read_solo(ctx)
|
||||
var res = nil
|
||||
# matter.profiler.log("read_request_solo pi ok")
|
||||
# tasmota.log(f"MTR: process_read_request_solo {pi=}")
|
||||
|
||||
var raw # this is the bytes() block we need to add to response (or nil)
|
||||
if pi != nil
|
||||
ctx.status = matter.UNSUPPORTED_ATTRIBUTE # new fallback error
|
||||
res = pi.read_attribute(msg.session, ctx, self.tlv_solo)
|
||||
end
|
||||
matter.profiler.log("read_request_solo read done")
|
||||
|
||||
if res != nil
|
||||
|
||||
# encode directly raw bytes()
|
||||
raw = bytes(48) # pre-reserve 48 bytes
|
||||
|
||||
raw.add(0x15, 1) # add 15
|
||||
raw.add(0x3601, -2) # add 3601
|
||||
|
||||
self.attributedata2raw(raw, ctx, res)
|
||||
|
||||
# add suffix 1824FF0118
|
||||
raw.add(0x1824FF01, -4) # add 1824FF01
|
||||
raw.add(0x18, 1) # add 18
|
||||
|
||||
# matter.profiler.log("read_request_solo raw done")
|
||||
|
||||
elif ctx.status != nil
|
||||
|
||||
# encode directly raw bytes()
|
||||
raw = bytes(48) # pre-reserve 48 bytes
|
||||
|
||||
raw.add(0x15, 1) # add 15
|
||||
raw.add(0x3601, -2) # add 3601
|
||||
|
||||
self.attributestatus2raw(raw, ctx, ctx.status)
|
||||
|
||||
# add suffix 1824FF0118
|
||||
raw.add(0x1824FF01, -4) # add 1824FF01
|
||||
raw.add(0x18, 1) # add 18
|
||||
|
||||
else
|
||||
tasmota.log(f"MTR: >Read_Attr ({msg.session.local_session_id:6i}) {ctx} - IGNORED", 3)
|
||||
return false
|
||||
end
|
||||
|
||||
# matter.profiler.log("read_request_solo res ready")
|
||||
# tasmota.log(f"MTR: process_read_request_solo {raw=}")
|
||||
|
||||
# send packet
|
||||
# self.send_report_data_solo(msg, ret)
|
||||
# var report_solo = matter.IM_ReportData_solo(msg, ret)
|
||||
var resp = msg.build_response(0x05 #-Report Data-#, true)
|
||||
|
||||
# super(self).reset(msg, 0x05 #-Report Data-#, true)
|
||||
# matter.profiler.log("read_request_solo report_solo")
|
||||
|
||||
# send_im()
|
||||
# report_solo.send_im(self.device.message_handler)
|
||||
var responder = self.device.message_handler
|
||||
# matter.profiler.log("read_request_solo send_im-1")
|
||||
# if tasmota.loglevel(3) # TODO remove before flight
|
||||
# tasmota.log(f">>>: data_raw={raw.tohex()}", 3)
|
||||
# end
|
||||
# matter.profiler.log("read_request_solo send_im-2")
|
||||
var msg_raw = msg.raw
|
||||
msg_raw.clear()
|
||||
resp.encode_frame(raw, msg_raw) # payload in cleartext
|
||||
# matter.profiler.log("read_request_solo send_im-3")
|
||||
resp.encrypt()
|
||||
# matter.profiler.log("read_request_solo send_im-encrypted")
|
||||
if tasmota.loglevel(4)
|
||||
tasmota.log(format("MTR: <snd (%6i) id=%i exch=%i rack=%s", resp.session.local_session_id, resp.message_counter, resp.exchange_id, resp.ack_message_counter), 4)
|
||||
end
|
||||
|
||||
responder.send_response_frame(resp)
|
||||
|
||||
# postpone lengthy operations after sending back response
|
||||
matter.profiler.log("RESPONSE SENT")
|
||||
|
||||
var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute)
|
||||
attr_name = attr_name ? " (" + attr_name + ")" : ""
|
||||
|
||||
if res != nil
|
||||
var res_str = res.to_str_val() # get the value with anonymous tag before it is tagged, for logging
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3)
|
||||
end
|
||||
# if matter.profiler.active && tasmota.loglevel(3)
|
||||
# tasmota.log(f"MTR: {raw=}", 3) # TODO remove before flight
|
||||
# end
|
||||
elif ctx.status != nil
|
||||
var unsupported_attribute = (ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : "")
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - STATUS: 0x{ctx.status:02X} {unsupported_attribute}", 3)
|
||||
end
|
||||
# if matter.profiler.active && tasmota.loglevel(3)
|
||||
# tasmota.log(f"MTR: {raw=}", 3) # TODO remove before flight
|
||||
# end
|
||||
else
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - IGNORED", 3)
|
||||
end
|
||||
end
|
||||
|
||||
# matter.profiler.log("read_request_solo end")
|
||||
return true
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# process IM 0x03 Subscribe Request
|
||||
#
|
||||
@ -384,7 +792,7 @@ class Matter_IM
|
||||
# import debug
|
||||
# structure is `ReadRequestMessage` 10.6.2 p.558
|
||||
# tasmota.log("MTR: IM:invoke_request processing start", 4)
|
||||
self.device.profiler.log("invoke_request_start")
|
||||
matter.profiler.log("invoke_request_start")
|
||||
var ctx = matter.Path()
|
||||
ctx.msg = msg
|
||||
|
||||
@ -404,44 +812,39 @@ class Matter_IM
|
||||
var cmd_name = matter.get_command_name(ctx.cluster, ctx.command)
|
||||
var ctx_str = str(ctx) # keep string before invoking, it is modified by response
|
||||
var res = self.device.invoke_request(msg.session, q.command_fields, ctx)
|
||||
matter.profiler.log("COMMAND DONE")
|
||||
var params_log = (ctx.log != nil) ? "(" + str(ctx.log) + ") " : ""
|
||||
tasmota.log(format("MTR: >Command (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), ctx.endpoint != 0 ? 2 : 3 #- don't log for endpoint 0 -# )
|
||||
# tasmota.log("MTR: Perf/Command = " + str(debug.counters()), 4)
|
||||
ctx.log = nil
|
||||
var a1 = matter.InvokeResponseIB()
|
||||
var raw = bytes(32)
|
||||
# var a1 = matter.InvokeResponseIB()
|
||||
if res == true || ctx.status == matter.SUCCESS # special case, just respond ok
|
||||
a1.status = matter.CommandStatusIB()
|
||||
a1.status.command_path = matter.CommandPathIB()
|
||||
a1.status.command_path.endpoint = ctx.endpoint
|
||||
a1.status.command_path.cluster = ctx.cluster
|
||||
a1.status.command_path.command = ctx.command
|
||||
a1.status.status = matter.StatusIB()
|
||||
a1.status.status.status = matter.SUCCESS
|
||||
ret.invoke_responses.push(a1)
|
||||
tasmota.log(format("MTR: <Replied (%6i) OK exch=%i", msg.session.local_session_id, msg.exchange_id), 3)
|
||||
ctx.status = matter.SUCCESS
|
||||
self.invokeresponse2raw(raw, ctx, nil)
|
||||
ret.invoke_responses.push(raw)
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(f"MTR: <Replied ({msg.session.local_session_id:6i}) OK exch={msg.exchange_id:i}", 3)
|
||||
end
|
||||
elif res != nil
|
||||
a1.command = matter.CommandDataIB()
|
||||
a1.command.command_path = matter.CommandPathIB()
|
||||
a1.command.command_path.endpoint = ctx.endpoint
|
||||
a1.command.command_path.cluster = ctx.cluster
|
||||
a1.command.command_path.command = ctx.command
|
||||
a1.command.command_fields = res
|
||||
ret.invoke_responses.push(a1)
|
||||
self.invokeresponse2raw(raw, ctx, res)
|
||||
ret.invoke_responses.push(raw)
|
||||
|
||||
cmd_name = matter.get_command_name(ctx.cluster, ctx.command)
|
||||
tasmota.log(format("MTR: <Replied (%6i) %s %s", msg.session.local_session_id, str(ctx), cmd_name ? cmd_name : ""), 3)
|
||||
if !cmd_name cmd_name = "" end
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(f"MTR: <Replied ({msg.session.local_session_id:6i}) {ctx} {cmd_name}", 3)
|
||||
end
|
||||
elif ctx.status != nil
|
||||
a1.status = matter.CommandStatusIB()
|
||||
a1.status.command_path = matter.CommandPathIB()
|
||||
a1.status.command_path.endpoint = ctx.endpoint
|
||||
a1.status.command_path.cluster = ctx.cluster
|
||||
a1.status.command_path.command = ctx.command
|
||||
a1.status.status = matter.StatusIB()
|
||||
a1.status.status.status = ctx.status
|
||||
ret.invoke_responses.push(a1)
|
||||
tasmota.log(format("MTR: <Replied (%6i) Status=0x%02X exch=%i", msg.session.local_session_id, ctx.status, msg.exchange_id), 3)
|
||||
self.invokeresponse2raw(raw, ctx, nil)
|
||||
ret.invoke_responses.push(raw)
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(f"MTR: <Replied ({msg.session.local_session_id:6i}) Status=0x{ctx.status:02X} exch={msg.exchange_id:i}", 3)
|
||||
end
|
||||
else
|
||||
tasmota.log(format("MTR: _Ignore (%6i) exch=%i", msg.session.local_session_id, msg.exchange_id), 3)
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(f"MTR: _Ignore ({msg.session.local_session_id:6i}) exch={msg.exchange_id:i}", 3)
|
||||
end
|
||||
# ignore if content is nil and status is undefined
|
||||
end
|
||||
end
|
||||
@ -459,6 +862,78 @@ class Matter_IM
|
||||
end
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# process IM 0x08 Invoke Request
|
||||
#
|
||||
# val is the TLV structure
|
||||
# returns `true` if processed, `false` if silently ignored,
|
||||
# or raises an exception
|
||||
def process_invoke_request_solo(msg, ctx)
|
||||
# import debug
|
||||
matter.profiler.log("invoke_request_solo_start")
|
||||
ctx.msg = msg
|
||||
ctx.status = matter.UNSUPPORTED_COMMAND #default error if returned `nil`
|
||||
|
||||
var cmd_name = matter.get_command_name(ctx.cluster, ctx.command)
|
||||
var ctx_str = str(ctx) # keep string before invoking, it is modified by response
|
||||
var res = self.device.invoke_request(msg.session, ctx.command_fields, ctx)
|
||||
matter.profiler.log("COMMAND DONE")
|
||||
var params_log = (ctx.log != nil) ? "(" + str(ctx.log) + ") " : ""
|
||||
var cmd_log_level = ctx.endpoint != 0 ? 2 : 3 #- don't log for endpoint 0 -#
|
||||
if tasmota.loglevel(cmd_log_level)
|
||||
tasmota.log(format("MTR: >Command1 (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), cmd_log_level)
|
||||
end
|
||||
# tasmota.log("MTR: Perf/Command = " + str(debug.counters()), 4)
|
||||
ctx.log = nil
|
||||
var raw = bytes(48)
|
||||
|
||||
# prefix 1528003601
|
||||
raw.add(0x15280036, -4) # add 15280036
|
||||
raw.add(0x01, 1) # add 01
|
||||
if res == true || ctx.status == matter.SUCCESS # special case, just respond ok
|
||||
ctx.status = matter.SUCCESS
|
||||
self.invokeresponse2raw(raw, ctx, nil)
|
||||
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(f"MTR: <Replied ({msg.session.local_session_id:6i}) OK exch={msg.exchange_id:i}", 3)
|
||||
end
|
||||
elif res != nil
|
||||
self.invokeresponse2raw(raw, ctx, res)
|
||||
|
||||
if !cmd_name cmd_name = "" end
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(f"MTR: <Replied ({msg.session.local_session_id:6i}) {ctx} {cmd_name}", 3)
|
||||
end
|
||||
elif ctx.status != nil
|
||||
self.invokeresponse2raw(raw, ctx, nil)
|
||||
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(f"MTR: <Replied ({msg.session.local_session_id:6i}) Status=0x{ctx.status:02X} exch={msg.exchange_id:i}", 3)
|
||||
end
|
||||
else
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(f"MTR: _Ignore ({msg.session.local_session_id:6i}) exch={msg.exchange_id:i}", 3)
|
||||
end
|
||||
# ignore if content is nil and status is undefined
|
||||
return false
|
||||
end
|
||||
# add suffix 1824FF0118
|
||||
raw.add(0x1824FF01, -4) # add 1824FF01
|
||||
raw.add(0x18, 1) # add 18
|
||||
|
||||
# tasmota.log(f"MTR: raw={raw.tohex()}", 3)
|
||||
var resp = msg.build_response(0x09 #-Invoke Response-#, true)
|
||||
var responder = self.device.message_handler
|
||||
var msg_raw = msg.raw
|
||||
msg_raw.clear()
|
||||
resp.encode_frame(raw, msg_raw) # payload in cleartext
|
||||
resp.encrypt()
|
||||
responder.send_response_frame(resp)
|
||||
matter.profiler.log("RESPONSE SENT")
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# process IM 0x04 Subscribe Response
|
||||
#
|
||||
|
@ -40,6 +40,7 @@ import matter
|
||||
#@ solidify:matter.StatusIB,weak
|
||||
#@ solidify:matter.StatusResponseMessage,weak
|
||||
#@ solidify:matter.ReadRequestMessage,weak
|
||||
#@ solidify:matter.ReadRequestMessage_solo,weak
|
||||
#@ solidify:matter.ReportDataMessage,weak
|
||||
#@ solidify:matter.SubscribeRequestMessage,weak
|
||||
#@ solidify:matter.SubscribeResponseMessage,weak
|
||||
@ -47,6 +48,7 @@ import matter
|
||||
#@ solidify:matter.WriteResponseMessage,weak
|
||||
#@ solidify:matter.TimedRequestMessage,weak
|
||||
#@ solidify:matter.InvokeRequestMessage,weak
|
||||
#@ solidify:matter.InvokeRequestMessage_solo,weak
|
||||
#@ solidify:matter.InvokeResponseMessage,weak
|
||||
|
||||
#################################################################################
|
||||
@ -627,6 +629,238 @@ class Matter_ReadRequestMessage : Matter_IM_Message_base
|
||||
end
|
||||
matter.ReadRequestMessage = Matter_ReadRequestMessage
|
||||
|
||||
|
||||
#################################################################################
|
||||
# ReadRequestMessage class optimized for a simple solo argument
|
||||
#################################################################################
|
||||
class Matter_Path end # for compilation
|
||||
class Matter_ReadRequestMessage_solo : Matter_Path
|
||||
# var endpoint # int
|
||||
# var cluster # int
|
||||
# var attribute # int
|
||||
# var fabric_filtered # bool or nil
|
||||
|
||||
def from_raw(raw, idx)
|
||||
self.reset()
|
||||
# must start with 15360017
|
||||
var sz = size(raw)
|
||||
var val
|
||||
if raw.get(idx, -4) != 0x15360017 return nil end
|
||||
idx += 4
|
||||
while idx < sz
|
||||
# expect 24 xx yy or 25 xx yyyy (little endian)
|
||||
var tag = raw.get(idx+1, 1)
|
||||
var b0 = raw.get(idx, 1)
|
||||
if b0 == 0x24 # u1
|
||||
val = raw.get(idx+2, 1)
|
||||
idx += 3
|
||||
elif b0 == 0x25 # u2
|
||||
val = raw.get(idx+2, 2)
|
||||
idx += 4
|
||||
else
|
||||
break
|
||||
end
|
||||
if tag == 2
|
||||
self.endpoint = val
|
||||
elif tag == 3
|
||||
self.cluster = val
|
||||
elif tag == 4
|
||||
self.attribute = val
|
||||
else
|
||||
return nil # unsupported tag
|
||||
end
|
||||
end
|
||||
# expect 18 18
|
||||
val = raw.get(idx, -2)
|
||||
if val != 0x1818 return nil end
|
||||
idx += 2
|
||||
# fabric_filtered: 2803 or 2903
|
||||
val = raw.get(idx, -2)
|
||||
if val == 0x2803
|
||||
self.fabric_filtered = false
|
||||
idx += 2
|
||||
elif val == 0x2903
|
||||
self.fabric_filtered = true
|
||||
idx += 2
|
||||
end
|
||||
# skip 24FFxx
|
||||
val = raw.get(idx, -2)
|
||||
if val == 0x24FF idx += 3 end
|
||||
# expect 18
|
||||
if raw.get(idx, 1) != 0x18 return nil end
|
||||
idx += 1
|
||||
# sanity check
|
||||
if self.endpoint == nil ||
|
||||
self.cluster == nil ||
|
||||
self.attribute == nil ||
|
||||
self.fabric_filtered == nil
|
||||
return nil
|
||||
end
|
||||
# all good
|
||||
return self
|
||||
end
|
||||
|
||||
# Example: read_attr Reachable
|
||||
# 153600172402012403392404111818290324FF0118
|
||||
# 15 structure
|
||||
# 3600 tag 00 array
|
||||
# 17 list
|
||||
# 2402 tag 02 u1 "endpoint"
|
||||
# 01
|
||||
# 2403 tag 03 u1 "cluster"
|
||||
# 39 57U
|
||||
# 2404 tag 04 u1 "attribute"
|
||||
# 11 17U
|
||||
# 18
|
||||
# 18
|
||||
# 2903 tag 03 booltrue
|
||||
# 24FF tag FF u1
|
||||
# 01 1U
|
||||
# 18
|
||||
# {0 = [[[2 = 1U, 3 = 57U, 4 = 17U]]], 3 = true, 255 = 1U}
|
||||
|
||||
end
|
||||
matter.ReadRequestMessage_solo = Matter_ReadRequestMessage_solo
|
||||
# test
|
||||
# b = bytes('0000153600172402012403392404111818290324FF0118')
|
||||
# m = matter.ReadRequestMessage_solo()
|
||||
# mm = m.from_raw(b, 2)
|
||||
# print(m)
|
||||
|
||||
|
||||
#################################################################################
|
||||
# InvokeRequestMessage class optimized for a simple solo argument
|
||||
#################################################################################
|
||||
class Matter_Path end # for compilation
|
||||
class Matter_InvokeRequestMessage_solo : Matter_Path
|
||||
var SuppressResponse
|
||||
var TimedRequest
|
||||
var command_fields
|
||||
# var endpoint # int
|
||||
# var cluster # int
|
||||
# var attribute # int
|
||||
# var fabric_filtered # bool or nil
|
||||
|
||||
def reset()
|
||||
var n = nil
|
||||
super(self).reset()
|
||||
self.SuppressResponse = n
|
||||
self.TimedRequest = n
|
||||
self.command_fields = n
|
||||
end
|
||||
|
||||
def from_raw(raw, idx)
|
||||
self.reset()
|
||||
# must start with 15360017
|
||||
var sz = size(raw)
|
||||
var val
|
||||
|
||||
if raw.get(idx, 1) != 0x15 return nil end
|
||||
idx += 1
|
||||
# check SuppressResponse (optional)
|
||||
val = raw.get(idx, -2)
|
||||
if val == 0x2800 || val == 0x2900
|
||||
self.SuppressResponse = (val == 0x2900)
|
||||
idx += 2
|
||||
end
|
||||
# check TimedRequest (optional)
|
||||
val = raw.get(idx, -2)
|
||||
if val == 0x2801 || val == 0x2901
|
||||
self.SuppressResponse = (val == 0x2901)
|
||||
idx += 2
|
||||
end
|
||||
# start of CommandDataIB
|
||||
if raw.get(idx, -2) != 0x3602 return nil end
|
||||
idx += 2
|
||||
if raw.get(idx, 1) != 0x15 return nil end
|
||||
idx += 1
|
||||
if raw.get(idx, -2) != 0x3700 return nil end
|
||||
idx += 2
|
||||
#
|
||||
while idx < sz
|
||||
# expect 24 xx yy or 25 xx yyyy (little endian)
|
||||
var tag = raw.get(idx+1, 1)
|
||||
var b0 = raw.get(idx, 1)
|
||||
if b0 == 0x24 # u1
|
||||
val = raw.get(idx+2, 1)
|
||||
idx += 3
|
||||
elif b0 == 0x25 # u2
|
||||
val = raw.get(idx+2, 2)
|
||||
idx += 4
|
||||
else
|
||||
break
|
||||
end
|
||||
if tag == 0
|
||||
self.endpoint = val
|
||||
elif tag == 1
|
||||
self.cluster = val
|
||||
elif tag == 2
|
||||
self.command = val
|
||||
else
|
||||
return nil # unsupported tag
|
||||
end
|
||||
end
|
||||
if raw.get(idx, 1) != 0x18 return nil end
|
||||
idx += 1
|
||||
# command_fields
|
||||
if raw.get(idx, -2) != 0x3501 return nil end
|
||||
self.command_fields = matter.TLV.parse(raw, idx)
|
||||
idx = self.command_fields.next_idx # skip structure
|
||||
|
||||
# close
|
||||
if raw.get(idx, -2) != 0x1818 return nil end
|
||||
idx += 2
|
||||
if raw.get(idx, -4) != 0x24FF0118 return nil end
|
||||
|
||||
# all good
|
||||
return self
|
||||
end
|
||||
|
||||
# Example: command OnOff
|
||||
# {0 = false, 1 = false, 2 = [{0 = [[0 = 1U, 1 = 6U, 2 = 0U]], 1 = {}}], 255 = 1U}
|
||||
# 1528002801360215370024000124010624020018350118181824FF0118
|
||||
#
|
||||
# 15
|
||||
# 2800 0 = false SuppressResponse
|
||||
# 2801 1 = false TimedRequest
|
||||
# 3602 2 = list of CommandDataIB
|
||||
# 15
|
||||
# 3700 0 = CommandPathIB
|
||||
# 240001 0 = 1U endpoint
|
||||
# 240106 1 = 6U cluster
|
||||
# 240200 2 = 0U command
|
||||
# 18
|
||||
# 3501 1 = struct
|
||||
# 18
|
||||
# 18
|
||||
# 18
|
||||
# 24FF01 FF = 1U
|
||||
# 18
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 15 structure
|
||||
# 3600 tag 00 array
|
||||
# 17 list
|
||||
# 2402 tag 02 u1 "endpoint"
|
||||
# 01
|
||||
# 2403 tag 03 u1 "cluster"
|
||||
# 39 57U
|
||||
# 2404 tag 04 u1 "attribute"
|
||||
# 11 17U
|
||||
# 18
|
||||
# 18
|
||||
# 2903 tag 03 booltrue
|
||||
# 24FF tag FF u1
|
||||
# 01 1U
|
||||
# 18
|
||||
# {0 = [[[2 = 1U, 3 = 57U, 4 = 17U]]], 3 = true, 255 = 1U}
|
||||
|
||||
end
|
||||
matter.InvokeRequestMessage_solo = Matter_InvokeRequestMessage_solo
|
||||
|
||||
#################################################################################
|
||||
# ReportDataMessage class
|
||||
#################################################################################
|
||||
|
@ -44,11 +44,16 @@ class Matter_IM_Message
|
||||
|
||||
# build a response message stub
|
||||
def init(msg, opcode, reliable)
|
||||
self.reset(msg, opcode, reliable)
|
||||
end
|
||||
|
||||
def reset(msg, opcode, reliable)
|
||||
self.resp = msg.build_response(opcode, reliable)
|
||||
self.ready = true # by default send immediately
|
||||
self.expiration = tasmota.millis() + self.MSG_TIMEOUT
|
||||
self.last_counter = 0 # avoid `nil` value
|
||||
self.finish = false
|
||||
self.data = nil
|
||||
end
|
||||
|
||||
# the message is being removed due to expiration
|
||||
@ -90,9 +95,15 @@ class Matter_IM_Message
|
||||
if !self.ready return false end
|
||||
# import debug
|
||||
var resp = self.resp
|
||||
resp.encode_frame(self.data.to_TLV().tlv2raw()) # payload in cleartext
|
||||
var data_tlv = self.data.to_TLV()
|
||||
# matter.profiler.log(str(data_tlv))
|
||||
var data_raw = data_tlv.tlv2raw() # payload in cleartext
|
||||
# matter.profiler.log(data_raw.tohex())
|
||||
resp.encode_frame(data_raw) # payload in cleartext
|
||||
resp.encrypt()
|
||||
tasmota.log(format("MTR: <snd (%6i) id=%i exch=%i rack=%s", resp.session.local_session_id, resp.message_counter, resp.exchange_id, resp.ack_message_counter), 4)
|
||||
if tasmota.loglevel(4)
|
||||
tasmota.log(format("MTR: <snd (%6i) id=%i exch=%i rack=%s", resp.session.local_session_id, resp.message_counter, resp.exchange_id, resp.ack_message_counter), 4)
|
||||
end
|
||||
# tasmota.log("MTR: Perf/Send = " + str(debug.counters()), 4)
|
||||
responder.send_response_frame(resp)
|
||||
self.last_counter = resp.message_counter
|
||||
@ -297,7 +308,9 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData
|
||||
var resp = self.resp.build_standalone_ack(false)
|
||||
resp.encode_frame()
|
||||
resp.encrypt()
|
||||
tasmota.log(format("MTR: <Ack (%6i) ack=%i id=%i", resp.session.local_session_id, resp.ack_message_counter, resp.message_counter), 4)
|
||||
if tasmota.loglevel(4)
|
||||
tasmota.log(format("MTR: <Ack (%6i) ack=%i id=%i", resp.session.local_session_id, resp.ack_message_counter, resp.message_counter), 4)
|
||||
end
|
||||
responder.send_response_frame(resp)
|
||||
self.last_counter = resp.message_counter
|
||||
self.finish = true
|
||||
@ -422,7 +435,9 @@ class Matter_IM_SubscribeResponse : Matter_IM_ReportData
|
||||
def status_ok_received(msg)
|
||||
# tasmota.log(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
|
||||
tasmota.log(format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 3)
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 3)
|
||||
end
|
||||
return super(self).status_ok_received(msg)
|
||||
end
|
||||
|
||||
|
@ -171,8 +171,12 @@ class Matter_Frame
|
||||
#
|
||||
# Header is built from attributes
|
||||
# `payload` is a bytes() buffer for the app payload
|
||||
def encode_frame(payload)
|
||||
var raw = bytes()
|
||||
#
|
||||
# you can pass a `raw` bytes() object to be used
|
||||
def encode_frame(payload, raw)
|
||||
if raw == nil
|
||||
raw = bytes(16 + (payload ? size(payload) : 0))
|
||||
end
|
||||
# compute flags
|
||||
if self.flags == nil
|
||||
self.flags = 0x00
|
||||
@ -220,7 +224,7 @@ class Matter_Frame
|
||||
raw .. payload
|
||||
end
|
||||
|
||||
self.debug(raw)
|
||||
# self.debug(raw)
|
||||
self.raw = raw
|
||||
return raw
|
||||
end
|
||||
@ -343,11 +347,15 @@ class Matter_Frame
|
||||
#############################################################
|
||||
# decrypt with I2S key
|
||||
# return cleartext or `nil` if failed
|
||||
#
|
||||
# frame.raw is decrypted in-place and the MIC is removed
|
||||
# returns true if successful
|
||||
def decrypt()
|
||||
import crypto
|
||||
var session = self.session
|
||||
var raw = self.raw
|
||||
var mic = raw[-16..] # take last 16 bytes as signature
|
||||
var payload_idx = self.payload_idx
|
||||
var tag_len = 16
|
||||
|
||||
# decrypt the message with `i2r` key
|
||||
var i2r = session.get_i2r()
|
||||
@ -357,6 +365,7 @@ class Matter_Frame
|
||||
# compute privacy key, p.71
|
||||
tasmota.log("MTR: >>>>>>>>>>>>>>>>>>>> Compute Privacy TODO", 2)
|
||||
var k = session.get_i2r_privacy()
|
||||
var mic = raw[-16..] # take last 16 bytes as signature
|
||||
var n = bytes().add(self.local_session_id, -2) + mic[5..15] # session in Big Endian
|
||||
var m = self.raw[4 .. self.payload_idx-1]
|
||||
var m_clear = crypto.AES_CTR(k).decrypt(m, n, 2)
|
||||
@ -364,11 +373,9 @@ class Matter_Frame
|
||||
self.raw = self.raw[0..3] + m_clear + m[self.payload_idx .. ]
|
||||
end
|
||||
|
||||
# use AES_CCM
|
||||
var a = raw[0 .. self.payload_idx - 1]
|
||||
var p = raw[self.payload_idx .. -17]
|
||||
# recompute nonce
|
||||
var n = bytes()
|
||||
var n = self.message_handler._n_bytes # use cached bytes() object to avoid allocation
|
||||
n.clear()
|
||||
n.add(self.flags, 1)
|
||||
n.add(self.message_counter, 4)
|
||||
if self.source_node_id
|
||||
@ -381,28 +388,26 @@ class Matter_Frame
|
||||
end
|
||||
|
||||
# tasmota.log("MTR: ******************************", 4)
|
||||
# tasmota.log("MTR: raw =" + raw.tohex(), 4)
|
||||
# tasmota.log("MTR: i2r =" + i2r.tohex(), 4)
|
||||
# tasmota.log("MTR: p =" + p.tohex(), 4)
|
||||
# tasmota.log("MTR: a =" + a.tohex(), 4)
|
||||
# tasmota.log("MTR: p =" + raw[payload_idx .. -17].tohex(), 4)
|
||||
# tasmota.log("MTR: a =" + raw[0 .. payload_idx - 1].tohex(), 4)
|
||||
# tasmota.log("MTR: n =" + n.tohex(), 4)
|
||||
# tasmota.log("MTR: mic =" + mic.tohex(), 4)
|
||||
# tasmota.log("MTR: mic =" + raw[-16..].tohex(), 4)
|
||||
|
||||
# decrypt
|
||||
var aes = crypto.AES_CCM(i2r, n, a, size(p), 16)
|
||||
var cleartext = aes.decrypt(p)
|
||||
var tag = aes.tag()
|
||||
|
||||
# tasmota.log("MTR: ******************************", 4)
|
||||
# tasmota.log("MTR: cleartext =" + cleartext.tohex(), 4)
|
||||
# tasmota.log("MTR: tag =" + tag.tohex(), 4)
|
||||
# tasmota.log("MTR: ******************************", 4)
|
||||
|
||||
if tag != mic
|
||||
var ret = crypto.AES_CCM.decrypt1(i2r, # secret key
|
||||
n, 0, size(n), # nonce / IV
|
||||
raw, 0, payload_idx, # aad
|
||||
raw, payload_idx, size(raw) - payload_idx - tag_len, # encrypted - decrypted in-place
|
||||
raw, size(raw) - tag_len, tag_len) # MIC
|
||||
if ret
|
||||
# succcess
|
||||
raw.resize(size(raw) - tag_len) # remove MIC
|
||||
else
|
||||
tasmota.log("MTR: rejected packet due to invalid MIC", 3)
|
||||
return nil
|
||||
end
|
||||
|
||||
return cleartext
|
||||
return ret
|
||||
end
|
||||
|
||||
#############################################################
|
||||
@ -413,15 +418,15 @@ class Matter_Frame
|
||||
import crypto
|
||||
var raw = self.raw
|
||||
var session = self.session
|
||||
var payload_idx = self.payload_idx
|
||||
var tag_len = 16
|
||||
|
||||
# encrypt the message with `i2r` key
|
||||
var r2i = session.get_r2i()
|
||||
|
||||
# use AES_CCM
|
||||
var a = raw[0 .. self.payload_idx - 1]
|
||||
var p = raw[self.payload_idx .. ]
|
||||
# recompute nonce
|
||||
var n = bytes()
|
||||
var n = self.message_handler._n_bytes # use cached bytes() object to avoid allocation
|
||||
n.clear()
|
||||
n.add(self.flags, 1)
|
||||
n.add(self.message_counter, 4)
|
||||
if session.is_CASE() && session.get_device_id()
|
||||
@ -429,30 +434,14 @@ class Matter_Frame
|
||||
end
|
||||
n.resize(13) # add zeros
|
||||
|
||||
# tasmota.log("MTR: cleartext: " + self.raw.tohex(), 4)
|
||||
# encrypt
|
||||
raw.resize(size(raw) + tag_len) # make room for MIC
|
||||
var ret = crypto.AES_CCM.encrypt1(r2i, # secret key
|
||||
n, 0, size(n), # nonce / IV
|
||||
raw, 0, payload_idx, # aad
|
||||
raw, payload_idx, size(raw) - payload_idx - tag_len, # encrypted - decrypted in-place
|
||||
raw, size(raw) - tag_len, tag_len) # MIC
|
||||
|
||||
# tasmota.log("MTR: ******************************", 4)
|
||||
# tasmota.log("MTR: r2i =" + r2i.tohex(), 4)
|
||||
# tasmota.log("MTR: p =" + p.tohex(), 4)
|
||||
# tasmota.log("MTR: a =" + a.tohex(), 4)
|
||||
# tasmota.log("MTR: n =" + n.tohex(), 4)
|
||||
|
||||
# decrypt
|
||||
var aes = crypto.AES_CCM(r2i, n, a, size(p), 16)
|
||||
var ciphertext = aes.encrypt(p)
|
||||
var tag = aes.tag()
|
||||
|
||||
# tasmota.log("MTR: ******************************", 4)
|
||||
# tasmota.log("MTR: ciphertext =" + ciphertext.tohex(), 4)
|
||||
# tasmota.log("MTR: tag =" + tag.tohex(), 4)
|
||||
# tasmota.log("MTR: ******************************", 4)
|
||||
|
||||
# packet is good, put back content in raw
|
||||
self.raw.resize(self.payload_idx) # remove cleartext payload
|
||||
self.raw .. ciphertext # add ciphertext
|
||||
self.raw .. tag # add MIC
|
||||
|
||||
# tasmota.log("MTR: encrypted: " + self.raw.tohex(), 4)
|
||||
end
|
||||
|
||||
#############################################################
|
||||
|
@ -30,12 +30,16 @@ class Matter_MessageHandler
|
||||
var im # Instance of `matter.IM` handling Interaction Model
|
||||
var control_message # Instance of `matter.Control_Message` for MCSP
|
||||
|
||||
# cache for decryption bytes
|
||||
var _n_bytes # size 16 minimal, used by frame_buffer for decryption
|
||||
|
||||
#############################################################
|
||||
def init(device)
|
||||
self.device = device
|
||||
self.commissioning = matter.Commisioning_Context(self)
|
||||
self.im = matter.IM(device)
|
||||
self.control_message = matter.Control_Message(self)
|
||||
self._n_bytes = bytes(16)
|
||||
end
|
||||
|
||||
#############################################################
|
||||
@ -47,7 +51,9 @@ class Matter_MessageHandler
|
||||
if frame.x_flag_r # nothing to respond, check if we need a standalone ack
|
||||
var resp = frame.build_standalone_ack(reliable)
|
||||
resp.encode_frame()
|
||||
tasmota.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)
|
||||
if tasmota.loglevel(4)
|
||||
tasmota.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)
|
||||
end
|
||||
self.send_response_frame(resp)
|
||||
end
|
||||
end
|
||||
@ -62,7 +68,9 @@ class Matter_MessageHandler
|
||||
var resp = frame.build_standalone_ack(reliable)
|
||||
resp.encode_frame()
|
||||
resp.encrypt()
|
||||
tasmota.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)
|
||||
if tasmota.loglevel(4)
|
||||
tasmota.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)
|
||||
end
|
||||
self.send_response_frame(resp)
|
||||
end
|
||||
end
|
||||
@ -76,12 +84,13 @@ class Matter_MessageHandler
|
||||
def msg_received(raw, addr, port)
|
||||
var ret = false
|
||||
|
||||
self.device.profiler.log("msg_received")
|
||||
matter.profiler.log("msg_received")
|
||||
try
|
||||
# tasmota.log("MTR: MessageHandler::msg_received raw="+raw.tohex(), 4)
|
||||
var frame = matter.Frame(self, raw, addr, port)
|
||||
|
||||
var ok = frame.decode_header()
|
||||
# matter.profiler.log("msg_received_header_decoded")
|
||||
if !ok return false end
|
||||
|
||||
# do we need decryption?
|
||||
@ -103,7 +112,9 @@ class Matter_MessageHandler
|
||||
|
||||
# check if it's a duplicate
|
||||
if !session._counter_insecure_rcv.validate(frame.message_counter, false)
|
||||
tasmota.log(format("MTR: . Duplicate unencrypted message = %i ref = %i", frame.message_counter, session._counter_insecure_rcv.val()), 4)
|
||||
if tasmota.loglevel(4)
|
||||
tasmota.log(format("MTR: . Duplicate unencrypted message = %i ref = %i", frame.message_counter, session._counter_insecure_rcv.val()), 4)
|
||||
end
|
||||
self.send_simple_ack(frame, false #-not reliable-#)
|
||||
return false
|
||||
end
|
||||
@ -113,9 +124,13 @@ class Matter_MessageHandler
|
||||
if frame.opcode != 0x10 # don't show `MRP_Standalone_Acknowledgement`
|
||||
var op_name = matter.get_opcode_name(frame.opcode)
|
||||
if !op_name op_name = format("0x%02X", frame.opcode) end
|
||||
tasmota.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)
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.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
|
||||
tasmota.log(format("MTR: >rcv Ack (%6i) rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.message_counter, frame.x_flag_r ? "{reliable} " : "", frame.exchange_id, str(frame.ack_message_counter), addr, port), 4)
|
||||
if tasmota.loglevel(4)
|
||||
tasmota.log(format("MTR: >rcv Ack (%6i) rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.message_counter, frame.x_flag_r ? "{reliable} " : "", frame.exchange_id, str(frame.ack_message_counter), addr, port), 4)
|
||||
end
|
||||
end
|
||||
ret = self.commissioning.process_incoming(frame)
|
||||
# if ret is false, the implicit Ack was not sent
|
||||
@ -124,14 +139,19 @@ class Matter_MessageHandler
|
||||
else
|
||||
#############################################################
|
||||
# encrypted message
|
||||
tasmota.log(format("MTR: decode header: local_session_id=%i message_counter=%i", frame.local_session_id, frame.message_counter), 4)
|
||||
# matter.profiler.log("msg_received_header_encrypted_message_received")
|
||||
if tasmota.loglevel(4)
|
||||
tasmota.log(format("MTR: decode header: local_session_id=%i message_counter=%i", frame.local_session_id, frame.message_counter), 4)
|
||||
end
|
||||
|
||||
var session = self.device.sessions.get_session_by_local_session_id(frame.local_session_id)
|
||||
# matter.profiler.log("msg_received_header_session_retrieved")
|
||||
if session == nil
|
||||
tasmota.log("MTR: unknown local_session_id="+str(frame.local_session_id), 3)
|
||||
# tasmota.log("MTR: frame="+matter.inspect(frame), 3)
|
||||
return false
|
||||
end
|
||||
# matter.profiler.log("msg_received_session_found")
|
||||
if addr session._ip = addr end
|
||||
if port session._port = port end
|
||||
session._message_handler = self
|
||||
@ -139,22 +159,26 @@ class Matter_MessageHandler
|
||||
|
||||
# check if it's a duplicate
|
||||
if !session.counter_rcv_validate(frame.message_counter, true)
|
||||
tasmota.log("MTR: . Duplicate encrypted message = " + str(frame.message_counter) + " counter=" + str(session.counter_rcv), 3)
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log("MTR: . Duplicate encrypted message = " + str(frame.message_counter) + " counter=" + str(session.counter_rcv), 3)
|
||||
end
|
||||
self.send_encrypted_ack(frame, false #-not reliable-#)
|
||||
return false
|
||||
end
|
||||
|
||||
var cleartext = frame.decrypt()
|
||||
if !cleartext return false end
|
||||
var decrypt_ok = frame.decrypt()
|
||||
matter.profiler.log("msg_received_header_frame_decrypted")
|
||||
if !decrypt_ok return false end
|
||||
|
||||
# packet is good, put back content in raw
|
||||
frame.raw = frame.raw[0 .. frame.payload_idx - 1] # remove encrypted payload
|
||||
frame.raw .. cleartext # add cleartext
|
||||
# matter.profiler.log("msg_received_payload_undecoded")
|
||||
|
||||
# continue decoding
|
||||
# tasmota.log(format("MTR: idx=%i clear=%s", frame.payload_idx, frame.raw.tohex()), 4)
|
||||
frame.decode_payload()
|
||||
tasmota.log("MTR: > Decrypted message: protocol_id:"+str(frame.protocol_id)+" opcode="+str(frame.opcode)+" exchange_id="+str(frame.exchange_id & 0xFFFF), 4)
|
||||
# matter.profiler.log("msg_received_payload_decoded")
|
||||
if tasmota.loglevel(4)
|
||||
tasmota.log("MTR: > Decrypted message: protocol_id:"+str(frame.protocol_id)+" opcode="+str(frame.opcode)+" exchange_id="+str(frame.exchange_id & 0xFFFF), 4)
|
||||
end
|
||||
|
||||
# tasmota.log(format("MTR: >rcv (%6i) [%02X/%02X] rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.protocol_id, frame.opcode, frame.message_counter, frame.exchange_id, str(frame.ack_message_counter), frame.x_flag_r ? "{reliable} " : "", addr, port), 3)
|
||||
|
||||
@ -174,8 +198,9 @@ class Matter_MessageHandler
|
||||
ret = true
|
||||
elif protocol_id == 0x0001 # PROTOCOL_ID_INTERACTION_MODEL
|
||||
# dispatch to IM Protocol Messages
|
||||
matter.profiler.log("process_IM_start")
|
||||
ret = self.im.process_incoming(frame)
|
||||
self.device.profiler.log("process_IM_end")
|
||||
matter.profiler.log("process_IM_end")
|
||||
# if `ret` is true, we have something to send
|
||||
if ret
|
||||
self.im.send_enqueued(self)
|
||||
@ -222,7 +247,7 @@ class Matter_MessageHandler
|
||||
# msg.exchange_id: exchange id (int)
|
||||
# msg.local_session_id: local session (for logging)
|
||||
def send_response_frame(msg)
|
||||
self.device.profiler.log("send_response_frame")
|
||||
matter.profiler.log("send_response_frame")
|
||||
self.device.msg_send(msg)
|
||||
end
|
||||
|
||||
|
@ -30,21 +30,23 @@ class Matter_Path
|
||||
var endpoint # endpoint or `nil` if expansion
|
||||
var cluster # cluster or `nil` if expansion
|
||||
var attribute # attribute or `nil` if expansion
|
||||
var fabric_filtered # bool or nil
|
||||
var command # command
|
||||
var status # status to be returned (matter.SUCCESS or matter.<ERROR>)
|
||||
var log # any string that needs to be logged (used to show significant parameters for commands)
|
||||
var msg # reference of the original message
|
||||
|
||||
# clear the context, allows reuse of the same object
|
||||
def clear()
|
||||
var n = nil
|
||||
# reset the object, allows reuse of the same object
|
||||
def reset()
|
||||
var n = nil # it's actually more compact code to load `nil` into a register and assign all members
|
||||
self.endpoint = n
|
||||
self.cluster = n
|
||||
self.attribute = n
|
||||
self.fabric_filtered = n
|
||||
self.command = n
|
||||
self.status = n
|
||||
self.log = n
|
||||
self.msh = n
|
||||
self.msg = n
|
||||
end
|
||||
|
||||
def tostring()
|
||||
|
@ -147,16 +147,32 @@ class Matter_Plugin
|
||||
def get_endpoint()
|
||||
return self.endpoint
|
||||
end
|
||||
def get_cluster_list(ep)
|
||||
def get_cluster_list()
|
||||
var ret = []
|
||||
for k: self.clusters.keys()
|
||||
ret.push(k)
|
||||
end
|
||||
return ret
|
||||
end
|
||||
def get_attribute_list(ep, cluster)
|
||||
def contains_cluster(cluster)
|
||||
return self.clusters.contains(cluster)
|
||||
end
|
||||
def get_attribute_list(cluster)
|
||||
return self.clusters.find(cluster, [])
|
||||
end
|
||||
def contains_attribute(cluster, attribute)
|
||||
var attr_list = self.clusters.find(cluster)
|
||||
if attr_list != nil
|
||||
var idx = 0
|
||||
while idx < size(attr_list)
|
||||
if attr_list[idx] == attribute
|
||||
return true
|
||||
end
|
||||
idx += 1
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# Does it handle this endpoint and this cluster
|
||||
@ -171,7 +187,10 @@ class Matter_Plugin
|
||||
#############################################################
|
||||
#############################################################
|
||||
# read attribute
|
||||
def read_attribute(session, ctx)
|
||||
#
|
||||
# Arg:
|
||||
# `tlv_solo` contains an instance of `Matter_TLV_item` to avoid allocating a new object with TLV.create_TLV
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -200,18 +219,18 @@ class Matter_Plugin
|
||||
var pl = TLV.Matter_TLV_array()
|
||||
return pl
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0) #
|
||||
return tlv_solo.set(TLV.U4, 0) #
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 1) # "Initial Release"
|
||||
return tlv_solo.set(TLV.U4, 1) # "Initial Release"
|
||||
end
|
||||
|
||||
# ====================================================================================================
|
||||
elif cluster == 0x0039 # ========== Bridged Device Basic Information 9.13 p.485 ==========
|
||||
|
||||
if attribute == 0x0011 # ---------- Reachable / bool ----------
|
||||
return TLV.create_TLV(TLV.BOOL, 1) # by default we are reachable
|
||||
return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable
|
||||
else
|
||||
return super(self).read_attribute(session, ctx) # rest is handled by 0x0028
|
||||
return super(self).read_attribute(session, ctx, tlv_solo) # rest is handled by 0x0028
|
||||
end
|
||||
else
|
||||
return nil
|
||||
|
@ -37,7 +37,7 @@ class Matter_Plugin_Aggregator : Matter_Plugin
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -55,11 +55,11 @@ class Matter_Plugin_Aggregator : Matter_Plugin
|
||||
end
|
||||
return pl
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
|
||||
end
|
||||
# no match found, return that the attribute is unsupported
|
||||
|
@ -175,7 +175,7 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device
|
||||
#############################################################
|
||||
# read attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -187,35 +187,35 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device
|
||||
if attribute == 0x0003 # ---------- ProductName / string ----------
|
||||
var name = self.http_remote.get_info().find("name")
|
||||
if name
|
||||
return TLV.create_TLV(TLV.UTF1, name)
|
||||
return tlv_solo.set(TLV.UTF1, name)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x000A # ---------- SoftwareVersionString / string ----------
|
||||
var version_full = self.http_remote.get_info().find("version")
|
||||
if version_full
|
||||
var version_end = string.find(version_full, '(')
|
||||
if version_end > 0 version_full = version_full[0..version_end - 1] end
|
||||
return TLV.create_TLV(TLV.UTF1, version_full)
|
||||
return tlv_solo.set(TLV.UTF1, version_full)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x000F || attribute == 0x0012 # ---------- SerialNumber || UniqueID / string ----------
|
||||
var mac = self.http_remote.get_info().find("mac")
|
||||
if mac
|
||||
return TLV.create_TLV(TLV.UTF1, mac)
|
||||
return tlv_solo.set(TLV.UTF1, mac)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0011 # ---------- Reachable / bool ----------
|
||||
# self.is_reachable_lazy_sync() # Not needed anymore
|
||||
return TLV.create_TLV(TLV.BOOL, self.http_remote.reachable) # TODO find a way to do a ping
|
||||
return tlv_solo.set(TLV.BOOL, self.http_remote.reachable) # TODO find a way to do a ping
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -90,7 +90,7 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -99,15 +99,15 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP
|
||||
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0000 # ---------- OnOff / bool ----------
|
||||
return TLV.create_TLV(TLV.BOOL, self.shadow_onoff)
|
||||
return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting
|
||||
return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
|
||||
return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -78,7 +78,7 @@ class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -88,30 +88,30 @@ class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0000 # ---------- CurrentLevel / u1 ----------
|
||||
if self.shadow_bri != nil
|
||||
return TLV.create_TLV(TLV.U1, self.shadow_bri)
|
||||
return tlv_solo.set(TLV.U1, self.shadow_bri)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0002 # ---------- MinLevel / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)
|
||||
return tlv_solo.set(TLV.U1, 0)
|
||||
elif attribute == 0x0003 # ---------- MaxLevel / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 254)
|
||||
return tlv_solo.set(TLV.U1, 254)
|
||||
elif attribute == 0x000F # ---------- Options / map8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0) #
|
||||
return tlv_solo.set(TLV.U1, 0) #
|
||||
elif attribute == 0x0011 # ---------- OnLevel / u1 ----------
|
||||
if self.shadow_bri != nil
|
||||
return TLV.create_TLV(TLV.U1, self.shadow_bri)
|
||||
return tlv_solo.set(TLV.U1, self.shadow_bri)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0X01) # OnOff
|
||||
return tlv_solo.set(TLV.U4, 0X01) # OnOff
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation"
|
||||
return tlv_solo.set(TLV.U4, 5) # "new data model format and notation"
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -95,7 +95,7 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -105,29 +105,29 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ----------
|
||||
if self.shadow_ct != nil
|
||||
return TLV.create_TLV(TLV.U1, self.shadow_ct)
|
||||
return tlv_solo.set(TLV.U1, self.shadow_ct)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0008 # ---------- ColorMode / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 2)# 2 = ColorTemperatureMireds
|
||||
return tlv_solo.set(TLV.U1, 2)# 2 = ColorTemperatureMireds
|
||||
elif attribute == 0x000F # ---------- Options / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)
|
||||
return tlv_solo.set(TLV.U1, 0)
|
||||
elif attribute == 0x400B # ---------- ColorTempPhysicalMinMireds / u2 ----------
|
||||
return TLV.create_TLV(TLV.U1, self.ct_min)
|
||||
return tlv_solo.set(TLV.U1, self.ct_min)
|
||||
elif attribute == 0x400C # ---------- ColorTempPhysicalMaxMireds / u2 ----------
|
||||
return TLV.create_TLV(TLV.U1, self.ct_max)
|
||||
return tlv_solo.set(TLV.U1, self.ct_max)
|
||||
|
||||
elif attribute == 0x400A # ---------- ColorCapabilities / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0x10) # CT
|
||||
return tlv_solo.set(TLV.U4, 0x10) # CT
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0x10) # CT
|
||||
return tlv_solo.set(TLV.U4, 0x10) # CT
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
|
||||
return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -95,7 +95,7 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -105,39 +105,39 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0000 # ---------- CurrentHue / u1 ----------
|
||||
if self.shadow_hue != nil
|
||||
return TLV.create_TLV(TLV.U1, self.shadow_hue)
|
||||
return tlv_solo.set(TLV.U1, self.shadow_hue)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0001 # ---------- CurrentSaturation / u2 ----------
|
||||
if self.shadow_sat != nil
|
||||
return TLV.create_TLV(TLV.U1, self.shadow_sat)
|
||||
return tlv_solo.set(TLV.U1, self.shadow_sat)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)
|
||||
return tlv_solo.set(TLV.U1, 0)
|
||||
elif attribute == 0x0008 # ---------- ColorMode / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation
|
||||
return tlv_solo.set(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation
|
||||
elif attribute == 0x000F # ---------- Options / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)
|
||||
return tlv_solo.set(TLV.U1, 0)
|
||||
elif attribute == 0x4001 # ---------- EnhancedColorMode / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)
|
||||
return tlv_solo.set(TLV.U1, 0)
|
||||
elif attribute == 0x400A # ---------- ColorCapabilities / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0x01) # HS
|
||||
return tlv_solo.set(TLV.U4, 0x01) # HS
|
||||
|
||||
# Defined Primaries Information Attribute Set
|
||||
elif attribute == 0x0010 # ---------- NumberOfPrimaries / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)
|
||||
return tlv_solo.set(TLV.U1, 0)
|
||||
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0x01) # HS
|
||||
return tlv_solo.set(TLV.U4, 0x01) # HS
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
|
||||
return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -71,7 +71,7 @@ class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -80,18 +80,18 @@ class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP
|
||||
if cluster == 0x0045 # ========== Boolean State ==========
|
||||
if attribute == 0x0000 # ---------- StateValue / bool ----------
|
||||
if self.shadow_contact != nil
|
||||
return TLV.create_TLV(TLV.BOOL, self.shadow_contact)
|
||||
return tlv_solo.set(TLV.BOOL, self.shadow_contact)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0)
|
||||
return tlv_solo.set(TLV.U4, 0)
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 1) # 1 = Initial release
|
||||
return tlv_solo.set(TLV.U4, 1) # 1 = Initial release
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -56,7 +56,7 @@ class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -65,22 +65,22 @@ class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor
|
||||
if cluster == 0x0405 # ========== Humidity Measurement 2.4 p.98 ==========
|
||||
if attribute == 0x0000 # ---------- Humidity / u16 ----------
|
||||
if self.shadow_value != nil
|
||||
return TLV.create_TLV(TLV.U2, int(self.shadow_value))
|
||||
return tlv_solo.set(TLV.U2, int(self.shadow_value))
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0001 # ---------- MinMeasuredValue / u16 ----------
|
||||
return TLV.create_TLV(TLV.U2, 500) # 0%
|
||||
return tlv_solo.set(TLV.U2, 500) # 0%
|
||||
elif attribute == 0x0002 # ---------- MaxMeasuredValue / u16 ----------
|
||||
return TLV.create_TLV(TLV.U2, 10000) # 100%
|
||||
return tlv_solo.set(TLV.U2, 10000) # 100%
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range
|
||||
return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
|
||||
return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -63,7 +63,7 @@ class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -72,22 +72,22 @@ class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor
|
||||
if cluster == 0x0400 # ========== Illuminance Measurement 2.2 p.95 ==========
|
||||
if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
|
||||
if self.shadow_value != nil
|
||||
return TLV.create_TLV(TLV.U2, int(self.shadow_value))
|
||||
return tlv_solo.set(TLV.U2, int(self.shadow_value))
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
|
||||
return TLV.create_TLV(TLV.U2, 1) # 1 lux
|
||||
return tlv_solo.set(TLV.U2, 1) # 1 lux
|
||||
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
|
||||
return TLV.create_TLV(TLV.U2, 0xFFFE)
|
||||
return tlv_solo.set(TLV.U2, 0xFFFE)
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0)
|
||||
return tlv_solo.set(TLV.U4, 0)
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
|
||||
return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -71,7 +71,7 @@ class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -80,22 +80,22 @@ class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP
|
||||
if cluster == 0x0406 # ========== Occupancy Sensing ==========
|
||||
if attribute == 0x0000 # ---------- Occupancy / U8 ----------
|
||||
if self.shadow_occupancy != nil
|
||||
return TLV.create_TLV(TLV.U1, self.shadow_occupancy)
|
||||
return tlv_solo.set(TLV.U1, self.shadow_occupancy)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0001 # ---------- OccupancySensorType / enum8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 3) # physical contact
|
||||
return tlv_solo.set(TLV.U1, 3) # physical contact
|
||||
elif attribute == 0x0002 # ---------- OccupancySensorTypeBitmap / u8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0) # unknown
|
||||
return tlv_solo.set(TLV.U1, 0) # unknown
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0)
|
||||
return tlv_solo.set(TLV.U4, 0)
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 3) # 4 = New data model format and notation
|
||||
return tlv_solo.set(TLV.U4, 3) # 4 = New data model format and notation
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -56,7 +56,7 @@ class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -65,22 +65,22 @@ class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor
|
||||
if cluster == 0x0403 # ========== Pressure Measurement 2.4 p.98 ==========
|
||||
if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
|
||||
if self.shadow_value != nil
|
||||
return TLV.create_TLV(TLV.I2, int(self.shadow_value))
|
||||
return tlv_solo.set(TLV.I2, int(self.shadow_value))
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
|
||||
return TLV.create_TLV(TLV.I2, 500) # 500 hPA
|
||||
return tlv_solo.set(TLV.I2, 500) # 500 hPA
|
||||
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
|
||||
return TLV.create_TLV(TLV.I2, 1500) # 1500 hPA
|
||||
return tlv_solo.set(TLV.I2, 1500) # 1500 hPA
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range
|
||||
return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
|
||||
return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -59,7 +59,7 @@ class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -68,22 +68,22 @@ class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor
|
||||
if cluster == 0x0402 # ========== Temperature Measurement 2.3 p.97 ==========
|
||||
if attribute == 0x0000 # ---------- MeasuredValue / i16 (*100) ----------
|
||||
if self.shadow_value != nil
|
||||
return TLV.create_TLV(TLV.I2, self.shadow_value)
|
||||
return tlv_solo.set(TLV.I2, self.shadow_value)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 (*100) ----------
|
||||
return TLV.create_TLV(TLV.I2, -5000) # -50 °C
|
||||
return tlv_solo.set(TLV.I2, -5000) # -50 °C
|
||||
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ----------
|
||||
return TLV.create_TLV(TLV.I2, 15000) # 150 °C
|
||||
return tlv_solo.set(TLV.I2, 15000) # 150 °C
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0)
|
||||
return tlv_solo.set(TLV.U4, 0)
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 4) # 4 = New data model format and notation
|
||||
return tlv_solo.set(TLV.U4, 4) # 4 = New data model format and notation
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -55,7 +55,7 @@ class Matter_Plugin_Device : Matter_Plugin
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -63,13 +63,13 @@ class Matter_Plugin_Device : Matter_Plugin
|
||||
# ====================================================================================================
|
||||
if cluster == 0x0003 # ========== Identify 1.2 p.16 ==========
|
||||
if attribute == 0x0000 # ---------- IdentifyTime / u2 ----------
|
||||
return TLV.create_TLV(TLV.U2, 0) # no identification in progress
|
||||
return tlv_solo.set(TLV.U2, 0) # no identification in progress
|
||||
elif attribute == 0x0001 # ---------- IdentifyType / enum8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0) # IdentifyType = 0x00 None
|
||||
return tlv_solo.set(TLV.U1, 0) # IdentifyType = 0x00 None
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0) # no features
|
||||
return tlv_solo.set(TLV.U4, 0) # no features
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 4) # "new data model format and notation"
|
||||
return tlv_solo.set(TLV.U4, 4) # "new data model format and notation"
|
||||
end
|
||||
|
||||
# ====================================================================================================
|
||||
@ -77,17 +77,17 @@ class Matter_Plugin_Device : Matter_Plugin
|
||||
if attribute == 0x0000 # ---------- ----------
|
||||
return nil # TODO
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0)#
|
||||
return tlv_solo.set(TLV.U4, 0)#
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 4)# "new data model format and notation"
|
||||
return tlv_solo.set(TLV.U4, 4)# "new data model format and notation"
|
||||
end
|
||||
|
||||
# ====================================================================================================
|
||||
elif cluster == 0x0005 # ========== Scenes 1.4 p.30 - no writable ==========
|
||||
if attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting
|
||||
return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
|
||||
return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
|
||||
end
|
||||
|
||||
# ====================================================================================================
|
||||
@ -111,7 +111,7 @@ class Matter_Plugin_Device : Matter_Plugin
|
||||
end
|
||||
return dtl
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
|
||||
# ====================================================================================================
|
||||
@ -119,26 +119,26 @@ class Matter_Plugin_Device : Matter_Plugin
|
||||
import string
|
||||
|
||||
if attribute == 0x0003 # ---------- ProductName / string ----------
|
||||
return TLV.create_TLV(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName'])
|
||||
return tlv_solo.set(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName'])
|
||||
elif attribute == 0x0005 # ---------- NodeLabel / string ----------
|
||||
return TLV.create_TLV(TLV.UTF1, self.get_name())
|
||||
return tlv_solo.set(TLV.UTF1, self.get_name())
|
||||
elif attribute == 0x000A # ---------- SoftwareVersionString / string ----------
|
||||
var version_full = tasmota.cmd("Status 2", true)['StatusFWR']['Version']
|
||||
var version_end = string.find(version_full, '(')
|
||||
if version_end > 0 version_full = version_full[0..version_end - 1] end
|
||||
return TLV.create_TLV(TLV.UTF1, version_full)
|
||||
return tlv_solo.set(TLV.UTF1, version_full)
|
||||
elif attribute == 0x000F # ---------- SerialNumber / string ----------
|
||||
return TLV.create_TLV(TLV.UTF1, tasmota.wifi().find("mac", ""))
|
||||
return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", ""))
|
||||
elif attribute == 0x0011 # ---------- Reachable / bool ----------
|
||||
return TLV.create_TLV(TLV.BOOL, 1) # by default we are reachable
|
||||
return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable
|
||||
elif attribute == 0x0012 # ---------- UniqueID / string 32 max ----------
|
||||
return TLV.create_TLV(TLV.UTF1, tasmota.wifi().find("mac", ""))
|
||||
return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", ""))
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -64,7 +64,7 @@ class Matter_Plugin_Light0 : Matter_Plugin_Device
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -73,15 +73,15 @@ class Matter_Plugin_Light0 : Matter_Plugin_Device
|
||||
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0000 # ---------- OnOff / bool ----------
|
||||
return TLV.create_TLV(TLV.BOOL, self.shadow_onoff)
|
||||
return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting
|
||||
return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
|
||||
return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -71,7 +71,7 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -80,23 +80,23 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0
|
||||
if cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0000 # ---------- CurrentLevel / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, self.shadow_bri)
|
||||
return tlv_solo.set(TLV.U1, self.shadow_bri)
|
||||
elif attribute == 0x0002 # ---------- MinLevel / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)
|
||||
return tlv_solo.set(TLV.U1, 0)
|
||||
elif attribute == 0x0003 # ---------- MaxLevel / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 254)
|
||||
return tlv_solo.set(TLV.U1, 254)
|
||||
elif attribute == 0x000F # ---------- Options / map8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0) #
|
||||
return tlv_solo.set(TLV.U1, 0) #
|
||||
elif attribute == 0x0011 # ---------- OnLevel / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, self.shadow_bri)
|
||||
return tlv_solo.set(TLV.U1, self.shadow_bri)
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0X01) # OnOff
|
||||
return tlv_solo.set(TLV.U4, 0X01) # OnOff
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation"
|
||||
return tlv_solo.set(TLV.U4, 5) # "new data model format and notation"
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -78,7 +78,7 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -87,24 +87,24 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
|
||||
if cluster == 0x0300 # ========== Color Control 3.2 p.111 ==========
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ----------
|
||||
return TLV.create_TLV(TLV.U1, self.shadow_ct)
|
||||
return tlv_solo.set(TLV.U1, self.shadow_ct)
|
||||
elif attribute == 0x0008 # ---------- ColorMode / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 2)# 2 = ColorTemperatureMireds
|
||||
return tlv_solo.set(TLV.U1, 2)# 2 = ColorTemperatureMireds
|
||||
elif attribute == 0x000F # ---------- Options / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)
|
||||
return tlv_solo.set(TLV.U1, 0)
|
||||
elif attribute == 0x400B # ---------- ColorTempPhysicalMinMireds / u2 ----------
|
||||
return TLV.create_TLV(TLV.U1, self.ct_min)
|
||||
return tlv_solo.set(TLV.U1, self.ct_min)
|
||||
elif attribute == 0x400C # ---------- ColorTempPhysicalMaxMireds / u2 ----------
|
||||
return TLV.create_TLV(TLV.U1, self.ct_max)
|
||||
return tlv_solo.set(TLV.U1, self.ct_max)
|
||||
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0x10) # CT
|
||||
return tlv_solo.set(TLV.U4, 0x10) # CT
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
|
||||
return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -70,7 +70,7 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -79,32 +79,32 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1
|
||||
if cluster == 0x0300 # ========== Color Control 3.2 p.111 ==========
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0000 # ---------- CurrentHue / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, self.shadow_hue)
|
||||
return tlv_solo.set(TLV.U1, self.shadow_hue)
|
||||
elif attribute == 0x0001 # ---------- CurrentSaturation / u2 ----------
|
||||
return TLV.create_TLV(TLV.U1, self.shadow_sat)
|
||||
return tlv_solo.set(TLV.U1, self.shadow_sat)
|
||||
elif attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)
|
||||
return tlv_solo.set(TLV.U1, 0)
|
||||
elif attribute == 0x0008 # ---------- ColorMode / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation
|
||||
return tlv_solo.set(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation
|
||||
elif attribute == 0x000F # ---------- Options / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)
|
||||
return tlv_solo.set(TLV.U1, 0)
|
||||
elif attribute == 0x4001 # ---------- EnhancedColorMode / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)
|
||||
return tlv_solo.set(TLV.U1, 0)
|
||||
elif attribute == 0x400A # ---------- ColorCapabilities / map2 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0x01) # HS
|
||||
return tlv_solo.set(TLV.U1, 0x01) # HS
|
||||
|
||||
# Defined Primaries Information Attribute Set
|
||||
elif attribute == 0x0010 # ---------- NumberOfPrimaries / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0)
|
||||
return tlv_solo.set(TLV.U1, 0)
|
||||
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0x01) # HS
|
||||
return tlv_solo.set(TLV.U4, 0x01) # HS
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
|
||||
return tlv_solo.set(TLV.U4, 5) # "new data model format and notation, FeatureMap support"
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -86,7 +86,7 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -95,15 +95,15 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device
|
||||
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0000 # ---------- OnOff / bool ----------
|
||||
return TLV.create_TLV(TLV.BOOL, self.shadow_onoff)
|
||||
return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting
|
||||
return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
|
||||
return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -57,7 +57,7 @@ class Matter_Plugin_Root : Matter_Plugin
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
import string
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
@ -66,18 +66,18 @@ class Matter_Plugin_Root : Matter_Plugin
|
||||
if cluster == 0x0030 # ========== GeneralCommissioning cluster 11.9 p.627 ==========
|
||||
|
||||
if attribute == 0x0000 # ---------- Breadcrumb ----------
|
||||
return TLV.create_TLV(TLV.U8, session._breadcrumb)
|
||||
return tlv_solo.set(TLV.U8, session._breadcrumb)
|
||||
elif attribute == 0x0001 # ---------- BasicCommissioningInfo / BasicCommissioningInfo----------
|
||||
var bci = TLV.Matter_TLV_struct()
|
||||
bci.add_TLV(0, TLV.U2, 60) # FailSafeExpiryLengthSeconds
|
||||
bci.add_TLV(1, TLV.U2, 900) # MaxCumulativeFailsafeSeconds
|
||||
return bci
|
||||
elif attribute == 0x0002 # ---------- RegulatoryConfig / RegulatoryLocationType ----------
|
||||
return TLV.create_TLV(TLV.U1, 2) # 2 = IndoorOutdoor | esp-matter = 0
|
||||
return tlv_solo.set(TLV.U1, 2) # 2 = IndoorOutdoor | esp-matter = 0
|
||||
elif attribute == 0x0003 # ---------- LocationCapability / RegulatoryLocationType----------
|
||||
return TLV.create_TLV(TLV.U1, 2) # 2 = IndoorOutdoor
|
||||
return tlv_solo.set(TLV.U1, 2) # 2 = IndoorOutdoor
|
||||
elif attribute == 0x0004 # ---------- SupportsConcurrentConnection / bool ----------
|
||||
return TLV.create_TLV(TLV.BOOL, false) # false - maybe can set to true
|
||||
return tlv_solo.set(TLV.BOOL, false) # false - maybe can set to true
|
||||
end
|
||||
# ====================================================================================================
|
||||
elif cluster == 0x0032 # ========== Diagnostic Logs Cluster 11.10 p.637 ==========
|
||||
@ -124,12 +124,12 @@ class Matter_Plugin_Root : Matter_Plugin
|
||||
end
|
||||
return nwi
|
||||
elif attribute == 0x0001 # ---------- RebootCount u16 ----------
|
||||
return TLV.create_TLV(TLV.U2, tasmota.cmd("Status 1", true)['StatusPRM']['BootCount'])
|
||||
return tlv_solo.set(TLV.U2, tasmota.cmd("Status 1", true)['StatusPRM']['BootCount'])
|
||||
elif attribute == 0x0002 # ---------- UpTime u16 ----------
|
||||
return TLV.create_TLV(TLV.U4, tasmota.cmd("Status 11", true)['StatusSTS']['UptimeSec'])
|
||||
return tlv_solo.set(TLV.U4, tasmota.cmd("Status 11", true)['StatusSTS']['UptimeSec'])
|
||||
# TODO add later other attributes
|
||||
elif attribute == 0x0008 # ---------- TestEventTriggersEnabled bool ----------
|
||||
return TLV.create_TLV(TLV.BOOL, false) # false - maybe can set to true
|
||||
return tlv_solo.set(TLV.BOOL, false) # false - maybe can set to true
|
||||
end
|
||||
|
||||
# ====================================================================================================
|
||||
@ -139,18 +139,19 @@ class Matter_Plugin_Root : Matter_Plugin
|
||||
# ====================================================================================================
|
||||
elif cluster == 0x0038 # ========== Time Synchronization 11.16 p.689 ==========
|
||||
if attribute == 0x0000 # ---------- UTCTime / epoch_us ----------
|
||||
var epoch_us = int64(tasmota.rtc()['utc']) * int64(1000000)
|
||||
return TLV.create_TLV(TLV.U8, epoch_us) # TODO test the conversion of int64()
|
||||
var epoch_us = int64(tasmota.rtc_utc()) * int64(1000000)
|
||||
return tlv_solo.set(TLV.U8, epoch_us) # TODO test the conversion of int64()
|
||||
elif attribute == 0x0001 # ---------- Granularity / enum ----------
|
||||
return TLV.create_TLV(TLV.U1, 3) # MillisecondsGranularity (NTP every hour, i.e. 36ms max drift)
|
||||
return tlv_solo.set(TLV.U1, 3) # MillisecondsGranularity (NTP every hour, i.e. 36ms max drift)
|
||||
# TODO add some missing args
|
||||
elif attribute == 0x0007 # ---------- LocalTime / epoch_us ----------
|
||||
var epoch_us = int64(tasmota.rtc()['local']) * int64(1000000)
|
||||
return TLV.create_TLV(TLV.U8, epoch_us) # TODO test the conversion of int64()
|
||||
return tlv_solo.set(TLV.U8, epoch_us) # TODO test the conversion of int64()
|
||||
end
|
||||
|
||||
# ====================================================================================================
|
||||
elif cluster == 0x003E # ========== Node Operational Credentials Cluster 11.17 p.704 ==========
|
||||
self.send_ack_now(ctx.msg) # long operation, send Ack first
|
||||
|
||||
if attribute == 0x0000 # ---------- NOCs / list[NOCStruct] ----------
|
||||
var nocl = TLV.Matter_TLV_array() # NOCs, p.711
|
||||
@ -175,16 +176,16 @@ class Matter_Plugin_Root : Matter_Plugin
|
||||
end
|
||||
return fabrics
|
||||
elif attribute == 0x0002 # ---------- SupportedFabrics / u1 ----------
|
||||
return TLV.create_TLV(TLV.U1, matter.Fabric._MAX_CASE) # Max 5 fabrics
|
||||
return tlv_solo.set(TLV.U1, matter.Fabric._MAX_CASE) # Max 5 fabrics
|
||||
elif attribute == 0x0003 # ---------- CommissionedFabrics / u1 ----------
|
||||
var fabric_actice = self.device.sessions.count_active_fabrics()
|
||||
return TLV.create_TLV(TLV.U1, fabric_actice) # number of active fabrics
|
||||
return tlv_solo.set(TLV.U1, fabric_actice) # number of active fabrics
|
||||
elif attribute == 0x0004 # ---------- TrustedRootCertificates / list[octstr] ----------
|
||||
# TODO
|
||||
elif attribute == 0x0005 # ---------- Current FabricIndex / u1 ----------
|
||||
var fab_index = session._fabric.get_fabric_index()
|
||||
if fab_index == nil fab_index = 0 end # if PASE session, then the fabric index should be zero
|
||||
return TLV.create_TLV(TLV.U1, fab_index) # number of active sessions
|
||||
return tlv_solo.set(TLV.U1, fab_index) # number of active sessions
|
||||
end
|
||||
|
||||
# ====================================================================================================
|
||||
@ -193,57 +194,58 @@ class Matter_Plugin_Root : Matter_Plugin
|
||||
var commissioning_open = self.device.is_commissioning_open()
|
||||
var basic_commissioning = self.device.is_root_commissioning_open()
|
||||
var val = commissioning_open ? (basic_commissioning ? 2 #-BasicWindowOpen-# : 1 #-EnhancedWindowOpen-#) : 0 #-WindowNotOpen-#
|
||||
return TLV.create_TLV(TLV.U1, val)
|
||||
return tlv_solo.set(TLV.U1, val)
|
||||
elif attribute == 0x0001 # ---------- AdminFabricIndex / u16 ----------
|
||||
var admin_fabric = self.device.commissioning_admin_fabric
|
||||
if admin_fabric != nil
|
||||
return TLV.create_TLV(TLV.U2, admin_fabric.get_fabric_index())
|
||||
return tlv_solo.set(TLV.U2, admin_fabric.get_fabric_index())
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0002 # ---------- AdminVendorId / u16 ----------
|
||||
var admin_fabric = self.device.commissioning_admin_fabric
|
||||
if admin_fabric != nil
|
||||
return TLV.create_TLV(TLV.U2, admin_fabric.get_admin_vendor())
|
||||
return tlv_solo.set(TLV.U2, admin_fabric.get_admin_vendor())
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
end
|
||||
|
||||
# ====================================================================================================
|
||||
elif cluster == 0x0028 # ========== Basic Information Cluster cluster 11.1 p.565 ==========
|
||||
self.send_ack_now(ctx.msg) # long operation, send Ack first
|
||||
|
||||
if attribute == 0x0000 # ---------- DataModelRevision / CommissioningWindowStatus ----------
|
||||
return TLV.create_TLV(TLV.U2, 1)
|
||||
return tlv_solo.set(TLV.U2, 1)
|
||||
elif attribute == 0x0001 # ---------- VendorName / string ----------
|
||||
return TLV.create_TLV(TLV.UTF1, "Tasmota")
|
||||
return tlv_solo.set(TLV.UTF1, "Tasmota")
|
||||
elif attribute == 0x0002 # ---------- VendorID / vendor-id ----------
|
||||
return TLV.create_TLV(TLV.U2, self.device.vendorid) # Vendor ID reserved for development
|
||||
return tlv_solo.set(TLV.U2, self.device.vendorid) # Vendor ID reserved for development
|
||||
elif attribute == 0x0003 # ---------- ProductName / string ----------
|
||||
return TLV.create_TLV(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName'])
|
||||
return tlv_solo.set(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName'])
|
||||
elif attribute == 0x0004 # ---------- ProductID / u16 (opt) ----------
|
||||
return TLV.create_TLV(TLV.U2, 32768) # taken from esp-matter example
|
||||
return tlv_solo.set(TLV.U2, 32768) # taken from esp-matter example
|
||||
elif attribute == 0x0005 # ---------- NodeLabel / string ----------
|
||||
return TLV.create_TLV(TLV.UTF1, tasmota.cmd("FriendlyName", true)['FriendlyName1'])
|
||||
return tlv_solo.set(TLV.UTF1, tasmota.cmd("FriendlyName", true)['FriendlyName1'])
|
||||
elif attribute == 0x0006 # ---------- Location / string ----------
|
||||
return TLV.create_TLV(TLV.UTF1, "XX") # no location
|
||||
return tlv_solo.set(TLV.UTF1, "XX") # no location
|
||||
elif attribute == 0x0007 # ---------- HardwareVersion / u16 ----------
|
||||
return TLV.create_TLV(TLV.U2, 0)
|
||||
return tlv_solo.set(TLV.U2, 0)
|
||||
elif attribute == 0x0008 # ---------- HardwareVersionString / string ----------
|
||||
return TLV.create_TLV(TLV.UTF1, tasmota.cmd("Status 2", true)['StatusFWR']['Hardware'])
|
||||
return tlv_solo.set(TLV.UTF1, tasmota.cmd("Status 2", true)['StatusFWR']['Hardware'])
|
||||
elif attribute == 0x0009 # ---------- SoftwareVersion / u32 ----------
|
||||
return TLV.create_TLV(TLV.U2, 1)
|
||||
return tlv_solo.set(TLV.U2, 1)
|
||||
elif attribute == 0x000A # ---------- SoftwareVersionString / string ----------
|
||||
var version_full = tasmota.cmd("Status 2", true)['StatusFWR']['Version']
|
||||
var version_end = string.find(version_full, '(')
|
||||
if version_end > 0 version_full = version_full[0..version_end - 1] end
|
||||
return TLV.create_TLV(TLV.UTF1, version_full)
|
||||
return tlv_solo.set(TLV.UTF1, version_full)
|
||||
elif attribute == 0x000F # ---------- SerialNumber / string ----------
|
||||
return TLV.create_TLV(TLV.UTF1, tasmota.wifi().find("mac", ""))
|
||||
return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", ""))
|
||||
elif attribute == 0x0011 # ---------- Reachable / bool ----------
|
||||
return TLV.create_TLV(TLV.BOOL, 1) # by default we are reachable
|
||||
return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable
|
||||
elif attribute == 0x0012 # ---------- UniqueID / string 32 max ----------
|
||||
return TLV.create_TLV(TLV.UTF1, tasmota.wifi().find("mac", ""))
|
||||
return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", ""))
|
||||
elif attribute == 0x0013 # ---------- CapabilityMinima / CapabilityMinimaStruct ----------
|
||||
var cps = TLV.Matter_TLV_struct()
|
||||
cps.add_TLV(0, TLV.U2, 3) # CaseSessionsPerFabric = 3
|
||||
@ -261,18 +263,18 @@ class Matter_Plugin_Root : Matter_Plugin
|
||||
if attribute == 0x0000 # ---------- DefaultOTAProviders / list[ProviderLocationStruct] ----------
|
||||
return TLV.Matter_TLV_array() # empty list for now TODO
|
||||
elif attribute == 0x0001 # ---------- UpdatePossible / bool ----------
|
||||
return TLV.create_TLV(TLV.BOOL, 0) # we claim that update is not possible, would require to go to Tasmota UI
|
||||
return tlv_solo.set(TLV.BOOL, 0) # we claim that update is not possible, would require to go to Tasmota UI
|
||||
elif attribute == 0x0002 # ---------- UpdateState / UpdateStateEnum ----------
|
||||
return TLV.create_TLV(TLV.U1, 1) # Idle
|
||||
return tlv_solo.set(TLV.U1, 1) # Idle
|
||||
elif attribute == 0x0003 # ---------- UpdateStateProgress / uint8 ----------
|
||||
return TLV.create_TLV(TLV.NULL, nil) # null, nothing in process
|
||||
return tlv_solo.set(TLV.NULL, nil) # null, nothing in process
|
||||
end
|
||||
|
||||
# ====================================================================================================
|
||||
elif cluster == 0x002B # ========== Localization Configuration Cluster 11.3 p.580 ==========
|
||||
|
||||
if attribute == 0x0000 # ---------- ActiveLocale / string ----------
|
||||
return TLV.create_TLV(TLV.UTF1, tasmota.locale())
|
||||
return tlv_solo.set(TLV.UTF1, tasmota.locale())
|
||||
elif attribute == 0x0001 # ---------- SupportedLocales / list[string] ----------
|
||||
var locl = TLV.Matter_TLV_array()
|
||||
locl.add_TLV(nil, TLV.UTF1, tasmota.locale())
|
||||
@ -283,9 +285,9 @@ class Matter_Plugin_Root : Matter_Plugin
|
||||
elif cluster == 0x002C # ========== Time Format Localization Cluster 11.4 p.581 ==========
|
||||
|
||||
if attribute == 0x0000 # ---------- HourFormat / HourFormat ----------
|
||||
return TLV.create_TLV(TLV.U1, 1) # 1 = 24hr
|
||||
return tlv_solo.set(TLV.U1, 1) # 1 = 24hr
|
||||
elif attribute == 0x0001 # ---------- ActiveCalendarType / CalendarType ----------
|
||||
return TLV.create_TLV(TLV.U1, 4) # 4 = Gregorian
|
||||
return tlv_solo.set(TLV.U1, 4) # 4 = Gregorian
|
||||
elif attribute == 0x0002 # ---------- SupportedCalendarTypes / list[CalendarType] ----------
|
||||
var callist = TLV.Matter_TLV_array()
|
||||
callist.add_TLV(nil, TLV.create_TLV(TLV.U1, 4))
|
||||
@ -295,9 +297,9 @@ class Matter_Plugin_Root : Matter_Plugin
|
||||
# ====================================================================================================
|
||||
elif cluster == 0x0031 # ========== Network Commissioning Cluster cluster 11.8 p.606 ==========
|
||||
if attribute == 0x0003 # ---------- ConnectMaxTimeSeconds / uint8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 30) # 30 - value taking from example in esp-matter
|
||||
return tlv_solo.set(TLV.U1, 30) # 30 - value taking from example in esp-matter
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0x04) # Put Eth for now which should work for any on-network
|
||||
return tlv_solo.set(TLV.U4, 0x04) # Put Eth for now which should work for any on-network
|
||||
end
|
||||
|
||||
elif cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
|
||||
@ -315,11 +317,11 @@ class Matter_Plugin_Root : Matter_Plugin
|
||||
end
|
||||
return pl
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
|
||||
end
|
||||
# no match found, return that the attribute is unsupported
|
||||
@ -417,7 +419,7 @@ class Matter_Plugin_Root : Matter_Plugin
|
||||
var att_elts = TLV.Matter_TLV_struct()
|
||||
att_elts.add_TLV(1, TLV.B2, matter.CD_FFF1_8000()) # certification_declaration
|
||||
att_elts.add_TLV(2, TLV.B1, AttestationNonce) # attestation_nonce
|
||||
att_elts.add_TLV(3, TLV.U4, tasmota.rtc()['utc']) # timestamp in epoch-s
|
||||
att_elts.add_TLV(3, TLV.U4, tasmota.rtc_utc()) # timestamp in epoch-s
|
||||
var attestation_message = att_elts.tlv2raw()
|
||||
|
||||
var ac = session.get_ac()
|
||||
|
@ -75,7 +75,7 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -84,18 +84,18 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device
|
||||
if cluster == 0x0045 # ========== Boolean State ==========
|
||||
if attribute == 0x0000 # ---------- StateValue / bool ----------
|
||||
if self.shadow_contact != nil
|
||||
return TLV.create_TLV(TLV.BOOL, self.shadow_contact)
|
||||
return tlv_solo.set(TLV.BOOL, self.shadow_contact)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0)
|
||||
return tlv_solo.set(TLV.U4, 0)
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 1) # 1 = Initial release
|
||||
return tlv_solo.set(TLV.U4, 1) # 1 = Initial release
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -55,7 +55,7 @@ class Matter_Plugin_Sensor_Humidity : Matter_Plugin_Sensor
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -64,22 +64,22 @@ class Matter_Plugin_Sensor_Humidity : Matter_Plugin_Sensor
|
||||
if cluster == 0x0405 # ========== Humidity Measurement 2.4 p.98 ==========
|
||||
if attribute == 0x0000 # ---------- Humidity / u16 ----------
|
||||
if self.shadow_value != nil
|
||||
return TLV.create_TLV(TLV.U2, int(self.shadow_value))
|
||||
return tlv_solo.set(TLV.U2, int(self.shadow_value))
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0001 # ---------- MinMeasuredValue / u16 ----------
|
||||
return TLV.create_TLV(TLV.U2, 500) # 0%
|
||||
return tlv_solo.set(TLV.U2, 500) # 0%
|
||||
elif attribute == 0x0002 # ---------- MaxMeasuredValue / u16 ----------
|
||||
return TLV.create_TLV(TLV.U2, 10000) # 100%
|
||||
return tlv_solo.set(TLV.U2, 10000) # 100%
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range
|
||||
return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
|
||||
return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -62,7 +62,7 @@ class Matter_Plugin_Sensor_Illuminance : Matter_Plugin_Sensor
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -71,22 +71,22 @@ class Matter_Plugin_Sensor_Illuminance : Matter_Plugin_Sensor
|
||||
if cluster == 0x0400 # ========== Illuminance Measurement 2.2 p.95 ==========
|
||||
if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
|
||||
if self.shadow_value != nil
|
||||
return TLV.create_TLV(TLV.U2, int(self.shadow_value))
|
||||
return tlv_solo.set(TLV.U2, int(self.shadow_value))
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
|
||||
return TLV.create_TLV(TLV.U2, 1) # 1 lux
|
||||
return tlv_solo.set(TLV.U2, 1) # 1 lux
|
||||
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
|
||||
return TLV.create_TLV(TLV.U2, 0xFFFE)
|
||||
return tlv_solo.set(TLV.U2, 0xFFFE)
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0)
|
||||
return tlv_solo.set(TLV.U4, 0)
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
|
||||
return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -72,7 +72,7 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -81,22 +81,22 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device
|
||||
if cluster == 0x0406 # ========== Occupancy Sensing ==========
|
||||
if attribute == 0x0000 # ---------- Occupancy / U8 ----------
|
||||
if self.shadow_occupancy != nil
|
||||
return TLV.create_TLV(TLV.U1, self.shadow_occupancy)
|
||||
return tlv_solo.set(TLV.U1, self.shadow_occupancy)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0001 # ---------- OccupancySensorType / enum8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 3) # physical contact
|
||||
return tlv_solo.set(TLV.U1, 3) # physical contact
|
||||
elif attribute == 0x0002 # ---------- OccupancySensorTypeBitmap / u8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0) # unknown
|
||||
return tlv_solo.set(TLV.U1, 0) # unknown
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0)
|
||||
return tlv_solo.set(TLV.U4, 0)
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 3) # 4 = New data model format and notation
|
||||
return tlv_solo.set(TLV.U4, 3) # 4 = New data model format and notation
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -70,7 +70,7 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -79,15 +79,15 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
|
||||
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0000 # ---------- OnOff / bool ----------
|
||||
return TLV.create_TLV(TLV.BOOL, self.shadow_onoff)
|
||||
return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0) # 0 = no Level Control for Lighting
|
||||
return tlv_solo.set(TLV.U4, 0) # 0 = no Level Control for Lighting
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
|
||||
return tlv_solo.set(TLV.U4, 4) # 0 = no Level Control for Lighting
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -55,7 +55,7 @@ class Matter_Plugin_Sensor_Pressure : Matter_Plugin_Sensor
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -64,22 +64,22 @@ class Matter_Plugin_Sensor_Pressure : Matter_Plugin_Sensor
|
||||
if cluster == 0x0403 # ========== Pressure Measurement 2.4 p.98 ==========
|
||||
if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
|
||||
if self.shadow_value != nil
|
||||
return TLV.create_TLV(TLV.I2, int(self.shadow_value))
|
||||
return tlv_solo.set(TLV.I2, int(self.shadow_value))
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
|
||||
return TLV.create_TLV(TLV.I2, 500) # 500 hPA
|
||||
return tlv_solo.set(TLV.I2, 500) # 500 hPA
|
||||
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
|
||||
return TLV.create_TLV(TLV.I2, 1500) # 1500 hPA
|
||||
return tlv_solo.set(TLV.I2, 1500) # 1500 hPA
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0) # 0 = no Extended Range
|
||||
return tlv_solo.set(TLV.U4, 0) # 0 = no Extended Range
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 3) # 3 = New data model format and notation
|
||||
return tlv_solo.set(TLV.U4, 3) # 3 = New data model format and notation
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -58,7 +58,7 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -67,22 +67,22 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor
|
||||
if cluster == 0x0402 # ========== Temperature Measurement 2.3 p.97 ==========
|
||||
if attribute == 0x0000 # ---------- MeasuredValue / i16 (*100) ----------
|
||||
if self.shadow_value != nil
|
||||
return TLV.create_TLV(TLV.I2, self.shadow_value)
|
||||
return tlv_solo.set(TLV.I2, self.shadow_value)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil)
|
||||
return tlv_solo.set(TLV.NULL, nil)
|
||||
end
|
||||
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 (*100) ----------
|
||||
return TLV.create_TLV(TLV.I2, -5000) # -50 °C
|
||||
return tlv_solo.set(TLV.I2, -5000) # -50 °C
|
||||
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ----------
|
||||
return TLV.create_TLV(TLV.I2, 15000) # 150 °C
|
||||
return tlv_solo.set(TLV.I2, 15000) # 150 °C
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 0)
|
||||
return tlv_solo.set(TLV.U4, 0)
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 4) # 4 = New data model format and notation
|
||||
return tlv_solo.set(TLV.U4, 4) # 4 = New data model format and notation
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -93,7 +93,7 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -104,42 +104,42 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device
|
||||
self.update_shadow_lazy()
|
||||
self.update_inverted()
|
||||
if attribute == 0x0000 # ---------- Type / enum8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0xFF) # 0xFF = unknown type of shutter
|
||||
return tlv_solo.set(TLV.U1, 0xFF) # 0xFF = unknown type of shutter
|
||||
elif attribute == 0x0005 # ---------- NumberOfActuationsLift / u16 ----------
|
||||
return TLV.create_TLV(TLV.U2, 0)
|
||||
return tlv_solo.set(TLV.U2, 0)
|
||||
elif attribute == 0x0007 # ---------- ConfigStatus / u8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 1 + 8) # Operational + Lift Position Aware
|
||||
return tlv_solo.set(TLV.U1, 1 + 8) # Operational + Lift Position Aware
|
||||
elif attribute == 0x000D # ---------- EndProductType / u8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0xFF) # 0xFF = unknown type of shutter
|
||||
return tlv_solo.set(TLV.U1, 0xFF) # 0xFF = unknown type of shutter
|
||||
elif attribute == 0x000E # ---------- CurrentPositionLiftPercent100ths / u16 ----------
|
||||
if self.shadow_shutter_inverted == 0
|
||||
matter_position = (100 - self.shadow_shutter_pos) * 100
|
||||
else
|
||||
matter_position = self.shadow_shutter_pos * 100
|
||||
end
|
||||
return TLV.create_TLV(TLV.U2, matter_position)
|
||||
return tlv_solo.set(TLV.U2, matter_position)
|
||||
elif attribute == 0x000A # ---------- OperationalStatus / u8 ----------
|
||||
var op = self.shadow_shutter_direction == 0 ? 0 : (self.shadow_shutter_direction > 0 ? 1 : 2)
|
||||
return TLV.create_TLV(TLV.U1, op)
|
||||
return tlv_solo.set(TLV.U1, op)
|
||||
elif attribute == 0x000B # ---------- TargetPositionLiftPercent100ths / u16 ----------
|
||||
if self.shadow_shutter_inverted == 0
|
||||
matter_position = (100 - self.shadow_shutter_target) * 100
|
||||
else
|
||||
matter_position = self.shadow_shutter_target * 100
|
||||
end
|
||||
return TLV.create_TLV(TLV.U2, matter_position)
|
||||
return tlv_solo.set(TLV.U2, matter_position)
|
||||
|
||||
elif attribute == 0x0017 # ---------- Mode / u8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 0) # normal mode
|
||||
return tlv_solo.set(TLV.U1, 0) # normal mode
|
||||
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 1 + 4) # Lift + PA_LF
|
||||
return tlv_solo.set(TLV.U4, 1 + 4) # Lift + PA_LF
|
||||
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------
|
||||
return TLV.create_TLV(TLV.U4, 5) # New data model format and notation
|
||||
return tlv_solo.set(TLV.U4, 5) # New data model format and notation
|
||||
end
|
||||
|
||||
else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -96,7 +96,7 @@ class Matter_Plugin_ShutterTilt : Matter_Plugin_Shutter
|
||||
#############################################################
|
||||
# read an attribute
|
||||
#
|
||||
def read_attribute(session, ctx)
|
||||
def read_attribute(session, ctx, tlv_solo)
|
||||
var TLV = matter.TLV
|
||||
var cluster = ctx.cluster
|
||||
var attribute = ctx.attribute
|
||||
@ -105,30 +105,30 @@ class Matter_Plugin_ShutterTilt : Matter_Plugin_Shutter
|
||||
if cluster == 0x0102 # ========== Window Covering 5.3 p.289 ==========
|
||||
self.update_shadow_lazy()
|
||||
if attribute == 0x0007 # ---------- ConfigStatus / u8 ----------
|
||||
return TLV.create_TLV(TLV.U1, 1 + 8 + 16) # Operational + Lift Position Aware + Tilt Position Aware
|
||||
return tlv_solo.set(TLV.U1, 1 + 8 + 16) # Operational + Lift Position Aware + Tilt Position Aware
|
||||
|
||||
elif attribute == 0x000F # ---------- CurrentPositionTiltPercent100ths / u8 ----------
|
||||
self.update_tilt_min_max()
|
||||
if self.tilt_min != nil && self.tilt_max != nil
|
||||
var tilt_percentage = tasmota.scale_uint(self.shadow_shutter_tilt - self.tilt_min, 0, self.tilt_max - self.tilt_min, 0, 10000)
|
||||
return TLV.create_TLV(TLV.U2, tilt_percentage)
|
||||
return tlv_solo.set(TLV.U2, tilt_percentage)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil) # return invalid
|
||||
return tlv_solo.set(TLV.NULL, nil) # return invalid
|
||||
end
|
||||
elif attribute == 0x000C # ---------- TargetPositionTiltPercent100ths / u16 ----------
|
||||
if self.tilt_min != nil && self.tilt_max != nil
|
||||
var tilt_percentage = tasmota.scale_uint(self.shadow_shutter_tilt - self.tilt_min, 0, self.tilt_max - self.tilt_min, 0, 10000)
|
||||
return TLV.create_TLV(TLV.U2, tilt_percentage)
|
||||
return tlv_solo.set(TLV.U2, tilt_percentage)
|
||||
else
|
||||
return TLV.create_TLV(TLV.NULL, nil) # return invalid
|
||||
return tlv_solo.set(TLV.NULL, nil) # return invalid
|
||||
end
|
||||
|
||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||
return TLV.create_TLV(TLV.U4, 3 + 4 + 16) # Lift + Tilt + PA_LF + PA_TL
|
||||
return tlv_solo.set(TLV.U4, 3 + 4 + 16) # Lift + Tilt + PA_LF + PA_TL
|
||||
end
|
||||
end
|
||||
# else
|
||||
return super(self).read_attribute(session, ctx)
|
||||
return super(self).read_attribute(session, ctx, tlv_solo)
|
||||
end
|
||||
|
||||
#############################################################
|
||||
|
@ -31,13 +31,21 @@ class Matter_Profiler
|
||||
var millis
|
||||
var names
|
||||
var active
|
||||
var allocs
|
||||
var reallocs
|
||||
var len # number of entries
|
||||
|
||||
def init()
|
||||
self.active = false
|
||||
self.millis = list()
|
||||
self.millis.resize(self.PREALLOCATED)
|
||||
self.millis.resize(self.PREALLOCATED) # we force zero allocation when using profiler
|
||||
self.names = list()
|
||||
self.names.resize(self.PREALLOCATED)
|
||||
self.allocs = list()
|
||||
self.allocs.resize(self.PREALLOCATED)
|
||||
self.reallocs = list()
|
||||
self.reallocs.resize(self.PREALLOCATED)
|
||||
self.len = 0
|
||||
end
|
||||
|
||||
def set_active(v)
|
||||
@ -46,15 +54,27 @@ class Matter_Profiler
|
||||
|
||||
def start()
|
||||
if !self.active return end
|
||||
self.millis.resize(0)
|
||||
self.names.resize(0)
|
||||
var idx = 0
|
||||
while idx < self.PREALLOCATED
|
||||
self.millis[idx] = nil
|
||||
self.names[idx] = nil
|
||||
idx += 1
|
||||
end
|
||||
self.len = 0
|
||||
tasmota.gc() # To get deterministic values, we force a full GC before profiler
|
||||
self.log("start")
|
||||
end
|
||||
|
||||
def log(name)
|
||||
if !self.active return end
|
||||
self.millis.push(tasmota.millis())
|
||||
self.names.push(name)
|
||||
import debug
|
||||
var len = self.len
|
||||
if len >= self.PREALLOCATED return end # size overflow
|
||||
self.millis[len] = tasmota.millis()
|
||||
self.names[len] = name
|
||||
self.allocs[len] = debug.allocs()
|
||||
self.reallocs[len] = debug.reallocs()
|
||||
self.len += 1
|
||||
end
|
||||
|
||||
def dump(loglevel)
|
||||
@ -62,9 +82,12 @@ class Matter_Profiler
|
||||
self.log("<--end-->")
|
||||
tasmota.log("MTR: Profiler dump:", loglevel)
|
||||
var origin = self.millis[0]
|
||||
var allocs0 = self.allocs[0]
|
||||
var reallocs0 = self.reallocs[0]
|
||||
var idx = 1
|
||||
while idx < size(self.millis)
|
||||
tasmota.log(f"MTR: {self.millis[idx] - origin:4i} '{self.names[idx]}'", loglevel)
|
||||
while idx < self.len
|
||||
# tasmota.log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}|{self.reallocs[idx] - reallocs0:4i}]'{self.names[idx]}'", loglevel)
|
||||
tasmota.log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}]'{self.names[idx]}'", loglevel)
|
||||
idx += 1
|
||||
end
|
||||
end
|
||||
|
@ -165,7 +165,7 @@ class Matter_Session : Matter_Expirable
|
||||
#############################################################
|
||||
# Update the timestamp or any other information
|
||||
def update()
|
||||
self.last_used = tasmota.rtc()['utc']
|
||||
self.last_used = tasmota.rtc_utc()
|
||||
end
|
||||
|
||||
def set_mode_PASE() self.set_mode(self._PASE) end
|
||||
|
@ -113,6 +113,32 @@ class Matter_TLV
|
||||
self.parent = parent
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# reset - allows reuse of the object
|
||||
def reset(parent)
|
||||
var n = nil
|
||||
self.parent = parent
|
||||
self.next_idx = n
|
||||
self.tag_vendor = n
|
||||
self.tag_profile = n
|
||||
self.tag_number = n
|
||||
self.tag_sub = n
|
||||
self.typ = n
|
||||
self.val = n
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# set value, equivalent to create_TLV() without allocation
|
||||
#
|
||||
def set(t, value)
|
||||
self.reset()
|
||||
if value != nil || t == 0x14 #-t == matter.TLV.NULL-# # put the actual number for performance
|
||||
self.typ = t
|
||||
self.val = value
|
||||
return self
|
||||
end
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# neutral converter
|
||||
def to_TLV()
|
||||
@ -135,23 +161,24 @@ class Matter_TLV
|
||||
#
|
||||
# We are trying to follow the official Matter way of printing TLV
|
||||
# Ex: '42U' or '1 = 42U' or '0xFFF1::0xDEED:0xAA55FEED = 42U'
|
||||
def tostring()
|
||||
def tostring(no_tag)
|
||||
# var s = "<instance: Matter_TLV_item("
|
||||
var s = ""
|
||||
try # any exception raised in `tostring()` causes a crash, so better catch it here
|
||||
|
||||
if self.tag_profile == -1
|
||||
s += "Matter::"
|
||||
if self.tag_number != nil s += format("0x%08X ", self.tag_number) end
|
||||
else
|
||||
if self.tag_vendor != nil s += format("0x%04X::", self.tag_vendor) end
|
||||
if self.tag_profile != nil s += format("0x%04X:", self.tag_profile) end
|
||||
if self.tag_number != nil s += format("0x%08X ", self.tag_number) end
|
||||
if self.tag_sub != nil s += format("%i ", self.tag_sub) end
|
||||
if no_tag != true
|
||||
if self.tag_profile == -1
|
||||
s += "Matter::"
|
||||
if self.tag_number != nil s += format("0x%08X ", self.tag_number) end
|
||||
else
|
||||
if self.tag_vendor != nil s += format("0x%04X::", self.tag_vendor) end
|
||||
if self.tag_profile != nil s += format("0x%04X:", self.tag_profile) end
|
||||
if self.tag_number != nil s += format("0x%08X ", self.tag_number) end
|
||||
if self.tag_sub != nil s += format("%i ", self.tag_sub) end
|
||||
end
|
||||
if size(s) > 0 s += "= " end
|
||||
end
|
||||
|
||||
if size(s) > 0 s += "= " end
|
||||
|
||||
# print value
|
||||
if type(self.val) == 'int' s += format("%i", self.val)
|
||||
if self.typ >= self.TLV.U1 && self.typ <= self.TLV.U8 s += "U" end
|
||||
@ -171,6 +198,30 @@ class Matter_TLV
|
||||
return s
|
||||
end
|
||||
|
||||
# simplified version of tostring() for simple values
|
||||
def to_str_val()
|
||||
# print value
|
||||
if type(self.val) == 'int'
|
||||
if self.typ >= self.TLV.U1 && self.typ <= self.TLV.U8
|
||||
return str(self.val) + "U"
|
||||
else
|
||||
return str(self.val)
|
||||
end
|
||||
elif type(self.val) == 'bool' return self.val ? "true" : "false"
|
||||
elif self.val == nil return "null"
|
||||
elif type(self.val) == 'real' return str(self.val)
|
||||
elif type(self.val) == 'string' return self.val
|
||||
elif isinstance(self.val, int64)
|
||||
if self.typ >= self.TLV.U1 && self.typ <= self.TLV.U8
|
||||
return self.val.tostring() + "U"
|
||||
else
|
||||
return self.val.tostring()
|
||||
end
|
||||
elif type(self.val) == 'instance'
|
||||
return self.tostring(true)
|
||||
end
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# parse a bytes() array from `idx`
|
||||
# args:
|
||||
@ -566,26 +617,27 @@ class Matter_TLV
|
||||
end
|
||||
|
||||
#################################################################################
|
||||
def tostring()
|
||||
return self.tostring_inner(false, "[[", "]]")
|
||||
def tostring(no_tag)
|
||||
return self.tostring_inner(false, "[[", "]]", no_tag)
|
||||
end
|
||||
|
||||
def tostring_inner(sorted, pre, post)
|
||||
def tostring_inner(sorted, pre, post, no_tag)
|
||||
var s = ""
|
||||
try
|
||||
|
||||
if self.tag_profile == -1
|
||||
s += "Matter::"
|
||||
if self.tag_number != nil s += format("0x%08X ", self.tag_number) end
|
||||
else
|
||||
if self.tag_vendor != nil s += format("0x%04X::", self.tag_vendor) end
|
||||
if self.tag_profile != nil s += format("0x%04X:", self.tag_profile) end
|
||||
if self.tag_number != nil s += format("0x%08X ", self.tag_number) end
|
||||
if self.tag_sub != nil s += format("%i ", self.tag_sub) end
|
||||
if no_tag != true
|
||||
if self.tag_profile == -1
|
||||
s += "Matter::"
|
||||
if self.tag_number != nil s += format("0x%08X ", self.tag_number) end
|
||||
else
|
||||
if self.tag_vendor != nil s += format("0x%04X::", self.tag_vendor) end
|
||||
if self.tag_profile != nil s += format("0x%04X:", self.tag_profile) end
|
||||
if self.tag_number != nil s += format("0x%08X ", self.tag_number) end
|
||||
if self.tag_sub != nil s += format("%i ", self.tag_sub) end
|
||||
end
|
||||
if size(s) > 0 s += "= " end
|
||||
end
|
||||
|
||||
if size(s) > 0 s += "= " end
|
||||
|
||||
s += pre
|
||||
|
||||
# sort values
|
||||
@ -604,6 +656,11 @@ class Matter_TLV
|
||||
return s
|
||||
end
|
||||
|
||||
# simplified version of tostring() for simple values
|
||||
def to_str_val()
|
||||
return self.tostring(true)
|
||||
end
|
||||
|
||||
#################################################################################
|
||||
def parse(b, idx)
|
||||
# iterate until end of struct
|
||||
@ -777,8 +834,8 @@ class Matter_TLV
|
||||
end
|
||||
|
||||
#############################################################
|
||||
def tostring()
|
||||
return self.tostring_inner(true, "{", "}")
|
||||
def tostring(no_tag)
|
||||
return self.tostring_inner(true, "{", "}", no_tag)
|
||||
end
|
||||
end
|
||||
|
||||
@ -793,8 +850,8 @@ class Matter_TLV
|
||||
end
|
||||
|
||||
#############################################################
|
||||
def tostring()
|
||||
return self.tostring_inner(false, "[", "]")
|
||||
def tostring(no_tag)
|
||||
return self.tostring_inner(false, "[", "]", no_tag)
|
||||
end
|
||||
|
||||
#############################################################
|
||||
|
@ -72,6 +72,7 @@ class Matter_UDPServer
|
||||
var dispatch_cb # callback to call when a message is received
|
||||
var packets_sent # list map of packets sent to be acknowledged
|
||||
var loop_cb # closure to pass to fast_loop
|
||||
var packet # reuse the packer `bytes()` object at each iteration
|
||||
|
||||
#############################################################
|
||||
# Init UDP Server listening to `addr` and `port` (opt).
|
||||
@ -123,17 +124,19 @@ class Matter_UDPServer
|
||||
# Then resend queued outgoing packets.
|
||||
def loop()
|
||||
# import debug
|
||||
var profiler = self.device.profiler
|
||||
var profiler = matter.profiler
|
||||
var packet_read = 0
|
||||
if self.udp_socket == nil return end
|
||||
var packet = self.udp_socket.read()
|
||||
var packet = self.udp_socket.read(self.packet)
|
||||
while packet != nil
|
||||
# self.packet = packet
|
||||
profiler.start()
|
||||
self.packet = packet # save packet for next iteration
|
||||
packet_read += 1
|
||||
var from_addr = self.udp_socket.remote_ip
|
||||
var from_port = self.udp_socket.remote_port
|
||||
tasmota.log(format("MTR: UDP received from [%s]:%i", from_addr, from_port), 4)
|
||||
if tasmota.loglevel(4)
|
||||
tasmota.log(format("MTR: UDP received from [%s]:%i", from_addr, from_port), 4)
|
||||
end
|
||||
# tasmota.log("MTR: Perf/UDP_received = " + str(debug.counters()), 4)
|
||||
if self.dispatch_cb
|
||||
profiler.log("udp_loop_dispatch")
|
||||
@ -159,10 +162,15 @@ class Matter_UDPServer
|
||||
# Returns `true` if packet was successfully sent.
|
||||
def send(packet)
|
||||
var ok = self.udp_socket.send(packet.addr ? packet.addr : self.udp_socket.remote_ip, packet.port ? packet.port : self.udp_socket.remote_port, packet.raw)
|
||||
|
||||
if ok
|
||||
tasmota.log(format("MTR: sending packet to '[%s]:%i'", packet.addr, packet.port), 4)
|
||||
if tasmota.loglevel(4)
|
||||
tasmota.log(format("MTR: sending packet to '[%s]:%i'", packet.addr, packet.port), 4)
|
||||
end
|
||||
else
|
||||
tasmota.log(format("MTR: error sending packet to '[%s]:%i'", packet.addr, packet.port), 3)
|
||||
if tasmota.loglevel(3)
|
||||
tasmota.log(format("MTR: error sending packet to '[%s]:%i'", packet.addr, packet.port), 3)
|
||||
end
|
||||
end
|
||||
return ok
|
||||
end
|
||||
@ -209,7 +217,9 @@ class Matter_UDPServer
|
||||
var packet = self.packets_sent[idx]
|
||||
if packet.msg_id == id && packet.exchange_id == exch
|
||||
self.packets_sent.remove(idx)
|
||||
tasmota.log("MTR: . Removed packet from sending list id=" + str(id), 4)
|
||||
if tasmota.loglevel(4)
|
||||
tasmota.log("MTR: . Removed packet from sending list id=" + str(id), 4)
|
||||
end
|
||||
else
|
||||
idx += 1
|
||||
end
|
||||
|
@ -557,7 +557,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake1, /* name */
|
||||
}),
|
||||
be_str_weak(parse_Pake1),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[114]) { /* code */
|
||||
( &(const binstruction[115]) { /* code */
|
||||
0xA40A0000, // 0000 IMPORT R2 K0
|
||||
0x880C0301, // 0001 GETMBR R3 R1 K1
|
||||
0x88100302, // 0002 GETMBR R4 R1 K2
|
||||
@ -665,13 +665,14 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake1, /* name */
|
||||
0x884C0730, // 0068 GETMBR R19 R3 K48
|
||||
0x88500731, // 0069 GETMBR R20 R3 K49
|
||||
0x7C400800, // 006A CALL R16 4
|
||||
0x7C380400, // 006B CALL R14 2
|
||||
0x88380132, // 006C GETMBR R14 R0 K50
|
||||
0x8C381D33, // 006D GETMET R14 R14 K51
|
||||
0x5C401800, // 006E MOVE R16 R12
|
||||
0x7C380400, // 006F CALL R14 2
|
||||
0x50380200, // 0070 LDBOOL R14 1 0
|
||||
0x80041C00, // 0071 RET 1 R14
|
||||
0x5844000D, // 006B LDCONST R17 K13
|
||||
0x7C380600, // 006C CALL R14 3
|
||||
0x88380132, // 006D GETMBR R14 R0 K50
|
||||
0x8C381D33, // 006E GETMET R14 R14 K51
|
||||
0x5C401800, // 006F MOVE R16 R12
|
||||
0x7C380400, // 0070 CALL R14 2
|
||||
0x50380200, // 0071 LDBOOL R14 1 0
|
||||
0x80041C00, // 0072 RET 1 R14
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -723,7 +724,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[32]) { /* constants */
|
||||
( &(const bvalue[31]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(crypto),
|
||||
/* K1 */ be_nested_str_weak(session),
|
||||
/* K2 */ be_nested_str_weak(opcode),
|
||||
@ -746,20 +747,19 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
|
||||
/* K19 */ be_nested_str_weak(cA),
|
||||
/* K20 */ be_nested_str_weak(__spake_cA),
|
||||
/* K21 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received),
|
||||
/* K22 */ be_nested_str_weak(rtc),
|
||||
/* K23 */ be_nested_str_weak(utc),
|
||||
/* K24 */ be_nested_str_weak(HKDF_SHA256),
|
||||
/* K25 */ be_nested_str_weak(derive),
|
||||
/* K26 */ be_nested_str_weak(__spake_Ke),
|
||||
/* K27 */ be_nested_str_weak(fromstring),
|
||||
/* K28 */ be_nested_str_weak(SEKeys_Info),
|
||||
/* K29 */ be_nested_str_weak(add_session),
|
||||
/* K30 */ be_nested_str_weak(__future_local_session_id),
|
||||
/* K31 */ be_nested_str_weak(__future_initiator_session_id),
|
||||
/* K22 */ be_nested_str_weak(rtc_utc),
|
||||
/* K23 */ be_nested_str_weak(HKDF_SHA256),
|
||||
/* K24 */ be_nested_str_weak(derive),
|
||||
/* K25 */ be_nested_str_weak(__spake_Ke),
|
||||
/* K26 */ be_nested_str_weak(fromstring),
|
||||
/* K27 */ be_nested_str_weak(SEKeys_Info),
|
||||
/* K28 */ be_nested_str_weak(add_session),
|
||||
/* K29 */ be_nested_str_weak(__future_local_session_id),
|
||||
/* K30 */ be_nested_str_weak(__future_initiator_session_id),
|
||||
}),
|
||||
be_str_weak(parse_Pake3),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[106]) { /* code */
|
||||
( &(const binstruction[105]) { /* code */
|
||||
0xA40A0000, // 0000 IMPORT R2 K0
|
||||
0x880C0301, // 0001 GETMBR R3 R1 K1
|
||||
0x88100302, // 0002 GETMBR R4 R1 K2
|
||||
@ -824,48 +824,47 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
|
||||
0xB81A0C00, // 003D GETNGBL R6 K6
|
||||
0x8C180D16, // 003E GETMET R6 R6 K22
|
||||
0x7C180200, // 003F CALL R6 1
|
||||
0x94180D17, // 0040 GETIDX R6 R6 K23
|
||||
0x8C1C0518, // 0041 GETMET R7 R2 K24
|
||||
0x7C1C0200, // 0042 CALL R7 1
|
||||
0x8C1C0F19, // 0043 GETMET R7 R7 K25
|
||||
0x8824071A, // 0044 GETMBR R9 R3 K26
|
||||
0x60280015, // 0045 GETGBL R10 G21
|
||||
0x7C280000, // 0046 CALL R10 0
|
||||
0x602C0015, // 0047 GETGBL R11 G21
|
||||
0x7C2C0000, // 0048 CALL R11 0
|
||||
0x8C2C171B, // 0049 GETMET R11 R11 K27
|
||||
0x8834011C, // 004A GETMBR R13 R0 K28
|
||||
0x7C2C0400, // 004B CALL R11 2
|
||||
0x5432002F, // 004C LDINT R12 48
|
||||
0x7C1C0A00, // 004D CALL R7 5
|
||||
0x5422000E, // 004E LDINT R8 15
|
||||
0x40220808, // 004F CONNECT R8 K4 R8
|
||||
0x94200E08, // 0050 GETIDX R8 R7 R8
|
||||
0x5426000F, // 0051 LDINT R9 16
|
||||
0x542A001E, // 0052 LDINT R10 31
|
||||
0x4024120A, // 0053 CONNECT R9 R9 R10
|
||||
0x94240E09, // 0054 GETIDX R9 R7 R9
|
||||
0x542A001F, // 0055 LDINT R10 32
|
||||
0x542E002E, // 0056 LDINT R11 47
|
||||
0x4028140B, // 0057 CONNECT R10 R10 R11
|
||||
0x94280E0A, // 0058 GETIDX R10 R7 R10
|
||||
0x8C2C010B, // 0059 GETMET R11 R0 K11
|
||||
0x5C340200, // 005A MOVE R13 R1
|
||||
0x58380004, // 005B LDCONST R14 K4
|
||||
0x583C0004, // 005C LDCONST R15 K4
|
||||
0x58400004, // 005D LDCONST R16 K4
|
||||
0x50440000, // 005E LDBOOL R17 0 0
|
||||
0x7C2C0C00, // 005F CALL R11 6
|
||||
0x8C2C011D, // 0060 GETMET R11 R0 K29
|
||||
0x8834071E, // 0061 GETMBR R13 R3 K30
|
||||
0x8838071F, // 0062 GETMBR R14 R3 K31
|
||||
0x5C3C1000, // 0063 MOVE R15 R8
|
||||
0x5C401200, // 0064 MOVE R16 R9
|
||||
0x5C441400, // 0065 MOVE R17 R10
|
||||
0x5C480C00, // 0066 MOVE R18 R6
|
||||
0x7C2C0E00, // 0067 CALL R11 7
|
||||
0x502C0200, // 0068 LDBOOL R11 1 0
|
||||
0x80041600, // 0069 RET 1 R11
|
||||
0x8C1C0517, // 0040 GETMET R7 R2 K23
|
||||
0x7C1C0200, // 0041 CALL R7 1
|
||||
0x8C1C0F18, // 0042 GETMET R7 R7 K24
|
||||
0x88240719, // 0043 GETMBR R9 R3 K25
|
||||
0x60280015, // 0044 GETGBL R10 G21
|
||||
0x7C280000, // 0045 CALL R10 0
|
||||
0x602C0015, // 0046 GETGBL R11 G21
|
||||
0x7C2C0000, // 0047 CALL R11 0
|
||||
0x8C2C171A, // 0048 GETMET R11 R11 K26
|
||||
0x8834011B, // 0049 GETMBR R13 R0 K27
|
||||
0x7C2C0400, // 004A CALL R11 2
|
||||
0x5432002F, // 004B LDINT R12 48
|
||||
0x7C1C0A00, // 004C CALL R7 5
|
||||
0x5422000E, // 004D LDINT R8 15
|
||||
0x40220808, // 004E CONNECT R8 K4 R8
|
||||
0x94200E08, // 004F GETIDX R8 R7 R8
|
||||
0x5426000F, // 0050 LDINT R9 16
|
||||
0x542A001E, // 0051 LDINT R10 31
|
||||
0x4024120A, // 0052 CONNECT R9 R9 R10
|
||||
0x94240E09, // 0053 GETIDX R9 R7 R9
|
||||
0x542A001F, // 0054 LDINT R10 32
|
||||
0x542E002E, // 0055 LDINT R11 47
|
||||
0x4028140B, // 0056 CONNECT R10 R10 R11
|
||||
0x94280E0A, // 0057 GETIDX R10 R7 R10
|
||||
0x8C2C010B, // 0058 GETMET R11 R0 K11
|
||||
0x5C340200, // 0059 MOVE R13 R1
|
||||
0x58380004, // 005A LDCONST R14 K4
|
||||
0x583C0004, // 005B LDCONST R15 K4
|
||||
0x58400004, // 005C LDCONST R16 K4
|
||||
0x50440000, // 005D LDBOOL R17 0 0
|
||||
0x7C2C0C00, // 005E CALL R11 6
|
||||
0x8C2C011C, // 005F GETMET R11 R0 K28
|
||||
0x8834071D, // 0060 GETMBR R13 R3 K29
|
||||
0x8838071E, // 0061 GETMBR R14 R3 K30
|
||||
0x5C3C1000, // 0062 MOVE R15 R8
|
||||
0x5C401200, // 0063 MOVE R16 R9
|
||||
0x5C441400, // 0064 MOVE R17 R10
|
||||
0x5C480C00, // 0065 MOVE R18 R6
|
||||
0x7C2C0E00, // 0066 CALL R11 7
|
||||
0x502C0200, // 0067 LDBOOL R11 1 0
|
||||
0x80041600, // 0068 RET 1 R11
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -885,7 +884,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[67]) { /* constants */
|
||||
( &(const bvalue[66]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(crypto),
|
||||
/* K1 */ be_nested_str_weak(opcode),
|
||||
/* K2 */ be_nested_str_weak(local_session_id),
|
||||
@ -943,20 +942,19 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
|
||||
/* K54 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys),
|
||||
/* K55 */ be_nested_str_weak(Msg3),
|
||||
/* K56 */ be_nested_str_weak(SEKeys_Info),
|
||||
/* K57 */ be_nested_str_weak(rtc),
|
||||
/* K58 */ be_nested_str_weak(utc),
|
||||
/* K59 */ be_nested_str_weak(close),
|
||||
/* K60 */ be_nested_str_weak(set_keys),
|
||||
/* K61 */ be_nested_str_weak(_breadcrumb),
|
||||
/* K62 */ be_nested_str_weak(counter_snd_next),
|
||||
/* K63 */ be_nested_str_weak(set_persist),
|
||||
/* K64 */ be_nested_str_weak(set_no_expiration),
|
||||
/* K65 */ be_nested_str_weak(persist_to_fabric),
|
||||
/* K66 */ be_nested_str_weak(save),
|
||||
/* K57 */ be_nested_str_weak(rtc_utc),
|
||||
/* K58 */ be_nested_str_weak(close),
|
||||
/* K59 */ be_nested_str_weak(set_keys),
|
||||
/* K60 */ be_nested_str_weak(_breadcrumb),
|
||||
/* K61 */ be_nested_str_weak(counter_snd_next),
|
||||
/* K62 */ be_nested_str_weak(set_persist),
|
||||
/* K63 */ be_nested_str_weak(set_no_expiration),
|
||||
/* K64 */ be_nested_str_weak(persist_to_fabric),
|
||||
/* K65 */ be_nested_str_weak(save),
|
||||
}),
|
||||
be_str_weak(parse_Sigma3),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[287]) { /* code */
|
||||
( &(const binstruction[286]) { /* code */
|
||||
0xA40A0000, // 0000 IMPORT R2 K0
|
||||
0x880C0301, // 0001 GETMBR R3 R1 K1
|
||||
0x54120031, // 0002 LDINT R4 50
|
||||
@ -1214,36 +1212,35 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
|
||||
0xB8720A00, // 00FE GETNGBL R28 K5
|
||||
0x8C703939, // 00FF GETMET R28 R28 K57
|
||||
0x7C700200, // 0100 CALL R28 1
|
||||
0x9470393A, // 0101 GETIDX R28 R28 K58
|
||||
0x8C740109, // 0102 GETMET R29 R0 K9
|
||||
0x5C7C0200, // 0103 MOVE R31 R1
|
||||
0x58800003, // 0104 LDCONST R32 K3
|
||||
0x58840003, // 0105 LDCONST R33 K3
|
||||
0x58880003, // 0106 LDCONST R34 K3
|
||||
0x508C0200, // 0107 LDBOOL R35 1 0
|
||||
0x7C740C00, // 0108 CALL R29 6
|
||||
0x8C74073B, // 0109 GETMET R29 R3 K59
|
||||
0x7C740200, // 010A CALL R29 1
|
||||
0x8C74073C, // 010B GETMET R29 R3 K60
|
||||
0x5C7C3200, // 010C MOVE R31 R25
|
||||
0x5C803400, // 010D MOVE R32 R26
|
||||
0x5C843600, // 010E MOVE R33 R27
|
||||
0x5C883800, // 010F MOVE R34 R28
|
||||
0x7C740A00, // 0110 CALL R29 5
|
||||
0x900E7B03, // 0111 SETMBR R3 K61 K3
|
||||
0x8C74073E, // 0112 GETMET R29 R3 K62
|
||||
0x7C740200, // 0113 CALL R29 1
|
||||
0x8C74073F, // 0114 GETMET R29 R3 K63
|
||||
0x507C0200, // 0115 LDBOOL R31 1 0
|
||||
0x7C740400, // 0116 CALL R29 2
|
||||
0x8C740740, // 0117 GETMET R29 R3 K64
|
||||
0x7C740200, // 0118 CALL R29 1
|
||||
0x8C740741, // 0119 GETMET R29 R3 K65
|
||||
0x7C740200, // 011A CALL R29 1
|
||||
0x8C740742, // 011B GETMET R29 R3 K66
|
||||
0x7C740200, // 011C CALL R29 1
|
||||
0x50740200, // 011D LDBOOL R29 1 0
|
||||
0x80043A00, // 011E RET 1 R29
|
||||
0x8C740109, // 0101 GETMET R29 R0 K9
|
||||
0x5C7C0200, // 0102 MOVE R31 R1
|
||||
0x58800003, // 0103 LDCONST R32 K3
|
||||
0x58840003, // 0104 LDCONST R33 K3
|
||||
0x58880003, // 0105 LDCONST R34 K3
|
||||
0x508C0200, // 0106 LDBOOL R35 1 0
|
||||
0x7C740C00, // 0107 CALL R29 6
|
||||
0x8C74073A, // 0108 GETMET R29 R3 K58
|
||||
0x7C740200, // 0109 CALL R29 1
|
||||
0x8C74073B, // 010A GETMET R29 R3 K59
|
||||
0x5C7C3200, // 010B MOVE R31 R25
|
||||
0x5C803400, // 010C MOVE R32 R26
|
||||
0x5C843600, // 010D MOVE R33 R27
|
||||
0x5C883800, // 010E MOVE R34 R28
|
||||
0x7C740A00, // 010F CALL R29 5
|
||||
0x900E7903, // 0110 SETMBR R3 K60 K3
|
||||
0x8C74073D, // 0111 GETMET R29 R3 K61
|
||||
0x7C740200, // 0112 CALL R29 1
|
||||
0x8C74073E, // 0113 GETMET R29 R3 K62
|
||||
0x507C0200, // 0114 LDBOOL R31 1 0
|
||||
0x7C740400, // 0115 CALL R29 2
|
||||
0x8C74073F, // 0116 GETMET R29 R3 K63
|
||||
0x7C740200, // 0117 CALL R29 1
|
||||
0x8C740740, // 0118 GETMET R29 R3 K64
|
||||
0x7C740200, // 0119 CALL R29 1
|
||||
0x8C740741, // 011A GETMET R29 R3 K65
|
||||
0x7C740200, // 011B CALL R29 1
|
||||
0x50740200, // 011C LDBOOL R29 1 0
|
||||
0x80043A00, // 011D RET 1 R29
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -1391,7 +1388,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[104]) { /* constants */
|
||||
( &(const bvalue[103]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(crypto),
|
||||
/* K1 */ be_nested_str_weak(session),
|
||||
/* K2 */ be_nested_str_weak(opcode),
|
||||
@ -1447,55 +1444,54 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
|
||||
/* K52 */ be_nested_str_weak(responderSessionID),
|
||||
/* K53 */ be_nested_str_weak(sigma2ResumeMIC),
|
||||
/* K54 */ be_nested_str_weak(SessionResumptionKeys),
|
||||
/* K55 */ be_nested_str_weak(rtc),
|
||||
/* K56 */ be_nested_str_weak(utc),
|
||||
/* K57 */ be_nested_str_weak(tlv2raw),
|
||||
/* K58 */ be_nested_str_weak(__Msg1),
|
||||
/* K59 */ be_nested_str_weak(build_response),
|
||||
/* K60 */ be_nested_str_weak(encode_frame),
|
||||
/* K61 */ be_nested_str_weak(responder),
|
||||
/* K62 */ be_nested_str_weak(send_response_frame),
|
||||
/* K63 */ be_nested_str_weak(close),
|
||||
/* K64 */ be_nested_str_weak(set_keys),
|
||||
/* K65 */ be_nested_str_weak(_breadcrumb),
|
||||
/* K66 */ be_nested_str_weak(counter_snd_next),
|
||||
/* K67 */ be_nested_str_weak(set_persist),
|
||||
/* K68 */ be_nested_str_weak(set_no_expiration),
|
||||
/* K69 */ be_nested_str_weak(persist_to_fabric),
|
||||
/* K70 */ be_nested_str_weak(save),
|
||||
/* K71 */ be_nested_str_weak(find_fabric_by_destination_id),
|
||||
/* K72 */ be_nested_str_weak(destinationId),
|
||||
/* K73 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29),
|
||||
/* K74 */ be_nested_str_weak(__responder_priv),
|
||||
/* K75 */ be_nested_str_weak(__responder_pub),
|
||||
/* K76 */ be_nested_str_weak(EC_P256),
|
||||
/* K77 */ be_nested_str_weak(public_key),
|
||||
/* K78 */ be_nested_str_weak(shared_key),
|
||||
/* K79 */ be_nested_str_weak(TLV),
|
||||
/* K80 */ be_nested_str_weak(Matter_TLV_struct),
|
||||
/* K81 */ be_nested_str_weak(add_TLV),
|
||||
/* K82 */ be_nested_str_weak(B2),
|
||||
/* K83 */ be_nested_str_weak(get_noc),
|
||||
/* K84 */ be_nested_str_weak(get_icac),
|
||||
/* K85 */ be_nested_str_weak(ecdsa_sign_sha256),
|
||||
/* K86 */ be_nested_str_weak(get_pk),
|
||||
/* K87 */ be_nested_str_weak(Msg1),
|
||||
/* K88 */ be_nested_str_weak(SHA256),
|
||||
/* K89 */ be_nested_str_weak(update),
|
||||
/* K90 */ be_nested_str_weak(out),
|
||||
/* K91 */ be_nested_str_weak(S2K_Info),
|
||||
/* K92 */ be_nested_str_weak(get_ipk_group_key),
|
||||
/* K93 */ be_nested_str_weak(TBEData2_Nonce),
|
||||
/* K94 */ be_nested_str_weak(encrypt),
|
||||
/* K95 */ be_nested_str_weak(Sigma2),
|
||||
/* K96 */ be_nested_str_weak(responderRandom),
|
||||
/* K97 */ be_nested_str_weak(responderSessionId),
|
||||
/* K98 */ be_nested_str_weak(responderEphPubKey),
|
||||
/* K99 */ be_nested_str_weak(encrypted2),
|
||||
/* K100 */ be_nested_str_weak(__Msg2),
|
||||
/* K101 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i),
|
||||
/* K102 */ be_nested_str_weak(_ip),
|
||||
/* K103 */ be_nested_str_weak(_port),
|
||||
/* K55 */ be_nested_str_weak(rtc_utc),
|
||||
/* K56 */ be_nested_str_weak(tlv2raw),
|
||||
/* K57 */ be_nested_str_weak(__Msg1),
|
||||
/* K58 */ be_nested_str_weak(build_response),
|
||||
/* K59 */ be_nested_str_weak(encode_frame),
|
||||
/* K60 */ be_nested_str_weak(responder),
|
||||
/* K61 */ be_nested_str_weak(send_response_frame),
|
||||
/* K62 */ be_nested_str_weak(close),
|
||||
/* K63 */ be_nested_str_weak(set_keys),
|
||||
/* K64 */ be_nested_str_weak(_breadcrumb),
|
||||
/* K65 */ be_nested_str_weak(counter_snd_next),
|
||||
/* K66 */ be_nested_str_weak(set_persist),
|
||||
/* K67 */ be_nested_str_weak(set_no_expiration),
|
||||
/* K68 */ be_nested_str_weak(persist_to_fabric),
|
||||
/* K69 */ be_nested_str_weak(save),
|
||||
/* K70 */ be_nested_str_weak(find_fabric_by_destination_id),
|
||||
/* K71 */ be_nested_str_weak(destinationId),
|
||||
/* K72 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29),
|
||||
/* K73 */ be_nested_str_weak(__responder_priv),
|
||||
/* K74 */ be_nested_str_weak(__responder_pub),
|
||||
/* K75 */ be_nested_str_weak(EC_P256),
|
||||
/* K76 */ be_nested_str_weak(public_key),
|
||||
/* K77 */ be_nested_str_weak(shared_key),
|
||||
/* K78 */ be_nested_str_weak(TLV),
|
||||
/* K79 */ be_nested_str_weak(Matter_TLV_struct),
|
||||
/* K80 */ be_nested_str_weak(add_TLV),
|
||||
/* K81 */ be_nested_str_weak(B2),
|
||||
/* K82 */ be_nested_str_weak(get_noc),
|
||||
/* K83 */ be_nested_str_weak(get_icac),
|
||||
/* K84 */ be_nested_str_weak(ecdsa_sign_sha256),
|
||||
/* K85 */ be_nested_str_weak(get_pk),
|
||||
/* K86 */ be_nested_str_weak(Msg1),
|
||||
/* K87 */ be_nested_str_weak(SHA256),
|
||||
/* K88 */ be_nested_str_weak(update),
|
||||
/* K89 */ be_nested_str_weak(out),
|
||||
/* K90 */ be_nested_str_weak(S2K_Info),
|
||||
/* K91 */ be_nested_str_weak(get_ipk_group_key),
|
||||
/* K92 */ be_nested_str_weak(TBEData2_Nonce),
|
||||
/* K93 */ be_nested_str_weak(encrypt),
|
||||
/* K94 */ be_nested_str_weak(Sigma2),
|
||||
/* K95 */ be_nested_str_weak(responderRandom),
|
||||
/* K96 */ be_nested_str_weak(responderSessionId),
|
||||
/* K97 */ be_nested_str_weak(responderEphPubKey),
|
||||
/* K98 */ be_nested_str_weak(encrypted2),
|
||||
/* K99 */ be_nested_str_weak(__Msg2),
|
||||
/* K100 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i),
|
||||
/* K101 */ be_nested_str_weak(_ip),
|
||||
/* K102 */ be_nested_str_weak(_port),
|
||||
}),
|
||||
be_str_weak(parse_Sigma1),
|
||||
&be_const_str_solidified,
|
||||
@ -1562,7 +1558,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
|
||||
0x1C1C0E08, // 003B EQ R7 R7 R8
|
||||
0x781E0000, // 003C JMPF R7 #003E
|
||||
0x50140000, // 003D LDBOOL R5 0 0
|
||||
0x781600B6, // 003E JMPF R5 #00F6
|
||||
0x781600B5, // 003E JMPF R5 #00F5
|
||||
0x881C091A, // 003F GETMBR R7 R4 K26
|
||||
0x88200914, // 0040 GETMBR R8 R4 K20
|
||||
0x001C0E08, // 0041 ADD R7 R7 R8
|
||||
@ -1610,7 +1606,7 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
|
||||
0x8C3C1B24, // 006B GETMET R15 R13 K36
|
||||
0x7C3C0200, // 006C CALL R15 1
|
||||
0x1C40180F, // 006D EQ R16 R12 R15
|
||||
0x78420085, // 006E JMPF R16 #00F5
|
||||
0x78420084, // 006E JMPF R16 #00F4
|
||||
0x88400D19, // 006F GETMBR R16 R6 K25
|
||||
0x900E3210, // 0070 SETMBR R3 K25 R16
|
||||
0x88400326, // 0071 GETMBR R16 R1 K38
|
||||
@ -1706,275 +1702,275 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
|
||||
0xB86A0C00, // 00CB GETNGBL R26 K6
|
||||
0x8C683537, // 00CC GETMET R26 R26 K55
|
||||
0x7C680200, // 00CD CALL R26 1
|
||||
0x94683538, // 00CE GETIDX R26 R26 K56
|
||||
0x8C6C2B39, // 00CF GETMET R27 R21 K57
|
||||
0x7C6C0200, // 00D0 CALL R27 1
|
||||
0x4C700000, // 00D1 LDNIL R28
|
||||
0x900E741C, // 00D2 SETMBR R3 K58 R28
|
||||
0x8C70033B, // 00D3 GETMET R28 R1 K59
|
||||
0x547A0032, // 00D4 LDINT R30 51
|
||||
0x507C0200, // 00D5 LDBOOL R31 1 0
|
||||
0x7C700600, // 00D6 CALL R28 3
|
||||
0x8C74393C, // 00D7 GETMET R29 R28 K60
|
||||
0x5C7C3600, // 00D8 MOVE R31 R27
|
||||
0x7C740400, // 00D9 CALL R29 2
|
||||
0x8878013D, // 00DA GETMBR R30 R0 K61
|
||||
0x8C783D3E, // 00DB GETMET R30 R30 K62
|
||||
0x5C803800, // 00DC MOVE R32 R28
|
||||
0x7C780400, // 00DD CALL R30 2
|
||||
0x8C78073F, // 00DE GETMET R30 R3 K63
|
||||
0x7C780200, // 00DF CALL R30 1
|
||||
0x8C780740, // 00E0 GETMET R30 R3 K64
|
||||
0x5C802E00, // 00E1 MOVE R32 R23
|
||||
0x5C843000, // 00E2 MOVE R33 R24
|
||||
0x5C883200, // 00E3 MOVE R34 R25
|
||||
0x5C8C3400, // 00E4 MOVE R35 R26
|
||||
0x7C780A00, // 00E5 CALL R30 5
|
||||
0x900E8304, // 00E6 SETMBR R3 K65 K4
|
||||
0x8C780742, // 00E7 GETMET R30 R3 K66
|
||||
0x7C780200, // 00E8 CALL R30 1
|
||||
0x8C780743, // 00E9 GETMET R30 R3 K67
|
||||
0x50800200, // 00EA LDBOOL R32 1 0
|
||||
0x7C780400, // 00EB CALL R30 2
|
||||
0x8C780744, // 00EC GETMET R30 R3 K68
|
||||
0x7C780200, // 00ED CALL R30 1
|
||||
0x8C780745, // 00EE GETMET R30 R3 K69
|
||||
0x7C780200, // 00EF CALL R30 1
|
||||
0x8C780746, // 00F0 GETMET R30 R3 K70
|
||||
0x7C780200, // 00F1 CALL R30 1
|
||||
0x50780200, // 00F2 LDBOOL R30 1 0
|
||||
0x80043C00, // 00F3 RET 1 R30
|
||||
0x70020000, // 00F4 JMP #00F6
|
||||
0x50140000, // 00F5 LDBOOL R5 0 0
|
||||
0x5C1C0A00, // 00F6 MOVE R7 R5
|
||||
0x741E00E6, // 00F7 JMPT R7 #01DF
|
||||
0x8C1C0147, // 00F8 GETMET R7 R0 K71
|
||||
0x88240948, // 00F9 GETMBR R9 R4 K72
|
||||
0x8828091A, // 00FA GETMBR R10 R4 K26
|
||||
0x7C1C0600, // 00FB CALL R7 3
|
||||
0x900E3207, // 00FC SETMBR R3 K25 R7
|
||||
0x4C200000, // 00FD LDNIL R8
|
||||
0x1C200608, // 00FE EQ R8 R3 R8
|
||||
0x74220003, // 00FF JMPT R8 #0104
|
||||
0x88200719, // 0100 GETMBR R8 R3 K25
|
||||
0x4C240000, // 0101 LDNIL R9
|
||||
0x1C201009, // 0102 EQ R8 R8 R9
|
||||
0x7822000D, // 0103 JMPF R8 #0112
|
||||
0xB8220C00, // 0104 GETNGBL R8 K6
|
||||
0x8C201107, // 0105 GETMET R8 R8 K7
|
||||
0x58280049, // 0106 LDCONST R10 K73
|
||||
0x582C0009, // 0107 LDCONST R11 K9
|
||||
0x7C200600, // 0108 CALL R8 3
|
||||
0x8C20010A, // 0109 GETMET R8 R0 K10
|
||||
0x5C280200, // 010A MOVE R10 R1
|
||||
0x582C000B, // 010B LDCONST R11 K11
|
||||
0x58300004, // 010C LDCONST R12 K4
|
||||
0x5834000B, // 010D LDCONST R13 K11
|
||||
0x50380000, // 010E LDBOOL R14 0 0
|
||||
0x7C200C00, // 010F CALL R8 6
|
||||
0x50200000, // 0110 LDBOOL R8 0 0
|
||||
0x80041000, // 0111 RET 1 R8
|
||||
0x88200326, // 0112 GETMBR R8 R1 K38
|
||||
0x900E4A08, // 0113 SETMBR R3 K37 R8
|
||||
0x8C200727, // 0114 GETMET R8 R3 K39
|
||||
0x7C200200, // 0115 CALL R8 1
|
||||
0x88200929, // 0116 GETMBR R8 R4 K41
|
||||
0x900E5008, // 0117 SETMBR R3 K40 R8
|
||||
0x88200116, // 0118 GETMBR R8 R0 K22
|
||||
0x88201117, // 0119 GETMBR R8 R8 K23
|
||||
0x8C20112B, // 011A GETMET R8 R8 K43
|
||||
0x7C200200, // 011B CALL R8 1
|
||||
0x900E5408, // 011C SETMBR R3 K42 R8
|
||||
0xB8220C00, // 011D GETNGBL R8 K6
|
||||
0x8C201107, // 011E GETMET R8 R8 K7
|
||||
0x60280018, // 011F GETGBL R10 G24
|
||||
0x582C002C, // 0120 LDCONST R11 K44
|
||||
0x8830072A, // 0121 GETMBR R12 R3 K42
|
||||
0x8834032D, // 0122 GETMBR R13 R1 K45
|
||||
0x8838032E, // 0123 GETMBR R14 R1 K46
|
||||
0x7C280800, // 0124 CALL R10 4
|
||||
0x582C0009, // 0125 LDCONST R11 K9
|
||||
0x7C200600, // 0126 CALL R8 3
|
||||
0x8C200530, // 0127 GETMET R8 R2 K48
|
||||
0x542A000F, // 0128 LDINT R10 16
|
||||
0x7C200400, // 0129 CALL R8 2
|
||||
0x900E5E08, // 012A SETMBR R3 K47 R8
|
||||
0x8C200530, // 012B GETMET R8 R2 K48
|
||||
0x542A001F, // 012C LDINT R10 32
|
||||
0x7C200400, // 012D CALL R8 2
|
||||
0x900E9408, // 012E SETMBR R3 K74 R8
|
||||
0x8C20054C, // 012F GETMET R8 R2 K76
|
||||
0x7C200200, // 0130 CALL R8 1
|
||||
0x8C20114D, // 0131 GETMET R8 R8 K77
|
||||
0x8828074A, // 0132 GETMBR R10 R3 K74
|
||||
0x7C200400, // 0133 CALL R8 2
|
||||
0x900E9608, // 0134 SETMBR R3 K75 R8
|
||||
0x8C200530, // 0135 GETMET R8 R2 K48
|
||||
0x542A001F, // 0136 LDINT R10 32
|
||||
0x7C200400, // 0137 CALL R8 2
|
||||
0x8C24054C, // 0138 GETMET R9 R2 K76
|
||||
0x7C240200, // 0139 CALL R9 1
|
||||
0x8C24134E, // 013A GETMET R9 R9 K78
|
||||
0x882C074A, // 013B GETMBR R11 R3 K74
|
||||
0x88300913, // 013C GETMBR R12 R4 K19
|
||||
0x7C240600, // 013D CALL R9 3
|
||||
0x900E3E09, // 013E SETMBR R3 K31 R9
|
||||
0xB8261A00, // 013F GETNGBL R9 K13
|
||||
0x8824134F, // 0140 GETMBR R9 R9 K79
|
||||
0x8C241350, // 0141 GETMET R9 R9 K80
|
||||
0x7C240200, // 0142 CALL R9 1
|
||||
0x8C281351, // 0143 GETMET R10 R9 K81
|
||||
0x5830000B, // 0144 LDCONST R12 K11
|
||||
0xB8361A00, // 0145 GETNGBL R13 K13
|
||||
0x88341B4F, // 0146 GETMBR R13 R13 K79
|
||||
0x88341B52, // 0147 GETMBR R13 R13 K82
|
||||
0x8C380F53, // 0148 GETMET R14 R7 K83
|
||||
0x7C380200, // 0149 CALL R14 1
|
||||
0x7C280800, // 014A CALL R10 4
|
||||
0x8C281351, // 014B GETMET R10 R9 K81
|
||||
0x5830000C, // 014C LDCONST R12 K12
|
||||
0xB8361A00, // 014D GETNGBL R13 K13
|
||||
0x88341B4F, // 014E GETMBR R13 R13 K79
|
||||
0x88341B52, // 014F GETMBR R13 R13 K82
|
||||
0x8C380F54, // 0150 GETMET R14 R7 K84
|
||||
0x7C380200, // 0151 CALL R14 1
|
||||
0x7C280800, // 0152 CALL R10 4
|
||||
0x8C281351, // 0153 GETMET R10 R9 K81
|
||||
0x58300009, // 0154 LDCONST R12 K9
|
||||
0xB8361A00, // 0155 GETNGBL R13 K13
|
||||
0x88341B4F, // 0156 GETMBR R13 R13 K79
|
||||
0x88341B52, // 0157 GETMBR R13 R13 K82
|
||||
0x8838074B, // 0158 GETMBR R14 R3 K75
|
||||
0x7C280800, // 0159 CALL R10 4
|
||||
0x8C281351, // 015A GETMET R10 R9 K81
|
||||
0x54320003, // 015B LDINT R12 4
|
||||
0xB8361A00, // 015C GETNGBL R13 K13
|
||||
0x88341B4F, // 015D GETMBR R13 R13 K79
|
||||
0x88341B52, // 015E GETMBR R13 R13 K82
|
||||
0x88380913, // 015F GETMBR R14 R4 K19
|
||||
0x7C280800, // 0160 CALL R10 4
|
||||
0x8C28054C, // 0161 GETMET R10 R2 K76
|
||||
0x7C280200, // 0162 CALL R10 1
|
||||
0x8C281555, // 0163 GETMET R10 R10 K85
|
||||
0x8C300F56, // 0164 GETMET R12 R7 K86
|
||||
0x7C300200, // 0165 CALL R12 1
|
||||
0x8C341339, // 0166 GETMET R13 R9 K57
|
||||
0x7C340200, // 0167 CALL R13 1
|
||||
0x7C280600, // 0168 CALL R10 3
|
||||
0xB82E1A00, // 0169 GETNGBL R11 K13
|
||||
0x882C174F, // 016A GETMBR R11 R11 K79
|
||||
0x8C2C1750, // 016B GETMET R11 R11 K80
|
||||
0x7C2C0200, // 016C CALL R11 1
|
||||
0x8C301751, // 016D GETMET R12 R11 K81
|
||||
0x5838000B, // 016E LDCONST R14 K11
|
||||
0xB83E1A00, // 016F GETNGBL R15 K13
|
||||
0x883C1F4F, // 0170 GETMBR R15 R15 K79
|
||||
0x883C1F52, // 0171 GETMBR R15 R15 K82
|
||||
0x8C400F53, // 0172 GETMET R16 R7 K83
|
||||
0x7C400200, // 0173 CALL R16 1
|
||||
0x7C300800, // 0174 CALL R12 4
|
||||
0x8C301751, // 0175 GETMET R12 R11 K81
|
||||
0x5838000C, // 0176 LDCONST R14 K12
|
||||
0xB83E1A00, // 0177 GETNGBL R15 K13
|
||||
0x883C1F4F, // 0178 GETMBR R15 R15 K79
|
||||
0x883C1F52, // 0179 GETMBR R15 R15 K82
|
||||
0x8C400F54, // 017A GETMET R16 R7 K84
|
||||
0x7C400200, // 017B CALL R16 1
|
||||
0x7C300800, // 017C CALL R12 4
|
||||
0x8C301751, // 017D GETMET R12 R11 K81
|
||||
0x58380009, // 017E LDCONST R14 K9
|
||||
0xB83E1A00, // 017F GETNGBL R15 K13
|
||||
0x883C1F4F, // 0180 GETMBR R15 R15 K79
|
||||
0x883C1F52, // 0181 GETMBR R15 R15 K82
|
||||
0x5C401400, // 0182 MOVE R16 R10
|
||||
0x7C300800, // 0183 CALL R12 4
|
||||
0x8C301751, // 0184 GETMET R12 R11 K81
|
||||
0x543A0003, // 0185 LDINT R14 4
|
||||
0xB83E1A00, // 0186 GETNGBL R15 K13
|
||||
0x883C1F4F, // 0187 GETMBR R15 R15 K79
|
||||
0x883C1F52, // 0188 GETMBR R15 R15 K82
|
||||
0x8840072F, // 0189 GETMBR R16 R3 K47
|
||||
0x7C300800, // 018A CALL R12 4
|
||||
0x88300957, // 018B GETMBR R12 R4 K87
|
||||
0x900E740C, // 018C SETMBR R3 K58 R12
|
||||
0x8C300558, // 018D GETMET R12 R2 K88
|
||||
0x7C300200, // 018E CALL R12 1
|
||||
0x8C301959, // 018F GETMET R12 R12 K89
|
||||
0x8838073A, // 0190 GETMBR R14 R3 K58
|
||||
0x7C300400, // 0191 CALL R12 2
|
||||
0x8C30195A, // 0192 GETMET R12 R12 K90
|
||||
0x7C300200, // 0193 CALL R12 1
|
||||
0x60340015, // 0194 GETGBL R13 G21
|
||||
0x7C340000, // 0195 CALL R13 0
|
||||
0x8C341B1B, // 0196 GETMET R13 R13 K27
|
||||
0x883C015B, // 0197 GETMBR R15 R0 K91
|
||||
0x7C340400, // 0198 CALL R13 2
|
||||
0x8C380F5C, // 0199 GETMET R14 R7 K92
|
||||
0x7C380200, // 019A CALL R14 1
|
||||
0x00381C08, // 019B ADD R14 R14 R8
|
||||
0x883C074B, // 019C GETMBR R15 R3 K75
|
||||
0x00381C0F, // 019D ADD R14 R14 R15
|
||||
0x00381C0C, // 019E ADD R14 R14 R12
|
||||
0x8C3C051D, // 019F GETMET R15 R2 K29
|
||||
0x7C3C0200, // 01A0 CALL R15 1
|
||||
0x8C3C1F1E, // 01A1 GETMET R15 R15 K30
|
||||
0x8844071F, // 01A2 GETMBR R17 R3 K31
|
||||
0x5C481C00, // 01A3 MOVE R18 R14
|
||||
0x5C4C1A00, // 01A4 MOVE R19 R13
|
||||
0x5452000F, // 01A5 LDINT R20 16
|
||||
0x7C3C0A00, // 01A6 CALL R15 5
|
||||
0x8C401739, // 01A7 GETMET R16 R11 K57
|
||||
0x7C400200, // 01A8 CALL R16 1
|
||||
0x8C440522, // 01A9 GETMET R17 R2 K34
|
||||
0x5C4C1E00, // 01AA MOVE R19 R15
|
||||
0x60500015, // 01AB GETGBL R20 G21
|
||||
0x7C500000, // 01AC CALL R20 0
|
||||
0x8C50291B, // 01AD GETMET R20 R20 K27
|
||||
0x8858015D, // 01AE GETMBR R22 R0 K93
|
||||
0x7C500400, // 01AF CALL R20 2
|
||||
0x60540015, // 01B0 GETGBL R21 G21
|
||||
0x7C540000, // 01B1 CALL R21 0
|
||||
0x6058000C, // 01B2 GETGBL R22 G12
|
||||
0x5C5C2000, // 01B3 MOVE R23 R16
|
||||
0x7C580200, // 01B4 CALL R22 1
|
||||
0x545E000F, // 01B5 LDINT R23 16
|
||||
0x7C440C00, // 01B6 CALL R17 6
|
||||
0x8C48235E, // 01B7 GETMET R18 R17 K94
|
||||
0x5C502000, // 01B8 MOVE R20 R16
|
||||
0x7C480400, // 01B9 CALL R18 2
|
||||
0x8C4C2324, // 01BA GETMET R19 R17 K36
|
||||
0x7C4C0200, // 01BB CALL R19 1
|
||||
0x00482413, // 01BC ADD R18 R18 R19
|
||||
0xB84E1A00, // 01BD GETNGBL R19 K13
|
||||
0x8C4C275F, // 01BE GETMET R19 R19 K95
|
||||
0x7C4C0200, // 01BF CALL R19 1
|
||||
0x904EC008, // 01C0 SETMBR R19 K96 R8
|
||||
0x8850072A, // 01C1 GETMBR R20 R3 K42
|
||||
0x904EC214, // 01C2 SETMBR R19 K97 R20
|
||||
0x8850074B, // 01C3 GETMBR R20 R3 K75
|
||||
0x904EC414, // 01C4 SETMBR R19 K98 R20
|
||||
0x904EC612, // 01C5 SETMBR R19 K99 R18
|
||||
0x8C502739, // 01C6 GETMET R20 R19 K57
|
||||
0x7C500200, // 01C7 CALL R20 1
|
||||
0x900EC814, // 01C8 SETMBR R3 K100 R20
|
||||
0x8C54033B, // 01C9 GETMET R21 R1 K59
|
||||
0x545E0030, // 01CA LDINT R23 49
|
||||
0x50600200, // 01CB LDBOOL R24 1 0
|
||||
0x7C540600, // 01CC CALL R21 3
|
||||
0x8C582B3C, // 01CD GETMET R22 R21 K60
|
||||
0x5C602800, // 01CE MOVE R24 R20
|
||||
0x7C580400, // 01CF CALL R22 2
|
||||
0xB85E0C00, // 01D0 GETNGBL R23 K6
|
||||
0x8C5C2F07, // 01D1 GETMET R23 R23 K7
|
||||
0x60640018, // 01D2 GETGBL R25 G24
|
||||
0x58680065, // 01D3 LDCONST R26 K101
|
||||
0x886C072A, // 01D4 GETMBR R27 R3 K42
|
||||
0x88700766, // 01D5 GETMBR R28 R3 K102
|
||||
0x88740767, // 01D6 GETMBR R29 R3 K103
|
||||
0x7C640800, // 01D7 CALL R25 4
|
||||
0x7C5C0400, // 01D8 CALL R23 2
|
||||
0x885C013D, // 01D9 GETMBR R23 R0 K61
|
||||
0x8C5C2F3E, // 01DA GETMET R23 R23 K62
|
||||
0x8C6C2B38, // 00CE GETMET R27 R21 K56
|
||||
0x7C6C0200, // 00CF CALL R27 1
|
||||
0x4C700000, // 00D0 LDNIL R28
|
||||
0x900E721C, // 00D1 SETMBR R3 K57 R28
|
||||
0x8C70033A, // 00D2 GETMET R28 R1 K58
|
||||
0x547A0032, // 00D3 LDINT R30 51
|
||||
0x507C0200, // 00D4 LDBOOL R31 1 0
|
||||
0x7C700600, // 00D5 CALL R28 3
|
||||
0x8C74393B, // 00D6 GETMET R29 R28 K59
|
||||
0x5C7C3600, // 00D7 MOVE R31 R27
|
||||
0x7C740400, // 00D8 CALL R29 2
|
||||
0x8878013C, // 00D9 GETMBR R30 R0 K60
|
||||
0x8C783D3D, // 00DA GETMET R30 R30 K61
|
||||
0x5C803800, // 00DB MOVE R32 R28
|
||||
0x7C780400, // 00DC CALL R30 2
|
||||
0x8C78073E, // 00DD GETMET R30 R3 K62
|
||||
0x7C780200, // 00DE CALL R30 1
|
||||
0x8C78073F, // 00DF GETMET R30 R3 K63
|
||||
0x5C802E00, // 00E0 MOVE R32 R23
|
||||
0x5C843000, // 00E1 MOVE R33 R24
|
||||
0x5C883200, // 00E2 MOVE R34 R25
|
||||
0x5C8C3400, // 00E3 MOVE R35 R26
|
||||
0x7C780A00, // 00E4 CALL R30 5
|
||||
0x900E8104, // 00E5 SETMBR R3 K64 K4
|
||||
0x8C780741, // 00E6 GETMET R30 R3 K65
|
||||
0x7C780200, // 00E7 CALL R30 1
|
||||
0x8C780742, // 00E8 GETMET R30 R3 K66
|
||||
0x50800200, // 00E9 LDBOOL R32 1 0
|
||||
0x7C780400, // 00EA CALL R30 2
|
||||
0x8C780743, // 00EB GETMET R30 R3 K67
|
||||
0x7C780200, // 00EC CALL R30 1
|
||||
0x8C780744, // 00ED GETMET R30 R3 K68
|
||||
0x7C780200, // 00EE CALL R30 1
|
||||
0x8C780745, // 00EF GETMET R30 R3 K69
|
||||
0x7C780200, // 00F0 CALL R30 1
|
||||
0x50780200, // 00F1 LDBOOL R30 1 0
|
||||
0x80043C00, // 00F2 RET 1 R30
|
||||
0x70020000, // 00F3 JMP #00F5
|
||||
0x50140000, // 00F4 LDBOOL R5 0 0
|
||||
0x5C1C0A00, // 00F5 MOVE R7 R5
|
||||
0x741E00E7, // 00F6 JMPT R7 #01DF
|
||||
0x8C1C0146, // 00F7 GETMET R7 R0 K70
|
||||
0x88240947, // 00F8 GETMBR R9 R4 K71
|
||||
0x8828091A, // 00F9 GETMBR R10 R4 K26
|
||||
0x7C1C0600, // 00FA CALL R7 3
|
||||
0x900E3207, // 00FB SETMBR R3 K25 R7
|
||||
0x4C200000, // 00FC LDNIL R8
|
||||
0x1C200608, // 00FD EQ R8 R3 R8
|
||||
0x74220003, // 00FE JMPT R8 #0103
|
||||
0x88200719, // 00FF GETMBR R8 R3 K25
|
||||
0x4C240000, // 0100 LDNIL R9
|
||||
0x1C201009, // 0101 EQ R8 R8 R9
|
||||
0x7822000D, // 0102 JMPF R8 #0111
|
||||
0xB8220C00, // 0103 GETNGBL R8 K6
|
||||
0x8C201107, // 0104 GETMET R8 R8 K7
|
||||
0x58280048, // 0105 LDCONST R10 K72
|
||||
0x582C0009, // 0106 LDCONST R11 K9
|
||||
0x7C200600, // 0107 CALL R8 3
|
||||
0x8C20010A, // 0108 GETMET R8 R0 K10
|
||||
0x5C280200, // 0109 MOVE R10 R1
|
||||
0x582C000B, // 010A LDCONST R11 K11
|
||||
0x58300004, // 010B LDCONST R12 K4
|
||||
0x5834000B, // 010C LDCONST R13 K11
|
||||
0x50380000, // 010D LDBOOL R14 0 0
|
||||
0x7C200C00, // 010E CALL R8 6
|
||||
0x50200000, // 010F LDBOOL R8 0 0
|
||||
0x80041000, // 0110 RET 1 R8
|
||||
0x88200326, // 0111 GETMBR R8 R1 K38
|
||||
0x900E4A08, // 0112 SETMBR R3 K37 R8
|
||||
0x8C200727, // 0113 GETMET R8 R3 K39
|
||||
0x7C200200, // 0114 CALL R8 1
|
||||
0x88200929, // 0115 GETMBR R8 R4 K41
|
||||
0x900E5008, // 0116 SETMBR R3 K40 R8
|
||||
0x88200116, // 0117 GETMBR R8 R0 K22
|
||||
0x88201117, // 0118 GETMBR R8 R8 K23
|
||||
0x8C20112B, // 0119 GETMET R8 R8 K43
|
||||
0x7C200200, // 011A CALL R8 1
|
||||
0x900E5408, // 011B SETMBR R3 K42 R8
|
||||
0xB8220C00, // 011C GETNGBL R8 K6
|
||||
0x8C201107, // 011D GETMET R8 R8 K7
|
||||
0x60280018, // 011E GETGBL R10 G24
|
||||
0x582C002C, // 011F LDCONST R11 K44
|
||||
0x8830072A, // 0120 GETMBR R12 R3 K42
|
||||
0x8834032D, // 0121 GETMBR R13 R1 K45
|
||||
0x8838032E, // 0122 GETMBR R14 R1 K46
|
||||
0x7C280800, // 0123 CALL R10 4
|
||||
0x582C0009, // 0124 LDCONST R11 K9
|
||||
0x7C200600, // 0125 CALL R8 3
|
||||
0x8C200530, // 0126 GETMET R8 R2 K48
|
||||
0x542A000F, // 0127 LDINT R10 16
|
||||
0x7C200400, // 0128 CALL R8 2
|
||||
0x900E5E08, // 0129 SETMBR R3 K47 R8
|
||||
0x8C200530, // 012A GETMET R8 R2 K48
|
||||
0x542A001F, // 012B LDINT R10 32
|
||||
0x7C200400, // 012C CALL R8 2
|
||||
0x900E9208, // 012D SETMBR R3 K73 R8
|
||||
0x8C20054B, // 012E GETMET R8 R2 K75
|
||||
0x7C200200, // 012F CALL R8 1
|
||||
0x8C20114C, // 0130 GETMET R8 R8 K76
|
||||
0x88280749, // 0131 GETMBR R10 R3 K73
|
||||
0x7C200400, // 0132 CALL R8 2
|
||||
0x900E9408, // 0133 SETMBR R3 K74 R8
|
||||
0x8C200530, // 0134 GETMET R8 R2 K48
|
||||
0x542A001F, // 0135 LDINT R10 32
|
||||
0x7C200400, // 0136 CALL R8 2
|
||||
0x8C24054B, // 0137 GETMET R9 R2 K75
|
||||
0x7C240200, // 0138 CALL R9 1
|
||||
0x8C24134D, // 0139 GETMET R9 R9 K77
|
||||
0x882C0749, // 013A GETMBR R11 R3 K73
|
||||
0x88300913, // 013B GETMBR R12 R4 K19
|
||||
0x7C240600, // 013C CALL R9 3
|
||||
0x900E3E09, // 013D SETMBR R3 K31 R9
|
||||
0xB8261A00, // 013E GETNGBL R9 K13
|
||||
0x8824134E, // 013F GETMBR R9 R9 K78
|
||||
0x8C24134F, // 0140 GETMET R9 R9 K79
|
||||
0x7C240200, // 0141 CALL R9 1
|
||||
0x8C281350, // 0142 GETMET R10 R9 K80
|
||||
0x5830000B, // 0143 LDCONST R12 K11
|
||||
0xB8361A00, // 0144 GETNGBL R13 K13
|
||||
0x88341B4E, // 0145 GETMBR R13 R13 K78
|
||||
0x88341B51, // 0146 GETMBR R13 R13 K81
|
||||
0x8C380F52, // 0147 GETMET R14 R7 K82
|
||||
0x7C380200, // 0148 CALL R14 1
|
||||
0x7C280800, // 0149 CALL R10 4
|
||||
0x8C281350, // 014A GETMET R10 R9 K80
|
||||
0x5830000C, // 014B LDCONST R12 K12
|
||||
0xB8361A00, // 014C GETNGBL R13 K13
|
||||
0x88341B4E, // 014D GETMBR R13 R13 K78
|
||||
0x88341B51, // 014E GETMBR R13 R13 K81
|
||||
0x8C380F53, // 014F GETMET R14 R7 K83
|
||||
0x7C380200, // 0150 CALL R14 1
|
||||
0x7C280800, // 0151 CALL R10 4
|
||||
0x8C281350, // 0152 GETMET R10 R9 K80
|
||||
0x58300009, // 0153 LDCONST R12 K9
|
||||
0xB8361A00, // 0154 GETNGBL R13 K13
|
||||
0x88341B4E, // 0155 GETMBR R13 R13 K78
|
||||
0x88341B51, // 0156 GETMBR R13 R13 K81
|
||||
0x8838074A, // 0157 GETMBR R14 R3 K74
|
||||
0x7C280800, // 0158 CALL R10 4
|
||||
0x8C281350, // 0159 GETMET R10 R9 K80
|
||||
0x54320003, // 015A LDINT R12 4
|
||||
0xB8361A00, // 015B GETNGBL R13 K13
|
||||
0x88341B4E, // 015C GETMBR R13 R13 K78
|
||||
0x88341B51, // 015D GETMBR R13 R13 K81
|
||||
0x88380913, // 015E GETMBR R14 R4 K19
|
||||
0x7C280800, // 015F CALL R10 4
|
||||
0x8C28054B, // 0160 GETMET R10 R2 K75
|
||||
0x7C280200, // 0161 CALL R10 1
|
||||
0x8C281554, // 0162 GETMET R10 R10 K84
|
||||
0x8C300F55, // 0163 GETMET R12 R7 K85
|
||||
0x7C300200, // 0164 CALL R12 1
|
||||
0x8C341338, // 0165 GETMET R13 R9 K56
|
||||
0x7C340200, // 0166 CALL R13 1
|
||||
0x7C280600, // 0167 CALL R10 3
|
||||
0xB82E1A00, // 0168 GETNGBL R11 K13
|
||||
0x882C174E, // 0169 GETMBR R11 R11 K78
|
||||
0x8C2C174F, // 016A GETMET R11 R11 K79
|
||||
0x7C2C0200, // 016B CALL R11 1
|
||||
0x8C301750, // 016C GETMET R12 R11 K80
|
||||
0x5838000B, // 016D LDCONST R14 K11
|
||||
0xB83E1A00, // 016E GETNGBL R15 K13
|
||||
0x883C1F4E, // 016F GETMBR R15 R15 K78
|
||||
0x883C1F51, // 0170 GETMBR R15 R15 K81
|
||||
0x8C400F52, // 0171 GETMET R16 R7 K82
|
||||
0x7C400200, // 0172 CALL R16 1
|
||||
0x7C300800, // 0173 CALL R12 4
|
||||
0x8C301750, // 0174 GETMET R12 R11 K80
|
||||
0x5838000C, // 0175 LDCONST R14 K12
|
||||
0xB83E1A00, // 0176 GETNGBL R15 K13
|
||||
0x883C1F4E, // 0177 GETMBR R15 R15 K78
|
||||
0x883C1F51, // 0178 GETMBR R15 R15 K81
|
||||
0x8C400F53, // 0179 GETMET R16 R7 K83
|
||||
0x7C400200, // 017A CALL R16 1
|
||||
0x7C300800, // 017B CALL R12 4
|
||||
0x8C301750, // 017C GETMET R12 R11 K80
|
||||
0x58380009, // 017D LDCONST R14 K9
|
||||
0xB83E1A00, // 017E GETNGBL R15 K13
|
||||
0x883C1F4E, // 017F GETMBR R15 R15 K78
|
||||
0x883C1F51, // 0180 GETMBR R15 R15 K81
|
||||
0x5C401400, // 0181 MOVE R16 R10
|
||||
0x7C300800, // 0182 CALL R12 4
|
||||
0x8C301750, // 0183 GETMET R12 R11 K80
|
||||
0x543A0003, // 0184 LDINT R14 4
|
||||
0xB83E1A00, // 0185 GETNGBL R15 K13
|
||||
0x883C1F4E, // 0186 GETMBR R15 R15 K78
|
||||
0x883C1F51, // 0187 GETMBR R15 R15 K81
|
||||
0x8840072F, // 0188 GETMBR R16 R3 K47
|
||||
0x7C300800, // 0189 CALL R12 4
|
||||
0x88300956, // 018A GETMBR R12 R4 K86
|
||||
0x900E720C, // 018B SETMBR R3 K57 R12
|
||||
0x8C300557, // 018C GETMET R12 R2 K87
|
||||
0x7C300200, // 018D CALL R12 1
|
||||
0x8C301958, // 018E GETMET R12 R12 K88
|
||||
0x88380739, // 018F GETMBR R14 R3 K57
|
||||
0x7C300400, // 0190 CALL R12 2
|
||||
0x8C301959, // 0191 GETMET R12 R12 K89
|
||||
0x7C300200, // 0192 CALL R12 1
|
||||
0x60340015, // 0193 GETGBL R13 G21
|
||||
0x7C340000, // 0194 CALL R13 0
|
||||
0x8C341B1B, // 0195 GETMET R13 R13 K27
|
||||
0x883C015A, // 0196 GETMBR R15 R0 K90
|
||||
0x7C340400, // 0197 CALL R13 2
|
||||
0x8C380F5B, // 0198 GETMET R14 R7 K91
|
||||
0x7C380200, // 0199 CALL R14 1
|
||||
0x00381C08, // 019A ADD R14 R14 R8
|
||||
0x883C074A, // 019B GETMBR R15 R3 K74
|
||||
0x00381C0F, // 019C ADD R14 R14 R15
|
||||
0x00381C0C, // 019D ADD R14 R14 R12
|
||||
0x8C3C051D, // 019E GETMET R15 R2 K29
|
||||
0x7C3C0200, // 019F CALL R15 1
|
||||
0x8C3C1F1E, // 01A0 GETMET R15 R15 K30
|
||||
0x8844071F, // 01A1 GETMBR R17 R3 K31
|
||||
0x5C481C00, // 01A2 MOVE R18 R14
|
||||
0x5C4C1A00, // 01A3 MOVE R19 R13
|
||||
0x5452000F, // 01A4 LDINT R20 16
|
||||
0x7C3C0A00, // 01A5 CALL R15 5
|
||||
0x8C401738, // 01A6 GETMET R16 R11 K56
|
||||
0x7C400200, // 01A7 CALL R16 1
|
||||
0x8C440522, // 01A8 GETMET R17 R2 K34
|
||||
0x5C4C1E00, // 01A9 MOVE R19 R15
|
||||
0x60500015, // 01AA GETGBL R20 G21
|
||||
0x7C500000, // 01AB CALL R20 0
|
||||
0x8C50291B, // 01AC GETMET R20 R20 K27
|
||||
0x8858015C, // 01AD GETMBR R22 R0 K92
|
||||
0x7C500400, // 01AE CALL R20 2
|
||||
0x60540015, // 01AF GETGBL R21 G21
|
||||
0x7C540000, // 01B0 CALL R21 0
|
||||
0x6058000C, // 01B1 GETGBL R22 G12
|
||||
0x5C5C2000, // 01B2 MOVE R23 R16
|
||||
0x7C580200, // 01B3 CALL R22 1
|
||||
0x545E000F, // 01B4 LDINT R23 16
|
||||
0x7C440C00, // 01B5 CALL R17 6
|
||||
0x8C48235D, // 01B6 GETMET R18 R17 K93
|
||||
0x5C502000, // 01B7 MOVE R20 R16
|
||||
0x7C480400, // 01B8 CALL R18 2
|
||||
0x8C4C2324, // 01B9 GETMET R19 R17 K36
|
||||
0x7C4C0200, // 01BA CALL R19 1
|
||||
0x00482413, // 01BB ADD R18 R18 R19
|
||||
0xB84E1A00, // 01BC GETNGBL R19 K13
|
||||
0x8C4C275E, // 01BD GETMET R19 R19 K94
|
||||
0x7C4C0200, // 01BE CALL R19 1
|
||||
0x904EBE08, // 01BF SETMBR R19 K95 R8
|
||||
0x8850072A, // 01C0 GETMBR R20 R3 K42
|
||||
0x904EC014, // 01C1 SETMBR R19 K96 R20
|
||||
0x8850074A, // 01C2 GETMBR R20 R3 K74
|
||||
0x904EC214, // 01C3 SETMBR R19 K97 R20
|
||||
0x904EC412, // 01C4 SETMBR R19 K98 R18
|
||||
0x8C502738, // 01C5 GETMET R20 R19 K56
|
||||
0x7C500200, // 01C6 CALL R20 1
|
||||
0x900EC614, // 01C7 SETMBR R3 K99 R20
|
||||
0x8C54033A, // 01C8 GETMET R21 R1 K58
|
||||
0x545E0030, // 01C9 LDINT R23 49
|
||||
0x50600200, // 01CA LDBOOL R24 1 0
|
||||
0x7C540600, // 01CB CALL R21 3
|
||||
0x8C582B3B, // 01CC GETMET R22 R21 K59
|
||||
0x5C602800, // 01CD MOVE R24 R20
|
||||
0x7C580400, // 01CE CALL R22 2
|
||||
0xB85E0C00, // 01CF GETNGBL R23 K6
|
||||
0x8C5C2F07, // 01D0 GETMET R23 R23 K7
|
||||
0x60640018, // 01D1 GETGBL R25 G24
|
||||
0x58680064, // 01D2 LDCONST R26 K100
|
||||
0x886C072A, // 01D3 GETMBR R27 R3 K42
|
||||
0x88700765, // 01D4 GETMBR R28 R3 K101
|
||||
0x88740766, // 01D5 GETMBR R29 R3 K102
|
||||
0x7C640800, // 01D6 CALL R25 4
|
||||
0x5868000C, // 01D7 LDCONST R26 K12
|
||||
0x7C5C0600, // 01D8 CALL R23 3
|
||||
0x885C013C, // 01D9 GETMBR R23 R0 K60
|
||||
0x8C5C2F3D, // 01DA GETMET R23 R23 K61
|
||||
0x5C642A00, // 01DB MOVE R25 R21
|
||||
0x7C5C0400, // 01DC CALL R23 2
|
||||
0x505C0200, // 01DD LDBOOL R23 1 0
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -129,11 +129,10 @@ be_local_closure(Matter_Expirable_has_expired, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(tasmota),
|
||||
/* K1 */ be_nested_str_weak(rtc),
|
||||
/* K2 */ be_nested_str_weak(utc),
|
||||
/* K3 */ be_nested_str_weak(_expiration),
|
||||
/* K1 */ be_nested_str_weak(rtc_utc),
|
||||
/* K2 */ be_nested_str_weak(_expiration),
|
||||
}),
|
||||
be_str_weak(has_expired),
|
||||
&be_const_str_solidified,
|
||||
@ -144,12 +143,12 @@ be_local_closure(Matter_Expirable_has_expired, /* name */
|
||||
0xB80A0000, // 0003 GETNGBL R2 K0
|
||||
0x8C080501, // 0004 GETMET R2 R2 K1
|
||||
0x7C080200, // 0005 CALL R2 1
|
||||
0x94040502, // 0006 GETIDX R1 R2 K2
|
||||
0x88080103, // 0007 GETMBR R2 R0 K3
|
||||
0x5C040400, // 0006 MOVE R1 R2
|
||||
0x88080102, // 0007 GETMBR R2 R0 K2
|
||||
0x4C0C0000, // 0008 LDNIL R3
|
||||
0x20080403, // 0009 NE R2 R2 R3
|
||||
0x780A0002, // 000A JMPF R2 #000E
|
||||
0x88080103, // 000B GETMBR R2 R0 K3
|
||||
0x88080102, // 000B GETMBR R2 R0 K2
|
||||
0x28080202, // 000C GE R2 R1 R2
|
||||
0x80040400, // 000D RET 1 R2
|
||||
0x50080000, // 000E LDBOOL R2 0 0
|
||||
@ -224,11 +223,10 @@ be_local_closure(Matter_Expirable_set_expire_in_seconds, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(tasmota),
|
||||
/* K1 */ be_nested_str_weak(rtc),
|
||||
/* K2 */ be_nested_str_weak(utc),
|
||||
/* K3 */ be_nested_str_weak(set_expire_time),
|
||||
/* K1 */ be_nested_str_weak(rtc_utc),
|
||||
/* K2 */ be_nested_str_weak(set_expire_time),
|
||||
}),
|
||||
be_str_weak(set_expire_in_seconds),
|
||||
&be_const_str_solidified,
|
||||
@ -243,8 +241,8 @@ be_local_closure(Matter_Expirable_set_expire_in_seconds, /* name */
|
||||
0xB80E0000, // 0007 GETNGBL R3 K0
|
||||
0x8C0C0701, // 0008 GETMET R3 R3 K1
|
||||
0x7C0C0200, // 0009 CALL R3 1
|
||||
0x94080702, // 000A GETIDX R2 R3 K2
|
||||
0x8C0C0103, // 000B GETMET R3 R0 K3
|
||||
0x5C080600, // 000A MOVE R2 R3
|
||||
0x8C0C0102, // 000B GETMET R3 R0 K2
|
||||
0x00140401, // 000C ADD R5 R2 R1
|
||||
0x7C0C0400, // 000D CALL R3 2
|
||||
0x80000000, // 000E RET 0
|
||||
|
@ -389,7 +389,7 @@ be_local_closure(Matter_Fabric_init, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[18]) { /* constants */
|
||||
( &(const bvalue[17]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(crypto),
|
||||
/* K1 */ be_nested_str_weak(_store),
|
||||
/* K2 */ be_nested_str_weak(_sessions),
|
||||
@ -399,19 +399,18 @@ be_local_closure(Matter_Fabric_init, /* name */
|
||||
/* 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),
|
||||
/* K9 */ be_nested_str_weak(rtc_utc),
|
||||
/* K10 */ be_nested_str_weak(_counter_group_data_snd_impl),
|
||||
/* K11 */ be_nested_str_weak(Counter),
|
||||
/* K12 */ be_nested_str_weak(_counter_group_ctrl_snd_impl),
|
||||
/* K13 */ be_nested_str_weak(counter_group_data_snd),
|
||||
/* K14 */ be_nested_str_weak(next),
|
||||
/* K15 */ be_nested_str_weak(_GROUP_SND_INCR),
|
||||
/* K16 */ be_nested_str_weak(counter_group_ctrl_snd),
|
||||
}),
|
||||
be_str_weak(init),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[33]) { /* code */
|
||||
( &(const binstruction[32]) { /* code */
|
||||
0xA40A0000, // 0000 IMPORT R2 K0
|
||||
0x90020201, // 0001 SETMBR R0 K1 R1
|
||||
0xB80E0600, // 0002 GETNGBL R3 K3
|
||||
@ -422,29 +421,28 @@ be_local_closure(Matter_Fabric_init, /* name */
|
||||
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
|
||||
0x90020E03, // 000A SETMBR R0 K7 R3
|
||||
0xB80E0600, // 000B GETNGBL R3 K3
|
||||
0x8C0C070B, // 000C GETMET R3 R3 K11
|
||||
0x7C0C0200, // 000D CALL R3 1
|
||||
0x90021403, // 000E SETMBR R0 K10 R3
|
||||
0xB80E0600, // 000F GETNGBL R3 K3
|
||||
0x8C0C070B, // 0010 GETMET R3 R3 K11
|
||||
0x7C0C0200, // 0011 CALL R3 1
|
||||
0x90021803, // 0012 SETMBR R0 K12 R3
|
||||
0x880C010A, // 0013 GETMBR R3 R0 K10
|
||||
0x8C0C070E, // 0014 GETMET R3 R3 K14
|
||||
0x7C0C0200, // 0015 CALL R3 1
|
||||
0x8810010F, // 0016 GETMBR R4 R0 K15
|
||||
0x000C0604, // 0017 ADD R3 R3 R4
|
||||
0x90021A03, // 0018 SETMBR R0 K13 R3
|
||||
0x880C010A, // 0019 GETMBR R3 R0 K10
|
||||
0x8C0C070E, // 001A GETMET R3 R3 K14
|
||||
0x7C0C0200, // 001B CALL R3 1
|
||||
0x8810010F, // 001C GETMBR R4 R0 K15
|
||||
0x000C0604, // 001D ADD R3 R3 R4
|
||||
0x90022003, // 001E SETMBR R0 K16 R3
|
||||
0x80000000, // 001F RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -19,28 +19,26 @@ be_local_closure(Matter_HTTP_remote_device_is_alive, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(reachable),
|
||||
/* K1 */ be_nested_str_weak(reachable_utc),
|
||||
/* K2 */ be_nested_str_weak(tasmota),
|
||||
/* K3 */ be_nested_str_weak(rtc),
|
||||
/* K4 */ be_nested_str_weak(utc),
|
||||
/* K3 */ be_nested_str_weak(rtc_utc),
|
||||
}),
|
||||
be_str_weak(device_is_alive),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[12]) { /* code */
|
||||
0x78060007, // 0000 JMPF R1 #0009
|
||||
( &(const binstruction[11]) { /* code */
|
||||
0x78060006, // 0000 JMPF R1 #0008
|
||||
0x50080200, // 0001 LDBOOL R2 1 0
|
||||
0x90020002, // 0002 SETMBR R0 K0 R2
|
||||
0xB80A0400, // 0003 GETNGBL R2 K2
|
||||
0x8C080503, // 0004 GETMET R2 R2 K3
|
||||
0x7C080200, // 0005 CALL R2 1
|
||||
0x94080504, // 0006 GETIDX R2 R2 K4
|
||||
0x90020202, // 0007 SETMBR R0 K1 R2
|
||||
0x70020001, // 0008 JMP #000B
|
||||
0x50080000, // 0009 LDBOOL R2 0 0
|
||||
0x90020002, // 000A SETMBR R0 K0 R2
|
||||
0x80000000, // 000B RET 0
|
||||
0x90020202, // 0006 SETMBR R0 K1 R2
|
||||
0x70020001, // 0007 JMP #000A
|
||||
0x50080000, // 0008 LDBOOL R2 0 0
|
||||
0x90020002, // 0009 SETMBR R0 K0 R2
|
||||
0x80000000, // 000A RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -460,36 +458,34 @@ be_local_closure(Matter_HTTP_remote_web_last_seen, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 7]) { /* constants */
|
||||
( &(const bvalue[ 6]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(webserver),
|
||||
/* K1 */ be_nested_str_weak(reachable_utc),
|
||||
/* K2 */ be_nested_str_weak(tasmota),
|
||||
/* K3 */ be_nested_str_weak(rtc),
|
||||
/* K4 */ be_nested_str_weak(utc),
|
||||
/* K5 */ be_nested_str_weak(matter),
|
||||
/* K6 */ be_nested_str_weak(seconds_to_dhm),
|
||||
/* K3 */ be_nested_str_weak(rtc_utc),
|
||||
/* K4 */ be_nested_str_weak(matter),
|
||||
/* K5 */ be_nested_str_weak(seconds_to_dhm),
|
||||
}),
|
||||
be_str_weak(web_last_seen),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[18]) { /* code */
|
||||
( &(const binstruction[17]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x5409FFFE, // 0001 LDINT R2 -1
|
||||
0x880C0101, // 0002 GETMBR R3 R0 K1
|
||||
0x4C100000, // 0003 LDNIL R4
|
||||
0x200C0604, // 0004 NE R3 R3 R4
|
||||
0x780E0006, // 0005 JMPF R3 #000D
|
||||
0x780E0005, // 0005 JMPF R3 #000C
|
||||
0xB80E0400, // 0006 GETNGBL R3 K2
|
||||
0x8C0C0703, // 0007 GETMET R3 R3 K3
|
||||
0x7C0C0200, // 0008 CALL R3 1
|
||||
0x940C0704, // 0009 GETIDX R3 R3 K4
|
||||
0x88100101, // 000A GETMBR R4 R0 K1
|
||||
0x040C0604, // 000B SUB R3 R3 R4
|
||||
0x5C080600, // 000C MOVE R2 R3
|
||||
0xB80E0A00, // 000D GETNGBL R3 K5
|
||||
0x8C0C0706, // 000E GETMET R3 R3 K6
|
||||
0x5C140400, // 000F MOVE R5 R2
|
||||
0x7C0C0400, // 0010 CALL R3 2
|
||||
0x80040600, // 0011 RET 1 R3
|
||||
0x88100101, // 0009 GETMBR R4 R0 K1
|
||||
0x040C0604, // 000A SUB R3 R3 R4
|
||||
0x5C080600, // 000B MOVE R2 R3
|
||||
0xB80E0800, // 000C GETNGBL R3 K4
|
||||
0x8C0C0705, // 000D GETMET R3 R3 K5
|
||||
0x5C140400, // 000E MOVE R5 R2
|
||||
0x7C0C0400, // 000F CALL R3 2
|
||||
0x80040600, // 0010 RET 1 R3
|
||||
})
|
||||
)
|
||||
);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2822,6 +2822,194 @@ void be_load_Matter_ReadRequestMessage_class(bvm *vm) {
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
|
||||
extern const bclass be_class_Matter_ReadRequestMessage_solo;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: from_raw
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_ReadRequestMessage_solo_from_raw, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
3, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[10]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(reset),
|
||||
/* K1 */ be_nested_str_weak(get),
|
||||
/* K2 */ be_const_int(355860503),
|
||||
/* K3 */ be_const_int(1),
|
||||
/* K4 */ be_const_int(2),
|
||||
/* K5 */ be_const_int(3),
|
||||
/* K6 */ be_nested_str_weak(endpoint),
|
||||
/* K7 */ be_nested_str_weak(cluster),
|
||||
/* K8 */ be_nested_str_weak(attribute),
|
||||
/* K9 */ be_nested_str_weak(fabric_filtered),
|
||||
}),
|
||||
be_str_weak(from_raw),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[131]) { /* code */
|
||||
0x8C0C0100, // 0000 GETMET R3 R0 K0
|
||||
0x7C0C0200, // 0001 CALL R3 1
|
||||
0x600C000C, // 0002 GETGBL R3 G12
|
||||
0x5C100200, // 0003 MOVE R4 R1
|
||||
0x7C0C0200, // 0004 CALL R3 1
|
||||
0x4C100000, // 0005 LDNIL R4
|
||||
0x8C140301, // 0006 GETMET R5 R1 K1
|
||||
0x5C1C0400, // 0007 MOVE R7 R2
|
||||
0x5421FFFB, // 0008 LDINT R8 -4
|
||||
0x7C140600, // 0009 CALL R5 3
|
||||
0x20140B02, // 000A NE R5 R5 K2
|
||||
0x78160001, // 000B JMPF R5 #000E
|
||||
0x4C140000, // 000C LDNIL R5
|
||||
0x80040A00, // 000D RET 1 R5
|
||||
0x54160003, // 000E LDINT R5 4
|
||||
0x00080405, // 000F ADD R2 R2 R5
|
||||
0x14140403, // 0010 LT R5 R2 R3
|
||||
0x7816002D, // 0011 JMPF R5 #0040
|
||||
0x8C140301, // 0012 GETMET R5 R1 K1
|
||||
0x001C0503, // 0013 ADD R7 R2 K3
|
||||
0x58200003, // 0014 LDCONST R8 K3
|
||||
0x7C140600, // 0015 CALL R5 3
|
||||
0x8C180301, // 0016 GETMET R6 R1 K1
|
||||
0x5C200400, // 0017 MOVE R8 R2
|
||||
0x58240003, // 0018 LDCONST R9 K3
|
||||
0x7C180600, // 0019 CALL R6 3
|
||||
0x541E0023, // 001A LDINT R7 36
|
||||
0x1C1C0C07, // 001B EQ R7 R6 R7
|
||||
0x781E0006, // 001C JMPF R7 #0024
|
||||
0x8C1C0301, // 001D GETMET R7 R1 K1
|
||||
0x00240504, // 001E ADD R9 R2 K4
|
||||
0x58280003, // 001F LDCONST R10 K3
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x5C100E00, // 0021 MOVE R4 R7
|
||||
0x00080505, // 0022 ADD R2 R2 K5
|
||||
0x7002000B, // 0023 JMP #0030
|
||||
0x541E0024, // 0024 LDINT R7 37
|
||||
0x1C1C0C07, // 0025 EQ R7 R6 R7
|
||||
0x781E0007, // 0026 JMPF R7 #002F
|
||||
0x8C1C0301, // 0027 GETMET R7 R1 K1
|
||||
0x00240504, // 0028 ADD R9 R2 K4
|
||||
0x58280004, // 0029 LDCONST R10 K4
|
||||
0x7C1C0600, // 002A CALL R7 3
|
||||
0x5C100E00, // 002B MOVE R4 R7
|
||||
0x541E0003, // 002C LDINT R7 4
|
||||
0x00080407, // 002D ADD R2 R2 R7
|
||||
0x70020000, // 002E JMP #0030
|
||||
0x7002000F, // 002F JMP #0040
|
||||
0x1C1C0B04, // 0030 EQ R7 R5 K4
|
||||
0x781E0001, // 0031 JMPF R7 #0034
|
||||
0x90020C04, // 0032 SETMBR R0 K6 R4
|
||||
0x7002000A, // 0033 JMP #003F
|
||||
0x1C1C0B05, // 0034 EQ R7 R5 K5
|
||||
0x781E0001, // 0035 JMPF R7 #0038
|
||||
0x90020E04, // 0036 SETMBR R0 K7 R4
|
||||
0x70020006, // 0037 JMP #003F
|
||||
0x541E0003, // 0038 LDINT R7 4
|
||||
0x1C1C0A07, // 0039 EQ R7 R5 R7
|
||||
0x781E0001, // 003A JMPF R7 #003D
|
||||
0x90021004, // 003B SETMBR R0 K8 R4
|
||||
0x70020001, // 003C JMP #003F
|
||||
0x4C1C0000, // 003D LDNIL R7
|
||||
0x80040E00, // 003E RET 1 R7
|
||||
0x7001FFCF, // 003F JMP #0010
|
||||
0x8C140301, // 0040 GETMET R5 R1 K1
|
||||
0x5C1C0400, // 0041 MOVE R7 R2
|
||||
0x5421FFFD, // 0042 LDINT R8 -2
|
||||
0x7C140600, // 0043 CALL R5 3
|
||||
0x5C100A00, // 0044 MOVE R4 R5
|
||||
0x54161817, // 0045 LDINT R5 6168
|
||||
0x20140805, // 0046 NE R5 R4 R5
|
||||
0x78160001, // 0047 JMPF R5 #004A
|
||||
0x4C140000, // 0048 LDNIL R5
|
||||
0x80040A00, // 0049 RET 1 R5
|
||||
0x00080504, // 004A ADD R2 R2 K4
|
||||
0x8C140301, // 004B GETMET R5 R1 K1
|
||||
0x5C1C0400, // 004C MOVE R7 R2
|
||||
0x5421FFFD, // 004D LDINT R8 -2
|
||||
0x7C140600, // 004E CALL R5 3
|
||||
0x5C100A00, // 004F MOVE R4 R5
|
||||
0x54162802, // 0050 LDINT R5 10243
|
||||
0x1C140805, // 0051 EQ R5 R4 R5
|
||||
0x78160003, // 0052 JMPF R5 #0057
|
||||
0x50140000, // 0053 LDBOOL R5 0 0
|
||||
0x90021205, // 0054 SETMBR R0 K9 R5
|
||||
0x00080504, // 0055 ADD R2 R2 K4
|
||||
0x70020005, // 0056 JMP #005D
|
||||
0x54162902, // 0057 LDINT R5 10499
|
||||
0x1C140805, // 0058 EQ R5 R4 R5
|
||||
0x78160002, // 0059 JMPF R5 #005D
|
||||
0x50140200, // 005A LDBOOL R5 1 0
|
||||
0x90021205, // 005B SETMBR R0 K9 R5
|
||||
0x00080504, // 005C ADD R2 R2 K4
|
||||
0x8C140301, // 005D GETMET R5 R1 K1
|
||||
0x5C1C0400, // 005E MOVE R7 R2
|
||||
0x5421FFFD, // 005F LDINT R8 -2
|
||||
0x7C140600, // 0060 CALL R5 3
|
||||
0x5C100A00, // 0061 MOVE R4 R5
|
||||
0x541624FE, // 0062 LDINT R5 9471
|
||||
0x1C140805, // 0063 EQ R5 R4 R5
|
||||
0x78160000, // 0064 JMPF R5 #0066
|
||||
0x00080505, // 0065 ADD R2 R2 K5
|
||||
0x8C140301, // 0066 GETMET R5 R1 K1
|
||||
0x5C1C0400, // 0067 MOVE R7 R2
|
||||
0x58200003, // 0068 LDCONST R8 K3
|
||||
0x7C140600, // 0069 CALL R5 3
|
||||
0x541A0017, // 006A LDINT R6 24
|
||||
0x20140A06, // 006B NE R5 R5 R6
|
||||
0x78160001, // 006C JMPF R5 #006F
|
||||
0x4C140000, // 006D LDNIL R5
|
||||
0x80040A00, // 006E RET 1 R5
|
||||
0x00080503, // 006F ADD R2 R2 K3
|
||||
0x88140106, // 0070 GETMBR R5 R0 K6
|
||||
0x4C180000, // 0071 LDNIL R6
|
||||
0x1C140A06, // 0072 EQ R5 R5 R6
|
||||
0x7416000B, // 0073 JMPT R5 #0080
|
||||
0x88140107, // 0074 GETMBR R5 R0 K7
|
||||
0x4C180000, // 0075 LDNIL R6
|
||||
0x1C140A06, // 0076 EQ R5 R5 R6
|
||||
0x74160007, // 0077 JMPT R5 #0080
|
||||
0x88140108, // 0078 GETMBR R5 R0 K8
|
||||
0x4C180000, // 0079 LDNIL R6
|
||||
0x1C140A06, // 007A EQ R5 R5 R6
|
||||
0x74160003, // 007B JMPT R5 #0080
|
||||
0x88140109, // 007C GETMBR R5 R0 K9
|
||||
0x4C180000, // 007D LDNIL R6
|
||||
0x1C140A06, // 007E EQ R5 R5 R6
|
||||
0x78160001, // 007F JMPF R5 #0082
|
||||
0x4C140000, // 0080 LDNIL R5
|
||||
0x80040A00, // 0081 RET 1 R5
|
||||
0x80040000, // 0082 RET 1 R0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Matter_ReadRequestMessage_solo
|
||||
********************************************************************/
|
||||
extern const bclass be_class_Matter_Path;
|
||||
be_local_class(Matter_ReadRequestMessage_solo,
|
||||
0,
|
||||
&be_class_Matter_Path,
|
||||
be_nested_map(1,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(from_raw, -1), be_const_closure(Matter_ReadRequestMessage_solo_from_raw_closure) },
|
||||
})),
|
||||
be_str_weak(Matter_ReadRequestMessage_solo)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
void be_load_Matter_ReadRequestMessage_solo_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_Matter_ReadRequestMessage_solo);
|
||||
be_setglobal(vm, "Matter_ReadRequestMessage_solo");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
|
||||
extern const bclass be_class_Matter_ReportDataMessage;
|
||||
|
||||
/********************************************************************
|
||||
@ -3886,6 +4074,281 @@ void be_load_Matter_InvokeRequestMessage_class(bvm *vm) {
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
|
||||
extern const bclass be_class_Matter_InvokeRequestMessage_solo;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: reset
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_InvokeRequestMessage_solo_reset, /* 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(reset),
|
||||
/* K1 */ be_nested_str_weak(SuppressResponse),
|
||||
/* K2 */ be_nested_str_weak(TimedRequest),
|
||||
/* K3 */ be_nested_str_weak(command_fields),
|
||||
}),
|
||||
be_str_weak(reset),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[10]) { /* code */
|
||||
0x4C040000, // 0000 LDNIL R1
|
||||
0x60080003, // 0001 GETGBL R2 G3
|
||||
0x5C0C0000, // 0002 MOVE R3 R0
|
||||
0x7C080200, // 0003 CALL R2 1
|
||||
0x8C080500, // 0004 GETMET R2 R2 K0
|
||||
0x7C080200, // 0005 CALL R2 1
|
||||
0x90020201, // 0006 SETMBR R0 K1 R1
|
||||
0x90020401, // 0007 SETMBR R0 K2 R1
|
||||
0x90020601, // 0008 SETMBR R0 K3 R1
|
||||
0x80000000, // 0009 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: from_raw
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_InvokeRequestMessage_solo_from_raw, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
3, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[16]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(reset),
|
||||
/* K1 */ be_nested_str_weak(get),
|
||||
/* K2 */ be_const_int(1),
|
||||
/* K3 */ be_nested_str_weak(SuppressResponse),
|
||||
/* K4 */ be_const_int(2),
|
||||
/* K5 */ be_const_int(3),
|
||||
/* K6 */ be_const_int(0),
|
||||
/* K7 */ be_nested_str_weak(endpoint),
|
||||
/* K8 */ be_nested_str_weak(cluster),
|
||||
/* K9 */ be_nested_str_weak(command),
|
||||
/* K10 */ be_nested_str_weak(command_fields),
|
||||
/* K11 */ be_nested_str_weak(matter),
|
||||
/* K12 */ be_nested_str_weak(TLV),
|
||||
/* K13 */ be_nested_str_weak(parse),
|
||||
/* K14 */ be_nested_str_weak(next_idx),
|
||||
/* K15 */ be_const_int(620691736),
|
||||
}),
|
||||
be_str_weak(from_raw),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[170]) { /* code */
|
||||
0x8C0C0100, // 0000 GETMET R3 R0 K0
|
||||
0x7C0C0200, // 0001 CALL R3 1
|
||||
0x600C000C, // 0002 GETGBL R3 G12
|
||||
0x5C100200, // 0003 MOVE R4 R1
|
||||
0x7C0C0200, // 0004 CALL R3 1
|
||||
0x4C100000, // 0005 LDNIL R4
|
||||
0x8C140301, // 0006 GETMET R5 R1 K1
|
||||
0x5C1C0400, // 0007 MOVE R7 R2
|
||||
0x58200002, // 0008 LDCONST R8 K2
|
||||
0x7C140600, // 0009 CALL R5 3
|
||||
0x541A0014, // 000A LDINT R6 21
|
||||
0x20140A06, // 000B NE R5 R5 R6
|
||||
0x78160001, // 000C JMPF R5 #000F
|
||||
0x4C140000, // 000D LDNIL R5
|
||||
0x80040A00, // 000E RET 1 R5
|
||||
0x00080502, // 000F ADD R2 R2 K2
|
||||
0x8C140301, // 0010 GETMET R5 R1 K1
|
||||
0x5C1C0400, // 0011 MOVE R7 R2
|
||||
0x5421FFFD, // 0012 LDINT R8 -2
|
||||
0x7C140600, // 0013 CALL R5 3
|
||||
0x5C100A00, // 0014 MOVE R4 R5
|
||||
0x541627FF, // 0015 LDINT R5 10240
|
||||
0x1C140805, // 0016 EQ R5 R4 R5
|
||||
0x74160002, // 0017 JMPT R5 #001B
|
||||
0x541628FF, // 0018 LDINT R5 10496
|
||||
0x1C140805, // 0019 EQ R5 R4 R5
|
||||
0x78160003, // 001A JMPF R5 #001F
|
||||
0x541628FF, // 001B LDINT R5 10496
|
||||
0x1C140805, // 001C EQ R5 R4 R5
|
||||
0x90020605, // 001D SETMBR R0 K3 R5
|
||||
0x00080504, // 001E ADD R2 R2 K4
|
||||
0x8C140301, // 001F GETMET R5 R1 K1
|
||||
0x5C1C0400, // 0020 MOVE R7 R2
|
||||
0x5421FFFD, // 0021 LDINT R8 -2
|
||||
0x7C140600, // 0022 CALL R5 3
|
||||
0x5C100A00, // 0023 MOVE R4 R5
|
||||
0x54162800, // 0024 LDINT R5 10241
|
||||
0x1C140805, // 0025 EQ R5 R4 R5
|
||||
0x74160002, // 0026 JMPT R5 #002A
|
||||
0x54162900, // 0027 LDINT R5 10497
|
||||
0x1C140805, // 0028 EQ R5 R4 R5
|
||||
0x78160003, // 0029 JMPF R5 #002E
|
||||
0x54162900, // 002A LDINT R5 10497
|
||||
0x1C140805, // 002B EQ R5 R4 R5
|
||||
0x90020605, // 002C SETMBR R0 K3 R5
|
||||
0x00080504, // 002D ADD R2 R2 K4
|
||||
0x8C140301, // 002E GETMET R5 R1 K1
|
||||
0x5C1C0400, // 002F MOVE R7 R2
|
||||
0x5421FFFD, // 0030 LDINT R8 -2
|
||||
0x7C140600, // 0031 CALL R5 3
|
||||
0x541A3601, // 0032 LDINT R6 13826
|
||||
0x20140A06, // 0033 NE R5 R5 R6
|
||||
0x78160001, // 0034 JMPF R5 #0037
|
||||
0x4C140000, // 0035 LDNIL R5
|
||||
0x80040A00, // 0036 RET 1 R5
|
||||
0x00080504, // 0037 ADD R2 R2 K4
|
||||
0x8C140301, // 0038 GETMET R5 R1 K1
|
||||
0x5C1C0400, // 0039 MOVE R7 R2
|
||||
0x58200002, // 003A LDCONST R8 K2
|
||||
0x7C140600, // 003B CALL R5 3
|
||||
0x541A0014, // 003C LDINT R6 21
|
||||
0x20140A06, // 003D NE R5 R5 R6
|
||||
0x78160001, // 003E JMPF R5 #0041
|
||||
0x4C140000, // 003F LDNIL R5
|
||||
0x80040A00, // 0040 RET 1 R5
|
||||
0x00080502, // 0041 ADD R2 R2 K2
|
||||
0x8C140301, // 0042 GETMET R5 R1 K1
|
||||
0x5C1C0400, // 0043 MOVE R7 R2
|
||||
0x5421FFFD, // 0044 LDINT R8 -2
|
||||
0x7C140600, // 0045 CALL R5 3
|
||||
0x541A36FF, // 0046 LDINT R6 14080
|
||||
0x20140A06, // 0047 NE R5 R5 R6
|
||||
0x78160001, // 0048 JMPF R5 #004B
|
||||
0x4C140000, // 0049 LDNIL R5
|
||||
0x80040A00, // 004A RET 1 R5
|
||||
0x00080504, // 004B ADD R2 R2 K4
|
||||
0x14140403, // 004C LT R5 R2 R3
|
||||
0x7816002C, // 004D JMPF R5 #007B
|
||||
0x8C140301, // 004E GETMET R5 R1 K1
|
||||
0x001C0502, // 004F ADD R7 R2 K2
|
||||
0x58200002, // 0050 LDCONST R8 K2
|
||||
0x7C140600, // 0051 CALL R5 3
|
||||
0x8C180301, // 0052 GETMET R6 R1 K1
|
||||
0x5C200400, // 0053 MOVE R8 R2
|
||||
0x58240002, // 0054 LDCONST R9 K2
|
||||
0x7C180600, // 0055 CALL R6 3
|
||||
0x541E0023, // 0056 LDINT R7 36
|
||||
0x1C1C0C07, // 0057 EQ R7 R6 R7
|
||||
0x781E0006, // 0058 JMPF R7 #0060
|
||||
0x8C1C0301, // 0059 GETMET R7 R1 K1
|
||||
0x00240504, // 005A ADD R9 R2 K4
|
||||
0x58280002, // 005B LDCONST R10 K2
|
||||
0x7C1C0600, // 005C CALL R7 3
|
||||
0x5C100E00, // 005D MOVE R4 R7
|
||||
0x00080505, // 005E ADD R2 R2 K5
|
||||
0x7002000B, // 005F JMP #006C
|
||||
0x541E0024, // 0060 LDINT R7 37
|
||||
0x1C1C0C07, // 0061 EQ R7 R6 R7
|
||||
0x781E0007, // 0062 JMPF R7 #006B
|
||||
0x8C1C0301, // 0063 GETMET R7 R1 K1
|
||||
0x00240504, // 0064 ADD R9 R2 K4
|
||||
0x58280004, // 0065 LDCONST R10 K4
|
||||
0x7C1C0600, // 0066 CALL R7 3
|
||||
0x5C100E00, // 0067 MOVE R4 R7
|
||||
0x541E0003, // 0068 LDINT R7 4
|
||||
0x00080407, // 0069 ADD R2 R2 R7
|
||||
0x70020000, // 006A JMP #006C
|
||||
0x7002000E, // 006B JMP #007B
|
||||
0x1C1C0B06, // 006C EQ R7 R5 K6
|
||||
0x781E0001, // 006D JMPF R7 #0070
|
||||
0x90020E04, // 006E SETMBR R0 K7 R4
|
||||
0x70020009, // 006F JMP #007A
|
||||
0x1C1C0B02, // 0070 EQ R7 R5 K2
|
||||
0x781E0001, // 0071 JMPF R7 #0074
|
||||
0x90021004, // 0072 SETMBR R0 K8 R4
|
||||
0x70020005, // 0073 JMP #007A
|
||||
0x1C1C0B04, // 0074 EQ R7 R5 K4
|
||||
0x781E0001, // 0075 JMPF R7 #0078
|
||||
0x90021204, // 0076 SETMBR R0 K9 R4
|
||||
0x70020001, // 0077 JMP #007A
|
||||
0x4C1C0000, // 0078 LDNIL R7
|
||||
0x80040E00, // 0079 RET 1 R7
|
||||
0x7001FFD0, // 007A JMP #004C
|
||||
0x8C140301, // 007B GETMET R5 R1 K1
|
||||
0x5C1C0400, // 007C MOVE R7 R2
|
||||
0x58200002, // 007D LDCONST R8 K2
|
||||
0x7C140600, // 007E CALL R5 3
|
||||
0x541A0017, // 007F LDINT R6 24
|
||||
0x20140A06, // 0080 NE R5 R5 R6
|
||||
0x78160001, // 0081 JMPF R5 #0084
|
||||
0x4C140000, // 0082 LDNIL R5
|
||||
0x80040A00, // 0083 RET 1 R5
|
||||
0x00080502, // 0084 ADD R2 R2 K2
|
||||
0x8C140301, // 0085 GETMET R5 R1 K1
|
||||
0x5C1C0400, // 0086 MOVE R7 R2
|
||||
0x5421FFFD, // 0087 LDINT R8 -2
|
||||
0x7C140600, // 0088 CALL R5 3
|
||||
0x541A3500, // 0089 LDINT R6 13569
|
||||
0x20140A06, // 008A NE R5 R5 R6
|
||||
0x78160001, // 008B JMPF R5 #008E
|
||||
0x4C140000, // 008C LDNIL R5
|
||||
0x80040A00, // 008D RET 1 R5
|
||||
0xB8161600, // 008E GETNGBL R5 K11
|
||||
0x88140B0C, // 008F GETMBR R5 R5 K12
|
||||
0x8C140B0D, // 0090 GETMET R5 R5 K13
|
||||
0x5C1C0200, // 0091 MOVE R7 R1
|
||||
0x5C200400, // 0092 MOVE R8 R2
|
||||
0x7C140600, // 0093 CALL R5 3
|
||||
0x90021405, // 0094 SETMBR R0 K10 R5
|
||||
0x8814010A, // 0095 GETMBR R5 R0 K10
|
||||
0x88080B0E, // 0096 GETMBR R2 R5 K14
|
||||
0x8C180301, // 0097 GETMET R6 R1 K1
|
||||
0x5C200400, // 0098 MOVE R8 R2
|
||||
0x5425FFFD, // 0099 LDINT R9 -2
|
||||
0x7C180600, // 009A CALL R6 3
|
||||
0x541E1817, // 009B LDINT R7 6168
|
||||
0x20180C07, // 009C NE R6 R6 R7
|
||||
0x781A0001, // 009D JMPF R6 #00A0
|
||||
0x4C180000, // 009E LDNIL R6
|
||||
0x80040C00, // 009F RET 1 R6
|
||||
0x00080504, // 00A0 ADD R2 R2 K4
|
||||
0x8C140301, // 00A1 GETMET R5 R1 K1
|
||||
0x5C1C0400, // 00A2 MOVE R7 R2
|
||||
0x5421FFFB, // 00A3 LDINT R8 -4
|
||||
0x7C140600, // 00A4 CALL R5 3
|
||||
0x20140B0F, // 00A5 NE R5 R5 K15
|
||||
0x78160001, // 00A6 JMPF R5 #00A9
|
||||
0x4C140000, // 00A7 LDNIL R5
|
||||
0x80040A00, // 00A8 RET 1 R5
|
||||
0x80040000, // 00A9 RET 1 R0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Matter_InvokeRequestMessage_solo
|
||||
********************************************************************/
|
||||
extern const bclass be_class_Matter_Path;
|
||||
be_local_class(Matter_InvokeRequestMessage_solo,
|
||||
3,
|
||||
&be_class_Matter_Path,
|
||||
be_nested_map(5,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(SuppressResponse, 4), be_const_var(0) },
|
||||
{ be_const_key_weak(command_fields, 3), be_const_var(2) },
|
||||
{ be_const_key_weak(reset, -1), be_const_closure(Matter_InvokeRequestMessage_solo_reset_closure) },
|
||||
{ be_const_key_weak(from_raw, -1), be_const_closure(Matter_InvokeRequestMessage_solo_from_raw_closure) },
|
||||
{ be_const_key_weak(TimedRequest, -1), be_const_var(1) },
|
||||
})),
|
||||
be_str_weak(Matter_InvokeRequestMessage_solo)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
void be_load_Matter_InvokeRequestMessage_solo_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_Matter_InvokeRequestMessage_solo);
|
||||
be_setglobal(vm, "Matter_InvokeRequestMessage_solo");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
|
||||
extern const bclass be_class_Matter_InvokeResponseMessage;
|
||||
|
||||
/********************************************************************
|
||||
|
@ -7,99 +7,30 @@
|
||||
extern const bclass be_class_Matter_IM_Message;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: status_error_received
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_IM_Message_status_error_received, /* name */
|
||||
be_local_closure(Matter_IM_Message_init, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
2, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
0, /* has constants */
|
||||
NULL, /* no const */
|
||||
be_str_weak(status_error_received),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 1]) { /* code */
|
||||
0x80000000, // 0000 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: send_im
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_IM_Message_send_im, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
2, /* argc */
|
||||
9, /* nstack */
|
||||
4, /* 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(ready),
|
||||
/* K1 */ be_nested_str_weak(resp),
|
||||
/* K2 */ be_nested_str_weak(encode_frame),
|
||||
/* K3 */ be_nested_str_weak(data),
|
||||
/* K4 */ be_nested_str_weak(to_TLV),
|
||||
/* K5 */ be_nested_str_weak(tlv2raw),
|
||||
/* K6 */ be_nested_str_weak(encrypt),
|
||||
/* K7 */ be_nested_str_weak(tasmota),
|
||||
/* K8 */ be_nested_str_weak(log),
|
||||
/* K9 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s),
|
||||
/* K10 */ be_nested_str_weak(session),
|
||||
/* K11 */ be_nested_str_weak(local_session_id),
|
||||
/* K12 */ be_nested_str_weak(message_counter),
|
||||
/* K13 */ be_nested_str_weak(exchange_id),
|
||||
/* K14 */ be_nested_str_weak(ack_message_counter),
|
||||
/* K15 */ be_nested_str_weak(send_response_frame),
|
||||
/* K16 */ be_nested_str_weak(last_counter),
|
||||
/* K17 */ be_nested_str_weak(finish),
|
||||
( &(const bvalue[ 1]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(reset),
|
||||
}),
|
||||
be_str_weak(send_im),
|
||||
be_str_weak(init),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[34]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x740A0001, // 0001 JMPT R2 #0004
|
||||
0x50080000, // 0002 LDBOOL R2 0 0
|
||||
0x80040400, // 0003 RET 1 R2
|
||||
0x88080101, // 0004 GETMBR R2 R0 K1
|
||||
0x8C0C0502, // 0005 GETMET R3 R2 K2
|
||||
0x88140103, // 0006 GETMBR R5 R0 K3
|
||||
0x8C140B04, // 0007 GETMET R5 R5 K4
|
||||
0x7C140200, // 0008 CALL R5 1
|
||||
0x8C140B05, // 0009 GETMET R5 R5 K5
|
||||
0x7C140200, // 000A CALL R5 1
|
||||
0x7C0C0400, // 000B CALL R3 2
|
||||
0x8C0C0506, // 000C GETMET R3 R2 K6
|
||||
0x7C0C0200, // 000D CALL R3 1
|
||||
0xB80E0E00, // 000E GETNGBL R3 K7
|
||||
0x8C0C0708, // 000F GETMET R3 R3 K8
|
||||
0x60140018, // 0010 GETGBL R5 G24
|
||||
0x58180009, // 0011 LDCONST R6 K9
|
||||
0x881C050A, // 0012 GETMBR R7 R2 K10
|
||||
0x881C0F0B, // 0013 GETMBR R7 R7 K11
|
||||
0x8820050C, // 0014 GETMBR R8 R2 K12
|
||||
0x8824050D, // 0015 GETMBR R9 R2 K13
|
||||
0x8828050E, // 0016 GETMBR R10 R2 K14
|
||||
0x7C140A00, // 0017 CALL R5 5
|
||||
0x541A0003, // 0018 LDINT R6 4
|
||||
0x7C0C0600, // 0019 CALL R3 3
|
||||
0x8C0C030F, // 001A GETMET R3 R1 K15
|
||||
0x5C140400, // 001B MOVE R5 R2
|
||||
0x7C0C0400, // 001C CALL R3 2
|
||||
0x880C050C, // 001D GETMBR R3 R2 K12
|
||||
0x90022003, // 001E SETMBR R0 K16 R3
|
||||
0x500C0200, // 001F LDBOOL R3 1 0
|
||||
0x90022203, // 0020 SETMBR R0 K17 R3
|
||||
0x80000000, // 0021 RET 0
|
||||
( &(const binstruction[ 6]) { /* code */
|
||||
0x8C100100, // 0000 GETMET R4 R0 K0
|
||||
0x5C180200, // 0001 MOVE R6 R1
|
||||
0x5C1C0400, // 0002 MOVE R7 R2
|
||||
0x5C200600, // 0003 MOVE R8 R3
|
||||
0x7C100800, // 0004 CALL R4 4
|
||||
0x80000000, // 0005 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -136,9 +67,154 @@ be_local_closure(Matter_IM_Message_get_exchangeid, /* name */
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
** Solidified function: send_im
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_IM_Message_init, /* name */
|
||||
be_local_closure(Matter_IM_Message_send_im, /* name */
|
||||
be_nested_proto(
|
||||
13, /* nstack */
|
||||
2, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[27]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(ready),
|
||||
/* K1 */ be_nested_str_weak(resp),
|
||||
/* K2 */ be_nested_str_weak(matter),
|
||||
/* K3 */ be_nested_str_weak(profiler),
|
||||
/* K4 */ be_nested_str_weak(log),
|
||||
/* K5 */ be_nested_str_weak(IM_Message_send_im_X2D1),
|
||||
/* K6 */ be_nested_str_weak(data),
|
||||
/* K7 */ be_nested_str_weak(to_TLV),
|
||||
/* K8 */ be_nested_str_weak(IM_Message_send_im_X2D1_X2E1),
|
||||
/* K9 */ be_nested_str_weak(tlv2raw),
|
||||
/* K10 */ be_nested_str_weak(IM_Message_send_im_X2D1_X2E2),
|
||||
/* K11 */ be_nested_str_weak(encode_frame),
|
||||
/* K12 */ be_nested_str_weak(IM_Message_send_im_X2D2),
|
||||
/* K13 */ be_nested_str_weak(encrypt),
|
||||
/* K14 */ be_nested_str_weak(IM_Message_send_im_X2D3),
|
||||
/* K15 */ be_nested_str_weak(tasmota),
|
||||
/* K16 */ be_nested_str_weak(loglevel),
|
||||
/* K17 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s),
|
||||
/* K18 */ be_nested_str_weak(session),
|
||||
/* K19 */ be_nested_str_weak(local_session_id),
|
||||
/* K20 */ be_nested_str_weak(message_counter),
|
||||
/* K21 */ be_nested_str_weak(exchange_id),
|
||||
/* K22 */ be_nested_str_weak(ack_message_counter),
|
||||
/* K23 */ be_nested_str_weak(send_response_frame),
|
||||
/* K24 */ be_nested_str_weak(IM_Message_send_im_X2D4),
|
||||
/* K25 */ be_nested_str_weak(last_counter),
|
||||
/* K26 */ be_nested_str_weak(finish),
|
||||
}),
|
||||
be_str_weak(send_im),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[70]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x740A0001, // 0001 JMPT R2 #0004
|
||||
0x50080000, // 0002 LDBOOL R2 0 0
|
||||
0x80040400, // 0003 RET 1 R2
|
||||
0x88080101, // 0004 GETMBR R2 R0 K1
|
||||
0xB80E0400, // 0005 GETNGBL R3 K2
|
||||
0x880C0703, // 0006 GETMBR R3 R3 K3
|
||||
0x8C0C0704, // 0007 GETMET R3 R3 K4
|
||||
0x58140005, // 0008 LDCONST R5 K5
|
||||
0x7C0C0400, // 0009 CALL R3 2
|
||||
0x880C0106, // 000A GETMBR R3 R0 K6
|
||||
0x8C0C0707, // 000B GETMET R3 R3 K7
|
||||
0x7C0C0200, // 000C CALL R3 1
|
||||
0xB8120400, // 000D GETNGBL R4 K2
|
||||
0x88100903, // 000E GETMBR R4 R4 K3
|
||||
0x8C100904, // 000F GETMET R4 R4 K4
|
||||
0x58180008, // 0010 LDCONST R6 K8
|
||||
0x7C100400, // 0011 CALL R4 2
|
||||
0x8C100709, // 0012 GETMET R4 R3 K9
|
||||
0x7C100200, // 0013 CALL R4 1
|
||||
0xB8160400, // 0014 GETNGBL R5 K2
|
||||
0x88140B03, // 0015 GETMBR R5 R5 K3
|
||||
0x8C140B04, // 0016 GETMET R5 R5 K4
|
||||
0x581C000A, // 0017 LDCONST R7 K10
|
||||
0x7C140400, // 0018 CALL R5 2
|
||||
0x8C14050B, // 0019 GETMET R5 R2 K11
|
||||
0x5C1C0800, // 001A MOVE R7 R4
|
||||
0x7C140400, // 001B CALL R5 2
|
||||
0xB8160400, // 001C GETNGBL R5 K2
|
||||
0x88140B03, // 001D GETMBR R5 R5 K3
|
||||
0x8C140B04, // 001E GETMET R5 R5 K4
|
||||
0x581C000C, // 001F LDCONST R7 K12
|
||||
0x7C140400, // 0020 CALL R5 2
|
||||
0x8C14050D, // 0021 GETMET R5 R2 K13
|
||||
0x7C140200, // 0022 CALL R5 1
|
||||
0xB8160400, // 0023 GETNGBL R5 K2
|
||||
0x88140B03, // 0024 GETMBR R5 R5 K3
|
||||
0x8C140B04, // 0025 GETMET R5 R5 K4
|
||||
0x581C000E, // 0026 LDCONST R7 K14
|
||||
0x7C140400, // 0027 CALL R5 2
|
||||
0xB8161E00, // 0028 GETNGBL R5 K15
|
||||
0x8C140B10, // 0029 GETMET R5 R5 K16
|
||||
0x541E0003, // 002A LDINT R7 4
|
||||
0x7C140400, // 002B CALL R5 2
|
||||
0x7816000B, // 002C JMPF R5 #0039
|
||||
0xB8161E00, // 002D GETNGBL R5 K15
|
||||
0x8C140B04, // 002E GETMET R5 R5 K4
|
||||
0x601C0018, // 002F GETGBL R7 G24
|
||||
0x58200011, // 0030 LDCONST R8 K17
|
||||
0x88240512, // 0031 GETMBR R9 R2 K18
|
||||
0x88241313, // 0032 GETMBR R9 R9 K19
|
||||
0x88280514, // 0033 GETMBR R10 R2 K20
|
||||
0x882C0515, // 0034 GETMBR R11 R2 K21
|
||||
0x88300516, // 0035 GETMBR R12 R2 K22
|
||||
0x7C1C0A00, // 0036 CALL R7 5
|
||||
0x54220003, // 0037 LDINT R8 4
|
||||
0x7C140600, // 0038 CALL R5 3
|
||||
0x8C140317, // 0039 GETMET R5 R1 K23
|
||||
0x5C1C0400, // 003A MOVE R7 R2
|
||||
0x7C140400, // 003B CALL R5 2
|
||||
0xB8160400, // 003C GETNGBL R5 K2
|
||||
0x88140B03, // 003D GETMBR R5 R5 K3
|
||||
0x8C140B04, // 003E GETMET R5 R5 K4
|
||||
0x581C0018, // 003F LDCONST R7 K24
|
||||
0x7C140400, // 0040 CALL R5 2
|
||||
0x88140514, // 0041 GETMBR R5 R2 K20
|
||||
0x90023205, // 0042 SETMBR R0 K25 R5
|
||||
0x50140200, // 0043 LDBOOL R5 1 0
|
||||
0x90023405, // 0044 SETMBR R0 K26 R5
|
||||
0x80000000, // 0045 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: status_error_received
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_IM_Message_status_error_received, /* name */
|
||||
be_nested_proto(
|
||||
2, /* nstack */
|
||||
2, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
0, /* has constants */
|
||||
NULL, /* no const */
|
||||
be_str_weak(status_error_received),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 1]) { /* code */
|
||||
0x80000000, // 0000 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: reset
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_IM_Message_reset, /* name */
|
||||
be_nested_proto(
|
||||
8, /* nstack */
|
||||
4, /* argc */
|
||||
@ -148,7 +224,7 @@ be_local_closure(Matter_IM_Message_init, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[10]) { /* constants */
|
||||
( &(const bvalue[11]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(resp),
|
||||
/* K1 */ be_nested_str_weak(build_response),
|
||||
/* K2 */ be_nested_str_weak(ready),
|
||||
@ -159,10 +235,11 @@ be_local_closure(Matter_IM_Message_init, /* name */
|
||||
/* K7 */ be_nested_str_weak(last_counter),
|
||||
/* K8 */ be_const_int(0),
|
||||
/* K9 */ be_nested_str_weak(finish),
|
||||
/* K10 */ be_nested_str_weak(data),
|
||||
}),
|
||||
be_str_weak(init),
|
||||
be_str_weak(reset),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[17]) { /* code */
|
||||
( &(const binstruction[19]) { /* code */
|
||||
0x8C100301, // 0000 GETMET R4 R1 K1
|
||||
0x5C180400, // 0001 MOVE R6 R2
|
||||
0x5C1C0600, // 0002 MOVE R7 R3
|
||||
@ -179,43 +256,9 @@ be_local_closure(Matter_IM_Message_init, /* name */
|
||||
0x90020F08, // 000D SETMBR R0 K7 K8
|
||||
0x50100000, // 000E LDBOOL R4 0 0
|
||||
0x90021204, // 000F SETMBR R0 K9 R4
|
||||
0x80000000, // 0010 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: ack_received
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_IM_Message_ack_received, /* name */
|
||||
be_nested_proto(
|
||||
4, /* 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(expiration),
|
||||
/* K1 */ be_nested_str_weak(tasmota),
|
||||
/* K2 */ be_nested_str_weak(millis),
|
||||
/* K3 */ be_nested_str_weak(MSG_TIMEOUT),
|
||||
}),
|
||||
be_str_weak(ack_received),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 8]) { /* code */
|
||||
0xB80A0200, // 0000 GETNGBL R2 K1
|
||||
0x8C080502, // 0001 GETMET R2 R2 K2
|
||||
0x7C080200, // 0002 CALL R2 1
|
||||
0x880C0103, // 0003 GETMBR R3 R0 K3
|
||||
0x00080403, // 0004 ADD R2 R2 R3
|
||||
0x90020002, // 0005 SETMBR R0 K0 R2
|
||||
0x50080000, // 0006 LDBOOL R2 0 0
|
||||
0x80040400, // 0007 RET 1 R2
|
||||
0x4C100000, // 0010 LDNIL R4
|
||||
0x90021404, // 0011 SETMBR R0 K10 R4
|
||||
0x80000000, // 0012 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -298,28 +341,65 @@ be_local_closure(Matter_IM_Message_status_ok_received, /* name */
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: ack_received
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_IM_Message_ack_received, /* name */
|
||||
be_nested_proto(
|
||||
4, /* 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(expiration),
|
||||
/* K1 */ be_nested_str_weak(tasmota),
|
||||
/* K2 */ be_nested_str_weak(millis),
|
||||
/* K3 */ be_nested_str_weak(MSG_TIMEOUT),
|
||||
}),
|
||||
be_str_weak(ack_received),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 8]) { /* code */
|
||||
0xB80A0200, // 0000 GETNGBL R2 K1
|
||||
0x8C080502, // 0001 GETMET R2 R2 K2
|
||||
0x7C080200, // 0002 CALL R2 1
|
||||
0x880C0103, // 0003 GETMBR R3 R0 K3
|
||||
0x00080403, // 0004 ADD R2 R2 R3
|
||||
0x90020002, // 0005 SETMBR R0 K0 R2
|
||||
0x50080000, // 0006 LDBOOL R2 0 0
|
||||
0x80040400, // 0007 RET 1 R2
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Matter_IM_Message
|
||||
********************************************************************/
|
||||
be_local_class(Matter_IM_Message,
|
||||
6,
|
||||
NULL,
|
||||
be_nested_map(14,
|
||||
be_nested_map(15,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(MSG_TIMEOUT, -1), be_const_int(5000) },
|
||||
{ be_const_key_weak(data, -1), be_const_var(4) },
|
||||
{ be_const_key_weak(init, 11), be_const_closure(Matter_IM_Message_init_closure) },
|
||||
{ be_const_key_weak(get_exchangeid, 10), be_const_closure(Matter_IM_Message_get_exchangeid_closure) },
|
||||
{ be_const_key_weak(reset, -1), be_const_closure(Matter_IM_Message_reset_closure) },
|
||||
{ be_const_key_weak(send_im, -1), be_const_closure(Matter_IM_Message_send_im_closure) },
|
||||
{ be_const_key_weak(status_ok_received, -1), be_const_closure(Matter_IM_Message_status_ok_received_closure) },
|
||||
{ be_const_key_weak(get_exchangeid, 0), be_const_closure(Matter_IM_Message_get_exchangeid_closure) },
|
||||
{ be_const_key_weak(init, -1), be_const_closure(Matter_IM_Message_init_closure) },
|
||||
{ be_const_key_weak(expiration, -1), be_const_var(0) },
|
||||
{ be_const_key_weak(resp, -1), be_const_var(1) },
|
||||
{ be_const_key_weak(finish, 13), be_const_var(3) },
|
||||
{ be_const_key_weak(last_counter, 6), be_const_var(5) },
|
||||
{ be_const_key_weak(ack_received, 9), be_const_closure(Matter_IM_Message_ack_received_closure) },
|
||||
{ be_const_key_weak(status_error_received, -1), be_const_closure(Matter_IM_Message_status_error_received_closure) },
|
||||
{ be_const_key_weak(finish, -1), be_const_var(3) },
|
||||
{ be_const_key_weak(status_ok_received, 2), be_const_closure(Matter_IM_Message_status_ok_received_closure) },
|
||||
{ be_const_key_weak(last_counter, -1), be_const_var(5) },
|
||||
{ be_const_key_weak(reached_timeout, -1), be_const_closure(Matter_IM_Message_reached_timeout_closure) },
|
||||
{ be_const_key_weak(status_error_received, 3), be_const_closure(Matter_IM_Message_status_error_received_closure) },
|
||||
{ be_const_key_weak(ready, -1), be_const_var(2) },
|
||||
{ be_const_key_weak(resp, -1), be_const_var(1) },
|
||||
{ be_const_key_weak(data, -1), be_const_var(4) },
|
||||
{ be_const_key_weak(expiration, -1), be_const_var(0) },
|
||||
{ be_const_key_weak(ready, 6), be_const_var(2) },
|
||||
{ be_const_key_weak(MSG_TIMEOUT, 5), be_const_int(5000) },
|
||||
{ be_const_key_weak(ack_received, -1), be_const_closure(Matter_IM_Message_ack_received_closure) },
|
||||
})),
|
||||
be_str_weak(Matter_IM_Message)
|
||||
);
|
||||
@ -749,7 +829,7 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[20]) { /* constants */
|
||||
( &(const bvalue[21]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(ready),
|
||||
/* K1 */ be_nested_str_weak(data),
|
||||
/* K2 */ be_nested_str_weak(attribute_reports),
|
||||
@ -762,18 +842,19 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */
|
||||
/* K9 */ be_nested_str_weak(encode_frame),
|
||||
/* K10 */ be_nested_str_weak(encrypt),
|
||||
/* K11 */ be_nested_str_weak(tasmota),
|
||||
/* K12 */ be_nested_str_weak(log),
|
||||
/* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i),
|
||||
/* K14 */ be_nested_str_weak(session),
|
||||
/* K15 */ be_nested_str_weak(local_session_id),
|
||||
/* K16 */ be_nested_str_weak(ack_message_counter),
|
||||
/* K17 */ be_nested_str_weak(message_counter),
|
||||
/* K18 */ be_nested_str_weak(send_response_frame),
|
||||
/* K19 */ be_nested_str_weak(last_counter),
|
||||
/* K12 */ be_nested_str_weak(loglevel),
|
||||
/* K13 */ be_nested_str_weak(log),
|
||||
/* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i),
|
||||
/* K15 */ be_nested_str_weak(session),
|
||||
/* K16 */ be_nested_str_weak(local_session_id),
|
||||
/* K17 */ be_nested_str_weak(ack_message_counter),
|
||||
/* K18 */ be_nested_str_weak(message_counter),
|
||||
/* K19 */ be_nested_str_weak(send_response_frame),
|
||||
/* K20 */ be_nested_str_weak(last_counter),
|
||||
}),
|
||||
be_str_weak(send_im),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[69]) { /* code */
|
||||
( &(const binstruction[74]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x740A0001, // 0001 JMPT R2 #0004
|
||||
0x50080000, // 0002 LDBOOL R2 0 0
|
||||
@ -783,7 +864,7 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */
|
||||
0x880C0702, // 0006 GETMBR R3 R3 K2
|
||||
0x7C080200, // 0007 CALL R2 1
|
||||
0x24080503, // 0008 GT R2 R2 K3
|
||||
0x780A002C, // 0009 JMPF R2 #0037
|
||||
0x780A0031, // 0009 JMPF R2 #003C
|
||||
0x88080104, // 000A GETMBR R2 R0 K4
|
||||
0x780A000F, // 000B JMPF R2 #001C
|
||||
0x60080003, // 000C GETGBL R2 G3
|
||||
@ -801,7 +882,7 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */
|
||||
0x90020002, // 0018 SETMBR R0 K0 R2
|
||||
0x50080000, // 0019 LDBOOL R2 0 0
|
||||
0x90020C02, // 001A SETMBR R0 K6 R2
|
||||
0x70020019, // 001B JMP #0036
|
||||
0x7002001E, // 001B JMP #003B
|
||||
0x88080107, // 001C GETMBR R2 R0 K7
|
||||
0x8C080508, // 001D GETMET R2 R2 K8
|
||||
0x50100000, // 001E LDBOOL R4 0 0
|
||||
@ -812,37 +893,42 @@ be_local_closure(Matter_IM_ReportDataSubscribed_send_im, /* name */
|
||||
0x7C0C0200, // 0023 CALL R3 1
|
||||
0xB80E1600, // 0024 GETNGBL R3 K11
|
||||
0x8C0C070C, // 0025 GETMET R3 R3 K12
|
||||
0x60140018, // 0026 GETGBL R5 G24
|
||||
0x5818000D, // 0027 LDCONST R6 K13
|
||||
0x881C050E, // 0028 GETMBR R7 R2 K14
|
||||
0x881C0F0F, // 0029 GETMBR R7 R7 K15
|
||||
0x88200510, // 002A GETMBR R8 R2 K16
|
||||
0x88240511, // 002B GETMBR R9 R2 K17
|
||||
0x7C140800, // 002C CALL R5 4
|
||||
0x541A0003, // 002D LDINT R6 4
|
||||
0x7C0C0600, // 002E CALL R3 3
|
||||
0x8C0C0312, // 002F GETMET R3 R1 K18
|
||||
0x5C140400, // 0030 MOVE R5 R2
|
||||
0x7C0C0400, // 0031 CALL R3 2
|
||||
0x880C0511, // 0032 GETMBR R3 R2 K17
|
||||
0x90022603, // 0033 SETMBR R0 K19 R3
|
||||
0x500C0200, // 0034 LDBOOL R3 1 0
|
||||
0x90020C03, // 0035 SETMBR R0 K6 R3
|
||||
0x7002000C, // 0036 JMP #0044
|
||||
0x88080104, // 0037 GETMBR R2 R0 K4
|
||||
0x780A0008, // 0038 JMPF R2 #0042
|
||||
0x60080003, // 0039 GETGBL R2 G3
|
||||
0x5C0C0000, // 003A MOVE R3 R0
|
||||
0x7C080200, // 003B CALL R2 1
|
||||
0x8C080505, // 003C GETMET R2 R2 K5
|
||||
0x5C100200, // 003D MOVE R4 R1
|
||||
0x7C080400, // 003E CALL R2 2
|
||||
0x50080000, // 003F LDBOOL R2 0 0
|
||||
0x90020802, // 0040 SETMBR R0 K4 R2
|
||||
0x70020001, // 0041 JMP #0044
|
||||
0x50080200, // 0042 LDBOOL R2 1 0
|
||||
0x90020C02, // 0043 SETMBR R0 K6 R2
|
||||
0x80000000, // 0044 RET 0
|
||||
0x54160003, // 0026 LDINT R5 4
|
||||
0x7C0C0400, // 0027 CALL R3 2
|
||||
0x780E000A, // 0028 JMPF R3 #0034
|
||||
0xB80E1600, // 0029 GETNGBL R3 K11
|
||||
0x8C0C070D, // 002A GETMET R3 R3 K13
|
||||
0x60140018, // 002B GETGBL R5 G24
|
||||
0x5818000E, // 002C LDCONST R6 K14
|
||||
0x881C050F, // 002D GETMBR R7 R2 K15
|
||||
0x881C0F10, // 002E GETMBR R7 R7 K16
|
||||
0x88200511, // 002F GETMBR R8 R2 K17
|
||||
0x88240512, // 0030 GETMBR R9 R2 K18
|
||||
0x7C140800, // 0031 CALL R5 4
|
||||
0x541A0003, // 0032 LDINT R6 4
|
||||
0x7C0C0600, // 0033 CALL R3 3
|
||||
0x8C0C0313, // 0034 GETMET R3 R1 K19
|
||||
0x5C140400, // 0035 MOVE R5 R2
|
||||
0x7C0C0400, // 0036 CALL R3 2
|
||||
0x880C0512, // 0037 GETMBR R3 R2 K18
|
||||
0x90022803, // 0038 SETMBR R0 K20 R3
|
||||
0x500C0200, // 0039 LDBOOL R3 1 0
|
||||
0x90020C03, // 003A SETMBR R0 K6 R3
|
||||
0x7002000C, // 003B JMP #0049
|
||||
0x88080104, // 003C GETMBR R2 R0 K4
|
||||
0x780A0008, // 003D JMPF R2 #0047
|
||||
0x60080003, // 003E GETGBL R2 G3
|
||||
0x5C0C0000, // 003F MOVE R3 R0
|
||||
0x7C080200, // 0040 CALL R2 1
|
||||
0x8C080505, // 0041 GETMET R2 R2 K5
|
||||
0x5C100200, // 0042 MOVE R4 R1
|
||||
0x7C080400, // 0043 CALL R2 2
|
||||
0x50080000, // 0044 LDBOOL R2 0 0
|
||||
0x90020802, // 0045 SETMBR R0 K4 R2
|
||||
0x70020001, // 0046 JMP #0049
|
||||
0x50080200, // 0047 LDBOOL R2 1 0
|
||||
0x90020C02, // 0048 SETMBR R0 K6 R2
|
||||
0x80000000, // 0049 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -1343,38 +1429,44 @@ be_local_closure(Matter_IM_SubscribeResponse_status_ok_received, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 9]) { /* constants */
|
||||
( &(const bvalue[10]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(tasmota),
|
||||
/* K1 */ be_nested_str_weak(log),
|
||||
/* K2 */ be_nested_str_weak(MTR_X3A_X20_X3ESub_OK_X20_X20_X20_X20_X28_X256i_X29_X20sub_X3D_X25i),
|
||||
/* K3 */ be_nested_str_weak(session),
|
||||
/* K4 */ be_nested_str_weak(local_session_id),
|
||||
/* K5 */ be_nested_str_weak(sub),
|
||||
/* K6 */ be_nested_str_weak(subscription_id),
|
||||
/* K7 */ be_const_int(3),
|
||||
/* K8 */ be_nested_str_weak(status_ok_received),
|
||||
/* K1 */ be_nested_str_weak(loglevel),
|
||||
/* K2 */ be_const_int(3),
|
||||
/* K3 */ be_nested_str_weak(log),
|
||||
/* 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_nested_str_weak(status_ok_received),
|
||||
}),
|
||||
be_str_weak(status_ok_received),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[18]) { /* code */
|
||||
( &(const binstruction[23]) { /* code */
|
||||
0xB80A0000, // 0000 GETNGBL R2 K0
|
||||
0x8C080501, // 0001 GETMET R2 R2 K1
|
||||
0x60100018, // 0002 GETGBL R4 G24
|
||||
0x58140002, // 0003 LDCONST R5 K2
|
||||
0x88180303, // 0004 GETMBR R6 R1 K3
|
||||
0x88180D04, // 0005 GETMBR R6 R6 K4
|
||||
0x881C0105, // 0006 GETMBR R7 R0 K5
|
||||
0x881C0F06, // 0007 GETMBR R7 R7 K6
|
||||
0x7C100600, // 0008 CALL R4 3
|
||||
0x58140007, // 0009 LDCONST R5 K7
|
||||
0x7C080600, // 000A CALL R2 3
|
||||
0x60080003, // 000B GETGBL R2 G3
|
||||
0x5C0C0000, // 000C MOVE R3 R0
|
||||
0x7C080200, // 000D CALL R2 1
|
||||
0x8C080508, // 000E GETMET R2 R2 K8
|
||||
0x5C100200, // 000F MOVE R4 R1
|
||||
0x7C080400, // 0010 CALL R2 2
|
||||
0x80040400, // 0011 RET 1 R2
|
||||
0x58100002, // 0002 LDCONST R4 K2
|
||||
0x7C080400, // 0003 CALL R2 2
|
||||
0x780A000A, // 0004 JMPF R2 #0010
|
||||
0xB80A0000, // 0005 GETNGBL R2 K0
|
||||
0x8C080503, // 0006 GETMET R2 R2 K3
|
||||
0x60100018, // 0007 GETGBL R4 G24
|
||||
0x58140004, // 0008 LDCONST R5 K4
|
||||
0x88180305, // 0009 GETMBR R6 R1 K5
|
||||
0x88180D06, // 000A GETMBR R6 R6 K6
|
||||
0x881C0107, // 000B GETMBR R7 R0 K7
|
||||
0x881C0F08, // 000C GETMBR R7 R7 K8
|
||||
0x7C100600, // 000D CALL R4 3
|
||||
0x58140002, // 000E LDCONST R5 K2
|
||||
0x7C080600, // 000F CALL R2 3
|
||||
0x60080003, // 0010 GETGBL R2 G3
|
||||
0x5C0C0000, // 0011 MOVE R3 R0
|
||||
0x7C080200, // 0012 CALL R2 1
|
||||
0x8C080509, // 0013 GETMET R2 R2 K9
|
||||
0x5C100200, // 0014 MOVE R4 R1
|
||||
0x7C080400, // 0015 CALL R2 2
|
||||
0x80040400, // 0016 RET 1 R2
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -12,16 +12,16 @@ extern const bclass be_class_Matter_Frame;
|
||||
be_local_closure(Matter_Frame_encode_frame, /* name */
|
||||
be_nested_proto(
|
||||
7, /* nstack */
|
||||
2, /* argc */
|
||||
3, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[30]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(flags),
|
||||
/* K1 */ be_const_int(0),
|
||||
( &(const bvalue[29]) { /* constants */
|
||||
/* K0 */ be_const_int(0),
|
||||
/* K1 */ be_nested_str_weak(flags),
|
||||
/* K2 */ be_nested_str_weak(flag_s),
|
||||
/* K3 */ be_nested_str_weak(flag_dsiz),
|
||||
/* K4 */ be_const_int(3),
|
||||
@ -48,158 +48,166 @@ be_local_closure(Matter_Frame_encode_frame, /* name */
|
||||
/* K25 */ be_nested_str_weak(protocol_id),
|
||||
/* K26 */ be_nested_str_weak(ack_message_counter),
|
||||
/* K27 */ be_nested_str_weak(app_payload_idx),
|
||||
/* K28 */ be_nested_str_weak(debug),
|
||||
/* K29 */ be_nested_str_weak(raw),
|
||||
/* K28 */ be_nested_str_weak(raw),
|
||||
}),
|
||||
be_str_weak(encode_frame),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[146]) { /* code */
|
||||
0x60080015, // 0000 GETGBL R2 G21
|
||||
0x7C080000, // 0001 CALL R2 0
|
||||
0x880C0100, // 0002 GETMBR R3 R0 K0
|
||||
0x4C100000, // 0003 LDNIL R4
|
||||
0x1C0C0604, // 0004 EQ R3 R3 R4
|
||||
0x780E000D, // 0005 JMPF R3 #0014
|
||||
0x90020101, // 0006 SETMBR R0 K0 K1
|
||||
0x880C0102, // 0007 GETMBR R3 R0 K2
|
||||
0x780E0003, // 0008 JMPF R3 #000D
|
||||
0x880C0100, // 0009 GETMBR R3 R0 K0
|
||||
0x54120003, // 000A LDINT R4 4
|
||||
0x300C0604, // 000B OR R3 R3 R4
|
||||
0x90020003, // 000C SETMBR R0 K0 R3
|
||||
0x880C0103, // 000D GETMBR R3 R0 K3
|
||||
0x780E0004, // 000E JMPF R3 #0014
|
||||
0x880C0100, // 000F GETMBR R3 R0 K0
|
||||
0x88100103, // 0010 GETMBR R4 R0 K3
|
||||
0x2C100904, // 0011 AND R4 R4 K4
|
||||
0x300C0604, // 0012 OR R3 R3 R4
|
||||
0x90020003, // 0013 SETMBR R0 K0 R3
|
||||
0x8C0C0505, // 0014 GETMET R3 R2 K5
|
||||
0x88140100, // 0015 GETMBR R5 R0 K0
|
||||
0x58180006, // 0016 LDCONST R6 K6
|
||||
0x7C0C0600, // 0017 CALL R3 3
|
||||
0x8C0C0505, // 0018 GETMET R3 R2 K5
|
||||
0x88140107, // 0019 GETMBR R5 R0 K7
|
||||
0x78160001, // 001A JMPF R5 #001D
|
||||
0x88140107, // 001B GETMBR R5 R0 K7
|
||||
0x70020000, // 001C JMP #001E
|
||||
0x58140001, // 001D LDCONST R5 K1
|
||||
0x58180008, // 001E LDCONST R6 K8
|
||||
0x7C0C0600, // 001F CALL R3 3
|
||||
0x880C0109, // 0020 GETMBR R3 R0 K9
|
||||
0x4C100000, // 0021 LDNIL R4
|
||||
0x1C0C0604, // 0022 EQ R3 R3 R4
|
||||
0x780E0013, // 0023 JMPF R3 #0038
|
||||
0x90021301, // 0024 SETMBR R0 K9 K1
|
||||
0x880C010A, // 0025 GETMBR R3 R0 K10
|
||||
0x780E0003, // 0026 JMPF R3 #002B
|
||||
0x880C0109, // 0027 GETMBR R3 R0 K9
|
||||
0x5412007F, // 0028 LDINT R4 128
|
||||
0x300C0604, // 0029 OR R3 R3 R4
|
||||
0x90021203, // 002A SETMBR R0 K9 R3
|
||||
0x880C010B, // 002B GETMBR R3 R0 K11
|
||||
0x780E0003, // 002C JMPF R3 #0031
|
||||
0x880C0109, // 002D GETMBR R3 R0 K9
|
||||
0x5412003F, // 002E LDINT R4 64
|
||||
0x300C0604, // 002F OR R3 R3 R4
|
||||
0x90021203, // 0030 SETMBR R0 K9 R3
|
||||
0x880C010C, // 0031 GETMBR R3 R0 K12
|
||||
0x780E0004, // 0032 JMPF R3 #0038
|
||||
( &(const binstruction[155]) { /* code */
|
||||
0x4C0C0000, // 0000 LDNIL R3
|
||||
0x1C0C0403, // 0001 EQ R3 R2 R3
|
||||
0x780E000A, // 0002 JMPF R3 #000E
|
||||
0x600C0015, // 0003 GETGBL R3 G21
|
||||
0x5412000F, // 0004 LDINT R4 16
|
||||
0x78060003, // 0005 JMPF R1 #000A
|
||||
0x6014000C, // 0006 GETGBL R5 G12
|
||||
0x5C180200, // 0007 MOVE R6 R1
|
||||
0x7C140200, // 0008 CALL R5 1
|
||||
0x70020000, // 0009 JMP #000B
|
||||
0x58140000, // 000A LDCONST R5 K0
|
||||
0x00100805, // 000B ADD R4 R4 R5
|
||||
0x7C0C0200, // 000C CALL R3 1
|
||||
0x5C080600, // 000D MOVE R2 R3
|
||||
0x880C0101, // 000E GETMBR R3 R0 K1
|
||||
0x4C100000, // 000F LDNIL R4
|
||||
0x1C0C0604, // 0010 EQ R3 R3 R4
|
||||
0x780E000D, // 0011 JMPF R3 #0020
|
||||
0x90020300, // 0012 SETMBR R0 K1 K0
|
||||
0x880C0102, // 0013 GETMBR R3 R0 K2
|
||||
0x780E0003, // 0014 JMPF R3 #0019
|
||||
0x880C0101, // 0015 GETMBR R3 R0 K1
|
||||
0x54120003, // 0016 LDINT R4 4
|
||||
0x300C0604, // 0017 OR R3 R3 R4
|
||||
0x90020203, // 0018 SETMBR R0 K1 R3
|
||||
0x880C0103, // 0019 GETMBR R3 R0 K3
|
||||
0x780E0004, // 001A JMPF R3 #0020
|
||||
0x880C0101, // 001B GETMBR R3 R0 K1
|
||||
0x88100103, // 001C GETMBR R4 R0 K3
|
||||
0x2C100904, // 001D AND R4 R4 K4
|
||||
0x300C0604, // 001E OR R3 R3 R4
|
||||
0x90020203, // 001F SETMBR R0 K1 R3
|
||||
0x8C0C0505, // 0020 GETMET R3 R2 K5
|
||||
0x88140101, // 0021 GETMBR R5 R0 K1
|
||||
0x58180006, // 0022 LDCONST R6 K6
|
||||
0x7C0C0600, // 0023 CALL R3 3
|
||||
0x8C0C0505, // 0024 GETMET R3 R2 K5
|
||||
0x88140107, // 0025 GETMBR R5 R0 K7
|
||||
0x78160001, // 0026 JMPF R5 #0029
|
||||
0x88140107, // 0027 GETMBR R5 R0 K7
|
||||
0x70020000, // 0028 JMP #002A
|
||||
0x58140000, // 0029 LDCONST R5 K0
|
||||
0x58180008, // 002A LDCONST R6 K8
|
||||
0x7C0C0600, // 002B CALL R3 3
|
||||
0x880C0109, // 002C GETMBR R3 R0 K9
|
||||
0x4C100000, // 002D LDNIL R4
|
||||
0x1C0C0604, // 002E EQ R3 R3 R4
|
||||
0x780E0013, // 002F JMPF R3 #0044
|
||||
0x90021300, // 0030 SETMBR R0 K9 K0
|
||||
0x880C010A, // 0031 GETMBR R3 R0 K10
|
||||
0x780E0003, // 0032 JMPF R3 #0037
|
||||
0x880C0109, // 0033 GETMBR R3 R0 K9
|
||||
0x8810010C, // 0034 GETMBR R4 R0 K12
|
||||
0x2C100904, // 0035 AND R4 R4 K4
|
||||
0x300C0604, // 0036 OR R3 R3 R4
|
||||
0x90021203, // 0037 SETMBR R0 K9 R3
|
||||
0x8C0C0505, // 0038 GETMET R3 R2 K5
|
||||
0x88140109, // 0039 GETMBR R5 R0 K9
|
||||
0x58180006, // 003A LDCONST R6 K6
|
||||
0x7C0C0600, // 003B CALL R3 3
|
||||
0x8C0C0505, // 003C GETMET R3 R2 K5
|
||||
0x8814010D, // 003D GETMBR R5 R0 K13
|
||||
0x541A0003, // 003E LDINT R6 4
|
||||
0x7C0C0600, // 003F CALL R3 3
|
||||
0x880C0102, // 0040 GETMBR R3 R0 K2
|
||||
0x780E0001, // 0041 JMPF R3 #0044
|
||||
0x880C010E, // 0042 GETMBR R3 R0 K14
|
||||
0x400C0403, // 0043 CONNECT R3 R2 R3
|
||||
0x880C0103, // 0044 GETMBR R3 R0 K3
|
||||
0x1C0C0706, // 0045 EQ R3 R3 K6
|
||||
0x780E0001, // 0046 JMPF R3 #0049
|
||||
0x880C010F, // 0047 GETMBR R3 R0 K15
|
||||
0x400C0403, // 0048 CONNECT R3 R2 R3
|
||||
0x880C0103, // 0049 GETMBR R3 R0 K3
|
||||
0x1C0C0708, // 004A EQ R3 R3 K8
|
||||
0x780E0003, // 004B JMPF R3 #0050
|
||||
0x8C0C0505, // 004C GETMET R3 R2 K5
|
||||
0x88140110, // 004D GETMBR R5 R0 K16
|
||||
0x58180008, // 004E LDCONST R6 K8
|
||||
0x7C0C0600, // 004F CALL R3 3
|
||||
0x600C000C, // 0050 GETGBL R3 G12
|
||||
0x5C100400, // 0051 MOVE R4 R2
|
||||
0x7C0C0200, // 0052 CALL R3 1
|
||||
0x90022203, // 0053 SETMBR R0 K17 R3
|
||||
0x880C0112, // 0054 GETMBR R3 R0 K18
|
||||
0x4C100000, // 0055 LDNIL R4
|
||||
0x1C0C0604, // 0056 EQ R3 R3 R4
|
||||
0x780E0016, // 0057 JMPF R3 #006F
|
||||
0x90022501, // 0058 SETMBR R0 K18 K1
|
||||
0x880C0113, // 0059 GETMBR R3 R0 K19
|
||||
0x780E0003, // 005A JMPF R3 #005F
|
||||
0x880C0112, // 005B GETMBR R3 R0 K18
|
||||
0x5412000F, // 005C LDINT R4 16
|
||||
0x300C0604, // 005D OR R3 R3 R4
|
||||
0x90022403, // 005E SETMBR R0 K18 R3
|
||||
0x880C0114, // 005F GETMBR R3 R0 K20
|
||||
0x780E0003, // 0060 JMPF R3 #0065
|
||||
0x880C0112, // 0061 GETMBR R3 R0 K18
|
||||
0x54120003, // 0062 LDINT R4 4
|
||||
0x300C0604, // 0063 OR R3 R3 R4
|
||||
0x90022403, // 0064 SETMBR R0 K18 R3
|
||||
0x880C0115, // 0065 GETMBR R3 R0 K21
|
||||
0x780E0002, // 0066 JMPF R3 #006A
|
||||
0x5412007F, // 0034 LDINT R4 128
|
||||
0x300C0604, // 0035 OR R3 R3 R4
|
||||
0x90021203, // 0036 SETMBR R0 K9 R3
|
||||
0x880C010B, // 0037 GETMBR R3 R0 K11
|
||||
0x780E0003, // 0038 JMPF R3 #003D
|
||||
0x880C0109, // 0039 GETMBR R3 R0 K9
|
||||
0x5412003F, // 003A LDINT R4 64
|
||||
0x300C0604, // 003B OR R3 R3 R4
|
||||
0x90021203, // 003C SETMBR R0 K9 R3
|
||||
0x880C010C, // 003D GETMBR R3 R0 K12
|
||||
0x780E0004, // 003E JMPF R3 #0044
|
||||
0x880C0109, // 003F GETMBR R3 R0 K9
|
||||
0x8810010C, // 0040 GETMBR R4 R0 K12
|
||||
0x2C100904, // 0041 AND R4 R4 K4
|
||||
0x300C0604, // 0042 OR R3 R3 R4
|
||||
0x90021203, // 0043 SETMBR R0 K9 R3
|
||||
0x8C0C0505, // 0044 GETMET R3 R2 K5
|
||||
0x88140109, // 0045 GETMBR R5 R0 K9
|
||||
0x58180006, // 0046 LDCONST R6 K6
|
||||
0x7C0C0600, // 0047 CALL R3 3
|
||||
0x8C0C0505, // 0048 GETMET R3 R2 K5
|
||||
0x8814010D, // 0049 GETMBR R5 R0 K13
|
||||
0x541A0003, // 004A LDINT R6 4
|
||||
0x7C0C0600, // 004B CALL R3 3
|
||||
0x880C0102, // 004C GETMBR R3 R0 K2
|
||||
0x780E0001, // 004D JMPF R3 #0050
|
||||
0x880C010E, // 004E GETMBR R3 R0 K14
|
||||
0x400C0403, // 004F CONNECT R3 R2 R3
|
||||
0x880C0103, // 0050 GETMBR R3 R0 K3
|
||||
0x1C0C0706, // 0051 EQ R3 R3 K6
|
||||
0x780E0001, // 0052 JMPF R3 #0055
|
||||
0x880C010F, // 0053 GETMBR R3 R0 K15
|
||||
0x400C0403, // 0054 CONNECT R3 R2 R3
|
||||
0x880C0103, // 0055 GETMBR R3 R0 K3
|
||||
0x1C0C0708, // 0056 EQ R3 R3 K8
|
||||
0x780E0003, // 0057 JMPF R3 #005C
|
||||
0x8C0C0505, // 0058 GETMET R3 R2 K5
|
||||
0x88140110, // 0059 GETMBR R5 R0 K16
|
||||
0x58180008, // 005A LDCONST R6 K8
|
||||
0x7C0C0600, // 005B CALL R3 3
|
||||
0x600C000C, // 005C GETGBL R3 G12
|
||||
0x5C100400, // 005D MOVE R4 R2
|
||||
0x7C0C0200, // 005E CALL R3 1
|
||||
0x90022203, // 005F SETMBR R0 K17 R3
|
||||
0x880C0112, // 0060 GETMBR R3 R0 K18
|
||||
0x4C100000, // 0061 LDNIL R4
|
||||
0x1C0C0604, // 0062 EQ R3 R3 R4
|
||||
0x780E0016, // 0063 JMPF R3 #007B
|
||||
0x90022500, // 0064 SETMBR R0 K18 K0
|
||||
0x880C0113, // 0065 GETMBR R3 R0 K19
|
||||
0x780E0003, // 0066 JMPF R3 #006B
|
||||
0x880C0112, // 0067 GETMBR R3 R0 K18
|
||||
0x300C0708, // 0068 OR R3 R3 K8
|
||||
0x90022403, // 0069 SETMBR R0 K18 R3
|
||||
0x880C0116, // 006A GETMBR R3 R0 K22
|
||||
0x780E0002, // 006B JMPF R3 #006F
|
||||
0x880C0112, // 006C GETMBR R3 R0 K18
|
||||
0x300C0706, // 006D OR R3 R3 K6
|
||||
0x90022403, // 006E SETMBR R0 K18 R3
|
||||
0x8C0C0505, // 006F GETMET R3 R2 K5
|
||||
0x88140112, // 0070 GETMBR R5 R0 K18
|
||||
0x58180006, // 0071 LDCONST R6 K6
|
||||
0x7C0C0600, // 0072 CALL R3 3
|
||||
0x8C0C0505, // 0073 GETMET R3 R2 K5
|
||||
0x88140117, // 0074 GETMBR R5 R0 K23
|
||||
0x58180006, // 0075 LDCONST R6 K6
|
||||
0x7C0C0600, // 0076 CALL R3 3
|
||||
0x8C0C0505, // 0077 GETMET R3 R2 K5
|
||||
0x88140118, // 0078 GETMBR R5 R0 K24
|
||||
0x541AFFFE, // 0079 LDINT R6 65535
|
||||
0x2C140A06, // 007A AND R5 R5 R6
|
||||
0x58180008, // 007B LDCONST R6 K8
|
||||
0x7C0C0600, // 007C CALL R3 3
|
||||
0x8C0C0505, // 007D GETMET R3 R2 K5
|
||||
0x88140119, // 007E GETMBR R5 R0 K25
|
||||
0x58180008, // 007F LDCONST R6 K8
|
||||
0x7C0C0600, // 0080 CALL R3 3
|
||||
0x880C0115, // 0081 GETMBR R3 R0 K21
|
||||
0x780E0003, // 0082 JMPF R3 #0087
|
||||
0x5412000F, // 0068 LDINT R4 16
|
||||
0x300C0604, // 0069 OR R3 R3 R4
|
||||
0x90022403, // 006A SETMBR R0 K18 R3
|
||||
0x880C0114, // 006B GETMBR R3 R0 K20
|
||||
0x780E0003, // 006C JMPF R3 #0071
|
||||
0x880C0112, // 006D GETMBR R3 R0 K18
|
||||
0x54120003, // 006E LDINT R4 4
|
||||
0x300C0604, // 006F OR R3 R3 R4
|
||||
0x90022403, // 0070 SETMBR R0 K18 R3
|
||||
0x880C0115, // 0071 GETMBR R3 R0 K21
|
||||
0x780E0002, // 0072 JMPF R3 #0076
|
||||
0x880C0112, // 0073 GETMBR R3 R0 K18
|
||||
0x300C0708, // 0074 OR R3 R3 K8
|
||||
0x90022403, // 0075 SETMBR R0 K18 R3
|
||||
0x880C0116, // 0076 GETMBR R3 R0 K22
|
||||
0x780E0002, // 0077 JMPF R3 #007B
|
||||
0x880C0112, // 0078 GETMBR R3 R0 K18
|
||||
0x300C0706, // 0079 OR R3 R3 K6
|
||||
0x90022403, // 007A SETMBR R0 K18 R3
|
||||
0x8C0C0505, // 007B GETMET R3 R2 K5
|
||||
0x88140112, // 007C GETMBR R5 R0 K18
|
||||
0x58180006, // 007D LDCONST R6 K6
|
||||
0x7C0C0600, // 007E CALL R3 3
|
||||
0x8C0C0505, // 007F GETMET R3 R2 K5
|
||||
0x88140117, // 0080 GETMBR R5 R0 K23
|
||||
0x58180006, // 0081 LDCONST R6 K6
|
||||
0x7C0C0600, // 0082 CALL R3 3
|
||||
0x8C0C0505, // 0083 GETMET R3 R2 K5
|
||||
0x8814011A, // 0084 GETMBR R5 R0 K26
|
||||
0x541A0003, // 0085 LDINT R6 4
|
||||
0x7C0C0600, // 0086 CALL R3 3
|
||||
0x600C000C, // 0087 GETGBL R3 G12
|
||||
0x5C100400, // 0088 MOVE R4 R2
|
||||
0x7C0C0200, // 0089 CALL R3 1
|
||||
0x90023603, // 008A SETMBR R0 K27 R3
|
||||
0x78060000, // 008B JMPF R1 #008D
|
||||
0x400C0401, // 008C CONNECT R3 R2 R1
|
||||
0x8C0C011C, // 008D GETMET R3 R0 K28
|
||||
0x5C140400, // 008E MOVE R5 R2
|
||||
0x7C0C0400, // 008F CALL R3 2
|
||||
0x90023A02, // 0090 SETMBR R0 K29 R2
|
||||
0x80040400, // 0091 RET 1 R2
|
||||
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
|
||||
0x8C0C0505, // 008F GETMET R3 R2 K5
|
||||
0x8814011A, // 0090 GETMBR R5 R0 K26
|
||||
0x541A0003, // 0091 LDINT R6 4
|
||||
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
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -211,7 +219,7 @@ be_local_closure(Matter_Frame_encode_frame, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Frame_encrypt, /* name */
|
||||
be_nested_proto(
|
||||
15, /* nstack */
|
||||
23, /* nstack */
|
||||
1, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
@ -219,85 +227,92 @@ be_local_closure(Matter_Frame_encrypt, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[17]) { /* constants */
|
||||
( &(const bvalue[18]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(crypto),
|
||||
/* K1 */ be_nested_str_weak(raw),
|
||||
/* K2 */ be_nested_str_weak(session),
|
||||
/* K3 */ be_nested_str_weak(get_r2i),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(payload_idx),
|
||||
/* K6 */ be_const_int(1),
|
||||
/* K7 */ be_const_int(2147483647),
|
||||
/* K3 */ be_nested_str_weak(payload_idx),
|
||||
/* K4 */ be_nested_str_weak(get_r2i),
|
||||
/* K5 */ be_nested_str_weak(message_handler),
|
||||
/* K6 */ be_nested_str_weak(_n_bytes),
|
||||
/* K7 */ be_nested_str_weak(clear),
|
||||
/* K8 */ be_nested_str_weak(add),
|
||||
/* K9 */ be_nested_str_weak(flags),
|
||||
/* K10 */ be_nested_str_weak(message_counter),
|
||||
/* K11 */ be_nested_str_weak(is_CASE),
|
||||
/* K12 */ be_nested_str_weak(get_device_id),
|
||||
/* K13 */ be_nested_str_weak(resize),
|
||||
/* K14 */ be_nested_str_weak(AES_CCM),
|
||||
/* K15 */ be_nested_str_weak(encrypt),
|
||||
/* K16 */ be_nested_str_weak(tag),
|
||||
/* K10 */ be_const_int(1),
|
||||
/* K11 */ be_nested_str_weak(message_counter),
|
||||
/* K12 */ be_nested_str_weak(is_CASE),
|
||||
/* K13 */ be_nested_str_weak(get_device_id),
|
||||
/* K14 */ be_nested_str_weak(resize),
|
||||
/* K15 */ be_nested_str_weak(AES_CCM),
|
||||
/* K16 */ be_nested_str_weak(encrypt1),
|
||||
/* K17 */ be_const_int(0),
|
||||
}),
|
||||
be_str_weak(encrypt),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[57]) { /* code */
|
||||
( &(const binstruction[63]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x88080101, // 0001 GETMBR R2 R0 K1
|
||||
0x880C0102, // 0002 GETMBR R3 R0 K2
|
||||
0x8C100703, // 0003 GETMET R4 R3 K3
|
||||
0x7C100200, // 0004 CALL R4 1
|
||||
0x88140105, // 0005 GETMBR R5 R0 K5
|
||||
0x04140B06, // 0006 SUB R5 R5 K6
|
||||
0x40160805, // 0007 CONNECT R5 K4 R5
|
||||
0x94140405, // 0008 GETIDX R5 R2 R5
|
||||
0x88180105, // 0009 GETMBR R6 R0 K5
|
||||
0x40180D07, // 000A CONNECT R6 R6 K7
|
||||
0x94180406, // 000B GETIDX R6 R2 R6
|
||||
0x601C0015, // 000C GETGBL R7 G21
|
||||
0x7C1C0000, // 000D CALL R7 0
|
||||
0x8C200F08, // 000E GETMET R8 R7 K8
|
||||
0x88280109, // 000F GETMBR R10 R0 K9
|
||||
0x582C0006, // 0010 LDCONST R11 K6
|
||||
0x7C200600, // 0011 CALL R8 3
|
||||
0x8C200F08, // 0012 GETMET R8 R7 K8
|
||||
0x8828010A, // 0013 GETMBR R10 R0 K10
|
||||
0x542E0003, // 0014 LDINT R11 4
|
||||
0x7C200600, // 0015 CALL R8 3
|
||||
0x8C20070B, // 0016 GETMET R8 R3 K11
|
||||
0x88100103, // 0003 GETMBR R4 R0 K3
|
||||
0x5416000F, // 0004 LDINT R5 16
|
||||
0x8C180704, // 0005 GETMET R6 R3 K4
|
||||
0x7C180200, // 0006 CALL R6 1
|
||||
0x881C0105, // 0007 GETMBR R7 R0 K5
|
||||
0x881C0F06, // 0008 GETMBR R7 R7 K6
|
||||
0x8C200F07, // 0009 GETMET R8 R7 K7
|
||||
0x7C200200, // 000A CALL R8 1
|
||||
0x8C200F08, // 000B GETMET R8 R7 K8
|
||||
0x88280109, // 000C GETMBR R10 R0 K9
|
||||
0x582C000A, // 000D LDCONST R11 K10
|
||||
0x7C200600, // 000E CALL R8 3
|
||||
0x8C200F08, // 000F GETMET R8 R7 K8
|
||||
0x8828010B, // 0010 GETMBR R10 R0 K11
|
||||
0x542E0003, // 0011 LDINT R11 4
|
||||
0x7C200600, // 0012 CALL R8 3
|
||||
0x8C20070C, // 0013 GETMET R8 R3 K12
|
||||
0x7C200200, // 0014 CALL R8 1
|
||||
0x78220005, // 0015 JMPF R8 #001C
|
||||
0x8C20070D, // 0016 GETMET R8 R3 K13
|
||||
0x7C200200, // 0017 CALL R8 1
|
||||
0x78220005, // 0018 JMPF R8 #001F
|
||||
0x8C20070C, // 0019 GETMET R8 R3 K12
|
||||
0x78220002, // 0018 JMPF R8 #001C
|
||||
0x8C20070D, // 0019 GETMET R8 R3 K13
|
||||
0x7C200200, // 001A CALL R8 1
|
||||
0x78220002, // 001B JMPF R8 #001F
|
||||
0x8C20070C, // 001C GETMET R8 R3 K12
|
||||
0x7C200200, // 001D CALL R8 1
|
||||
0x40200E08, // 001E CONNECT R8 R7 R8
|
||||
0x8C200F0D, // 001F GETMET R8 R7 K13
|
||||
0x542A000C, // 0020 LDINT R10 13
|
||||
0x7C200400, // 0021 CALL R8 2
|
||||
0x8C20030E, // 0022 GETMET R8 R1 K14
|
||||
0x5C280800, // 0023 MOVE R10 R4
|
||||
0x5C2C0E00, // 0024 MOVE R11 R7
|
||||
0x5C300A00, // 0025 MOVE R12 R5
|
||||
0x6034000C, // 0026 GETGBL R13 G12
|
||||
0x5C380C00, // 0027 MOVE R14 R6
|
||||
0x7C340200, // 0028 CALL R13 1
|
||||
0x543A000F, // 0029 LDINT R14 16
|
||||
0x7C200C00, // 002A CALL R8 6
|
||||
0x8C24110F, // 002B GETMET R9 R8 K15
|
||||
0x5C2C0C00, // 002C MOVE R11 R6
|
||||
0x7C240400, // 002D CALL R9 2
|
||||
0x8C281110, // 002E GETMET R10 R8 K16
|
||||
0x7C280200, // 002F CALL R10 1
|
||||
0x882C0101, // 0030 GETMBR R11 R0 K1
|
||||
0x8C2C170D, // 0031 GETMET R11 R11 K13
|
||||
0x88340105, // 0032 GETMBR R13 R0 K5
|
||||
0x7C2C0400, // 0033 CALL R11 2
|
||||
0x882C0101, // 0034 GETMBR R11 R0 K1
|
||||
0x402C1609, // 0035 CONNECT R11 R11 R9
|
||||
0x882C0101, // 0036 GETMBR R11 R0 K1
|
||||
0x402C160A, // 0037 CONNECT R11 R11 R10
|
||||
0x80000000, // 0038 RET 0
|
||||
0x40200E08, // 001B CONNECT R8 R7 R8
|
||||
0x8C200F0E, // 001C GETMET R8 R7 K14
|
||||
0x542A000C, // 001D LDINT R10 13
|
||||
0x7C200400, // 001E CALL R8 2
|
||||
0x8C20050E, // 001F GETMET R8 R2 K14
|
||||
0x6028000C, // 0020 GETGBL R10 G12
|
||||
0x5C2C0400, // 0021 MOVE R11 R2
|
||||
0x7C280200, // 0022 CALL R10 1
|
||||
0x00281405, // 0023 ADD R10 R10 R5
|
||||
0x7C200400, // 0024 CALL R8 2
|
||||
0x8820030F, // 0025 GETMBR R8 R1 K15
|
||||
0x8C201110, // 0026 GETMET R8 R8 K16
|
||||
0x5C280C00, // 0027 MOVE R10 R6
|
||||
0x5C2C0E00, // 0028 MOVE R11 R7
|
||||
0x58300011, // 0029 LDCONST R12 K17
|
||||
0x6034000C, // 002A GETGBL R13 G12
|
||||
0x5C380E00, // 002B MOVE R14 R7
|
||||
0x7C340200, // 002C CALL R13 1
|
||||
0x5C380400, // 002D MOVE R14 R2
|
||||
0x583C0011, // 002E LDCONST R15 K17
|
||||
0x5C400800, // 002F MOVE R16 R4
|
||||
0x5C440400, // 0030 MOVE R17 R2
|
||||
0x5C480800, // 0031 MOVE R18 R4
|
||||
0x604C000C, // 0032 GETGBL R19 G12
|
||||
0x5C500400, // 0033 MOVE R20 R2
|
||||
0x7C4C0200, // 0034 CALL R19 1
|
||||
0x044C2604, // 0035 SUB R19 R19 R4
|
||||
0x044C2605, // 0036 SUB R19 R19 R5
|
||||
0x5C500400, // 0037 MOVE R20 R2
|
||||
0x6054000C, // 0038 GETGBL R21 G12
|
||||
0x5C580400, // 0039 MOVE R22 R2
|
||||
0x7C540200, // 003A CALL R21 1
|
||||
0x04542A05, // 003B SUB R21 R21 R5
|
||||
0x5C580A00, // 003C MOVE R22 R5
|
||||
0x7C201C00, // 003D CALL R8 14
|
||||
0x80000000, // 003E RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -1011,7 +1026,7 @@ be_local_closure(Matter_Frame_decode_payload, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Frame_decrypt, /* name */
|
||||
be_nested_proto(
|
||||
16, /* nstack */
|
||||
23, /* nstack */
|
||||
1, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
@ -1019,11 +1034,11 @@ be_local_closure(Matter_Frame_decrypt, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[27]) { /* constants */
|
||||
( &(const bvalue[30]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(crypto),
|
||||
/* K1 */ be_nested_str_weak(session),
|
||||
/* K2 */ be_nested_str_weak(raw),
|
||||
/* K3 */ be_const_int(2147483647),
|
||||
/* K3 */ be_nested_str_weak(payload_idx),
|
||||
/* K4 */ be_nested_str_weak(get_i2r),
|
||||
/* K5 */ be_nested_str_weak(sec_p),
|
||||
/* K6 */ be_nested_str_weak(tasmota),
|
||||
@ -1031,131 +1046,145 @@ be_local_closure(Matter_Frame_decrypt, /* name */
|
||||
/* K8 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X20Compute_X20Privacy_X20TODO),
|
||||
/* K9 */ be_const_int(2),
|
||||
/* K10 */ be_nested_str_weak(get_i2r_privacy),
|
||||
/* K11 */ be_nested_str_weak(add),
|
||||
/* K12 */ be_nested_str_weak(local_session_id),
|
||||
/* K13 */ be_nested_str_weak(payload_idx),
|
||||
/* K11 */ be_const_int(2147483647),
|
||||
/* K12 */ be_nested_str_weak(add),
|
||||
/* K13 */ be_nested_str_weak(local_session_id),
|
||||
/* K14 */ be_const_int(1),
|
||||
/* K15 */ be_nested_str_weak(AES_CTR),
|
||||
/* K16 */ be_nested_str_weak(decrypt),
|
||||
/* K17 */ be_const_int(0),
|
||||
/* K18 */ be_const_int(3),
|
||||
/* K19 */ be_nested_str_weak(flags),
|
||||
/* K20 */ be_nested_str_weak(message_counter),
|
||||
/* K21 */ be_nested_str_weak(source_node_id),
|
||||
/* K22 */ be_nested_str_weak(peer_node_id),
|
||||
/* K23 */ be_nested_str_weak(resize),
|
||||
/* K24 */ be_nested_str_weak(AES_CCM),
|
||||
/* K25 */ be_nested_str_weak(tag),
|
||||
/* K26 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC),
|
||||
/* K19 */ be_nested_str_weak(message_handler),
|
||||
/* K20 */ be_nested_str_weak(_n_bytes),
|
||||
/* K21 */ be_nested_str_weak(clear),
|
||||
/* K22 */ be_nested_str_weak(flags),
|
||||
/* K23 */ be_nested_str_weak(message_counter),
|
||||
/* K24 */ be_nested_str_weak(source_node_id),
|
||||
/* K25 */ be_nested_str_weak(peer_node_id),
|
||||
/* K26 */ be_nested_str_weak(resize),
|
||||
/* K27 */ be_nested_str_weak(AES_CCM),
|
||||
/* K28 */ be_nested_str_weak(decrypt1),
|
||||
/* K29 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC),
|
||||
}),
|
||||
be_str_weak(decrypt),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[105]) { /* code */
|
||||
( &(const binstruction[116]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x88080101, // 0001 GETMBR R2 R0 K1
|
||||
0x880C0102, // 0002 GETMBR R3 R0 K2
|
||||
0x5411FFEF, // 0003 LDINT R4 -16
|
||||
0x40100903, // 0004 CONNECT R4 R4 K3
|
||||
0x94100604, // 0005 GETIDX R4 R3 R4
|
||||
0x8C140504, // 0006 GETMET R5 R2 K4
|
||||
0x7C140200, // 0007 CALL R5 1
|
||||
0x88180105, // 0008 GETMBR R6 R0 K5
|
||||
0x781A0029, // 0009 JMPF R6 #0034
|
||||
0xB81A0C00, // 000A GETNGBL R6 K6
|
||||
0x8C180D07, // 000B GETMET R6 R6 K7
|
||||
0x58200008, // 000C LDCONST R8 K8
|
||||
0x58240009, // 000D LDCONST R9 K9
|
||||
0x7C180600, // 000E CALL R6 3
|
||||
0x8C18050A, // 000F GETMET R6 R2 K10
|
||||
0x7C180200, // 0010 CALL R6 1
|
||||
0x601C0015, // 0011 GETGBL R7 G21
|
||||
0x7C1C0000, // 0012 CALL R7 0
|
||||
0x8C1C0F0B, // 0013 GETMET R7 R7 K11
|
||||
0x8824010C, // 0014 GETMBR R9 R0 K12
|
||||
0x5429FFFD, // 0015 LDINT R10 -2
|
||||
0x7C1C0600, // 0016 CALL R7 3
|
||||
0x54220004, // 0017 LDINT R8 5
|
||||
0x5426000E, // 0018 LDINT R9 15
|
||||
0x40201009, // 0019 CONNECT R8 R8 R9
|
||||
0x94200808, // 001A GETIDX R8 R4 R8
|
||||
0x001C0E08, // 001B ADD R7 R7 R8
|
||||
0x54220003, // 001C LDINT R8 4
|
||||
0x8824010D, // 001D GETMBR R9 R0 K13
|
||||
0x0424130E, // 001E SUB R9 R9 K14
|
||||
0x40201009, // 001F CONNECT R8 R8 R9
|
||||
0x88240102, // 0020 GETMBR R9 R0 K2
|
||||
0x94201208, // 0021 GETIDX R8 R9 R8
|
||||
0x8C28030F, // 0022 GETMET R10 R1 K15
|
||||
0x5C300C00, // 0023 MOVE R12 R6
|
||||
0x7C280400, // 0024 CALL R10 2
|
||||
0x8C281510, // 0025 GETMET R10 R10 K16
|
||||
0x5C301000, // 0026 MOVE R12 R8
|
||||
0x5C340E00, // 0027 MOVE R13 R7
|
||||
0x58380009, // 0028 LDCONST R14 K9
|
||||
0x7C280800, // 0029 CALL R10 4
|
||||
0x5C241400, // 002A MOVE R9 R10
|
||||
0x402A2312, // 002B CONNECT R10 K17 K18
|
||||
0x882C0102, // 002C GETMBR R11 R0 K2
|
||||
0x9428160A, // 002D GETIDX R10 R11 R10
|
||||
0x00281409, // 002E ADD R10 R10 R9
|
||||
0x882C010D, // 002F GETMBR R11 R0 K13
|
||||
0x402C1703, // 0030 CONNECT R11 R11 K3
|
||||
0x942C100B, // 0031 GETIDX R11 R8 R11
|
||||
0x0028140B, // 0032 ADD R10 R10 R11
|
||||
0x9002040A, // 0033 SETMBR R0 K2 R10
|
||||
0x8818010D, // 0034 GETMBR R6 R0 K13
|
||||
0x04180D0E, // 0035 SUB R6 R6 K14
|
||||
0x401A2206, // 0036 CONNECT R6 K17 R6
|
||||
0x94180606, // 0037 GETIDX R6 R3 R6
|
||||
0x881C010D, // 0038 GETMBR R7 R0 K13
|
||||
0x5421FFEE, // 0039 LDINT R8 -17
|
||||
0x401C0E08, // 003A CONNECT R7 R7 R8
|
||||
0x941C0607, // 003B GETIDX R7 R3 R7
|
||||
0x60200015, // 003C GETGBL R8 G21
|
||||
0x7C200000, // 003D CALL R8 0
|
||||
0x8C24110B, // 003E GETMET R9 R8 K11
|
||||
0x882C0113, // 003F GETMBR R11 R0 K19
|
||||
0x5830000E, // 0040 LDCONST R12 K14
|
||||
0x7C240600, // 0041 CALL R9 3
|
||||
0x8C24110B, // 0042 GETMET R9 R8 K11
|
||||
0x882C0114, // 0043 GETMBR R11 R0 K20
|
||||
0x54320003, // 0044 LDINT R12 4
|
||||
0x7C240600, // 0045 CALL R9 3
|
||||
0x88240115, // 0046 GETMBR R9 R0 K21
|
||||
0x78260001, // 0047 JMPF R9 #004A
|
||||
0x40241103, // 0048 CONNECT R9 R8 K3
|
||||
0x70020006, // 0049 JMP #0051
|
||||
0x88240516, // 004A GETMBR R9 R2 K22
|
||||
0x78260001, // 004B JMPF R9 #004E
|
||||
0x88240516, // 004C GETMBR R9 R2 K22
|
||||
0x40241009, // 004D CONNECT R9 R8 R9
|
||||
0x8C241117, // 004E GETMET R9 R8 K23
|
||||
0x542E000C, // 004F LDINT R11 13
|
||||
0x7C240400, // 0050 CALL R9 2
|
||||
0x8C240318, // 0051 GETMET R9 R1 K24
|
||||
0x5C2C0A00, // 0052 MOVE R11 R5
|
||||
0x5C301000, // 0053 MOVE R12 R8
|
||||
0x5C340C00, // 0054 MOVE R13 R6
|
||||
0x6038000C, // 0055 GETGBL R14 G12
|
||||
0x5C3C0E00, // 0056 MOVE R15 R7
|
||||
0x7C380200, // 0057 CALL R14 1
|
||||
0x543E000F, // 0058 LDINT R15 16
|
||||
0x7C240C00, // 0059 CALL R9 6
|
||||
0x8C281310, // 005A GETMET R10 R9 K16
|
||||
0x5C300E00, // 005B MOVE R12 R7
|
||||
0x7C280400, // 005C CALL R10 2
|
||||
0x8C2C1319, // 005D GETMET R11 R9 K25
|
||||
0x7C2C0200, // 005E CALL R11 1
|
||||
0x20301604, // 005F NE R12 R11 R4
|
||||
0x78320006, // 0060 JMPF R12 #0068
|
||||
0xB8320C00, // 0061 GETNGBL R12 K6
|
||||
0x8C301907, // 0062 GETMET R12 R12 K7
|
||||
0x5838001A, // 0063 LDCONST R14 K26
|
||||
0x583C0012, // 0064 LDCONST R15 K18
|
||||
0x7C300600, // 0065 CALL R12 3
|
||||
0x4C300000, // 0066 LDNIL R12
|
||||
0x80041800, // 0067 RET 1 R12
|
||||
0x80041400, // 0068 RET 1 R10
|
||||
0x88100103, // 0003 GETMBR R4 R0 K3
|
||||
0x5416000F, // 0004 LDINT R5 16
|
||||
0x8C180504, // 0005 GETMET R6 R2 K4
|
||||
0x7C180200, // 0006 CALL R6 1
|
||||
0x881C0105, // 0007 GETMBR R7 R0 K5
|
||||
0x781E002C, // 0008 JMPF R7 #0036
|
||||
0xB81E0C00, // 0009 GETNGBL R7 K6
|
||||
0x8C1C0F07, // 000A GETMET R7 R7 K7
|
||||
0x58240008, // 000B LDCONST R9 K8
|
||||
0x58280009, // 000C LDCONST R10 K9
|
||||
0x7C1C0600, // 000D CALL R7 3
|
||||
0x8C1C050A, // 000E GETMET R7 R2 K10
|
||||
0x7C1C0200, // 000F CALL R7 1
|
||||
0x5421FFEF, // 0010 LDINT R8 -16
|
||||
0x4020110B, // 0011 CONNECT R8 R8 K11
|
||||
0x94200608, // 0012 GETIDX R8 R3 R8
|
||||
0x60240015, // 0013 GETGBL R9 G21
|
||||
0x7C240000, // 0014 CALL R9 0
|
||||
0x8C24130C, // 0015 GETMET R9 R9 K12
|
||||
0x882C010D, // 0016 GETMBR R11 R0 K13
|
||||
0x5431FFFD, // 0017 LDINT R12 -2
|
||||
0x7C240600, // 0018 CALL R9 3
|
||||
0x542A0004, // 0019 LDINT R10 5
|
||||
0x542E000E, // 001A LDINT R11 15
|
||||
0x4028140B, // 001B CONNECT R10 R10 R11
|
||||
0x9428100A, // 001C GETIDX R10 R8 R10
|
||||
0x0024120A, // 001D ADD R9 R9 R10
|
||||
0x542A0003, // 001E LDINT R10 4
|
||||
0x882C0103, // 001F GETMBR R11 R0 K3
|
||||
0x042C170E, // 0020 SUB R11 R11 K14
|
||||
0x4028140B, // 0021 CONNECT R10 R10 R11
|
||||
0x882C0102, // 0022 GETMBR R11 R0 K2
|
||||
0x9428160A, // 0023 GETIDX R10 R11 R10
|
||||
0x8C30030F, // 0024 GETMET R12 R1 K15
|
||||
0x5C380E00, // 0025 MOVE R14 R7
|
||||
0x7C300400, // 0026 CALL R12 2
|
||||
0x8C301910, // 0027 GETMET R12 R12 K16
|
||||
0x5C381400, // 0028 MOVE R14 R10
|
||||
0x5C3C1200, // 0029 MOVE R15 R9
|
||||
0x58400009, // 002A LDCONST R16 K9
|
||||
0x7C300800, // 002B CALL R12 4
|
||||
0x5C2C1800, // 002C MOVE R11 R12
|
||||
0x40322312, // 002D CONNECT R12 K17 K18
|
||||
0x88340102, // 002E GETMBR R13 R0 K2
|
||||
0x94301A0C, // 002F GETIDX R12 R13 R12
|
||||
0x0030180B, // 0030 ADD R12 R12 R11
|
||||
0x88340103, // 0031 GETMBR R13 R0 K3
|
||||
0x40341B0B, // 0032 CONNECT R13 R13 K11
|
||||
0x9434140D, // 0033 GETIDX R13 R10 R13
|
||||
0x0030180D, // 0034 ADD R12 R12 R13
|
||||
0x9002040C, // 0035 SETMBR R0 K2 R12
|
||||
0x881C0113, // 0036 GETMBR R7 R0 K19
|
||||
0x881C0F14, // 0037 GETMBR R7 R7 K20
|
||||
0x8C200F15, // 0038 GETMET R8 R7 K21
|
||||
0x7C200200, // 0039 CALL R8 1
|
||||
0x8C200F0C, // 003A GETMET R8 R7 K12
|
||||
0x88280116, // 003B GETMBR R10 R0 K22
|
||||
0x582C000E, // 003C LDCONST R11 K14
|
||||
0x7C200600, // 003D CALL R8 3
|
||||
0x8C200F0C, // 003E GETMET R8 R7 K12
|
||||
0x88280117, // 003F GETMBR R10 R0 K23
|
||||
0x542E0003, // 0040 LDINT R11 4
|
||||
0x7C200600, // 0041 CALL R8 3
|
||||
0x88200118, // 0042 GETMBR R8 R0 K24
|
||||
0x78220001, // 0043 JMPF R8 #0046
|
||||
0x40200F0B, // 0044 CONNECT R8 R7 K11
|
||||
0x70020006, // 0045 JMP #004D
|
||||
0x88200519, // 0046 GETMBR R8 R2 K25
|
||||
0x78220001, // 0047 JMPF R8 #004A
|
||||
0x88200519, // 0048 GETMBR R8 R2 K25
|
||||
0x40200E08, // 0049 CONNECT R8 R7 R8
|
||||
0x8C200F1A, // 004A GETMET R8 R7 K26
|
||||
0x542A000C, // 004B LDINT R10 13
|
||||
0x7C200400, // 004C CALL R8 2
|
||||
0x8820031B, // 004D GETMBR R8 R1 K27
|
||||
0x8C20111C, // 004E GETMET R8 R8 K28
|
||||
0x5C280C00, // 004F MOVE R10 R6
|
||||
0x5C2C0E00, // 0050 MOVE R11 R7
|
||||
0x58300011, // 0051 LDCONST R12 K17
|
||||
0x6034000C, // 0052 GETGBL R13 G12
|
||||
0x5C380E00, // 0053 MOVE R14 R7
|
||||
0x7C340200, // 0054 CALL R13 1
|
||||
0x5C380600, // 0055 MOVE R14 R3
|
||||
0x583C0011, // 0056 LDCONST R15 K17
|
||||
0x5C400800, // 0057 MOVE R16 R4
|
||||
0x5C440600, // 0058 MOVE R17 R3
|
||||
0x5C480800, // 0059 MOVE R18 R4
|
||||
0x604C000C, // 005A GETGBL R19 G12
|
||||
0x5C500600, // 005B MOVE R20 R3
|
||||
0x7C4C0200, // 005C CALL R19 1
|
||||
0x044C2604, // 005D SUB R19 R19 R4
|
||||
0x044C2605, // 005E SUB R19 R19 R5
|
||||
0x5C500600, // 005F MOVE R20 R3
|
||||
0x6054000C, // 0060 GETGBL R21 G12
|
||||
0x5C580600, // 0061 MOVE R22 R3
|
||||
0x7C540200, // 0062 CALL R21 1
|
||||
0x04542A05, // 0063 SUB R21 R21 R5
|
||||
0x5C580A00, // 0064 MOVE R22 R5
|
||||
0x7C201C00, // 0065 CALL R8 14
|
||||
0x78220006, // 0066 JMPF R8 #006E
|
||||
0x8C24071A, // 0067 GETMET R9 R3 K26
|
||||
0x602C000C, // 0068 GETGBL R11 G12
|
||||
0x5C300600, // 0069 MOVE R12 R3
|
||||
0x7C2C0200, // 006A CALL R11 1
|
||||
0x042C1605, // 006B SUB R11 R11 R5
|
||||
0x7C240400, // 006C CALL R9 2
|
||||
0x70020004, // 006D JMP #0073
|
||||
0xB8260C00, // 006E GETNGBL R9 K6
|
||||
0x8C241307, // 006F GETMET R9 R9 K7
|
||||
0x582C001D, // 0070 LDCONST R11 K29
|
||||
0x58300012, // 0071 LDCONST R12 K18
|
||||
0x7C240600, // 0072 CALL R9 3
|
||||
0x80041000, // 0073 RET 1 R8
|
||||
})
|
||||
)
|
||||
);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -6,46 +6,6 @@
|
||||
|
||||
extern const bclass be_class_Matter_Path;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: clear
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Path_clear, /* 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[ 7]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(endpoint),
|
||||
/* K1 */ be_nested_str_weak(cluster),
|
||||
/* K2 */ be_nested_str_weak(attribute),
|
||||
/* K3 */ be_nested_str_weak(command),
|
||||
/* K4 */ be_nested_str_weak(status),
|
||||
/* K5 */ be_nested_str_weak(log),
|
||||
/* K6 */ be_nested_str_weak(msh),
|
||||
}),
|
||||
be_str_weak(clear),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 9]) { /* code */
|
||||
0x4C040000, // 0000 LDNIL R1
|
||||
0x90020001, // 0001 SETMBR R0 K0 R1
|
||||
0x90020201, // 0002 SETMBR R0 K1 R1
|
||||
0x90020401, // 0003 SETMBR R0 K2 R1
|
||||
0x90020601, // 0004 SETMBR R0 K3 R1
|
||||
0x90020801, // 0005 SETMBR R0 K4 R1
|
||||
0x90020A01, // 0006 SETMBR R0 K5 R1
|
||||
0x90020C01, // 0007 SETMBR R0 K6 R1
|
||||
0x80000000, // 0008 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: tostring
|
||||
********************************************************************/
|
||||
@ -157,23 +117,66 @@ be_local_closure(Matter_Path_tostring, /* name */
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: reset
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Path_reset, /* 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[ 8]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(endpoint),
|
||||
/* K1 */ be_nested_str_weak(cluster),
|
||||
/* K2 */ be_nested_str_weak(attribute),
|
||||
/* K3 */ be_nested_str_weak(fabric_filtered),
|
||||
/* K4 */ be_nested_str_weak(command),
|
||||
/* K5 */ be_nested_str_weak(status),
|
||||
/* K6 */ be_nested_str_weak(log),
|
||||
/* K7 */ be_nested_str_weak(msg),
|
||||
}),
|
||||
be_str_weak(reset),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[10]) { /* code */
|
||||
0x4C040000, // 0000 LDNIL R1
|
||||
0x90020001, // 0001 SETMBR R0 K0 R1
|
||||
0x90020201, // 0002 SETMBR R0 K1 R1
|
||||
0x90020401, // 0003 SETMBR R0 K2 R1
|
||||
0x90020601, // 0004 SETMBR R0 K3 R1
|
||||
0x90020801, // 0005 SETMBR R0 K4 R1
|
||||
0x90020A01, // 0006 SETMBR R0 K5 R1
|
||||
0x90020C01, // 0007 SETMBR R0 K6 R1
|
||||
0x90020E01, // 0008 SETMBR R0 K7 R1
|
||||
0x80000000, // 0009 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: Matter_Path
|
||||
********************************************************************/
|
||||
be_local_class(Matter_Path,
|
||||
7,
|
||||
8,
|
||||
NULL,
|
||||
be_nested_map(9,
|
||||
be_nested_map(10,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(log, -1), be_const_var(5) },
|
||||
{ be_const_key_weak(cluster, -1), be_const_var(1) },
|
||||
{ be_const_key_weak(command, -1), be_const_var(3) },
|
||||
{ be_const_key_weak(attribute, -1), be_const_var(2) },
|
||||
{ be_const_key_weak(log, 0), be_const_var(6) },
|
||||
{ be_const_key_weak(fabric_filtered, 6), be_const_var(3) },
|
||||
{ be_const_key_weak(command, -1), be_const_var(4) },
|
||||
{ be_const_key_weak(msg, -1), be_const_var(7) },
|
||||
{ be_const_key_weak(tostring, -1), be_const_closure(Matter_Path_tostring_closure) },
|
||||
{ be_const_key_weak(status, 1), be_const_var(4) },
|
||||
{ be_const_key_weak(attribute, 6), be_const_var(2) },
|
||||
{ be_const_key_weak(clear, -1), be_const_closure(Matter_Path_clear_closure) },
|
||||
{ be_const_key_weak(reset, -1), be_const_closure(Matter_Path_reset_closure) },
|
||||
{ be_const_key_weak(cluster, -1), be_const_var(1) },
|
||||
{ be_const_key_weak(endpoint, 3), be_const_var(0) },
|
||||
{ be_const_key_weak(msg, -1), be_const_var(6) },
|
||||
{ be_const_key_weak(status, -1), be_const_var(5) },
|
||||
})),
|
||||
be_str_weak(Matter_Path)
|
||||
);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Aggregator;
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Aggregator_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
15, /* nstack */
|
||||
3, /* argc */
|
||||
16, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -35,60 +35,62 @@ be_local_closure(Matter_Plugin_Aggregator_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[53]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A001C, // 0004 LDINT R6 29
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0024, // 0006 JMPF R6 #002C
|
||||
0x1C180B04, // 0007 EQ R6 R5 K4
|
||||
0x781A0019, // 0008 JMPF R6 #0023
|
||||
0x8C180705, // 0009 GETMET R6 R3 K5
|
||||
0x7C180200, // 000A CALL R6 1
|
||||
0x881C0106, // 000B GETMBR R7 R0 K6
|
||||
0x8C1C0F07, // 000C GETMET R7 R7 K7
|
||||
0x50240200, // 000D LDBOOL R9 1 0
|
||||
0x7C1C0400, // 000E CALL R7 2
|
||||
0x60200010, // 000F GETGBL R8 G16
|
||||
0x5C240E00, // 0010 MOVE R9 R7
|
||||
0x7C200200, // 0011 CALL R8 1
|
||||
( &(const binstruction[55]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E001C, // 0004 LDINT R7 29
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0025, // 0006 JMPF R7 #002D
|
||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||
0x781E0019, // 0008 JMPF R7 #0023
|
||||
0x8C1C0905, // 0009 GETMET R7 R4 K5
|
||||
0x7C1C0200, // 000A CALL R7 1
|
||||
0x88200106, // 000B GETMBR R8 R0 K6
|
||||
0x8C201107, // 000C GETMET R8 R8 K7
|
||||
0x50280200, // 000D LDBOOL R10 1 0
|
||||
0x7C200400, // 000E CALL R8 2
|
||||
0x60240010, // 000F GETGBL R9 G16
|
||||
0x5C281000, // 0010 MOVE R10 R8
|
||||
0x7C240200, // 0011 CALL R9 1
|
||||
0xA802000A, // 0012 EXBLK 0 #001E
|
||||
0x5C241000, // 0013 MOVE R9 R8
|
||||
0x7C240000, // 0014 CALL R9 0
|
||||
0x542AFEFF, // 0015 LDINT R10 65280
|
||||
0x1428120A, // 0016 LT R10 R9 R10
|
||||
0x782A0004, // 0017 JMPF R10 #001D
|
||||
0x8C280D08, // 0018 GETMET R10 R6 K8
|
||||
0x4C300000, // 0019 LDNIL R12
|
||||
0x88340709, // 001A GETMBR R13 R3 K9
|
||||
0x5C381200, // 001B MOVE R14 R9
|
||||
0x7C280800, // 001C CALL R10 4
|
||||
0x5C281200, // 0013 MOVE R10 R9
|
||||
0x7C280000, // 0014 CALL R10 0
|
||||
0x542EFEFF, // 0015 LDINT R11 65280
|
||||
0x142C140B, // 0016 LT R11 R10 R11
|
||||
0x782E0004, // 0017 JMPF R11 #001D
|
||||
0x8C2C0F08, // 0018 GETMET R11 R7 K8
|
||||
0x4C340000, // 0019 LDNIL R13
|
||||
0x88380909, // 001A GETMBR R14 R4 K9
|
||||
0x5C3C1400, // 001B MOVE R15 R10
|
||||
0x7C2C0800, // 001C CALL R11 4
|
||||
0x7001FFF4, // 001D JMP #0013
|
||||
0x5820000A, // 001E LDCONST R8 K10
|
||||
0xAC200200, // 001F CATCH R8 1 0
|
||||
0x5824000A, // 001E LDCONST R9 K10
|
||||
0xAC240200, // 001F CATCH R9 1 0
|
||||
0xB0080000, // 0020 RAISE 2 R0 R0
|
||||
0x80040C00, // 0021 RET 1 R6
|
||||
0x70020007, // 0022 JMP #002B
|
||||
0x60180003, // 0023 GETGBL R6 G3
|
||||
0x5C1C0000, // 0024 MOVE R7 R0
|
||||
0x7C180200, // 0025 CALL R6 1
|
||||
0x8C180D0B, // 0026 GETMET R6 R6 K11
|
||||
0x5C200200, // 0027 MOVE R8 R1
|
||||
0x5C240400, // 0028 MOVE R9 R2
|
||||
0x7C180600, // 0029 CALL R6 3
|
||||
0x80040C00, // 002A RET 1 R6
|
||||
0x70020007, // 002B JMP #0034
|
||||
0x60180003, // 002C GETGBL R6 G3
|
||||
0x5C1C0000, // 002D MOVE R7 R0
|
||||
0x7C180200, // 002E CALL R6 1
|
||||
0x8C180D0B, // 002F GETMET R6 R6 K11
|
||||
0x5C200200, // 0030 MOVE R8 R1
|
||||
0x5C240400, // 0031 MOVE R9 R2
|
||||
0x7C180600, // 0032 CALL R6 3
|
||||
0x80040C00, // 0033 RET 1 R6
|
||||
0x80000000, // 0034 RET 0
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020008, // 0022 JMP #002C
|
||||
0x601C0003, // 0023 GETGBL R7 G3
|
||||
0x5C200000, // 0024 MOVE R8 R0
|
||||
0x7C1C0200, // 0025 CALL R7 1
|
||||
0x8C1C0F0B, // 0026 GETMET R7 R7 K11
|
||||
0x5C240200, // 0027 MOVE R9 R1
|
||||
0x5C280400, // 0028 MOVE R10 R2
|
||||
0x5C2C0600, // 0029 MOVE R11 R3
|
||||
0x7C1C0800, // 002A CALL R7 4
|
||||
0x80040E00, // 002B RET 1 R7
|
||||
0x70020008, // 002C JMP #0036
|
||||
0x601C0003, // 002D GETGBL R7 G3
|
||||
0x5C200000, // 002E MOVE R8 R0
|
||||
0x7C1C0200, // 002F CALL R7 1
|
||||
0x8C1C0F0B, // 0030 GETMET R7 R7 K11
|
||||
0x5C240200, // 0031 MOVE R9 R1
|
||||
0x5C280400, // 0032 MOVE R10 R2
|
||||
0x5C2C0600, // 0033 MOVE R11 R3
|
||||
0x7C1C0800, // 0034 CALL R7 4
|
||||
0x80040E00, // 0035 RET 1 R7
|
||||
0x80000000, // 0036 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -567,8 +567,8 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_web_values_prefix, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
13, /* nstack */
|
||||
3, /* argc */
|
||||
14, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -586,7 +586,7 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
|
||||
/* K7 */ be_nested_str_weak(get_info),
|
||||
/* K8 */ be_nested_str_weak(find),
|
||||
/* K9 */ be_nested_str_weak(name),
|
||||
/* K10 */ be_nested_str_weak(create_TLV),
|
||||
/* K10 */ be_nested_str_weak(set),
|
||||
/* K11 */ be_nested_str_weak(UTF1),
|
||||
/* K12 */ be_nested_str_weak(NULL),
|
||||
/* K13 */ be_nested_str_weak(version),
|
||||
@ -600,120 +600,122 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[113]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0038, // 0004 LDINT R6 57
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0060, // 0006 JMPF R6 #0068
|
||||
0xA41A0800, // 0007 IMPORT R6 K4
|
||||
0x1C1C0B05, // 0008 EQ R7 R5 K5
|
||||
0x781E0012, // 0009 JMPF R7 #001D
|
||||
0x881C0106, // 000A GETMBR R7 R0 K6
|
||||
0x8C1C0F07, // 000B GETMET R7 R7 K7
|
||||
0x7C1C0200, // 000C CALL R7 1
|
||||
0x8C1C0F08, // 000D GETMET R7 R7 K8
|
||||
0x58240009, // 000E LDCONST R9 K9
|
||||
0x7C1C0400, // 000F CALL R7 2
|
||||
0x781E0005, // 0010 JMPF R7 #0017
|
||||
0x8C20070A, // 0011 GETMET R8 R3 K10
|
||||
0x8828070B, // 0012 GETMBR R10 R3 K11
|
||||
0x5C2C0E00, // 0013 MOVE R11 R7
|
||||
0x7C200600, // 0014 CALL R8 3
|
||||
0x80041000, // 0015 RET 1 R8
|
||||
( &(const binstruction[115]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0038, // 0004 LDINT R7 57
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0061, // 0006 JMPF R7 #0069
|
||||
0xA41E0800, // 0007 IMPORT R7 K4
|
||||
0x1C200D05, // 0008 EQ R8 R6 K5
|
||||
0x78220012, // 0009 JMPF R8 #001D
|
||||
0x88200106, // 000A GETMBR R8 R0 K6
|
||||
0x8C201107, // 000B GETMET R8 R8 K7
|
||||
0x7C200200, // 000C CALL R8 1
|
||||
0x8C201108, // 000D GETMET R8 R8 K8
|
||||
0x58280009, // 000E LDCONST R10 K9
|
||||
0x7C200400, // 000F CALL R8 2
|
||||
0x78220005, // 0010 JMPF R8 #0017
|
||||
0x8C24070A, // 0011 GETMET R9 R3 K10
|
||||
0x882C090B, // 0012 GETMBR R11 R4 K11
|
||||
0x5C301000, // 0013 MOVE R12 R8
|
||||
0x7C240600, // 0014 CALL R9 3
|
||||
0x80041200, // 0015 RET 1 R9
|
||||
0x70020004, // 0016 JMP #001C
|
||||
0x8C20070A, // 0017 GETMET R8 R3 K10
|
||||
0x8828070C, // 0018 GETMBR R10 R3 K12
|
||||
0x4C2C0000, // 0019 LDNIL R11
|
||||
0x7C200600, // 001A CALL R8 3
|
||||
0x80041000, // 001B RET 1 R8
|
||||
0x70020049, // 001C JMP #0067
|
||||
0x541E0009, // 001D LDINT R7 10
|
||||
0x1C1C0A07, // 001E EQ R7 R5 R7
|
||||
0x781E001B, // 001F JMPF R7 #003C
|
||||
0x881C0106, // 0020 GETMBR R7 R0 K6
|
||||
0x8C1C0F07, // 0021 GETMET R7 R7 K7
|
||||
0x7C1C0200, // 0022 CALL R7 1
|
||||
0x8C1C0F08, // 0023 GETMET R7 R7 K8
|
||||
0x5824000D, // 0024 LDCONST R9 K13
|
||||
0x7C1C0400, // 0025 CALL R7 2
|
||||
0x781E000E, // 0026 JMPF R7 #0036
|
||||
0x8C200D08, // 0027 GETMET R8 R6 K8
|
||||
0x5C280E00, // 0028 MOVE R10 R7
|
||||
0x582C000E, // 0029 LDCONST R11 K14
|
||||
0x7C200600, // 002A CALL R8 3
|
||||
0x2424110F, // 002B GT R9 R8 K15
|
||||
0x78260002, // 002C JMPF R9 #0030
|
||||
0x04241110, // 002D SUB R9 R8 K16
|
||||
0x40261E09, // 002E CONNECT R9 K15 R9
|
||||
0x941C0E09, // 002F GETIDX R7 R7 R9
|
||||
0x8C24070A, // 0030 GETMET R9 R3 K10
|
||||
0x882C070B, // 0031 GETMBR R11 R3 K11
|
||||
0x5C300E00, // 0032 MOVE R12 R7
|
||||
0x7C240600, // 0033 CALL R9 3
|
||||
0x80041200, // 0034 RET 1 R9
|
||||
0x8C24070A, // 0017 GETMET R9 R3 K10
|
||||
0x882C090C, // 0018 GETMBR R11 R4 K12
|
||||
0x4C300000, // 0019 LDNIL R12
|
||||
0x7C240600, // 001A CALL R9 3
|
||||
0x80041200, // 001B RET 1 R9
|
||||
0x7002004A, // 001C JMP #0068
|
||||
0x54220009, // 001D LDINT R8 10
|
||||
0x1C200C08, // 001E EQ R8 R6 R8
|
||||
0x7822001B, // 001F JMPF R8 #003C
|
||||
0x88200106, // 0020 GETMBR R8 R0 K6
|
||||
0x8C201107, // 0021 GETMET R8 R8 K7
|
||||
0x7C200200, // 0022 CALL R8 1
|
||||
0x8C201108, // 0023 GETMET R8 R8 K8
|
||||
0x5828000D, // 0024 LDCONST R10 K13
|
||||
0x7C200400, // 0025 CALL R8 2
|
||||
0x7822000E, // 0026 JMPF R8 #0036
|
||||
0x8C240F08, // 0027 GETMET R9 R7 K8
|
||||
0x5C2C1000, // 0028 MOVE R11 R8
|
||||
0x5830000E, // 0029 LDCONST R12 K14
|
||||
0x7C240600, // 002A CALL R9 3
|
||||
0x2428130F, // 002B GT R10 R9 K15
|
||||
0x782A0002, // 002C JMPF R10 #0030
|
||||
0x04281310, // 002D SUB R10 R9 K16
|
||||
0x402A1E0A, // 002E CONNECT R10 K15 R10
|
||||
0x9420100A, // 002F GETIDX R8 R8 R10
|
||||
0x8C28070A, // 0030 GETMET R10 R3 K10
|
||||
0x8830090B, // 0031 GETMBR R12 R4 K11
|
||||
0x5C341000, // 0032 MOVE R13 R8
|
||||
0x7C280600, // 0033 CALL R10 3
|
||||
0x80041400, // 0034 RET 1 R10
|
||||
0x70020004, // 0035 JMP #003B
|
||||
0x8C20070A, // 0036 GETMET R8 R3 K10
|
||||
0x8828070C, // 0037 GETMBR R10 R3 K12
|
||||
0x4C2C0000, // 0038 LDNIL R11
|
||||
0x7C200600, // 0039 CALL R8 3
|
||||
0x80041000, // 003A RET 1 R8
|
||||
0x7002002A, // 003B JMP #0067
|
||||
0x541E000E, // 003C LDINT R7 15
|
||||
0x1C1C0A07, // 003D EQ R7 R5 R7
|
||||
0x741E0002, // 003E JMPT R7 #0042
|
||||
0x541E0011, // 003F LDINT R7 18
|
||||
0x1C1C0A07, // 0040 EQ R7 R5 R7
|
||||
0x781E0012, // 0041 JMPF R7 #0055
|
||||
0x881C0106, // 0042 GETMBR R7 R0 K6
|
||||
0x8C1C0F07, // 0043 GETMET R7 R7 K7
|
||||
0x7C1C0200, // 0044 CALL R7 1
|
||||
0x8C1C0F08, // 0045 GETMET R7 R7 K8
|
||||
0x58240011, // 0046 LDCONST R9 K17
|
||||
0x7C1C0400, // 0047 CALL R7 2
|
||||
0x781E0005, // 0048 JMPF R7 #004F
|
||||
0x8C20070A, // 0049 GETMET R8 R3 K10
|
||||
0x8828070B, // 004A GETMBR R10 R3 K11
|
||||
0x5C2C0E00, // 004B MOVE R11 R7
|
||||
0x7C200600, // 004C CALL R8 3
|
||||
0x80041000, // 004D RET 1 R8
|
||||
0x8C24070A, // 0036 GETMET R9 R3 K10
|
||||
0x882C090C, // 0037 GETMBR R11 R4 K12
|
||||
0x4C300000, // 0038 LDNIL R12
|
||||
0x7C240600, // 0039 CALL R9 3
|
||||
0x80041200, // 003A RET 1 R9
|
||||
0x7002002B, // 003B JMP #0068
|
||||
0x5422000E, // 003C LDINT R8 15
|
||||
0x1C200C08, // 003D EQ R8 R6 R8
|
||||
0x74220002, // 003E JMPT R8 #0042
|
||||
0x54220011, // 003F LDINT R8 18
|
||||
0x1C200C08, // 0040 EQ R8 R6 R8
|
||||
0x78220012, // 0041 JMPF R8 #0055
|
||||
0x88200106, // 0042 GETMBR R8 R0 K6
|
||||
0x8C201107, // 0043 GETMET R8 R8 K7
|
||||
0x7C200200, // 0044 CALL R8 1
|
||||
0x8C201108, // 0045 GETMET R8 R8 K8
|
||||
0x58280011, // 0046 LDCONST R10 K17
|
||||
0x7C200400, // 0047 CALL R8 2
|
||||
0x78220005, // 0048 JMPF R8 #004F
|
||||
0x8C24070A, // 0049 GETMET R9 R3 K10
|
||||
0x882C090B, // 004A GETMBR R11 R4 K11
|
||||
0x5C301000, // 004B MOVE R12 R8
|
||||
0x7C240600, // 004C CALL R9 3
|
||||
0x80041200, // 004D RET 1 R9
|
||||
0x70020004, // 004E JMP #0054
|
||||
0x8C20070A, // 004F GETMET R8 R3 K10
|
||||
0x8828070C, // 0050 GETMBR R10 R3 K12
|
||||
0x4C2C0000, // 0051 LDNIL R11
|
||||
0x7C200600, // 0052 CALL R8 3
|
||||
0x80041000, // 0053 RET 1 R8
|
||||
0x70020011, // 0054 JMP #0067
|
||||
0x541E0010, // 0055 LDINT R7 17
|
||||
0x1C1C0A07, // 0056 EQ R7 R5 R7
|
||||
0x781E0006, // 0057 JMPF R7 #005F
|
||||
0x8C1C070A, // 0058 GETMET R7 R3 K10
|
||||
0x88240712, // 0059 GETMBR R9 R3 K18
|
||||
0x88280106, // 005A GETMBR R10 R0 K6
|
||||
0x88281513, // 005B GETMBR R10 R10 K19
|
||||
0x7C1C0600, // 005C CALL R7 3
|
||||
0x80040E00, // 005D RET 1 R7
|
||||
0x70020007, // 005E JMP #0067
|
||||
0x601C0003, // 005F GETGBL R7 G3
|
||||
0x5C200000, // 0060 MOVE R8 R0
|
||||
0x7C1C0200, // 0061 CALL R7 1
|
||||
0x8C1C0F14, // 0062 GETMET R7 R7 K20
|
||||
0x5C240200, // 0063 MOVE R9 R1
|
||||
0x5C280400, // 0064 MOVE R10 R2
|
||||
0x7C1C0600, // 0065 CALL R7 3
|
||||
0x80040E00, // 0066 RET 1 R7
|
||||
0x70020007, // 0067 JMP #0070
|
||||
0x60180003, // 0068 GETGBL R6 G3
|
||||
0x5C1C0000, // 0069 MOVE R7 R0
|
||||
0x7C180200, // 006A CALL R6 1
|
||||
0x8C180D14, // 006B GETMET R6 R6 K20
|
||||
0x5C200200, // 006C MOVE R8 R1
|
||||
0x5C240400, // 006D MOVE R9 R2
|
||||
0x7C180600, // 006E CALL R6 3
|
||||
0x80040C00, // 006F RET 1 R6
|
||||
0x80000000, // 0070 RET 0
|
||||
0x8C24070A, // 004F GETMET R9 R3 K10
|
||||
0x882C090C, // 0050 GETMBR R11 R4 K12
|
||||
0x4C300000, // 0051 LDNIL R12
|
||||
0x7C240600, // 0052 CALL R9 3
|
||||
0x80041200, // 0053 RET 1 R9
|
||||
0x70020012, // 0054 JMP #0068
|
||||
0x54220010, // 0055 LDINT R8 17
|
||||
0x1C200C08, // 0056 EQ R8 R6 R8
|
||||
0x78220006, // 0057 JMPF R8 #005F
|
||||
0x8C20070A, // 0058 GETMET R8 R3 K10
|
||||
0x88280912, // 0059 GETMBR R10 R4 K18
|
||||
0x882C0106, // 005A GETMBR R11 R0 K6
|
||||
0x882C1713, // 005B GETMBR R11 R11 K19
|
||||
0x7C200600, // 005C CALL R8 3
|
||||
0x80041000, // 005D RET 1 R8
|
||||
0x70020008, // 005E JMP #0068
|
||||
0x60200003, // 005F GETGBL R8 G3
|
||||
0x5C240000, // 0060 MOVE R9 R0
|
||||
0x7C200200, // 0061 CALL R8 1
|
||||
0x8C201114, // 0062 GETMET R8 R8 K20
|
||||
0x5C280200, // 0063 MOVE R10 R1
|
||||
0x5C2C0400, // 0064 MOVE R11 R2
|
||||
0x5C300600, // 0065 MOVE R12 R3
|
||||
0x7C200800, // 0066 CALL R8 4
|
||||
0x80041000, // 0067 RET 1 R8
|
||||
0x70020008, // 0068 JMP #0072
|
||||
0x601C0003, // 0069 GETGBL R7 G3
|
||||
0x5C200000, // 006A MOVE R8 R0
|
||||
0x7C1C0200, // 006B CALL R7 1
|
||||
0x8C1C0F14, // 006C GETMET R7 R7 K20
|
||||
0x5C240200, // 006D MOVE R9 R1
|
||||
0x5C280400, // 006E MOVE R10 R2
|
||||
0x5C2C0600, // 006F MOVE R11 R3
|
||||
0x7C1C0800, // 0070 CALL R7 4
|
||||
0x80040E00, // 0071 RET 1 R7
|
||||
0x80000000, // 0072 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -139,8 +139,8 @@ be_local_closure(Matter_Plugin_Bridge_Light0_init, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Light0_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -154,7 +154,7 @@ be_local_closure(Matter_Plugin_Bridge_Light0_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_const_int(0),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(BOOL),
|
||||
/* K8 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K9 */ be_nested_str_weak(U4),
|
||||
@ -162,51 +162,52 @@ be_local_closure(Matter_Plugin_Bridge_Light0_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[44]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0005, // 0004 LDINT R6 6
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A001B, // 0006 JMPF R6 #0023
|
||||
0x8C180104, // 0007 GETMET R6 R0 K4
|
||||
0x7C180200, // 0008 CALL R6 1
|
||||
0x1C180B05, // 0009 EQ R6 R5 K5
|
||||
0x781A0005, // 000A JMPF R6 #0011
|
||||
0x8C180706, // 000B GETMET R6 R3 K6
|
||||
0x88200707, // 000C GETMBR R8 R3 K7
|
||||
0x88240108, // 000D GETMBR R9 R0 K8
|
||||
0x7C180600, // 000E CALL R6 3
|
||||
0x80040C00, // 000F RET 1 R6
|
||||
( &(const binstruction[45]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0005, // 0004 LDINT R7 6
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E001B, // 0006 JMPF R7 #0023
|
||||
0x8C1C0104, // 0007 GETMET R7 R0 K4
|
||||
0x7C1C0200, // 0008 CALL R7 1
|
||||
0x1C1C0D05, // 0009 EQ R7 R6 K5
|
||||
0x781E0005, // 000A JMPF R7 #0011
|
||||
0x8C1C0706, // 000B GETMET R7 R3 K6
|
||||
0x88240907, // 000C GETMBR R9 R4 K7
|
||||
0x88280108, // 000D GETMBR R10 R0 K8
|
||||
0x7C1C0600, // 000E CALL R7 3
|
||||
0x80040E00, // 000F RET 1 R7
|
||||
0x70020010, // 0010 JMP #0022
|
||||
0x541AFFFB, // 0011 LDINT R6 65532
|
||||
0x1C180A06, // 0012 EQ R6 R5 R6
|
||||
0x781A0005, // 0013 JMPF R6 #001A
|
||||
0x8C180706, // 0014 GETMET R6 R3 K6
|
||||
0x88200709, // 0015 GETMBR R8 R3 K9
|
||||
0x58240005, // 0016 LDCONST R9 K5
|
||||
0x7C180600, // 0017 CALL R6 3
|
||||
0x80040C00, // 0018 RET 1 R6
|
||||
0x541EFFFB, // 0011 LDINT R7 65532
|
||||
0x1C1C0C07, // 0012 EQ R7 R6 R7
|
||||
0x781E0005, // 0013 JMPF R7 #001A
|
||||
0x8C1C0706, // 0014 GETMET R7 R3 K6
|
||||
0x88240909, // 0015 GETMBR R9 R4 K9
|
||||
0x58280005, // 0016 LDCONST R10 K5
|
||||
0x7C1C0600, // 0017 CALL R7 3
|
||||
0x80040E00, // 0018 RET 1 R7
|
||||
0x70020007, // 0019 JMP #0022
|
||||
0x541AFFFC, // 001A LDINT R6 65533
|
||||
0x1C180A06, // 001B EQ R6 R5 R6
|
||||
0x781A0004, // 001C JMPF R6 #0022
|
||||
0x8C180706, // 001D GETMET R6 R3 K6
|
||||
0x88200709, // 001E GETMBR R8 R3 K9
|
||||
0x54260003, // 001F LDINT R9 4
|
||||
0x7C180600, // 0020 CALL R6 3
|
||||
0x80040C00, // 0021 RET 1 R6
|
||||
0x70020007, // 0022 JMP #002B
|
||||
0x60180003, // 0023 GETGBL R6 G3
|
||||
0x5C1C0000, // 0024 MOVE R7 R0
|
||||
0x7C180200, // 0025 CALL R6 1
|
||||
0x8C180D0A, // 0026 GETMET R6 R6 K10
|
||||
0x5C200200, // 0027 MOVE R8 R1
|
||||
0x5C240400, // 0028 MOVE R9 R2
|
||||
0x7C180600, // 0029 CALL R6 3
|
||||
0x80040C00, // 002A RET 1 R6
|
||||
0x80000000, // 002B RET 0
|
||||
0x541EFFFC, // 001A LDINT R7 65533
|
||||
0x1C1C0C07, // 001B EQ R7 R6 R7
|
||||
0x781E0004, // 001C JMPF R7 #0022
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240909, // 001E GETMBR R9 R4 K9
|
||||
0x542A0003, // 001F LDINT R10 4
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020008, // 0022 JMP #002C
|
||||
0x601C0003, // 0023 GETGBL R7 G3
|
||||
0x5C200000, // 0024 MOVE R8 R0
|
||||
0x7C1C0200, // 0025 CALL R7 1
|
||||
0x8C1C0F0A, // 0026 GETMET R7 R7 K10
|
||||
0x5C240200, // 0027 MOVE R9 R1
|
||||
0x5C280400, // 0028 MOVE R10 R2
|
||||
0x5C2C0600, // 0029 MOVE R11 R3
|
||||
0x7C1C0800, // 002A CALL R7 4
|
||||
0x80040E00, // 002B RET 1 R7
|
||||
0x80000000, // 002C RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -136,8 +136,8 @@ be_local_closure(Matter_Plugin_Bridge_Light1_invoke_request, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -152,7 +152,7 @@ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_const_int(0),
|
||||
/* K6 */ be_nested_str_weak(shadow_bri),
|
||||
/* K7 */ be_nested_str_weak(create_TLV),
|
||||
/* K7 */ be_nested_str_weak(set),
|
||||
/* K8 */ be_nested_str_weak(U1),
|
||||
/* K9 */ be_nested_str_weak(NULL),
|
||||
/* K10 */ be_const_int(2),
|
||||
@ -163,105 +163,106 @@ be_local_closure(Matter_Plugin_Bridge_Light1_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[98]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0007, // 0004 LDINT R6 8
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0051, // 0006 JMPF R6 #0059
|
||||
0x8C180104, // 0007 GETMET R6 R0 K4
|
||||
0x7C180200, // 0008 CALL R6 1
|
||||
0x1C180B05, // 0009 EQ R6 R5 K5
|
||||
0x781A000F, // 000A JMPF R6 #001B
|
||||
0x88180106, // 000B GETMBR R6 R0 K6
|
||||
0x4C1C0000, // 000C LDNIL R7
|
||||
0x20180C07, // 000D NE R6 R6 R7
|
||||
0x781A0005, // 000E JMPF R6 #0015
|
||||
0x8C180707, // 000F GETMET R6 R3 K7
|
||||
0x88200708, // 0010 GETMBR R8 R3 K8
|
||||
0x88240106, // 0011 GETMBR R9 R0 K6
|
||||
0x7C180600, // 0012 CALL R6 3
|
||||
0x80040C00, // 0013 RET 1 R6
|
||||
( &(const binstruction[99]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0007, // 0004 LDINT R7 8
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0051, // 0006 JMPF R7 #0059
|
||||
0x8C1C0104, // 0007 GETMET R7 R0 K4
|
||||
0x7C1C0200, // 0008 CALL R7 1
|
||||
0x1C1C0D05, // 0009 EQ R7 R6 K5
|
||||
0x781E000F, // 000A JMPF R7 #001B
|
||||
0x881C0106, // 000B GETMBR R7 R0 K6
|
||||
0x4C200000, // 000C LDNIL R8
|
||||
0x201C0E08, // 000D NE R7 R7 R8
|
||||
0x781E0005, // 000E JMPF R7 #0015
|
||||
0x8C1C0707, // 000F GETMET R7 R3 K7
|
||||
0x88240908, // 0010 GETMBR R9 R4 K8
|
||||
0x88280106, // 0011 GETMBR R10 R0 K6
|
||||
0x7C1C0600, // 0012 CALL R7 3
|
||||
0x80040E00, // 0013 RET 1 R7
|
||||
0x70020004, // 0014 JMP #001A
|
||||
0x8C180707, // 0015 GETMET R6 R3 K7
|
||||
0x88200709, // 0016 GETMBR R8 R3 K9
|
||||
0x4C240000, // 0017 LDNIL R9
|
||||
0x7C180600, // 0018 CALL R6 3
|
||||
0x80040C00, // 0019 RET 1 R6
|
||||
0x8C1C0707, // 0015 GETMET R7 R3 K7
|
||||
0x88240909, // 0016 GETMBR R9 R4 K9
|
||||
0x4C280000, // 0017 LDNIL R10
|
||||
0x7C1C0600, // 0018 CALL R7 3
|
||||
0x80040E00, // 0019 RET 1 R7
|
||||
0x7002003C, // 001A JMP #0058
|
||||
0x1C180B0A, // 001B EQ R6 R5 K10
|
||||
0x781A0005, // 001C JMPF R6 #0023
|
||||
0x8C180707, // 001D GETMET R6 R3 K7
|
||||
0x88200708, // 001E GETMBR R8 R3 K8
|
||||
0x58240005, // 001F LDCONST R9 K5
|
||||
0x7C180600, // 0020 CALL R6 3
|
||||
0x80040C00, // 0021 RET 1 R6
|
||||
0x1C1C0D0A, // 001B EQ R7 R6 K10
|
||||
0x781E0005, // 001C JMPF R7 #0023
|
||||
0x8C1C0707, // 001D GETMET R7 R3 K7
|
||||
0x88240908, // 001E GETMBR R9 R4 K8
|
||||
0x58280005, // 001F LDCONST R10 K5
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020034, // 0022 JMP #0058
|
||||
0x1C180B0B, // 0023 EQ R6 R5 K11
|
||||
0x781A0005, // 0024 JMPF R6 #002B
|
||||
0x8C180707, // 0025 GETMET R6 R3 K7
|
||||
0x88200708, // 0026 GETMBR R8 R3 K8
|
||||
0x542600FD, // 0027 LDINT R9 254
|
||||
0x7C180600, // 0028 CALL R6 3
|
||||
0x80040C00, // 0029 RET 1 R6
|
||||
0x1C1C0D0B, // 0023 EQ R7 R6 K11
|
||||
0x781E0005, // 0024 JMPF R7 #002B
|
||||
0x8C1C0707, // 0025 GETMET R7 R3 K7
|
||||
0x88240908, // 0026 GETMBR R9 R4 K8
|
||||
0x542A00FD, // 0027 LDINT R10 254
|
||||
0x7C1C0600, // 0028 CALL R7 3
|
||||
0x80040E00, // 0029 RET 1 R7
|
||||
0x7002002C, // 002A JMP #0058
|
||||
0x541A000E, // 002B LDINT R6 15
|
||||
0x1C180A06, // 002C EQ R6 R5 R6
|
||||
0x781A0005, // 002D JMPF R6 #0034
|
||||
0x8C180707, // 002E GETMET R6 R3 K7
|
||||
0x88200708, // 002F GETMBR R8 R3 K8
|
||||
0x58240005, // 0030 LDCONST R9 K5
|
||||
0x7C180600, // 0031 CALL R6 3
|
||||
0x80040C00, // 0032 RET 1 R6
|
||||
0x541E000E, // 002B LDINT R7 15
|
||||
0x1C1C0C07, // 002C EQ R7 R6 R7
|
||||
0x781E0005, // 002D JMPF R7 #0034
|
||||
0x8C1C0707, // 002E GETMET R7 R3 K7
|
||||
0x88240908, // 002F GETMBR R9 R4 K8
|
||||
0x58280005, // 0030 LDCONST R10 K5
|
||||
0x7C1C0600, // 0031 CALL R7 3
|
||||
0x80040E00, // 0032 RET 1 R7
|
||||
0x70020023, // 0033 JMP #0058
|
||||
0x541A0010, // 0034 LDINT R6 17
|
||||
0x1C180A06, // 0035 EQ R6 R5 R6
|
||||
0x781A000F, // 0036 JMPF R6 #0047
|
||||
0x88180106, // 0037 GETMBR R6 R0 K6
|
||||
0x4C1C0000, // 0038 LDNIL R7
|
||||
0x20180C07, // 0039 NE R6 R6 R7
|
||||
0x781A0005, // 003A JMPF R6 #0041
|
||||
0x8C180707, // 003B GETMET R6 R3 K7
|
||||
0x88200708, // 003C GETMBR R8 R3 K8
|
||||
0x88240106, // 003D GETMBR R9 R0 K6
|
||||
0x7C180600, // 003E CALL R6 3
|
||||
0x80040C00, // 003F RET 1 R6
|
||||
0x541E0010, // 0034 LDINT R7 17
|
||||
0x1C1C0C07, // 0035 EQ R7 R6 R7
|
||||
0x781E000F, // 0036 JMPF R7 #0047
|
||||
0x881C0106, // 0037 GETMBR R7 R0 K6
|
||||
0x4C200000, // 0038 LDNIL R8
|
||||
0x201C0E08, // 0039 NE R7 R7 R8
|
||||
0x781E0005, // 003A JMPF R7 #0041
|
||||
0x8C1C0707, // 003B GETMET R7 R3 K7
|
||||
0x88240908, // 003C GETMBR R9 R4 K8
|
||||
0x88280106, // 003D GETMBR R10 R0 K6
|
||||
0x7C1C0600, // 003E CALL R7 3
|
||||
0x80040E00, // 003F RET 1 R7
|
||||
0x70020004, // 0040 JMP #0046
|
||||
0x8C180707, // 0041 GETMET R6 R3 K7
|
||||
0x88200709, // 0042 GETMBR R8 R3 K9
|
||||
0x4C240000, // 0043 LDNIL R9
|
||||
0x7C180600, // 0044 CALL R6 3
|
||||
0x80040C00, // 0045 RET 1 R6
|
||||
0x8C1C0707, // 0041 GETMET R7 R3 K7
|
||||
0x88240909, // 0042 GETMBR R9 R4 K9
|
||||
0x4C280000, // 0043 LDNIL R10
|
||||
0x7C1C0600, // 0044 CALL R7 3
|
||||
0x80040E00, // 0045 RET 1 R7
|
||||
0x70020010, // 0046 JMP #0058
|
||||
0x541AFFFB, // 0047 LDINT R6 65532
|
||||
0x1C180A06, // 0048 EQ R6 R5 R6
|
||||
0x781A0005, // 0049 JMPF R6 #0050
|
||||
0x8C180707, // 004A GETMET R6 R3 K7
|
||||
0x8820070C, // 004B GETMBR R8 R3 K12
|
||||
0x5824000D, // 004C LDCONST R9 K13
|
||||
0x7C180600, // 004D CALL R6 3
|
||||
0x80040C00, // 004E RET 1 R6
|
||||
0x541EFFFB, // 0047 LDINT R7 65532
|
||||
0x1C1C0C07, // 0048 EQ R7 R6 R7
|
||||
0x781E0005, // 0049 JMPF R7 #0050
|
||||
0x8C1C0707, // 004A GETMET R7 R3 K7
|
||||
0x8824090C, // 004B GETMBR R9 R4 K12
|
||||
0x5828000D, // 004C LDCONST R10 K13
|
||||
0x7C1C0600, // 004D CALL R7 3
|
||||
0x80040E00, // 004E RET 1 R7
|
||||
0x70020007, // 004F JMP #0058
|
||||
0x541AFFFC, // 0050 LDINT R6 65533
|
||||
0x1C180A06, // 0051 EQ R6 R5 R6
|
||||
0x781A0004, // 0052 JMPF R6 #0058
|
||||
0x8C180707, // 0053 GETMET R6 R3 K7
|
||||
0x8820070C, // 0054 GETMBR R8 R3 K12
|
||||
0x54260004, // 0055 LDINT R9 5
|
||||
0x7C180600, // 0056 CALL R6 3
|
||||
0x80040C00, // 0057 RET 1 R6
|
||||
0x70020007, // 0058 JMP #0061
|
||||
0x60180003, // 0059 GETGBL R6 G3
|
||||
0x5C1C0000, // 005A MOVE R7 R0
|
||||
0x7C180200, // 005B CALL R6 1
|
||||
0x8C180D0E, // 005C GETMET R6 R6 K14
|
||||
0x5C200200, // 005D MOVE R8 R1
|
||||
0x5C240400, // 005E MOVE R9 R2
|
||||
0x7C180600, // 005F CALL R6 3
|
||||
0x80040C00, // 0060 RET 1 R6
|
||||
0x80000000, // 0061 RET 0
|
||||
0x541EFFFC, // 0050 LDINT R7 65533
|
||||
0x1C1C0C07, // 0051 EQ R7 R6 R7
|
||||
0x781E0004, // 0052 JMPF R7 #0058
|
||||
0x8C1C0707, // 0053 GETMET R7 R3 K7
|
||||
0x8824090C, // 0054 GETMBR R9 R4 K12
|
||||
0x542A0004, // 0055 LDINT R10 5
|
||||
0x7C1C0600, // 0056 CALL R7 3
|
||||
0x80040E00, // 0057 RET 1 R7
|
||||
0x70020008, // 0058 JMP #0062
|
||||
0x601C0003, // 0059 GETGBL R7 G3
|
||||
0x5C200000, // 005A MOVE R8 R0
|
||||
0x7C1C0200, // 005B CALL R7 1
|
||||
0x8C1C0F0E, // 005C GETMET R7 R7 K14
|
||||
0x5C240200, // 005D MOVE R9 R1
|
||||
0x5C280400, // 005E MOVE R10 R2
|
||||
0x5C2C0600, // 005F MOVE R11 R3
|
||||
0x7C1C0800, // 0060 CALL R7 4
|
||||
0x80040E00, // 0061 RET 1 R7
|
||||
0x80000000, // 0062 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -391,8 +391,8 @@ be_local_closure(Matter_Plugin_Bridge_Light2_update_ct_minmax, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -406,7 +406,7 @@ be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_nested_str_weak(shadow_ct),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(U1),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_const_int(2),
|
||||
@ -418,107 +418,108 @@ be_local_closure(Matter_Plugin_Bridge_Light2_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[100]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A02FF, // 0004 LDINT R6 768
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0053, // 0006 JMPF R6 #005B
|
||||
0x8C180104, // 0007 GETMET R6 R0 K4
|
||||
0x7C180200, // 0008 CALL R6 1
|
||||
0x541A0006, // 0009 LDINT R6 7
|
||||
0x1C180A06, // 000A EQ R6 R5 R6
|
||||
0x781A000F, // 000B JMPF R6 #001C
|
||||
0x88180105, // 000C GETMBR R6 R0 K5
|
||||
0x4C1C0000, // 000D LDNIL R7
|
||||
0x20180C07, // 000E NE R6 R6 R7
|
||||
0x781A0005, // 000F JMPF R6 #0016
|
||||
0x8C180706, // 0010 GETMET R6 R3 K6
|
||||
0x88200707, // 0011 GETMBR R8 R3 K7
|
||||
0x88240105, // 0012 GETMBR R9 R0 K5
|
||||
0x7C180600, // 0013 CALL R6 3
|
||||
0x80040C00, // 0014 RET 1 R6
|
||||
( &(const binstruction[101]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E02FF, // 0004 LDINT R7 768
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0053, // 0006 JMPF R7 #005B
|
||||
0x8C1C0104, // 0007 GETMET R7 R0 K4
|
||||
0x7C1C0200, // 0008 CALL R7 1
|
||||
0x541E0006, // 0009 LDINT R7 7
|
||||
0x1C1C0C07, // 000A EQ R7 R6 R7
|
||||
0x781E000F, // 000B JMPF R7 #001C
|
||||
0x881C0105, // 000C GETMBR R7 R0 K5
|
||||
0x4C200000, // 000D LDNIL R8
|
||||
0x201C0E08, // 000E NE R7 R7 R8
|
||||
0x781E0005, // 000F JMPF R7 #0016
|
||||
0x8C1C0706, // 0010 GETMET R7 R3 K6
|
||||
0x88240907, // 0011 GETMBR R9 R4 K7
|
||||
0x88280105, // 0012 GETMBR R10 R0 K5
|
||||
0x7C1C0600, // 0013 CALL R7 3
|
||||
0x80040E00, // 0014 RET 1 R7
|
||||
0x70020004, // 0015 JMP #001B
|
||||
0x8C180706, // 0016 GETMET R6 R3 K6
|
||||
0x88200708, // 0017 GETMBR R8 R3 K8
|
||||
0x4C240000, // 0018 LDNIL R9
|
||||
0x7C180600, // 0019 CALL R6 3
|
||||
0x80040C00, // 001A RET 1 R6
|
||||
0x8C1C0706, // 0016 GETMET R7 R3 K6
|
||||
0x88240908, // 0017 GETMBR R9 R4 K8
|
||||
0x4C280000, // 0018 LDNIL R10
|
||||
0x7C1C0600, // 0019 CALL R7 3
|
||||
0x80040E00, // 001A RET 1 R7
|
||||
0x7002003D, // 001B JMP #005A
|
||||
0x541A0007, // 001C LDINT R6 8
|
||||
0x1C180A06, // 001D EQ R6 R5 R6
|
||||
0x781A0005, // 001E JMPF R6 #0025
|
||||
0x8C180706, // 001F GETMET R6 R3 K6
|
||||
0x88200707, // 0020 GETMBR R8 R3 K7
|
||||
0x58240009, // 0021 LDCONST R9 K9
|
||||
0x7C180600, // 0022 CALL R6 3
|
||||
0x80040C00, // 0023 RET 1 R6
|
||||
0x541E0007, // 001C LDINT R7 8
|
||||
0x1C1C0C07, // 001D EQ R7 R6 R7
|
||||
0x781E0005, // 001E JMPF R7 #0025
|
||||
0x8C1C0706, // 001F GETMET R7 R3 K6
|
||||
0x88240907, // 0020 GETMBR R9 R4 K7
|
||||
0x58280009, // 0021 LDCONST R10 K9
|
||||
0x7C1C0600, // 0022 CALL R7 3
|
||||
0x80040E00, // 0023 RET 1 R7
|
||||
0x70020034, // 0024 JMP #005A
|
||||
0x541A000E, // 0025 LDINT R6 15
|
||||
0x1C180A06, // 0026 EQ R6 R5 R6
|
||||
0x781A0005, // 0027 JMPF R6 #002E
|
||||
0x8C180706, // 0028 GETMET R6 R3 K6
|
||||
0x88200707, // 0029 GETMBR R8 R3 K7
|
||||
0x5824000A, // 002A LDCONST R9 K10
|
||||
0x7C180600, // 002B CALL R6 3
|
||||
0x80040C00, // 002C RET 1 R6
|
||||
0x541E000E, // 0025 LDINT R7 15
|
||||
0x1C1C0C07, // 0026 EQ R7 R6 R7
|
||||
0x781E0005, // 0027 JMPF R7 #002E
|
||||
0x8C1C0706, // 0028 GETMET R7 R3 K6
|
||||
0x88240907, // 0029 GETMBR R9 R4 K7
|
||||
0x5828000A, // 002A LDCONST R10 K10
|
||||
0x7C1C0600, // 002B CALL R7 3
|
||||
0x80040E00, // 002C RET 1 R7
|
||||
0x7002002B, // 002D JMP #005A
|
||||
0x541A400A, // 002E LDINT R6 16395
|
||||
0x1C180A06, // 002F EQ R6 R5 R6
|
||||
0x781A0005, // 0030 JMPF R6 #0037
|
||||
0x8C180706, // 0031 GETMET R6 R3 K6
|
||||
0x88200707, // 0032 GETMBR R8 R3 K7
|
||||
0x8824010B, // 0033 GETMBR R9 R0 K11
|
||||
0x7C180600, // 0034 CALL R6 3
|
||||
0x80040C00, // 0035 RET 1 R6
|
||||
0x541E400A, // 002E LDINT R7 16395
|
||||
0x1C1C0C07, // 002F EQ R7 R6 R7
|
||||
0x781E0005, // 0030 JMPF R7 #0037
|
||||
0x8C1C0706, // 0031 GETMET R7 R3 K6
|
||||
0x88240907, // 0032 GETMBR R9 R4 K7
|
||||
0x8828010B, // 0033 GETMBR R10 R0 K11
|
||||
0x7C1C0600, // 0034 CALL R7 3
|
||||
0x80040E00, // 0035 RET 1 R7
|
||||
0x70020022, // 0036 JMP #005A
|
||||
0x541A400B, // 0037 LDINT R6 16396
|
||||
0x1C180A06, // 0038 EQ R6 R5 R6
|
||||
0x781A0005, // 0039 JMPF R6 #0040
|
||||
0x8C180706, // 003A GETMET R6 R3 K6
|
||||
0x88200707, // 003B GETMBR R8 R3 K7
|
||||
0x8824010C, // 003C GETMBR R9 R0 K12
|
||||
0x7C180600, // 003D CALL R6 3
|
||||
0x80040C00, // 003E RET 1 R6
|
||||
0x541E400B, // 0037 LDINT R7 16396
|
||||
0x1C1C0C07, // 0038 EQ R7 R6 R7
|
||||
0x781E0005, // 0039 JMPF R7 #0040
|
||||
0x8C1C0706, // 003A GETMET R7 R3 K6
|
||||
0x88240907, // 003B GETMBR R9 R4 K7
|
||||
0x8828010C, // 003C GETMBR R10 R0 K12
|
||||
0x7C1C0600, // 003D CALL R7 3
|
||||
0x80040E00, // 003E RET 1 R7
|
||||
0x70020019, // 003F JMP #005A
|
||||
0x541A4009, // 0040 LDINT R6 16394
|
||||
0x1C180A06, // 0041 EQ R6 R5 R6
|
||||
0x781A0005, // 0042 JMPF R6 #0049
|
||||
0x8C180706, // 0043 GETMET R6 R3 K6
|
||||
0x8820070D, // 0044 GETMBR R8 R3 K13
|
||||
0x5426000F, // 0045 LDINT R9 16
|
||||
0x7C180600, // 0046 CALL R6 3
|
||||
0x80040C00, // 0047 RET 1 R6
|
||||
0x541E4009, // 0040 LDINT R7 16394
|
||||
0x1C1C0C07, // 0041 EQ R7 R6 R7
|
||||
0x781E0005, // 0042 JMPF R7 #0049
|
||||
0x8C1C0706, // 0043 GETMET R7 R3 K6
|
||||
0x8824090D, // 0044 GETMBR R9 R4 K13
|
||||
0x542A000F, // 0045 LDINT R10 16
|
||||
0x7C1C0600, // 0046 CALL R7 3
|
||||
0x80040E00, // 0047 RET 1 R7
|
||||
0x70020010, // 0048 JMP #005A
|
||||
0x541AFFFB, // 0049 LDINT R6 65532
|
||||
0x1C180A06, // 004A EQ R6 R5 R6
|
||||
0x781A0005, // 004B JMPF R6 #0052
|
||||
0x8C180706, // 004C GETMET R6 R3 K6
|
||||
0x8820070D, // 004D GETMBR R8 R3 K13
|
||||
0x5426000F, // 004E LDINT R9 16
|
||||
0x7C180600, // 004F CALL R6 3
|
||||
0x80040C00, // 0050 RET 1 R6
|
||||
0x541EFFFB, // 0049 LDINT R7 65532
|
||||
0x1C1C0C07, // 004A EQ R7 R6 R7
|
||||
0x781E0005, // 004B JMPF R7 #0052
|
||||
0x8C1C0706, // 004C GETMET R7 R3 K6
|
||||
0x8824090D, // 004D GETMBR R9 R4 K13
|
||||
0x542A000F, // 004E LDINT R10 16
|
||||
0x7C1C0600, // 004F CALL R7 3
|
||||
0x80040E00, // 0050 RET 1 R7
|
||||
0x70020007, // 0051 JMP #005A
|
||||
0x541AFFFC, // 0052 LDINT R6 65533
|
||||
0x1C180A06, // 0053 EQ R6 R5 R6
|
||||
0x781A0004, // 0054 JMPF R6 #005A
|
||||
0x8C180706, // 0055 GETMET R6 R3 K6
|
||||
0x8820070D, // 0056 GETMBR R8 R3 K13
|
||||
0x54260004, // 0057 LDINT R9 5
|
||||
0x7C180600, // 0058 CALL R6 3
|
||||
0x80040C00, // 0059 RET 1 R6
|
||||
0x70020007, // 005A JMP #0063
|
||||
0x60180003, // 005B GETGBL R6 G3
|
||||
0x5C1C0000, // 005C MOVE R7 R0
|
||||
0x7C180200, // 005D CALL R6 1
|
||||
0x8C180D0E, // 005E GETMET R6 R6 K14
|
||||
0x5C200200, // 005F MOVE R8 R1
|
||||
0x5C240400, // 0060 MOVE R9 R2
|
||||
0x7C180600, // 0061 CALL R6 3
|
||||
0x80040C00, // 0062 RET 1 R6
|
||||
0x80000000, // 0063 RET 0
|
||||
0x541EFFFC, // 0052 LDINT R7 65533
|
||||
0x1C1C0C07, // 0053 EQ R7 R6 R7
|
||||
0x781E0004, // 0054 JMPF R7 #005A
|
||||
0x8C1C0706, // 0055 GETMET R7 R3 K6
|
||||
0x8824090D, // 0056 GETMBR R9 R4 K13
|
||||
0x542A0004, // 0057 LDINT R10 5
|
||||
0x7C1C0600, // 0058 CALL R7 3
|
||||
0x80040E00, // 0059 RET 1 R7
|
||||
0x70020008, // 005A JMP #0064
|
||||
0x601C0003, // 005B GETGBL R7 G3
|
||||
0x5C200000, // 005C MOVE R8 R0
|
||||
0x7C1C0200, // 005D CALL R7 1
|
||||
0x8C1C0F0E, // 005E GETMET R7 R7 K14
|
||||
0x5C240200, // 005F MOVE R9 R1
|
||||
0x5C280400, // 0060 MOVE R10 R2
|
||||
0x5C2C0600, // 0061 MOVE R11 R3
|
||||
0x7C1C0800, // 0062 CALL R7 4
|
||||
0x80040E00, // 0063 RET 1 R7
|
||||
0x80000000, // 0064 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -445,8 +445,8 @@ be_local_closure(Matter_Plugin_Bridge_Light3_invoke_request, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -461,7 +461,7 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_const_int(0),
|
||||
/* K6 */ be_nested_str_weak(shadow_hue),
|
||||
/* K7 */ be_nested_str_weak(create_TLV),
|
||||
/* K7 */ be_nested_str_weak(set),
|
||||
/* K8 */ be_nested_str_weak(U1),
|
||||
/* K9 */ be_nested_str_weak(NULL),
|
||||
/* K10 */ be_const_int(1),
|
||||
@ -471,133 +471,134 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[126]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A02FF, // 0004 LDINT R6 768
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A006D, // 0006 JMPF R6 #0075
|
||||
0x8C180104, // 0007 GETMET R6 R0 K4
|
||||
0x7C180200, // 0008 CALL R6 1
|
||||
0x1C180B05, // 0009 EQ R6 R5 K5
|
||||
0x781A000F, // 000A JMPF R6 #001B
|
||||
0x88180106, // 000B GETMBR R6 R0 K6
|
||||
0x4C1C0000, // 000C LDNIL R7
|
||||
0x20180C07, // 000D NE R6 R6 R7
|
||||
0x781A0005, // 000E JMPF R6 #0015
|
||||
0x8C180707, // 000F GETMET R6 R3 K7
|
||||
0x88200708, // 0010 GETMBR R8 R3 K8
|
||||
0x88240106, // 0011 GETMBR R9 R0 K6
|
||||
0x7C180600, // 0012 CALL R6 3
|
||||
0x80040C00, // 0013 RET 1 R6
|
||||
( &(const binstruction[127]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E02FF, // 0004 LDINT R7 768
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E006D, // 0006 JMPF R7 #0075
|
||||
0x8C1C0104, // 0007 GETMET R7 R0 K4
|
||||
0x7C1C0200, // 0008 CALL R7 1
|
||||
0x1C1C0D05, // 0009 EQ R7 R6 K5
|
||||
0x781E000F, // 000A JMPF R7 #001B
|
||||
0x881C0106, // 000B GETMBR R7 R0 K6
|
||||
0x4C200000, // 000C LDNIL R8
|
||||
0x201C0E08, // 000D NE R7 R7 R8
|
||||
0x781E0005, // 000E JMPF R7 #0015
|
||||
0x8C1C0707, // 000F GETMET R7 R3 K7
|
||||
0x88240908, // 0010 GETMBR R9 R4 K8
|
||||
0x88280106, // 0011 GETMBR R10 R0 K6
|
||||
0x7C1C0600, // 0012 CALL R7 3
|
||||
0x80040E00, // 0013 RET 1 R7
|
||||
0x70020004, // 0014 JMP #001A
|
||||
0x8C180707, // 0015 GETMET R6 R3 K7
|
||||
0x88200709, // 0016 GETMBR R8 R3 K9
|
||||
0x4C240000, // 0017 LDNIL R9
|
||||
0x7C180600, // 0018 CALL R6 3
|
||||
0x80040C00, // 0019 RET 1 R6
|
||||
0x8C1C0707, // 0015 GETMET R7 R3 K7
|
||||
0x88240909, // 0016 GETMBR R9 R4 K9
|
||||
0x4C280000, // 0017 LDNIL R10
|
||||
0x7C1C0600, // 0018 CALL R7 3
|
||||
0x80040E00, // 0019 RET 1 R7
|
||||
0x70020058, // 001A JMP #0074
|
||||
0x1C180B0A, // 001B EQ R6 R5 K10
|
||||
0x781A000F, // 001C JMPF R6 #002D
|
||||
0x8818010B, // 001D GETMBR R6 R0 K11
|
||||
0x4C1C0000, // 001E LDNIL R7
|
||||
0x20180C07, // 001F NE R6 R6 R7
|
||||
0x781A0005, // 0020 JMPF R6 #0027
|
||||
0x8C180707, // 0021 GETMET R6 R3 K7
|
||||
0x88200708, // 0022 GETMBR R8 R3 K8
|
||||
0x8824010B, // 0023 GETMBR R9 R0 K11
|
||||
0x7C180600, // 0024 CALL R6 3
|
||||
0x80040C00, // 0025 RET 1 R6
|
||||
0x1C1C0D0A, // 001B EQ R7 R6 K10
|
||||
0x781E000F, // 001C JMPF R7 #002D
|
||||
0x881C010B, // 001D GETMBR R7 R0 K11
|
||||
0x4C200000, // 001E LDNIL R8
|
||||
0x201C0E08, // 001F NE R7 R7 R8
|
||||
0x781E0005, // 0020 JMPF R7 #0027
|
||||
0x8C1C0707, // 0021 GETMET R7 R3 K7
|
||||
0x88240908, // 0022 GETMBR R9 R4 K8
|
||||
0x8828010B, // 0023 GETMBR R10 R0 K11
|
||||
0x7C1C0600, // 0024 CALL R7 3
|
||||
0x80040E00, // 0025 RET 1 R7
|
||||
0x70020004, // 0026 JMP #002C
|
||||
0x8C180707, // 0027 GETMET R6 R3 K7
|
||||
0x88200709, // 0028 GETMBR R8 R3 K9
|
||||
0x4C240000, // 0029 LDNIL R9
|
||||
0x7C180600, // 002A CALL R6 3
|
||||
0x80040C00, // 002B RET 1 R6
|
||||
0x8C1C0707, // 0027 GETMET R7 R3 K7
|
||||
0x88240909, // 0028 GETMBR R9 R4 K9
|
||||
0x4C280000, // 0029 LDNIL R10
|
||||
0x7C1C0600, // 002A CALL R7 3
|
||||
0x80040E00, // 002B RET 1 R7
|
||||
0x70020046, // 002C JMP #0074
|
||||
0x541A0006, // 002D LDINT R6 7
|
||||
0x1C180A06, // 002E EQ R6 R5 R6
|
||||
0x781A0005, // 002F JMPF R6 #0036
|
||||
0x8C180707, // 0030 GETMET R6 R3 K7
|
||||
0x88200708, // 0031 GETMBR R8 R3 K8
|
||||
0x58240005, // 0032 LDCONST R9 K5
|
||||
0x7C180600, // 0033 CALL R6 3
|
||||
0x80040C00, // 0034 RET 1 R6
|
||||
0x541E0006, // 002D LDINT R7 7
|
||||
0x1C1C0C07, // 002E EQ R7 R6 R7
|
||||
0x781E0005, // 002F JMPF R7 #0036
|
||||
0x8C1C0707, // 0030 GETMET R7 R3 K7
|
||||
0x88240908, // 0031 GETMBR R9 R4 K8
|
||||
0x58280005, // 0032 LDCONST R10 K5
|
||||
0x7C1C0600, // 0033 CALL R7 3
|
||||
0x80040E00, // 0034 RET 1 R7
|
||||
0x7002003D, // 0035 JMP #0074
|
||||
0x541A0007, // 0036 LDINT R6 8
|
||||
0x1C180A06, // 0037 EQ R6 R5 R6
|
||||
0x781A0005, // 0038 JMPF R6 #003F
|
||||
0x8C180707, // 0039 GETMET R6 R3 K7
|
||||
0x88200708, // 003A GETMBR R8 R3 K8
|
||||
0x58240005, // 003B LDCONST R9 K5
|
||||
0x7C180600, // 003C CALL R6 3
|
||||
0x80040C00, // 003D RET 1 R6
|
||||
0x541E0007, // 0036 LDINT R7 8
|
||||
0x1C1C0C07, // 0037 EQ R7 R6 R7
|
||||
0x781E0005, // 0038 JMPF R7 #003F
|
||||
0x8C1C0707, // 0039 GETMET R7 R3 K7
|
||||
0x88240908, // 003A GETMBR R9 R4 K8
|
||||
0x58280005, // 003B LDCONST R10 K5
|
||||
0x7C1C0600, // 003C CALL R7 3
|
||||
0x80040E00, // 003D RET 1 R7
|
||||
0x70020034, // 003E JMP #0074
|
||||
0x541A000E, // 003F LDINT R6 15
|
||||
0x1C180A06, // 0040 EQ R6 R5 R6
|
||||
0x781A0005, // 0041 JMPF R6 #0048
|
||||
0x8C180707, // 0042 GETMET R6 R3 K7
|
||||
0x88200708, // 0043 GETMBR R8 R3 K8
|
||||
0x58240005, // 0044 LDCONST R9 K5
|
||||
0x7C180600, // 0045 CALL R6 3
|
||||
0x80040C00, // 0046 RET 1 R6
|
||||
0x541E000E, // 003F LDINT R7 15
|
||||
0x1C1C0C07, // 0040 EQ R7 R6 R7
|
||||
0x781E0005, // 0041 JMPF R7 #0048
|
||||
0x8C1C0707, // 0042 GETMET R7 R3 K7
|
||||
0x88240908, // 0043 GETMBR R9 R4 K8
|
||||
0x58280005, // 0044 LDCONST R10 K5
|
||||
0x7C1C0600, // 0045 CALL R7 3
|
||||
0x80040E00, // 0046 RET 1 R7
|
||||
0x7002002B, // 0047 JMP #0074
|
||||
0x541A4000, // 0048 LDINT R6 16385
|
||||
0x1C180A06, // 0049 EQ R6 R5 R6
|
||||
0x781A0005, // 004A JMPF R6 #0051
|
||||
0x8C180707, // 004B GETMET R6 R3 K7
|
||||
0x88200708, // 004C GETMBR R8 R3 K8
|
||||
0x58240005, // 004D LDCONST R9 K5
|
||||
0x7C180600, // 004E CALL R6 3
|
||||
0x80040C00, // 004F RET 1 R6
|
||||
0x541E4000, // 0048 LDINT R7 16385
|
||||
0x1C1C0C07, // 0049 EQ R7 R6 R7
|
||||
0x781E0005, // 004A JMPF R7 #0051
|
||||
0x8C1C0707, // 004B GETMET R7 R3 K7
|
||||
0x88240908, // 004C GETMBR R9 R4 K8
|
||||
0x58280005, // 004D LDCONST R10 K5
|
||||
0x7C1C0600, // 004E CALL R7 3
|
||||
0x80040E00, // 004F RET 1 R7
|
||||
0x70020022, // 0050 JMP #0074
|
||||
0x541A4009, // 0051 LDINT R6 16394
|
||||
0x1C180A06, // 0052 EQ R6 R5 R6
|
||||
0x781A0005, // 0053 JMPF R6 #005A
|
||||
0x8C180707, // 0054 GETMET R6 R3 K7
|
||||
0x8820070C, // 0055 GETMBR R8 R3 K12
|
||||
0x5824000A, // 0056 LDCONST R9 K10
|
||||
0x7C180600, // 0057 CALL R6 3
|
||||
0x80040C00, // 0058 RET 1 R6
|
||||
0x541E4009, // 0051 LDINT R7 16394
|
||||
0x1C1C0C07, // 0052 EQ R7 R6 R7
|
||||
0x781E0005, // 0053 JMPF R7 #005A
|
||||
0x8C1C0707, // 0054 GETMET R7 R3 K7
|
||||
0x8824090C, // 0055 GETMBR R9 R4 K12
|
||||
0x5828000A, // 0056 LDCONST R10 K10
|
||||
0x7C1C0600, // 0057 CALL R7 3
|
||||
0x80040E00, // 0058 RET 1 R7
|
||||
0x70020019, // 0059 JMP #0074
|
||||
0x541A000F, // 005A LDINT R6 16
|
||||
0x1C180A06, // 005B EQ R6 R5 R6
|
||||
0x781A0005, // 005C JMPF R6 #0063
|
||||
0x8C180707, // 005D GETMET R6 R3 K7
|
||||
0x88200708, // 005E GETMBR R8 R3 K8
|
||||
0x58240005, // 005F LDCONST R9 K5
|
||||
0x7C180600, // 0060 CALL R6 3
|
||||
0x80040C00, // 0061 RET 1 R6
|
||||
0x541E000F, // 005A LDINT R7 16
|
||||
0x1C1C0C07, // 005B EQ R7 R6 R7
|
||||
0x781E0005, // 005C JMPF R7 #0063
|
||||
0x8C1C0707, // 005D GETMET R7 R3 K7
|
||||
0x88240908, // 005E GETMBR R9 R4 K8
|
||||
0x58280005, // 005F LDCONST R10 K5
|
||||
0x7C1C0600, // 0060 CALL R7 3
|
||||
0x80040E00, // 0061 RET 1 R7
|
||||
0x70020010, // 0062 JMP #0074
|
||||
0x541AFFFB, // 0063 LDINT R6 65532
|
||||
0x1C180A06, // 0064 EQ R6 R5 R6
|
||||
0x781A0005, // 0065 JMPF R6 #006C
|
||||
0x8C180707, // 0066 GETMET R6 R3 K7
|
||||
0x8820070C, // 0067 GETMBR R8 R3 K12
|
||||
0x5824000A, // 0068 LDCONST R9 K10
|
||||
0x7C180600, // 0069 CALL R6 3
|
||||
0x80040C00, // 006A RET 1 R6
|
||||
0x541EFFFB, // 0063 LDINT R7 65532
|
||||
0x1C1C0C07, // 0064 EQ R7 R6 R7
|
||||
0x781E0005, // 0065 JMPF R7 #006C
|
||||
0x8C1C0707, // 0066 GETMET R7 R3 K7
|
||||
0x8824090C, // 0067 GETMBR R9 R4 K12
|
||||
0x5828000A, // 0068 LDCONST R10 K10
|
||||
0x7C1C0600, // 0069 CALL R7 3
|
||||
0x80040E00, // 006A RET 1 R7
|
||||
0x70020007, // 006B JMP #0074
|
||||
0x541AFFFC, // 006C LDINT R6 65533
|
||||
0x1C180A06, // 006D EQ R6 R5 R6
|
||||
0x781A0004, // 006E JMPF R6 #0074
|
||||
0x8C180707, // 006F GETMET R6 R3 K7
|
||||
0x8820070C, // 0070 GETMBR R8 R3 K12
|
||||
0x54260004, // 0071 LDINT R9 5
|
||||
0x7C180600, // 0072 CALL R6 3
|
||||
0x80040C00, // 0073 RET 1 R6
|
||||
0x70020007, // 0074 JMP #007D
|
||||
0x60180003, // 0075 GETGBL R6 G3
|
||||
0x5C1C0000, // 0076 MOVE R7 R0
|
||||
0x7C180200, // 0077 CALL R6 1
|
||||
0x8C180D0D, // 0078 GETMET R6 R6 K13
|
||||
0x5C200200, // 0079 MOVE R8 R1
|
||||
0x5C240400, // 007A MOVE R9 R2
|
||||
0x7C180600, // 007B CALL R6 3
|
||||
0x80040C00, // 007C RET 1 R6
|
||||
0x80000000, // 007D RET 0
|
||||
0x541EFFFC, // 006C LDINT R7 65533
|
||||
0x1C1C0C07, // 006D EQ R7 R6 R7
|
||||
0x781E0004, // 006E JMPF R7 #0074
|
||||
0x8C1C0707, // 006F GETMET R7 R3 K7
|
||||
0x8824090C, // 0070 GETMBR R9 R4 K12
|
||||
0x542A0004, // 0071 LDINT R10 5
|
||||
0x7C1C0600, // 0072 CALL R7 3
|
||||
0x80040E00, // 0073 RET 1 R7
|
||||
0x70020008, // 0074 JMP #007E
|
||||
0x601C0003, // 0075 GETGBL R7 G3
|
||||
0x5C200000, // 0076 MOVE R8 R0
|
||||
0x7C1C0200, // 0077 CALL R7 1
|
||||
0x8C1C0F0D, // 0078 GETMET R7 R7 K13
|
||||
0x5C240200, // 0079 MOVE R9 R1
|
||||
0x5C280400, // 007A MOVE R10 R2
|
||||
0x5C2C0600, // 007B MOVE R11 R3
|
||||
0x7C1C0800, // 007C CALL R7 4
|
||||
0x80040E00, // 007D RET 1 R7
|
||||
0x80000000, // 007E RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -201,8 +201,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_parse_update, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -216,7 +216,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name *
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_contact),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(BOOL),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_nested_str_weak(U4),
|
||||
@ -225,59 +225,60 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name *
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[52]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0044, // 0004 LDINT R6 69
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0023, // 0006 JMPF R6 #002B
|
||||
0x1C180B04, // 0007 EQ R6 R5 K4
|
||||
0x781A000F, // 0008 JMPF R6 #0019
|
||||
0x88180105, // 0009 GETMBR R6 R0 K5
|
||||
0x4C1C0000, // 000A LDNIL R7
|
||||
0x20180C07, // 000B NE R6 R6 R7
|
||||
0x781A0005, // 000C JMPF R6 #0013
|
||||
0x8C180706, // 000D GETMET R6 R3 K6
|
||||
0x88200707, // 000E GETMBR R8 R3 K7
|
||||
0x88240105, // 000F GETMBR R9 R0 K5
|
||||
0x7C180600, // 0010 CALL R6 3
|
||||
0x80040C00, // 0011 RET 1 R6
|
||||
( &(const binstruction[53]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0044, // 0004 LDINT R7 69
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0023, // 0006 JMPF R7 #002B
|
||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||
0x781E000F, // 0008 JMPF R7 #0019
|
||||
0x881C0105, // 0009 GETMBR R7 R0 K5
|
||||
0x4C200000, // 000A LDNIL R8
|
||||
0x201C0E08, // 000B NE R7 R7 R8
|
||||
0x781E0005, // 000C JMPF R7 #0013
|
||||
0x8C1C0706, // 000D GETMET R7 R3 K6
|
||||
0x88240907, // 000E GETMBR R9 R4 K7
|
||||
0x88280105, // 000F GETMBR R10 R0 K5
|
||||
0x7C1C0600, // 0010 CALL R7 3
|
||||
0x80040E00, // 0011 RET 1 R7
|
||||
0x70020004, // 0012 JMP #0018
|
||||
0x8C180706, // 0013 GETMET R6 R3 K6
|
||||
0x88200708, // 0014 GETMBR R8 R3 K8
|
||||
0x4C240000, // 0015 LDNIL R9
|
||||
0x7C180600, // 0016 CALL R6 3
|
||||
0x80040C00, // 0017 RET 1 R6
|
||||
0x8C1C0706, // 0013 GETMET R7 R3 K6
|
||||
0x88240908, // 0014 GETMBR R9 R4 K8
|
||||
0x4C280000, // 0015 LDNIL R10
|
||||
0x7C1C0600, // 0016 CALL R7 3
|
||||
0x80040E00, // 0017 RET 1 R7
|
||||
0x70020010, // 0018 JMP #002A
|
||||
0x541AFFFB, // 0019 LDINT R6 65532
|
||||
0x1C180A06, // 001A EQ R6 R5 R6
|
||||
0x781A0005, // 001B JMPF R6 #0022
|
||||
0x8C180706, // 001C GETMET R6 R3 K6
|
||||
0x88200709, // 001D GETMBR R8 R3 K9
|
||||
0x58240004, // 001E LDCONST R9 K4
|
||||
0x7C180600, // 001F CALL R6 3
|
||||
0x80040C00, // 0020 RET 1 R6
|
||||
0x541EFFFB, // 0019 LDINT R7 65532
|
||||
0x1C1C0C07, // 001A EQ R7 R6 R7
|
||||
0x781E0005, // 001B JMPF R7 #0022
|
||||
0x8C1C0706, // 001C GETMET R7 R3 K6
|
||||
0x88240909, // 001D GETMBR R9 R4 K9
|
||||
0x58280004, // 001E LDCONST R10 K4
|
||||
0x7C1C0600, // 001F CALL R7 3
|
||||
0x80040E00, // 0020 RET 1 R7
|
||||
0x70020007, // 0021 JMP #002A
|
||||
0x541AFFFC, // 0022 LDINT R6 65533
|
||||
0x1C180A06, // 0023 EQ R6 R5 R6
|
||||
0x781A0004, // 0024 JMPF R6 #002A
|
||||
0x8C180706, // 0025 GETMET R6 R3 K6
|
||||
0x88200709, // 0026 GETMBR R8 R3 K9
|
||||
0x5824000A, // 0027 LDCONST R9 K10
|
||||
0x7C180600, // 0028 CALL R6 3
|
||||
0x80040C00, // 0029 RET 1 R6
|
||||
0x70020007, // 002A JMP #0033
|
||||
0x60180003, // 002B GETGBL R6 G3
|
||||
0x5C1C0000, // 002C MOVE R7 R0
|
||||
0x7C180200, // 002D CALL R6 1
|
||||
0x8C180D0B, // 002E GETMET R6 R6 K11
|
||||
0x5C200200, // 002F MOVE R8 R1
|
||||
0x5C240400, // 0030 MOVE R9 R2
|
||||
0x7C180600, // 0031 CALL R6 3
|
||||
0x80040C00, // 0032 RET 1 R6
|
||||
0x80000000, // 0033 RET 0
|
||||
0x541EFFFC, // 0022 LDINT R7 65533
|
||||
0x1C1C0C07, // 0023 EQ R7 R6 R7
|
||||
0x781E0004, // 0024 JMPF R7 #002A
|
||||
0x8C1C0706, // 0025 GETMET R7 R3 K6
|
||||
0x88240909, // 0026 GETMBR R9 R4 K9
|
||||
0x5828000A, // 0027 LDCONST R10 K10
|
||||
0x7C1C0600, // 0028 CALL R7 3
|
||||
0x80040E00, // 0029 RET 1 R7
|
||||
0x70020008, // 002A JMP #0034
|
||||
0x601C0003, // 002B GETGBL R7 G3
|
||||
0x5C200000, // 002C MOVE R8 R0
|
||||
0x7C1C0200, // 002D CALL R7 1
|
||||
0x8C1C0F0B, // 002E GETMET R7 R7 K11
|
||||
0x5C240200, // 002F MOVE R9 R1
|
||||
0x5C280400, // 0030 MOVE R10 R2
|
||||
0x5C2C0600, // 0031 MOVE R11 R3
|
||||
0x7C1C0800, // 0032 CALL R7 4
|
||||
0x80040E00, // 0033 RET 1 R7
|
||||
0x80000000, // 0034 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -44,8 +44,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_pre_value, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -59,7 +59,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_value),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(U2),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_const_int(1),
|
||||
@ -70,77 +70,78 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[70]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0404, // 0004 LDINT R6 1029
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0035, // 0006 JMPF R6 #003D
|
||||
0x1C180B04, // 0007 EQ R6 R5 K4
|
||||
0x781A0011, // 0008 JMPF R6 #001B
|
||||
0x88180105, // 0009 GETMBR R6 R0 K5
|
||||
0x4C1C0000, // 000A LDNIL R7
|
||||
0x20180C07, // 000B NE R6 R6 R7
|
||||
0x781A0007, // 000C JMPF R6 #0015
|
||||
0x8C180706, // 000D GETMET R6 R3 K6
|
||||
0x88200707, // 000E GETMBR R8 R3 K7
|
||||
0x60240009, // 000F GETGBL R9 G9
|
||||
0x88280105, // 0010 GETMBR R10 R0 K5
|
||||
0x7C240200, // 0011 CALL R9 1
|
||||
0x7C180600, // 0012 CALL R6 3
|
||||
0x80040C00, // 0013 RET 1 R6
|
||||
( &(const binstruction[71]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0404, // 0004 LDINT R7 1029
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0035, // 0006 JMPF R7 #003D
|
||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||
0x781E0011, // 0008 JMPF R7 #001B
|
||||
0x881C0105, // 0009 GETMBR R7 R0 K5
|
||||
0x4C200000, // 000A LDNIL R8
|
||||
0x201C0E08, // 000B NE R7 R7 R8
|
||||
0x781E0007, // 000C JMPF R7 #0015
|
||||
0x8C1C0706, // 000D GETMET R7 R3 K6
|
||||
0x88240907, // 000E GETMBR R9 R4 K7
|
||||
0x60280009, // 000F GETGBL R10 G9
|
||||
0x882C0105, // 0010 GETMBR R11 R0 K5
|
||||
0x7C280200, // 0011 CALL R10 1
|
||||
0x7C1C0600, // 0012 CALL R7 3
|
||||
0x80040E00, // 0013 RET 1 R7
|
||||
0x70020004, // 0014 JMP #001A
|
||||
0x8C180706, // 0015 GETMET R6 R3 K6
|
||||
0x88200708, // 0016 GETMBR R8 R3 K8
|
||||
0x4C240000, // 0017 LDNIL R9
|
||||
0x7C180600, // 0018 CALL R6 3
|
||||
0x80040C00, // 0019 RET 1 R6
|
||||
0x8C1C0706, // 0015 GETMET R7 R3 K6
|
||||
0x88240908, // 0016 GETMBR R9 R4 K8
|
||||
0x4C280000, // 0017 LDNIL R10
|
||||
0x7C1C0600, // 0018 CALL R7 3
|
||||
0x80040E00, // 0019 RET 1 R7
|
||||
0x70020020, // 001A JMP #003C
|
||||
0x1C180B09, // 001B EQ R6 R5 K9
|
||||
0x781A0005, // 001C JMPF R6 #0023
|
||||
0x8C180706, // 001D GETMET R6 R3 K6
|
||||
0x88200707, // 001E GETMBR R8 R3 K7
|
||||
0x542601F3, // 001F LDINT R9 500
|
||||
0x7C180600, // 0020 CALL R6 3
|
||||
0x80040C00, // 0021 RET 1 R6
|
||||
0x1C1C0D09, // 001B EQ R7 R6 K9
|
||||
0x781E0005, // 001C JMPF R7 #0023
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240907, // 001E GETMBR R9 R4 K7
|
||||
0x542A01F3, // 001F LDINT R10 500
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020018, // 0022 JMP #003C
|
||||
0x1C180B0A, // 0023 EQ R6 R5 K10
|
||||
0x781A0005, // 0024 JMPF R6 #002B
|
||||
0x8C180706, // 0025 GETMET R6 R3 K6
|
||||
0x88200707, // 0026 GETMBR R8 R3 K7
|
||||
0x5426270F, // 0027 LDINT R9 10000
|
||||
0x7C180600, // 0028 CALL R6 3
|
||||
0x80040C00, // 0029 RET 1 R6
|
||||
0x1C1C0D0A, // 0023 EQ R7 R6 K10
|
||||
0x781E0005, // 0024 JMPF R7 #002B
|
||||
0x8C1C0706, // 0025 GETMET R7 R3 K6
|
||||
0x88240907, // 0026 GETMBR R9 R4 K7
|
||||
0x542A270F, // 0027 LDINT R10 10000
|
||||
0x7C1C0600, // 0028 CALL R7 3
|
||||
0x80040E00, // 0029 RET 1 R7
|
||||
0x70020010, // 002A JMP #003C
|
||||
0x541AFFFB, // 002B LDINT R6 65532
|
||||
0x1C180A06, // 002C EQ R6 R5 R6
|
||||
0x781A0005, // 002D JMPF R6 #0034
|
||||
0x8C180706, // 002E GETMET R6 R3 K6
|
||||
0x8820070B, // 002F GETMBR R8 R3 K11
|
||||
0x58240004, // 0030 LDCONST R9 K4
|
||||
0x7C180600, // 0031 CALL R6 3
|
||||
0x80040C00, // 0032 RET 1 R6
|
||||
0x541EFFFB, // 002B LDINT R7 65532
|
||||
0x1C1C0C07, // 002C EQ R7 R6 R7
|
||||
0x781E0005, // 002D JMPF R7 #0034
|
||||
0x8C1C0706, // 002E GETMET R7 R3 K6
|
||||
0x8824090B, // 002F GETMBR R9 R4 K11
|
||||
0x58280004, // 0030 LDCONST R10 K4
|
||||
0x7C1C0600, // 0031 CALL R7 3
|
||||
0x80040E00, // 0032 RET 1 R7
|
||||
0x70020007, // 0033 JMP #003C
|
||||
0x541AFFFC, // 0034 LDINT R6 65533
|
||||
0x1C180A06, // 0035 EQ R6 R5 R6
|
||||
0x781A0004, // 0036 JMPF R6 #003C
|
||||
0x8C180706, // 0037 GETMET R6 R3 K6
|
||||
0x8820070B, // 0038 GETMBR R8 R3 K11
|
||||
0x5824000C, // 0039 LDCONST R9 K12
|
||||
0x7C180600, // 003A CALL R6 3
|
||||
0x80040C00, // 003B RET 1 R6
|
||||
0x70020007, // 003C JMP #0045
|
||||
0x60180003, // 003D GETGBL R6 G3
|
||||
0x5C1C0000, // 003E MOVE R7 R0
|
||||
0x7C180200, // 003F CALL R6 1
|
||||
0x8C180D0D, // 0040 GETMET R6 R6 K13
|
||||
0x5C200200, // 0041 MOVE R8 R1
|
||||
0x5C240400, // 0042 MOVE R9 R2
|
||||
0x7C180600, // 0043 CALL R6 3
|
||||
0x80040C00, // 0044 RET 1 R6
|
||||
0x80000000, // 0045 RET 0
|
||||
0x541EFFFC, // 0034 LDINT R7 65533
|
||||
0x1C1C0C07, // 0035 EQ R7 R6 R7
|
||||
0x781E0004, // 0036 JMPF R7 #003C
|
||||
0x8C1C0706, // 0037 GETMET R7 R3 K6
|
||||
0x8824090B, // 0038 GETMBR R9 R4 K11
|
||||
0x5828000C, // 0039 LDCONST R10 K12
|
||||
0x7C1C0600, // 003A CALL R7 3
|
||||
0x80040E00, // 003B RET 1 R7
|
||||
0x70020008, // 003C JMP #0046
|
||||
0x601C0003, // 003D GETGBL R7 G3
|
||||
0x5C200000, // 003E MOVE R8 R0
|
||||
0x7C1C0200, // 003F CALL R7 1
|
||||
0x8C1C0F0D, // 0040 GETMET R7 R7 K13
|
||||
0x5C240200, // 0041 MOVE R9 R1
|
||||
0x5C280400, // 0042 MOVE R10 R2
|
||||
0x5C2C0600, // 0043 MOVE R11 R3
|
||||
0x7C1C0800, // 0044 CALL R7 4
|
||||
0x80040E00, // 0045 RET 1 R7
|
||||
0x80000000, // 0046 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -56,8 +56,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_pre_value, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -71,7 +71,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* na
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_value),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(U2),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_const_int(1),
|
||||
@ -82,77 +82,78 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* na
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[70]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A03FF, // 0004 LDINT R6 1024
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0035, // 0006 JMPF R6 #003D
|
||||
0x1C180B04, // 0007 EQ R6 R5 K4
|
||||
0x781A0011, // 0008 JMPF R6 #001B
|
||||
0x88180105, // 0009 GETMBR R6 R0 K5
|
||||
0x4C1C0000, // 000A LDNIL R7
|
||||
0x20180C07, // 000B NE R6 R6 R7
|
||||
0x781A0007, // 000C JMPF R6 #0015
|
||||
0x8C180706, // 000D GETMET R6 R3 K6
|
||||
0x88200707, // 000E GETMBR R8 R3 K7
|
||||
0x60240009, // 000F GETGBL R9 G9
|
||||
0x88280105, // 0010 GETMBR R10 R0 K5
|
||||
0x7C240200, // 0011 CALL R9 1
|
||||
0x7C180600, // 0012 CALL R6 3
|
||||
0x80040C00, // 0013 RET 1 R6
|
||||
( &(const binstruction[71]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E03FF, // 0004 LDINT R7 1024
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0035, // 0006 JMPF R7 #003D
|
||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||
0x781E0011, // 0008 JMPF R7 #001B
|
||||
0x881C0105, // 0009 GETMBR R7 R0 K5
|
||||
0x4C200000, // 000A LDNIL R8
|
||||
0x201C0E08, // 000B NE R7 R7 R8
|
||||
0x781E0007, // 000C JMPF R7 #0015
|
||||
0x8C1C0706, // 000D GETMET R7 R3 K6
|
||||
0x88240907, // 000E GETMBR R9 R4 K7
|
||||
0x60280009, // 000F GETGBL R10 G9
|
||||
0x882C0105, // 0010 GETMBR R11 R0 K5
|
||||
0x7C280200, // 0011 CALL R10 1
|
||||
0x7C1C0600, // 0012 CALL R7 3
|
||||
0x80040E00, // 0013 RET 1 R7
|
||||
0x70020004, // 0014 JMP #001A
|
||||
0x8C180706, // 0015 GETMET R6 R3 K6
|
||||
0x88200708, // 0016 GETMBR R8 R3 K8
|
||||
0x4C240000, // 0017 LDNIL R9
|
||||
0x7C180600, // 0018 CALL R6 3
|
||||
0x80040C00, // 0019 RET 1 R6
|
||||
0x8C1C0706, // 0015 GETMET R7 R3 K6
|
||||
0x88240908, // 0016 GETMBR R9 R4 K8
|
||||
0x4C280000, // 0017 LDNIL R10
|
||||
0x7C1C0600, // 0018 CALL R7 3
|
||||
0x80040E00, // 0019 RET 1 R7
|
||||
0x70020020, // 001A JMP #003C
|
||||
0x1C180B09, // 001B EQ R6 R5 K9
|
||||
0x781A0005, // 001C JMPF R6 #0023
|
||||
0x8C180706, // 001D GETMET R6 R3 K6
|
||||
0x88200707, // 001E GETMBR R8 R3 K7
|
||||
0x58240009, // 001F LDCONST R9 K9
|
||||
0x7C180600, // 0020 CALL R6 3
|
||||
0x80040C00, // 0021 RET 1 R6
|
||||
0x1C1C0D09, // 001B EQ R7 R6 K9
|
||||
0x781E0005, // 001C JMPF R7 #0023
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240907, // 001E GETMBR R9 R4 K7
|
||||
0x58280009, // 001F LDCONST R10 K9
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020018, // 0022 JMP #003C
|
||||
0x1C180B0A, // 0023 EQ R6 R5 K10
|
||||
0x781A0005, // 0024 JMPF R6 #002B
|
||||
0x8C180706, // 0025 GETMET R6 R3 K6
|
||||
0x88200707, // 0026 GETMBR R8 R3 K7
|
||||
0x5426FFFD, // 0027 LDINT R9 65534
|
||||
0x7C180600, // 0028 CALL R6 3
|
||||
0x80040C00, // 0029 RET 1 R6
|
||||
0x1C1C0D0A, // 0023 EQ R7 R6 K10
|
||||
0x781E0005, // 0024 JMPF R7 #002B
|
||||
0x8C1C0706, // 0025 GETMET R7 R3 K6
|
||||
0x88240907, // 0026 GETMBR R9 R4 K7
|
||||
0x542AFFFD, // 0027 LDINT R10 65534
|
||||
0x7C1C0600, // 0028 CALL R7 3
|
||||
0x80040E00, // 0029 RET 1 R7
|
||||
0x70020010, // 002A JMP #003C
|
||||
0x541AFFFB, // 002B LDINT R6 65532
|
||||
0x1C180A06, // 002C EQ R6 R5 R6
|
||||
0x781A0005, // 002D JMPF R6 #0034
|
||||
0x8C180706, // 002E GETMET R6 R3 K6
|
||||
0x8820070B, // 002F GETMBR R8 R3 K11
|
||||
0x58240004, // 0030 LDCONST R9 K4
|
||||
0x7C180600, // 0031 CALL R6 3
|
||||
0x80040C00, // 0032 RET 1 R6
|
||||
0x541EFFFB, // 002B LDINT R7 65532
|
||||
0x1C1C0C07, // 002C EQ R7 R6 R7
|
||||
0x781E0005, // 002D JMPF R7 #0034
|
||||
0x8C1C0706, // 002E GETMET R7 R3 K6
|
||||
0x8824090B, // 002F GETMBR R9 R4 K11
|
||||
0x58280004, // 0030 LDCONST R10 K4
|
||||
0x7C1C0600, // 0031 CALL R7 3
|
||||
0x80040E00, // 0032 RET 1 R7
|
||||
0x70020007, // 0033 JMP #003C
|
||||
0x541AFFFC, // 0034 LDINT R6 65533
|
||||
0x1C180A06, // 0035 EQ R6 R5 R6
|
||||
0x781A0004, // 0036 JMPF R6 #003C
|
||||
0x8C180706, // 0037 GETMET R6 R3 K6
|
||||
0x8820070B, // 0038 GETMBR R8 R3 K11
|
||||
0x5824000C, // 0039 LDCONST R9 K12
|
||||
0x7C180600, // 003A CALL R6 3
|
||||
0x80040C00, // 003B RET 1 R6
|
||||
0x70020007, // 003C JMP #0045
|
||||
0x60180003, // 003D GETGBL R6 G3
|
||||
0x5C1C0000, // 003E MOVE R7 R0
|
||||
0x7C180200, // 003F CALL R6 1
|
||||
0x8C180D0D, // 0040 GETMET R6 R6 K13
|
||||
0x5C200200, // 0041 MOVE R8 R1
|
||||
0x5C240400, // 0042 MOVE R9 R2
|
||||
0x7C180600, // 0043 CALL R6 3
|
||||
0x80040C00, // 0044 RET 1 R6
|
||||
0x80000000, // 0045 RET 0
|
||||
0x541EFFFC, // 0034 LDINT R7 65533
|
||||
0x1C1C0C07, // 0035 EQ R7 R6 R7
|
||||
0x781E0004, // 0036 JMPF R7 #003C
|
||||
0x8C1C0706, // 0037 GETMET R7 R3 K6
|
||||
0x8824090B, // 0038 GETMBR R9 R4 K11
|
||||
0x5828000C, // 0039 LDCONST R10 K12
|
||||
0x7C1C0600, // 003A CALL R7 3
|
||||
0x80040E00, // 003B RET 1 R7
|
||||
0x70020008, // 003C JMP #0046
|
||||
0x601C0003, // 003D GETGBL R7 G3
|
||||
0x5C200000, // 003E MOVE R8 R0
|
||||
0x7C1C0200, // 003F CALL R7 1
|
||||
0x8C1C0F0D, // 0040 GETMET R7 R7 K13
|
||||
0x5C240200, // 0041 MOVE R9 R1
|
||||
0x5C280400, // 0042 MOVE R10 R2
|
||||
0x5C2C0600, // 0043 MOVE R11 R3
|
||||
0x7C1C0800, // 0044 CALL R7 4
|
||||
0x80040E00, // 0045 RET 1 R7
|
||||
0x80000000, // 0046 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -201,8 +201,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_web_values_prefix, /* n
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -216,7 +216,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_occupancy),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(U1),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_const_int(1),
|
||||
@ -227,75 +227,76 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[68]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0405, // 0004 LDINT R6 1030
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0033, // 0006 JMPF R6 #003B
|
||||
0x1C180B04, // 0007 EQ R6 R5 K4
|
||||
0x781A000F, // 0008 JMPF R6 #0019
|
||||
0x88180105, // 0009 GETMBR R6 R0 K5
|
||||
0x4C1C0000, // 000A LDNIL R7
|
||||
0x20180C07, // 000B NE R6 R6 R7
|
||||
0x781A0005, // 000C JMPF R6 #0013
|
||||
0x8C180706, // 000D GETMET R6 R3 K6
|
||||
0x88200707, // 000E GETMBR R8 R3 K7
|
||||
0x88240105, // 000F GETMBR R9 R0 K5
|
||||
0x7C180600, // 0010 CALL R6 3
|
||||
0x80040C00, // 0011 RET 1 R6
|
||||
( &(const binstruction[69]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0405, // 0004 LDINT R7 1030
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0033, // 0006 JMPF R7 #003B
|
||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||
0x781E000F, // 0008 JMPF R7 #0019
|
||||
0x881C0105, // 0009 GETMBR R7 R0 K5
|
||||
0x4C200000, // 000A LDNIL R8
|
||||
0x201C0E08, // 000B NE R7 R7 R8
|
||||
0x781E0005, // 000C JMPF R7 #0013
|
||||
0x8C1C0706, // 000D GETMET R7 R3 K6
|
||||
0x88240907, // 000E GETMBR R9 R4 K7
|
||||
0x88280105, // 000F GETMBR R10 R0 K5
|
||||
0x7C1C0600, // 0010 CALL R7 3
|
||||
0x80040E00, // 0011 RET 1 R7
|
||||
0x70020004, // 0012 JMP #0018
|
||||
0x8C180706, // 0013 GETMET R6 R3 K6
|
||||
0x88200708, // 0014 GETMBR R8 R3 K8
|
||||
0x4C240000, // 0015 LDNIL R9
|
||||
0x7C180600, // 0016 CALL R6 3
|
||||
0x80040C00, // 0017 RET 1 R6
|
||||
0x8C1C0706, // 0013 GETMET R7 R3 K6
|
||||
0x88240908, // 0014 GETMBR R9 R4 K8
|
||||
0x4C280000, // 0015 LDNIL R10
|
||||
0x7C1C0600, // 0016 CALL R7 3
|
||||
0x80040E00, // 0017 RET 1 R7
|
||||
0x70020020, // 0018 JMP #003A
|
||||
0x1C180B09, // 0019 EQ R6 R5 K9
|
||||
0x781A0005, // 001A JMPF R6 #0021
|
||||
0x8C180706, // 001B GETMET R6 R3 K6
|
||||
0x88200707, // 001C GETMBR R8 R3 K7
|
||||
0x5824000A, // 001D LDCONST R9 K10
|
||||
0x7C180600, // 001E CALL R6 3
|
||||
0x80040C00, // 001F RET 1 R6
|
||||
0x1C1C0D09, // 0019 EQ R7 R6 K9
|
||||
0x781E0005, // 001A JMPF R7 #0021
|
||||
0x8C1C0706, // 001B GETMET R7 R3 K6
|
||||
0x88240907, // 001C GETMBR R9 R4 K7
|
||||
0x5828000A, // 001D LDCONST R10 K10
|
||||
0x7C1C0600, // 001E CALL R7 3
|
||||
0x80040E00, // 001F RET 1 R7
|
||||
0x70020018, // 0020 JMP #003A
|
||||
0x1C180B0B, // 0021 EQ R6 R5 K11
|
||||
0x781A0005, // 0022 JMPF R6 #0029
|
||||
0x8C180706, // 0023 GETMET R6 R3 K6
|
||||
0x88200707, // 0024 GETMBR R8 R3 K7
|
||||
0x58240004, // 0025 LDCONST R9 K4
|
||||
0x7C180600, // 0026 CALL R6 3
|
||||
0x80040C00, // 0027 RET 1 R6
|
||||
0x1C1C0D0B, // 0021 EQ R7 R6 K11
|
||||
0x781E0005, // 0022 JMPF R7 #0029
|
||||
0x8C1C0706, // 0023 GETMET R7 R3 K6
|
||||
0x88240907, // 0024 GETMBR R9 R4 K7
|
||||
0x58280004, // 0025 LDCONST R10 K4
|
||||
0x7C1C0600, // 0026 CALL R7 3
|
||||
0x80040E00, // 0027 RET 1 R7
|
||||
0x70020010, // 0028 JMP #003A
|
||||
0x541AFFFB, // 0029 LDINT R6 65532
|
||||
0x1C180A06, // 002A EQ R6 R5 R6
|
||||
0x781A0005, // 002B JMPF R6 #0032
|
||||
0x8C180706, // 002C GETMET R6 R3 K6
|
||||
0x8820070C, // 002D GETMBR R8 R3 K12
|
||||
0x58240004, // 002E LDCONST R9 K4
|
||||
0x7C180600, // 002F CALL R6 3
|
||||
0x80040C00, // 0030 RET 1 R6
|
||||
0x541EFFFB, // 0029 LDINT R7 65532
|
||||
0x1C1C0C07, // 002A EQ R7 R6 R7
|
||||
0x781E0005, // 002B JMPF R7 #0032
|
||||
0x8C1C0706, // 002C GETMET R7 R3 K6
|
||||
0x8824090C, // 002D GETMBR R9 R4 K12
|
||||
0x58280004, // 002E LDCONST R10 K4
|
||||
0x7C1C0600, // 002F CALL R7 3
|
||||
0x80040E00, // 0030 RET 1 R7
|
||||
0x70020007, // 0031 JMP #003A
|
||||
0x541AFFFC, // 0032 LDINT R6 65533
|
||||
0x1C180A06, // 0033 EQ R6 R5 R6
|
||||
0x781A0004, // 0034 JMPF R6 #003A
|
||||
0x8C180706, // 0035 GETMET R6 R3 K6
|
||||
0x8820070C, // 0036 GETMBR R8 R3 K12
|
||||
0x5824000A, // 0037 LDCONST R9 K10
|
||||
0x7C180600, // 0038 CALL R6 3
|
||||
0x80040C00, // 0039 RET 1 R6
|
||||
0x70020007, // 003A JMP #0043
|
||||
0x60180003, // 003B GETGBL R6 G3
|
||||
0x5C1C0000, // 003C MOVE R7 R0
|
||||
0x7C180200, // 003D CALL R6 1
|
||||
0x8C180D0D, // 003E GETMET R6 R6 K13
|
||||
0x5C200200, // 003F MOVE R8 R1
|
||||
0x5C240400, // 0040 MOVE R9 R2
|
||||
0x7C180600, // 0041 CALL R6 3
|
||||
0x80040C00, // 0042 RET 1 R6
|
||||
0x80000000, // 0043 RET 0
|
||||
0x541EFFFC, // 0032 LDINT R7 65533
|
||||
0x1C1C0C07, // 0033 EQ R7 R6 R7
|
||||
0x781E0004, // 0034 JMPF R7 #003A
|
||||
0x8C1C0706, // 0035 GETMET R7 R3 K6
|
||||
0x8824090C, // 0036 GETMBR R9 R4 K12
|
||||
0x5828000A, // 0037 LDCONST R10 K10
|
||||
0x7C1C0600, // 0038 CALL R7 3
|
||||
0x80040E00, // 0039 RET 1 R7
|
||||
0x70020008, // 003A JMP #0044
|
||||
0x601C0003, // 003B GETGBL R7 G3
|
||||
0x5C200000, // 003C MOVE R8 R0
|
||||
0x7C1C0200, // 003D CALL R7 1
|
||||
0x8C1C0F0D, // 003E GETMET R7 R7 K13
|
||||
0x5C240200, // 003F MOVE R9 R1
|
||||
0x5C280400, // 0040 MOVE R10 R2
|
||||
0x5C2C0600, // 0041 MOVE R11 R3
|
||||
0x7C1C0800, // 0042 CALL R7 4
|
||||
0x80040E00, // 0043 RET 1 R7
|
||||
0x80000000, // 0044 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -43,8 +43,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_pre_value, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -58,7 +58,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_value),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(I2),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_const_int(1),
|
||||
@ -69,77 +69,78 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[70]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0402, // 0004 LDINT R6 1027
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0035, // 0006 JMPF R6 #003D
|
||||
0x1C180B04, // 0007 EQ R6 R5 K4
|
||||
0x781A0011, // 0008 JMPF R6 #001B
|
||||
0x88180105, // 0009 GETMBR R6 R0 K5
|
||||
0x4C1C0000, // 000A LDNIL R7
|
||||
0x20180C07, // 000B NE R6 R6 R7
|
||||
0x781A0007, // 000C JMPF R6 #0015
|
||||
0x8C180706, // 000D GETMET R6 R3 K6
|
||||
0x88200707, // 000E GETMBR R8 R3 K7
|
||||
0x60240009, // 000F GETGBL R9 G9
|
||||
0x88280105, // 0010 GETMBR R10 R0 K5
|
||||
0x7C240200, // 0011 CALL R9 1
|
||||
0x7C180600, // 0012 CALL R6 3
|
||||
0x80040C00, // 0013 RET 1 R6
|
||||
( &(const binstruction[71]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0402, // 0004 LDINT R7 1027
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0035, // 0006 JMPF R7 #003D
|
||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||
0x781E0011, // 0008 JMPF R7 #001B
|
||||
0x881C0105, // 0009 GETMBR R7 R0 K5
|
||||
0x4C200000, // 000A LDNIL R8
|
||||
0x201C0E08, // 000B NE R7 R7 R8
|
||||
0x781E0007, // 000C JMPF R7 #0015
|
||||
0x8C1C0706, // 000D GETMET R7 R3 K6
|
||||
0x88240907, // 000E GETMBR R9 R4 K7
|
||||
0x60280009, // 000F GETGBL R10 G9
|
||||
0x882C0105, // 0010 GETMBR R11 R0 K5
|
||||
0x7C280200, // 0011 CALL R10 1
|
||||
0x7C1C0600, // 0012 CALL R7 3
|
||||
0x80040E00, // 0013 RET 1 R7
|
||||
0x70020004, // 0014 JMP #001A
|
||||
0x8C180706, // 0015 GETMET R6 R3 K6
|
||||
0x88200708, // 0016 GETMBR R8 R3 K8
|
||||
0x4C240000, // 0017 LDNIL R9
|
||||
0x7C180600, // 0018 CALL R6 3
|
||||
0x80040C00, // 0019 RET 1 R6
|
||||
0x8C1C0706, // 0015 GETMET R7 R3 K6
|
||||
0x88240908, // 0016 GETMBR R9 R4 K8
|
||||
0x4C280000, // 0017 LDNIL R10
|
||||
0x7C1C0600, // 0018 CALL R7 3
|
||||
0x80040E00, // 0019 RET 1 R7
|
||||
0x70020020, // 001A JMP #003C
|
||||
0x1C180B09, // 001B EQ R6 R5 K9
|
||||
0x781A0005, // 001C JMPF R6 #0023
|
||||
0x8C180706, // 001D GETMET R6 R3 K6
|
||||
0x88200707, // 001E GETMBR R8 R3 K7
|
||||
0x542601F3, // 001F LDINT R9 500
|
||||
0x7C180600, // 0020 CALL R6 3
|
||||
0x80040C00, // 0021 RET 1 R6
|
||||
0x1C1C0D09, // 001B EQ R7 R6 K9
|
||||
0x781E0005, // 001C JMPF R7 #0023
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240907, // 001E GETMBR R9 R4 K7
|
||||
0x542A01F3, // 001F LDINT R10 500
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020018, // 0022 JMP #003C
|
||||
0x1C180B0A, // 0023 EQ R6 R5 K10
|
||||
0x781A0005, // 0024 JMPF R6 #002B
|
||||
0x8C180706, // 0025 GETMET R6 R3 K6
|
||||
0x88200707, // 0026 GETMBR R8 R3 K7
|
||||
0x542605DB, // 0027 LDINT R9 1500
|
||||
0x7C180600, // 0028 CALL R6 3
|
||||
0x80040C00, // 0029 RET 1 R6
|
||||
0x1C1C0D0A, // 0023 EQ R7 R6 K10
|
||||
0x781E0005, // 0024 JMPF R7 #002B
|
||||
0x8C1C0706, // 0025 GETMET R7 R3 K6
|
||||
0x88240907, // 0026 GETMBR R9 R4 K7
|
||||
0x542A05DB, // 0027 LDINT R10 1500
|
||||
0x7C1C0600, // 0028 CALL R7 3
|
||||
0x80040E00, // 0029 RET 1 R7
|
||||
0x70020010, // 002A JMP #003C
|
||||
0x541AFFFB, // 002B LDINT R6 65532
|
||||
0x1C180A06, // 002C EQ R6 R5 R6
|
||||
0x781A0005, // 002D JMPF R6 #0034
|
||||
0x8C180706, // 002E GETMET R6 R3 K6
|
||||
0x8820070B, // 002F GETMBR R8 R3 K11
|
||||
0x58240004, // 0030 LDCONST R9 K4
|
||||
0x7C180600, // 0031 CALL R6 3
|
||||
0x80040C00, // 0032 RET 1 R6
|
||||
0x541EFFFB, // 002B LDINT R7 65532
|
||||
0x1C1C0C07, // 002C EQ R7 R6 R7
|
||||
0x781E0005, // 002D JMPF R7 #0034
|
||||
0x8C1C0706, // 002E GETMET R7 R3 K6
|
||||
0x8824090B, // 002F GETMBR R9 R4 K11
|
||||
0x58280004, // 0030 LDCONST R10 K4
|
||||
0x7C1C0600, // 0031 CALL R7 3
|
||||
0x80040E00, // 0032 RET 1 R7
|
||||
0x70020007, // 0033 JMP #003C
|
||||
0x541AFFFC, // 0034 LDINT R6 65533
|
||||
0x1C180A06, // 0035 EQ R6 R5 R6
|
||||
0x781A0004, // 0036 JMPF R6 #003C
|
||||
0x8C180706, // 0037 GETMET R6 R3 K6
|
||||
0x8820070B, // 0038 GETMBR R8 R3 K11
|
||||
0x5824000C, // 0039 LDCONST R9 K12
|
||||
0x7C180600, // 003A CALL R6 3
|
||||
0x80040C00, // 003B RET 1 R6
|
||||
0x70020007, // 003C JMP #0045
|
||||
0x60180003, // 003D GETGBL R6 G3
|
||||
0x5C1C0000, // 003E MOVE R7 R0
|
||||
0x7C180200, // 003F CALL R6 1
|
||||
0x8C180D0D, // 0040 GETMET R6 R6 K13
|
||||
0x5C200200, // 0041 MOVE R8 R1
|
||||
0x5C240400, // 0042 MOVE R9 R2
|
||||
0x7C180600, // 0043 CALL R6 3
|
||||
0x80040C00, // 0044 RET 1 R6
|
||||
0x80000000, // 0045 RET 0
|
||||
0x541EFFFC, // 0034 LDINT R7 65533
|
||||
0x1C1C0C07, // 0035 EQ R7 R6 R7
|
||||
0x781E0004, // 0036 JMPF R7 #003C
|
||||
0x8C1C0706, // 0037 GETMET R7 R3 K6
|
||||
0x8824090B, // 0038 GETMBR R9 R4 K11
|
||||
0x5828000C, // 0039 LDCONST R10 K12
|
||||
0x7C1C0600, // 003A CALL R7 3
|
||||
0x80040E00, // 003B RET 1 R7
|
||||
0x70020008, // 003C JMP #0046
|
||||
0x601C0003, // 003D GETGBL R7 G3
|
||||
0x5C200000, // 003E MOVE R8 R0
|
||||
0x7C1C0200, // 003F CALL R7 1
|
||||
0x8C1C0F0D, // 0040 GETMET R7 R7 K13
|
||||
0x5C240200, // 0041 MOVE R9 R1
|
||||
0x5C280400, // 0042 MOVE R10 R2
|
||||
0x5C2C0600, // 0043 MOVE R11 R3
|
||||
0x7C1C0800, // 0044 CALL R7 4
|
||||
0x80040E00, // 0045 RET 1 R7
|
||||
0x80000000, // 0046 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -56,8 +56,8 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_pre_value, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -71,7 +71,7 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_value),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(I2),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_const_int(1),
|
||||
@ -81,75 +81,76 @@ be_local_closure(Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[68]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0401, // 0004 LDINT R6 1026
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0033, // 0006 JMPF R6 #003B
|
||||
0x1C180B04, // 0007 EQ R6 R5 K4
|
||||
0x781A000F, // 0008 JMPF R6 #0019
|
||||
0x88180105, // 0009 GETMBR R6 R0 K5
|
||||
0x4C1C0000, // 000A LDNIL R7
|
||||
0x20180C07, // 000B NE R6 R6 R7
|
||||
0x781A0005, // 000C JMPF R6 #0013
|
||||
0x8C180706, // 000D GETMET R6 R3 K6
|
||||
0x88200707, // 000E GETMBR R8 R3 K7
|
||||
0x88240105, // 000F GETMBR R9 R0 K5
|
||||
0x7C180600, // 0010 CALL R6 3
|
||||
0x80040C00, // 0011 RET 1 R6
|
||||
( &(const binstruction[69]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0401, // 0004 LDINT R7 1026
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0033, // 0006 JMPF R7 #003B
|
||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||
0x781E000F, // 0008 JMPF R7 #0019
|
||||
0x881C0105, // 0009 GETMBR R7 R0 K5
|
||||
0x4C200000, // 000A LDNIL R8
|
||||
0x201C0E08, // 000B NE R7 R7 R8
|
||||
0x781E0005, // 000C JMPF R7 #0013
|
||||
0x8C1C0706, // 000D GETMET R7 R3 K6
|
||||
0x88240907, // 000E GETMBR R9 R4 K7
|
||||
0x88280105, // 000F GETMBR R10 R0 K5
|
||||
0x7C1C0600, // 0010 CALL R7 3
|
||||
0x80040E00, // 0011 RET 1 R7
|
||||
0x70020004, // 0012 JMP #0018
|
||||
0x8C180706, // 0013 GETMET R6 R3 K6
|
||||
0x88200708, // 0014 GETMBR R8 R3 K8
|
||||
0x4C240000, // 0015 LDNIL R9
|
||||
0x7C180600, // 0016 CALL R6 3
|
||||
0x80040C00, // 0017 RET 1 R6
|
||||
0x8C1C0706, // 0013 GETMET R7 R3 K6
|
||||
0x88240908, // 0014 GETMBR R9 R4 K8
|
||||
0x4C280000, // 0015 LDNIL R10
|
||||
0x7C1C0600, // 0016 CALL R7 3
|
||||
0x80040E00, // 0017 RET 1 R7
|
||||
0x70020020, // 0018 JMP #003A
|
||||
0x1C180B09, // 0019 EQ R6 R5 K9
|
||||
0x781A0005, // 001A JMPF R6 #0021
|
||||
0x8C180706, // 001B GETMET R6 R3 K6
|
||||
0x88200707, // 001C GETMBR R8 R3 K7
|
||||
0x5425EC77, // 001D LDINT R9 -5000
|
||||
0x7C180600, // 001E CALL R6 3
|
||||
0x80040C00, // 001F RET 1 R6
|
||||
0x1C1C0D09, // 0019 EQ R7 R6 K9
|
||||
0x781E0005, // 001A JMPF R7 #0021
|
||||
0x8C1C0706, // 001B GETMET R7 R3 K6
|
||||
0x88240907, // 001C GETMBR R9 R4 K7
|
||||
0x5429EC77, // 001D LDINT R10 -5000
|
||||
0x7C1C0600, // 001E CALL R7 3
|
||||
0x80040E00, // 001F RET 1 R7
|
||||
0x70020018, // 0020 JMP #003A
|
||||
0x1C180B0A, // 0021 EQ R6 R5 K10
|
||||
0x781A0005, // 0022 JMPF R6 #0029
|
||||
0x8C180706, // 0023 GETMET R6 R3 K6
|
||||
0x88200707, // 0024 GETMBR R8 R3 K7
|
||||
0x54263A97, // 0025 LDINT R9 15000
|
||||
0x7C180600, // 0026 CALL R6 3
|
||||
0x80040C00, // 0027 RET 1 R6
|
||||
0x1C1C0D0A, // 0021 EQ R7 R6 K10
|
||||
0x781E0005, // 0022 JMPF R7 #0029
|
||||
0x8C1C0706, // 0023 GETMET R7 R3 K6
|
||||
0x88240907, // 0024 GETMBR R9 R4 K7
|
||||
0x542A3A97, // 0025 LDINT R10 15000
|
||||
0x7C1C0600, // 0026 CALL R7 3
|
||||
0x80040E00, // 0027 RET 1 R7
|
||||
0x70020010, // 0028 JMP #003A
|
||||
0x541AFFFB, // 0029 LDINT R6 65532
|
||||
0x1C180A06, // 002A EQ R6 R5 R6
|
||||
0x781A0005, // 002B JMPF R6 #0032
|
||||
0x8C180706, // 002C GETMET R6 R3 K6
|
||||
0x8820070B, // 002D GETMBR R8 R3 K11
|
||||
0x58240004, // 002E LDCONST R9 K4
|
||||
0x7C180600, // 002F CALL R6 3
|
||||
0x80040C00, // 0030 RET 1 R6
|
||||
0x541EFFFB, // 0029 LDINT R7 65532
|
||||
0x1C1C0C07, // 002A EQ R7 R6 R7
|
||||
0x781E0005, // 002B JMPF R7 #0032
|
||||
0x8C1C0706, // 002C GETMET R7 R3 K6
|
||||
0x8824090B, // 002D GETMBR R9 R4 K11
|
||||
0x58280004, // 002E LDCONST R10 K4
|
||||
0x7C1C0600, // 002F CALL R7 3
|
||||
0x80040E00, // 0030 RET 1 R7
|
||||
0x70020007, // 0031 JMP #003A
|
||||
0x541AFFFC, // 0032 LDINT R6 65533
|
||||
0x1C180A06, // 0033 EQ R6 R5 R6
|
||||
0x781A0004, // 0034 JMPF R6 #003A
|
||||
0x8C180706, // 0035 GETMET R6 R3 K6
|
||||
0x8820070B, // 0036 GETMBR R8 R3 K11
|
||||
0x54260003, // 0037 LDINT R9 4
|
||||
0x7C180600, // 0038 CALL R6 3
|
||||
0x80040C00, // 0039 RET 1 R6
|
||||
0x70020007, // 003A JMP #0043
|
||||
0x60180003, // 003B GETGBL R6 G3
|
||||
0x5C1C0000, // 003C MOVE R7 R0
|
||||
0x7C180200, // 003D CALL R6 1
|
||||
0x8C180D0C, // 003E GETMET R6 R6 K12
|
||||
0x5C200200, // 003F MOVE R8 R1
|
||||
0x5C240400, // 0040 MOVE R9 R2
|
||||
0x7C180600, // 0041 CALL R6 3
|
||||
0x80040C00, // 0042 RET 1 R6
|
||||
0x80000000, // 0043 RET 0
|
||||
0x541EFFFC, // 0032 LDINT R7 65533
|
||||
0x1C1C0C07, // 0033 EQ R7 R6 R7
|
||||
0x781E0004, // 0034 JMPF R7 #003A
|
||||
0x8C1C0706, // 0035 GETMET R7 R3 K6
|
||||
0x8824090B, // 0036 GETMBR R9 R4 K11
|
||||
0x542A0003, // 0037 LDINT R10 4
|
||||
0x7C1C0600, // 0038 CALL R7 3
|
||||
0x80040E00, // 0039 RET 1 R7
|
||||
0x70020008, // 003A JMP #0044
|
||||
0x601C0003, // 003B GETGBL R7 G3
|
||||
0x5C200000, // 003C MOVE R8 R0
|
||||
0x7C1C0200, // 003D CALL R7 1
|
||||
0x8C1C0F0C, // 003E GETMET R7 R7 K12
|
||||
0x5C240200, // 003F MOVE R9 R1
|
||||
0x5C280400, // 0040 MOVE R10 R2
|
||||
0x5C2C0600, // 0041 MOVE R11 R3
|
||||
0x7C1C0800, // 0042 CALL R7 4
|
||||
0x80040E00, // 0043 RET 1 R7
|
||||
0x80000000, // 0044 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -202,8 +202,8 @@ be_local_closure(Matter_Plugin_Device_invoke_request, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
16, /* nstack */
|
||||
3, /* argc */
|
||||
17, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -217,7 +217,7 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_const_int(3),
|
||||
/* K5 */ be_const_int(0),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(U2),
|
||||
/* K8 */ be_const_int(1),
|
||||
/* K9 */ be_nested_str_weak(U1),
|
||||
@ -251,268 +251,271 @@ be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[261]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x1C180904, // 0004 EQ R6 R4 K4
|
||||
0x781A0021, // 0005 JMPF R6 #0028
|
||||
0x1C180B05, // 0006 EQ R6 R5 K5
|
||||
0x781A0005, // 0007 JMPF R6 #000E
|
||||
0x8C180706, // 0008 GETMET R6 R3 K6
|
||||
0x88200707, // 0009 GETMBR R8 R3 K7
|
||||
0x58240005, // 000A LDCONST R9 K5
|
||||
0x7C180600, // 000B CALL R6 3
|
||||
0x80040C00, // 000C RET 1 R6
|
||||
( &(const binstruction[264]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x1C1C0B04, // 0004 EQ R7 R5 K4
|
||||
0x781E0021, // 0005 JMPF R7 #0028
|
||||
0x1C1C0D05, // 0006 EQ R7 R6 K5
|
||||
0x781E0005, // 0007 JMPF R7 #000E
|
||||
0x8C1C0706, // 0008 GETMET R7 R3 K6
|
||||
0x88240907, // 0009 GETMBR R9 R4 K7
|
||||
0x58280005, // 000A LDCONST R10 K5
|
||||
0x7C1C0600, // 000B CALL R7 3
|
||||
0x80040E00, // 000C RET 1 R7
|
||||
0x70020018, // 000D JMP #0027
|
||||
0x1C180B08, // 000E EQ R6 R5 K8
|
||||
0x781A0005, // 000F JMPF R6 #0016
|
||||
0x8C180706, // 0010 GETMET R6 R3 K6
|
||||
0x88200709, // 0011 GETMBR R8 R3 K9
|
||||
0x58240005, // 0012 LDCONST R9 K5
|
||||
0x7C180600, // 0013 CALL R6 3
|
||||
0x80040C00, // 0014 RET 1 R6
|
||||
0x1C1C0D08, // 000E EQ R7 R6 K8
|
||||
0x781E0005, // 000F JMPF R7 #0016
|
||||
0x8C1C0706, // 0010 GETMET R7 R3 K6
|
||||
0x88240909, // 0011 GETMBR R9 R4 K9
|
||||
0x58280005, // 0012 LDCONST R10 K5
|
||||
0x7C1C0600, // 0013 CALL R7 3
|
||||
0x80040E00, // 0014 RET 1 R7
|
||||
0x70020010, // 0015 JMP #0027
|
||||
0x541AFFFB, // 0016 LDINT R6 65532
|
||||
0x1C180A06, // 0017 EQ R6 R5 R6
|
||||
0x781A0005, // 0018 JMPF R6 #001F
|
||||
0x8C180706, // 0019 GETMET R6 R3 K6
|
||||
0x8820070A, // 001A GETMBR R8 R3 K10
|
||||
0x58240005, // 001B LDCONST R9 K5
|
||||
0x7C180600, // 001C CALL R6 3
|
||||
0x80040C00, // 001D RET 1 R6
|
||||
0x541EFFFB, // 0016 LDINT R7 65532
|
||||
0x1C1C0C07, // 0017 EQ R7 R6 R7
|
||||
0x781E0005, // 0018 JMPF R7 #001F
|
||||
0x8C1C0706, // 0019 GETMET R7 R3 K6
|
||||
0x8824090A, // 001A GETMBR R9 R4 K10
|
||||
0x58280005, // 001B LDCONST R10 K5
|
||||
0x7C1C0600, // 001C CALL R7 3
|
||||
0x80040E00, // 001D RET 1 R7
|
||||
0x70020007, // 001E JMP #0027
|
||||
0x541AFFFC, // 001F LDINT R6 65533
|
||||
0x1C180A06, // 0020 EQ R6 R5 R6
|
||||
0x781A0004, // 0021 JMPF R6 #0027
|
||||
0x8C180706, // 0022 GETMET R6 R3 K6
|
||||
0x8820070A, // 0023 GETMBR R8 R3 K10
|
||||
0x54260003, // 0024 LDINT R9 4
|
||||
0x7C180600, // 0025 CALL R6 3
|
||||
0x80040C00, // 0026 RET 1 R6
|
||||
0x700200DB, // 0027 JMP #0104
|
||||
0x541A0003, // 0028 LDINT R6 4
|
||||
0x1C180806, // 0029 EQ R6 R4 R6
|
||||
0x781A0016, // 002A JMPF R6 #0042
|
||||
0x1C180B05, // 002B EQ R6 R5 K5
|
||||
0x781A0002, // 002C JMPF R6 #0030
|
||||
0x4C180000, // 002D LDNIL R6
|
||||
0x80040C00, // 002E RET 1 R6
|
||||
0x541EFFFC, // 001F LDINT R7 65533
|
||||
0x1C1C0C07, // 0020 EQ R7 R6 R7
|
||||
0x781E0004, // 0021 JMPF R7 #0027
|
||||
0x8C1C0706, // 0022 GETMET R7 R3 K6
|
||||
0x8824090A, // 0023 GETMBR R9 R4 K10
|
||||
0x542A0003, // 0024 LDINT R10 4
|
||||
0x7C1C0600, // 0025 CALL R7 3
|
||||
0x80040E00, // 0026 RET 1 R7
|
||||
0x700200DE, // 0027 JMP #0107
|
||||
0x541E0003, // 0028 LDINT R7 4
|
||||
0x1C1C0A07, // 0029 EQ R7 R5 R7
|
||||
0x781E0016, // 002A JMPF R7 #0042
|
||||
0x1C1C0D05, // 002B EQ R7 R6 K5
|
||||
0x781E0002, // 002C JMPF R7 #0030
|
||||
0x4C1C0000, // 002D LDNIL R7
|
||||
0x80040E00, // 002E RET 1 R7
|
||||
0x70020010, // 002F JMP #0041
|
||||
0x541AFFFB, // 0030 LDINT R6 65532
|
||||
0x1C180A06, // 0031 EQ R6 R5 R6
|
||||
0x781A0005, // 0032 JMPF R6 #0039
|
||||
0x8C180706, // 0033 GETMET R6 R3 K6
|
||||
0x8820070A, // 0034 GETMBR R8 R3 K10
|
||||
0x58240005, // 0035 LDCONST R9 K5
|
||||
0x7C180600, // 0036 CALL R6 3
|
||||
0x80040C00, // 0037 RET 1 R6
|
||||
0x541EFFFB, // 0030 LDINT R7 65532
|
||||
0x1C1C0C07, // 0031 EQ R7 R6 R7
|
||||
0x781E0005, // 0032 JMPF R7 #0039
|
||||
0x8C1C0706, // 0033 GETMET R7 R3 K6
|
||||
0x8824090A, // 0034 GETMBR R9 R4 K10
|
||||
0x58280005, // 0035 LDCONST R10 K5
|
||||
0x7C1C0600, // 0036 CALL R7 3
|
||||
0x80040E00, // 0037 RET 1 R7
|
||||
0x70020007, // 0038 JMP #0041
|
||||
0x541AFFFC, // 0039 LDINT R6 65533
|
||||
0x1C180A06, // 003A EQ R6 R5 R6
|
||||
0x781A0004, // 003B JMPF R6 #0041
|
||||
0x8C180706, // 003C GETMET R6 R3 K6
|
||||
0x8820070A, // 003D GETMBR R8 R3 K10
|
||||
0x54260003, // 003E LDINT R9 4
|
||||
0x7C180600, // 003F CALL R6 3
|
||||
0x80040C00, // 0040 RET 1 R6
|
||||
0x700200C1, // 0041 JMP #0104
|
||||
0x541A0004, // 0042 LDINT R6 5
|
||||
0x1C180806, // 0043 EQ R6 R4 R6
|
||||
0x781A0011, // 0044 JMPF R6 #0057
|
||||
0x541AFFFB, // 0045 LDINT R6 65532
|
||||
0x1C180A06, // 0046 EQ R6 R5 R6
|
||||
0x781A0005, // 0047 JMPF R6 #004E
|
||||
0x8C180706, // 0048 GETMET R6 R3 K6
|
||||
0x8820070A, // 0049 GETMBR R8 R3 K10
|
||||
0x58240005, // 004A LDCONST R9 K5
|
||||
0x7C180600, // 004B CALL R6 3
|
||||
0x80040C00, // 004C RET 1 R6
|
||||
0x541EFFFC, // 0039 LDINT R7 65533
|
||||
0x1C1C0C07, // 003A EQ R7 R6 R7
|
||||
0x781E0004, // 003B JMPF R7 #0041
|
||||
0x8C1C0706, // 003C GETMET R7 R3 K6
|
||||
0x8824090A, // 003D GETMBR R9 R4 K10
|
||||
0x542A0003, // 003E LDINT R10 4
|
||||
0x7C1C0600, // 003F CALL R7 3
|
||||
0x80040E00, // 0040 RET 1 R7
|
||||
0x700200C4, // 0041 JMP #0107
|
||||
0x541E0004, // 0042 LDINT R7 5
|
||||
0x1C1C0A07, // 0043 EQ R7 R5 R7
|
||||
0x781E0011, // 0044 JMPF R7 #0057
|
||||
0x541EFFFB, // 0045 LDINT R7 65532
|
||||
0x1C1C0C07, // 0046 EQ R7 R6 R7
|
||||
0x781E0005, // 0047 JMPF R7 #004E
|
||||
0x8C1C0706, // 0048 GETMET R7 R3 K6
|
||||
0x8824090A, // 0049 GETMBR R9 R4 K10
|
||||
0x58280005, // 004A LDCONST R10 K5
|
||||
0x7C1C0600, // 004B CALL R7 3
|
||||
0x80040E00, // 004C RET 1 R7
|
||||
0x70020007, // 004D JMP #0056
|
||||
0x541AFFFC, // 004E LDINT R6 65533
|
||||
0x1C180A06, // 004F EQ R6 R5 R6
|
||||
0x781A0004, // 0050 JMPF R6 #0056
|
||||
0x8C180706, // 0051 GETMET R6 R3 K6
|
||||
0x8820070A, // 0052 GETMBR R8 R3 K10
|
||||
0x54260003, // 0053 LDINT R9 4
|
||||
0x7C180600, // 0054 CALL R6 3
|
||||
0x80040C00, // 0055 RET 1 R6
|
||||
0x700200AC, // 0056 JMP #0104
|
||||
0x541A001C, // 0057 LDINT R6 29
|
||||
0x1C180806, // 0058 EQ R6 R4 R6
|
||||
0x781A003D, // 0059 JMPF R6 #0098
|
||||
0x1C180B05, // 005A EQ R6 R5 K5
|
||||
0x781A0032, // 005B JMPF R6 #008F
|
||||
0x8C18070B, // 005C GETMET R6 R3 K11
|
||||
0x7C180200, // 005D CALL R6 1
|
||||
0x881C010C, // 005E GETMBR R7 R0 K12
|
||||
0x60200010, // 005F GETGBL R8 G16
|
||||
0x8C240F0D, // 0060 GETMET R9 R7 K13
|
||||
0x7C240200, // 0061 CALL R9 1
|
||||
0x7C200200, // 0062 CALL R8 1
|
||||
0x541EFFFC, // 004E LDINT R7 65533
|
||||
0x1C1C0C07, // 004F EQ R7 R6 R7
|
||||
0x781E0004, // 0050 JMPF R7 #0056
|
||||
0x8C1C0706, // 0051 GETMET R7 R3 K6
|
||||
0x8824090A, // 0052 GETMBR R9 R4 K10
|
||||
0x542A0003, // 0053 LDINT R10 4
|
||||
0x7C1C0600, // 0054 CALL R7 3
|
||||
0x80040E00, // 0055 RET 1 R7
|
||||
0x700200AF, // 0056 JMP #0107
|
||||
0x541E001C, // 0057 LDINT R7 29
|
||||
0x1C1C0A07, // 0058 EQ R7 R5 R7
|
||||
0x781E003E, // 0059 JMPF R7 #0099
|
||||
0x1C1C0D05, // 005A EQ R7 R6 K5
|
||||
0x781E0032, // 005B JMPF R7 #008F
|
||||
0x8C1C090B, // 005C GETMET R7 R4 K11
|
||||
0x7C1C0200, // 005D CALL R7 1
|
||||
0x8820010C, // 005E GETMBR R8 R0 K12
|
||||
0x60240010, // 005F GETGBL R9 G16
|
||||
0x8C28110D, // 0060 GETMET R10 R8 K13
|
||||
0x7C280200, // 0061 CALL R10 1
|
||||
0x7C240200, // 0062 CALL R9 1
|
||||
0xA802000E, // 0063 EXBLK 0 #0073
|
||||
0x5C241000, // 0064 MOVE R9 R8
|
||||
0x7C240000, // 0065 CALL R9 0
|
||||
0x8C280D0E, // 0066 GETMET R10 R6 K14
|
||||
0x7C280200, // 0067 CALL R10 1
|
||||
0x8C2C150F, // 0068 GETMET R11 R10 K15
|
||||
0x58340005, // 0069 LDCONST R13 K5
|
||||
0x88380707, // 006A GETMBR R14 R3 K7
|
||||
0x5C3C1200, // 006B MOVE R15 R9
|
||||
0x7C2C0800, // 006C CALL R11 4
|
||||
0x8C2C150F, // 006D GETMET R11 R10 K15
|
||||
0x58340008, // 006E LDCONST R13 K8
|
||||
0x88380707, // 006F GETMBR R14 R3 K7
|
||||
0x943C0E09, // 0070 GETIDX R15 R7 R9
|
||||
0x7C2C0800, // 0071 CALL R11 4
|
||||
0x5C281200, // 0064 MOVE R10 R9
|
||||
0x7C280000, // 0065 CALL R10 0
|
||||
0x8C2C0F0E, // 0066 GETMET R11 R7 K14
|
||||
0x7C2C0200, // 0067 CALL R11 1
|
||||
0x8C30170F, // 0068 GETMET R12 R11 K15
|
||||
0x58380005, // 0069 LDCONST R14 K5
|
||||
0x883C0907, // 006A GETMBR R15 R4 K7
|
||||
0x5C401400, // 006B MOVE R16 R10
|
||||
0x7C300800, // 006C CALL R12 4
|
||||
0x8C30170F, // 006D GETMET R12 R11 K15
|
||||
0x58380008, // 006E LDCONST R14 K8
|
||||
0x883C0907, // 006F GETMBR R15 R4 K7
|
||||
0x9440100A, // 0070 GETIDX R16 R8 R10
|
||||
0x7C300800, // 0071 CALL R12 4
|
||||
0x7001FFF0, // 0072 JMP #0064
|
||||
0x58200010, // 0073 LDCONST R8 K16
|
||||
0xAC200200, // 0074 CATCH R8 1 0
|
||||
0x58240010, // 0073 LDCONST R9 K16
|
||||
0xAC240200, // 0074 CATCH R9 1 0
|
||||
0xB0080000, // 0075 RAISE 2 R0 R0
|
||||
0x88200111, // 0076 GETMBR R8 R0 K17
|
||||
0x8C201112, // 0077 GETMET R8 R8 K18
|
||||
0x8C280313, // 0078 GETMET R10 R1 K19
|
||||
0x7C280200, // 0079 CALL R10 1
|
||||
0x7C200400, // 007A CALL R8 2
|
||||
0x4C240000, // 007B LDNIL R9
|
||||
0x1C201009, // 007C EQ R8 R8 R9
|
||||
0x7822000E, // 007D JMPF R8 #008D
|
||||
0x88200114, // 007E GETMBR R8 R0 K20
|
||||
0x88201115, // 007F GETMBR R8 R8 K21
|
||||
0x7422000B, // 0080 JMPT R8 #008D
|
||||
0x8C200D0E, // 0081 GETMET R8 R6 K14
|
||||
0x7C200200, // 0082 CALL R8 1
|
||||
0x8C24110F, // 0083 GETMET R9 R8 K15
|
||||
0x582C0005, // 0084 LDCONST R11 K5
|
||||
0x88300707, // 0085 GETMBR R12 R3 K7
|
||||
0x54360012, // 0086 LDINT R13 19
|
||||
0x7C240800, // 0087 CALL R9 4
|
||||
0x8C24110F, // 0088 GETMET R9 R8 K15
|
||||
0x582C0008, // 0089 LDCONST R11 K8
|
||||
0x88300707, // 008A GETMBR R12 R3 K7
|
||||
0x58340008, // 008B LDCONST R13 K8
|
||||
0x7C240800, // 008C CALL R9 4
|
||||
0x80040C00, // 008D RET 1 R6
|
||||
0x70020007, // 008E JMP #0097
|
||||
0x60180003, // 008F GETGBL R6 G3
|
||||
0x5C1C0000, // 0090 MOVE R7 R0
|
||||
0x7C180200, // 0091 CALL R6 1
|
||||
0x8C180D16, // 0092 GETMET R6 R6 K22
|
||||
0x5C200200, // 0093 MOVE R8 R1
|
||||
0x5C240400, // 0094 MOVE R9 R2
|
||||
0x7C180600, // 0095 CALL R6 3
|
||||
0x80040C00, // 0096 RET 1 R6
|
||||
0x7002006B, // 0097 JMP #0104
|
||||
0x541A0038, // 0098 LDINT R6 57
|
||||
0x1C180806, // 0099 EQ R6 R4 R6
|
||||
0x781A0060, // 009A JMPF R6 #00FC
|
||||
0xA41A2E00, // 009B IMPORT R6 K23
|
||||
0x1C1C0B04, // 009C EQ R7 R5 K4
|
||||
0x781E000A, // 009D JMPF R7 #00A9
|
||||
0x8C1C0706, // 009E GETMET R7 R3 K6
|
||||
0x88240718, // 009F GETMBR R9 R3 K24
|
||||
0xB82A3200, // 00A0 GETNGBL R10 K25
|
||||
0x8C28151A, // 00A1 GETMET R10 R10 K26
|
||||
0x5830001B, // 00A2 LDCONST R12 K27
|
||||
0x50340200, // 00A3 LDBOOL R13 1 0
|
||||
0x7C280600, // 00A4 CALL R10 3
|
||||
0x9428151B, // 00A5 GETIDX R10 R10 K27
|
||||
0x7C1C0600, // 00A6 CALL R7 3
|
||||
0x80040E00, // 00A7 RET 1 R7
|
||||
0x70020051, // 00A8 JMP #00FB
|
||||
0x541E0004, // 00A9 LDINT R7 5
|
||||
0x1C1C0A07, // 00AA EQ R7 R5 R7
|
||||
0x781E0006, // 00AB JMPF R7 #00B3
|
||||
0x8C1C0706, // 00AC GETMET R7 R3 K6
|
||||
0x88240718, // 00AD GETMBR R9 R3 K24
|
||||
0x8C28011C, // 00AE GETMET R10 R0 K28
|
||||
0x7C280200, // 00AF CALL R10 1
|
||||
0x7C1C0600, // 00B0 CALL R7 3
|
||||
0x80040E00, // 00B1 RET 1 R7
|
||||
0x70020047, // 00B2 JMP #00FB
|
||||
0x541E0009, // 00B3 LDINT R7 10
|
||||
0x1C1C0A07, // 00B4 EQ R7 R5 R7
|
||||
0x781E0015, // 00B5 JMPF R7 #00CC
|
||||
0xB81E3200, // 00B6 GETNGBL R7 K25
|
||||
0x8C1C0F1A, // 00B7 GETMET R7 R7 K26
|
||||
0x5824001D, // 00B8 LDCONST R9 K29
|
||||
0x50280200, // 00B9 LDBOOL R10 1 0
|
||||
0x7C1C0600, // 00BA CALL R7 3
|
||||
0x941C0F1E, // 00BB GETIDX R7 R7 K30
|
||||
0x941C0F1F, // 00BC GETIDX R7 R7 K31
|
||||
0x8C200D12, // 00BD GETMET R8 R6 K18
|
||||
0x5C280E00, // 00BE MOVE R10 R7
|
||||
0x582C0020, // 00BF LDCONST R11 K32
|
||||
0x7C200600, // 00C0 CALL R8 3
|
||||
0x24241105, // 00C1 GT R9 R8 K5
|
||||
0x78260002, // 00C2 JMPF R9 #00C6
|
||||
0x04241108, // 00C3 SUB R9 R8 K8
|
||||
0x40260A09, // 00C4 CONNECT R9 K5 R9
|
||||
0x941C0E09, // 00C5 GETIDX R7 R7 R9
|
||||
0x8C240706, // 00C6 GETMET R9 R3 K6
|
||||
0x882C0718, // 00C7 GETMBR R11 R3 K24
|
||||
0x5C300E00, // 00C8 MOVE R12 R7
|
||||
0x7C240600, // 00C9 CALL R9 3
|
||||
0x80041200, // 00CA RET 1 R9
|
||||
0x7002002E, // 00CB JMP #00FB
|
||||
0x541E000E, // 00CC LDINT R7 15
|
||||
0x1C1C0A07, // 00CD EQ R7 R5 R7
|
||||
0x781E000B, // 00CE JMPF R7 #00DB
|
||||
0x8C1C0706, // 00CF GETMET R7 R3 K6
|
||||
0x88240718, // 00D0 GETMBR R9 R3 K24
|
||||
0xB82A3200, // 00D1 GETNGBL R10 K25
|
||||
0x8C281521, // 00D2 GETMET R10 R10 K33
|
||||
0x7C280200, // 00D3 CALL R10 1
|
||||
0x8C281512, // 00D4 GETMET R10 R10 K18
|
||||
0x58300022, // 00D5 LDCONST R12 K34
|
||||
0x58340023, // 00D6 LDCONST R13 K35
|
||||
0x7C280600, // 00D7 CALL R10 3
|
||||
0x7C1C0600, // 00D8 CALL R7 3
|
||||
0x80040E00, // 00D9 RET 1 R7
|
||||
0x7002001F, // 00DA JMP #00FB
|
||||
0x541E0010, // 00DB LDINT R7 17
|
||||
0x1C1C0A07, // 00DC EQ R7 R5 R7
|
||||
0x781E0005, // 00DD JMPF R7 #00E4
|
||||
0x8C1C0706, // 00DE GETMET R7 R3 K6
|
||||
0x88240724, // 00DF GETMBR R9 R3 K36
|
||||
0x58280008, // 00E0 LDCONST R10 K8
|
||||
0x7C1C0600, // 00E1 CALL R7 3
|
||||
0x80040E00, // 00E2 RET 1 R7
|
||||
0x70020016, // 00E3 JMP #00FB
|
||||
0x541E0011, // 00E4 LDINT R7 18
|
||||
0x1C1C0A07, // 00E5 EQ R7 R5 R7
|
||||
0x781E000B, // 00E6 JMPF R7 #00F3
|
||||
0x8C1C0706, // 00E7 GETMET R7 R3 K6
|
||||
0x88240718, // 00E8 GETMBR R9 R3 K24
|
||||
0xB82A3200, // 00E9 GETNGBL R10 K25
|
||||
0x8C281521, // 00EA GETMET R10 R10 K33
|
||||
0x7C280200, // 00EB CALL R10 1
|
||||
0x8C281512, // 00EC GETMET R10 R10 K18
|
||||
0x58300022, // 00ED LDCONST R12 K34
|
||||
0x58340023, // 00EE LDCONST R13 K35
|
||||
0x7C280600, // 00EF CALL R10 3
|
||||
0x7C1C0600, // 00F0 CALL R7 3
|
||||
0x80040E00, // 00F1 RET 1 R7
|
||||
0x70020007, // 00F2 JMP #00FB
|
||||
0x601C0003, // 00F3 GETGBL R7 G3
|
||||
0x5C200000, // 00F4 MOVE R8 R0
|
||||
0x7C1C0200, // 00F5 CALL R7 1
|
||||
0x8C1C0F16, // 00F6 GETMET R7 R7 K22
|
||||
0x5C240200, // 00F7 MOVE R9 R1
|
||||
0x5C280400, // 00F8 MOVE R10 R2
|
||||
0x7C1C0600, // 00F9 CALL R7 3
|
||||
0x80040E00, // 00FA RET 1 R7
|
||||
0x70020007, // 00FB JMP #0104
|
||||
0x60180003, // 00FC GETGBL R6 G3
|
||||
0x5C1C0000, // 00FD MOVE R7 R0
|
||||
0x7C180200, // 00FE CALL R6 1
|
||||
0x8C180D16, // 00FF GETMET R6 R6 K22
|
||||
0x5C200200, // 0100 MOVE R8 R1
|
||||
0x5C240400, // 0101 MOVE R9 R2
|
||||
0x7C180600, // 0102 CALL R6 3
|
||||
0x80040C00, // 0103 RET 1 R6
|
||||
0x80000000, // 0104 RET 0
|
||||
0x88240111, // 0076 GETMBR R9 R0 K17
|
||||
0x8C241312, // 0077 GETMET R9 R9 K18
|
||||
0x8C2C0313, // 0078 GETMET R11 R1 K19
|
||||
0x7C2C0200, // 0079 CALL R11 1
|
||||
0x7C240400, // 007A CALL R9 2
|
||||
0x4C280000, // 007B LDNIL R10
|
||||
0x1C24120A, // 007C EQ R9 R9 R10
|
||||
0x7826000E, // 007D JMPF R9 #008D
|
||||
0x88240114, // 007E GETMBR R9 R0 K20
|
||||
0x88241315, // 007F GETMBR R9 R9 K21
|
||||
0x7426000B, // 0080 JMPT R9 #008D
|
||||
0x8C240F0E, // 0081 GETMET R9 R7 K14
|
||||
0x7C240200, // 0082 CALL R9 1
|
||||
0x8C28130F, // 0083 GETMET R10 R9 K15
|
||||
0x58300005, // 0084 LDCONST R12 K5
|
||||
0x88340907, // 0085 GETMBR R13 R4 K7
|
||||
0x543A0012, // 0086 LDINT R14 19
|
||||
0x7C280800, // 0087 CALL R10 4
|
||||
0x8C28130F, // 0088 GETMET R10 R9 K15
|
||||
0x58300008, // 0089 LDCONST R12 K8
|
||||
0x88340907, // 008A GETMBR R13 R4 K7
|
||||
0x58380008, // 008B LDCONST R14 K8
|
||||
0x7C280800, // 008C CALL R10 4
|
||||
0x80040E00, // 008D RET 1 R7
|
||||
0x70020008, // 008E JMP #0098
|
||||
0x601C0003, // 008F GETGBL R7 G3
|
||||
0x5C200000, // 0090 MOVE R8 R0
|
||||
0x7C1C0200, // 0091 CALL R7 1
|
||||
0x8C1C0F16, // 0092 GETMET R7 R7 K22
|
||||
0x5C240200, // 0093 MOVE R9 R1
|
||||
0x5C280400, // 0094 MOVE R10 R2
|
||||
0x5C2C0600, // 0095 MOVE R11 R3
|
||||
0x7C1C0800, // 0096 CALL R7 4
|
||||
0x80040E00, // 0097 RET 1 R7
|
||||
0x7002006D, // 0098 JMP #0107
|
||||
0x541E0038, // 0099 LDINT R7 57
|
||||
0x1C1C0A07, // 009A EQ R7 R5 R7
|
||||
0x781E0061, // 009B JMPF R7 #00FE
|
||||
0xA41E2E00, // 009C IMPORT R7 K23
|
||||
0x1C200D04, // 009D EQ R8 R6 K4
|
||||
0x7822000A, // 009E JMPF R8 #00AA
|
||||
0x8C200706, // 009F GETMET R8 R3 K6
|
||||
0x88280918, // 00A0 GETMBR R10 R4 K24
|
||||
0xB82E3200, // 00A1 GETNGBL R11 K25
|
||||
0x8C2C171A, // 00A2 GETMET R11 R11 K26
|
||||
0x5834001B, // 00A3 LDCONST R13 K27
|
||||
0x50380200, // 00A4 LDBOOL R14 1 0
|
||||
0x7C2C0600, // 00A5 CALL R11 3
|
||||
0x942C171B, // 00A6 GETIDX R11 R11 K27
|
||||
0x7C200600, // 00A7 CALL R8 3
|
||||
0x80041000, // 00A8 RET 1 R8
|
||||
0x70020052, // 00A9 JMP #00FD
|
||||
0x54220004, // 00AA LDINT R8 5
|
||||
0x1C200C08, // 00AB EQ R8 R6 R8
|
||||
0x78220006, // 00AC JMPF R8 #00B4
|
||||
0x8C200706, // 00AD GETMET R8 R3 K6
|
||||
0x88280918, // 00AE GETMBR R10 R4 K24
|
||||
0x8C2C011C, // 00AF GETMET R11 R0 K28
|
||||
0x7C2C0200, // 00B0 CALL R11 1
|
||||
0x7C200600, // 00B1 CALL R8 3
|
||||
0x80041000, // 00B2 RET 1 R8
|
||||
0x70020048, // 00B3 JMP #00FD
|
||||
0x54220009, // 00B4 LDINT R8 10
|
||||
0x1C200C08, // 00B5 EQ R8 R6 R8
|
||||
0x78220015, // 00B6 JMPF R8 #00CD
|
||||
0xB8223200, // 00B7 GETNGBL R8 K25
|
||||
0x8C20111A, // 00B8 GETMET R8 R8 K26
|
||||
0x5828001D, // 00B9 LDCONST R10 K29
|
||||
0x502C0200, // 00BA LDBOOL R11 1 0
|
||||
0x7C200600, // 00BB CALL R8 3
|
||||
0x9420111E, // 00BC GETIDX R8 R8 K30
|
||||
0x9420111F, // 00BD GETIDX R8 R8 K31
|
||||
0x8C240F12, // 00BE GETMET R9 R7 K18
|
||||
0x5C2C1000, // 00BF MOVE R11 R8
|
||||
0x58300020, // 00C0 LDCONST R12 K32
|
||||
0x7C240600, // 00C1 CALL R9 3
|
||||
0x24281305, // 00C2 GT R10 R9 K5
|
||||
0x782A0002, // 00C3 JMPF R10 #00C7
|
||||
0x04281308, // 00C4 SUB R10 R9 K8
|
||||
0x402A0A0A, // 00C5 CONNECT R10 K5 R10
|
||||
0x9420100A, // 00C6 GETIDX R8 R8 R10
|
||||
0x8C280706, // 00C7 GETMET R10 R3 K6
|
||||
0x88300918, // 00C8 GETMBR R12 R4 K24
|
||||
0x5C341000, // 00C9 MOVE R13 R8
|
||||
0x7C280600, // 00CA CALL R10 3
|
||||
0x80041400, // 00CB RET 1 R10
|
||||
0x7002002F, // 00CC JMP #00FD
|
||||
0x5422000E, // 00CD LDINT R8 15
|
||||
0x1C200C08, // 00CE EQ R8 R6 R8
|
||||
0x7822000B, // 00CF JMPF R8 #00DC
|
||||
0x8C200706, // 00D0 GETMET R8 R3 K6
|
||||
0x88280918, // 00D1 GETMBR R10 R4 K24
|
||||
0xB82E3200, // 00D2 GETNGBL R11 K25
|
||||
0x8C2C1721, // 00D3 GETMET R11 R11 K33
|
||||
0x7C2C0200, // 00D4 CALL R11 1
|
||||
0x8C2C1712, // 00D5 GETMET R11 R11 K18
|
||||
0x58340022, // 00D6 LDCONST R13 K34
|
||||
0x58380023, // 00D7 LDCONST R14 K35
|
||||
0x7C2C0600, // 00D8 CALL R11 3
|
||||
0x7C200600, // 00D9 CALL R8 3
|
||||
0x80041000, // 00DA RET 1 R8
|
||||
0x70020020, // 00DB JMP #00FD
|
||||
0x54220010, // 00DC LDINT R8 17
|
||||
0x1C200C08, // 00DD EQ R8 R6 R8
|
||||
0x78220005, // 00DE JMPF R8 #00E5
|
||||
0x8C200706, // 00DF GETMET R8 R3 K6
|
||||
0x88280924, // 00E0 GETMBR R10 R4 K36
|
||||
0x582C0008, // 00E1 LDCONST R11 K8
|
||||
0x7C200600, // 00E2 CALL R8 3
|
||||
0x80041000, // 00E3 RET 1 R8
|
||||
0x70020017, // 00E4 JMP #00FD
|
||||
0x54220011, // 00E5 LDINT R8 18
|
||||
0x1C200C08, // 00E6 EQ R8 R6 R8
|
||||
0x7822000B, // 00E7 JMPF R8 #00F4
|
||||
0x8C200706, // 00E8 GETMET R8 R3 K6
|
||||
0x88280918, // 00E9 GETMBR R10 R4 K24
|
||||
0xB82E3200, // 00EA GETNGBL R11 K25
|
||||
0x8C2C1721, // 00EB GETMET R11 R11 K33
|
||||
0x7C2C0200, // 00EC CALL R11 1
|
||||
0x8C2C1712, // 00ED GETMET R11 R11 K18
|
||||
0x58340022, // 00EE LDCONST R13 K34
|
||||
0x58380023, // 00EF LDCONST R14 K35
|
||||
0x7C2C0600, // 00F0 CALL R11 3
|
||||
0x7C200600, // 00F1 CALL R8 3
|
||||
0x80041000, // 00F2 RET 1 R8
|
||||
0x70020008, // 00F3 JMP #00FD
|
||||
0x60200003, // 00F4 GETGBL R8 G3
|
||||
0x5C240000, // 00F5 MOVE R9 R0
|
||||
0x7C200200, // 00F6 CALL R8 1
|
||||
0x8C201116, // 00F7 GETMET R8 R8 K22
|
||||
0x5C280200, // 00F8 MOVE R10 R1
|
||||
0x5C2C0400, // 00F9 MOVE R11 R2
|
||||
0x5C300600, // 00FA MOVE R12 R3
|
||||
0x7C200800, // 00FB CALL R8 4
|
||||
0x80041000, // 00FC RET 1 R8
|
||||
0x70020008, // 00FD JMP #0107
|
||||
0x601C0003, // 00FE GETGBL R7 G3
|
||||
0x5C200000, // 00FF MOVE R8 R0
|
||||
0x7C1C0200, // 0100 CALL R7 1
|
||||
0x8C1C0F16, // 0101 GETMET R7 R7 K22
|
||||
0x5C240200, // 0102 MOVE R9 R1
|
||||
0x5C280400, // 0103 MOVE R10 R2
|
||||
0x5C2C0600, // 0104 MOVE R11 R3
|
||||
0x7C1C0800, // 0105 CALL R7 4
|
||||
0x80040E00, // 0106 RET 1 R7
|
||||
0x80000000, // 0107 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -67,8 +67,8 @@ be_local_closure(Matter_Plugin_Light0_update_shadow, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light0_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -82,7 +82,7 @@ be_local_closure(Matter_Plugin_Light0_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_const_int(0),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(BOOL),
|
||||
/* K8 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K9 */ be_nested_str_weak(U4),
|
||||
@ -90,51 +90,52 @@ be_local_closure(Matter_Plugin_Light0_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[44]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0005, // 0004 LDINT R6 6
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A001B, // 0006 JMPF R6 #0023
|
||||
0x8C180104, // 0007 GETMET R6 R0 K4
|
||||
0x7C180200, // 0008 CALL R6 1
|
||||
0x1C180B05, // 0009 EQ R6 R5 K5
|
||||
0x781A0005, // 000A JMPF R6 #0011
|
||||
0x8C180706, // 000B GETMET R6 R3 K6
|
||||
0x88200707, // 000C GETMBR R8 R3 K7
|
||||
0x88240108, // 000D GETMBR R9 R0 K8
|
||||
0x7C180600, // 000E CALL R6 3
|
||||
0x80040C00, // 000F RET 1 R6
|
||||
( &(const binstruction[45]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0005, // 0004 LDINT R7 6
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E001B, // 0006 JMPF R7 #0023
|
||||
0x8C1C0104, // 0007 GETMET R7 R0 K4
|
||||
0x7C1C0200, // 0008 CALL R7 1
|
||||
0x1C1C0D05, // 0009 EQ R7 R6 K5
|
||||
0x781E0005, // 000A JMPF R7 #0011
|
||||
0x8C1C0706, // 000B GETMET R7 R3 K6
|
||||
0x88240907, // 000C GETMBR R9 R4 K7
|
||||
0x88280108, // 000D GETMBR R10 R0 K8
|
||||
0x7C1C0600, // 000E CALL R7 3
|
||||
0x80040E00, // 000F RET 1 R7
|
||||
0x70020010, // 0010 JMP #0022
|
||||
0x541AFFFB, // 0011 LDINT R6 65532
|
||||
0x1C180A06, // 0012 EQ R6 R5 R6
|
||||
0x781A0005, // 0013 JMPF R6 #001A
|
||||
0x8C180706, // 0014 GETMET R6 R3 K6
|
||||
0x88200709, // 0015 GETMBR R8 R3 K9
|
||||
0x58240005, // 0016 LDCONST R9 K5
|
||||
0x7C180600, // 0017 CALL R6 3
|
||||
0x80040C00, // 0018 RET 1 R6
|
||||
0x541EFFFB, // 0011 LDINT R7 65532
|
||||
0x1C1C0C07, // 0012 EQ R7 R6 R7
|
||||
0x781E0005, // 0013 JMPF R7 #001A
|
||||
0x8C1C0706, // 0014 GETMET R7 R3 K6
|
||||
0x88240909, // 0015 GETMBR R9 R4 K9
|
||||
0x58280005, // 0016 LDCONST R10 K5
|
||||
0x7C1C0600, // 0017 CALL R7 3
|
||||
0x80040E00, // 0018 RET 1 R7
|
||||
0x70020007, // 0019 JMP #0022
|
||||
0x541AFFFC, // 001A LDINT R6 65533
|
||||
0x1C180A06, // 001B EQ R6 R5 R6
|
||||
0x781A0004, // 001C JMPF R6 #0022
|
||||
0x8C180706, // 001D GETMET R6 R3 K6
|
||||
0x88200709, // 001E GETMBR R8 R3 K9
|
||||
0x54260003, // 001F LDINT R9 4
|
||||
0x7C180600, // 0020 CALL R6 3
|
||||
0x80040C00, // 0021 RET 1 R6
|
||||
0x70020007, // 0022 JMP #002B
|
||||
0x60180003, // 0023 GETGBL R6 G3
|
||||
0x5C1C0000, // 0024 MOVE R7 R0
|
||||
0x7C180200, // 0025 CALL R6 1
|
||||
0x8C180D0A, // 0026 GETMET R6 R6 K10
|
||||
0x5C200200, // 0027 MOVE R8 R1
|
||||
0x5C240400, // 0028 MOVE R9 R2
|
||||
0x7C180600, // 0029 CALL R6 3
|
||||
0x80040C00, // 002A RET 1 R6
|
||||
0x80000000, // 002B RET 0
|
||||
0x541EFFFC, // 001A LDINT R7 65533
|
||||
0x1C1C0C07, // 001B EQ R7 R6 R7
|
||||
0x781E0004, // 001C JMPF R7 #0022
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240909, // 001E GETMBR R9 R4 K9
|
||||
0x542A0003, // 001F LDINT R10 4
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020008, // 0022 JMP #002C
|
||||
0x601C0003, // 0023 GETGBL R7 G3
|
||||
0x5C200000, // 0024 MOVE R8 R0
|
||||
0x7C1C0200, // 0025 CALL R7 1
|
||||
0x8C1C0F0A, // 0026 GETMET R7 R7 K10
|
||||
0x5C240200, // 0027 MOVE R9 R1
|
||||
0x5C280400, // 0028 MOVE R10 R2
|
||||
0x5C2C0600, // 0029 MOVE R11 R3
|
||||
0x7C1C0800, // 002A CALL R7 4
|
||||
0x80040E00, // 002B RET 1 R7
|
||||
0x80000000, // 002C RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -237,8 +237,8 @@ be_local_closure(Matter_Plugin_Light1_invoke_request, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light1_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -252,7 +252,7 @@ be_local_closure(Matter_Plugin_Light1_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_const_int(0),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(U1),
|
||||
/* K8 */ be_nested_str_weak(shadow_bri),
|
||||
/* K9 */ be_const_int(2),
|
||||
@ -263,85 +263,86 @@ be_local_closure(Matter_Plugin_Light1_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[78]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0007, // 0004 LDINT R6 8
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A003D, // 0006 JMPF R6 #0045
|
||||
0x8C180104, // 0007 GETMET R6 R0 K4
|
||||
0x7C180200, // 0008 CALL R6 1
|
||||
0x1C180B05, // 0009 EQ R6 R5 K5
|
||||
0x781A0005, // 000A JMPF R6 #0011
|
||||
0x8C180706, // 000B GETMET R6 R3 K6
|
||||
0x88200707, // 000C GETMBR R8 R3 K7
|
||||
0x88240108, // 000D GETMBR R9 R0 K8
|
||||
0x7C180600, // 000E CALL R6 3
|
||||
0x80040C00, // 000F RET 1 R6
|
||||
( &(const binstruction[79]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0007, // 0004 LDINT R7 8
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E003D, // 0006 JMPF R7 #0045
|
||||
0x8C1C0104, // 0007 GETMET R7 R0 K4
|
||||
0x7C1C0200, // 0008 CALL R7 1
|
||||
0x1C1C0D05, // 0009 EQ R7 R6 K5
|
||||
0x781E0005, // 000A JMPF R7 #0011
|
||||
0x8C1C0706, // 000B GETMET R7 R3 K6
|
||||
0x88240907, // 000C GETMBR R9 R4 K7
|
||||
0x88280108, // 000D GETMBR R10 R0 K8
|
||||
0x7C1C0600, // 000E CALL R7 3
|
||||
0x80040E00, // 000F RET 1 R7
|
||||
0x70020032, // 0010 JMP #0044
|
||||
0x1C180B09, // 0011 EQ R6 R5 K9
|
||||
0x781A0005, // 0012 JMPF R6 #0019
|
||||
0x8C180706, // 0013 GETMET R6 R3 K6
|
||||
0x88200707, // 0014 GETMBR R8 R3 K7
|
||||
0x58240005, // 0015 LDCONST R9 K5
|
||||
0x7C180600, // 0016 CALL R6 3
|
||||
0x80040C00, // 0017 RET 1 R6
|
||||
0x1C1C0D09, // 0011 EQ R7 R6 K9
|
||||
0x781E0005, // 0012 JMPF R7 #0019
|
||||
0x8C1C0706, // 0013 GETMET R7 R3 K6
|
||||
0x88240907, // 0014 GETMBR R9 R4 K7
|
||||
0x58280005, // 0015 LDCONST R10 K5
|
||||
0x7C1C0600, // 0016 CALL R7 3
|
||||
0x80040E00, // 0017 RET 1 R7
|
||||
0x7002002A, // 0018 JMP #0044
|
||||
0x1C180B0A, // 0019 EQ R6 R5 K10
|
||||
0x781A0005, // 001A JMPF R6 #0021
|
||||
0x8C180706, // 001B GETMET R6 R3 K6
|
||||
0x88200707, // 001C GETMBR R8 R3 K7
|
||||
0x542600FD, // 001D LDINT R9 254
|
||||
0x7C180600, // 001E CALL R6 3
|
||||
0x80040C00, // 001F RET 1 R6
|
||||
0x1C1C0D0A, // 0019 EQ R7 R6 K10
|
||||
0x781E0005, // 001A JMPF R7 #0021
|
||||
0x8C1C0706, // 001B GETMET R7 R3 K6
|
||||
0x88240907, // 001C GETMBR R9 R4 K7
|
||||
0x542A00FD, // 001D LDINT R10 254
|
||||
0x7C1C0600, // 001E CALL R7 3
|
||||
0x80040E00, // 001F RET 1 R7
|
||||
0x70020022, // 0020 JMP #0044
|
||||
0x541A000E, // 0021 LDINT R6 15
|
||||
0x1C180A06, // 0022 EQ R6 R5 R6
|
||||
0x781A0005, // 0023 JMPF R6 #002A
|
||||
0x8C180706, // 0024 GETMET R6 R3 K6
|
||||
0x88200707, // 0025 GETMBR R8 R3 K7
|
||||
0x58240005, // 0026 LDCONST R9 K5
|
||||
0x7C180600, // 0027 CALL R6 3
|
||||
0x80040C00, // 0028 RET 1 R6
|
||||
0x541E000E, // 0021 LDINT R7 15
|
||||
0x1C1C0C07, // 0022 EQ R7 R6 R7
|
||||
0x781E0005, // 0023 JMPF R7 #002A
|
||||
0x8C1C0706, // 0024 GETMET R7 R3 K6
|
||||
0x88240907, // 0025 GETMBR R9 R4 K7
|
||||
0x58280005, // 0026 LDCONST R10 K5
|
||||
0x7C1C0600, // 0027 CALL R7 3
|
||||
0x80040E00, // 0028 RET 1 R7
|
||||
0x70020019, // 0029 JMP #0044
|
||||
0x541A0010, // 002A LDINT R6 17
|
||||
0x1C180A06, // 002B EQ R6 R5 R6
|
||||
0x781A0005, // 002C JMPF R6 #0033
|
||||
0x8C180706, // 002D GETMET R6 R3 K6
|
||||
0x88200707, // 002E GETMBR R8 R3 K7
|
||||
0x88240108, // 002F GETMBR R9 R0 K8
|
||||
0x7C180600, // 0030 CALL R6 3
|
||||
0x80040C00, // 0031 RET 1 R6
|
||||
0x541E0010, // 002A LDINT R7 17
|
||||
0x1C1C0C07, // 002B EQ R7 R6 R7
|
||||
0x781E0005, // 002C JMPF R7 #0033
|
||||
0x8C1C0706, // 002D GETMET R7 R3 K6
|
||||
0x88240907, // 002E GETMBR R9 R4 K7
|
||||
0x88280108, // 002F GETMBR R10 R0 K8
|
||||
0x7C1C0600, // 0030 CALL R7 3
|
||||
0x80040E00, // 0031 RET 1 R7
|
||||
0x70020010, // 0032 JMP #0044
|
||||
0x541AFFFB, // 0033 LDINT R6 65532
|
||||
0x1C180A06, // 0034 EQ R6 R5 R6
|
||||
0x781A0005, // 0035 JMPF R6 #003C
|
||||
0x8C180706, // 0036 GETMET R6 R3 K6
|
||||
0x8820070B, // 0037 GETMBR R8 R3 K11
|
||||
0x5824000C, // 0038 LDCONST R9 K12
|
||||
0x7C180600, // 0039 CALL R6 3
|
||||
0x80040C00, // 003A RET 1 R6
|
||||
0x541EFFFB, // 0033 LDINT R7 65532
|
||||
0x1C1C0C07, // 0034 EQ R7 R6 R7
|
||||
0x781E0005, // 0035 JMPF R7 #003C
|
||||
0x8C1C0706, // 0036 GETMET R7 R3 K6
|
||||
0x8824090B, // 0037 GETMBR R9 R4 K11
|
||||
0x5828000C, // 0038 LDCONST R10 K12
|
||||
0x7C1C0600, // 0039 CALL R7 3
|
||||
0x80040E00, // 003A RET 1 R7
|
||||
0x70020007, // 003B JMP #0044
|
||||
0x541AFFFC, // 003C LDINT R6 65533
|
||||
0x1C180A06, // 003D EQ R6 R5 R6
|
||||
0x781A0004, // 003E JMPF R6 #0044
|
||||
0x8C180706, // 003F GETMET R6 R3 K6
|
||||
0x8820070B, // 0040 GETMBR R8 R3 K11
|
||||
0x54260004, // 0041 LDINT R9 5
|
||||
0x7C180600, // 0042 CALL R6 3
|
||||
0x80040C00, // 0043 RET 1 R6
|
||||
0x70020007, // 0044 JMP #004D
|
||||
0x60180003, // 0045 GETGBL R6 G3
|
||||
0x5C1C0000, // 0046 MOVE R7 R0
|
||||
0x7C180200, // 0047 CALL R6 1
|
||||
0x8C180D0D, // 0048 GETMET R6 R6 K13
|
||||
0x5C200200, // 0049 MOVE R8 R1
|
||||
0x5C240400, // 004A MOVE R9 R2
|
||||
0x7C180600, // 004B CALL R6 3
|
||||
0x80040C00, // 004C RET 1 R6
|
||||
0x80000000, // 004D RET 0
|
||||
0x541EFFFC, // 003C LDINT R7 65533
|
||||
0x1C1C0C07, // 003D EQ R7 R6 R7
|
||||
0x781E0004, // 003E JMPF R7 #0044
|
||||
0x8C1C0706, // 003F GETMET R7 R3 K6
|
||||
0x8824090B, // 0040 GETMBR R9 R4 K11
|
||||
0x542A0004, // 0041 LDINT R10 5
|
||||
0x7C1C0600, // 0042 CALL R7 3
|
||||
0x80040E00, // 0043 RET 1 R7
|
||||
0x70020008, // 0044 JMP #004E
|
||||
0x601C0003, // 0045 GETGBL R7 G3
|
||||
0x5C200000, // 0046 MOVE R8 R0
|
||||
0x7C1C0200, // 0047 CALL R7 1
|
||||
0x8C1C0F0D, // 0048 GETMET R7 R7 K13
|
||||
0x5C240200, // 0049 MOVE R9 R1
|
||||
0x5C280400, // 004A MOVE R10 R2
|
||||
0x5C2C0600, // 004B MOVE R11 R3
|
||||
0x7C1C0800, // 004C CALL R7 4
|
||||
0x80040E00, // 004D RET 1 R7
|
||||
0x80000000, // 004E RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Light2;
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -25,7 +25,7 @@ be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */
|
||||
/* K2 */ be_nested_str_weak(cluster),
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_nested_str_weak(create_TLV),
|
||||
/* K5 */ be_nested_str_weak(set),
|
||||
/* K6 */ be_nested_str_weak(U1),
|
||||
/* K7 */ be_nested_str_weak(shadow_ct),
|
||||
/* K8 */ be_const_int(2),
|
||||
@ -37,88 +37,89 @@ be_local_closure(Matter_Plugin_Light2_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[81]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A02FF, // 0004 LDINT R6 768
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0040, // 0006 JMPF R6 #0048
|
||||
0x8C180104, // 0007 GETMET R6 R0 K4
|
||||
0x7C180200, // 0008 CALL R6 1
|
||||
0x541A0006, // 0009 LDINT R6 7
|
||||
0x1C180A06, // 000A EQ R6 R5 R6
|
||||
0x781A0005, // 000B JMPF R6 #0012
|
||||
0x8C180705, // 000C GETMET R6 R3 K5
|
||||
0x88200706, // 000D GETMBR R8 R3 K6
|
||||
0x88240107, // 000E GETMBR R9 R0 K7
|
||||
0x7C180600, // 000F CALL R6 3
|
||||
0x80040C00, // 0010 RET 1 R6
|
||||
( &(const binstruction[82]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E02FF, // 0004 LDINT R7 768
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0040, // 0006 JMPF R7 #0048
|
||||
0x8C1C0104, // 0007 GETMET R7 R0 K4
|
||||
0x7C1C0200, // 0008 CALL R7 1
|
||||
0x541E0006, // 0009 LDINT R7 7
|
||||
0x1C1C0C07, // 000A EQ R7 R6 R7
|
||||
0x781E0005, // 000B JMPF R7 #0012
|
||||
0x8C1C0705, // 000C GETMET R7 R3 K5
|
||||
0x88240906, // 000D GETMBR R9 R4 K6
|
||||
0x88280107, // 000E GETMBR R10 R0 K7
|
||||
0x7C1C0600, // 000F CALL R7 3
|
||||
0x80040E00, // 0010 RET 1 R7
|
||||
0x70020034, // 0011 JMP #0047
|
||||
0x541A0007, // 0012 LDINT R6 8
|
||||
0x1C180A06, // 0013 EQ R6 R5 R6
|
||||
0x781A0005, // 0014 JMPF R6 #001B
|
||||
0x8C180705, // 0015 GETMET R6 R3 K5
|
||||
0x88200706, // 0016 GETMBR R8 R3 K6
|
||||
0x58240008, // 0017 LDCONST R9 K8
|
||||
0x7C180600, // 0018 CALL R6 3
|
||||
0x80040C00, // 0019 RET 1 R6
|
||||
0x541E0007, // 0012 LDINT R7 8
|
||||
0x1C1C0C07, // 0013 EQ R7 R6 R7
|
||||
0x781E0005, // 0014 JMPF R7 #001B
|
||||
0x8C1C0705, // 0015 GETMET R7 R3 K5
|
||||
0x88240906, // 0016 GETMBR R9 R4 K6
|
||||
0x58280008, // 0017 LDCONST R10 K8
|
||||
0x7C1C0600, // 0018 CALL R7 3
|
||||
0x80040E00, // 0019 RET 1 R7
|
||||
0x7002002B, // 001A JMP #0047
|
||||
0x541A000E, // 001B LDINT R6 15
|
||||
0x1C180A06, // 001C EQ R6 R5 R6
|
||||
0x781A0005, // 001D JMPF R6 #0024
|
||||
0x8C180705, // 001E GETMET R6 R3 K5
|
||||
0x88200706, // 001F GETMBR R8 R3 K6
|
||||
0x58240009, // 0020 LDCONST R9 K9
|
||||
0x7C180600, // 0021 CALL R6 3
|
||||
0x80040C00, // 0022 RET 1 R6
|
||||
0x541E000E, // 001B LDINT R7 15
|
||||
0x1C1C0C07, // 001C EQ R7 R6 R7
|
||||
0x781E0005, // 001D JMPF R7 #0024
|
||||
0x8C1C0705, // 001E GETMET R7 R3 K5
|
||||
0x88240906, // 001F GETMBR R9 R4 K6
|
||||
0x58280009, // 0020 LDCONST R10 K9
|
||||
0x7C1C0600, // 0021 CALL R7 3
|
||||
0x80040E00, // 0022 RET 1 R7
|
||||
0x70020022, // 0023 JMP #0047
|
||||
0x541A400A, // 0024 LDINT R6 16395
|
||||
0x1C180A06, // 0025 EQ R6 R5 R6
|
||||
0x781A0005, // 0026 JMPF R6 #002D
|
||||
0x8C180705, // 0027 GETMET R6 R3 K5
|
||||
0x88200706, // 0028 GETMBR R8 R3 K6
|
||||
0x8824010A, // 0029 GETMBR R9 R0 K10
|
||||
0x7C180600, // 002A CALL R6 3
|
||||
0x80040C00, // 002B RET 1 R6
|
||||
0x541E400A, // 0024 LDINT R7 16395
|
||||
0x1C1C0C07, // 0025 EQ R7 R6 R7
|
||||
0x781E0005, // 0026 JMPF R7 #002D
|
||||
0x8C1C0705, // 0027 GETMET R7 R3 K5
|
||||
0x88240906, // 0028 GETMBR R9 R4 K6
|
||||
0x8828010A, // 0029 GETMBR R10 R0 K10
|
||||
0x7C1C0600, // 002A CALL R7 3
|
||||
0x80040E00, // 002B RET 1 R7
|
||||
0x70020019, // 002C JMP #0047
|
||||
0x541A400B, // 002D LDINT R6 16396
|
||||
0x1C180A06, // 002E EQ R6 R5 R6
|
||||
0x781A0005, // 002F JMPF R6 #0036
|
||||
0x8C180705, // 0030 GETMET R6 R3 K5
|
||||
0x88200706, // 0031 GETMBR R8 R3 K6
|
||||
0x8824010B, // 0032 GETMBR R9 R0 K11
|
||||
0x7C180600, // 0033 CALL R6 3
|
||||
0x80040C00, // 0034 RET 1 R6
|
||||
0x541E400B, // 002D LDINT R7 16396
|
||||
0x1C1C0C07, // 002E EQ R7 R6 R7
|
||||
0x781E0005, // 002F JMPF R7 #0036
|
||||
0x8C1C0705, // 0030 GETMET R7 R3 K5
|
||||
0x88240906, // 0031 GETMBR R9 R4 K6
|
||||
0x8828010B, // 0032 GETMBR R10 R0 K11
|
||||
0x7C1C0600, // 0033 CALL R7 3
|
||||
0x80040E00, // 0034 RET 1 R7
|
||||
0x70020010, // 0035 JMP #0047
|
||||
0x541AFFFB, // 0036 LDINT R6 65532
|
||||
0x1C180A06, // 0037 EQ R6 R5 R6
|
||||
0x781A0005, // 0038 JMPF R6 #003F
|
||||
0x8C180705, // 0039 GETMET R6 R3 K5
|
||||
0x8820070C, // 003A GETMBR R8 R3 K12
|
||||
0x5426000F, // 003B LDINT R9 16
|
||||
0x7C180600, // 003C CALL R6 3
|
||||
0x80040C00, // 003D RET 1 R6
|
||||
0x541EFFFB, // 0036 LDINT R7 65532
|
||||
0x1C1C0C07, // 0037 EQ R7 R6 R7
|
||||
0x781E0005, // 0038 JMPF R7 #003F
|
||||
0x8C1C0705, // 0039 GETMET R7 R3 K5
|
||||
0x8824090C, // 003A GETMBR R9 R4 K12
|
||||
0x542A000F, // 003B LDINT R10 16
|
||||
0x7C1C0600, // 003C CALL R7 3
|
||||
0x80040E00, // 003D RET 1 R7
|
||||
0x70020007, // 003E JMP #0047
|
||||
0x541AFFFC, // 003F LDINT R6 65533
|
||||
0x1C180A06, // 0040 EQ R6 R5 R6
|
||||
0x781A0004, // 0041 JMPF R6 #0047
|
||||
0x8C180705, // 0042 GETMET R6 R3 K5
|
||||
0x8820070C, // 0043 GETMBR R8 R3 K12
|
||||
0x54260004, // 0044 LDINT R9 5
|
||||
0x7C180600, // 0045 CALL R6 3
|
||||
0x80040C00, // 0046 RET 1 R6
|
||||
0x70020007, // 0047 JMP #0050
|
||||
0x60180003, // 0048 GETGBL R6 G3
|
||||
0x5C1C0000, // 0049 MOVE R7 R0
|
||||
0x7C180200, // 004A CALL R6 1
|
||||
0x8C180D0D, // 004B GETMET R6 R6 K13
|
||||
0x5C200200, // 004C MOVE R8 R1
|
||||
0x5C240400, // 004D MOVE R9 R2
|
||||
0x7C180600, // 004E CALL R6 3
|
||||
0x80040C00, // 004F RET 1 R6
|
||||
0x80000000, // 0050 RET 0
|
||||
0x541EFFFC, // 003F LDINT R7 65533
|
||||
0x1C1C0C07, // 0040 EQ R7 R6 R7
|
||||
0x781E0004, // 0041 JMPF R7 #0047
|
||||
0x8C1C0705, // 0042 GETMET R7 R3 K5
|
||||
0x8824090C, // 0043 GETMBR R9 R4 K12
|
||||
0x542A0004, // 0044 LDINT R10 5
|
||||
0x7C1C0600, // 0045 CALL R7 3
|
||||
0x80040E00, // 0046 RET 1 R7
|
||||
0x70020008, // 0047 JMP #0051
|
||||
0x601C0003, // 0048 GETGBL R7 G3
|
||||
0x5C200000, // 0049 MOVE R8 R0
|
||||
0x7C1C0200, // 004A CALL R7 1
|
||||
0x8C1C0F0D, // 004B GETMET R7 R7 K13
|
||||
0x5C240200, // 004C MOVE R9 R1
|
||||
0x5C280400, // 004D MOVE R10 R2
|
||||
0x5C2C0600, // 004E MOVE R11 R3
|
||||
0x7C1C0800, // 004F CALL R7 4
|
||||
0x80040E00, // 0050 RET 1 R7
|
||||
0x80000000, // 0051 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -112,8 +112,8 @@ be_local_closure(Matter_Plugin_Light3_update_shadow, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -127,7 +127,7 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_const_int(0),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(U1),
|
||||
/* K8 */ be_nested_str_weak(shadow_hue),
|
||||
/* K9 */ be_const_int(1),
|
||||
@ -137,113 +137,114 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[106]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A02FF, // 0004 LDINT R6 768
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0059, // 0006 JMPF R6 #0061
|
||||
0x8C180104, // 0007 GETMET R6 R0 K4
|
||||
0x7C180200, // 0008 CALL R6 1
|
||||
0x1C180B05, // 0009 EQ R6 R5 K5
|
||||
0x781A0005, // 000A JMPF R6 #0011
|
||||
0x8C180706, // 000B GETMET R6 R3 K6
|
||||
0x88200707, // 000C GETMBR R8 R3 K7
|
||||
0x88240108, // 000D GETMBR R9 R0 K8
|
||||
0x7C180600, // 000E CALL R6 3
|
||||
0x80040C00, // 000F RET 1 R6
|
||||
( &(const binstruction[107]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E02FF, // 0004 LDINT R7 768
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0059, // 0006 JMPF R7 #0061
|
||||
0x8C1C0104, // 0007 GETMET R7 R0 K4
|
||||
0x7C1C0200, // 0008 CALL R7 1
|
||||
0x1C1C0D05, // 0009 EQ R7 R6 K5
|
||||
0x781E0005, // 000A JMPF R7 #0011
|
||||
0x8C1C0706, // 000B GETMET R7 R3 K6
|
||||
0x88240907, // 000C GETMBR R9 R4 K7
|
||||
0x88280108, // 000D GETMBR R10 R0 K8
|
||||
0x7C1C0600, // 000E CALL R7 3
|
||||
0x80040E00, // 000F RET 1 R7
|
||||
0x7002004E, // 0010 JMP #0060
|
||||
0x1C180B09, // 0011 EQ R6 R5 K9
|
||||
0x781A0005, // 0012 JMPF R6 #0019
|
||||
0x8C180706, // 0013 GETMET R6 R3 K6
|
||||
0x88200707, // 0014 GETMBR R8 R3 K7
|
||||
0x8824010A, // 0015 GETMBR R9 R0 K10
|
||||
0x7C180600, // 0016 CALL R6 3
|
||||
0x80040C00, // 0017 RET 1 R6
|
||||
0x1C1C0D09, // 0011 EQ R7 R6 K9
|
||||
0x781E0005, // 0012 JMPF R7 #0019
|
||||
0x8C1C0706, // 0013 GETMET R7 R3 K6
|
||||
0x88240907, // 0014 GETMBR R9 R4 K7
|
||||
0x8828010A, // 0015 GETMBR R10 R0 K10
|
||||
0x7C1C0600, // 0016 CALL R7 3
|
||||
0x80040E00, // 0017 RET 1 R7
|
||||
0x70020046, // 0018 JMP #0060
|
||||
0x541A0006, // 0019 LDINT R6 7
|
||||
0x1C180A06, // 001A EQ R6 R5 R6
|
||||
0x781A0005, // 001B JMPF R6 #0022
|
||||
0x8C180706, // 001C GETMET R6 R3 K6
|
||||
0x88200707, // 001D GETMBR R8 R3 K7
|
||||
0x58240005, // 001E LDCONST R9 K5
|
||||
0x7C180600, // 001F CALL R6 3
|
||||
0x80040C00, // 0020 RET 1 R6
|
||||
0x541E0006, // 0019 LDINT R7 7
|
||||
0x1C1C0C07, // 001A EQ R7 R6 R7
|
||||
0x781E0005, // 001B JMPF R7 #0022
|
||||
0x8C1C0706, // 001C GETMET R7 R3 K6
|
||||
0x88240907, // 001D GETMBR R9 R4 K7
|
||||
0x58280005, // 001E LDCONST R10 K5
|
||||
0x7C1C0600, // 001F CALL R7 3
|
||||
0x80040E00, // 0020 RET 1 R7
|
||||
0x7002003D, // 0021 JMP #0060
|
||||
0x541A0007, // 0022 LDINT R6 8
|
||||
0x1C180A06, // 0023 EQ R6 R5 R6
|
||||
0x781A0005, // 0024 JMPF R6 #002B
|
||||
0x8C180706, // 0025 GETMET R6 R3 K6
|
||||
0x88200707, // 0026 GETMBR R8 R3 K7
|
||||
0x58240005, // 0027 LDCONST R9 K5
|
||||
0x7C180600, // 0028 CALL R6 3
|
||||
0x80040C00, // 0029 RET 1 R6
|
||||
0x541E0007, // 0022 LDINT R7 8
|
||||
0x1C1C0C07, // 0023 EQ R7 R6 R7
|
||||
0x781E0005, // 0024 JMPF R7 #002B
|
||||
0x8C1C0706, // 0025 GETMET R7 R3 K6
|
||||
0x88240907, // 0026 GETMBR R9 R4 K7
|
||||
0x58280005, // 0027 LDCONST R10 K5
|
||||
0x7C1C0600, // 0028 CALL R7 3
|
||||
0x80040E00, // 0029 RET 1 R7
|
||||
0x70020034, // 002A JMP #0060
|
||||
0x541A000E, // 002B LDINT R6 15
|
||||
0x1C180A06, // 002C EQ R6 R5 R6
|
||||
0x781A0005, // 002D JMPF R6 #0034
|
||||
0x8C180706, // 002E GETMET R6 R3 K6
|
||||
0x88200707, // 002F GETMBR R8 R3 K7
|
||||
0x58240005, // 0030 LDCONST R9 K5
|
||||
0x7C180600, // 0031 CALL R6 3
|
||||
0x80040C00, // 0032 RET 1 R6
|
||||
0x541E000E, // 002B LDINT R7 15
|
||||
0x1C1C0C07, // 002C EQ R7 R6 R7
|
||||
0x781E0005, // 002D JMPF R7 #0034
|
||||
0x8C1C0706, // 002E GETMET R7 R3 K6
|
||||
0x88240907, // 002F GETMBR R9 R4 K7
|
||||
0x58280005, // 0030 LDCONST R10 K5
|
||||
0x7C1C0600, // 0031 CALL R7 3
|
||||
0x80040E00, // 0032 RET 1 R7
|
||||
0x7002002B, // 0033 JMP #0060
|
||||
0x541A4000, // 0034 LDINT R6 16385
|
||||
0x1C180A06, // 0035 EQ R6 R5 R6
|
||||
0x781A0005, // 0036 JMPF R6 #003D
|
||||
0x8C180706, // 0037 GETMET R6 R3 K6
|
||||
0x88200707, // 0038 GETMBR R8 R3 K7
|
||||
0x58240005, // 0039 LDCONST R9 K5
|
||||
0x7C180600, // 003A CALL R6 3
|
||||
0x80040C00, // 003B RET 1 R6
|
||||
0x541E4000, // 0034 LDINT R7 16385
|
||||
0x1C1C0C07, // 0035 EQ R7 R6 R7
|
||||
0x781E0005, // 0036 JMPF R7 #003D
|
||||
0x8C1C0706, // 0037 GETMET R7 R3 K6
|
||||
0x88240907, // 0038 GETMBR R9 R4 K7
|
||||
0x58280005, // 0039 LDCONST R10 K5
|
||||
0x7C1C0600, // 003A CALL R7 3
|
||||
0x80040E00, // 003B RET 1 R7
|
||||
0x70020022, // 003C JMP #0060
|
||||
0x541A4009, // 003D LDINT R6 16394
|
||||
0x1C180A06, // 003E EQ R6 R5 R6
|
||||
0x781A0005, // 003F JMPF R6 #0046
|
||||
0x8C180706, // 0040 GETMET R6 R3 K6
|
||||
0x88200707, // 0041 GETMBR R8 R3 K7
|
||||
0x58240009, // 0042 LDCONST R9 K9
|
||||
0x7C180600, // 0043 CALL R6 3
|
||||
0x80040C00, // 0044 RET 1 R6
|
||||
0x541E4009, // 003D LDINT R7 16394
|
||||
0x1C1C0C07, // 003E EQ R7 R6 R7
|
||||
0x781E0005, // 003F JMPF R7 #0046
|
||||
0x8C1C0706, // 0040 GETMET R7 R3 K6
|
||||
0x88240907, // 0041 GETMBR R9 R4 K7
|
||||
0x58280009, // 0042 LDCONST R10 K9
|
||||
0x7C1C0600, // 0043 CALL R7 3
|
||||
0x80040E00, // 0044 RET 1 R7
|
||||
0x70020019, // 0045 JMP #0060
|
||||
0x541A000F, // 0046 LDINT R6 16
|
||||
0x1C180A06, // 0047 EQ R6 R5 R6
|
||||
0x781A0005, // 0048 JMPF R6 #004F
|
||||
0x8C180706, // 0049 GETMET R6 R3 K6
|
||||
0x88200707, // 004A GETMBR R8 R3 K7
|
||||
0x58240005, // 004B LDCONST R9 K5
|
||||
0x7C180600, // 004C CALL R6 3
|
||||
0x80040C00, // 004D RET 1 R6
|
||||
0x541E000F, // 0046 LDINT R7 16
|
||||
0x1C1C0C07, // 0047 EQ R7 R6 R7
|
||||
0x781E0005, // 0048 JMPF R7 #004F
|
||||
0x8C1C0706, // 0049 GETMET R7 R3 K6
|
||||
0x88240907, // 004A GETMBR R9 R4 K7
|
||||
0x58280005, // 004B LDCONST R10 K5
|
||||
0x7C1C0600, // 004C CALL R7 3
|
||||
0x80040E00, // 004D RET 1 R7
|
||||
0x70020010, // 004E JMP #0060
|
||||
0x541AFFFB, // 004F LDINT R6 65532
|
||||
0x1C180A06, // 0050 EQ R6 R5 R6
|
||||
0x781A0005, // 0051 JMPF R6 #0058
|
||||
0x8C180706, // 0052 GETMET R6 R3 K6
|
||||
0x8820070B, // 0053 GETMBR R8 R3 K11
|
||||
0x58240009, // 0054 LDCONST R9 K9
|
||||
0x7C180600, // 0055 CALL R6 3
|
||||
0x80040C00, // 0056 RET 1 R6
|
||||
0x541EFFFB, // 004F LDINT R7 65532
|
||||
0x1C1C0C07, // 0050 EQ R7 R6 R7
|
||||
0x781E0005, // 0051 JMPF R7 #0058
|
||||
0x8C1C0706, // 0052 GETMET R7 R3 K6
|
||||
0x8824090B, // 0053 GETMBR R9 R4 K11
|
||||
0x58280009, // 0054 LDCONST R10 K9
|
||||
0x7C1C0600, // 0055 CALL R7 3
|
||||
0x80040E00, // 0056 RET 1 R7
|
||||
0x70020007, // 0057 JMP #0060
|
||||
0x541AFFFC, // 0058 LDINT R6 65533
|
||||
0x1C180A06, // 0059 EQ R6 R5 R6
|
||||
0x781A0004, // 005A JMPF R6 #0060
|
||||
0x8C180706, // 005B GETMET R6 R3 K6
|
||||
0x8820070B, // 005C GETMBR R8 R3 K11
|
||||
0x54260004, // 005D LDINT R9 5
|
||||
0x7C180600, // 005E CALL R6 3
|
||||
0x80040C00, // 005F RET 1 R6
|
||||
0x70020007, // 0060 JMP #0069
|
||||
0x60180003, // 0061 GETGBL R6 G3
|
||||
0x5C1C0000, // 0062 MOVE R7 R0
|
||||
0x7C180200, // 0063 CALL R6 1
|
||||
0x8C180D0C, // 0064 GETMET R6 R6 K12
|
||||
0x5C200200, // 0065 MOVE R8 R1
|
||||
0x5C240400, // 0066 MOVE R9 R2
|
||||
0x7C180600, // 0067 CALL R6 3
|
||||
0x80040C00, // 0068 RET 1 R6
|
||||
0x80000000, // 0069 RET 0
|
||||
0x541EFFFC, // 0058 LDINT R7 65533
|
||||
0x1C1C0C07, // 0059 EQ R7 R6 R7
|
||||
0x781E0004, // 005A JMPF R7 #0060
|
||||
0x8C1C0706, // 005B GETMET R7 R3 K6
|
||||
0x8824090B, // 005C GETMBR R9 R4 K11
|
||||
0x542A0004, // 005D LDINT R10 5
|
||||
0x7C1C0600, // 005E CALL R7 3
|
||||
0x80040E00, // 005F RET 1 R7
|
||||
0x70020008, // 0060 JMP #006A
|
||||
0x601C0003, // 0061 GETGBL R7 G3
|
||||
0x5C200000, // 0062 MOVE R8 R0
|
||||
0x7C1C0200, // 0063 CALL R7 1
|
||||
0x8C1C0F0C, // 0064 GETMET R7 R7 K12
|
||||
0x5C240200, // 0065 MOVE R9 R1
|
||||
0x5C280400, // 0066 MOVE R10 R2
|
||||
0x5C2C0600, // 0067 MOVE R11 R3
|
||||
0x7C1C0800, // 0068 CALL R7 4
|
||||
0x80040E00, // 0069 RET 1 R7
|
||||
0x80000000, // 006A RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -190,8 +190,8 @@ be_local_closure(Matter_Plugin_OnOff_parse_configuration, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -205,7 +205,7 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_const_int(0),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(BOOL),
|
||||
/* K8 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K9 */ be_nested_str_weak(U4),
|
||||
@ -213,51 +213,52 @@ be_local_closure(Matter_Plugin_OnOff_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[44]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0005, // 0004 LDINT R6 6
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A001B, // 0006 JMPF R6 #0023
|
||||
0x8C180104, // 0007 GETMET R6 R0 K4
|
||||
0x7C180200, // 0008 CALL R6 1
|
||||
0x1C180B05, // 0009 EQ R6 R5 K5
|
||||
0x781A0005, // 000A JMPF R6 #0011
|
||||
0x8C180706, // 000B GETMET R6 R3 K6
|
||||
0x88200707, // 000C GETMBR R8 R3 K7
|
||||
0x88240108, // 000D GETMBR R9 R0 K8
|
||||
0x7C180600, // 000E CALL R6 3
|
||||
0x80040C00, // 000F RET 1 R6
|
||||
( &(const binstruction[45]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0005, // 0004 LDINT R7 6
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E001B, // 0006 JMPF R7 #0023
|
||||
0x8C1C0104, // 0007 GETMET R7 R0 K4
|
||||
0x7C1C0200, // 0008 CALL R7 1
|
||||
0x1C1C0D05, // 0009 EQ R7 R6 K5
|
||||
0x781E0005, // 000A JMPF R7 #0011
|
||||
0x8C1C0706, // 000B GETMET R7 R3 K6
|
||||
0x88240907, // 000C GETMBR R9 R4 K7
|
||||
0x88280108, // 000D GETMBR R10 R0 K8
|
||||
0x7C1C0600, // 000E CALL R7 3
|
||||
0x80040E00, // 000F RET 1 R7
|
||||
0x70020010, // 0010 JMP #0022
|
||||
0x541AFFFB, // 0011 LDINT R6 65532
|
||||
0x1C180A06, // 0012 EQ R6 R5 R6
|
||||
0x781A0005, // 0013 JMPF R6 #001A
|
||||
0x8C180706, // 0014 GETMET R6 R3 K6
|
||||
0x88200709, // 0015 GETMBR R8 R3 K9
|
||||
0x58240005, // 0016 LDCONST R9 K5
|
||||
0x7C180600, // 0017 CALL R6 3
|
||||
0x80040C00, // 0018 RET 1 R6
|
||||
0x541EFFFB, // 0011 LDINT R7 65532
|
||||
0x1C1C0C07, // 0012 EQ R7 R6 R7
|
||||
0x781E0005, // 0013 JMPF R7 #001A
|
||||
0x8C1C0706, // 0014 GETMET R7 R3 K6
|
||||
0x88240909, // 0015 GETMBR R9 R4 K9
|
||||
0x58280005, // 0016 LDCONST R10 K5
|
||||
0x7C1C0600, // 0017 CALL R7 3
|
||||
0x80040E00, // 0018 RET 1 R7
|
||||
0x70020007, // 0019 JMP #0022
|
||||
0x541AFFFC, // 001A LDINT R6 65533
|
||||
0x1C180A06, // 001B EQ R6 R5 R6
|
||||
0x781A0004, // 001C JMPF R6 #0022
|
||||
0x8C180706, // 001D GETMET R6 R3 K6
|
||||
0x88200709, // 001E GETMBR R8 R3 K9
|
||||
0x54260003, // 001F LDINT R9 4
|
||||
0x7C180600, // 0020 CALL R6 3
|
||||
0x80040C00, // 0021 RET 1 R6
|
||||
0x70020007, // 0022 JMP #002B
|
||||
0x60180003, // 0023 GETGBL R6 G3
|
||||
0x5C1C0000, // 0024 MOVE R7 R0
|
||||
0x7C180200, // 0025 CALL R6 1
|
||||
0x8C180D0A, // 0026 GETMET R6 R6 K10
|
||||
0x5C200200, // 0027 MOVE R8 R1
|
||||
0x5C240400, // 0028 MOVE R9 R2
|
||||
0x7C180600, // 0029 CALL R6 3
|
||||
0x80040C00, // 002A RET 1 R6
|
||||
0x80000000, // 002B RET 0
|
||||
0x541EFFFC, // 001A LDINT R7 65533
|
||||
0x1C1C0C07, // 001B EQ R7 R6 R7
|
||||
0x781E0004, // 001C JMPF R7 #0022
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240909, // 001E GETMBR R9 R4 K9
|
||||
0x542A0003, // 001F LDINT R10 4
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020008, // 0022 JMP #002C
|
||||
0x601C0003, // 0023 GETGBL R7 G3
|
||||
0x5C200000, // 0024 MOVE R8 R0
|
||||
0x7C1C0200, // 0025 CALL R7 1
|
||||
0x8C1C0F0A, // 0026 GETMET R7 R7 K10
|
||||
0x5C240200, // 0027 MOVE R9 R1
|
||||
0x5C280400, // 0028 MOVE R10 R2
|
||||
0x5C2C0600, // 0029 MOVE R11 R3
|
||||
0x7C1C0800, // 002A CALL R7 4
|
||||
0x80040E00, // 002B RET 1 R7
|
||||
0x80000000, // 002C RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -79,8 +79,8 @@ be_local_closure(Matter_Plugin_Sensor_Contact_parse_configuration, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Sensor_Contact_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -94,7 +94,7 @@ be_local_closure(Matter_Plugin_Sensor_Contact_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_contact),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(BOOL),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_nested_str_weak(U4),
|
||||
@ -103,59 +103,60 @@ be_local_closure(Matter_Plugin_Sensor_Contact_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[52]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0044, // 0004 LDINT R6 69
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0023, // 0006 JMPF R6 #002B
|
||||
0x1C180B04, // 0007 EQ R6 R5 K4
|
||||
0x781A000F, // 0008 JMPF R6 #0019
|
||||
0x88180105, // 0009 GETMBR R6 R0 K5
|
||||
0x4C1C0000, // 000A LDNIL R7
|
||||
0x20180C07, // 000B NE R6 R6 R7
|
||||
0x781A0005, // 000C JMPF R6 #0013
|
||||
0x8C180706, // 000D GETMET R6 R3 K6
|
||||
0x88200707, // 000E GETMBR R8 R3 K7
|
||||
0x88240105, // 000F GETMBR R9 R0 K5
|
||||
0x7C180600, // 0010 CALL R6 3
|
||||
0x80040C00, // 0011 RET 1 R6
|
||||
( &(const binstruction[53]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0044, // 0004 LDINT R7 69
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0023, // 0006 JMPF R7 #002B
|
||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||
0x781E000F, // 0008 JMPF R7 #0019
|
||||
0x881C0105, // 0009 GETMBR R7 R0 K5
|
||||
0x4C200000, // 000A LDNIL R8
|
||||
0x201C0E08, // 000B NE R7 R7 R8
|
||||
0x781E0005, // 000C JMPF R7 #0013
|
||||
0x8C1C0706, // 000D GETMET R7 R3 K6
|
||||
0x88240907, // 000E GETMBR R9 R4 K7
|
||||
0x88280105, // 000F GETMBR R10 R0 K5
|
||||
0x7C1C0600, // 0010 CALL R7 3
|
||||
0x80040E00, // 0011 RET 1 R7
|
||||
0x70020004, // 0012 JMP #0018
|
||||
0x8C180706, // 0013 GETMET R6 R3 K6
|
||||
0x88200708, // 0014 GETMBR R8 R3 K8
|
||||
0x4C240000, // 0015 LDNIL R9
|
||||
0x7C180600, // 0016 CALL R6 3
|
||||
0x80040C00, // 0017 RET 1 R6
|
||||
0x8C1C0706, // 0013 GETMET R7 R3 K6
|
||||
0x88240908, // 0014 GETMBR R9 R4 K8
|
||||
0x4C280000, // 0015 LDNIL R10
|
||||
0x7C1C0600, // 0016 CALL R7 3
|
||||
0x80040E00, // 0017 RET 1 R7
|
||||
0x70020010, // 0018 JMP #002A
|
||||
0x541AFFFB, // 0019 LDINT R6 65532
|
||||
0x1C180A06, // 001A EQ R6 R5 R6
|
||||
0x781A0005, // 001B JMPF R6 #0022
|
||||
0x8C180706, // 001C GETMET R6 R3 K6
|
||||
0x88200709, // 001D GETMBR R8 R3 K9
|
||||
0x58240004, // 001E LDCONST R9 K4
|
||||
0x7C180600, // 001F CALL R6 3
|
||||
0x80040C00, // 0020 RET 1 R6
|
||||
0x541EFFFB, // 0019 LDINT R7 65532
|
||||
0x1C1C0C07, // 001A EQ R7 R6 R7
|
||||
0x781E0005, // 001B JMPF R7 #0022
|
||||
0x8C1C0706, // 001C GETMET R7 R3 K6
|
||||
0x88240909, // 001D GETMBR R9 R4 K9
|
||||
0x58280004, // 001E LDCONST R10 K4
|
||||
0x7C1C0600, // 001F CALL R7 3
|
||||
0x80040E00, // 0020 RET 1 R7
|
||||
0x70020007, // 0021 JMP #002A
|
||||
0x541AFFFC, // 0022 LDINT R6 65533
|
||||
0x1C180A06, // 0023 EQ R6 R5 R6
|
||||
0x781A0004, // 0024 JMPF R6 #002A
|
||||
0x8C180706, // 0025 GETMET R6 R3 K6
|
||||
0x88200709, // 0026 GETMBR R8 R3 K9
|
||||
0x5824000A, // 0027 LDCONST R9 K10
|
||||
0x7C180600, // 0028 CALL R6 3
|
||||
0x80040C00, // 0029 RET 1 R6
|
||||
0x70020007, // 002A JMP #0033
|
||||
0x60180003, // 002B GETGBL R6 G3
|
||||
0x5C1C0000, // 002C MOVE R7 R0
|
||||
0x7C180200, // 002D CALL R6 1
|
||||
0x8C180D0B, // 002E GETMET R6 R6 K11
|
||||
0x5C200200, // 002F MOVE R8 R1
|
||||
0x5C240400, // 0030 MOVE R9 R2
|
||||
0x7C180600, // 0031 CALL R6 3
|
||||
0x80040C00, // 0032 RET 1 R6
|
||||
0x80000000, // 0033 RET 0
|
||||
0x541EFFFC, // 0022 LDINT R7 65533
|
||||
0x1C1C0C07, // 0023 EQ R7 R6 R7
|
||||
0x781E0004, // 0024 JMPF R7 #002A
|
||||
0x8C1C0706, // 0025 GETMET R7 R3 K6
|
||||
0x88240909, // 0026 GETMBR R9 R4 K9
|
||||
0x5828000A, // 0027 LDCONST R10 K10
|
||||
0x7C1C0600, // 0028 CALL R7 3
|
||||
0x80040E00, // 0029 RET 1 R7
|
||||
0x70020008, // 002A JMP #0034
|
||||
0x601C0003, // 002B GETGBL R7 G3
|
||||
0x5C200000, // 002C MOVE R8 R0
|
||||
0x7C1C0200, // 002D CALL R7 1
|
||||
0x8C1C0F0B, // 002E GETMET R7 R7 K11
|
||||
0x5C240200, // 002F MOVE R9 R1
|
||||
0x5C280400, // 0030 MOVE R10 R2
|
||||
0x5C2C0600, // 0031 MOVE R11 R3
|
||||
0x7C1C0800, // 0032 CALL R7 4
|
||||
0x80040E00, // 0033 RET 1 R7
|
||||
0x80000000, // 0034 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Sensor_Humidity;
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -26,7 +26,7 @@ be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_value),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(U2),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_const_int(1),
|
||||
@ -37,77 +37,78 @@ be_local_closure(Matter_Plugin_Sensor_Humidity_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[70]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0404, // 0004 LDINT R6 1029
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0035, // 0006 JMPF R6 #003D
|
||||
0x1C180B04, // 0007 EQ R6 R5 K4
|
||||
0x781A0011, // 0008 JMPF R6 #001B
|
||||
0x88180105, // 0009 GETMBR R6 R0 K5
|
||||
0x4C1C0000, // 000A LDNIL R7
|
||||
0x20180C07, // 000B NE R6 R6 R7
|
||||
0x781A0007, // 000C JMPF R6 #0015
|
||||
0x8C180706, // 000D GETMET R6 R3 K6
|
||||
0x88200707, // 000E GETMBR R8 R3 K7
|
||||
0x60240009, // 000F GETGBL R9 G9
|
||||
0x88280105, // 0010 GETMBR R10 R0 K5
|
||||
0x7C240200, // 0011 CALL R9 1
|
||||
0x7C180600, // 0012 CALL R6 3
|
||||
0x80040C00, // 0013 RET 1 R6
|
||||
( &(const binstruction[71]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0404, // 0004 LDINT R7 1029
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0035, // 0006 JMPF R7 #003D
|
||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||
0x781E0011, // 0008 JMPF R7 #001B
|
||||
0x881C0105, // 0009 GETMBR R7 R0 K5
|
||||
0x4C200000, // 000A LDNIL R8
|
||||
0x201C0E08, // 000B NE R7 R7 R8
|
||||
0x781E0007, // 000C JMPF R7 #0015
|
||||
0x8C1C0706, // 000D GETMET R7 R3 K6
|
||||
0x88240907, // 000E GETMBR R9 R4 K7
|
||||
0x60280009, // 000F GETGBL R10 G9
|
||||
0x882C0105, // 0010 GETMBR R11 R0 K5
|
||||
0x7C280200, // 0011 CALL R10 1
|
||||
0x7C1C0600, // 0012 CALL R7 3
|
||||
0x80040E00, // 0013 RET 1 R7
|
||||
0x70020004, // 0014 JMP #001A
|
||||
0x8C180706, // 0015 GETMET R6 R3 K6
|
||||
0x88200708, // 0016 GETMBR R8 R3 K8
|
||||
0x4C240000, // 0017 LDNIL R9
|
||||
0x7C180600, // 0018 CALL R6 3
|
||||
0x80040C00, // 0019 RET 1 R6
|
||||
0x8C1C0706, // 0015 GETMET R7 R3 K6
|
||||
0x88240908, // 0016 GETMBR R9 R4 K8
|
||||
0x4C280000, // 0017 LDNIL R10
|
||||
0x7C1C0600, // 0018 CALL R7 3
|
||||
0x80040E00, // 0019 RET 1 R7
|
||||
0x70020020, // 001A JMP #003C
|
||||
0x1C180B09, // 001B EQ R6 R5 K9
|
||||
0x781A0005, // 001C JMPF R6 #0023
|
||||
0x8C180706, // 001D GETMET R6 R3 K6
|
||||
0x88200707, // 001E GETMBR R8 R3 K7
|
||||
0x542601F3, // 001F LDINT R9 500
|
||||
0x7C180600, // 0020 CALL R6 3
|
||||
0x80040C00, // 0021 RET 1 R6
|
||||
0x1C1C0D09, // 001B EQ R7 R6 K9
|
||||
0x781E0005, // 001C JMPF R7 #0023
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240907, // 001E GETMBR R9 R4 K7
|
||||
0x542A01F3, // 001F LDINT R10 500
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020018, // 0022 JMP #003C
|
||||
0x1C180B0A, // 0023 EQ R6 R5 K10
|
||||
0x781A0005, // 0024 JMPF R6 #002B
|
||||
0x8C180706, // 0025 GETMET R6 R3 K6
|
||||
0x88200707, // 0026 GETMBR R8 R3 K7
|
||||
0x5426270F, // 0027 LDINT R9 10000
|
||||
0x7C180600, // 0028 CALL R6 3
|
||||
0x80040C00, // 0029 RET 1 R6
|
||||
0x1C1C0D0A, // 0023 EQ R7 R6 K10
|
||||
0x781E0005, // 0024 JMPF R7 #002B
|
||||
0x8C1C0706, // 0025 GETMET R7 R3 K6
|
||||
0x88240907, // 0026 GETMBR R9 R4 K7
|
||||
0x542A270F, // 0027 LDINT R10 10000
|
||||
0x7C1C0600, // 0028 CALL R7 3
|
||||
0x80040E00, // 0029 RET 1 R7
|
||||
0x70020010, // 002A JMP #003C
|
||||
0x541AFFFB, // 002B LDINT R6 65532
|
||||
0x1C180A06, // 002C EQ R6 R5 R6
|
||||
0x781A0005, // 002D JMPF R6 #0034
|
||||
0x8C180706, // 002E GETMET R6 R3 K6
|
||||
0x8820070B, // 002F GETMBR R8 R3 K11
|
||||
0x58240004, // 0030 LDCONST R9 K4
|
||||
0x7C180600, // 0031 CALL R6 3
|
||||
0x80040C00, // 0032 RET 1 R6
|
||||
0x541EFFFB, // 002B LDINT R7 65532
|
||||
0x1C1C0C07, // 002C EQ R7 R6 R7
|
||||
0x781E0005, // 002D JMPF R7 #0034
|
||||
0x8C1C0706, // 002E GETMET R7 R3 K6
|
||||
0x8824090B, // 002F GETMBR R9 R4 K11
|
||||
0x58280004, // 0030 LDCONST R10 K4
|
||||
0x7C1C0600, // 0031 CALL R7 3
|
||||
0x80040E00, // 0032 RET 1 R7
|
||||
0x70020007, // 0033 JMP #003C
|
||||
0x541AFFFC, // 0034 LDINT R6 65533
|
||||
0x1C180A06, // 0035 EQ R6 R5 R6
|
||||
0x781A0004, // 0036 JMPF R6 #003C
|
||||
0x8C180706, // 0037 GETMET R6 R3 K6
|
||||
0x8820070B, // 0038 GETMBR R8 R3 K11
|
||||
0x5824000C, // 0039 LDCONST R9 K12
|
||||
0x7C180600, // 003A CALL R6 3
|
||||
0x80040C00, // 003B RET 1 R6
|
||||
0x70020007, // 003C JMP #0045
|
||||
0x60180003, // 003D GETGBL R6 G3
|
||||
0x5C1C0000, // 003E MOVE R7 R0
|
||||
0x7C180200, // 003F CALL R6 1
|
||||
0x8C180D0D, // 0040 GETMET R6 R6 K13
|
||||
0x5C200200, // 0041 MOVE R8 R1
|
||||
0x5C240400, // 0042 MOVE R9 R2
|
||||
0x7C180600, // 0043 CALL R6 3
|
||||
0x80040C00, // 0044 RET 1 R6
|
||||
0x80000000, // 0045 RET 0
|
||||
0x541EFFFC, // 0034 LDINT R7 65533
|
||||
0x1C1C0C07, // 0035 EQ R7 R6 R7
|
||||
0x781E0004, // 0036 JMPF R7 #003C
|
||||
0x8C1C0706, // 0037 GETMET R7 R3 K6
|
||||
0x8824090B, // 0038 GETMBR R9 R4 K11
|
||||
0x5828000C, // 0039 LDCONST R10 K12
|
||||
0x7C1C0600, // 003A CALL R7 3
|
||||
0x80040E00, // 003B RET 1 R7
|
||||
0x70020008, // 003C JMP #0046
|
||||
0x601C0003, // 003D GETGBL R7 G3
|
||||
0x5C200000, // 003E MOVE R8 R0
|
||||
0x7C1C0200, // 003F CALL R7 1
|
||||
0x8C1C0F0D, // 0040 GETMET R7 R7 K13
|
||||
0x5C240200, // 0041 MOVE R9 R1
|
||||
0x5C280400, // 0042 MOVE R10 R2
|
||||
0x5C2C0600, // 0043 MOVE R11 R3
|
||||
0x7C1C0800, // 0044 CALL R7 4
|
||||
0x80040E00, // 0045 RET 1 R7
|
||||
0x80000000, // 0046 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Sensor_Illuminance;
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -26,7 +26,7 @@ be_local_closure(Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_value),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(U2),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_const_int(1),
|
||||
@ -37,77 +37,78 @@ be_local_closure(Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[70]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A03FF, // 0004 LDINT R6 1024
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0035, // 0006 JMPF R6 #003D
|
||||
0x1C180B04, // 0007 EQ R6 R5 K4
|
||||
0x781A0011, // 0008 JMPF R6 #001B
|
||||
0x88180105, // 0009 GETMBR R6 R0 K5
|
||||
0x4C1C0000, // 000A LDNIL R7
|
||||
0x20180C07, // 000B NE R6 R6 R7
|
||||
0x781A0007, // 000C JMPF R6 #0015
|
||||
0x8C180706, // 000D GETMET R6 R3 K6
|
||||
0x88200707, // 000E GETMBR R8 R3 K7
|
||||
0x60240009, // 000F GETGBL R9 G9
|
||||
0x88280105, // 0010 GETMBR R10 R0 K5
|
||||
0x7C240200, // 0011 CALL R9 1
|
||||
0x7C180600, // 0012 CALL R6 3
|
||||
0x80040C00, // 0013 RET 1 R6
|
||||
( &(const binstruction[71]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E03FF, // 0004 LDINT R7 1024
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0035, // 0006 JMPF R7 #003D
|
||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||
0x781E0011, // 0008 JMPF R7 #001B
|
||||
0x881C0105, // 0009 GETMBR R7 R0 K5
|
||||
0x4C200000, // 000A LDNIL R8
|
||||
0x201C0E08, // 000B NE R7 R7 R8
|
||||
0x781E0007, // 000C JMPF R7 #0015
|
||||
0x8C1C0706, // 000D GETMET R7 R3 K6
|
||||
0x88240907, // 000E GETMBR R9 R4 K7
|
||||
0x60280009, // 000F GETGBL R10 G9
|
||||
0x882C0105, // 0010 GETMBR R11 R0 K5
|
||||
0x7C280200, // 0011 CALL R10 1
|
||||
0x7C1C0600, // 0012 CALL R7 3
|
||||
0x80040E00, // 0013 RET 1 R7
|
||||
0x70020004, // 0014 JMP #001A
|
||||
0x8C180706, // 0015 GETMET R6 R3 K6
|
||||
0x88200708, // 0016 GETMBR R8 R3 K8
|
||||
0x4C240000, // 0017 LDNIL R9
|
||||
0x7C180600, // 0018 CALL R6 3
|
||||
0x80040C00, // 0019 RET 1 R6
|
||||
0x8C1C0706, // 0015 GETMET R7 R3 K6
|
||||
0x88240908, // 0016 GETMBR R9 R4 K8
|
||||
0x4C280000, // 0017 LDNIL R10
|
||||
0x7C1C0600, // 0018 CALL R7 3
|
||||
0x80040E00, // 0019 RET 1 R7
|
||||
0x70020020, // 001A JMP #003C
|
||||
0x1C180B09, // 001B EQ R6 R5 K9
|
||||
0x781A0005, // 001C JMPF R6 #0023
|
||||
0x8C180706, // 001D GETMET R6 R3 K6
|
||||
0x88200707, // 001E GETMBR R8 R3 K7
|
||||
0x58240009, // 001F LDCONST R9 K9
|
||||
0x7C180600, // 0020 CALL R6 3
|
||||
0x80040C00, // 0021 RET 1 R6
|
||||
0x1C1C0D09, // 001B EQ R7 R6 K9
|
||||
0x781E0005, // 001C JMPF R7 #0023
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240907, // 001E GETMBR R9 R4 K7
|
||||
0x58280009, // 001F LDCONST R10 K9
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020018, // 0022 JMP #003C
|
||||
0x1C180B0A, // 0023 EQ R6 R5 K10
|
||||
0x781A0005, // 0024 JMPF R6 #002B
|
||||
0x8C180706, // 0025 GETMET R6 R3 K6
|
||||
0x88200707, // 0026 GETMBR R8 R3 K7
|
||||
0x5426FFFD, // 0027 LDINT R9 65534
|
||||
0x7C180600, // 0028 CALL R6 3
|
||||
0x80040C00, // 0029 RET 1 R6
|
||||
0x1C1C0D0A, // 0023 EQ R7 R6 K10
|
||||
0x781E0005, // 0024 JMPF R7 #002B
|
||||
0x8C1C0706, // 0025 GETMET R7 R3 K6
|
||||
0x88240907, // 0026 GETMBR R9 R4 K7
|
||||
0x542AFFFD, // 0027 LDINT R10 65534
|
||||
0x7C1C0600, // 0028 CALL R7 3
|
||||
0x80040E00, // 0029 RET 1 R7
|
||||
0x70020010, // 002A JMP #003C
|
||||
0x541AFFFB, // 002B LDINT R6 65532
|
||||
0x1C180A06, // 002C EQ R6 R5 R6
|
||||
0x781A0005, // 002D JMPF R6 #0034
|
||||
0x8C180706, // 002E GETMET R6 R3 K6
|
||||
0x8820070B, // 002F GETMBR R8 R3 K11
|
||||
0x58240004, // 0030 LDCONST R9 K4
|
||||
0x7C180600, // 0031 CALL R6 3
|
||||
0x80040C00, // 0032 RET 1 R6
|
||||
0x541EFFFB, // 002B LDINT R7 65532
|
||||
0x1C1C0C07, // 002C EQ R7 R6 R7
|
||||
0x781E0005, // 002D JMPF R7 #0034
|
||||
0x8C1C0706, // 002E GETMET R7 R3 K6
|
||||
0x8824090B, // 002F GETMBR R9 R4 K11
|
||||
0x58280004, // 0030 LDCONST R10 K4
|
||||
0x7C1C0600, // 0031 CALL R7 3
|
||||
0x80040E00, // 0032 RET 1 R7
|
||||
0x70020007, // 0033 JMP #003C
|
||||
0x541AFFFC, // 0034 LDINT R6 65533
|
||||
0x1C180A06, // 0035 EQ R6 R5 R6
|
||||
0x781A0004, // 0036 JMPF R6 #003C
|
||||
0x8C180706, // 0037 GETMET R6 R3 K6
|
||||
0x8820070B, // 0038 GETMBR R8 R3 K11
|
||||
0x5824000C, // 0039 LDCONST R9 K12
|
||||
0x7C180600, // 003A CALL R6 3
|
||||
0x80040C00, // 003B RET 1 R6
|
||||
0x70020007, // 003C JMP #0045
|
||||
0x60180003, // 003D GETGBL R6 G3
|
||||
0x5C1C0000, // 003E MOVE R7 R0
|
||||
0x7C180200, // 003F CALL R6 1
|
||||
0x8C180D0D, // 0040 GETMET R6 R6 K13
|
||||
0x5C200200, // 0041 MOVE R8 R1
|
||||
0x5C240400, // 0042 MOVE R9 R2
|
||||
0x7C180600, // 0043 CALL R6 3
|
||||
0x80040C00, // 0044 RET 1 R6
|
||||
0x80000000, // 0045 RET 0
|
||||
0x541EFFFC, // 0034 LDINT R7 65533
|
||||
0x1C1C0C07, // 0035 EQ R7 R6 R7
|
||||
0x781E0004, // 0036 JMPF R7 #003C
|
||||
0x8C1C0706, // 0037 GETMET R7 R3 K6
|
||||
0x8824090B, // 0038 GETMBR R9 R4 K11
|
||||
0x5828000C, // 0039 LDCONST R10 K12
|
||||
0x7C1C0600, // 003A CALL R7 3
|
||||
0x80040E00, // 003B RET 1 R7
|
||||
0x70020008, // 003C JMP #0046
|
||||
0x601C0003, // 003D GETGBL R7 G3
|
||||
0x5C200000, // 003E MOVE R8 R0
|
||||
0x7C1C0200, // 003F CALL R7 1
|
||||
0x8C1C0F0D, // 0040 GETMET R7 R7 K13
|
||||
0x5C240200, // 0041 MOVE R9 R1
|
||||
0x5C280400, // 0042 MOVE R10 R2
|
||||
0x5C2C0600, // 0043 MOVE R11 R3
|
||||
0x7C1C0800, // 0044 CALL R7 4
|
||||
0x80040E00, // 0045 RET 1 R7
|
||||
0x80000000, // 0046 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -79,8 +79,8 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_parse_configuration, /* name *
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -94,7 +94,7 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_occupancy),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(U1),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_const_int(1),
|
||||
@ -105,75 +105,76 @@ be_local_closure(Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[68]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0405, // 0004 LDINT R6 1030
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0033, // 0006 JMPF R6 #003B
|
||||
0x1C180B04, // 0007 EQ R6 R5 K4
|
||||
0x781A000F, // 0008 JMPF R6 #0019
|
||||
0x88180105, // 0009 GETMBR R6 R0 K5
|
||||
0x4C1C0000, // 000A LDNIL R7
|
||||
0x20180C07, // 000B NE R6 R6 R7
|
||||
0x781A0005, // 000C JMPF R6 #0013
|
||||
0x8C180706, // 000D GETMET R6 R3 K6
|
||||
0x88200707, // 000E GETMBR R8 R3 K7
|
||||
0x88240105, // 000F GETMBR R9 R0 K5
|
||||
0x7C180600, // 0010 CALL R6 3
|
||||
0x80040C00, // 0011 RET 1 R6
|
||||
( &(const binstruction[69]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0405, // 0004 LDINT R7 1030
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0033, // 0006 JMPF R7 #003B
|
||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||
0x781E000F, // 0008 JMPF R7 #0019
|
||||
0x881C0105, // 0009 GETMBR R7 R0 K5
|
||||
0x4C200000, // 000A LDNIL R8
|
||||
0x201C0E08, // 000B NE R7 R7 R8
|
||||
0x781E0005, // 000C JMPF R7 #0013
|
||||
0x8C1C0706, // 000D GETMET R7 R3 K6
|
||||
0x88240907, // 000E GETMBR R9 R4 K7
|
||||
0x88280105, // 000F GETMBR R10 R0 K5
|
||||
0x7C1C0600, // 0010 CALL R7 3
|
||||
0x80040E00, // 0011 RET 1 R7
|
||||
0x70020004, // 0012 JMP #0018
|
||||
0x8C180706, // 0013 GETMET R6 R3 K6
|
||||
0x88200708, // 0014 GETMBR R8 R3 K8
|
||||
0x4C240000, // 0015 LDNIL R9
|
||||
0x7C180600, // 0016 CALL R6 3
|
||||
0x80040C00, // 0017 RET 1 R6
|
||||
0x8C1C0706, // 0013 GETMET R7 R3 K6
|
||||
0x88240908, // 0014 GETMBR R9 R4 K8
|
||||
0x4C280000, // 0015 LDNIL R10
|
||||
0x7C1C0600, // 0016 CALL R7 3
|
||||
0x80040E00, // 0017 RET 1 R7
|
||||
0x70020020, // 0018 JMP #003A
|
||||
0x1C180B09, // 0019 EQ R6 R5 K9
|
||||
0x781A0005, // 001A JMPF R6 #0021
|
||||
0x8C180706, // 001B GETMET R6 R3 K6
|
||||
0x88200707, // 001C GETMBR R8 R3 K7
|
||||
0x5824000A, // 001D LDCONST R9 K10
|
||||
0x7C180600, // 001E CALL R6 3
|
||||
0x80040C00, // 001F RET 1 R6
|
||||
0x1C1C0D09, // 0019 EQ R7 R6 K9
|
||||
0x781E0005, // 001A JMPF R7 #0021
|
||||
0x8C1C0706, // 001B GETMET R7 R3 K6
|
||||
0x88240907, // 001C GETMBR R9 R4 K7
|
||||
0x5828000A, // 001D LDCONST R10 K10
|
||||
0x7C1C0600, // 001E CALL R7 3
|
||||
0x80040E00, // 001F RET 1 R7
|
||||
0x70020018, // 0020 JMP #003A
|
||||
0x1C180B0B, // 0021 EQ R6 R5 K11
|
||||
0x781A0005, // 0022 JMPF R6 #0029
|
||||
0x8C180706, // 0023 GETMET R6 R3 K6
|
||||
0x88200707, // 0024 GETMBR R8 R3 K7
|
||||
0x58240004, // 0025 LDCONST R9 K4
|
||||
0x7C180600, // 0026 CALL R6 3
|
||||
0x80040C00, // 0027 RET 1 R6
|
||||
0x1C1C0D0B, // 0021 EQ R7 R6 K11
|
||||
0x781E0005, // 0022 JMPF R7 #0029
|
||||
0x8C1C0706, // 0023 GETMET R7 R3 K6
|
||||
0x88240907, // 0024 GETMBR R9 R4 K7
|
||||
0x58280004, // 0025 LDCONST R10 K4
|
||||
0x7C1C0600, // 0026 CALL R7 3
|
||||
0x80040E00, // 0027 RET 1 R7
|
||||
0x70020010, // 0028 JMP #003A
|
||||
0x541AFFFB, // 0029 LDINT R6 65532
|
||||
0x1C180A06, // 002A EQ R6 R5 R6
|
||||
0x781A0005, // 002B JMPF R6 #0032
|
||||
0x8C180706, // 002C GETMET R6 R3 K6
|
||||
0x8820070C, // 002D GETMBR R8 R3 K12
|
||||
0x58240004, // 002E LDCONST R9 K4
|
||||
0x7C180600, // 002F CALL R6 3
|
||||
0x80040C00, // 0030 RET 1 R6
|
||||
0x541EFFFB, // 0029 LDINT R7 65532
|
||||
0x1C1C0C07, // 002A EQ R7 R6 R7
|
||||
0x781E0005, // 002B JMPF R7 #0032
|
||||
0x8C1C0706, // 002C GETMET R7 R3 K6
|
||||
0x8824090C, // 002D GETMBR R9 R4 K12
|
||||
0x58280004, // 002E LDCONST R10 K4
|
||||
0x7C1C0600, // 002F CALL R7 3
|
||||
0x80040E00, // 0030 RET 1 R7
|
||||
0x70020007, // 0031 JMP #003A
|
||||
0x541AFFFC, // 0032 LDINT R6 65533
|
||||
0x1C180A06, // 0033 EQ R6 R5 R6
|
||||
0x781A0004, // 0034 JMPF R6 #003A
|
||||
0x8C180706, // 0035 GETMET R6 R3 K6
|
||||
0x8820070C, // 0036 GETMBR R8 R3 K12
|
||||
0x5824000A, // 0037 LDCONST R9 K10
|
||||
0x7C180600, // 0038 CALL R6 3
|
||||
0x80040C00, // 0039 RET 1 R6
|
||||
0x70020007, // 003A JMP #0043
|
||||
0x60180003, // 003B GETGBL R6 G3
|
||||
0x5C1C0000, // 003C MOVE R7 R0
|
||||
0x7C180200, // 003D CALL R6 1
|
||||
0x8C180D0D, // 003E GETMET R6 R6 K13
|
||||
0x5C200200, // 003F MOVE R8 R1
|
||||
0x5C240400, // 0040 MOVE R9 R2
|
||||
0x7C180600, // 0041 CALL R6 3
|
||||
0x80040C00, // 0042 RET 1 R6
|
||||
0x80000000, // 0043 RET 0
|
||||
0x541EFFFC, // 0032 LDINT R7 65533
|
||||
0x1C1C0C07, // 0033 EQ R7 R6 R7
|
||||
0x781E0004, // 0034 JMPF R7 #003A
|
||||
0x8C1C0706, // 0035 GETMET R7 R3 K6
|
||||
0x8824090C, // 0036 GETMBR R9 R4 K12
|
||||
0x5828000A, // 0037 LDCONST R10 K10
|
||||
0x7C1C0600, // 0038 CALL R7 3
|
||||
0x80040E00, // 0039 RET 1 R7
|
||||
0x70020008, // 003A JMP #0044
|
||||
0x601C0003, // 003B GETGBL R7 G3
|
||||
0x5C200000, // 003C MOVE R8 R0
|
||||
0x7C1C0200, // 003D CALL R7 1
|
||||
0x8C1C0F0D, // 003E GETMET R7 R7 K13
|
||||
0x5C240200, // 003F MOVE R9 R1
|
||||
0x5C280400, // 0040 MOVE R10 R2
|
||||
0x5C2C0600, // 0041 MOVE R11 R3
|
||||
0x7C1C0800, // 0042 CALL R7 4
|
||||
0x80040E00, // 0043 RET 1 R7
|
||||
0x80000000, // 0044 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -79,8 +79,8 @@ be_local_closure(Matter_Plugin_Sensor_OnOff_parse_configuration, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Sensor_OnOff_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -94,7 +94,7 @@ be_local_closure(Matter_Plugin_Sensor_OnOff_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_const_int(0),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(BOOL),
|
||||
/* K8 */ be_nested_str_weak(shadow_onoff),
|
||||
/* K9 */ be_nested_str_weak(U4),
|
||||
@ -102,51 +102,52 @@ be_local_closure(Matter_Plugin_Sensor_OnOff_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[44]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0005, // 0004 LDINT R6 6
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A001B, // 0006 JMPF R6 #0023
|
||||
0x8C180104, // 0007 GETMET R6 R0 K4
|
||||
0x7C180200, // 0008 CALL R6 1
|
||||
0x1C180B05, // 0009 EQ R6 R5 K5
|
||||
0x781A0005, // 000A JMPF R6 #0011
|
||||
0x8C180706, // 000B GETMET R6 R3 K6
|
||||
0x88200707, // 000C GETMBR R8 R3 K7
|
||||
0x88240108, // 000D GETMBR R9 R0 K8
|
||||
0x7C180600, // 000E CALL R6 3
|
||||
0x80040C00, // 000F RET 1 R6
|
||||
( &(const binstruction[45]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0005, // 0004 LDINT R7 6
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E001B, // 0006 JMPF R7 #0023
|
||||
0x8C1C0104, // 0007 GETMET R7 R0 K4
|
||||
0x7C1C0200, // 0008 CALL R7 1
|
||||
0x1C1C0D05, // 0009 EQ R7 R6 K5
|
||||
0x781E0005, // 000A JMPF R7 #0011
|
||||
0x8C1C0706, // 000B GETMET R7 R3 K6
|
||||
0x88240907, // 000C GETMBR R9 R4 K7
|
||||
0x88280108, // 000D GETMBR R10 R0 K8
|
||||
0x7C1C0600, // 000E CALL R7 3
|
||||
0x80040E00, // 000F RET 1 R7
|
||||
0x70020010, // 0010 JMP #0022
|
||||
0x541AFFFB, // 0011 LDINT R6 65532
|
||||
0x1C180A06, // 0012 EQ R6 R5 R6
|
||||
0x781A0005, // 0013 JMPF R6 #001A
|
||||
0x8C180706, // 0014 GETMET R6 R3 K6
|
||||
0x88200709, // 0015 GETMBR R8 R3 K9
|
||||
0x58240005, // 0016 LDCONST R9 K5
|
||||
0x7C180600, // 0017 CALL R6 3
|
||||
0x80040C00, // 0018 RET 1 R6
|
||||
0x541EFFFB, // 0011 LDINT R7 65532
|
||||
0x1C1C0C07, // 0012 EQ R7 R6 R7
|
||||
0x781E0005, // 0013 JMPF R7 #001A
|
||||
0x8C1C0706, // 0014 GETMET R7 R3 K6
|
||||
0x88240909, // 0015 GETMBR R9 R4 K9
|
||||
0x58280005, // 0016 LDCONST R10 K5
|
||||
0x7C1C0600, // 0017 CALL R7 3
|
||||
0x80040E00, // 0018 RET 1 R7
|
||||
0x70020007, // 0019 JMP #0022
|
||||
0x541AFFFC, // 001A LDINT R6 65533
|
||||
0x1C180A06, // 001B EQ R6 R5 R6
|
||||
0x781A0004, // 001C JMPF R6 #0022
|
||||
0x8C180706, // 001D GETMET R6 R3 K6
|
||||
0x88200709, // 001E GETMBR R8 R3 K9
|
||||
0x54260003, // 001F LDINT R9 4
|
||||
0x7C180600, // 0020 CALL R6 3
|
||||
0x80040C00, // 0021 RET 1 R6
|
||||
0x70020007, // 0022 JMP #002B
|
||||
0x60180003, // 0023 GETGBL R6 G3
|
||||
0x5C1C0000, // 0024 MOVE R7 R0
|
||||
0x7C180200, // 0025 CALL R6 1
|
||||
0x8C180D0A, // 0026 GETMET R6 R6 K10
|
||||
0x5C200200, // 0027 MOVE R8 R1
|
||||
0x5C240400, // 0028 MOVE R9 R2
|
||||
0x7C180600, // 0029 CALL R6 3
|
||||
0x80040C00, // 002A RET 1 R6
|
||||
0x80000000, // 002B RET 0
|
||||
0x541EFFFC, // 001A LDINT R7 65533
|
||||
0x1C1C0C07, // 001B EQ R7 R6 R7
|
||||
0x781E0004, // 001C JMPF R7 #0022
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240909, // 001E GETMBR R9 R4 K9
|
||||
0x542A0003, // 001F LDINT R10 4
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020008, // 0022 JMP #002C
|
||||
0x601C0003, // 0023 GETGBL R7 G3
|
||||
0x5C200000, // 0024 MOVE R8 R0
|
||||
0x7C1C0200, // 0025 CALL R7 1
|
||||
0x8C1C0F0A, // 0026 GETMET R7 R7 K10
|
||||
0x5C240200, // 0027 MOVE R9 R1
|
||||
0x5C280400, // 0028 MOVE R10 R2
|
||||
0x5C2C0600, // 0029 MOVE R11 R3
|
||||
0x7C1C0800, // 002A CALL R7 4
|
||||
0x80040E00, // 002B RET 1 R7
|
||||
0x80000000, // 002C RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Sensor_Pressure;
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
11, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -26,7 +26,7 @@ be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_value),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(I2),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_const_int(1),
|
||||
@ -37,77 +37,78 @@ be_local_closure(Matter_Plugin_Sensor_Pressure_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[70]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0402, // 0004 LDINT R6 1027
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0035, // 0006 JMPF R6 #003D
|
||||
0x1C180B04, // 0007 EQ R6 R5 K4
|
||||
0x781A0011, // 0008 JMPF R6 #001B
|
||||
0x88180105, // 0009 GETMBR R6 R0 K5
|
||||
0x4C1C0000, // 000A LDNIL R7
|
||||
0x20180C07, // 000B NE R6 R6 R7
|
||||
0x781A0007, // 000C JMPF R6 #0015
|
||||
0x8C180706, // 000D GETMET R6 R3 K6
|
||||
0x88200707, // 000E GETMBR R8 R3 K7
|
||||
0x60240009, // 000F GETGBL R9 G9
|
||||
0x88280105, // 0010 GETMBR R10 R0 K5
|
||||
0x7C240200, // 0011 CALL R9 1
|
||||
0x7C180600, // 0012 CALL R6 3
|
||||
0x80040C00, // 0013 RET 1 R6
|
||||
( &(const binstruction[71]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0402, // 0004 LDINT R7 1027
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0035, // 0006 JMPF R7 #003D
|
||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||
0x781E0011, // 0008 JMPF R7 #001B
|
||||
0x881C0105, // 0009 GETMBR R7 R0 K5
|
||||
0x4C200000, // 000A LDNIL R8
|
||||
0x201C0E08, // 000B NE R7 R7 R8
|
||||
0x781E0007, // 000C JMPF R7 #0015
|
||||
0x8C1C0706, // 000D GETMET R7 R3 K6
|
||||
0x88240907, // 000E GETMBR R9 R4 K7
|
||||
0x60280009, // 000F GETGBL R10 G9
|
||||
0x882C0105, // 0010 GETMBR R11 R0 K5
|
||||
0x7C280200, // 0011 CALL R10 1
|
||||
0x7C1C0600, // 0012 CALL R7 3
|
||||
0x80040E00, // 0013 RET 1 R7
|
||||
0x70020004, // 0014 JMP #001A
|
||||
0x8C180706, // 0015 GETMET R6 R3 K6
|
||||
0x88200708, // 0016 GETMBR R8 R3 K8
|
||||
0x4C240000, // 0017 LDNIL R9
|
||||
0x7C180600, // 0018 CALL R6 3
|
||||
0x80040C00, // 0019 RET 1 R6
|
||||
0x8C1C0706, // 0015 GETMET R7 R3 K6
|
||||
0x88240908, // 0016 GETMBR R9 R4 K8
|
||||
0x4C280000, // 0017 LDNIL R10
|
||||
0x7C1C0600, // 0018 CALL R7 3
|
||||
0x80040E00, // 0019 RET 1 R7
|
||||
0x70020020, // 001A JMP #003C
|
||||
0x1C180B09, // 001B EQ R6 R5 K9
|
||||
0x781A0005, // 001C JMPF R6 #0023
|
||||
0x8C180706, // 001D GETMET R6 R3 K6
|
||||
0x88200707, // 001E GETMBR R8 R3 K7
|
||||
0x542601F3, // 001F LDINT R9 500
|
||||
0x7C180600, // 0020 CALL R6 3
|
||||
0x80040C00, // 0021 RET 1 R6
|
||||
0x1C1C0D09, // 001B EQ R7 R6 K9
|
||||
0x781E0005, // 001C JMPF R7 #0023
|
||||
0x8C1C0706, // 001D GETMET R7 R3 K6
|
||||
0x88240907, // 001E GETMBR R9 R4 K7
|
||||
0x542A01F3, // 001F LDINT R10 500
|
||||
0x7C1C0600, // 0020 CALL R7 3
|
||||
0x80040E00, // 0021 RET 1 R7
|
||||
0x70020018, // 0022 JMP #003C
|
||||
0x1C180B0A, // 0023 EQ R6 R5 K10
|
||||
0x781A0005, // 0024 JMPF R6 #002B
|
||||
0x8C180706, // 0025 GETMET R6 R3 K6
|
||||
0x88200707, // 0026 GETMBR R8 R3 K7
|
||||
0x542605DB, // 0027 LDINT R9 1500
|
||||
0x7C180600, // 0028 CALL R6 3
|
||||
0x80040C00, // 0029 RET 1 R6
|
||||
0x1C1C0D0A, // 0023 EQ R7 R6 K10
|
||||
0x781E0005, // 0024 JMPF R7 #002B
|
||||
0x8C1C0706, // 0025 GETMET R7 R3 K6
|
||||
0x88240907, // 0026 GETMBR R9 R4 K7
|
||||
0x542A05DB, // 0027 LDINT R10 1500
|
||||
0x7C1C0600, // 0028 CALL R7 3
|
||||
0x80040E00, // 0029 RET 1 R7
|
||||
0x70020010, // 002A JMP #003C
|
||||
0x541AFFFB, // 002B LDINT R6 65532
|
||||
0x1C180A06, // 002C EQ R6 R5 R6
|
||||
0x781A0005, // 002D JMPF R6 #0034
|
||||
0x8C180706, // 002E GETMET R6 R3 K6
|
||||
0x8820070B, // 002F GETMBR R8 R3 K11
|
||||
0x58240004, // 0030 LDCONST R9 K4
|
||||
0x7C180600, // 0031 CALL R6 3
|
||||
0x80040C00, // 0032 RET 1 R6
|
||||
0x541EFFFB, // 002B LDINT R7 65532
|
||||
0x1C1C0C07, // 002C EQ R7 R6 R7
|
||||
0x781E0005, // 002D JMPF R7 #0034
|
||||
0x8C1C0706, // 002E GETMET R7 R3 K6
|
||||
0x8824090B, // 002F GETMBR R9 R4 K11
|
||||
0x58280004, // 0030 LDCONST R10 K4
|
||||
0x7C1C0600, // 0031 CALL R7 3
|
||||
0x80040E00, // 0032 RET 1 R7
|
||||
0x70020007, // 0033 JMP #003C
|
||||
0x541AFFFC, // 0034 LDINT R6 65533
|
||||
0x1C180A06, // 0035 EQ R6 R5 R6
|
||||
0x781A0004, // 0036 JMPF R6 #003C
|
||||
0x8C180706, // 0037 GETMET R6 R3 K6
|
||||
0x8820070B, // 0038 GETMBR R8 R3 K11
|
||||
0x5824000C, // 0039 LDCONST R9 K12
|
||||
0x7C180600, // 003A CALL R6 3
|
||||
0x80040C00, // 003B RET 1 R6
|
||||
0x70020007, // 003C JMP #0045
|
||||
0x60180003, // 003D GETGBL R6 G3
|
||||
0x5C1C0000, // 003E MOVE R7 R0
|
||||
0x7C180200, // 003F CALL R6 1
|
||||
0x8C180D0D, // 0040 GETMET R6 R6 K13
|
||||
0x5C200200, // 0041 MOVE R8 R1
|
||||
0x5C240400, // 0042 MOVE R9 R2
|
||||
0x7C180600, // 0043 CALL R6 3
|
||||
0x80040C00, // 0044 RET 1 R6
|
||||
0x80000000, // 0045 RET 0
|
||||
0x541EFFFC, // 0034 LDINT R7 65533
|
||||
0x1C1C0C07, // 0035 EQ R7 R6 R7
|
||||
0x781E0004, // 0036 JMPF R7 #003C
|
||||
0x8C1C0706, // 0037 GETMET R7 R3 K6
|
||||
0x8824090B, // 0038 GETMBR R9 R4 K11
|
||||
0x5828000C, // 0039 LDCONST R10 K12
|
||||
0x7C1C0600, // 003A CALL R7 3
|
||||
0x80040E00, // 003B RET 1 R7
|
||||
0x70020008, // 003C JMP #0046
|
||||
0x601C0003, // 003D GETGBL R7 G3
|
||||
0x5C200000, // 003E MOVE R8 R0
|
||||
0x7C1C0200, // 003F CALL R7 1
|
||||
0x8C1C0F0D, // 0040 GETMET R7 R7 K13
|
||||
0x5C240200, // 0041 MOVE R9 R1
|
||||
0x5C280400, // 0042 MOVE R10 R2
|
||||
0x5C2C0600, // 0043 MOVE R11 R3
|
||||
0x7C1C0800, // 0044 CALL R7 4
|
||||
0x80040E00, // 0045 RET 1 R7
|
||||
0x80000000, // 0046 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Sensor_Temp;
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
3, /* argc */
|
||||
12, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -26,7 +26,7 @@ be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_const_int(0),
|
||||
/* K5 */ be_nested_str_weak(shadow_value),
|
||||
/* K6 */ be_nested_str_weak(create_TLV),
|
||||
/* K6 */ be_nested_str_weak(set),
|
||||
/* K7 */ be_nested_str_weak(I2),
|
||||
/* K8 */ be_nested_str_weak(NULL),
|
||||
/* K9 */ be_const_int(1),
|
||||
@ -36,75 +36,76 @@ be_local_closure(Matter_Plugin_Sensor_Temp_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[68]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0401, // 0004 LDINT R6 1026
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0033, // 0006 JMPF R6 #003B
|
||||
0x1C180B04, // 0007 EQ R6 R5 K4
|
||||
0x781A000F, // 0008 JMPF R6 #0019
|
||||
0x88180105, // 0009 GETMBR R6 R0 K5
|
||||
0x4C1C0000, // 000A LDNIL R7
|
||||
0x20180C07, // 000B NE R6 R6 R7
|
||||
0x781A0005, // 000C JMPF R6 #0013
|
||||
0x8C180706, // 000D GETMET R6 R3 K6
|
||||
0x88200707, // 000E GETMBR R8 R3 K7
|
||||
0x88240105, // 000F GETMBR R9 R0 K5
|
||||
0x7C180600, // 0010 CALL R6 3
|
||||
0x80040C00, // 0011 RET 1 R6
|
||||
( &(const binstruction[69]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0401, // 0004 LDINT R7 1026
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0033, // 0006 JMPF R7 #003B
|
||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||
0x781E000F, // 0008 JMPF R7 #0019
|
||||
0x881C0105, // 0009 GETMBR R7 R0 K5
|
||||
0x4C200000, // 000A LDNIL R8
|
||||
0x201C0E08, // 000B NE R7 R7 R8
|
||||
0x781E0005, // 000C JMPF R7 #0013
|
||||
0x8C1C0706, // 000D GETMET R7 R3 K6
|
||||
0x88240907, // 000E GETMBR R9 R4 K7
|
||||
0x88280105, // 000F GETMBR R10 R0 K5
|
||||
0x7C1C0600, // 0010 CALL R7 3
|
||||
0x80040E00, // 0011 RET 1 R7
|
||||
0x70020004, // 0012 JMP #0018
|
||||
0x8C180706, // 0013 GETMET R6 R3 K6
|
||||
0x88200708, // 0014 GETMBR R8 R3 K8
|
||||
0x4C240000, // 0015 LDNIL R9
|
||||
0x7C180600, // 0016 CALL R6 3
|
||||
0x80040C00, // 0017 RET 1 R6
|
||||
0x8C1C0706, // 0013 GETMET R7 R3 K6
|
||||
0x88240908, // 0014 GETMBR R9 R4 K8
|
||||
0x4C280000, // 0015 LDNIL R10
|
||||
0x7C1C0600, // 0016 CALL R7 3
|
||||
0x80040E00, // 0017 RET 1 R7
|
||||
0x70020020, // 0018 JMP #003A
|
||||
0x1C180B09, // 0019 EQ R6 R5 K9
|
||||
0x781A0005, // 001A JMPF R6 #0021
|
||||
0x8C180706, // 001B GETMET R6 R3 K6
|
||||
0x88200707, // 001C GETMBR R8 R3 K7
|
||||
0x5425EC77, // 001D LDINT R9 -5000
|
||||
0x7C180600, // 001E CALL R6 3
|
||||
0x80040C00, // 001F RET 1 R6
|
||||
0x1C1C0D09, // 0019 EQ R7 R6 K9
|
||||
0x781E0005, // 001A JMPF R7 #0021
|
||||
0x8C1C0706, // 001B GETMET R7 R3 K6
|
||||
0x88240907, // 001C GETMBR R9 R4 K7
|
||||
0x5429EC77, // 001D LDINT R10 -5000
|
||||
0x7C1C0600, // 001E CALL R7 3
|
||||
0x80040E00, // 001F RET 1 R7
|
||||
0x70020018, // 0020 JMP #003A
|
||||
0x1C180B0A, // 0021 EQ R6 R5 K10
|
||||
0x781A0005, // 0022 JMPF R6 #0029
|
||||
0x8C180706, // 0023 GETMET R6 R3 K6
|
||||
0x88200707, // 0024 GETMBR R8 R3 K7
|
||||
0x54263A97, // 0025 LDINT R9 15000
|
||||
0x7C180600, // 0026 CALL R6 3
|
||||
0x80040C00, // 0027 RET 1 R6
|
||||
0x1C1C0D0A, // 0021 EQ R7 R6 K10
|
||||
0x781E0005, // 0022 JMPF R7 #0029
|
||||
0x8C1C0706, // 0023 GETMET R7 R3 K6
|
||||
0x88240907, // 0024 GETMBR R9 R4 K7
|
||||
0x542A3A97, // 0025 LDINT R10 15000
|
||||
0x7C1C0600, // 0026 CALL R7 3
|
||||
0x80040E00, // 0027 RET 1 R7
|
||||
0x70020010, // 0028 JMP #003A
|
||||
0x541AFFFB, // 0029 LDINT R6 65532
|
||||
0x1C180A06, // 002A EQ R6 R5 R6
|
||||
0x781A0005, // 002B JMPF R6 #0032
|
||||
0x8C180706, // 002C GETMET R6 R3 K6
|
||||
0x8820070B, // 002D GETMBR R8 R3 K11
|
||||
0x58240004, // 002E LDCONST R9 K4
|
||||
0x7C180600, // 002F CALL R6 3
|
||||
0x80040C00, // 0030 RET 1 R6
|
||||
0x541EFFFB, // 0029 LDINT R7 65532
|
||||
0x1C1C0C07, // 002A EQ R7 R6 R7
|
||||
0x781E0005, // 002B JMPF R7 #0032
|
||||
0x8C1C0706, // 002C GETMET R7 R3 K6
|
||||
0x8824090B, // 002D GETMBR R9 R4 K11
|
||||
0x58280004, // 002E LDCONST R10 K4
|
||||
0x7C1C0600, // 002F CALL R7 3
|
||||
0x80040E00, // 0030 RET 1 R7
|
||||
0x70020007, // 0031 JMP #003A
|
||||
0x541AFFFC, // 0032 LDINT R6 65533
|
||||
0x1C180A06, // 0033 EQ R6 R5 R6
|
||||
0x781A0004, // 0034 JMPF R6 #003A
|
||||
0x8C180706, // 0035 GETMET R6 R3 K6
|
||||
0x8820070B, // 0036 GETMBR R8 R3 K11
|
||||
0x54260003, // 0037 LDINT R9 4
|
||||
0x7C180600, // 0038 CALL R6 3
|
||||
0x80040C00, // 0039 RET 1 R6
|
||||
0x70020007, // 003A JMP #0043
|
||||
0x60180003, // 003B GETGBL R6 G3
|
||||
0x5C1C0000, // 003C MOVE R7 R0
|
||||
0x7C180200, // 003D CALL R6 1
|
||||
0x8C180D0C, // 003E GETMET R6 R6 K12
|
||||
0x5C200200, // 003F MOVE R8 R1
|
||||
0x5C240400, // 0040 MOVE R9 R2
|
||||
0x7C180600, // 0041 CALL R6 3
|
||||
0x80040C00, // 0042 RET 1 R6
|
||||
0x80000000, // 0043 RET 0
|
||||
0x541EFFFC, // 0032 LDINT R7 65533
|
||||
0x1C1C0C07, // 0033 EQ R7 R6 R7
|
||||
0x781E0004, // 0034 JMPF R7 #003A
|
||||
0x8C1C0706, // 0035 GETMET R7 R3 K6
|
||||
0x8824090B, // 0036 GETMBR R9 R4 K11
|
||||
0x542A0003, // 0037 LDINT R10 4
|
||||
0x7C1C0600, // 0038 CALL R7 3
|
||||
0x80040E00, // 0039 RET 1 R7
|
||||
0x70020008, // 003A JMP #0044
|
||||
0x601C0003, // 003B GETGBL R7 G3
|
||||
0x5C200000, // 003C MOVE R8 R0
|
||||
0x7C1C0200, // 003D CALL R7 1
|
||||
0x8C1C0F0C, // 003E GETMET R7 R7 K12
|
||||
0x5C240200, // 003F MOVE R9 R1
|
||||
0x5C280400, // 0040 MOVE R10 R2
|
||||
0x5C2C0600, // 0041 MOVE R11 R3
|
||||
0x7C1C0800, // 0042 CALL R7 4
|
||||
0x80040E00, // 0043 RET 1 R7
|
||||
0x80000000, // 0044 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -11,8 +11,8 @@ extern const bclass be_class_Matter_Plugin_Shutter;
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
12, /* nstack */
|
||||
3, /* argc */
|
||||
13, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -27,7 +27,7 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_nested_str_weak(update_inverted),
|
||||
/* K6 */ be_const_int(0),
|
||||
/* K7 */ be_nested_str_weak(create_TLV),
|
||||
/* K7 */ be_nested_str_weak(set),
|
||||
/* K8 */ be_nested_str_weak(U1),
|
||||
/* K9 */ be_nested_str_weak(U2),
|
||||
/* K10 */ be_const_int(1),
|
||||
@ -41,158 +41,159 @@ be_local_closure(Matter_Plugin_Shutter_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[151]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x4C180000, // 0004 LDNIL R6
|
||||
0x541E0101, // 0005 LDINT R7 258
|
||||
0x1C1C0807, // 0006 EQ R7 R4 R7
|
||||
0x781E0085, // 0007 JMPF R7 #008E
|
||||
0x8C1C0104, // 0008 GETMET R7 R0 K4
|
||||
0x7C1C0200, // 0009 CALL R7 1
|
||||
0x8C1C0105, // 000A GETMET R7 R0 K5
|
||||
0x7C1C0200, // 000B CALL R7 1
|
||||
0x1C1C0B06, // 000C EQ R7 R5 K6
|
||||
0x781E0005, // 000D JMPF R7 #0014
|
||||
0x8C1C0707, // 000E GETMET R7 R3 K7
|
||||
0x88240708, // 000F GETMBR R9 R3 K8
|
||||
0x542A00FE, // 0010 LDINT R10 255
|
||||
0x7C1C0600, // 0011 CALL R7 3
|
||||
0x80040E00, // 0012 RET 1 R7
|
||||
( &(const binstruction[152]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x4C1C0000, // 0004 LDNIL R7
|
||||
0x54220101, // 0005 LDINT R8 258
|
||||
0x1C200A08, // 0006 EQ R8 R5 R8
|
||||
0x78220085, // 0007 JMPF R8 #008E
|
||||
0x8C200104, // 0008 GETMET R8 R0 K4
|
||||
0x7C200200, // 0009 CALL R8 1
|
||||
0x8C200105, // 000A GETMET R8 R0 K5
|
||||
0x7C200200, // 000B CALL R8 1
|
||||
0x1C200D06, // 000C EQ R8 R6 K6
|
||||
0x78220005, // 000D JMPF R8 #0014
|
||||
0x8C200707, // 000E GETMET R8 R3 K7
|
||||
0x88280908, // 000F GETMBR R10 R4 K8
|
||||
0x542E00FE, // 0010 LDINT R11 255
|
||||
0x7C200600, // 0011 CALL R8 3
|
||||
0x80041000, // 0012 RET 1 R8
|
||||
0x70020078, // 0013 JMP #008D
|
||||
0x541E0004, // 0014 LDINT R7 5
|
||||
0x1C1C0A07, // 0015 EQ R7 R5 R7
|
||||
0x781E0005, // 0016 JMPF R7 #001D
|
||||
0x8C1C0707, // 0017 GETMET R7 R3 K7
|
||||
0x88240709, // 0018 GETMBR R9 R3 K9
|
||||
0x58280006, // 0019 LDCONST R10 K6
|
||||
0x7C1C0600, // 001A CALL R7 3
|
||||
0x80040E00, // 001B RET 1 R7
|
||||
0x54220004, // 0014 LDINT R8 5
|
||||
0x1C200C08, // 0015 EQ R8 R6 R8
|
||||
0x78220005, // 0016 JMPF R8 #001D
|
||||
0x8C200707, // 0017 GETMET R8 R3 K7
|
||||
0x88280909, // 0018 GETMBR R10 R4 K9
|
||||
0x582C0006, // 0019 LDCONST R11 K6
|
||||
0x7C200600, // 001A CALL R8 3
|
||||
0x80041000, // 001B RET 1 R8
|
||||
0x7002006F, // 001C JMP #008D
|
||||
0x541E0006, // 001D LDINT R7 7
|
||||
0x1C1C0A07, // 001E EQ R7 R5 R7
|
||||
0x781E0006, // 001F JMPF R7 #0027
|
||||
0x8C1C0707, // 0020 GETMET R7 R3 K7
|
||||
0x88240708, // 0021 GETMBR R9 R3 K8
|
||||
0x542A0007, // 0022 LDINT R10 8
|
||||
0x002A140A, // 0023 ADD R10 K10 R10
|
||||
0x7C1C0600, // 0024 CALL R7 3
|
||||
0x80040E00, // 0025 RET 1 R7
|
||||
0x54220006, // 001D LDINT R8 7
|
||||
0x1C200C08, // 001E EQ R8 R6 R8
|
||||
0x78220006, // 001F JMPF R8 #0027
|
||||
0x8C200707, // 0020 GETMET R8 R3 K7
|
||||
0x88280908, // 0021 GETMBR R10 R4 K8
|
||||
0x542E0007, // 0022 LDINT R11 8
|
||||
0x002E140B, // 0023 ADD R11 K10 R11
|
||||
0x7C200600, // 0024 CALL R8 3
|
||||
0x80041000, // 0025 RET 1 R8
|
||||
0x70020065, // 0026 JMP #008D
|
||||
0x541E000C, // 0027 LDINT R7 13
|
||||
0x1C1C0A07, // 0028 EQ R7 R5 R7
|
||||
0x781E0005, // 0029 JMPF R7 #0030
|
||||
0x8C1C0707, // 002A GETMET R7 R3 K7
|
||||
0x88240708, // 002B GETMBR R9 R3 K8
|
||||
0x542A00FE, // 002C LDINT R10 255
|
||||
0x7C1C0600, // 002D CALL R7 3
|
||||
0x80040E00, // 002E RET 1 R7
|
||||
0x5422000C, // 0027 LDINT R8 13
|
||||
0x1C200C08, // 0028 EQ R8 R6 R8
|
||||
0x78220005, // 0029 JMPF R8 #0030
|
||||
0x8C200707, // 002A GETMET R8 R3 K7
|
||||
0x88280908, // 002B GETMBR R10 R4 K8
|
||||
0x542E00FE, // 002C LDINT R11 255
|
||||
0x7C200600, // 002D CALL R8 3
|
||||
0x80041000, // 002E RET 1 R8
|
||||
0x7002005C, // 002F JMP #008D
|
||||
0x541E000D, // 0030 LDINT R7 14
|
||||
0x1C1C0A07, // 0031 EQ R7 R5 R7
|
||||
0x781E0013, // 0032 JMPF R7 #0047
|
||||
0x881C010B, // 0033 GETMBR R7 R0 K11
|
||||
0x1C1C0F06, // 0034 EQ R7 R7 K6
|
||||
0x781E0006, // 0035 JMPF R7 #003D
|
||||
0x541E0063, // 0036 LDINT R7 100
|
||||
0x8820010C, // 0037 GETMBR R8 R0 K12
|
||||
0x041C0E08, // 0038 SUB R7 R7 R8
|
||||
0x54220063, // 0039 LDINT R8 100
|
||||
0x081C0E08, // 003A MUL R7 R7 R8
|
||||
0x5C180E00, // 003B MOVE R6 R7
|
||||
0x5422000D, // 0030 LDINT R8 14
|
||||
0x1C200C08, // 0031 EQ R8 R6 R8
|
||||
0x78220013, // 0032 JMPF R8 #0047
|
||||
0x8820010B, // 0033 GETMBR R8 R0 K11
|
||||
0x1C201106, // 0034 EQ R8 R8 K6
|
||||
0x78220006, // 0035 JMPF R8 #003D
|
||||
0x54220063, // 0036 LDINT R8 100
|
||||
0x8824010C, // 0037 GETMBR R9 R0 K12
|
||||
0x04201009, // 0038 SUB R8 R8 R9
|
||||
0x54260063, // 0039 LDINT R9 100
|
||||
0x08201009, // 003A MUL R8 R8 R9
|
||||
0x5C1C1000, // 003B MOVE R7 R8
|
||||
0x70020003, // 003C JMP #0041
|
||||
0x881C010C, // 003D GETMBR R7 R0 K12
|
||||
0x54220063, // 003E LDINT R8 100
|
||||
0x081C0E08, // 003F MUL R7 R7 R8
|
||||
0x5C180E00, // 0040 MOVE R6 R7
|
||||
0x8C1C0707, // 0041 GETMET R7 R3 K7
|
||||
0x88240709, // 0042 GETMBR R9 R3 K9
|
||||
0x5C280C00, // 0043 MOVE R10 R6
|
||||
0x7C1C0600, // 0044 CALL R7 3
|
||||
0x80040E00, // 0045 RET 1 R7
|
||||
0x8820010C, // 003D GETMBR R8 R0 K12
|
||||
0x54260063, // 003E LDINT R9 100
|
||||
0x08201009, // 003F MUL R8 R8 R9
|
||||
0x5C1C1000, // 0040 MOVE R7 R8
|
||||
0x8C200707, // 0041 GETMET R8 R3 K7
|
||||
0x88280909, // 0042 GETMBR R10 R4 K9
|
||||
0x5C2C0E00, // 0043 MOVE R11 R7
|
||||
0x7C200600, // 0044 CALL R8 3
|
||||
0x80041000, // 0045 RET 1 R8
|
||||
0x70020045, // 0046 JMP #008D
|
||||
0x541E0009, // 0047 LDINT R7 10
|
||||
0x1C1C0A07, // 0048 EQ R7 R5 R7
|
||||
0x781E0010, // 0049 JMPF R7 #005B
|
||||
0x881C010D, // 004A GETMBR R7 R0 K13
|
||||
0x1C1C0F06, // 004B EQ R7 R7 K6
|
||||
0x781E0001, // 004C JMPF R7 #004F
|
||||
0x581C0006, // 004D LDCONST R7 K6
|
||||
0x54220009, // 0047 LDINT R8 10
|
||||
0x1C200C08, // 0048 EQ R8 R6 R8
|
||||
0x78220010, // 0049 JMPF R8 #005B
|
||||
0x8820010D, // 004A GETMBR R8 R0 K13
|
||||
0x1C201106, // 004B EQ R8 R8 K6
|
||||
0x78220001, // 004C JMPF R8 #004F
|
||||
0x58200006, // 004D LDCONST R8 K6
|
||||
0x70020005, // 004E JMP #0055
|
||||
0x881C010D, // 004F GETMBR R7 R0 K13
|
||||
0x241C0F06, // 0050 GT R7 R7 K6
|
||||
0x781E0001, // 0051 JMPF R7 #0054
|
||||
0x581C000A, // 0052 LDCONST R7 K10
|
||||
0x8820010D, // 004F GETMBR R8 R0 K13
|
||||
0x24201106, // 0050 GT R8 R8 K6
|
||||
0x78220001, // 0051 JMPF R8 #0054
|
||||
0x5820000A, // 0052 LDCONST R8 K10
|
||||
0x70020000, // 0053 JMP #0055
|
||||
0x581C000E, // 0054 LDCONST R7 K14
|
||||
0x8C200707, // 0055 GETMET R8 R3 K7
|
||||
0x88280708, // 0056 GETMBR R10 R3 K8
|
||||
0x5C2C0E00, // 0057 MOVE R11 R7
|
||||
0x7C200600, // 0058 CALL R8 3
|
||||
0x80041000, // 0059 RET 1 R8
|
||||
0x5820000E, // 0054 LDCONST R8 K14
|
||||
0x8C240707, // 0055 GETMET R9 R3 K7
|
||||
0x882C0908, // 0056 GETMBR R11 R4 K8
|
||||
0x5C301000, // 0057 MOVE R12 R8
|
||||
0x7C240600, // 0058 CALL R9 3
|
||||
0x80041200, // 0059 RET 1 R9
|
||||
0x70020031, // 005A JMP #008D
|
||||
0x541E000A, // 005B LDINT R7 11
|
||||
0x1C1C0A07, // 005C EQ R7 R5 R7
|
||||
0x781E0013, // 005D JMPF R7 #0072
|
||||
0x881C010B, // 005E GETMBR R7 R0 K11
|
||||
0x1C1C0F06, // 005F EQ R7 R7 K6
|
||||
0x781E0006, // 0060 JMPF R7 #0068
|
||||
0x541E0063, // 0061 LDINT R7 100
|
||||
0x8820010F, // 0062 GETMBR R8 R0 K15
|
||||
0x041C0E08, // 0063 SUB R7 R7 R8
|
||||
0x54220063, // 0064 LDINT R8 100
|
||||
0x081C0E08, // 0065 MUL R7 R7 R8
|
||||
0x5C180E00, // 0066 MOVE R6 R7
|
||||
0x5422000A, // 005B LDINT R8 11
|
||||
0x1C200C08, // 005C EQ R8 R6 R8
|
||||
0x78220013, // 005D JMPF R8 #0072
|
||||
0x8820010B, // 005E GETMBR R8 R0 K11
|
||||
0x1C201106, // 005F EQ R8 R8 K6
|
||||
0x78220006, // 0060 JMPF R8 #0068
|
||||
0x54220063, // 0061 LDINT R8 100
|
||||
0x8824010F, // 0062 GETMBR R9 R0 K15
|
||||
0x04201009, // 0063 SUB R8 R8 R9
|
||||
0x54260063, // 0064 LDINT R9 100
|
||||
0x08201009, // 0065 MUL R8 R8 R9
|
||||
0x5C1C1000, // 0066 MOVE R7 R8
|
||||
0x70020003, // 0067 JMP #006C
|
||||
0x881C010F, // 0068 GETMBR R7 R0 K15
|
||||
0x54220063, // 0069 LDINT R8 100
|
||||
0x081C0E08, // 006A MUL R7 R7 R8
|
||||
0x5C180E00, // 006B MOVE R6 R7
|
||||
0x8C1C0707, // 006C GETMET R7 R3 K7
|
||||
0x88240709, // 006D GETMBR R9 R3 K9
|
||||
0x5C280C00, // 006E MOVE R10 R6
|
||||
0x7C1C0600, // 006F CALL R7 3
|
||||
0x80040E00, // 0070 RET 1 R7
|
||||
0x8820010F, // 0068 GETMBR R8 R0 K15
|
||||
0x54260063, // 0069 LDINT R9 100
|
||||
0x08201009, // 006A MUL R8 R8 R9
|
||||
0x5C1C1000, // 006B MOVE R7 R8
|
||||
0x8C200707, // 006C GETMET R8 R3 K7
|
||||
0x88280909, // 006D GETMBR R10 R4 K9
|
||||
0x5C2C0E00, // 006E MOVE R11 R7
|
||||
0x7C200600, // 006F CALL R8 3
|
||||
0x80041000, // 0070 RET 1 R8
|
||||
0x7002001A, // 0071 JMP #008D
|
||||
0x541E0016, // 0072 LDINT R7 23
|
||||
0x1C1C0A07, // 0073 EQ R7 R5 R7
|
||||
0x781E0005, // 0074 JMPF R7 #007B
|
||||
0x8C1C0707, // 0075 GETMET R7 R3 K7
|
||||
0x88240708, // 0076 GETMBR R9 R3 K8
|
||||
0x58280006, // 0077 LDCONST R10 K6
|
||||
0x7C1C0600, // 0078 CALL R7 3
|
||||
0x80040E00, // 0079 RET 1 R7
|
||||
0x54220016, // 0072 LDINT R8 23
|
||||
0x1C200C08, // 0073 EQ R8 R6 R8
|
||||
0x78220005, // 0074 JMPF R8 #007B
|
||||
0x8C200707, // 0075 GETMET R8 R3 K7
|
||||
0x88280908, // 0076 GETMBR R10 R4 K8
|
||||
0x582C0006, // 0077 LDCONST R11 K6
|
||||
0x7C200600, // 0078 CALL R8 3
|
||||
0x80041000, // 0079 RET 1 R8
|
||||
0x70020011, // 007A JMP #008D
|
||||
0x541EFFFB, // 007B LDINT R7 65532
|
||||
0x1C1C0A07, // 007C EQ R7 R5 R7
|
||||
0x781E0006, // 007D JMPF R7 #0085
|
||||
0x8C1C0707, // 007E GETMET R7 R3 K7
|
||||
0x88240710, // 007F GETMBR R9 R3 K16
|
||||
0x542A0003, // 0080 LDINT R10 4
|
||||
0x002A140A, // 0081 ADD R10 K10 R10
|
||||
0x7C1C0600, // 0082 CALL R7 3
|
||||
0x80040E00, // 0083 RET 1 R7
|
||||
0x5422FFFB, // 007B LDINT R8 65532
|
||||
0x1C200C08, // 007C EQ R8 R6 R8
|
||||
0x78220006, // 007D JMPF R8 #0085
|
||||
0x8C200707, // 007E GETMET R8 R3 K7
|
||||
0x88280910, // 007F GETMBR R10 R4 K16
|
||||
0x542E0003, // 0080 LDINT R11 4
|
||||
0x002E140B, // 0081 ADD R11 K10 R11
|
||||
0x7C200600, // 0082 CALL R8 3
|
||||
0x80041000, // 0083 RET 1 R8
|
||||
0x70020007, // 0084 JMP #008D
|
||||
0x541EFFFC, // 0085 LDINT R7 65533
|
||||
0x1C1C0A07, // 0086 EQ R7 R5 R7
|
||||
0x781E0004, // 0087 JMPF R7 #008D
|
||||
0x8C1C0707, // 0088 GETMET R7 R3 K7
|
||||
0x88240710, // 0089 GETMBR R9 R3 K16
|
||||
0x542A0004, // 008A LDINT R10 5
|
||||
0x7C1C0600, // 008B CALL R7 3
|
||||
0x80040E00, // 008C RET 1 R7
|
||||
0x70020007, // 008D JMP #0096
|
||||
0x601C0003, // 008E GETGBL R7 G3
|
||||
0x5C200000, // 008F MOVE R8 R0
|
||||
0x7C1C0200, // 0090 CALL R7 1
|
||||
0x8C1C0F11, // 0091 GETMET R7 R7 K17
|
||||
0x5C240200, // 0092 MOVE R9 R1
|
||||
0x5C280400, // 0093 MOVE R10 R2
|
||||
0x7C1C0600, // 0094 CALL R7 3
|
||||
0x80040E00, // 0095 RET 1 R7
|
||||
0x80000000, // 0096 RET 0
|
||||
0x5422FFFC, // 0085 LDINT R8 65533
|
||||
0x1C200C08, // 0086 EQ R8 R6 R8
|
||||
0x78220004, // 0087 JMPF R8 #008D
|
||||
0x8C200707, // 0088 GETMET R8 R3 K7
|
||||
0x88280910, // 0089 GETMBR R10 R4 K16
|
||||
0x542E0004, // 008A LDINT R11 5
|
||||
0x7C200600, // 008B CALL R8 3
|
||||
0x80041000, // 008C RET 1 R8
|
||||
0x70020008, // 008D JMP #0097
|
||||
0x60200003, // 008E GETGBL R8 G3
|
||||
0x5C240000, // 008F MOVE R9 R0
|
||||
0x7C200200, // 0090 CALL R8 1
|
||||
0x8C201111, // 0091 GETMET R8 R8 K17
|
||||
0x5C280200, // 0092 MOVE R10 R1
|
||||
0x5C2C0400, // 0093 MOVE R11 R2
|
||||
0x5C300600, // 0094 MOVE R12 R3
|
||||
0x7C200800, // 0095 CALL R8 4
|
||||
0x80041000, // 0096 RET 1 R8
|
||||
0x80000000, // 0097 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -207,8 +207,8 @@ be_local_closure(Matter_Plugin_ShutterTilt_invoke_request, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Plugin_ShutterTilt_read_attribute, /* name */
|
||||
be_nested_proto(
|
||||
13, /* nstack */
|
||||
3, /* argc */
|
||||
14, /* nstack */
|
||||
4, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
NULL, /* no upvals */
|
||||
@ -221,7 +221,7 @@ be_local_closure(Matter_Plugin_ShutterTilt_read_attribute, /* name */
|
||||
/* K2 */ be_nested_str_weak(cluster),
|
||||
/* K3 */ be_nested_str_weak(attribute),
|
||||
/* K4 */ be_nested_str_weak(update_shadow_lazy),
|
||||
/* K5 */ be_nested_str_weak(create_TLV),
|
||||
/* K5 */ be_nested_str_weak(set),
|
||||
/* K6 */ be_nested_str_weak(U1),
|
||||
/* K7 */ be_const_int(1),
|
||||
/* K8 */ be_nested_str_weak(update_tilt_min_max),
|
||||
@ -239,119 +239,120 @@ be_local_closure(Matter_Plugin_ShutterTilt_read_attribute, /* name */
|
||||
}),
|
||||
be_str_weak(read_attribute),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[112]) { /* code */
|
||||
0xB80E0000, // 0000 GETNGBL R3 K0
|
||||
0x880C0701, // 0001 GETMBR R3 R3 K1
|
||||
0x88100502, // 0002 GETMBR R4 R2 K2
|
||||
0x88140503, // 0003 GETMBR R5 R2 K3
|
||||
0x541A0101, // 0004 LDINT R6 258
|
||||
0x1C180806, // 0005 EQ R6 R4 R6
|
||||
0x781A0060, // 0006 JMPF R6 #0068
|
||||
0x8C180104, // 0007 GETMET R6 R0 K4
|
||||
0x7C180200, // 0008 CALL R6 1
|
||||
0x541A0006, // 0009 LDINT R6 7
|
||||
0x1C180A06, // 000A EQ R6 R5 R6
|
||||
0x781A0008, // 000B JMPF R6 #0015
|
||||
0x8C180705, // 000C GETMET R6 R3 K5
|
||||
0x88200706, // 000D GETMBR R8 R3 K6
|
||||
0x54260007, // 000E LDINT R9 8
|
||||
0x00260E09, // 000F ADD R9 K7 R9
|
||||
0x542A000F, // 0010 LDINT R10 16
|
||||
0x0024120A, // 0011 ADD R9 R9 R10
|
||||
0x7C180600, // 0012 CALL R6 3
|
||||
0x80040C00, // 0013 RET 1 R6
|
||||
( &(const binstruction[113]) { /* code */
|
||||
0xB8120000, // 0000 GETNGBL R4 K0
|
||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
||||
0x541E0101, // 0004 LDINT R7 258
|
||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||
0x781E0060, // 0006 JMPF R7 #0068
|
||||
0x8C1C0104, // 0007 GETMET R7 R0 K4
|
||||
0x7C1C0200, // 0008 CALL R7 1
|
||||
0x541E0006, // 0009 LDINT R7 7
|
||||
0x1C1C0C07, // 000A EQ R7 R6 R7
|
||||
0x781E0008, // 000B JMPF R7 #0015
|
||||
0x8C1C0705, // 000C GETMET R7 R3 K5
|
||||
0x88240906, // 000D GETMBR R9 R4 K6
|
||||
0x542A0007, // 000E LDINT R10 8
|
||||
0x002A0E0A, // 000F ADD R10 K7 R10
|
||||
0x542E000F, // 0010 LDINT R11 16
|
||||
0x0028140B, // 0011 ADD R10 R10 R11
|
||||
0x7C1C0600, // 0012 CALL R7 3
|
||||
0x80040E00, // 0013 RET 1 R7
|
||||
0x70020052, // 0014 JMP #0068
|
||||
0x541A000E, // 0015 LDINT R6 15
|
||||
0x1C180A06, // 0016 EQ R6 R5 R6
|
||||
0x781A0021, // 0017 JMPF R6 #003A
|
||||
0x8C180108, // 0018 GETMET R6 R0 K8
|
||||
0x7C180200, // 0019 CALL R6 1
|
||||
0x88180109, // 001A GETMBR R6 R0 K9
|
||||
0x4C1C0000, // 001B LDNIL R7
|
||||
0x20180C07, // 001C NE R6 R6 R7
|
||||
0x781A0015, // 001D JMPF R6 #0034
|
||||
0x8818010A, // 001E GETMBR R6 R0 K10
|
||||
0x4C1C0000, // 001F LDNIL R7
|
||||
0x20180C07, // 0020 NE R6 R6 R7
|
||||
0x781A0011, // 0021 JMPF R6 #0034
|
||||
0xB81A1600, // 0022 GETNGBL R6 K11
|
||||
0x8C180D0C, // 0023 GETMET R6 R6 K12
|
||||
0x8820010D, // 0024 GETMBR R8 R0 K13
|
||||
0x88240109, // 0025 GETMBR R9 R0 K9
|
||||
0x04201009, // 0026 SUB R8 R8 R9
|
||||
0x5824000E, // 0027 LDCONST R9 K14
|
||||
0x8828010A, // 0028 GETMBR R10 R0 K10
|
||||
0x882C0109, // 0029 GETMBR R11 R0 K9
|
||||
0x0428140B, // 002A SUB R10 R10 R11
|
||||
0x582C000E, // 002B LDCONST R11 K14
|
||||
0x5432270F, // 002C LDINT R12 10000
|
||||
0x7C180C00, // 002D CALL R6 6
|
||||
0x8C1C0705, // 002E GETMET R7 R3 K5
|
||||
0x8824070F, // 002F GETMBR R9 R3 K15
|
||||
0x5C280C00, // 0030 MOVE R10 R6
|
||||
0x7C1C0600, // 0031 CALL R7 3
|
||||
0x80040E00, // 0032 RET 1 R7
|
||||
0x541E000E, // 0015 LDINT R7 15
|
||||
0x1C1C0C07, // 0016 EQ R7 R6 R7
|
||||
0x781E0021, // 0017 JMPF R7 #003A
|
||||
0x8C1C0108, // 0018 GETMET R7 R0 K8
|
||||
0x7C1C0200, // 0019 CALL R7 1
|
||||
0x881C0109, // 001A GETMBR R7 R0 K9
|
||||
0x4C200000, // 001B LDNIL R8
|
||||
0x201C0E08, // 001C NE R7 R7 R8
|
||||
0x781E0015, // 001D JMPF R7 #0034
|
||||
0x881C010A, // 001E GETMBR R7 R0 K10
|
||||
0x4C200000, // 001F LDNIL R8
|
||||
0x201C0E08, // 0020 NE R7 R7 R8
|
||||
0x781E0011, // 0021 JMPF R7 #0034
|
||||
0xB81E1600, // 0022 GETNGBL R7 K11
|
||||
0x8C1C0F0C, // 0023 GETMET R7 R7 K12
|
||||
0x8824010D, // 0024 GETMBR R9 R0 K13
|
||||
0x88280109, // 0025 GETMBR R10 R0 K9
|
||||
0x0424120A, // 0026 SUB R9 R9 R10
|
||||
0x5828000E, // 0027 LDCONST R10 K14
|
||||
0x882C010A, // 0028 GETMBR R11 R0 K10
|
||||
0x88300109, // 0029 GETMBR R12 R0 K9
|
||||
0x042C160C, // 002A SUB R11 R11 R12
|
||||
0x5830000E, // 002B LDCONST R12 K14
|
||||
0x5436270F, // 002C LDINT R13 10000
|
||||
0x7C1C0C00, // 002D CALL R7 6
|
||||
0x8C200705, // 002E GETMET R8 R3 K5
|
||||
0x8828090F, // 002F GETMBR R10 R4 K15
|
||||
0x5C2C0E00, // 0030 MOVE R11 R7
|
||||
0x7C200600, // 0031 CALL R8 3
|
||||
0x80041000, // 0032 RET 1 R8
|
||||
0x70020004, // 0033 JMP #0039
|
||||
0x8C180705, // 0034 GETMET R6 R3 K5
|
||||
0x88200710, // 0035 GETMBR R8 R3 K16
|
||||
0x4C240000, // 0036 LDNIL R9
|
||||
0x7C180600, // 0037 CALL R6 3
|
||||
0x80040C00, // 0038 RET 1 R6
|
||||
0x8C1C0705, // 0034 GETMET R7 R3 K5
|
||||
0x88240910, // 0035 GETMBR R9 R4 K16
|
||||
0x4C280000, // 0036 LDNIL R10
|
||||
0x7C1C0600, // 0037 CALL R7 3
|
||||
0x80040E00, // 0038 RET 1 R7
|
||||
0x7002002D, // 0039 JMP #0068
|
||||
0x541A000B, // 003A LDINT R6 12
|
||||
0x1C180A06, // 003B EQ R6 R5 R6
|
||||
0x781A001F, // 003C JMPF R6 #005D
|
||||
0x88180109, // 003D GETMBR R6 R0 K9
|
||||
0x4C1C0000, // 003E LDNIL R7
|
||||
0x20180C07, // 003F NE R6 R6 R7
|
||||
0x781A0015, // 0040 JMPF R6 #0057
|
||||
0x8818010A, // 0041 GETMBR R6 R0 K10
|
||||
0x4C1C0000, // 0042 LDNIL R7
|
||||
0x20180C07, // 0043 NE R6 R6 R7
|
||||
0x781A0011, // 0044 JMPF R6 #0057
|
||||
0xB81A1600, // 0045 GETNGBL R6 K11
|
||||
0x8C180D0C, // 0046 GETMET R6 R6 K12
|
||||
0x8820010D, // 0047 GETMBR R8 R0 K13
|
||||
0x88240109, // 0048 GETMBR R9 R0 K9
|
||||
0x04201009, // 0049 SUB R8 R8 R9
|
||||
0x5824000E, // 004A LDCONST R9 K14
|
||||
0x8828010A, // 004B GETMBR R10 R0 K10
|
||||
0x882C0109, // 004C GETMBR R11 R0 K9
|
||||
0x0428140B, // 004D SUB R10 R10 R11
|
||||
0x582C000E, // 004E LDCONST R11 K14
|
||||
0x5432270F, // 004F LDINT R12 10000
|
||||
0x7C180C00, // 0050 CALL R6 6
|
||||
0x8C1C0705, // 0051 GETMET R7 R3 K5
|
||||
0x8824070F, // 0052 GETMBR R9 R3 K15
|
||||
0x5C280C00, // 0053 MOVE R10 R6
|
||||
0x7C1C0600, // 0054 CALL R7 3
|
||||
0x80040E00, // 0055 RET 1 R7
|
||||
0x541E000B, // 003A LDINT R7 12
|
||||
0x1C1C0C07, // 003B EQ R7 R6 R7
|
||||
0x781E001F, // 003C JMPF R7 #005D
|
||||
0x881C0109, // 003D GETMBR R7 R0 K9
|
||||
0x4C200000, // 003E LDNIL R8
|
||||
0x201C0E08, // 003F NE R7 R7 R8
|
||||
0x781E0015, // 0040 JMPF R7 #0057
|
||||
0x881C010A, // 0041 GETMBR R7 R0 K10
|
||||
0x4C200000, // 0042 LDNIL R8
|
||||
0x201C0E08, // 0043 NE R7 R7 R8
|
||||
0x781E0011, // 0044 JMPF R7 #0057
|
||||
0xB81E1600, // 0045 GETNGBL R7 K11
|
||||
0x8C1C0F0C, // 0046 GETMET R7 R7 K12
|
||||
0x8824010D, // 0047 GETMBR R9 R0 K13
|
||||
0x88280109, // 0048 GETMBR R10 R0 K9
|
||||
0x0424120A, // 0049 SUB R9 R9 R10
|
||||
0x5828000E, // 004A LDCONST R10 K14
|
||||
0x882C010A, // 004B GETMBR R11 R0 K10
|
||||
0x88300109, // 004C GETMBR R12 R0 K9
|
||||
0x042C160C, // 004D SUB R11 R11 R12
|
||||
0x5830000E, // 004E LDCONST R12 K14
|
||||
0x5436270F, // 004F LDINT R13 10000
|
||||
0x7C1C0C00, // 0050 CALL R7 6
|
||||
0x8C200705, // 0051 GETMET R8 R3 K5
|
||||
0x8828090F, // 0052 GETMBR R10 R4 K15
|
||||
0x5C2C0E00, // 0053 MOVE R11 R7
|
||||
0x7C200600, // 0054 CALL R8 3
|
||||
0x80041000, // 0055 RET 1 R8
|
||||
0x70020004, // 0056 JMP #005C
|
||||
0x8C180705, // 0057 GETMET R6 R3 K5
|
||||
0x88200710, // 0058 GETMBR R8 R3 K16
|
||||
0x4C240000, // 0059 LDNIL R9
|
||||
0x7C180600, // 005A CALL R6 3
|
||||
0x80040C00, // 005B RET 1 R6
|
||||
0x8C1C0705, // 0057 GETMET R7 R3 K5
|
||||
0x88240910, // 0058 GETMBR R9 R4 K16
|
||||
0x4C280000, // 0059 LDNIL R10
|
||||
0x7C1C0600, // 005A CALL R7 3
|
||||
0x80040E00, // 005B RET 1 R7
|
||||
0x7002000A, // 005C JMP #0068
|
||||
0x541AFFFB, // 005D LDINT R6 65532
|
||||
0x1C180A06, // 005E EQ R6 R5 R6
|
||||
0x781A0007, // 005F JMPF R6 #0068
|
||||
0x8C180705, // 0060 GETMET R6 R3 K5
|
||||
0x88200711, // 0061 GETMBR R8 R3 K17
|
||||
0x54260003, // 0062 LDINT R9 4
|
||||
0x00262409, // 0063 ADD R9 K18 R9
|
||||
0x542A000F, // 0064 LDINT R10 16
|
||||
0x0024120A, // 0065 ADD R9 R9 R10
|
||||
0x7C180600, // 0066 CALL R6 3
|
||||
0x80040C00, // 0067 RET 1 R6
|
||||
0x60180003, // 0068 GETGBL R6 G3
|
||||
0x5C1C0000, // 0069 MOVE R7 R0
|
||||
0x7C180200, // 006A CALL R6 1
|
||||
0x8C180D13, // 006B GETMET R6 R6 K19
|
||||
0x5C200200, // 006C MOVE R8 R1
|
||||
0x5C240400, // 006D MOVE R9 R2
|
||||
0x7C180600, // 006E CALL R6 3
|
||||
0x80040C00, // 006F RET 1 R6
|
||||
0x541EFFFB, // 005D LDINT R7 65532
|
||||
0x1C1C0C07, // 005E EQ R7 R6 R7
|
||||
0x781E0007, // 005F JMPF R7 #0068
|
||||
0x8C1C0705, // 0060 GETMET R7 R3 K5
|
||||
0x88240911, // 0061 GETMBR R9 R4 K17
|
||||
0x542A0003, // 0062 LDINT R10 4
|
||||
0x002A240A, // 0063 ADD R10 K18 R10
|
||||
0x542E000F, // 0064 LDINT R11 16
|
||||
0x0028140B, // 0065 ADD R10 R10 R11
|
||||
0x7C1C0600, // 0066 CALL R7 3
|
||||
0x80040E00, // 0067 RET 1 R7
|
||||
0x601C0003, // 0068 GETGBL R7 G3
|
||||
0x5C200000, // 0069 MOVE R8 R0
|
||||
0x7C1C0200, // 006A CALL R7 1
|
||||
0x8C1C0F13, // 006B GETMET R7 R7 K19
|
||||
0x5C240200, // 006C MOVE R9 R1
|
||||
0x5C280400, // 006D MOVE R10 R2
|
||||
0x5C2C0600, // 006E MOVE R11 R3
|
||||
0x7C1C0800, // 006F CALL R7 4
|
||||
0x80040E00, // 0070 RET 1 R7
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -6,6 +6,129 @@
|
||||
|
||||
extern const bclass be_class_Matter_Profiler;
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: start
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Profiler_start, /* 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[11]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(active),
|
||||
/* K1 */ be_const_int(0),
|
||||
/* K2 */ be_nested_str_weak(PREALLOCATED),
|
||||
/* K3 */ be_nested_str_weak(millis),
|
||||
/* K4 */ be_nested_str_weak(names),
|
||||
/* K5 */ be_const_int(1),
|
||||
/* K6 */ be_nested_str_weak(len),
|
||||
/* K7 */ be_nested_str_weak(tasmota),
|
||||
/* K8 */ be_nested_str_weak(gc),
|
||||
/* K9 */ be_nested_str_weak(log),
|
||||
/* K10 */ be_nested_str_weak(start),
|
||||
}),
|
||||
be_str_weak(start),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[23]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x74060000, // 0001 JMPT R1 #0003
|
||||
0x80000200, // 0002 RET 0
|
||||
0x58040001, // 0003 LDCONST R1 K1
|
||||
0x88080102, // 0004 GETMBR R2 R0 K2
|
||||
0x14080202, // 0005 LT R2 R1 R2
|
||||
0x780A0007, // 0006 JMPF R2 #000F
|
||||
0x88080103, // 0007 GETMBR R2 R0 K3
|
||||
0x4C0C0000, // 0008 LDNIL R3
|
||||
0x98080203, // 0009 SETIDX R2 R1 R3
|
||||
0x88080104, // 000A GETMBR R2 R0 K4
|
||||
0x4C0C0000, // 000B LDNIL R3
|
||||
0x98080203, // 000C SETIDX R2 R1 R3
|
||||
0x00040305, // 000D ADD R1 R1 K5
|
||||
0x7001FFF4, // 000E JMP #0004
|
||||
0x90020D01, // 000F SETMBR R0 K6 K1
|
||||
0xB80A0E00, // 0010 GETNGBL R2 K7
|
||||
0x8C080508, // 0011 GETMET R2 R2 K8
|
||||
0x7C080200, // 0012 CALL R2 1
|
||||
0x8C080109, // 0013 GETMET R2 R0 K9
|
||||
0x5810000A, // 0014 LDCONST R4 K10
|
||||
0x7C080400, // 0015 CALL R2 2
|
||||
0x80000000, // 0016 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Profiler_init, /* 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[ 9]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(active),
|
||||
/* K1 */ be_nested_str_weak(millis),
|
||||
/* K2 */ be_nested_str_weak(resize),
|
||||
/* K3 */ be_nested_str_weak(PREALLOCATED),
|
||||
/* K4 */ be_nested_str_weak(names),
|
||||
/* K5 */ be_nested_str_weak(allocs),
|
||||
/* K6 */ be_nested_str_weak(reallocs),
|
||||
/* K7 */ be_nested_str_weak(len),
|
||||
/* K8 */ be_const_int(0),
|
||||
}),
|
||||
be_str_weak(init),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[32]) { /* code */
|
||||
0x50040000, // 0000 LDBOOL R1 0 0
|
||||
0x90020001, // 0001 SETMBR R0 K0 R1
|
||||
0x60040012, // 0002 GETGBL R1 G18
|
||||
0x7C040000, // 0003 CALL R1 0
|
||||
0x90020201, // 0004 SETMBR R0 K1 R1
|
||||
0x88040101, // 0005 GETMBR R1 R0 K1
|
||||
0x8C040302, // 0006 GETMET R1 R1 K2
|
||||
0x880C0103, // 0007 GETMBR R3 R0 K3
|
||||
0x7C040400, // 0008 CALL R1 2
|
||||
0x60040012, // 0009 GETGBL R1 G18
|
||||
0x7C040000, // 000A CALL R1 0
|
||||
0x90020801, // 000B SETMBR R0 K4 R1
|
||||
0x88040104, // 000C GETMBR R1 R0 K4
|
||||
0x8C040302, // 000D GETMET R1 R1 K2
|
||||
0x880C0103, // 000E GETMBR R3 R0 K3
|
||||
0x7C040400, // 000F CALL R1 2
|
||||
0x60040012, // 0010 GETGBL R1 G18
|
||||
0x7C040000, // 0011 CALL R1 0
|
||||
0x90020A01, // 0012 SETMBR R0 K5 R1
|
||||
0x88040105, // 0013 GETMBR R1 R0 K5
|
||||
0x8C040302, // 0014 GETMET R1 R1 K2
|
||||
0x880C0103, // 0015 GETMBR R3 R0 K3
|
||||
0x7C040400, // 0016 CALL R1 2
|
||||
0x60040012, // 0017 GETGBL R1 G18
|
||||
0x7C040000, // 0018 CALL R1 0
|
||||
0x90020C01, // 0019 SETMBR R0 K6 R1
|
||||
0x88040106, // 001A GETMBR R1 R0 K6
|
||||
0x8C040302, // 001B GETMET R1 R1 K2
|
||||
0x880C0103, // 001C GETMBR R3 R0 K3
|
||||
0x7C040400, // 001D CALL R1 2
|
||||
0x90020F08, // 001E SETMBR R0 K7 K8
|
||||
0x80000000, // 001F RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: set_active
|
||||
********************************************************************/
|
||||
@ -36,58 +159,12 @@ be_local_closure(Matter_Profiler_set_active, /* name */
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: start
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Profiler_start, /* 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[ 7]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(active),
|
||||
/* K1 */ be_nested_str_weak(millis),
|
||||
/* K2 */ be_nested_str_weak(resize),
|
||||
/* K3 */ be_const_int(0),
|
||||
/* K4 */ be_nested_str_weak(names),
|
||||
/* K5 */ be_nested_str_weak(log),
|
||||
/* K6 */ be_nested_str_weak(start),
|
||||
}),
|
||||
be_str_weak(start),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[15]) { /* code */
|
||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||
0x74060000, // 0001 JMPT R1 #0003
|
||||
0x80000200, // 0002 RET 0
|
||||
0x88040101, // 0003 GETMBR R1 R0 K1
|
||||
0x8C040302, // 0004 GETMET R1 R1 K2
|
||||
0x580C0003, // 0005 LDCONST R3 K3
|
||||
0x7C040400, // 0006 CALL R1 2
|
||||
0x88040104, // 0007 GETMBR R1 R0 K4
|
||||
0x8C040302, // 0008 GETMET R1 R1 K2
|
||||
0x580C0003, // 0009 LDCONST R3 K3
|
||||
0x7C040400, // 000A CALL R1 2
|
||||
0x8C040105, // 000B GETMET R1 R0 K5
|
||||
0x580C0006, // 000C LDCONST R3 K6
|
||||
0x7C040400, // 000D CALL R1 2
|
||||
0x80000000, // 000E RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: log
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Profiler_log, /* name */
|
||||
be_nested_proto(
|
||||
6, /* nstack */
|
||||
7, /* nstack */
|
||||
2, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
@ -95,76 +172,49 @@ be_local_closure(Matter_Profiler_log, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 5]) { /* constants */
|
||||
( &(const bvalue[10]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(active),
|
||||
/* K1 */ be_nested_str_weak(millis),
|
||||
/* K2 */ be_nested_str_weak(push),
|
||||
/* K3 */ be_nested_str_weak(tasmota),
|
||||
/* K4 */ be_nested_str_weak(names),
|
||||
/* K1 */ be_nested_str_weak(debug),
|
||||
/* K2 */ be_nested_str_weak(len),
|
||||
/* K3 */ be_nested_str_weak(PREALLOCATED),
|
||||
/* K4 */ be_nested_str_weak(millis),
|
||||
/* K5 */ be_nested_str_weak(tasmota),
|
||||
/* K6 */ be_nested_str_weak(names),
|
||||
/* K7 */ be_nested_str_weak(allocs),
|
||||
/* K8 */ be_nested_str_weak(reallocs),
|
||||
/* K9 */ be_const_int(1),
|
||||
}),
|
||||
be_str_weak(log),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[14]) { /* code */
|
||||
( &(const binstruction[28]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x740A0000, // 0001 JMPT R2 #0003
|
||||
0x80000400, // 0002 RET 0
|
||||
0x88080101, // 0003 GETMBR R2 R0 K1
|
||||
0x8C080502, // 0004 GETMET R2 R2 K2
|
||||
0xB8120600, // 0005 GETNGBL R4 K3
|
||||
0x8C100901, // 0006 GETMET R4 R4 K1
|
||||
0x7C100200, // 0007 CALL R4 1
|
||||
0x7C080400, // 0008 CALL R2 2
|
||||
0x88080104, // 0009 GETMBR R2 R0 K4
|
||||
0x8C080502, // 000A GETMET R2 R2 K2
|
||||
0x5C100200, // 000B MOVE R4 R1
|
||||
0x7C080400, // 000C CALL R2 2
|
||||
0x80000000, // 000D RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
/********************************************************************
|
||||
** Solidified function: init
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Profiler_init, /* 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[ 5]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(active),
|
||||
/* K1 */ be_nested_str_weak(millis),
|
||||
/* K2 */ be_nested_str_weak(resize),
|
||||
/* K3 */ be_nested_str_weak(PREALLOCATED),
|
||||
/* K4 */ be_nested_str_weak(names),
|
||||
}),
|
||||
be_str_weak(init),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[17]) { /* code */
|
||||
0x50040000, // 0000 LDBOOL R1 0 0
|
||||
0x90020001, // 0001 SETMBR R0 K0 R1
|
||||
0x60040012, // 0002 GETGBL R1 G18
|
||||
0x7C040000, // 0003 CALL R1 0
|
||||
0x90020201, // 0004 SETMBR R0 K1 R1
|
||||
0x88040101, // 0005 GETMBR R1 R0 K1
|
||||
0x8C040302, // 0006 GETMET R1 R1 K2
|
||||
0x880C0103, // 0007 GETMBR R3 R0 K3
|
||||
0x7C040400, // 0008 CALL R1 2
|
||||
0x60040012, // 0009 GETGBL R1 G18
|
||||
0x7C040000, // 000A CALL R1 0
|
||||
0x90020801, // 000B SETMBR R0 K4 R1
|
||||
0x88040104, // 000C GETMBR R1 R0 K4
|
||||
0x8C040302, // 000D GETMET R1 R1 K2
|
||||
0x880C0103, // 000E GETMBR R3 R0 K3
|
||||
0x7C040400, // 000F CALL R1 2
|
||||
0x80000000, // 0010 RET 0
|
||||
0xA40A0200, // 0003 IMPORT R2 K1
|
||||
0x880C0102, // 0004 GETMBR R3 R0 K2
|
||||
0x88100103, // 0005 GETMBR R4 R0 K3
|
||||
0x28100604, // 0006 GE R4 R3 R4
|
||||
0x78120000, // 0007 JMPF R4 #0009
|
||||
0x80000800, // 0008 RET 0
|
||||
0x88100104, // 0009 GETMBR R4 R0 K4
|
||||
0xB8160A00, // 000A GETNGBL R5 K5
|
||||
0x8C140B04, // 000B GETMET R5 R5 K4
|
||||
0x7C140200, // 000C CALL R5 1
|
||||
0x98100605, // 000D SETIDX R4 R3 R5
|
||||
0x88100106, // 000E GETMBR R4 R0 K6
|
||||
0x98100601, // 000F SETIDX R4 R3 R1
|
||||
0x88100107, // 0010 GETMBR R4 R0 K7
|
||||
0x8C140507, // 0011 GETMET R5 R2 K7
|
||||
0x7C140200, // 0012 CALL R5 1
|
||||
0x98100605, // 0013 SETIDX R4 R3 R5
|
||||
0x88100108, // 0014 GETMBR R4 R0 K8
|
||||
0x8C140508, // 0015 GETMET R5 R2 K8
|
||||
0x7C140200, // 0016 CALL R5 1
|
||||
0x98100605, // 0017 SETIDX R4 R3 R5
|
||||
0x88100102, // 0018 GETMBR R4 R0 K2
|
||||
0x00100909, // 0019 ADD R4 R4 K9
|
||||
0x90020404, // 001A SETMBR R0 K2 R4
|
||||
0x80000000, // 001B RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -176,7 +226,7 @@ be_local_closure(Matter_Profiler_init, /* name */
|
||||
********************************************************************/
|
||||
be_local_closure(Matter_Profiler_dump, /* name */
|
||||
be_nested_proto(
|
||||
10, /* nstack */
|
||||
13, /* nstack */
|
||||
2, /* argc */
|
||||
2, /* varg */
|
||||
0, /* has upvals */
|
||||
@ -184,7 +234,7 @@ be_local_closure(Matter_Profiler_dump, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[10]) { /* constants */
|
||||
( &(const bvalue[13]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(active),
|
||||
/* K1 */ be_nested_str_weak(log),
|
||||
/* K2 */ be_nested_str_weak(_X3C_X2D_X2Dend_X2D_X2D_X3E),
|
||||
@ -192,13 +242,16 @@ be_local_closure(Matter_Profiler_dump, /* name */
|
||||
/* K4 */ be_nested_str_weak(MTR_X3A_X20Profiler_X20dump_X3A),
|
||||
/* K5 */ be_nested_str_weak(millis),
|
||||
/* K6 */ be_const_int(0),
|
||||
/* K7 */ be_const_int(1),
|
||||
/* K8 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X27_X25s_X27),
|
||||
/* K9 */ be_nested_str_weak(names),
|
||||
/* K7 */ be_nested_str_weak(allocs),
|
||||
/* K8 */ be_nested_str_weak(reallocs),
|
||||
/* K9 */ be_const_int(1),
|
||||
/* K10 */ be_nested_str_weak(len),
|
||||
/* K11 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X5B_X254i_X5D_X27_X25s_X27),
|
||||
/* K12 */ be_nested_str_weak(names),
|
||||
}),
|
||||
be_str_weak(dump),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[34]) { /* code */
|
||||
( &(const binstruction[39]) { /* code */
|
||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||
0x740A0000, // 0001 JMPT R2 #0003
|
||||
0x80000400, // 0002 RET 0
|
||||
@ -212,27 +265,32 @@ be_local_closure(Matter_Profiler_dump, /* name */
|
||||
0x7C080600, // 000A CALL R2 3
|
||||
0x88080105, // 000B GETMBR R2 R0 K5
|
||||
0x94080506, // 000C GETIDX R2 R2 K6
|
||||
0x580C0007, // 000D LDCONST R3 K7
|
||||
0x6010000C, // 000E GETGBL R4 G12
|
||||
0x88140105, // 000F GETMBR R5 R0 K5
|
||||
0x7C100200, // 0010 CALL R4 1
|
||||
0x14100604, // 0011 LT R4 R3 R4
|
||||
0x7812000D, // 0012 JMPF R4 #0021
|
||||
0xB8120600, // 0013 GETNGBL R4 K3
|
||||
0x8C100901, // 0014 GETMET R4 R4 K1
|
||||
0x60180018, // 0015 GETGBL R6 G24
|
||||
0x581C0008, // 0016 LDCONST R7 K8
|
||||
0x88200105, // 0017 GETMBR R8 R0 K5
|
||||
0x94201003, // 0018 GETIDX R8 R8 R3
|
||||
0x04201002, // 0019 SUB R8 R8 R2
|
||||
0x88240109, // 001A GETMBR R9 R0 K9
|
||||
0x94241203, // 001B GETIDX R9 R9 R3
|
||||
0x7C180600, // 001C CALL R6 3
|
||||
0x5C1C0200, // 001D MOVE R7 R1
|
||||
0x7C100600, // 001E CALL R4 3
|
||||
0x000C0707, // 001F ADD R3 R3 K7
|
||||
0x7001FFEC, // 0020 JMP #000E
|
||||
0x80000000, // 0021 RET 0
|
||||
0x880C0107, // 000D GETMBR R3 R0 K7
|
||||
0x940C0706, // 000E GETIDX R3 R3 K6
|
||||
0x88100108, // 000F GETMBR R4 R0 K8
|
||||
0x94100906, // 0010 GETIDX R4 R4 K6
|
||||
0x58140009, // 0011 LDCONST R5 K9
|
||||
0x8818010A, // 0012 GETMBR R6 R0 K10
|
||||
0x14180A06, // 0013 LT R6 R5 R6
|
||||
0x781A0010, // 0014 JMPF R6 #0026
|
||||
0xB81A0600, // 0015 GETNGBL R6 K3
|
||||
0x8C180D01, // 0016 GETMET R6 R6 K1
|
||||
0x60200018, // 0017 GETGBL R8 G24
|
||||
0x5824000B, // 0018 LDCONST R9 K11
|
||||
0x88280105, // 0019 GETMBR R10 R0 K5
|
||||
0x94281405, // 001A GETIDX R10 R10 R5
|
||||
0x04281402, // 001B SUB R10 R10 R2
|
||||
0x882C0107, // 001C GETMBR R11 R0 K7
|
||||
0x942C1605, // 001D GETIDX R11 R11 R5
|
||||
0x042C1603, // 001E SUB R11 R11 R3
|
||||
0x8830010C, // 001F GETMBR R12 R0 K12
|
||||
0x94301805, // 0020 GETIDX R12 R12 R5
|
||||
0x7C200800, // 0021 CALL R8 4
|
||||
0x5C240200, // 0022 MOVE R9 R1
|
||||
0x7C180600, // 0023 CALL R6 3
|
||||
0x00140B09, // 0024 ADD R5 R5 K9
|
||||
0x7001FFEB, // 0025 JMP #0012
|
||||
0x80000000, // 0026 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -243,19 +301,22 @@ be_local_closure(Matter_Profiler_dump, /* name */
|
||||
** Solidified class: Matter_Profiler
|
||||
********************************************************************/
|
||||
be_local_class(Matter_Profiler,
|
||||
3,
|
||||
6,
|
||||
NULL,
|
||||
be_nested_map(9,
|
||||
be_nested_map(12,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_const_key_weak(set_active, 5), be_const_closure(Matter_Profiler_set_active_closure) },
|
||||
{ be_const_key_weak(millis, -1), be_const_var(0) },
|
||||
{ be_const_key_weak(start, 4), be_const_closure(Matter_Profiler_start_closure) },
|
||||
{ be_const_key_weak(active, 1), be_const_var(2) },
|
||||
{ be_const_key_weak(PREALLOCATED, -1), be_const_int(50) },
|
||||
{ be_const_key_weak(log, -1), be_const_closure(Matter_Profiler_log_closure) },
|
||||
{ be_const_key_weak(init, -1), be_const_closure(Matter_Profiler_init_closure) },
|
||||
{ be_const_key_weak(dump, 8), be_const_closure(Matter_Profiler_dump_closure) },
|
||||
{ be_const_key_weak(millis, 5), be_const_var(0) },
|
||||
{ be_const_key_weak(reallocs, -1), be_const_var(4) },
|
||||
{ be_const_key_weak(init, 1), be_const_closure(Matter_Profiler_init_closure) },
|
||||
{ be_const_key_weak(len, -1), be_const_var(5) },
|
||||
{ be_const_key_weak(active, -1), be_const_var(2) },
|
||||
{ be_const_key_weak(set_active, -1), be_const_closure(Matter_Profiler_set_active_closure) },
|
||||
{ be_const_key_weak(names, -1), be_const_var(1) },
|
||||
{ be_const_key_weak(dump, -1), be_const_closure(Matter_Profiler_dump_closure) },
|
||||
{ be_const_key_weak(allocs, 10), be_const_var(3) },
|
||||
{ be_const_key_weak(log, -1), be_const_closure(Matter_Profiler_log_closure) },
|
||||
{ be_const_key_weak(PREALLOCATED, -1), be_const_int(50) },
|
||||
{ be_const_key_weak(start, 0), be_const_closure(Matter_Profiler_start_closure) },
|
||||
})),
|
||||
be_str_weak(Matter_Profiler)
|
||||
);
|
||||
|
@ -851,21 +851,19 @@ be_local_closure(Matter_Session_update, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[ 4]) { /* constants */
|
||||
( &(const bvalue[ 3]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(last_used),
|
||||
/* K1 */ be_nested_str_weak(tasmota),
|
||||
/* K2 */ be_nested_str_weak(rtc),
|
||||
/* K3 */ be_nested_str_weak(utc),
|
||||
/* K2 */ be_nested_str_weak(rtc_utc),
|
||||
}),
|
||||
be_str_weak(update),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[ 6]) { /* code */
|
||||
( &(const binstruction[ 5]) { /* code */
|
||||
0xB8060200, // 0000 GETNGBL R1 K1
|
||||
0x8C040302, // 0001 GETMET R1 R1 K2
|
||||
0x7C040200, // 0002 CALL R1 1
|
||||
0x94040303, // 0003 GETIDX R1 R1 K3
|
||||
0x90020001, // 0004 SETMBR R0 K0 R1
|
||||
0x80000000, // 0005 RET 0
|
||||
0x90020001, // 0003 SETMBR R0 K0 R1
|
||||
0x80000000, // 0004 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -15,6 +15,7 @@ extern int m_rsa_rsassa_pkcs1_v1_5(bvm *vm);
|
||||
|
||||
extern int m_aes_ccm_init(bvm *vm);
|
||||
extern int m_aes_ccm_encrypt(bvm *vm);
|
||||
extern int m_aes_ccm_encrypt1(bvm *vm);
|
||||
extern int m_aes_ccm_decrypt(bvm *vm);
|
||||
extern int m_aes_ccm_decrypt1(bvm *vm);
|
||||
extern int m_aes_ccm_tag(bvm *vm);
|
||||
@ -140,6 +141,7 @@ class be_class_aes_ccm (scope: global, name: AES_CCM) {
|
||||
tag, func(m_aes_ccm_tag)
|
||||
|
||||
decrypt1, static_func(m_aes_ccm_decrypt1)
|
||||
encrypt1, static_func(m_aes_ccm_encrypt1)
|
||||
}
|
||||
|
||||
class be_class_aes_gcm (scope: global, name: AES_GCM) {
|
||||
|
@ -358,8 +358,10 @@ extern "C" {
|
||||
// all-in-one decrypt function
|
||||
// decryption in place
|
||||
//
|
||||
int32_t m_aes_ccm_decrypt1(struct bvm *vm);
|
||||
int32_t m_aes_ccm_decrypt1(struct bvm *vm) {
|
||||
int32_t m_aes_ccm_encrypt1_or_decryt1(bvm *vm, int encrypt);
|
||||
int32_t m_aes_ccm_encrypt1(bvm *vm) { return m_aes_ccm_encrypt1_or_decryt1(vm, 1); }
|
||||
int32_t m_aes_ccm_decrypt1(bvm *vm) { return m_aes_ccm_encrypt1_or_decryt1(vm, 0); }
|
||||
int32_t m_aes_ccm_encrypt1_or_decryt1(bvm *vm, int encrypt) {
|
||||
int32_t argc = be_top(vm); // Get the number of arguments
|
||||
if (argc >= 13 && be_isbytes(vm, 1) // secret_key
|
||||
&& be_isbytes(vm, 2) && be_isint(vm, 3) && be_isint(vm, 4) // iv, iv_start, iv_len
|
||||
@ -432,16 +434,24 @@ extern "C" {
|
||||
}
|
||||
br_ccm_flip(&ccm_ctx);
|
||||
|
||||
br_ccm_run(&ccm_ctx, 0 /*decrypt*/, data, data_len); // decrypt in place
|
||||
br_ccm_run(&ccm_ctx, encrypt, data, data_len); // decrypt in place
|
||||
|
||||
// check tag
|
||||
// create a bytes buffer of 16 bytes
|
||||
uint8_t tag_computed[16] = {};
|
||||
br_ccm_get_tag(&ccm_ctx, tag_computed);
|
||||
if (memcmp(tag_computed, tag, tag_len) == 0) {
|
||||
|
||||
if (encrypt) {
|
||||
// copy the tag back
|
||||
memcpy(tag, tag_computed, tag_len);
|
||||
be_pushbool(vm, btrue);
|
||||
} else {
|
||||
be_pushbool(vm, bfalse);
|
||||
// check that the tag match
|
||||
if (memcmp(tag_computed, tag, tag_len) == 0) {
|
||||
be_pushbool(vm, btrue);
|
||||
} else {
|
||||
be_pushbool(vm, bfalse);
|
||||
}
|
||||
}
|
||||
|
||||
// success
|
||||
|
Loading…
x
Reference in New Issue
Block a user