pinebuds/services/ble_profiles/glp/glpc/api/glpc_task.h
2022-08-15 17:20:27 +08:00

196 lines
4.5 KiB
C

#ifndef _GLPC_TASK_H_
#define _GLPC_TASK_H_
/**
****************************************************************************************
* @addtogroup GLPCTASK Glucose Profile Collector Task
* @ingroup GLPC
* @brief Glucose Profile Collector Task
*
* The GLPCTASK is responsible for handling the messages coming in and out of the
* @ref GLPC monitor block of the BLE Host.
*
* @{
****************************************************************************************
*/
/*
* INCLUDE FILES
****************************************************************************************
*/
#include "rwip_task.h" // Task definitions
#include "prf_types.h"
#include "glp_common.h"
/*
* DEFINES
****************************************************************************************
*/
/*
* TYPE DEFINITIONS
****************************************************************************************
*/
enum glpc_msg_id
{
/// Start the Glucose Profile - at connection
GLPC_ENABLE_REQ = TASK_FIRST_MSG(TASK_ID_GLPC),
/// Confirm that cfg connection has finished with discovery results, or that normal cnx started
GLPC_ENABLE_RSP,
/// Register to Glucose sensor notifications - request
GLPC_REGISTER_REQ,
/// Register to Glucose sensor notifications - confirmation
GLPC_REGISTER_RSP,
/// Read Glucose sensor features - request
GLPC_READ_FEATURES_REQ,
/// Read Glucose sensor features - response
GLPC_READ_FEATURES_RSP,
/// Record Access Control Point - Request
GLPC_RACP_REQ,
/// Record Access Control Point - Resp
GLPC_RACP_RSP,
/// Glucose measurement value received
GLPC_MEAS_IND,
/// Glucose measurement context received
GLPC_MEAS_CTX_IND,
/// Glucose Record Access Control Point Request Timeout
GLPC_RACP_REQ_TIMEOUT,
};
/// Characteristics
enum
{
/// Glucose Measurement
GLPC_CHAR_MEAS,
/// Glucose Measurement Context
GLPC_CHAR_MEAS_CTX,
/// Glucose Sensor Feature
GLPC_CHAR_FEATURE,
/// Record Access control point
GLPC_CHAR_RACP,
GLPC_CHAR_MAX,
};
/// Characteristic descriptors
enum
{
/// Glucose Measurement client config
GLPC_DESC_MEAS_CLI_CFG,
/// Glucose Measurement context client config
GLPC_DESC_MEAS_CTX_CLI_CFG,
/// Record Access control point client config
GLPC_DESC_RACP_CLI_CFG,
GLPC_DESC_MAX,
};
///Structure containing the characteristics handles, value handles and descriptors
struct gls_content
{
/// service info
struct prf_svc svc;
/// characteristic info:
/// - Glucose Measurement
/// - Glucose Measurement Context
/// - Glucose Feature
/// - Record Access Control Point
struct prf_char_inf chars[GLPC_CHAR_MAX];
/// Descriptor handles:info:
/// - Glucose Measurement client cfg
/// - Glucose Measurement Context client cfg
/// - Record Access Control Point client cfg
struct prf_char_desc_inf descs[GLPC_DESC_MAX];
};
/// Parameters of the @ref GLPC_ENABLE_REQ message
struct glpc_enable_req
{
/// Connection type
uint8_t con_type;
/// Existing handle values gls
struct gls_content gls;
};
/// Parameters of the @ref GLPC_ENABLE_RSP message
struct glpc_enable_rsp
{
/// status
uint8_t status;
/// Existing handle values gls
struct gls_content gls;
};
/// Parameters of the @ref GLPC_REGISTER_REQ message
struct glpc_register_req
{
/// Register or not Glucose measurement context notifications
bool meas_ctx_en;
};
/// Parameters of the @ref GLPC_REGISTER_RSP message
struct glpc_register_rsp
{
/// Status
uint8_t status;
};
/// Parameters of the @ref GLPC_READ_FEATURES_RSP message
struct glpc_read_features_rsp
{
/// Glucose sensor features
uint16_t features;
/// Status
uint8_t status;
};
/// Parameters of the @ref GLPC_RACP_REQ message
struct glpc_racp_req
{
/// Record Access Control Point Request
struct glp_racp_req racp_req;
};
/// Parameters of the @ref GLPC_RACP_RSP message
struct glpc_racp_rsp
{
///record access control response
struct glp_racp_rsp racp_rsp;
/// Status
uint8_t status;
};
/// Parameters of the @ref GLPC_MEAS_IND message
struct glpc_meas_ind
{
/// Sequence Number
uint16_t seq_num;
/// Glucose measurement
struct glp_meas meas_val;
};
/// Parameters of the @ref GLPC_MEAS_CTX_IND message
struct glpc_meas_ctx_ind
{
/// Sequence Number
uint16_t seq_num;
/// Glucose measurement
struct glp_meas_ctx ctx;
};
/// @} GLPCTASK
#endif /* _GLPC_TASK_H_ */