334 lines
9.2 KiB
C
334 lines
9.2 KiB
C
|
/**
|
||
|
****************************************************************************************
|
||
|
*
|
||
|
* @file mm_def.h
|
||
|
*
|
||
|
* @brief Header file for Mesh Model Definitions
|
||
|
*
|
||
|
****************************************************************************************
|
||
|
*/
|
||
|
|
||
|
#ifndef MM_DEF_H_
|
||
|
#define MM_DEF_H_
|
||
|
|
||
|
/**
|
||
|
****************************************************************************************
|
||
|
* @defgroup MM_DEFINES Mesh Model Definitions
|
||
|
* @ingroup MESH_MDL
|
||
|
* @brief Mesh Model Defines
|
||
|
* @{
|
||
|
****************************************************************************************
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* INCLUDE FILES
|
||
|
****************************************************************************************
|
||
|
*/
|
||
|
|
||
|
#include <stdint.h>
|
||
|
|
||
|
|
||
|
/*
|
||
|
* DEFINES
|
||
|
****************************************************************************************
|
||
|
*/
|
||
|
|
||
|
/// Maximum number of steps for transition time value
|
||
|
#define MM_TRANS_TIME_STEPS_MAX (0x3E)
|
||
|
/// Transition time not provided
|
||
|
#define MM_TRANS_TIME_UNKNOWN (0x3F)
|
||
|
|
||
|
|
||
|
/*
|
||
|
* ENUMERATIONS
|
||
|
****************************************************************************************
|
||
|
*/
|
||
|
|
||
|
/// State identifier values for MESH_MDL_IND message
|
||
|
enum mm_state_id
|
||
|
{
|
||
|
/// Generic OnOff state
|
||
|
MM_STATE_GEN_ONOFF = 0,
|
||
|
/// Generic Level state
|
||
|
MM_STATE_GEN_LVL,
|
||
|
/// Generic Default Transition Time state
|
||
|
MM_STATE_GEN_DTT,
|
||
|
/// Generic Power Actual state
|
||
|
MM_STATE_GEN_POWER_ACTUAL,
|
||
|
/// Generic Power Last state
|
||
|
MM_STATE_GEN_POWER_LAST,
|
||
|
/// Generic Power Default state
|
||
|
MM_STATE_GEN_POWER_DFLT,
|
||
|
/// Generic Power Range state
|
||
|
MM_STATE_GEN_POWER_RANGE,
|
||
|
/// Generic OnPowerUp state
|
||
|
MM_STATE_GEN_ONPOWERUP,
|
||
|
|
||
|
/// Light Lightness
|
||
|
MM_STATE_LIGHT_LN = 50,
|
||
|
/// Light Lightness Linear
|
||
|
MM_STATE_LIGHT_LN_LIN,
|
||
|
/// Light Lightness Last
|
||
|
MM_STATE_LIGHT_LN_LAST,
|
||
|
/// Light Lightness Default
|
||
|
MM_STATE_LIGHT_LN_DFLT,
|
||
|
/// Light Lightness Range
|
||
|
MM_STATE_LIGHT_LN_RANGE,
|
||
|
/// Light Lightness Range Min
|
||
|
MM_STATE_LIGHT_LN_RANGE_MIN,
|
||
|
/// Light Lightness Range Max
|
||
|
MM_STATE_LIGHT_LN_RANGE_MAX,
|
||
|
|
||
|
/// Light CTL Lightness
|
||
|
MM_STATE_LIGHT_CTL_LN = 100,
|
||
|
/// Light CTL Temperature
|
||
|
MM_STATE_LIGHT_CTL_TEMP,
|
||
|
/// Light CTL Delta UV
|
||
|
MM_STATE_LIGHT_CTL_DELTA_UV,
|
||
|
/// Light CTL Temperature Default
|
||
|
MM_STATE_LIGHT_CTL_TEMP_DFLT,
|
||
|
/// Light CTL Temperature Range
|
||
|
MM_STATE_LIGHT_CTL_TEMP_RANGE,
|
||
|
/// Light CTL Delta UV Default
|
||
|
MM_STATE_LIGHT_CTL_DELTA_UV_DFLT,
|
||
|
|
||
|
/// Light HSL Lightness
|
||
|
MM_STATE_LIGHT_HSL_LN = 150,
|
||
|
/// Light HSL Hue
|
||
|
MM_STATE_LIGHT_HSL_HUE,
|
||
|
/// Light HSL Saturation
|
||
|
MM_STATE_LIGHT_HSL_SAT,
|
||
|
/// Light HSL Target
|
||
|
MM_STATE_LIGHT_HSL_TGT,
|
||
|
/// Light HSL Default (Lightness + Hue + Saturation)
|
||
|
MM_STATE_LIGHT_HSL_DFLT,
|
||
|
/// Light HSL Lightness Default
|
||
|
MM_STATE_LIGHT_HSL_DFLT_LN,
|
||
|
/// Light HSL Hue Default
|
||
|
MM_STATE_LIGHT_HSL_DFLT_HUE,
|
||
|
/// Light HSL Saturation Default
|
||
|
MM_STATE_LIGHT_HSL_DFLT_SAT,
|
||
|
/// Light HSL Hue Range
|
||
|
MM_STATE_LIGHT_HSL_RANGE_HUE,
|
||
|
/// Light HSL Saturation Range
|
||
|
MM_STATE_LIGHT_HSL_RANGE_SAT,
|
||
|
|
||
|
/// Light xyL Lightness
|
||
|
MM_STATE_LIGHT_XYL_LN = 200,
|
||
|
/// Light xyL x and y
|
||
|
MM_STATE_LIGHT_XYL_XY,
|
||
|
/// Light xyL Lightness Target
|
||
|
MM_STATE_LIGHT_XYL_LN_TGT,
|
||
|
/// Light xyL x and y Target
|
||
|
MM_STATE_LIGHT_XYL_XY_TGT,
|
||
|
/// Light xyL Lightness Default
|
||
|
MM_STATE_LIGHT_XYL_LN_DFLT,
|
||
|
/// Light xyL x and y Default
|
||
|
MM_STATE_LIGHT_XYL_XY_DFLT,
|
||
|
/// Light xyL x and y Range
|
||
|
MM_STATE_LIGHT_XYL_XY_RANGE
|
||
|
|
||
|
/// User add Vendor States, more...
|
||
|
|
||
|
};
|
||
|
|
||
|
/// Type of state that can be set
|
||
|
enum mm_state_type
|
||
|
{
|
||
|
/// Current state value
|
||
|
MM_STATE_TYPE_CURRENT = 0,
|
||
|
/// Targeted state value
|
||
|
MM_STATE_TYPE_TARGET,
|
||
|
/// Targeted state value during move transition
|
||
|
MM_STATE_TYPE_TARGET_MOVE,
|
||
|
};
|
||
|
|
||
|
/// Transition type
|
||
|
enum mm_trans_type
|
||
|
{
|
||
|
/// Classic Set
|
||
|
MM_TRANS_TYPE_CLASSIC = 0,
|
||
|
/// Delta Set
|
||
|
MM_TRANS_TYPE_DELTA,
|
||
|
/// Move Set
|
||
|
MM_TRANS_TYPE_MOVE,
|
||
|
/// No transition
|
||
|
MM_TRANS_TYPE_NONE,
|
||
|
};
|
||
|
|
||
|
/// Transition time step resolution values
|
||
|
enum mm_trans_time_step
|
||
|
{
|
||
|
/// Resolution is 100 milliseconds
|
||
|
MM_TRANS_TIME_STEP_100MS = 0,
|
||
|
/// Resolution is 1 second
|
||
|
MM_TRANS_TIME_STEP_1S,
|
||
|
/// Resolution is 10 seconds
|
||
|
MM_TRANS_TIME_STEP_10S,
|
||
|
/// Resolution is 10 minutes
|
||
|
MM_TRANS_TIME_STEP_10M
|
||
|
};
|
||
|
|
||
|
/// Transition time format bit-field
|
||
|
/// 7 6 0
|
||
|
/// +------------+-------------------+
|
||
|
/// | Resolution | Number of steps |
|
||
|
/// +------------+-------------------+
|
||
|
enum mm_trans_time_pos
|
||
|
{
|
||
|
/// Number of steps
|
||
|
MM_TRANS_TIME_STEP_NB_LSB = 0,
|
||
|
MM_TRANS_TIME_STEP_NB_MASK = 0x3F,
|
||
|
|
||
|
/// Resolution (@see enum mm_trans_time_step)
|
||
|
MM_TRANS_TIME_RESOL_LSB = 6,
|
||
|
MM_TRANS_TIME_RESOL_MASK = 0xC0,
|
||
|
};
|
||
|
|
||
|
/// Transition information bit-field
|
||
|
/// 16 8 7 6 2 0
|
||
|
/// +-----+-----+------+-----+------+
|
||
|
/// | TID | Ack | Long | RFU | Type |
|
||
|
/// +-----+-----+------+-----+------+
|
||
|
enum mm_trans_info
|
||
|
{
|
||
|
/// Type (value depends on model for which transition is required)
|
||
|
/// @see enum mm_trans_type
|
||
|
MM_TRANS_INFO_TYPE_LSB = 0,
|
||
|
MM_TRANS_INFO_TYPE_MASK = 0x0003,
|
||
|
|
||
|
/// Include transition time and delay
|
||
|
MM_TRANS_INFO_LONG_POS = 6,
|
||
|
MM_TRANS_INFO_LONG_BIT = 0x0040,
|
||
|
|
||
|
/// Set or Set Unacknowledged
|
||
|
MM_TRANS_INFO_ACK_POS = 7,
|
||
|
MM_TRANS_INFO_ACK_BIT = 0x0080,
|
||
|
|
||
|
/// TID
|
||
|
MM_TRANS_INFO_TID_LSB = 8,
|
||
|
MM_TRANS_INFO_TID_MASK = 0xFF00,
|
||
|
};
|
||
|
|
||
|
/// Set information bit-field
|
||
|
/// 8 7 0
|
||
|
/// +-----+------+
|
||
|
/// | Ack | Type |
|
||
|
/// +-----+------+
|
||
|
enum mm_set_info
|
||
|
{
|
||
|
/// Type (value depends on model for which operation is required)
|
||
|
MM_SET_INFO_TYPE_LSB = 0,
|
||
|
MM_SET_INFO_TYPE_MASK = 0x7F,
|
||
|
|
||
|
/// Set or Set Unacknowledged
|
||
|
MM_SET_INFO_ACK_POS = 7,
|
||
|
MM_SET_INFO_ACK_BIT = 0x80,
|
||
|
};
|
||
|
|
||
|
/// Status of Set command
|
||
|
enum mm_set_status
|
||
|
{
|
||
|
/// Command successfully processed
|
||
|
MM_STATUS_SUCCESS = 0,
|
||
|
/// The provided value for Range Min cannot be set
|
||
|
MM_STATUS_ERROR_RANGE_MIN,
|
||
|
/// The provided value for Range Max cannot be set
|
||
|
MM_STATUS_ERROR_RANGE_MAX,
|
||
|
};
|
||
|
|
||
|
/// Group events for communication between Binding Manager and a model
|
||
|
enum mm_group_event
|
||
|
{
|
||
|
/// New transition has been rejected by the main model, sent to bound model
|
||
|
MM_GRP_EVENT_TRANS_REJECTED = 0,
|
||
|
/// Delay period has expired, sent to main model
|
||
|
MM_GRP_EVENT_TRANS_DELAY_EXPIRED,
|
||
|
/// New Transition has been started by the main model
|
||
|
MM_GRP_EVENT_TRANS_STARTED,
|
||
|
/// Immediate transmission has been started by the main model
|
||
|
MM_GRP_EVENT_TRANS_IMMEDIATE,
|
||
|
/// Transition stopped after transition time
|
||
|
MM_GRP_EVENT_TRANS_END,
|
||
|
/// Transition aborted
|
||
|
MM_GRP_EVENT_TRANS_ABORTED,
|
||
|
|
||
|
/// All bound models have been registered
|
||
|
MM_GRP_EVENT_GROUP_FULL,
|
||
|
};
|
||
|
|
||
|
/// Model register configuration
|
||
|
/// 7 1 0
|
||
|
/// +-----+------------+
|
||
|
/// | RFU | Publi Auth |
|
||
|
/// +-----+------------+
|
||
|
enum mm_register_config
|
||
|
{
|
||
|
/// Indicate if sending of publications is authorized or not
|
||
|
MM_CFG_PUBLI_AUTH_POS = 0,
|
||
|
MM_CFG_PUBLI_AUTH_BIT = 0x01,
|
||
|
};
|
||
|
|
||
|
/// Model role
|
||
|
enum mm_role
|
||
|
{
|
||
|
/// Client role
|
||
|
MM_ROLE_CLI = 0x00,
|
||
|
/// Server role
|
||
|
MM_ROLE_SRV = 0x01,
|
||
|
/// Server role with Publication
|
||
|
MM_ROLE_SRV_PUBLI = 0x03,
|
||
|
};
|
||
|
|
||
|
/// Information bit field for model environment - add Bit[7:4]
|
||
|
/// 7 6 4 3 2 1 0
|
||
|
/// +----------+----------+-------+------+-------+------+
|
||
|
/// | Wait App | On Publi | Publi | Main | Role |
|
||
|
/// +----------+----------+-------+------+-------+------+
|
||
|
enum mm_info
|
||
|
{
|
||
|
/// Model Role @see mm_role
|
||
|
MM_INFO_ROLE_LSB = 0,
|
||
|
MM_INFO_ROLE_MASK = 0x03,
|
||
|
|
||
|
/// Model is main model of its group - set by Binding Manager
|
||
|
MM_INFO_MAIN_POS = 2,
|
||
|
MM_INFO_MAIN_BIT = (1 << MM_INFO_MAIN_POS),
|
||
|
|
||
|
/// Publication are enabled for the model
|
||
|
MM_INFO_PUBLI_POS = 3,
|
||
|
MM_INFO_PUBLI_BIT = (1 << MM_INFO_PUBLI_POS),
|
||
|
|
||
|
/// Publication are ongoing @see mm_gens_loc_info mm_gens_bat_info
|
||
|
MM_INFO_ONPUBLI_LSB = 4,
|
||
|
MM_INFO_ONPUBLI_MASK = 0x30,
|
||
|
/// Wait for confirmation from application
|
||
|
MM_INFO_WAITAPP_LSB = 6,
|
||
|
MM_INFO_WAITAPP_MASK = 0xC0,
|
||
|
};
|
||
|
|
||
|
/// Routing Buffer information bitfield
|
||
|
/// 15 3 2 1 0
|
||
|
/// +-----+---------+-------+-------+
|
||
|
/// | RFU | PUBLISH | RELAY | RX/TX |
|
||
|
/// +-----+---------+-------+-------+
|
||
|
enum mm_route_info
|
||
|
{
|
||
|
/// RX or TX buffer (1 when RX)
|
||
|
MM_ROUTE_INFO_RX_POS = 0,
|
||
|
MM_ROUTE_INFO_RX_BIT = 0x01,
|
||
|
|
||
|
/// Has been relayed (RX) or can be relayed (TX, only when response is sent)
|
||
|
MM_ROUTE_INFO_RELAY_POS = 1,
|
||
|
MM_ROUTE_INFO_RELAY_BIT = 0x02,
|
||
|
|
||
|
/// Publication or response (for TX)
|
||
|
MM_ROUTE_INFO_PUBLISH_POS = 2,
|
||
|
MM_ROUTE_INFO_PUBLISH_BIT = 0x04,
|
||
|
};
|
||
|
|
||
|
|
||
|
/// @} end of group
|
||
|
|
||
|
#endif /* MM_DEF_H_ */
|