187 lines
4.9 KiB
C
187 lines
4.9 KiB
C
#ifndef HTPT_TASK_H_
|
|
#define HTPT_TASK_H_
|
|
|
|
/**
|
|
****************************************************************************************
|
|
* @addtogroup HTPTTASK Task
|
|
* @ingroup HTPT
|
|
* @brief Health Thermometer Profile Thermometer Task
|
|
*
|
|
* The HTPTTASK is responsible for handling the messages coming in and out of the
|
|
* @ref HTPT reporter block of the BLE Host.
|
|
*
|
|
* @{
|
|
****************************************************************************************
|
|
*/
|
|
|
|
/*
|
|
* INCLUDE FILES
|
|
****************************************************************************************
|
|
*/
|
|
|
|
#include "rwip_task.h" // Task definitions
|
|
#include "htp_common.h"
|
|
/*
|
|
* DEFINES
|
|
****************************************************************************************
|
|
*/
|
|
|
|
/// Messages for Health Thermometer Profile Thermometer
|
|
enum htpt_msg_id
|
|
{
|
|
/// Start the Health Thermometer Profile Thermometer profile - at connection
|
|
HTPT_ENABLE_REQ = TASK_FIRST_MSG(TASK_ID_HTPT),
|
|
/// Enable confirmation
|
|
HTPT_ENABLE_RSP,
|
|
|
|
/// Send temperature value from APP
|
|
HTPT_TEMP_SEND_REQ,
|
|
/// Send temperature response
|
|
HTPT_TEMP_SEND_RSP,
|
|
|
|
/// Indicate Measurement Interval
|
|
HTPT_MEAS_INTV_UPD_REQ,
|
|
/// Send Measurement Interval response
|
|
HTPT_MEAS_INTV_UPD_RSP,
|
|
|
|
/// Inform APP of new measurement interval value requested by a peer device
|
|
HTPT_MEAS_INTV_CHG_REQ_IND,
|
|
/// APP Confirm message of new measurement interval value requested by a peer device
|
|
/// If accepted, it triggers indication on measurement interval attribute
|
|
HTPT_MEAS_INTV_CHG_CFM,
|
|
|
|
/// Inform APP that Indication Configuration has been changed - use to update bond data
|
|
HTPT_CFG_INDNTF_IND,
|
|
};
|
|
|
|
|
|
/// Database Feature Configuration Flags
|
|
enum htpt_features
|
|
{
|
|
/// Indicate if Temperature Type Char. is supported
|
|
HTPT_TEMP_TYPE_CHAR_SUP = 0x01,
|
|
/// Indicate if Intermediate Temperature Char. is supported
|
|
HTPT_INTERM_TEMP_CHAR_SUP = 0x02,
|
|
/// Indicate if Measurement Interval Char. is supported
|
|
HTPT_MEAS_INTV_CHAR_SUP = 0x04,
|
|
/// Indicate if Measurement Interval Char. supports indications
|
|
HTPT_MEAS_INTV_IND_SUP = 0x08,
|
|
/// Indicate if Measurement Interval Char. is writable
|
|
HTPT_MEAS_INTV_WR_SUP = 0x10,
|
|
|
|
/// All Features supported
|
|
HTPT_ALL_FEAT_SUP = 0x1F,
|
|
};
|
|
|
|
|
|
/// Notification and indication configuration
|
|
enum htpt_ntf_ind_cfg
|
|
{
|
|
/// Stable measurement interval indication enabled
|
|
HTPT_CFG_STABLE_MEAS_IND = (1 << 0),
|
|
/// Intermediate measurement notification enabled
|
|
HTPT_CFG_INTERM_MEAS_NTF = (1 << 1),
|
|
/// Measurement interval indication
|
|
HTPT_CFG_MEAS_INTV_IND = (1 << 2),
|
|
};
|
|
|
|
|
|
/*
|
|
* API MESSAGES STRUCTURES
|
|
****************************************************************************************
|
|
*/
|
|
/// Parameters of the Health thermometer service database
|
|
struct htpt_db_cfg
|
|
{
|
|
/// Health thermometer Feature (@see enum htpt_features)
|
|
uint8_t features;
|
|
/// Temperature Type Value
|
|
uint8_t temp_type;
|
|
|
|
/// Measurement Interval Valid Range - Minimal Value
|
|
uint16_t valid_range_min;
|
|
/// Measurement Interval Valid Range - Maximal Value
|
|
uint16_t valid_range_max;
|
|
/// Measurement interval (latest known interval range)
|
|
uint16_t meas_intv;
|
|
};
|
|
|
|
/// Parameters of the @ref HTPT_ENABLE_REQ message
|
|
struct htpt_enable_req
|
|
{
|
|
/// Connection index
|
|
uint8_t conidx;
|
|
/// Notification configuration (Bond Data to restore: @see enum htpt_ntf_ind_cfg)
|
|
uint8_t ntf_ind_cfg;
|
|
};
|
|
|
|
/// Parameters of the @ref HTPT_ENABLE_RSP message
|
|
struct htpt_enable_rsp
|
|
{
|
|
/// Connection index
|
|
uint8_t conidx;
|
|
/// Status of enable request
|
|
uint8_t status;
|
|
};
|
|
|
|
/// Parameters of the @ref HTPT_TEMP_SEND_REQ message
|
|
struct htpt_temp_send_req
|
|
{
|
|
/// Temperature Measurement
|
|
struct htp_temp_meas temp_meas;
|
|
/// Stable or intermediary type of temperature (True stable meas, else false)
|
|
bool stable_meas;
|
|
};
|
|
|
|
/// Parameters of the @ref HTPT_TEMP_SEND_RSP message
|
|
struct htpt_temp_send_rsp
|
|
{
|
|
/// Status
|
|
uint8_t status;
|
|
};
|
|
|
|
/// Parameters of the @ref HTPT_MEAS_INTV_UPD_REQ message
|
|
struct htpt_meas_intv_upd_req
|
|
{
|
|
/// Measurement Interval value
|
|
uint16_t meas_intv;
|
|
};
|
|
|
|
/// Parameters of the @ref HTPT_MEAS_INTV_UPD_RSP message
|
|
struct htpt_meas_intv_upd_rsp
|
|
{
|
|
/// status
|
|
uint8_t status;
|
|
};
|
|
|
|
|
|
/// Parameters of the @ref HTPT_MEAS_INTV_CHG_REQ_IND message
|
|
struct htpt_meas_intv_chg_req_ind
|
|
{
|
|
/// Connection index
|
|
uint8_t conidx;
|
|
/// new measurement interval
|
|
uint16_t intv;
|
|
};
|
|
|
|
/// Parameters of the @ref HTPT_MEAS_INTV_CHG_CFM message
|
|
struct htpt_meas_intv_chg_cfm
|
|
{
|
|
/// Connection index
|
|
uint8_t conidx;
|
|
/// status of the request
|
|
uint8_t status;
|
|
};
|
|
|
|
/// Parameters of the @ref HTPT_CFG_INDNTF_IND message
|
|
struct htpt_cfg_indntf_ind
|
|
{
|
|
/// connection index
|
|
uint8_t conidx;
|
|
/// Notification Configuration (@see enum htpt_ntf_ind_cfg)
|
|
uint8_t ntf_ind_cfg;
|
|
};
|
|
|
|
|
|
/// @} HTPTTASK
|
|
#endif // HTPT_TASK_H_
|