![]() |
HAN-FUN API
1.5.3
This project provides the common implementation of ULE Alliance's HAN-FUN application protocol.
|
Common interface for all Interfaces. More...
#include <interface.h>
Data Structures | |
struct | Any |
Helper class to match any interface. More... | |
Public Types | |
enum | Role { CLIENT_ROLE = 0, SERVER_ROLE = 1 } |
Interface roles. More... | |
enum | UID { DEVICE_MANAGEMENT = 0x0001, BIND_MANAGEMENT = 0x0002, GROUP_MANAGEMENT = 0x0003, IDENTIFY = 0x0004, DEVICE_INFORMATION = 0x0005, ATTRIBUTE_REPORTING = 0x0006, BATCH_PROGRAM_MANAGEMENT = 0x0007, EVENT_SCHEDULING = 0x0008, WEEKLY_SCHEDULING = 0x0009, GROUP_TABLE = 0x000A, TAMPER_ALERT = 0x0101, TIME = 0x0102, POWER = 0x0110, KEEP_ALIVE = 0x0115, RSSI = 0x0111, SUOTA = 0x0400, ALERT = 0x0100, ON_OFF = 0x0200, LEVEL_CONTROL = 0x0201, COLOUR_CONTROL = 0x0202, SIMPLE_KEYPAD = 0x0203, SIMPLE_POWER_METER = 0x0300, SIMPLE_TEMPERATURE = 0x0301, SIMPLE_HUMIDITY = 0x0302, SIMPLE_THERMOSTAT = 0x0303, SIMPLE_BUTTON = 0x0304, SIMPLE_VISUAL_EFFECTS = 0x0305, SIMPLE_AIR_PRESSURE = 0x0306, SIMPLE_LIGHT_SENSOR = 0x0307, RESERVED = 0x7F00, MAX_UID = 0x7FFE, ANY_UID = 0x7FFF } |
Interfaces Unique Identifiers (UID). More... | |
Public Member Functions | |
virtual uint16_t | uid () const =0 |
This method returns the interface UID. More... | |
virtual Interface::Role | role () const =0 |
Return the Interface::Role this interface implements. More... | |
virtual Common::Result | handle (Protocol::Packet &packet, Common::ByteArray &payload, uint16_t offset)=0 |
Handle incoming messages from the network. More... | |
virtual void | periodic (uint32_t time)=0 |
Handle periodic processing. More... | |
virtual HF::Attributes::IAttribute * | attribute (uint8_t uid)=0 |
Return a pointer to the interface attribute with the given uid . More... | |
virtual HF::Attributes::UIDS | attributes (uint8_t pack_id=HF::Attributes::Pack::MANDATORY) const =0 |
Return a vector containing the attribute UIDs, for the given pack ID. More... | |
Static Public Attributes | |
static constexpr uint8_t | MAX_CMD_ID = 0xFF |
Maximum value for command IDs in interfaces. | |
Common interface for all Interfaces.
Definition at line 43 of file interface.h.
enum HF::Interface::Role |
Interface roles.
Enumerator | |
---|---|
CLIENT_ROLE | Client Role. |
SERVER_ROLE | Server Role. |
Definition at line 48 of file interface.h.
enum HF::Interface::UID |
Interfaces Unique Identifiers (UID).
Enumerator | |
---|---|
DEVICE_MANAGEMENT | Device Management interface UID. |
BIND_MANAGEMENT | Bind Management interface UID. |
GROUP_MANAGEMENT | Group Management interface UID. |
IDENTIFY | Identify interface UID. Not implemented |
DEVICE_INFORMATION | Device information interface UID. |
ATTRIBUTE_REPORTING | Attribute Reporting interface UID. |
BATCH_PROGRAM_MANAGEMENT | Batch Program Management interface UID. |
EVENT_SCHEDULING | Event Scheduling interface UID. Not implemented |
WEEKLY_SCHEDULING | Weekly Scheduling interface UID. Not implemented |
GROUP_TABLE | Group Table interface UID. |
TAMPER_ALERT | Tamper Alert interface UID. Not implemented |
TIME | Time interface UID. Not implemented |
POWER | Power interface UID. Not implemented |
KEEP_ALIVE | Keep Alive interface UID. Not implemented |
RSSI | RSSI interface UID. |
SUOTA | SUOTA interface UID. |
ALERT | Alert interface UID. |
ON_OFF | ON-OFF interface UID. |
LEVEL_CONTROL | Level Control interface UID. |
COLOUR_CONTROL | Colour Control interface UID. |
SIMPLE_KEYPAD | Simple Keypad interface UID. |
SIMPLE_POWER_METER | Simple Power Meter interface UID. |
SIMPLE_TEMPERATURE | Simple Temperature interface UID. |
SIMPLE_HUMIDITY | Simple Humidity interface UID. |
SIMPLE_THERMOSTAT | Simple Thermostat interface UID. |
SIMPLE_BUTTON | Simple Button interface UID. |
SIMPLE_VISUAL_EFFECTS | Simple Visual Effects interface UID. |
SIMPLE_AIR_PRESSURE | Simple Air Pressure interface UID. |
SIMPLE_LIGHT_SENSOR | Simple Light Sensor interface UID. |
RESERVED | Proprietary interfaces. |
MAX_UID | Max interface UID value. |
ANY_UID |
Definition at line 57 of file interface.h.
|
pure virtual |
Return a pointer to the interface attribute with the given uid
.
[in] | uid | identifier of the attribute in the interface. |
nullptr
otherwise. Implemented in HF::Core::AttributeReporting::IServer, HF::Interfaces::ColourControl::IServer, HF::Core::GroupManagement::IServer, HF::Core::Scheduling::IServer, HF::Core::BatchProgramManagement::IServer, HF::Interfaces::SimplePowerMeter::Server, HF::Core::GroupTable::IServer, HF::Interfaces::SimpleThermostat::Server, HF::Interfaces::SimpleButton::Server, HF::Interfaces::LevelControl::Server, HF::Interfaces::Alert::Server, HF::Core::Time::Server, HF::Interfaces::SimpleLightSensor::Server, HF::Interfaces::SimpleAirPressure::Server, HF::Interfaces::SimpleTemperature::Server, HF::Interfaces::AbstractInterface, HF::Interfaces::OnOff::Server, HF::Interfaces::SimpleHumidity::Server, and HF::Core::AbstractService.
|
pure virtual |
Return a vector containing the attribute UIDs, for the given pack ID.
[in] | pack_id | the Attribute pack ID to get the attributes UIDs for. |
Implemented in HF::Core::AttributeReporting::IServer, HF::Interfaces::ColourControl::IServer, HF::Core::GroupManagement::IServer, HF::Core::Scheduling::IServer, HF::Core::BatchProgramManagement::IServer, HF::Interfaces::SimplePowerMeter::Server, HF::Core::GroupTable::IServer, HF::Interfaces::SimpleThermostat::Server, HF::Interfaces::SimpleButton::Server, HF::Interfaces::Alert::Server, HF::Interfaces::LevelControl::Server, HF::Core::Time::Server, HF::Interfaces::SimpleLightSensor::Server, HF::Interfaces::SimpleAirPressure::Server, HF::Interfaces::SimpleTemperature::Server, HF::Interfaces::AbstractInterface, HF::Interfaces::OnOff::Server, HF::Interfaces::SimpleHumidity::Server, and HF::Core::AbstractService.
|
pure virtual |
Handle incoming messages from the network.
[in] | packet | the packet receive from the network. |
[in] | payload | the byte array containing the data received from the network. |
[in] | offset | the offset the payload start at in the byte array. |
Implemented in HF::Core::GroupManagement::IServer, HF::Units::Unit< HF::Profiles::SimpleOnOffSwitch >, HF::Units::Unit< HF::Profiles::SimpleLight >, and HF::Interfaces::AbstractInterface.
Referenced by HF::Interfaces::Container< HF::Units::Unit< HF::Profiles::SimpleOnOffSwitch, ITF... >, Proxy< ITF, HF::Units::Unit< HF::Profiles::SimpleOnOffSwitch, ITF... > >... >::handle(), and HF::Unit0< IUnit0, ITF... >::handle().
|
pure virtual |
Handle periodic processing.
[in] | time | current system clock value in seconds. |
Implemented in HF::Core::AttributeReporting::Server, HF::Interfaces::SimplePowerMeter::Server, HF::Units::Unit< HF::Profiles::SimpleOnOffSwitch >, HF::Units::Unit< HF::Profiles::SimpleLight >, and HF::Interfaces::AbstractInterface.
|
pure virtual |
Return the Interface::Role this interface implements.
Implemented in HF::Core::AttributeReporting::IServer, HF::Core::AttributeReporting::Client, HF::Interfaces::InterfaceRole< SimplePowerMeter::Base, HF::Interface::CLIENT_ROLE >, HF::Interfaces::InterfaceRole< SimpleThermostat::Base, HF::Interface::SERVER_ROLE >, HF::Interfaces::InterfaceRole< SimpleLightSensor::Base, HF::Interface::CLIENT_ROLE >, HF::Interfaces::InterfaceRole< OnOff::Base, HF::Interface::CLIENT_ROLE >, HF::Interfaces::InterfaceRole< SimpleButton::Base, HF::Interface::CLIENT_ROLE >, HF::Interfaces::InterfaceRole< SimpleHumidity::Base, HF::Interface::CLIENT_ROLE >, HF::Interfaces::InterfaceRole< SimplePowerMeter::Base, HF::Interface::SERVER_ROLE >, HF::Interfaces::InterfaceRole< Interfaces::AbstractInterface, HF::Interface::CLIENT_ROLE >, HF::Interfaces::InterfaceRole< SimpleKeypad::Base, HF::Interface::SERVER_ROLE >, HF::Interfaces::InterfaceRole< SimpleHumidity::Base, HF::Interface::SERVER_ROLE >, HF::Interfaces::InterfaceRole< Alert::Base, HF::Interface::CLIENT_ROLE >, HF::Interfaces::InterfaceRole< SimpleTemperature::Base, HF::Interface::SERVER_ROLE >, HF::Interfaces::InterfaceRole< SimpleAirPressure::Base, HF::Interface::SERVER_ROLE >, HF::Interfaces::InterfaceRole< SimpleTemperature::Base, HF::Interface::CLIENT_ROLE >, HF::Interfaces::InterfaceRole< SimpleVisualEffects::Base, HF::Interface::CLIENT_ROLE >, HF::Interfaces::InterfaceRole< SimpleThermostat::Base, HF::Interface::CLIENT_ROLE >, HF::Interfaces::InterfaceRole< ColourControl::Base, HF::Interface::SERVER_ROLE >, HF::Interfaces::InterfaceRole< LevelControl::Base, HF::Interface::CLIENT_ROLE >, HF::Interfaces::InterfaceRole< SimpleButton::Base, HF::Interface::SERVER_ROLE >, HF::Interfaces::InterfaceRole< Alert::Base, HF::Interface::SERVER_ROLE >, HF::Interfaces::InterfaceRole< SimpleKeypad::Base, HF::Interface::CLIENT_ROLE >, HF::Interfaces::InterfaceRole< SimpleAirPressure::Base, HF::Interface::CLIENT_ROLE >, HF::Interfaces::InterfaceRole< OnOff::Base, HF::Interface::SERVER_ROLE >, HF::Interfaces::InterfaceRole< SimpleVisualEffects::Base, HF::Interface::SERVER_ROLE >, HF::Interfaces::InterfaceRole< SimpleLightSensor::Base, HF::Interface::SERVER_ROLE >, HF::Interfaces::InterfaceRole< LevelControl::Base, HF::Interface::SERVER_ROLE >, HF::Interfaces::InterfaceRole< ColourControl::Base, HF::Interface::CLIENT_ROLE >, HF::Core::ServiceRole< SUOTA::Base, HF::Interface::SERVER_ROLE >, HF::Core::ServiceRole< Time::Base, HF::Interface::SERVER_ROLE >, HF::Core::ServiceRole< GroupManagement::Base, HF::Interface::SERVER_ROLE >, HF::Core::ServiceRole< SUOTA::Base, HF::Interface::CLIENT_ROLE >, HF::Core::ServiceRole< GroupTable::Base, HF::Interface::CLIENT_ROLE >, HF::Core::ServiceRole< Time::Base, HF::Interface::CLIENT_ROLE >, HF::Core::ServiceRole< BatchProgramManagement::Base, HF::Interface::CLIENT_ROLE >, HF::Core::ServiceRole< BatchProgramManagement::Base, HF::Interface::SERVER_ROLE >, HF::Core::ServiceRole< GroupManagement::Base, HF::Interface::CLIENT_ROLE >, HF::Core::ServiceRole< GroupTable::Base, HF::Interface::SERVER_ROLE >, and HF::Core::ServiceRole< AbstractService, HF::Interface::SERVER_ROLE >.
|
pure virtual |
This method returns the interface UID.
Subclasses MUST override this method to provide a valid value for the interface being implemented.
This method returns a uint16_t
and not a Interface::UID, to provide support for proprietary interfaces.
Implemented in HF::Core::AttributeReporting::IServer, HF::Interfaces::Interface< HF::Interface::SIMPLE_BUTTON >, HF::Interfaces::Interface< HF::Interface::SIMPLE_TEMPERATURE >, HF::Interfaces::Interface< HF::Interface::SIMPLE_AIR_PRESSURE >, HF::Interfaces::Interface< HF::Interface::ON_OFF >, HF::Interfaces::Interface< HF::Interface::COLOUR_CONTROL >, HF::Interfaces::Interface< HF::Interface::SIMPLE_THERMOSTAT >, HF::Interfaces::Interface< HF::Interface::SIMPLE_LIGHT_SENSOR >, HF::Interfaces::Interface< HF::Interface::SIMPLE_POWER_METER >, HF::Interfaces::Interface< HF::Interface::LEVEL_CONTROL >, HF::Interfaces::Interface< HF::Interface::RSSI >, HF::Interfaces::Interface< HF::Interface::ALERT >, HF::Interfaces::Interface< HF::Interface::SIMPLE_VISUAL_EFFECTS >, HF::Interfaces::Interface< HF::Interface::SIMPLE_HUMIDITY >, HF::Interfaces::Interface< HF::Interface::SIMPLE_KEYPAD >, HF::Interfaces::Interface< HF::Interface::ATTRIBUTE_REPORTING >, HF::Units::Unit< HF::Profiles::SimpleOnOffSwitch >, HF::Units::Unit< HF::Profiles::SimpleLight >, HF::Core::Service< HF::Interface::SUOTA >, HF::Core::Service< HF::Interface::GROUP_MANAGEMENT >, HF::Core::Service< HF::Interface::BATCH_PROGRAM_MANAGEMENT >, HF::Core::Service< HF::Interface::DEVICE_MANAGEMENT >, HF::Core::Service< HF::Interface::BIND_MANAGEMENT >, HF::Core::Service< HF::Interface::GROUP_TABLE >, HF::Core::Service< HF::Interface::DEVICE_INFORMATION >, and HF::Core::Service< HF::Interface::TIME >.
Referenced by HF::Core::AbstractService::attribute(), HF::Interfaces::AbstractInterface::attribute(), HF::Profiles::Profile< SIMPLE_LIGHT_SENSOR, Interfaces::SimpleLightSensor::Server >::attributes(), and HF::Interfaces::Container< HF::Units::Unit< HF::Profiles::SimpleOnOffSwitch, ITF... >, Proxy< ITF, HF::Units::Unit< HF::Profiles::SimpleOnOffSwitch, ITF... > >... >::interfaces().