mirror of https://github.com/arendst/Tasmota.git
Matter support for 'Generic Switch' based on Tasmota Buttons (#21731)
This commit is contained in:
parent
152239c3ac
commit
be40830bc0
|
@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file.
|
||||||
- NeoPool data validation and communication statistics default enabled for ESP32 only (#21721)
|
- NeoPool data validation and communication statistics default enabled for ESP32 only (#21721)
|
||||||
- `FUNC_BUTTON_PRESSED` now contains `press_counter` encoded in `XdrvMailbox.command_code` (#21724)
|
- `FUNC_BUTTON_PRESSED` now contains `press_counter` encoded in `XdrvMailbox.command_code` (#21724)
|
||||||
- Berry `int64` added `low32()` and `high32()` methods, used in Matter
|
- Berry `int64` added `low32()` and `high32()` methods, used in Matter
|
||||||
|
- Matter support for 'Generic Switch' based on Tasmota Buttons
|
||||||
|
|
||||||
### Breaking Changed
|
### Breaking Changed
|
||||||
|
|
||||||
|
|
|
@ -272,7 +272,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because
|
||||||
#include "solidify/solidified_Matter_Plugin_3_Sensor_Rain.h"
|
#include "solidify/solidified_Matter_Plugin_3_Sensor_Rain.h"
|
||||||
#include "solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h"
|
#include "solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h"
|
||||||
#include "solidify/solidified_Matter_Plugin_2_Fan.h"
|
#include "solidify/solidified_Matter_Plugin_2_Fan.h"
|
||||||
#include "solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch.h"
|
#include "solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h"
|
||||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Fan.h"
|
#include "solidify/solidified_Matter_Plugin_9_Virt_Fan.h"
|
||||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Contact.h"
|
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Contact.h"
|
||||||
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Occupancy.h"
|
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Occupancy.h"
|
||||||
|
|
|
@ -72,28 +72,139 @@ class Matter_EventQueued
|
||||||
# free up some space
|
# free up some space
|
||||||
def to_raw_bytes()
|
def to_raw_bytes()
|
||||||
if (self.raw_tlv == nil)
|
if (self.raw_tlv == nil)
|
||||||
var event_report = matter.EventReportIB()
|
self.raw_tlv = bytes(64)
|
||||||
var event_ib = matter.EventDataIB()
|
self.eventreport2raw(self.raw_tlv, self.endpoint, self.cluster, self.event_id, self.is_urgent, self.priority, self.event_no, self.epoch_timestamp, self.data0, self.data1, self.data2)
|
||||||
event_report.event_data = event_ib
|
# var event_report = matter.EventReportIB()
|
||||||
var event_path = matter.EventPathIB()
|
# var event_ib = matter.EventDataIB()
|
||||||
event_path.endpoint = self.endpoint
|
# event_report.event_data = event_ib
|
||||||
event_path.cluster = self.cluster
|
# var event_path = matter.EventPathIB()
|
||||||
event_path.event = self.event_id
|
# event_path.endpoint = self.endpoint
|
||||||
event_path.is_urgent = self.is_urgent
|
# event_path.cluster = self.cluster
|
||||||
event_ib.path = event_path
|
# event_path.event = self.event_id
|
||||||
event_ib.priority = self.priority
|
# event_path.is_urgent = self.is_urgent
|
||||||
event_ib.event_number = self.event_no
|
# event_ib.path = event_path
|
||||||
event_ib.epoch_timestamp = self.epoch_timestamp
|
# event_ib.priority = self.priority
|
||||||
event_ib.data = matter.TLV.Matter_TLV_struct()
|
# event_ib.event_number = self.event_no
|
||||||
if (self.data0 != nil) event_ib.data.add_obj(0, self.data0) end
|
# event_ib.epoch_timestamp = self.epoch_timestamp
|
||||||
if (self.data1 != nil) event_ib.data.add_obj(1, self.data1) end
|
# event_ib.data = matter.TLV.Matter_TLV_struct()
|
||||||
if (self.data2 != nil) event_ib.data.add_obj(2, self.data2) end
|
# if (self.data0 != nil) event_ib.data.add_obj(0, self.data0) end
|
||||||
|
# if (self.data1 != nil) event_ib.data.add_obj(1, self.data1) end
|
||||||
|
# if (self.data2 != nil) event_ib.data.add_obj(2, self.data2) end
|
||||||
|
|
||||||
self.raw_tlv = event_report.to_TLV().tlv2raw() # bytes()
|
# self.raw_tlv = event_report.to_TLV().tlv2raw() # bytes()
|
||||||
end
|
end
|
||||||
return self.raw_tlv
|
return self.raw_tlv
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#############################################################
|
||||||
|
# eventreport2raw
|
||||||
|
#
|
||||||
|
# 15 = EventReportIB
|
||||||
|
# 3501 = EventDataIB
|
||||||
|
#
|
||||||
|
def eventreport2raw(raw, endpoint, cluster, event, is_urgent, priority, event_no, epoch_timestamp, data0, data1, data2)
|
||||||
|
# open struct EventReportIB
|
||||||
|
raw.add(0x15, 1) # add 15
|
||||||
|
# open sturct EventDataIB
|
||||||
|
raw.add(0x3501, -2) # add 3501
|
||||||
|
# add path
|
||||||
|
self.eventpath2raw(raw, endpoint, cluster, event, is_urgent)
|
||||||
|
# add EventNumber
|
||||||
|
raw.add(0x2701, -2) # 2701 FFFFFFFFFFFFFFFF
|
||||||
|
raw.add(event_no.low32(), 4) # int64 low part
|
||||||
|
raw.add(event_no.high32(), 4) # int64 high part
|
||||||
|
# priority
|
||||||
|
raw.add(0x2402, -2) # add 2402
|
||||||
|
raw.add(priority, 1) # add priority as one byte
|
||||||
|
# EpochTimestamp
|
||||||
|
raw.add(0x2603, -2) # add 2603
|
||||||
|
raw.add(epoch_timestamp, 4) # add epoch as 32 bits
|
||||||
|
# Data struct
|
||||||
|
raw.add(0x3507, -2) # add 3507
|
||||||
|
|
||||||
|
# data0
|
||||||
|
if (data0 != nil)
|
||||||
|
data0.tag_sub = 0
|
||||||
|
data0.tlv2raw(raw)
|
||||||
|
end
|
||||||
|
# data1
|
||||||
|
if (data1 != nil)
|
||||||
|
data1.tag_sub = 1
|
||||||
|
data1.tlv2raw(raw)
|
||||||
|
end
|
||||||
|
# data2
|
||||||
|
if (data2 != nil)
|
||||||
|
data2.tag_sub = 2
|
||||||
|
data2.tlv2raw(raw)
|
||||||
|
end
|
||||||
|
|
||||||
|
# close struct Data
|
||||||
|
raw.add(0x18, 1) # add 18
|
||||||
|
# close struct EventDataIB
|
||||||
|
raw.add(0x18, 1) # add 18
|
||||||
|
# close struct EventReportIB
|
||||||
|
raw.add(0x18, 1) # add 18
|
||||||
|
end
|
||||||
|
|
||||||
|
#############################################################
|
||||||
|
# eventpath2raw
|
||||||
|
#
|
||||||
|
# Encodes endpoint/cluster/attribute as `EventPathIB` elements
|
||||||
|
# Takes sub-tag
|
||||||
|
#
|
||||||
|
# 1 = EventPathIB
|
||||||
|
# 0 = Node
|
||||||
|
# 1 = Endpoint
|
||||||
|
# 2 = Cluster
|
||||||
|
# 3 = Event
|
||||||
|
# 4 = IsUrgent
|
||||||
|
#
|
||||||
|
# 3700 0 = LIST
|
||||||
|
# 2401 01 1 = 1U (U1)
|
||||||
|
# 2402 39 2 = 0x39U (U1)
|
||||||
|
# 2403 11 3 = 0x11U (U1)
|
||||||
|
# 2904 4 = true
|
||||||
|
# 18
|
||||||
|
def eventpath2raw(raw, endpoint, cluster, event, is_urgent)
|
||||||
|
# open struct
|
||||||
|
raw.add(0x3700, -2) # add 3700
|
||||||
|
# add endpoint
|
||||||
|
if endpoint <= 0xFF # endpoint is 16 bits max
|
||||||
|
raw.add(0x2401, -2) # add 2401
|
||||||
|
raw.add(endpoint, 1)
|
||||||
|
else
|
||||||
|
raw.add(0x2501, -2) # add 2501
|
||||||
|
raw.add(endpoint, 2)
|
||||||
|
end
|
||||||
|
# add cluster
|
||||||
|
if cluster <= 0xFF # cluster is 32 bits max
|
||||||
|
raw.add(0x2402, -2) # add 2402
|
||||||
|
raw.add(cluster, 1)
|
||||||
|
elif cluster <= 0xFFFF
|
||||||
|
raw.add(0x2502, -2) # add 2502
|
||||||
|
raw.add(cluster, 2)
|
||||||
|
else
|
||||||
|
raw.add(0x2602, -2) # add 2602
|
||||||
|
raw.add(cluster, 4)
|
||||||
|
end
|
||||||
|
# add event
|
||||||
|
if event <= 0xFF # cluster is 32 bits max
|
||||||
|
raw.add(0x2403, -2) # add 2403
|
||||||
|
raw.add(event, 1)
|
||||||
|
else
|
||||||
|
raw.add(0x2503, -2) # add 2503
|
||||||
|
raw.add(event, 2)
|
||||||
|
end
|
||||||
|
# IsUrgent
|
||||||
|
if is_urgent
|
||||||
|
raw.add(0x2904, -2) # add 2904
|
||||||
|
else
|
||||||
|
raw.add(0x2804, -2) # add 2804
|
||||||
|
end
|
||||||
|
# close
|
||||||
|
raw.add(0x18, 1) # add 18
|
||||||
|
end
|
||||||
|
|
||||||
#################################################################################
|
#################################################################################
|
||||||
# compact
|
# compact
|
||||||
#
|
#
|
||||||
|
@ -372,7 +483,7 @@ class Matter_EventHandler
|
||||||
log(f"MTR: +Add_Event ({priority_str}{new_event.event_no:8s}) [{new_event.endpoint:02X}]{new_event.cluster:04X}/{new_event.event_id:02X} {event_name}- {data_str}", 2)
|
log(f"MTR: +Add_Event ({priority_str}{new_event.event_no:8s}) [{new_event.endpoint:02X}]{new_event.cluster:04X}/{new_event.event_id:02X} {event_name}- {data_str}", 2)
|
||||||
end
|
end
|
||||||
self.queue_event(new_event)
|
self.queue_event(new_event)
|
||||||
# check if we have an subscription interested in this new event
|
# check if we have a subscription interested in this new event
|
||||||
self.device.message_handler.im.subs_shop.event_published(new_event)
|
self.device.message_handler.im.subs_shop.event_published(new_event)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -352,27 +352,73 @@ class Matter_IM_ReportData_Pull : Matter_IM_Message
|
||||||
|
|
||||||
########## Response
|
########## Response
|
||||||
# prepare the response
|
# prepare the response
|
||||||
var ret = matter.ReportDataMessage()
|
# Manually craft payload
|
||||||
ret.subscription_id = self.subscription_id
|
var more_chunked_messages = (self.data != nil) || (self.data_ev != nil)
|
||||||
ret.suppress_response = self.suppress_response
|
var raw = bytes(self.MAX_MESSAGE)
|
||||||
# ret.suppress_response = true
|
|
||||||
if (data != nil && size(data) > 0)
|
|
||||||
ret.attribute_reports = [data]
|
|
||||||
end
|
|
||||||
if (data_ev != nil && size(data_ev) > 0)
|
|
||||||
ret.event_reports = [data_ev]
|
|
||||||
end
|
|
||||||
ret.more_chunked_messages = (self.data != nil) || (self.data_ev != nil) # we got more data to send
|
|
||||||
|
|
||||||
# print(">>>>> send elements before encode")
|
# open struct ReportDataMessage
|
||||||
var encoded_tlv = ret.to_TLV().tlv2raw(bytes(self.MAX_MESSAGE)) # takes time
|
raw.add(0x15, 1) # add 15
|
||||||
resp.encode_frame(encoded_tlv) # payload in cleartext, pre-allocate max buffer
|
# open sturct EventDataIB
|
||||||
|
if (self.subscription_id != nil)
|
||||||
|
raw.add(0x2500, -2) # add 2500
|
||||||
|
raw.add(self.subscription_id, 2) # add subscription_id as 16 bits
|
||||||
|
end
|
||||||
|
# do we have attributes?
|
||||||
|
if (data != nil && size(data) > 0)
|
||||||
|
raw.add(0x3601, -2) # add 3601
|
||||||
|
raw.append(data)
|
||||||
|
raw.add(0x18, 1) # add 18
|
||||||
|
end
|
||||||
|
# do we have events?
|
||||||
|
if (data_ev != nil && size(data_ev) > 0)
|
||||||
|
raw.add(0x3602, -2) # add 3601
|
||||||
|
raw.append(data_ev)
|
||||||
|
raw.add(0x18, 1) # add 18
|
||||||
|
end
|
||||||
|
# MoreChunkedMessages
|
||||||
|
if more_chunked_messages # we got more data to send
|
||||||
|
raw.add(0x2903, -2) # add 2903
|
||||||
|
else
|
||||||
|
raw.add(0x2803, -2) # add 2803
|
||||||
|
end
|
||||||
|
# SuppressResponse
|
||||||
|
if (self.suppress_response != nil)
|
||||||
|
if self.suppress_response
|
||||||
|
raw.add(0x2904, -2) # add 2904
|
||||||
|
else
|
||||||
|
raw.add(0x2804, -2) # add 2804
|
||||||
|
end
|
||||||
|
end
|
||||||
|
# InteractionModelRevision
|
||||||
|
raw.add(0x24FF, -2) # add 24FF
|
||||||
|
raw.add(0x01, 1) # add 01
|
||||||
|
# close struct ReportDataMessage
|
||||||
|
raw.add(0x18, 1) # add 18
|
||||||
|
# log(f">>>: {raw.tohex()}", 3)
|
||||||
|
|
||||||
|
# ##### Previous code
|
||||||
|
# var ret = matter.ReportDataMessage()
|
||||||
|
# ret.subscription_id = self.subscription_id
|
||||||
|
# ret.suppress_response = self.suppress_response
|
||||||
|
# if (data != nil && size(data) > 0)
|
||||||
|
# ret.attribute_reports = [data]
|
||||||
|
# end
|
||||||
|
# if (data_ev != nil && size(data_ev) > 0)
|
||||||
|
# ret.event_reports = [data_ev]
|
||||||
|
# end
|
||||||
|
# ret.more_chunked_messages = (self.data != nil) || (self.data_ev != nil) # we got more data to send
|
||||||
|
# var encoded_tlv = ret.to_TLV().tlv2raw(bytes(self.MAX_MESSAGE)) # takes time
|
||||||
|
# resp.encode_frame(encoded_tlv) # payload in cleartext, pre-allocate max buffer
|
||||||
|
# log(f">>>: {encoded_tlv.tohex()}", 3)
|
||||||
|
# ##### Previous code
|
||||||
|
|
||||||
|
resp.encode_frame(raw) # payload in cleartext, pre-allocate max buffer
|
||||||
resp.encrypt()
|
resp.encrypt()
|
||||||
# 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)
|
# 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)
|
||||||
responder.send_response_frame(resp)
|
responder.send_response_frame(resp)
|
||||||
self.last_counter = resp.message_counter
|
self.last_counter = resp.message_counter
|
||||||
|
|
||||||
if ret.more_chunked_messages # we have more to send
|
if more_chunked_messages # we have more to send
|
||||||
self.ready = false # wait for Status Report before continuing sending
|
self.ready = false # wait for Status Report before continuing sending
|
||||||
# keep alive
|
# keep alive
|
||||||
else
|
else
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Matter_Plugin_Sensor_GenericSwitch.be - implements the behavior for a Generic Switch
|
# Matter_Plugin_Sensor_GenericSwitch_Btn.be - implements the behavior for a Generic Switch mapped to a Tasmota Button
|
||||||
#
|
#
|
||||||
# Copyright (C) 2023-2024 Stephan Hadinger & Theo Arends
|
# Copyright (C) 2023-2024 Stephan Hadinger & Theo Arends
|
||||||
#
|
#
|
||||||
|
@ -19,15 +19,15 @@
|
||||||
|
|
||||||
# Matter plug-in for core behavior
|
# Matter plug-in for core behavior
|
||||||
|
|
||||||
#@ solidify:Matter_Plugin_Sensor_GenericSwitch,weak
|
#@ solidify:Matter_Plugin_Sensor_GenericSwitch_Btn,weak
|
||||||
|
|
||||||
class Matter_Plugin_Sensor_GenericSwitch : Matter_Plugin_Device
|
class Matter_Plugin_Sensor_GenericSwitch_Btn : Matter_Plugin_Device
|
||||||
static var TYPE = "gensw" # name of the plug-in in json
|
static var TYPE = "gensw_btn" # name of the plug-in in json
|
||||||
static var DISPLAY_NAME = "Generic Switch" # display name of the plug-in
|
static var DISPLAY_NAME = "Generic Switch/Button" # display name of the plug-in
|
||||||
static var ARG = "switch" # additional argument name (or empty if none)
|
static var ARG = "button" # additional argument name (or empty if none)
|
||||||
static var ARG_HINT = "Switch<x> number"
|
static var ARG_HINT = "Button<x> number"
|
||||||
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
|
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
|
||||||
static var UPDATE_TIME = 750 # update every 750ms - TODO still necessary?
|
# static var UPDATE_TIME = 750 # update every 750ms - TODO still necessary?
|
||||||
static var CLUSTERS = matter.consolidate_clusters(_class, {
|
static var CLUSTERS = matter.consolidate_clusters(_class, {
|
||||||
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
|
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
|
||||||
# 0x0039: [3,5,0x0A,0x0F,0x11,0x12], # Bridged Device Basic Information 9.13 p.485
|
# 0x0039: [3,5,0x0A,0x0F,0x11,0x12], # Bridged Device Basic Information 9.13 p.485
|
||||||
|
@ -39,7 +39,7 @@ class Matter_Plugin_Sensor_GenericSwitch : Matter_Plugin_Device
|
||||||
static var TYPES = { 0x000F: 2 } # Generic Switch, rev 2
|
static var TYPES = { 0x000F: 2 } # Generic Switch, rev 2
|
||||||
|
|
||||||
var tasmota_switch_index # Switch number in Tasmota (one based)
|
var tasmota_switch_index # Switch number in Tasmota (one based)
|
||||||
var shadow_value
|
var shadow_position
|
||||||
|
|
||||||
#############################################################
|
#############################################################
|
||||||
# parse_configuration
|
# parse_configuration
|
||||||
|
@ -53,10 +53,20 @@ class Matter_Plugin_Sensor_GenericSwitch : Matter_Plugin_Device
|
||||||
#############################################################
|
#############################################################
|
||||||
# Update shadow
|
# Update shadow
|
||||||
#
|
#
|
||||||
def update_shadow()
|
# def update_shadow()
|
||||||
super(self).update_shadow()
|
# super(self).update_shadow()
|
||||||
self.shadow_value = false
|
# self.shadow_position = false
|
||||||
# TODO
|
# # TODO
|
||||||
|
# end
|
||||||
|
|
||||||
|
#############################################################
|
||||||
|
# Model
|
||||||
|
#
|
||||||
|
def set_position(position)
|
||||||
|
if position != self.shadow_position
|
||||||
|
self.attribute_updated(0x003B, 0x0001)
|
||||||
|
self.shadow_position = position
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
#############################################################
|
#############################################################
|
||||||
|
@ -73,12 +83,12 @@ class Matter_Plugin_Sensor_GenericSwitch : Matter_Plugin_Device
|
||||||
if attribute == 0x0000 # ---------- NumberOfPositions / uint8 ----------
|
if attribute == 0x0000 # ---------- NumberOfPositions / uint8 ----------
|
||||||
return tlv_solo.set(TLV.U1, 2) # default to 2 positions
|
return tlv_solo.set(TLV.U1, 2) # default to 2 positions
|
||||||
elif attribute == 0x0001 # ---------- CurrentPosition / uint8 ----------
|
elif attribute == 0x0001 # ---------- CurrentPosition / uint8 ----------
|
||||||
return tlv_solo.set(TLV.U1, 0) # TODO read value
|
return tlv_solo.set_or_nil(TLV.U1, self.shadow_position)
|
||||||
elif attribute == 0x0002 # ---------- MultiPressMax / uint8 ----------
|
elif attribute == 0x0002 # ---------- MultiPressMax / uint8 ----------
|
||||||
return tlv_solo.set(TLV.U1, 2) # up to double press
|
return tlv_solo.set(TLV.U1, 5) # up to penta press
|
||||||
|
|
||||||
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
|
||||||
return tlv_solo.set(TLV.U4, 0x02 + 0x04 + 0x08) # MomentarySwitch + MomentarySwitchRelease + MomentarySwitchLongPress
|
return tlv_solo.set(TLV.U4, 0x02 | 0x04 | 0x08 | 0x10) # MomentarySwitch + MomentarySwitchRelease + MomentarySwitchLongPress + MomentarySwitchMultiPress
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -96,5 +106,39 @@ class Matter_Plugin_Sensor_GenericSwitch : Matter_Plugin_Device
|
||||||
return f',"Switch":{int(self.shadow_onoff)}'
|
return f',"Switch":{int(self.shadow_onoff)}'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# button_handler - a button event happened
|
||||||
|
#
|
||||||
|
# Args:
|
||||||
|
# - button: (int) button number (base 1)
|
||||||
|
# - mode: (int) 0=static report every second, 1=button state changed (immediate), 2=multi-press status (delayed)
|
||||||
|
# - state: 1=button pressed, 0=button released, 2..5+=multi-press complete
|
||||||
|
def button_handler(button, mode, state, press_counter)
|
||||||
|
# if tasmota.loglevel(3) && (mode != 0) # only if actual action
|
||||||
|
# log(f"MTR: button_event {button}/{mode}:{state}", 3)
|
||||||
|
# end
|
||||||
|
# adjust value of position first, either regular secondly updates (mode==0) or change in state (mode==1)
|
||||||
|
if (mode == 0) || (mode == 1)
|
||||||
|
self.set_position(state)
|
||||||
|
end
|
||||||
|
# publish event for (mode==1), InitialPress and ShortRelease
|
||||||
|
if (mode == 1)
|
||||||
|
if state # InitialPress
|
||||||
|
self.publish_event(0x003B, 0x01, matter.EVENT_INFO, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1)) # InitialPress, position hardcoded to 1
|
||||||
|
else
|
||||||
|
self.publish_event(0x003B, 0x03, matter.EVENT_INFO, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1)) # ShortRelease, previous position hardcoded to 1
|
||||||
|
end
|
||||||
|
# check if there is an ungoing multi-press
|
||||||
|
if (state == 1) && (press_counter > 0)
|
||||||
|
# MultiPressOngoing
|
||||||
|
self.publish_event(0x003B, 0x05, matter.EVENT_INFO, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1),
|
||||||
|
matter.TLV.Matter_TLV_item().set(matter.TLV.U1, press_counter + 1)) # MultiPressCom plete
|
||||||
|
end
|
||||||
|
elif (mode == 2) && (press_counter > 0) # Multipress
|
||||||
|
self.publish_event(0x003B, 0x06, matter.EVENT_INFO, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1),
|
||||||
|
matter.TLV.Matter_TLV_item().set(matter.TLV.U1, press_counter)) # MultiPressCom plete
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
matter.Plugin_Sensor_GenericSwitch = Matter_Plugin_Sensor_GenericSwitch
|
matter.Plugin_Sensor_GenericSwitch_Btn = Matter_Plugin_Sensor_GenericSwitch_Btn
|
|
@ -33,6 +33,7 @@ import matter
|
||||||
#################################################################################
|
#################################################################################
|
||||||
class Matter_UI
|
class Matter_UI
|
||||||
static var _CLASSES_TYPES = "|relay|light0|light1|light2|light3|shutter|shutter+tilt"
|
static var _CLASSES_TYPES = "|relay|light0|light1|light2|light3|shutter|shutter+tilt"
|
||||||
|
"|gensw_btn"
|
||||||
"|temperature|pressure|illuminance|humidity|occupancy|onoff|contact|flow|rain|waterleak"
|
"|temperature|pressure|illuminance|humidity|occupancy|onoff|contact|flow|rain|waterleak"
|
||||||
"|airquality"
|
"|airquality"
|
||||||
"|-virtual|v_relay|v_light0|v_light1|v_light2|v_light3"
|
"|-virtual|v_relay|v_light0|v_light1|v_light2|v_light3"
|
||||||
|
|
|
@ -285,6 +285,44 @@ class Matter_Device
|
||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Driver handling of buttons
|
||||||
|
#####################################################################
|
||||||
|
# Attach driver `button_pressed`
|
||||||
|
def button_pressed(cmd, idx)
|
||||||
|
var state = (idx >> 16) & 0xFF
|
||||||
|
var last_state = (idx >> 8) & 0xFF
|
||||||
|
var index = (idx & 0xFF)
|
||||||
|
var press_counter = (idx >> 24) & 0xFF
|
||||||
|
self.button_handler(index + 1, (state != last_state) ? 1 : 0, state ? 0 : 1, press_counter) # invert state, originally '0' means press, turn it into '1'
|
||||||
|
end
|
||||||
|
# Attach driver `button_multi_pressed`
|
||||||
|
def button_multi_pressed(cmd, idx)
|
||||||
|
var press_counter = (idx >> 8) & 0xFF
|
||||||
|
var index = (idx & 0xFF)
|
||||||
|
self.button_handler(index + 1, 2, 0, press_counter)
|
||||||
|
end
|
||||||
|
#####################################################################
|
||||||
|
# Centralize to a single call
|
||||||
|
#
|
||||||
|
# Args:
|
||||||
|
# - button: (int) button number (base 1)
|
||||||
|
# - mode: (int) 0=static report every second, 1=button state changed (immediate), 2=multi-press status (delayed)
|
||||||
|
# - state: 1=button pressed, 0=button released, 2..5+=multi-press complete
|
||||||
|
def button_handler(button, mode, state, press_counter)
|
||||||
|
# log(f"MTR: button_handler({button=}, {mode=}, {state=})", 3)
|
||||||
|
# call all plugins, use a manual loop to avoid creating a new object
|
||||||
|
var idx = 0
|
||||||
|
import introspect
|
||||||
|
while idx < size(self.plugins)
|
||||||
|
var pi = self.plugins[idx]
|
||||||
|
if introspect.contains(pi, "button_handler")
|
||||||
|
self.plugins[idx].button_handler(button, mode, state, press_counter)
|
||||||
|
end
|
||||||
|
idx += 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
#############################################################
|
#############################################################
|
||||||
# dispatch every second click to sub-objects that need it
|
# dispatch every second click to sub-objects that need it
|
||||||
def every_second()
|
def every_second()
|
||||||
|
|
|
@ -791,42 +791,13 @@ be_local_class(Matter_EventHandler,
|
||||||
|
|
||||||
extern const bclass be_class_Matter_EventQueued;
|
extern const bclass be_class_Matter_EventQueued;
|
||||||
|
|
||||||
/********************************************************************
|
|
||||||
** Solidified function: compact
|
|
||||||
********************************************************************/
|
|
||||||
extern const bclass be_class_Matter_EventQueued;
|
|
||||||
be_local_closure(class_Matter_EventQueued_compact, /* name */
|
|
||||||
be_nested_proto(
|
|
||||||
2, /* nstack */
|
|
||||||
1, /* argc */
|
|
||||||
2, /* varg */
|
|
||||||
0, /* has upvals */
|
|
||||||
NULL, /* no upvals */
|
|
||||||
0, /* has sup protos */
|
|
||||||
&be_class_Matter_EventQueued,
|
|
||||||
1, /* has constants */
|
|
||||||
( &(const bvalue[ 1]) { /* constants */
|
|
||||||
/* K0 */ be_nested_str_weak(raw_tlv),
|
|
||||||
}),
|
|
||||||
be_str_weak(compact),
|
|
||||||
&be_const_str_solidified,
|
|
||||||
( &(const binstruction[ 3]) { /* code */
|
|
||||||
0x4C040000, // 0000 LDNIL R1
|
|
||||||
0x90020001, // 0001 SETMBR R0 K0 R1
|
|
||||||
0x80000000, // 0002 RET 0
|
|
||||||
})
|
|
||||||
)
|
|
||||||
);
|
|
||||||
/*******************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************************
|
/********************************************************************
|
||||||
** Solidified function: to_raw_bytes
|
** Solidified function: to_raw_bytes
|
||||||
********************************************************************/
|
********************************************************************/
|
||||||
extern const bclass be_class_Matter_EventQueued;
|
extern const bclass be_class_Matter_EventQueued;
|
||||||
be_local_closure(class_Matter_EventQueued_to_raw_bytes, /* name */
|
be_local_closure(class_Matter_EventQueued_to_raw_bytes, /* name */
|
||||||
be_nested_proto(
|
be_nested_proto(
|
||||||
8, /* nstack */
|
14, /* nstack */
|
||||||
1, /* argc */
|
1, /* argc */
|
||||||
2, /* varg */
|
2, /* varg */
|
||||||
0, /* has upvals */
|
0, /* has upvals */
|
||||||
|
@ -834,107 +805,46 @@ be_local_closure(class_Matter_EventQueued_to_raw_bytes, /* name */
|
||||||
0, /* has sup protos */
|
0, /* has sup protos */
|
||||||
&be_class_Matter_EventQueued,
|
&be_class_Matter_EventQueued,
|
||||||
1, /* has constants */
|
1, /* has constants */
|
||||||
( &(const bvalue[28]) { /* constants */
|
( &(const bvalue[12]) { /* constants */
|
||||||
/* K0 */ be_nested_str_weak(raw_tlv),
|
/* K0 */ be_nested_str_weak(raw_tlv),
|
||||||
/* K1 */ be_nested_str_weak(matter),
|
/* K1 */ be_nested_str_weak(eventreport2raw),
|
||||||
/* K2 */ be_nested_str_weak(EventReportIB),
|
/* K2 */ be_nested_str_weak(endpoint),
|
||||||
/* K3 */ be_nested_str_weak(EventDataIB),
|
/* K3 */ be_nested_str_weak(cluster),
|
||||||
/* K4 */ be_nested_str_weak(event_data),
|
/* K4 */ be_nested_str_weak(event_id),
|
||||||
/* K5 */ be_nested_str_weak(EventPathIB),
|
/* K5 */ be_nested_str_weak(is_urgent),
|
||||||
/* K6 */ be_nested_str_weak(endpoint),
|
/* K6 */ be_nested_str_weak(priority),
|
||||||
/* K7 */ be_nested_str_weak(cluster),
|
/* K7 */ be_nested_str_weak(event_no),
|
||||||
/* K8 */ be_nested_str_weak(event),
|
/* K8 */ be_nested_str_weak(epoch_timestamp),
|
||||||
/* K9 */ be_nested_str_weak(event_id),
|
/* K9 */ be_nested_str_weak(data0),
|
||||||
/* K10 */ be_nested_str_weak(is_urgent),
|
/* K10 */ be_nested_str_weak(data1),
|
||||||
/* K11 */ be_nested_str_weak(path),
|
/* K11 */ be_nested_str_weak(data2),
|
||||||
/* K12 */ be_nested_str_weak(priority),
|
|
||||||
/* K13 */ be_nested_str_weak(event_number),
|
|
||||||
/* K14 */ be_nested_str_weak(event_no),
|
|
||||||
/* K15 */ be_nested_str_weak(epoch_timestamp),
|
|
||||||
/* K16 */ be_nested_str_weak(data),
|
|
||||||
/* K17 */ be_nested_str_weak(TLV),
|
|
||||||
/* K18 */ be_nested_str_weak(Matter_TLV_struct),
|
|
||||||
/* K19 */ be_nested_str_weak(data0),
|
|
||||||
/* K20 */ be_nested_str_weak(add_obj),
|
|
||||||
/* K21 */ be_const_int(0),
|
|
||||||
/* K22 */ be_nested_str_weak(data1),
|
|
||||||
/* K23 */ be_const_int(1),
|
|
||||||
/* K24 */ be_nested_str_weak(data2),
|
|
||||||
/* K25 */ be_const_int(2),
|
|
||||||
/* K26 */ be_nested_str_weak(to_TLV),
|
|
||||||
/* K27 */ be_nested_str_weak(tlv2raw),
|
|
||||||
}),
|
}),
|
||||||
be_str_weak(to_raw_bytes),
|
be_str_weak(to_raw_bytes),
|
||||||
&be_const_str_solidified,
|
&be_const_str_solidified,
|
||||||
( &(const binstruction[68]) { /* code */
|
( &(const binstruction[23]) { /* code */
|
||||||
0x88040100, // 0000 GETMBR R1 R0 K0
|
0x88040100, // 0000 GETMBR R1 R0 K0
|
||||||
0x4C080000, // 0001 LDNIL R2
|
0x4C080000, // 0001 LDNIL R2
|
||||||
0x1C040202, // 0002 EQ R1 R1 R2
|
0x1C040202, // 0002 EQ R1 R1 R2
|
||||||
0x7806003D, // 0003 JMPF R1 #0042
|
0x78060010, // 0003 JMPF R1 #0015
|
||||||
0xB8060200, // 0004 GETNGBL R1 K1
|
0x60040015, // 0004 GETGBL R1 G21
|
||||||
0x8C040302, // 0005 GETMET R1 R1 K2
|
0x540A003F, // 0005 LDINT R2 64
|
||||||
0x7C040200, // 0006 CALL R1 1
|
0x7C040200, // 0006 CALL R1 1
|
||||||
0xB80A0200, // 0007 GETNGBL R2 K1
|
0x90020001, // 0007 SETMBR R0 K0 R1
|
||||||
0x8C080503, // 0008 GETMET R2 R2 K3
|
0x8C040101, // 0008 GETMET R1 R0 K1
|
||||||
0x7C080200, // 0009 CALL R2 1
|
0x880C0100, // 0009 GETMBR R3 R0 K0
|
||||||
0x90060802, // 000A SETMBR R1 K4 R2
|
0x88100102, // 000A GETMBR R4 R0 K2
|
||||||
0xB80E0200, // 000B GETNGBL R3 K1
|
0x88140103, // 000B GETMBR R5 R0 K3
|
||||||
0x8C0C0705, // 000C GETMET R3 R3 K5
|
0x88180104, // 000C GETMBR R6 R0 K4
|
||||||
0x7C0C0200, // 000D CALL R3 1
|
0x881C0105, // 000D GETMBR R7 R0 K5
|
||||||
0x88100106, // 000E GETMBR R4 R0 K6
|
0x88200106, // 000E GETMBR R8 R0 K6
|
||||||
0x900E0C04, // 000F SETMBR R3 K6 R4
|
0x88240107, // 000F GETMBR R9 R0 K7
|
||||||
0x88100107, // 0010 GETMBR R4 R0 K7
|
0x88280108, // 0010 GETMBR R10 R0 K8
|
||||||
0x900E0E04, // 0011 SETMBR R3 K7 R4
|
0x882C0109, // 0011 GETMBR R11 R0 K9
|
||||||
0x88100109, // 0012 GETMBR R4 R0 K9
|
0x8830010A, // 0012 GETMBR R12 R0 K10
|
||||||
0x900E1004, // 0013 SETMBR R3 K8 R4
|
0x8834010B, // 0013 GETMBR R13 R0 K11
|
||||||
0x8810010A, // 0014 GETMBR R4 R0 K10
|
0x7C041800, // 0014 CALL R1 12
|
||||||
0x900E1404, // 0015 SETMBR R3 K10 R4
|
0x88040100, // 0015 GETMBR R1 R0 K0
|
||||||
0x900A1603, // 0016 SETMBR R2 K11 R3
|
0x80040200, // 0016 RET 1 R1
|
||||||
0x8810010C, // 0017 GETMBR R4 R0 K12
|
|
||||||
0x900A1804, // 0018 SETMBR R2 K12 R4
|
|
||||||
0x8810010E, // 0019 GETMBR R4 R0 K14
|
|
||||||
0x900A1A04, // 001A SETMBR R2 K13 R4
|
|
||||||
0x8810010F, // 001B GETMBR R4 R0 K15
|
|
||||||
0x900A1E04, // 001C SETMBR R2 K15 R4
|
|
||||||
0xB8120200, // 001D GETNGBL R4 K1
|
|
||||||
0x88100911, // 001E GETMBR R4 R4 K17
|
|
||||||
0x8C100912, // 001F GETMET R4 R4 K18
|
|
||||||
0x7C100200, // 0020 CALL R4 1
|
|
||||||
0x900A2004, // 0021 SETMBR R2 K16 R4
|
|
||||||
0x88100113, // 0022 GETMBR R4 R0 K19
|
|
||||||
0x4C140000, // 0023 LDNIL R5
|
|
||||||
0x20100805, // 0024 NE R4 R4 R5
|
|
||||||
0x78120004, // 0025 JMPF R4 #002B
|
|
||||||
0x88100510, // 0026 GETMBR R4 R2 K16
|
|
||||||
0x8C100914, // 0027 GETMET R4 R4 K20
|
|
||||||
0x58180015, // 0028 LDCONST R6 K21
|
|
||||||
0x881C0113, // 0029 GETMBR R7 R0 K19
|
|
||||||
0x7C100600, // 002A CALL R4 3
|
|
||||||
0x88100116, // 002B GETMBR R4 R0 K22
|
|
||||||
0x4C140000, // 002C LDNIL R5
|
|
||||||
0x20100805, // 002D NE R4 R4 R5
|
|
||||||
0x78120004, // 002E JMPF R4 #0034
|
|
||||||
0x88100510, // 002F GETMBR R4 R2 K16
|
|
||||||
0x8C100914, // 0030 GETMET R4 R4 K20
|
|
||||||
0x58180017, // 0031 LDCONST R6 K23
|
|
||||||
0x881C0116, // 0032 GETMBR R7 R0 K22
|
|
||||||
0x7C100600, // 0033 CALL R4 3
|
|
||||||
0x88100118, // 0034 GETMBR R4 R0 K24
|
|
||||||
0x4C140000, // 0035 LDNIL R5
|
|
||||||
0x20100805, // 0036 NE R4 R4 R5
|
|
||||||
0x78120004, // 0037 JMPF R4 #003D
|
|
||||||
0x88100510, // 0038 GETMBR R4 R2 K16
|
|
||||||
0x8C100914, // 0039 GETMET R4 R4 K20
|
|
||||||
0x58180019, // 003A LDCONST R6 K25
|
|
||||||
0x881C0118, // 003B GETMBR R7 R0 K24
|
|
||||||
0x7C100600, // 003C CALL R4 3
|
|
||||||
0x8C10031A, // 003D GETMET R4 R1 K26
|
|
||||||
0x7C100200, // 003E CALL R4 1
|
|
||||||
0x8C10091B, // 003F GETMET R4 R4 K27
|
|
||||||
0x7C100200, // 0040 CALL R4 1
|
|
||||||
0x90020004, // 0041 SETMBR R0 K0 R4
|
|
||||||
0x88040100, // 0042 GETMBR R1 R0 K0
|
|
||||||
0x80040200, // 0043 RET 1 R1
|
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -1019,28 +929,295 @@ be_local_closure(class_Matter_EventQueued_init, /* name */
|
||||||
/*******************************************************************/
|
/*******************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
** Solidified function: compact
|
||||||
|
********************************************************************/
|
||||||
|
extern const bclass be_class_Matter_EventQueued;
|
||||||
|
be_local_closure(class_Matter_EventQueued_compact, /* name */
|
||||||
|
be_nested_proto(
|
||||||
|
2, /* nstack */
|
||||||
|
1, /* argc */
|
||||||
|
2, /* varg */
|
||||||
|
0, /* has upvals */
|
||||||
|
NULL, /* no upvals */
|
||||||
|
0, /* has sup protos */
|
||||||
|
&be_class_Matter_EventQueued,
|
||||||
|
1, /* has constants */
|
||||||
|
( &(const bvalue[ 1]) { /* constants */
|
||||||
|
/* K0 */ be_nested_str_weak(raw_tlv),
|
||||||
|
}),
|
||||||
|
be_str_weak(compact),
|
||||||
|
&be_const_str_solidified,
|
||||||
|
( &(const binstruction[ 3]) { /* code */
|
||||||
|
0x4C040000, // 0000 LDNIL R1
|
||||||
|
0x90020001, // 0001 SETMBR R0 K0 R1
|
||||||
|
0x80000000, // 0002 RET 0
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
** Solidified function: eventpath2raw
|
||||||
|
********************************************************************/
|
||||||
|
extern const bclass be_class_Matter_EventQueued;
|
||||||
|
be_local_closure(class_Matter_EventQueued_eventpath2raw, /* name */
|
||||||
|
be_nested_proto(
|
||||||
|
10, /* nstack */
|
||||||
|
6, /* argc */
|
||||||
|
2, /* varg */
|
||||||
|
0, /* has upvals */
|
||||||
|
NULL, /* no upvals */
|
||||||
|
0, /* has sup protos */
|
||||||
|
&be_class_Matter_EventQueued,
|
||||||
|
1, /* has constants */
|
||||||
|
( &(const bvalue[ 3]) { /* constants */
|
||||||
|
/* K0 */ be_nested_str_weak(add),
|
||||||
|
/* K1 */ be_const_int(1),
|
||||||
|
/* K2 */ be_const_int(2),
|
||||||
|
}),
|
||||||
|
be_str_weak(eventpath2raw),
|
||||||
|
&be_const_str_solidified,
|
||||||
|
( &(const binstruction[91]) { /* code */
|
||||||
|
0x8C180300, // 0000 GETMET R6 R1 K0
|
||||||
|
0x542236FF, // 0001 LDINT R8 14080
|
||||||
|
0x5425FFFD, // 0002 LDINT R9 -2
|
||||||
|
0x7C180600, // 0003 CALL R6 3
|
||||||
|
0x541A00FE, // 0004 LDINT R6 255
|
||||||
|
0x18180406, // 0005 LE R6 R2 R6
|
||||||
|
0x781A0008, // 0006 JMPF R6 #0010
|
||||||
|
0x8C180300, // 0007 GETMET R6 R1 K0
|
||||||
|
0x54222400, // 0008 LDINT R8 9217
|
||||||
|
0x5425FFFD, // 0009 LDINT R9 -2
|
||||||
|
0x7C180600, // 000A CALL R6 3
|
||||||
|
0x8C180300, // 000B GETMET R6 R1 K0
|
||||||
|
0x5C200400, // 000C MOVE R8 R2
|
||||||
|
0x58240001, // 000D LDCONST R9 K1
|
||||||
|
0x7C180600, // 000E CALL R6 3
|
||||||
|
0x70020007, // 000F JMP #0018
|
||||||
|
0x8C180300, // 0010 GETMET R6 R1 K0
|
||||||
|
0x54222500, // 0011 LDINT R8 9473
|
||||||
|
0x5425FFFD, // 0012 LDINT R9 -2
|
||||||
|
0x7C180600, // 0013 CALL R6 3
|
||||||
|
0x8C180300, // 0014 GETMET R6 R1 K0
|
||||||
|
0x5C200400, // 0015 MOVE R8 R2
|
||||||
|
0x58240002, // 0016 LDCONST R9 K2
|
||||||
|
0x7C180600, // 0017 CALL R6 3
|
||||||
|
0x541A00FE, // 0018 LDINT R6 255
|
||||||
|
0x18180606, // 0019 LE R6 R3 R6
|
||||||
|
0x781A0008, // 001A JMPF R6 #0024
|
||||||
|
0x8C180300, // 001B GETMET R6 R1 K0
|
||||||
|
0x54222401, // 001C LDINT R8 9218
|
||||||
|
0x5425FFFD, // 001D LDINT R9 -2
|
||||||
|
0x7C180600, // 001E CALL R6 3
|
||||||
|
0x8C180300, // 001F GETMET R6 R1 K0
|
||||||
|
0x5C200600, // 0020 MOVE R8 R3
|
||||||
|
0x58240001, // 0021 LDCONST R9 K1
|
||||||
|
0x7C180600, // 0022 CALL R6 3
|
||||||
|
0x70020013, // 0023 JMP #0038
|
||||||
|
0x541AFFFE, // 0024 LDINT R6 65535
|
||||||
|
0x18180606, // 0025 LE R6 R3 R6
|
||||||
|
0x781A0008, // 0026 JMPF R6 #0030
|
||||||
|
0x8C180300, // 0027 GETMET R6 R1 K0
|
||||||
|
0x54222501, // 0028 LDINT R8 9474
|
||||||
|
0x5425FFFD, // 0029 LDINT R9 -2
|
||||||
|
0x7C180600, // 002A CALL R6 3
|
||||||
|
0x8C180300, // 002B GETMET R6 R1 K0
|
||||||
|
0x5C200600, // 002C MOVE R8 R3
|
||||||
|
0x58240002, // 002D LDCONST R9 K2
|
||||||
|
0x7C180600, // 002E CALL R6 3
|
||||||
|
0x70020007, // 002F JMP #0038
|
||||||
|
0x8C180300, // 0030 GETMET R6 R1 K0
|
||||||
|
0x54222601, // 0031 LDINT R8 9730
|
||||||
|
0x5425FFFD, // 0032 LDINT R9 -2
|
||||||
|
0x7C180600, // 0033 CALL R6 3
|
||||||
|
0x8C180300, // 0034 GETMET R6 R1 K0
|
||||||
|
0x5C200600, // 0035 MOVE R8 R3
|
||||||
|
0x54260003, // 0036 LDINT R9 4
|
||||||
|
0x7C180600, // 0037 CALL R6 3
|
||||||
|
0x541A00FE, // 0038 LDINT R6 255
|
||||||
|
0x18180806, // 0039 LE R6 R4 R6
|
||||||
|
0x781A0008, // 003A JMPF R6 #0044
|
||||||
|
0x8C180300, // 003B GETMET R6 R1 K0
|
||||||
|
0x54222402, // 003C LDINT R8 9219
|
||||||
|
0x5425FFFD, // 003D LDINT R9 -2
|
||||||
|
0x7C180600, // 003E CALL R6 3
|
||||||
|
0x8C180300, // 003F GETMET R6 R1 K0
|
||||||
|
0x5C200800, // 0040 MOVE R8 R4
|
||||||
|
0x58240001, // 0041 LDCONST R9 K1
|
||||||
|
0x7C180600, // 0042 CALL R6 3
|
||||||
|
0x70020007, // 0043 JMP #004C
|
||||||
|
0x8C180300, // 0044 GETMET R6 R1 K0
|
||||||
|
0x54222502, // 0045 LDINT R8 9475
|
||||||
|
0x5425FFFD, // 0046 LDINT R9 -2
|
||||||
|
0x7C180600, // 0047 CALL R6 3
|
||||||
|
0x8C180300, // 0048 GETMET R6 R1 K0
|
||||||
|
0x5C200800, // 0049 MOVE R8 R4
|
||||||
|
0x58240002, // 004A LDCONST R9 K2
|
||||||
|
0x7C180600, // 004B CALL R6 3
|
||||||
|
0x78160004, // 004C JMPF R5 #0052
|
||||||
|
0x8C180300, // 004D GETMET R6 R1 K0
|
||||||
|
0x54222903, // 004E LDINT R8 10500
|
||||||
|
0x5425FFFD, // 004F LDINT R9 -2
|
||||||
|
0x7C180600, // 0050 CALL R6 3
|
||||||
|
0x70020003, // 0051 JMP #0056
|
||||||
|
0x8C180300, // 0052 GETMET R6 R1 K0
|
||||||
|
0x54222803, // 0053 LDINT R8 10244
|
||||||
|
0x5425FFFD, // 0054 LDINT R9 -2
|
||||||
|
0x7C180600, // 0055 CALL R6 3
|
||||||
|
0x8C180300, // 0056 GETMET R6 R1 K0
|
||||||
|
0x54220017, // 0057 LDINT R8 24
|
||||||
|
0x58240001, // 0058 LDCONST R9 K1
|
||||||
|
0x7C180600, // 0059 CALL R6 3
|
||||||
|
0x80000000, // 005A RET 0
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
** Solidified function: eventreport2raw
|
||||||
|
********************************************************************/
|
||||||
|
extern const bclass be_class_Matter_EventQueued;
|
||||||
|
be_local_closure(class_Matter_EventQueued_eventreport2raw, /* name */
|
||||||
|
be_nested_proto(
|
||||||
|
19, /* nstack */
|
||||||
|
12, /* argc */
|
||||||
|
2, /* varg */
|
||||||
|
0, /* has upvals */
|
||||||
|
NULL, /* no upvals */
|
||||||
|
0, /* has sup protos */
|
||||||
|
&be_class_Matter_EventQueued,
|
||||||
|
1, /* has constants */
|
||||||
|
( &(const bvalue[ 9]) { /* constants */
|
||||||
|
/* K0 */ be_nested_str_weak(add),
|
||||||
|
/* K1 */ be_const_int(1),
|
||||||
|
/* K2 */ be_nested_str_weak(eventpath2raw),
|
||||||
|
/* K3 */ be_nested_str_weak(low32),
|
||||||
|
/* K4 */ be_nested_str_weak(high32),
|
||||||
|
/* K5 */ be_nested_str_weak(tag_sub),
|
||||||
|
/* K6 */ be_const_int(0),
|
||||||
|
/* K7 */ be_nested_str_weak(tlv2raw),
|
||||||
|
/* K8 */ be_const_int(2),
|
||||||
|
}),
|
||||||
|
be_str_weak(eventreport2raw),
|
||||||
|
&be_const_str_solidified,
|
||||||
|
( &(const binstruction[83]) { /* code */
|
||||||
|
0x8C300300, // 0000 GETMET R12 R1 K0
|
||||||
|
0x543A0014, // 0001 LDINT R14 21
|
||||||
|
0x583C0001, // 0002 LDCONST R15 K1
|
||||||
|
0x7C300600, // 0003 CALL R12 3
|
||||||
|
0x8C300300, // 0004 GETMET R12 R1 K0
|
||||||
|
0x543A3500, // 0005 LDINT R14 13569
|
||||||
|
0x543DFFFD, // 0006 LDINT R15 -2
|
||||||
|
0x7C300600, // 0007 CALL R12 3
|
||||||
|
0x8C300102, // 0008 GETMET R12 R0 K2
|
||||||
|
0x5C380200, // 0009 MOVE R14 R1
|
||||||
|
0x5C3C0400, // 000A MOVE R15 R2
|
||||||
|
0x5C400600, // 000B MOVE R16 R3
|
||||||
|
0x5C440800, // 000C MOVE R17 R4
|
||||||
|
0x5C480A00, // 000D MOVE R18 R5
|
||||||
|
0x7C300C00, // 000E CALL R12 6
|
||||||
|
0x8C300300, // 000F GETMET R12 R1 K0
|
||||||
|
0x543A2700, // 0010 LDINT R14 9985
|
||||||
|
0x543DFFFD, // 0011 LDINT R15 -2
|
||||||
|
0x7C300600, // 0012 CALL R12 3
|
||||||
|
0x8C300300, // 0013 GETMET R12 R1 K0
|
||||||
|
0x8C380F03, // 0014 GETMET R14 R7 K3
|
||||||
|
0x7C380200, // 0015 CALL R14 1
|
||||||
|
0x543E0003, // 0016 LDINT R15 4
|
||||||
|
0x7C300600, // 0017 CALL R12 3
|
||||||
|
0x8C300300, // 0018 GETMET R12 R1 K0
|
||||||
|
0x8C380F04, // 0019 GETMET R14 R7 K4
|
||||||
|
0x7C380200, // 001A CALL R14 1
|
||||||
|
0x543E0003, // 001B LDINT R15 4
|
||||||
|
0x7C300600, // 001C CALL R12 3
|
||||||
|
0x8C300300, // 001D GETMET R12 R1 K0
|
||||||
|
0x543A2401, // 001E LDINT R14 9218
|
||||||
|
0x543DFFFD, // 001F LDINT R15 -2
|
||||||
|
0x7C300600, // 0020 CALL R12 3
|
||||||
|
0x8C300300, // 0021 GETMET R12 R1 K0
|
||||||
|
0x5C380C00, // 0022 MOVE R14 R6
|
||||||
|
0x583C0001, // 0023 LDCONST R15 K1
|
||||||
|
0x7C300600, // 0024 CALL R12 3
|
||||||
|
0x8C300300, // 0025 GETMET R12 R1 K0
|
||||||
|
0x543A2602, // 0026 LDINT R14 9731
|
||||||
|
0x543DFFFD, // 0027 LDINT R15 -2
|
||||||
|
0x7C300600, // 0028 CALL R12 3
|
||||||
|
0x8C300300, // 0029 GETMET R12 R1 K0
|
||||||
|
0x5C381000, // 002A MOVE R14 R8
|
||||||
|
0x543E0003, // 002B LDINT R15 4
|
||||||
|
0x7C300600, // 002C CALL R12 3
|
||||||
|
0x8C300300, // 002D GETMET R12 R1 K0
|
||||||
|
0x543A3506, // 002E LDINT R14 13575
|
||||||
|
0x543DFFFD, // 002F LDINT R15 -2
|
||||||
|
0x7C300600, // 0030 CALL R12 3
|
||||||
|
0x4C300000, // 0031 LDNIL R12
|
||||||
|
0x2030120C, // 0032 NE R12 R9 R12
|
||||||
|
0x78320003, // 0033 JMPF R12 #0038
|
||||||
|
0x90260B06, // 0034 SETMBR R9 K5 K6
|
||||||
|
0x8C301307, // 0035 GETMET R12 R9 K7
|
||||||
|
0x5C380200, // 0036 MOVE R14 R1
|
||||||
|
0x7C300400, // 0037 CALL R12 2
|
||||||
|
0x4C300000, // 0038 LDNIL R12
|
||||||
|
0x2030140C, // 0039 NE R12 R10 R12
|
||||||
|
0x78320003, // 003A JMPF R12 #003F
|
||||||
|
0x902A0B01, // 003B SETMBR R10 K5 K1
|
||||||
|
0x8C301507, // 003C GETMET R12 R10 K7
|
||||||
|
0x5C380200, // 003D MOVE R14 R1
|
||||||
|
0x7C300400, // 003E CALL R12 2
|
||||||
|
0x4C300000, // 003F LDNIL R12
|
||||||
|
0x2030160C, // 0040 NE R12 R11 R12
|
||||||
|
0x78320003, // 0041 JMPF R12 #0046
|
||||||
|
0x902E0B08, // 0042 SETMBR R11 K5 K8
|
||||||
|
0x8C301707, // 0043 GETMET R12 R11 K7
|
||||||
|
0x5C380200, // 0044 MOVE R14 R1
|
||||||
|
0x7C300400, // 0045 CALL R12 2
|
||||||
|
0x8C300300, // 0046 GETMET R12 R1 K0
|
||||||
|
0x543A0017, // 0047 LDINT R14 24
|
||||||
|
0x583C0001, // 0048 LDCONST R15 K1
|
||||||
|
0x7C300600, // 0049 CALL R12 3
|
||||||
|
0x8C300300, // 004A GETMET R12 R1 K0
|
||||||
|
0x543A0017, // 004B LDINT R14 24
|
||||||
|
0x583C0001, // 004C LDCONST R15 K1
|
||||||
|
0x7C300600, // 004D CALL R12 3
|
||||||
|
0x8C300300, // 004E GETMET R12 R1 K0
|
||||||
|
0x543A0017, // 004F LDINT R14 24
|
||||||
|
0x583C0001, // 0050 LDCONST R15 K1
|
||||||
|
0x7C300600, // 0051 CALL R12 3
|
||||||
|
0x80000000, // 0052 RET 0
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/********************************************************************
|
/********************************************************************
|
||||||
** Solidified class: Matter_EventQueued
|
** Solidified class: Matter_EventQueued
|
||||||
********************************************************************/
|
********************************************************************/
|
||||||
be_local_class(Matter_EventQueued,
|
be_local_class(Matter_EventQueued,
|
||||||
11,
|
11,
|
||||||
NULL,
|
NULL,
|
||||||
be_nested_map(14,
|
be_nested_map(16,
|
||||||
( (struct bmapnode*) &(const bmapnode[]) {
|
( (struct bmapnode*) &(const bmapnode[]) {
|
||||||
{ be_const_key_weak(endpoint, -1), be_const_var(0) },
|
|
||||||
{ be_const_key_weak(epoch_timestamp, -1), be_const_var(9) },
|
|
||||||
{ be_const_key_weak(compact, -1), be_const_closure(class_Matter_EventQueued_compact_closure) },
|
|
||||||
{ be_const_key_weak(init, 10), be_const_closure(class_Matter_EventQueued_init_closure) },
|
|
||||||
{ be_const_key_weak(data2, 11), be_const_var(7) },
|
|
||||||
{ be_const_key_weak(event_no, 3), be_const_var(8) },
|
|
||||||
{ be_const_key_weak(raw_tlv, -1), be_const_var(10) },
|
|
||||||
{ be_const_key_weak(is_urgent, 12), be_const_var(3) },
|
|
||||||
{ be_const_key_weak(data1, -1), be_const_var(6) },
|
|
||||||
{ be_const_key_weak(priority, 4), be_const_var(4) },
|
|
||||||
{ be_const_key_weak(event_id, -1), be_const_var(2) },
|
|
||||||
{ be_const_key_weak(to_raw_bytes, 1), be_const_closure(class_Matter_EventQueued_to_raw_bytes_closure) },
|
|
||||||
{ be_const_key_weak(cluster, -1), be_const_var(1) },
|
|
||||||
{ be_const_key_weak(data0, -1), be_const_var(5) },
|
{ be_const_key_weak(data0, -1), be_const_var(5) },
|
||||||
|
{ be_const_key_weak(eventreport2raw, -1), be_const_closure(class_Matter_EventQueued_eventreport2raw_closure) },
|
||||||
|
{ be_const_key_weak(event_id, 11), be_const_var(2) },
|
||||||
|
{ be_const_key_weak(init, -1), be_const_closure(class_Matter_EventQueued_init_closure) },
|
||||||
|
{ be_const_key_weak(data1, 14), be_const_var(6) },
|
||||||
|
{ be_const_key_weak(data2, 1), be_const_var(7) },
|
||||||
|
{ be_const_key_weak(compact, -1), be_const_closure(class_Matter_EventQueued_compact_closure) },
|
||||||
|
{ be_const_key_weak(is_urgent, -1), be_const_var(3) },
|
||||||
|
{ be_const_key_weak(eventpath2raw, -1), be_const_closure(class_Matter_EventQueued_eventpath2raw_closure) },
|
||||||
|
{ be_const_key_weak(epoch_timestamp, 10), be_const_var(9) },
|
||||||
|
{ be_const_key_weak(priority, -1), be_const_var(4) },
|
||||||
|
{ be_const_key_weak(cluster, -1), be_const_var(1) },
|
||||||
|
{ be_const_key_weak(raw_tlv, 4), be_const_var(10) },
|
||||||
|
{ be_const_key_weak(to_raw_bytes, 2), be_const_closure(class_Matter_EventQueued_to_raw_bytes_closure) },
|
||||||
|
{ be_const_key_weak(endpoint, -1), be_const_var(0) },
|
||||||
|
{ be_const_key_weak(event_no, 0), be_const_var(8) },
|
||||||
})),
|
})),
|
||||||
be_str_weak(Matter_EventQueued)
|
be_str_weak(Matter_EventQueued)
|
||||||
);
|
);
|
||||||
|
|
|
@ -567,7 +567,7 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */
|
||||||
0, /* has sup protos */
|
0, /* has sup protos */
|
||||||
&be_class_Matter_IM_ReportData_Pull,
|
&be_class_Matter_IM_ReportData_Pull,
|
||||||
1, /* has constants */
|
1, /* has constants */
|
||||||
( &(const bvalue[51]) { /* constants */
|
( &(const bvalue[47]) { /* constants */
|
||||||
/* K0 */ be_nested_str_weak(resp),
|
/* K0 */ be_nested_str_weak(resp),
|
||||||
/* K1 */ be_nested_str_weak(data),
|
/* K1 */ be_nested_str_weak(data),
|
||||||
/* K2 */ be_nested_str_weak(device),
|
/* K2 */ be_nested_str_weak(device),
|
||||||
|
@ -603,26 +603,22 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */
|
||||||
/* K32 */ be_nested_str_weak(cluster),
|
/* K32 */ be_nested_str_weak(cluster),
|
||||||
/* K33 */ be_nested_str_weak(event_id),
|
/* K33 */ be_nested_str_weak(event_id),
|
||||||
/* K34 */ be_nested_str_weak(to_raw_bytes),
|
/* K34 */ be_nested_str_weak(to_raw_bytes),
|
||||||
/* K35 */ be_nested_str_weak(matter),
|
/* K35 */ be_nested_str_weak(add),
|
||||||
/* K36 */ be_nested_str_weak(ReportDataMessage),
|
/* K36 */ be_const_int(1),
|
||||||
/* K37 */ be_nested_str_weak(subscription_id),
|
/* K37 */ be_nested_str_weak(subscription_id),
|
||||||
/* K38 */ be_nested_str_weak(suppress_response),
|
/* K38 */ be_const_int(2),
|
||||||
/* K39 */ be_nested_str_weak(attribute_reports),
|
/* K39 */ be_nested_str_weak(suppress_response),
|
||||||
/* K40 */ be_nested_str_weak(event_reports),
|
/* K40 */ be_nested_str_weak(encode_frame),
|
||||||
/* K41 */ be_nested_str_weak(more_chunked_messages),
|
/* K41 */ be_nested_str_weak(encrypt),
|
||||||
/* K42 */ be_nested_str_weak(to_TLV),
|
/* K42 */ be_nested_str_weak(send_response_frame),
|
||||||
/* K43 */ be_nested_str_weak(tlv2raw),
|
/* K43 */ be_nested_str_weak(last_counter),
|
||||||
/* K44 */ be_nested_str_weak(encode_frame),
|
/* K44 */ be_nested_str_weak(message_counter),
|
||||||
/* K45 */ be_nested_str_weak(encrypt),
|
/* K45 */ be_nested_str_weak(ready),
|
||||||
/* K46 */ be_nested_str_weak(send_response_frame),
|
/* K46 */ be_nested_str_weak(finishing),
|
||||||
/* K47 */ be_nested_str_weak(last_counter),
|
|
||||||
/* K48 */ be_nested_str_weak(message_counter),
|
|
||||||
/* K49 */ be_nested_str_weak(ready),
|
|
||||||
/* K50 */ be_nested_str_weak(finishing),
|
|
||||||
}),
|
}),
|
||||||
be_str_weak(send_im),
|
be_str_weak(send_im),
|
||||||
&be_const_str_solidified,
|
&be_const_str_solidified,
|
||||||
( &(const binstruction[307]) { /* code */
|
( &(const binstruction[361]) { /* code */
|
||||||
0x88080100, // 0000 GETMBR R2 R0 K0
|
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||||
0x880C0101, // 0001 GETMBR R3 R0 K1
|
0x880C0101, // 0001 GETMBR R3 R0 K1
|
||||||
0x4C100000, // 0002 LDNIL R4
|
0x4C100000, // 0002 LDNIL R4
|
||||||
|
@ -863,73 +859,127 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */
|
||||||
0x4C240000, // 00ED LDNIL R9
|
0x4C240000, // 00ED LDNIL R9
|
||||||
0x90020A09, // 00EE SETMBR R0 K5 R9
|
0x90020A09, // 00EE SETMBR R0 K5 R9
|
||||||
0x7001FF90, // 00EF JMP #0081
|
0x7001FF90, // 00EF JMP #0081
|
||||||
0xB81E4600, // 00F0 GETNGBL R7 K35
|
0x881C0101, // 00F0 GETMBR R7 R0 K1
|
||||||
0x8C1C0F24, // 00F1 GETMET R7 R7 K36
|
0x4C200000, // 00F1 LDNIL R8
|
||||||
0x7C1C0200, // 00F2 CALL R7 1
|
0x201C0E08, // 00F2 NE R7 R7 R8
|
||||||
0x88200125, // 00F3 GETMBR R8 R0 K37
|
0x741E0004, // 00F3 JMPT R7 #00F9
|
||||||
0x901E4A08, // 00F4 SETMBR R7 K37 R8
|
0x881C0104, // 00F4 GETMBR R7 R0 K4
|
||||||
0x88200126, // 00F5 GETMBR R8 R0 K38
|
0x4C200000, // 00F5 LDNIL R8
|
||||||
0x901E4C08, // 00F6 SETMBR R7 K38 R8
|
0x201C0E08, // 00F6 NE R7 R7 R8
|
||||||
0x4C200000, // 00F7 LDNIL R8
|
0x741E0000, // 00F7 JMPT R7 #00F9
|
||||||
0x20200608, // 00F8 NE R8 R3 R8
|
0x501C0001, // 00F8 LDBOOL R7 0 1
|
||||||
0x78220008, // 00F9 JMPF R8 #0103
|
0x501C0200, // 00F9 LDBOOL R7 1 0
|
||||||
0x6020000C, // 00FA GETGBL R8 G12
|
0x60200015, // 00FA GETGBL R8 G21
|
||||||
0x5C240600, // 00FB MOVE R9 R3
|
0x8824010E, // 00FB GETMBR R9 R0 K14
|
||||||
0x7C200200, // 00FC CALL R8 1
|
0x7C200200, // 00FC CALL R8 1
|
||||||
0x24201107, // 00FD GT R8 R8 K7
|
0x8C241123, // 00FD GETMET R9 R8 K35
|
||||||
0x78220003, // 00FE JMPF R8 #0103
|
0x542E0014, // 00FE LDINT R11 21
|
||||||
0x60200012, // 00FF GETGBL R8 G18
|
0x58300024, // 00FF LDCONST R12 K36
|
||||||
0x7C200000, // 0100 CALL R8 0
|
0x7C240600, // 0100 CALL R9 3
|
||||||
0x40241003, // 0101 CONNECT R9 R8 R3
|
0x88240125, // 0101 GETMBR R9 R0 K37
|
||||||
0x901E4E08, // 0102 SETMBR R7 K39 R8
|
0x4C280000, // 0102 LDNIL R10
|
||||||
0x4C200000, // 0103 LDNIL R8
|
0x2024120A, // 0103 NE R9 R9 R10
|
||||||
0x20200C08, // 0104 NE R8 R6 R8
|
0x78260007, // 0104 JMPF R9 #010D
|
||||||
0x78220008, // 0105 JMPF R8 #010F
|
0x8C241123, // 0105 GETMET R9 R8 K35
|
||||||
0x6020000C, // 0106 GETGBL R8 G12
|
0x542E24FF, // 0106 LDINT R11 9472
|
||||||
0x5C240C00, // 0107 MOVE R9 R6
|
0x5431FFFD, // 0107 LDINT R12 -2
|
||||||
0x7C200200, // 0108 CALL R8 1
|
0x7C240600, // 0108 CALL R9 3
|
||||||
0x24201107, // 0109 GT R8 R8 K7
|
0x8C241123, // 0109 GETMET R9 R8 K35
|
||||||
0x78220003, // 010A JMPF R8 #010F
|
0x882C0125, // 010A GETMBR R11 R0 K37
|
||||||
0x60200012, // 010B GETGBL R8 G18
|
0x58300026, // 010B LDCONST R12 K38
|
||||||
0x7C200000, // 010C CALL R8 0
|
0x7C240600, // 010C CALL R9 3
|
||||||
0x40241006, // 010D CONNECT R9 R8 R6
|
0x4C240000, // 010D LDNIL R9
|
||||||
0x901E5008, // 010E SETMBR R7 K40 R8
|
0x20240609, // 010E NE R9 R3 R9
|
||||||
0x88200101, // 010F GETMBR R8 R0 K1
|
0x7826000F, // 010F JMPF R9 #0120
|
||||||
0x4C240000, // 0110 LDNIL R9
|
0x6024000C, // 0110 GETGBL R9 G12
|
||||||
0x20201009, // 0111 NE R8 R8 R9
|
0x5C280600, // 0111 MOVE R10 R3
|
||||||
0x74220004, // 0112 JMPT R8 #0118
|
0x7C240200, // 0112 CALL R9 1
|
||||||
0x88200104, // 0113 GETMBR R8 R0 K4
|
0x24241307, // 0113 GT R9 R9 K7
|
||||||
0x4C240000, // 0114 LDNIL R9
|
0x7826000A, // 0114 JMPF R9 #0120
|
||||||
0x20201009, // 0115 NE R8 R8 R9
|
0x8C241123, // 0115 GETMET R9 R8 K35
|
||||||
0x74220000, // 0116 JMPT R8 #0118
|
0x542E3600, // 0116 LDINT R11 13825
|
||||||
0x50200001, // 0117 LDBOOL R8 0 1
|
0x5431FFFD, // 0117 LDINT R12 -2
|
||||||
0x50200200, // 0118 LDBOOL R8 1 0
|
0x7C240600, // 0118 CALL R9 3
|
||||||
0x901E5208, // 0119 SETMBR R7 K41 R8
|
0x8C24110F, // 0119 GETMET R9 R8 K15
|
||||||
0x8C200F2A, // 011A GETMET R8 R7 K42
|
0x5C2C0600, // 011A MOVE R11 R3
|
||||||
0x7C200200, // 011B CALL R8 1
|
0x7C240400, // 011B CALL R9 2
|
||||||
0x8C20112B, // 011C GETMET R8 R8 K43
|
0x8C241123, // 011C GETMET R9 R8 K35
|
||||||
0x60280015, // 011D GETGBL R10 G21
|
0x542E0017, // 011D LDINT R11 24
|
||||||
0x882C010E, // 011E GETMBR R11 R0 K14
|
0x58300024, // 011E LDCONST R12 K36
|
||||||
0x7C280200, // 011F CALL R10 1
|
0x7C240600, // 011F CALL R9 3
|
||||||
0x7C200400, // 0120 CALL R8 2
|
0x4C240000, // 0120 LDNIL R9
|
||||||
0x8C24052C, // 0121 GETMET R9 R2 K44
|
0x20240C09, // 0121 NE R9 R6 R9
|
||||||
0x5C2C1000, // 0122 MOVE R11 R8
|
0x7826000F, // 0122 JMPF R9 #0133
|
||||||
0x7C240400, // 0123 CALL R9 2
|
0x6024000C, // 0123 GETGBL R9 G12
|
||||||
0x8C24052D, // 0124 GETMET R9 R2 K45
|
0x5C280C00, // 0124 MOVE R10 R6
|
||||||
0x7C240200, // 0125 CALL R9 1
|
0x7C240200, // 0125 CALL R9 1
|
||||||
0x8C24032E, // 0126 GETMET R9 R1 K46
|
0x24241307, // 0126 GT R9 R9 K7
|
||||||
0x5C2C0400, // 0127 MOVE R11 R2
|
0x7826000A, // 0127 JMPF R9 #0133
|
||||||
0x7C240400, // 0128 CALL R9 2
|
0x8C241123, // 0128 GETMET R9 R8 K35
|
||||||
0x88240530, // 0129 GETMBR R9 R2 K48
|
0x542E3601, // 0129 LDINT R11 13826
|
||||||
0x90025E09, // 012A SETMBR R0 K47 R9
|
0x5431FFFD, // 012A LDINT R12 -2
|
||||||
0x88240F29, // 012B GETMBR R9 R7 K41
|
0x7C240600, // 012B CALL R9 3
|
||||||
0x78260002, // 012C JMPF R9 #0130
|
0x8C24110F, // 012C GETMET R9 R8 K15
|
||||||
0x50240000, // 012D LDBOOL R9 0 0
|
0x5C2C0C00, // 012D MOVE R11 R6
|
||||||
0x90026209, // 012E SETMBR R0 K49 R9
|
0x7C240400, // 012E CALL R9 2
|
||||||
0x70020001, // 012F JMP #0132
|
0x8C241123, // 012F GETMET R9 R8 K35
|
||||||
0x50240200, // 0130 LDBOOL R9 1 0
|
0x542E0017, // 0130 LDINT R11 24
|
||||||
0x90026409, // 0131 SETMBR R0 K50 R9
|
0x58300024, // 0131 LDCONST R12 K36
|
||||||
0x80000000, // 0132 RET 0
|
0x7C240600, // 0132 CALL R9 3
|
||||||
|
0x781E0004, // 0133 JMPF R7 #0139
|
||||||
|
0x8C241123, // 0134 GETMET R9 R8 K35
|
||||||
|
0x542E2902, // 0135 LDINT R11 10499
|
||||||
|
0x5431FFFD, // 0136 LDINT R12 -2
|
||||||
|
0x7C240600, // 0137 CALL R9 3
|
||||||
|
0x70020003, // 0138 JMP #013D
|
||||||
|
0x8C241123, // 0139 GETMET R9 R8 K35
|
||||||
|
0x542E2802, // 013A LDINT R11 10243
|
||||||
|
0x5431FFFD, // 013B LDINT R12 -2
|
||||||
|
0x7C240600, // 013C CALL R9 3
|
||||||
|
0x88240127, // 013D GETMBR R9 R0 K39
|
||||||
|
0x4C280000, // 013E LDNIL R10
|
||||||
|
0x2024120A, // 013F NE R9 R9 R10
|
||||||
|
0x7826000A, // 0140 JMPF R9 #014C
|
||||||
|
0x88240127, // 0141 GETMBR R9 R0 K39
|
||||||
|
0x78260004, // 0142 JMPF R9 #0148
|
||||||
|
0x8C241123, // 0143 GETMET R9 R8 K35
|
||||||
|
0x542E2903, // 0144 LDINT R11 10500
|
||||||
|
0x5431FFFD, // 0145 LDINT R12 -2
|
||||||
|
0x7C240600, // 0146 CALL R9 3
|
||||||
|
0x70020003, // 0147 JMP #014C
|
||||||
|
0x8C241123, // 0148 GETMET R9 R8 K35
|
||||||
|
0x542E2803, // 0149 LDINT R11 10244
|
||||||
|
0x5431FFFD, // 014A LDINT R12 -2
|
||||||
|
0x7C240600, // 014B CALL R9 3
|
||||||
|
0x8C241123, // 014C GETMET R9 R8 K35
|
||||||
|
0x542E24FE, // 014D LDINT R11 9471
|
||||||
|
0x5431FFFD, // 014E LDINT R12 -2
|
||||||
|
0x7C240600, // 014F CALL R9 3
|
||||||
|
0x8C241123, // 0150 GETMET R9 R8 K35
|
||||||
|
0x582C0024, // 0151 LDCONST R11 K36
|
||||||
|
0x58300024, // 0152 LDCONST R12 K36
|
||||||
|
0x7C240600, // 0153 CALL R9 3
|
||||||
|
0x8C241123, // 0154 GETMET R9 R8 K35
|
||||||
|
0x542E0017, // 0155 LDINT R11 24
|
||||||
|
0x58300024, // 0156 LDCONST R12 K36
|
||||||
|
0x7C240600, // 0157 CALL R9 3
|
||||||
|
0x8C240528, // 0158 GETMET R9 R2 K40
|
||||||
|
0x5C2C1000, // 0159 MOVE R11 R8
|
||||||
|
0x7C240400, // 015A CALL R9 2
|
||||||
|
0x8C240529, // 015B GETMET R9 R2 K41
|
||||||
|
0x7C240200, // 015C CALL R9 1
|
||||||
|
0x8C24032A, // 015D GETMET R9 R1 K42
|
||||||
|
0x5C2C0400, // 015E MOVE R11 R2
|
||||||
|
0x7C240400, // 015F CALL R9 2
|
||||||
|
0x8824052C, // 0160 GETMBR R9 R2 K44
|
||||||
|
0x90025609, // 0161 SETMBR R0 K43 R9
|
||||||
|
0x781E0002, // 0162 JMPF R7 #0166
|
||||||
|
0x50240000, // 0163 LDBOOL R9 0 0
|
||||||
|
0x90025A09, // 0164 SETMBR R0 K45 R9
|
||||||
|
0x70020001, // 0165 JMP #0168
|
||||||
|
0x50240200, // 0166 LDBOOL R9 1 0
|
||||||
|
0x90025C09, // 0167 SETMBR R0 K46 R9
|
||||||
|
0x80000000, // 0168 RET 0
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,350 +0,0 @@
|
||||||
/* Solidification of Matter_Plugin_2_Sensor_GenericSwitch.h */
|
|
||||||
/********************************************************************\
|
|
||||||
* Generated code, don't edit *
|
|
||||||
\********************************************************************/
|
|
||||||
#include "be_constobj.h"
|
|
||||||
|
|
||||||
extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch;
|
|
||||||
|
|
||||||
/********************************************************************
|
|
||||||
** Solidified function: <lambda>
|
|
||||||
********************************************************************/
|
|
||||||
be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch__X3Clambda_X3E, /* name */
|
|
||||||
be_nested_proto(
|
|
||||||
3, /* nstack */
|
|
||||||
1, /* argc */
|
|
||||||
0, /* varg */
|
|
||||||
0, /* has upvals */
|
|
||||||
NULL, /* no upvals */
|
|
||||||
0, /* has sup protos */
|
|
||||||
NULL,
|
|
||||||
0, /* has constants */
|
|
||||||
NULL, /* no const */
|
|
||||||
be_str_weak(_X3Clambda_X3E),
|
|
||||||
&be_const_str_solidified,
|
|
||||||
( &(const binstruction[ 4]) { /* code */
|
|
||||||
0x60040009, // 0000 GETGBL R1 G9
|
|
||||||
0x5C080000, // 0001 MOVE R2 R0
|
|
||||||
0x7C040200, // 0002 CALL R1 1
|
|
||||||
0x80040200, // 0003 RET 1 R1
|
|
||||||
})
|
|
||||||
)
|
|
||||||
);
|
|
||||||
/*******************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************************
|
|
||||||
** Solidified function: parse_configuration
|
|
||||||
********************************************************************/
|
|
||||||
extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch;
|
|
||||||
be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_parse_configuration, /* name */
|
|
||||||
be_nested_proto(
|
|
||||||
7, /* nstack */
|
|
||||||
2, /* argc */
|
|
||||||
2, /* varg */
|
|
||||||
0, /* has upvals */
|
|
||||||
NULL, /* no upvals */
|
|
||||||
0, /* has sup protos */
|
|
||||||
&be_class_Matter_Plugin_Sensor_GenericSwitch,
|
|
||||||
1, /* has constants */
|
|
||||||
( &(const bvalue[ 5]) { /* constants */
|
|
||||||
/* K0 */ be_nested_str_weak(tasmota_switch_index),
|
|
||||||
/* K1 */ be_nested_str_weak(find),
|
|
||||||
/* K2 */ be_nested_str_weak(ARG),
|
|
||||||
/* K3 */ be_const_int(1),
|
|
||||||
/* K4 */ be_const_int(0),
|
|
||||||
}),
|
|
||||||
be_str_weak(parse_configuration),
|
|
||||||
&be_const_str_solidified,
|
|
||||||
( &(const binstruction[12]) { /* code */
|
|
||||||
0x60080009, // 0000 GETGBL R2 G9
|
|
||||||
0x8C0C0301, // 0001 GETMET R3 R1 K1
|
|
||||||
0x88140102, // 0002 GETMBR R5 R0 K2
|
|
||||||
0x58180003, // 0003 LDCONST R6 K3
|
|
||||||
0x7C0C0600, // 0004 CALL R3 3
|
|
||||||
0x7C080200, // 0005 CALL R2 1
|
|
||||||
0x90020002, // 0006 SETMBR R0 K0 R2
|
|
||||||
0x88080100, // 0007 GETMBR R2 R0 K0
|
|
||||||
0x18080504, // 0008 LE R2 R2 K4
|
|
||||||
0x780A0000, // 0009 JMPF R2 #000B
|
|
||||||
0x90020103, // 000A SETMBR R0 K0 K3
|
|
||||||
0x80000000, // 000B RET 0
|
|
||||||
})
|
|
||||||
)
|
|
||||||
);
|
|
||||||
/*******************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************************
|
|
||||||
** Solidified function: update_shadow
|
|
||||||
********************************************************************/
|
|
||||||
extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch;
|
|
||||||
be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_update_shadow, /* name */
|
|
||||||
be_nested_proto(
|
|
||||||
3, /* nstack */
|
|
||||||
1, /* argc */
|
|
||||||
2, /* varg */
|
|
||||||
0, /* has upvals */
|
|
||||||
NULL, /* no upvals */
|
|
||||||
0, /* has sup protos */
|
|
||||||
&be_class_Matter_Plugin_Sensor_GenericSwitch,
|
|
||||||
1, /* has constants */
|
|
||||||
( &(const bvalue[ 2]) { /* constants */
|
|
||||||
/* K0 */ be_nested_str_weak(update_shadow),
|
|
||||||
/* K1 */ be_nested_str_weak(shadow_value),
|
|
||||||
}),
|
|
||||||
be_str_weak(update_shadow),
|
|
||||||
&be_const_str_solidified,
|
|
||||||
( &(const binstruction[ 8]) { /* code */
|
|
||||||
0x60040003, // 0000 GETGBL R1 G3
|
|
||||||
0x5C080000, // 0001 MOVE R2 R0
|
|
||||||
0x7C040200, // 0002 CALL R1 1
|
|
||||||
0x8C040300, // 0003 GETMET R1 R1 K0
|
|
||||||
0x7C040200, // 0004 CALL R1 1
|
|
||||||
0x50040000, // 0005 LDBOOL R1 0 0
|
|
||||||
0x90020201, // 0006 SETMBR R0 K1 R1
|
|
||||||
0x80000000, // 0007 RET 0
|
|
||||||
})
|
|
||||||
)
|
|
||||||
);
|
|
||||||
/*******************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************************
|
|
||||||
** Solidified function: read_attribute
|
|
||||||
********************************************************************/
|
|
||||||
extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch;
|
|
||||||
be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_read_attribute, /* name */
|
|
||||||
be_nested_proto(
|
|
||||||
12, /* nstack */
|
|
||||||
4, /* argc */
|
|
||||||
2, /* varg */
|
|
||||||
0, /* has upvals */
|
|
||||||
NULL, /* no upvals */
|
|
||||||
0, /* has sup protos */
|
|
||||||
&be_class_Matter_Plugin_Sensor_GenericSwitch,
|
|
||||||
1, /* has constants */
|
|
||||||
( &(const bvalue[11]) { /* constants */
|
|
||||||
/* K0 */ be_nested_str_weak(matter),
|
|
||||||
/* K1 */ be_nested_str_weak(TLV),
|
|
||||||
/* K2 */ be_nested_str_weak(cluster),
|
|
||||||
/* K3 */ be_nested_str_weak(attribute),
|
|
||||||
/* K4 */ be_const_int(0),
|
|
||||||
/* K5 */ be_nested_str_weak(set),
|
|
||||||
/* K6 */ be_nested_str_weak(U1),
|
|
||||||
/* K7 */ be_const_int(2),
|
|
||||||
/* K8 */ be_const_int(1),
|
|
||||||
/* K9 */ be_nested_str_weak(U4),
|
|
||||||
/* K10 */ be_nested_str_weak(read_attribute),
|
|
||||||
}),
|
|
||||||
be_str_weak(read_attribute),
|
|
||||||
&be_const_str_solidified,
|
|
||||||
( &(const binstruction[51]) { /* code */
|
|
||||||
0xB8120000, // 0000 GETNGBL R4 K0
|
|
||||||
0x88100901, // 0001 GETMBR R4 R4 K1
|
|
||||||
0x88140502, // 0002 GETMBR R5 R2 K2
|
|
||||||
0x88180503, // 0003 GETMBR R6 R2 K3
|
|
||||||
0x541E003A, // 0004 LDINT R7 59
|
|
||||||
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
|
||||||
0x781E0022, // 0006 JMPF R7 #002A
|
|
||||||
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
|
||||||
0x781E0005, // 0008 JMPF R7 #000F
|
|
||||||
0x8C1C0705, // 0009 GETMET R7 R3 K5
|
|
||||||
0x88240906, // 000A GETMBR R9 R4 K6
|
|
||||||
0x58280007, // 000B LDCONST R10 K7
|
|
||||||
0x7C1C0600, // 000C CALL R7 3
|
|
||||||
0x80040E00, // 000D RET 1 R7
|
|
||||||
0x7002001A, // 000E JMP #002A
|
|
||||||
0x1C1C0D08, // 000F EQ R7 R6 K8
|
|
||||||
0x781E0005, // 0010 JMPF R7 #0017
|
|
||||||
0x8C1C0705, // 0011 GETMET R7 R3 K5
|
|
||||||
0x88240906, // 0012 GETMBR R9 R4 K6
|
|
||||||
0x58280004, // 0013 LDCONST R10 K4
|
|
||||||
0x7C1C0600, // 0014 CALL R7 3
|
|
||||||
0x80040E00, // 0015 RET 1 R7
|
|
||||||
0x70020012, // 0016 JMP #002A
|
|
||||||
0x1C1C0D07, // 0017 EQ R7 R6 K7
|
|
||||||
0x781E0005, // 0018 JMPF R7 #001F
|
|
||||||
0x8C1C0705, // 0019 GETMET R7 R3 K5
|
|
||||||
0x88240906, // 001A GETMBR R9 R4 K6
|
|
||||||
0x58280007, // 001B LDCONST R10 K7
|
|
||||||
0x7C1C0600, // 001C CALL R7 3
|
|
||||||
0x80040E00, // 001D RET 1 R7
|
|
||||||
0x7002000A, // 001E JMP #002A
|
|
||||||
0x541EFFFB, // 001F LDINT R7 65532
|
|
||||||
0x1C1C0C07, // 0020 EQ R7 R6 R7
|
|
||||||
0x781E0007, // 0021 JMPF R7 #002A
|
|
||||||
0x8C1C0705, // 0022 GETMET R7 R3 K5
|
|
||||||
0x88240909, // 0023 GETMBR R9 R4 K9
|
|
||||||
0x542A0003, // 0024 LDINT R10 4
|
|
||||||
0x002A0E0A, // 0025 ADD R10 K7 R10
|
|
||||||
0x542E0007, // 0026 LDINT R11 8
|
|
||||||
0x0028140B, // 0027 ADD R10 R10 R11
|
|
||||||
0x7C1C0600, // 0028 CALL R7 3
|
|
||||||
0x80040E00, // 0029 RET 1 R7
|
|
||||||
0x601C0003, // 002A GETGBL R7 G3
|
|
||||||
0x5C200000, // 002B MOVE R8 R0
|
|
||||||
0x7C1C0200, // 002C CALL R7 1
|
|
||||||
0x8C1C0F0A, // 002D GETMET R7 R7 K10
|
|
||||||
0x5C240200, // 002E MOVE R9 R1
|
|
||||||
0x5C280400, // 002F MOVE R10 R2
|
|
||||||
0x5C2C0600, // 0030 MOVE R11 R3
|
|
||||||
0x7C1C0800, // 0031 CALL R7 4
|
|
||||||
0x80040E00, // 0032 RET 1 R7
|
|
||||||
})
|
|
||||||
)
|
|
||||||
);
|
|
||||||
/*******************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************************
|
|
||||||
** Solidified function: append_state_json
|
|
||||||
********************************************************************/
|
|
||||||
extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch;
|
|
||||||
be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_append_state_json, /* name */
|
|
||||||
be_nested_proto(
|
|
||||||
5, /* nstack */
|
|
||||||
1, /* argc */
|
|
||||||
2, /* varg */
|
|
||||||
0, /* has upvals */
|
|
||||||
NULL, /* no upvals */
|
|
||||||
0, /* has sup protos */
|
|
||||||
&be_class_Matter_Plugin_Sensor_GenericSwitch,
|
|
||||||
1, /* has constants */
|
|
||||||
( &(const bvalue[ 2]) { /* constants */
|
|
||||||
/* K0 */ be_nested_str_weak(_X2C_X22Switch_X22_X3A_X25s),
|
|
||||||
/* K1 */ be_nested_str_weak(shadow_onoff),
|
|
||||||
}),
|
|
||||||
be_str_weak(append_state_json),
|
|
||||||
&be_const_str_solidified,
|
|
||||||
( &(const binstruction[ 7]) { /* code */
|
|
||||||
0x60040018, // 0000 GETGBL R1 G24
|
|
||||||
0x58080000, // 0001 LDCONST R2 K0
|
|
||||||
0x600C0009, // 0002 GETGBL R3 G9
|
|
||||||
0x88100101, // 0003 GETMBR R4 R0 K1
|
|
||||||
0x7C0C0200, // 0004 CALL R3 1
|
|
||||||
0x7C040400, // 0005 CALL R1 2
|
|
||||||
0x80040200, // 0006 RET 1 R1
|
|
||||||
})
|
|
||||||
)
|
|
||||||
);
|
|
||||||
/*******************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************************
|
|
||||||
** Solidified class: Matter_Plugin_Sensor_GenericSwitch
|
|
||||||
********************************************************************/
|
|
||||||
extern const bclass be_class_Matter_Plugin_Device;
|
|
||||||
be_local_class(Matter_Plugin_Sensor_GenericSwitch,
|
|
||||||
2,
|
|
||||||
&be_class_Matter_Plugin_Device,
|
|
||||||
be_nested_map(14,
|
|
||||||
( (struct bmapnode*) &(const bmapnode[]) {
|
|
||||||
{ be_const_key_weak(CLUSTERS, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
|
||||||
be_const_map( * be_nested_map(6,
|
|
||||||
( (struct bmapnode*) &(const bmapnode[]) {
|
|
||||||
{ be_const_key_int(5, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
|
||||||
be_const_list( * be_nested_list(12,
|
|
||||||
( (struct bvalue*) &(const bvalue[]) {
|
|
||||||
be_const_int(0),
|
|
||||||
be_const_int(1),
|
|
||||||
be_const_int(2),
|
|
||||||
be_const_int(3),
|
|
||||||
be_const_int(4),
|
|
||||||
be_const_int(5),
|
|
||||||
be_const_int(65528),
|
|
||||||
be_const_int(65529),
|
|
||||||
be_const_int(65530),
|
|
||||||
be_const_int(65531),
|
|
||||||
be_const_int(65532),
|
|
||||||
be_const_int(65533),
|
|
||||||
})) ) } )) },
|
|
||||||
{ be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
|
||||||
be_const_list( * be_nested_list(10,
|
|
||||||
( (struct bvalue*) &(const bvalue[]) {
|
|
||||||
be_const_int(0),
|
|
||||||
be_const_int(1),
|
|
||||||
be_const_int(2),
|
|
||||||
be_const_int(3),
|
|
||||||
be_const_int(65528),
|
|
||||||
be_const_int(65529),
|
|
||||||
be_const_int(65530),
|
|
||||||
be_const_int(65531),
|
|
||||||
be_const_int(65532),
|
|
||||||
be_const_int(65533),
|
|
||||||
})) ) } )) },
|
|
||||||
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
|
||||||
be_const_list( * be_nested_list(12,
|
|
||||||
( (struct bvalue*) &(const bvalue[]) {
|
|
||||||
be_const_int(3),
|
|
||||||
be_const_int(5),
|
|
||||||
be_const_int(10),
|
|
||||||
be_const_int(15),
|
|
||||||
be_const_int(17),
|
|
||||||
be_const_int(18),
|
|
||||||
be_const_int(65528),
|
|
||||||
be_const_int(65529),
|
|
||||||
be_const_int(65530),
|
|
||||||
be_const_int(65531),
|
|
||||||
be_const_int(65532),
|
|
||||||
be_const_int(65533),
|
|
||||||
})) ) } )) },
|
|
||||||
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
|
||||||
be_const_list( * be_nested_list(8,
|
|
||||||
( (struct bvalue*) &(const bvalue[]) {
|
|
||||||
be_const_int(0),
|
|
||||||
be_const_int(1),
|
|
||||||
be_const_int(65528),
|
|
||||||
be_const_int(65529),
|
|
||||||
be_const_int(65530),
|
|
||||||
be_const_int(65531),
|
|
||||||
be_const_int(65532),
|
|
||||||
be_const_int(65533),
|
|
||||||
})) ) } )) },
|
|
||||||
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
|
||||||
be_const_list( * be_nested_list(7,
|
|
||||||
( (struct bvalue*) &(const bvalue[]) {
|
|
||||||
be_const_int(0),
|
|
||||||
be_const_int(65528),
|
|
||||||
be_const_int(65529),
|
|
||||||
be_const_int(65530),
|
|
||||||
be_const_int(65531),
|
|
||||||
be_const_int(65532),
|
|
||||||
be_const_int(65533),
|
|
||||||
})) ) } )) },
|
|
||||||
{ be_const_key_int(59, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
|
||||||
be_const_list( * be_nested_list(9,
|
|
||||||
( (struct bvalue*) &(const bvalue[]) {
|
|
||||||
be_const_int(0),
|
|
||||||
be_const_int(1),
|
|
||||||
be_const_int(2),
|
|
||||||
be_const_int(65528),
|
|
||||||
be_const_int(65529),
|
|
||||||
be_const_int(65530),
|
|
||||||
be_const_int(65531),
|
|
||||||
be_const_int(65532),
|
|
||||||
be_const_int(65533),
|
|
||||||
})) ) } )) },
|
|
||||||
})) ) } )) },
|
|
||||||
{ be_const_key_weak(ARG, -1), be_nested_str_weak(switch) },
|
|
||||||
{ be_const_key_weak(UPDATE_TIME, 4), be_const_int(750) },
|
|
||||||
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(gensw) },
|
|
||||||
{ be_const_key_weak(append_state_json, 9), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_append_state_json_closure) },
|
|
||||||
{ be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Generic_X20Switch) },
|
|
||||||
{ be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_read_attribute_closure) },
|
|
||||||
{ be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_update_shadow_closure) },
|
|
||||||
{ be_const_key_weak(ARG_HINT, 12), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
|
|
||||||
{ be_const_key_weak(tasmota_switch_index, 13), be_const_var(0) },
|
|
||||||
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
|
||||||
be_const_map( * be_nested_map(1,
|
|
||||||
( (struct bmapnode*) &(const bmapnode[]) {
|
|
||||||
{ be_const_key_int(15, -1), be_const_int(2) },
|
|
||||||
})) ) } )) },
|
|
||||||
{ be_const_key_weak(parse_configuration, 8), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_parse_configuration_closure) },
|
|
||||||
{ be_const_key_weak(shadow_value, -1), be_const_var(1) },
|
|
||||||
{ be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Sensor_GenericSwitch__X3Clambda_X3E_closure) },
|
|
||||||
})),
|
|
||||||
be_str_weak(Matter_Plugin_Sensor_GenericSwitch)
|
|
||||||
);
|
|
||||||
/********************************************************************/
|
|
||||||
/* End of solidification */
|
|
|
@ -0,0 +1,498 @@
|
||||||
|
/* Solidification of Matter_Plugin_2_Sensor_GenericSwitch_Btn.h */
|
||||||
|
/********************************************************************\
|
||||||
|
* Generated code, don't edit *
|
||||||
|
\********************************************************************/
|
||||||
|
#include "be_constobj.h"
|
||||||
|
|
||||||
|
extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn;
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
** Solidified function: read_attribute
|
||||||
|
********************************************************************/
|
||||||
|
extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn;
|
||||||
|
be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_read_attribute, /* name */
|
||||||
|
be_nested_proto(
|
||||||
|
12, /* nstack */
|
||||||
|
4, /* argc */
|
||||||
|
2, /* varg */
|
||||||
|
0, /* has upvals */
|
||||||
|
NULL, /* no upvals */
|
||||||
|
0, /* has sup protos */
|
||||||
|
&be_class_Matter_Plugin_Sensor_GenericSwitch_Btn,
|
||||||
|
1, /* has constants */
|
||||||
|
( &(const bvalue[13]) { /* constants */
|
||||||
|
/* K0 */ be_nested_str_weak(matter),
|
||||||
|
/* K1 */ be_nested_str_weak(TLV),
|
||||||
|
/* K2 */ be_nested_str_weak(cluster),
|
||||||
|
/* K3 */ be_nested_str_weak(attribute),
|
||||||
|
/* K4 */ be_const_int(0),
|
||||||
|
/* K5 */ be_nested_str_weak(set),
|
||||||
|
/* K6 */ be_nested_str_weak(U1),
|
||||||
|
/* K7 */ be_const_int(2),
|
||||||
|
/* K8 */ be_const_int(1),
|
||||||
|
/* K9 */ be_nested_str_weak(set_or_nil),
|
||||||
|
/* K10 */ be_nested_str_weak(shadow_position),
|
||||||
|
/* K11 */ be_nested_str_weak(U4),
|
||||||
|
/* K12 */ be_nested_str_weak(read_attribute),
|
||||||
|
}),
|
||||||
|
be_str_weak(read_attribute),
|
||||||
|
&be_const_str_solidified,
|
||||||
|
( &(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
|
||||||
|
0x541E003A, // 0004 LDINT R7 59
|
||||||
|
0x1C1C0A07, // 0005 EQ R7 R5 R7
|
||||||
|
0x781E0024, // 0006 JMPF R7 #002C
|
||||||
|
0x1C1C0D04, // 0007 EQ R7 R6 K4
|
||||||
|
0x781E0005, // 0008 JMPF R7 #000F
|
||||||
|
0x8C1C0705, // 0009 GETMET R7 R3 K5
|
||||||
|
0x88240906, // 000A GETMBR R9 R4 K6
|
||||||
|
0x58280007, // 000B LDCONST R10 K7
|
||||||
|
0x7C1C0600, // 000C CALL R7 3
|
||||||
|
0x80040E00, // 000D RET 1 R7
|
||||||
|
0x7002001C, // 000E JMP #002C
|
||||||
|
0x1C1C0D08, // 000F EQ R7 R6 K8
|
||||||
|
0x781E0005, // 0010 JMPF R7 #0017
|
||||||
|
0x8C1C0709, // 0011 GETMET R7 R3 K9
|
||||||
|
0x88240906, // 0012 GETMBR R9 R4 K6
|
||||||
|
0x8828010A, // 0013 GETMBR R10 R0 K10
|
||||||
|
0x7C1C0600, // 0014 CALL R7 3
|
||||||
|
0x80040E00, // 0015 RET 1 R7
|
||||||
|
0x70020014, // 0016 JMP #002C
|
||||||
|
0x1C1C0D07, // 0017 EQ R7 R6 K7
|
||||||
|
0x781E0005, // 0018 JMPF R7 #001F
|
||||||
|
0x8C1C0705, // 0019 GETMET R7 R3 K5
|
||||||
|
0x88240906, // 001A GETMBR R9 R4 K6
|
||||||
|
0x542A0004, // 001B LDINT R10 5
|
||||||
|
0x7C1C0600, // 001C CALL R7 3
|
||||||
|
0x80040E00, // 001D RET 1 R7
|
||||||
|
0x7002000C, // 001E JMP #002C
|
||||||
|
0x541EFFFB, // 001F LDINT R7 65532
|
||||||
|
0x1C1C0C07, // 0020 EQ R7 R6 R7
|
||||||
|
0x781E0009, // 0021 JMPF R7 #002C
|
||||||
|
0x8C1C0705, // 0022 GETMET R7 R3 K5
|
||||||
|
0x8824090B, // 0023 GETMBR R9 R4 K11
|
||||||
|
0x542A0003, // 0024 LDINT R10 4
|
||||||
|
0x302A0E0A, // 0025 OR R10 K7 R10
|
||||||
|
0x542E0007, // 0026 LDINT R11 8
|
||||||
|
0x3028140B, // 0027 OR R10 R10 R11
|
||||||
|
0x542E000F, // 0028 LDINT R11 16
|
||||||
|
0x3028140B, // 0029 OR R10 R10 R11
|
||||||
|
0x7C1C0600, // 002A CALL R7 3
|
||||||
|
0x80040E00, // 002B RET 1 R7
|
||||||
|
0x601C0003, // 002C GETGBL R7 G3
|
||||||
|
0x5C200000, // 002D MOVE R8 R0
|
||||||
|
0x7C1C0200, // 002E CALL R7 1
|
||||||
|
0x8C1C0F0C, // 002F GETMET R7 R7 K12
|
||||||
|
0x5C240200, // 0030 MOVE R9 R1
|
||||||
|
0x5C280400, // 0031 MOVE R10 R2
|
||||||
|
0x5C2C0600, // 0032 MOVE R11 R3
|
||||||
|
0x7C1C0800, // 0033 CALL R7 4
|
||||||
|
0x80040E00, // 0034 RET 1 R7
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
** Solidified function: <lambda>
|
||||||
|
********************************************************************/
|
||||||
|
be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn__X3Clambda_X3E, /* name */
|
||||||
|
be_nested_proto(
|
||||||
|
3, /* nstack */
|
||||||
|
1, /* argc */
|
||||||
|
0, /* varg */
|
||||||
|
0, /* has upvals */
|
||||||
|
NULL, /* no upvals */
|
||||||
|
0, /* has sup protos */
|
||||||
|
NULL,
|
||||||
|
0, /* has constants */
|
||||||
|
NULL, /* no const */
|
||||||
|
be_str_weak(_X3Clambda_X3E),
|
||||||
|
&be_const_str_solidified,
|
||||||
|
( &(const binstruction[ 4]) { /* code */
|
||||||
|
0x60040009, // 0000 GETGBL R1 G9
|
||||||
|
0x5C080000, // 0001 MOVE R2 R0
|
||||||
|
0x7C040200, // 0002 CALL R1 1
|
||||||
|
0x80040200, // 0003 RET 1 R1
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
** Solidified function: set_position
|
||||||
|
********************************************************************/
|
||||||
|
extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn;
|
||||||
|
be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_set_position, /* name */
|
||||||
|
be_nested_proto(
|
||||||
|
6, /* nstack */
|
||||||
|
2, /* argc */
|
||||||
|
2, /* varg */
|
||||||
|
0, /* has upvals */
|
||||||
|
NULL, /* no upvals */
|
||||||
|
0, /* has sup protos */
|
||||||
|
&be_class_Matter_Plugin_Sensor_GenericSwitch_Btn,
|
||||||
|
1, /* has constants */
|
||||||
|
( &(const bvalue[ 3]) { /* constants */
|
||||||
|
/* K0 */ be_nested_str_weak(shadow_position),
|
||||||
|
/* K1 */ be_nested_str_weak(attribute_updated),
|
||||||
|
/* K2 */ be_const_int(1),
|
||||||
|
}),
|
||||||
|
be_str_weak(set_position),
|
||||||
|
&be_const_str_solidified,
|
||||||
|
( &(const binstruction[ 9]) { /* code */
|
||||||
|
0x88080100, // 0000 GETMBR R2 R0 K0
|
||||||
|
0x20080202, // 0001 NE R2 R1 R2
|
||||||
|
0x780A0004, // 0002 JMPF R2 #0008
|
||||||
|
0x8C080101, // 0003 GETMET R2 R0 K1
|
||||||
|
0x5412003A, // 0004 LDINT R4 59
|
||||||
|
0x58140002, // 0005 LDCONST R5 K2
|
||||||
|
0x7C080600, // 0006 CALL R2 3
|
||||||
|
0x90020001, // 0007 SETMBR R0 K0 R1
|
||||||
|
0x80000000, // 0008 RET 0
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
** Solidified function: parse_configuration
|
||||||
|
********************************************************************/
|
||||||
|
extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn;
|
||||||
|
be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_parse_configuration, /* name */
|
||||||
|
be_nested_proto(
|
||||||
|
7, /* nstack */
|
||||||
|
2, /* argc */
|
||||||
|
2, /* varg */
|
||||||
|
0, /* has upvals */
|
||||||
|
NULL, /* no upvals */
|
||||||
|
0, /* has sup protos */
|
||||||
|
&be_class_Matter_Plugin_Sensor_GenericSwitch_Btn,
|
||||||
|
1, /* has constants */
|
||||||
|
( &(const bvalue[ 5]) { /* constants */
|
||||||
|
/* K0 */ be_nested_str_weak(tasmota_switch_index),
|
||||||
|
/* K1 */ be_nested_str_weak(find),
|
||||||
|
/* K2 */ be_nested_str_weak(ARG),
|
||||||
|
/* K3 */ be_const_int(1),
|
||||||
|
/* K4 */ be_const_int(0),
|
||||||
|
}),
|
||||||
|
be_str_weak(parse_configuration),
|
||||||
|
&be_const_str_solidified,
|
||||||
|
( &(const binstruction[12]) { /* code */
|
||||||
|
0x60080009, // 0000 GETGBL R2 G9
|
||||||
|
0x8C0C0301, // 0001 GETMET R3 R1 K1
|
||||||
|
0x88140102, // 0002 GETMBR R5 R0 K2
|
||||||
|
0x58180003, // 0003 LDCONST R6 K3
|
||||||
|
0x7C0C0600, // 0004 CALL R3 3
|
||||||
|
0x7C080200, // 0005 CALL R2 1
|
||||||
|
0x90020002, // 0006 SETMBR R0 K0 R2
|
||||||
|
0x88080100, // 0007 GETMBR R2 R0 K0
|
||||||
|
0x18080504, // 0008 LE R2 R2 K4
|
||||||
|
0x780A0000, // 0009 JMPF R2 #000B
|
||||||
|
0x90020103, // 000A SETMBR R0 K0 K3
|
||||||
|
0x80000000, // 000B RET 0
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
** Solidified function: append_state_json
|
||||||
|
********************************************************************/
|
||||||
|
extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn;
|
||||||
|
be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_append_state_json, /* name */
|
||||||
|
be_nested_proto(
|
||||||
|
5, /* nstack */
|
||||||
|
1, /* argc */
|
||||||
|
2, /* varg */
|
||||||
|
0, /* has upvals */
|
||||||
|
NULL, /* no upvals */
|
||||||
|
0, /* has sup protos */
|
||||||
|
&be_class_Matter_Plugin_Sensor_GenericSwitch_Btn,
|
||||||
|
1, /* has constants */
|
||||||
|
( &(const bvalue[ 2]) { /* constants */
|
||||||
|
/* K0 */ be_nested_str_weak(_X2C_X22Switch_X22_X3A_X25s),
|
||||||
|
/* K1 */ be_nested_str_weak(shadow_onoff),
|
||||||
|
}),
|
||||||
|
be_str_weak(append_state_json),
|
||||||
|
&be_const_str_solidified,
|
||||||
|
( &(const binstruction[ 7]) { /* code */
|
||||||
|
0x60040018, // 0000 GETGBL R1 G24
|
||||||
|
0x58080000, // 0001 LDCONST R2 K0
|
||||||
|
0x600C0009, // 0002 GETGBL R3 G9
|
||||||
|
0x88100101, // 0003 GETMBR R4 R0 K1
|
||||||
|
0x7C0C0200, // 0004 CALL R3 1
|
||||||
|
0x7C040400, // 0005 CALL R1 2
|
||||||
|
0x80040200, // 0006 RET 1 R1
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
** Solidified function: button_handler
|
||||||
|
********************************************************************/
|
||||||
|
extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn;
|
||||||
|
be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_button_handler, /* name */
|
||||||
|
be_nested_proto(
|
||||||
|
15, /* nstack */
|
||||||
|
5, /* argc */
|
||||||
|
2, /* varg */
|
||||||
|
0, /* has upvals */
|
||||||
|
NULL, /* no upvals */
|
||||||
|
0, /* has sup protos */
|
||||||
|
&be_class_Matter_Plugin_Sensor_GenericSwitch_Btn,
|
||||||
|
1, /* has constants */
|
||||||
|
( &(const bvalue[12]) { /* constants */
|
||||||
|
/* K0 */ be_const_int(0),
|
||||||
|
/* K1 */ be_const_int(1),
|
||||||
|
/* K2 */ be_nested_str_weak(set_position),
|
||||||
|
/* K3 */ be_nested_str_weak(publish_event),
|
||||||
|
/* K4 */ be_nested_str_weak(matter),
|
||||||
|
/* K5 */ be_nested_str_weak(EVENT_INFO),
|
||||||
|
/* K6 */ be_nested_str_weak(TLV),
|
||||||
|
/* K7 */ be_nested_str_weak(Matter_TLV_item),
|
||||||
|
/* K8 */ be_nested_str_weak(set),
|
||||||
|
/* K9 */ be_nested_str_weak(U1),
|
||||||
|
/* K10 */ be_const_int(3),
|
||||||
|
/* K11 */ be_const_int(2),
|
||||||
|
}),
|
||||||
|
be_str_weak(button_handler),
|
||||||
|
&be_const_str_solidified,
|
||||||
|
( &(const binstruction[105]) { /* code */
|
||||||
|
0x1C140500, // 0000 EQ R5 R2 K0
|
||||||
|
0x74160001, // 0001 JMPT R5 #0004
|
||||||
|
0x1C140501, // 0002 EQ R5 R2 K1
|
||||||
|
0x78160002, // 0003 JMPF R5 #0007
|
||||||
|
0x8C140102, // 0004 GETMET R5 R0 K2
|
||||||
|
0x5C1C0600, // 0005 MOVE R7 R3
|
||||||
|
0x7C140400, // 0006 CALL R5 2
|
||||||
|
0x1C140501, // 0007 EQ R5 R2 K1
|
||||||
|
0x78160040, // 0008 JMPF R5 #004A
|
||||||
|
0x780E0010, // 0009 JMPF R3 #001B
|
||||||
|
0x8C140103, // 000A GETMET R5 R0 K3
|
||||||
|
0x541E003A, // 000B LDINT R7 59
|
||||||
|
0x58200001, // 000C LDCONST R8 K1
|
||||||
|
0xB8260800, // 000D GETNGBL R9 K4
|
||||||
|
0x88241305, // 000E GETMBR R9 R9 K5
|
||||||
|
0xB82A0800, // 000F GETNGBL R10 K4
|
||||||
|
0x88281506, // 0010 GETMBR R10 R10 K6
|
||||||
|
0x8C281507, // 0011 GETMET R10 R10 K7
|
||||||
|
0x7C280200, // 0012 CALL R10 1
|
||||||
|
0x8C281508, // 0013 GETMET R10 R10 K8
|
||||||
|
0xB8320800, // 0014 GETNGBL R12 K4
|
||||||
|
0x88301906, // 0015 GETMBR R12 R12 K6
|
||||||
|
0x88301909, // 0016 GETMBR R12 R12 K9
|
||||||
|
0x58340001, // 0017 LDCONST R13 K1
|
||||||
|
0x7C280600, // 0018 CALL R10 3
|
||||||
|
0x7C140A00, // 0019 CALL R5 5
|
||||||
|
0x7002000F, // 001A JMP #002B
|
||||||
|
0x8C140103, // 001B GETMET R5 R0 K3
|
||||||
|
0x541E003A, // 001C LDINT R7 59
|
||||||
|
0x5820000A, // 001D LDCONST R8 K10
|
||||||
|
0xB8260800, // 001E GETNGBL R9 K4
|
||||||
|
0x88241305, // 001F GETMBR R9 R9 K5
|
||||||
|
0xB82A0800, // 0020 GETNGBL R10 K4
|
||||||
|
0x88281506, // 0021 GETMBR R10 R10 K6
|
||||||
|
0x8C281507, // 0022 GETMET R10 R10 K7
|
||||||
|
0x7C280200, // 0023 CALL R10 1
|
||||||
|
0x8C281508, // 0024 GETMET R10 R10 K8
|
||||||
|
0xB8320800, // 0025 GETNGBL R12 K4
|
||||||
|
0x88301906, // 0026 GETMBR R12 R12 K6
|
||||||
|
0x88301909, // 0027 GETMBR R12 R12 K9
|
||||||
|
0x58340001, // 0028 LDCONST R13 K1
|
||||||
|
0x7C280600, // 0029 CALL R10 3
|
||||||
|
0x7C140A00, // 002A CALL R5 5
|
||||||
|
0x1C140701, // 002B EQ R5 R3 K1
|
||||||
|
0x7816001B, // 002C JMPF R5 #0049
|
||||||
|
0x24140900, // 002D GT R5 R4 K0
|
||||||
|
0x78160019, // 002E JMPF R5 #0049
|
||||||
|
0x8C140103, // 002F GETMET R5 R0 K3
|
||||||
|
0x541E003A, // 0030 LDINT R7 59
|
||||||
|
0x54220004, // 0031 LDINT R8 5
|
||||||
|
0xB8260800, // 0032 GETNGBL R9 K4
|
||||||
|
0x88241305, // 0033 GETMBR R9 R9 K5
|
||||||
|
0xB82A0800, // 0034 GETNGBL R10 K4
|
||||||
|
0x88281506, // 0035 GETMBR R10 R10 K6
|
||||||
|
0x8C281507, // 0036 GETMET R10 R10 K7
|
||||||
|
0x7C280200, // 0037 CALL R10 1
|
||||||
|
0x8C281508, // 0038 GETMET R10 R10 K8
|
||||||
|
0xB8320800, // 0039 GETNGBL R12 K4
|
||||||
|
0x88301906, // 003A GETMBR R12 R12 K6
|
||||||
|
0x88301909, // 003B GETMBR R12 R12 K9
|
||||||
|
0x58340001, // 003C LDCONST R13 K1
|
||||||
|
0x7C280600, // 003D CALL R10 3
|
||||||
|
0xB82E0800, // 003E GETNGBL R11 K4
|
||||||
|
0x882C1706, // 003F GETMBR R11 R11 K6
|
||||||
|
0x8C2C1707, // 0040 GETMET R11 R11 K7
|
||||||
|
0x7C2C0200, // 0041 CALL R11 1
|
||||||
|
0x8C2C1708, // 0042 GETMET R11 R11 K8
|
||||||
|
0xB8360800, // 0043 GETNGBL R13 K4
|
||||||
|
0x88341B06, // 0044 GETMBR R13 R13 K6
|
||||||
|
0x88341B09, // 0045 GETMBR R13 R13 K9
|
||||||
|
0x00380901, // 0046 ADD R14 R4 K1
|
||||||
|
0x7C2C0600, // 0047 CALL R11 3
|
||||||
|
0x7C140C00, // 0048 CALL R5 6
|
||||||
|
0x7002001D, // 0049 JMP #0068
|
||||||
|
0x1C14050B, // 004A EQ R5 R2 K11
|
||||||
|
0x7816001B, // 004B JMPF R5 #0068
|
||||||
|
0x24140900, // 004C GT R5 R4 K0
|
||||||
|
0x78160019, // 004D JMPF R5 #0068
|
||||||
|
0x8C140103, // 004E GETMET R5 R0 K3
|
||||||
|
0x541E003A, // 004F LDINT R7 59
|
||||||
|
0x54220005, // 0050 LDINT R8 6
|
||||||
|
0xB8260800, // 0051 GETNGBL R9 K4
|
||||||
|
0x88241305, // 0052 GETMBR R9 R9 K5
|
||||||
|
0xB82A0800, // 0053 GETNGBL R10 K4
|
||||||
|
0x88281506, // 0054 GETMBR R10 R10 K6
|
||||||
|
0x8C281507, // 0055 GETMET R10 R10 K7
|
||||||
|
0x7C280200, // 0056 CALL R10 1
|
||||||
|
0x8C281508, // 0057 GETMET R10 R10 K8
|
||||||
|
0xB8320800, // 0058 GETNGBL R12 K4
|
||||||
|
0x88301906, // 0059 GETMBR R12 R12 K6
|
||||||
|
0x88301909, // 005A GETMBR R12 R12 K9
|
||||||
|
0x58340001, // 005B LDCONST R13 K1
|
||||||
|
0x7C280600, // 005C CALL R10 3
|
||||||
|
0xB82E0800, // 005D GETNGBL R11 K4
|
||||||
|
0x882C1706, // 005E GETMBR R11 R11 K6
|
||||||
|
0x8C2C1707, // 005F GETMET R11 R11 K7
|
||||||
|
0x7C2C0200, // 0060 CALL R11 1
|
||||||
|
0x8C2C1708, // 0061 GETMET R11 R11 K8
|
||||||
|
0xB8360800, // 0062 GETNGBL R13 K4
|
||||||
|
0x88341B06, // 0063 GETMBR R13 R13 K6
|
||||||
|
0x88341B09, // 0064 GETMBR R13 R13 K9
|
||||||
|
0x5C380800, // 0065 MOVE R14 R4
|
||||||
|
0x7C2C0600, // 0066 CALL R11 3
|
||||||
|
0x7C140C00, // 0067 CALL R5 6
|
||||||
|
0x80000000, // 0068 RET 0
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
** Solidified class: Matter_Plugin_Sensor_GenericSwitch_Btn
|
||||||
|
********************************************************************/
|
||||||
|
extern const bclass be_class_Matter_Plugin_Device;
|
||||||
|
be_local_class(Matter_Plugin_Sensor_GenericSwitch_Btn,
|
||||||
|
2,
|
||||||
|
&be_class_Matter_Plugin_Device,
|
||||||
|
be_nested_map(14,
|
||||||
|
( (struct bmapnode*) &(const bmapnode[]) {
|
||||||
|
{ be_const_key_weak(read_attribute, 4), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_read_attribute_closure) },
|
||||||
|
{ be_const_key_weak(ARG, -1), be_nested_str_weak(button) },
|
||||||
|
{ be_const_key_weak(ARG_TYPE, 6), be_const_static_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn__X3Clambda_X3E_closure) },
|
||||||
|
{ be_const_key_weak(TYPE, 9), be_nested_str_weak(gensw_btn) },
|
||||||
|
{ be_const_key_weak(button_handler, 13), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_button_handler_closure) },
|
||||||
|
{ be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Generic_X20Switch_X2FButton) },
|
||||||
|
{ be_const_key_weak(append_state_json, 12), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_append_state_json_closure) },
|
||||||
|
{ be_const_key_weak(set_position, -1), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_set_position_closure) },
|
||||||
|
{ be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_parse_configuration_closure) },
|
||||||
|
{ be_const_key_weak(shadow_position, -1), be_const_var(1) },
|
||||||
|
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
||||||
|
be_const_map( * be_nested_map(1,
|
||||||
|
( (struct bmapnode*) &(const bmapnode[]) {
|
||||||
|
{ be_const_key_int(15, -1), be_const_int(2) },
|
||||||
|
})) ) } )) },
|
||||||
|
{ be_const_key_weak(ARG_HINT, 8), be_nested_str_weak(Button_X3Cx_X3E_X20number) },
|
||||||
|
{ be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) },
|
||||||
|
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
|
||||||
|
be_const_map( * be_nested_map(6,
|
||||||
|
( (struct bmapnode*) &(const bmapnode[]) {
|
||||||
|
{ be_const_key_int(5, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||||
|
be_const_list( * be_nested_list(12,
|
||||||
|
( (struct bvalue*) &(const bvalue[]) {
|
||||||
|
be_const_int(0),
|
||||||
|
be_const_int(1),
|
||||||
|
be_const_int(2),
|
||||||
|
be_const_int(3),
|
||||||
|
be_const_int(4),
|
||||||
|
be_const_int(5),
|
||||||
|
be_const_int(65528),
|
||||||
|
be_const_int(65529),
|
||||||
|
be_const_int(65530),
|
||||||
|
be_const_int(65531),
|
||||||
|
be_const_int(65532),
|
||||||
|
be_const_int(65533),
|
||||||
|
})) ) } )) },
|
||||||
|
{ be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||||
|
be_const_list( * be_nested_list(10,
|
||||||
|
( (struct bvalue*) &(const bvalue[]) {
|
||||||
|
be_const_int(0),
|
||||||
|
be_const_int(1),
|
||||||
|
be_const_int(2),
|
||||||
|
be_const_int(3),
|
||||||
|
be_const_int(65528),
|
||||||
|
be_const_int(65529),
|
||||||
|
be_const_int(65530),
|
||||||
|
be_const_int(65531),
|
||||||
|
be_const_int(65532),
|
||||||
|
be_const_int(65533),
|
||||||
|
})) ) } )) },
|
||||||
|
{ be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||||
|
be_const_list( * be_nested_list(12,
|
||||||
|
( (struct bvalue*) &(const bvalue[]) {
|
||||||
|
be_const_int(3),
|
||||||
|
be_const_int(5),
|
||||||
|
be_const_int(10),
|
||||||
|
be_const_int(15),
|
||||||
|
be_const_int(17),
|
||||||
|
be_const_int(18),
|
||||||
|
be_const_int(65528),
|
||||||
|
be_const_int(65529),
|
||||||
|
be_const_int(65530),
|
||||||
|
be_const_int(65531),
|
||||||
|
be_const_int(65532),
|
||||||
|
be_const_int(65533),
|
||||||
|
})) ) } )) },
|
||||||
|
{ be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||||
|
be_const_list( * be_nested_list(8,
|
||||||
|
( (struct bvalue*) &(const bvalue[]) {
|
||||||
|
be_const_int(0),
|
||||||
|
be_const_int(1),
|
||||||
|
be_const_int(65528),
|
||||||
|
be_const_int(65529),
|
||||||
|
be_const_int(65530),
|
||||||
|
be_const_int(65531),
|
||||||
|
be_const_int(65532),
|
||||||
|
be_const_int(65533),
|
||||||
|
})) ) } )) },
|
||||||
|
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||||
|
be_const_list( * be_nested_list(7,
|
||||||
|
( (struct bvalue*) &(const bvalue[]) {
|
||||||
|
be_const_int(0),
|
||||||
|
be_const_int(65528),
|
||||||
|
be_const_int(65529),
|
||||||
|
be_const_int(65530),
|
||||||
|
be_const_int(65531),
|
||||||
|
be_const_int(65532),
|
||||||
|
be_const_int(65533),
|
||||||
|
})) ) } )) },
|
||||||
|
{ be_const_key_int(59, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
|
||||||
|
be_const_list( * be_nested_list(9,
|
||||||
|
( (struct bvalue*) &(const bvalue[]) {
|
||||||
|
be_const_int(0),
|
||||||
|
be_const_int(1),
|
||||||
|
be_const_int(2),
|
||||||
|
be_const_int(65528),
|
||||||
|
be_const_int(65529),
|
||||||
|
be_const_int(65530),
|
||||||
|
be_const_int(65531),
|
||||||
|
be_const_int(65532),
|
||||||
|
be_const_int(65533),
|
||||||
|
})) ) } )) },
|
||||||
|
})) ) } )) },
|
||||||
|
})),
|
||||||
|
be_str_weak(Matter_Plugin_Sensor_GenericSwitch_Btn)
|
||||||
|
);
|
||||||
|
/********************************************************************/
|
||||||
|
/* End of solidification */
|
|
@ -3397,7 +3397,7 @@ be_local_class(Matter_UI,
|
||||||
{ be_const_key_weak(show_commissioning_info, -1), be_const_closure(class_Matter_UI_show_commissioning_info_closure) },
|
{ be_const_key_weak(show_commissioning_info, -1), be_const_closure(class_Matter_UI_show_commissioning_info_closure) },
|
||||||
{ be_const_key_weak(page_part_ctl, 18), be_const_closure(class_Matter_UI_page_part_ctl_closure) },
|
{ be_const_key_weak(page_part_ctl, 18), be_const_closure(class_Matter_UI_page_part_ctl_closure) },
|
||||||
{ be_const_key_weak(show_fabric_info, -1), be_const_closure(class_Matter_UI_show_fabric_info_closure) },
|
{ be_const_key_weak(show_fabric_info, -1), be_const_closure(class_Matter_UI_show_fabric_info_closure) },
|
||||||
{ be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_long(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7Cflow_X7Crain_X7Cwaterleak_X7Cairquality_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_fan_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_occupancy_X7Cv_contact_X7Cv_flow_X7Cv_rain_X7Cv_waterleak_X7Cv_airquality) },
|
{ be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_long(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Cgensw_btn_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7Cflow_X7Crain_X7Cwaterleak_X7Cairquality_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_fan_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_occupancy_X7Cv_contact_X7Cv_flow_X7Cv_rain_X7Cv_waterleak_X7Cv_airquality) },
|
||||||
{ be_const_key_weak(web_get_arg, -1), be_const_closure(class_Matter_UI_web_get_arg_closure) },
|
{ be_const_key_weak(web_get_arg, -1), be_const_closure(class_Matter_UI_web_get_arg_closure) },
|
||||||
{ be_const_key_weak(plugin_option, 5), be_const_closure(class_Matter_UI_plugin_option_closure) },
|
{ be_const_key_weak(plugin_option, 5), be_const_closure(class_Matter_UI_plugin_option_closure) },
|
||||||
{ be_const_key_weak(web_add_config_button, -1), be_const_closure(class_Matter_UI_web_add_config_button_closure) },
|
{ be_const_key_weak(web_add_config_button, -1), be_const_closure(class_Matter_UI_web_add_config_button_closure) },
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue