156 lines
4.9 KiB
C
156 lines
4.9 KiB
C
/**
|
|
*********************************************************************************************************
|
|
* Copyright(c) 2016, Realtek Semiconductor Corporation. All rights reserved.
|
|
**********************************************************************************************************
|
|
* @file gap_credit_based_conn.h
|
|
* @brief header file of LE Credit-Based Connection message handle.
|
|
* @details none.
|
|
* @author Tifnan
|
|
* @date 2016-03-16
|
|
* @version v0.1
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#ifndef _LE_CREDIT_BASED_CONN_H_
|
|
#define _LE_CREDIT_BASED_CONN_H_
|
|
|
|
#include "upperstack_config.h"
|
|
#include "gap_le.h"
|
|
#include "gap.h"
|
|
|
|
#if F_BT_LE_4_1_COC_SUPPORT
|
|
|
|
/** @addtogroup GAP GAP Module
|
|
* @{
|
|
*/
|
|
|
|
/** @addtogroup GAP_LE GAP LE Module
|
|
* @{
|
|
*/
|
|
|
|
/** @addtogroup GAP_LE_CREDIT_BASED_CONN GAP LE Credit Based Connection Module
|
|
* @{
|
|
*/
|
|
typedef enum
|
|
{
|
|
GAP_CHANN_STATE_DISCONNECTED, //!< Disconnected.
|
|
GAP_CHANN_STATE_CONNECTING, //!< Connecting.
|
|
GAP_CHANN_STATE_CONNECTED, //!< Connected.
|
|
GAP_CHANN_STATE_DISCONNECTING //!< Disconnecting.
|
|
} T_GAP_CHANN_STATE;
|
|
|
|
typedef enum
|
|
{
|
|
COC_PARAM_CREDITS_THRESHOLD = 0x400,
|
|
COC_PARAM_LOCAL_MTU = 0x401,
|
|
} T_LE_COC_PARAM_TYPE;
|
|
|
|
typedef enum
|
|
{
|
|
COC_CHANN_PARAM_CUR_CREDITS = 0x410,
|
|
COC_CHANN_PARAM_MAX_CREDITS = 0x411,
|
|
COC_CHANN_PARAM_MTU = 0x412,
|
|
} T_LE_COC_CHANN_PARAM_TYPE;
|
|
|
|
/** @brief Definition of LE security requirement*/
|
|
typedef enum
|
|
{
|
|
LE_COC_SECURITY_NONE, /**< Security None */
|
|
LE_COC_SECURITY_UNAUTHEN_ENCRYT, /**< Security unauthenticated encryption */
|
|
LE_COC_SECURITY_AUTHEN_ENCRYT, /**< Security authenticated encryption */
|
|
LE_COC_SECURITY_UNAUTHEN_DATA_SIGN,/**< Security unauthenticated data signed */
|
|
LE_COC_SECURITY_AUTHEN_DATA_SIGN, /**< Security authenticated data signed */
|
|
LE_COC_SECURITY_AUTHOR /**< Security authorized */
|
|
} T_LE_COC_SECURITY_MODE;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t conn_id; /**< local link ID. */
|
|
uint16_t cid; /**< channel ID */
|
|
uint16_t value_len; /**< value length */
|
|
uint8_t *p_data;
|
|
} T_LE_COC_RECEIVE_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t conn_id; /**< local link ID. */
|
|
uint16_t cid; /**< channel ID */
|
|
uint16_t cause; /**< value length */
|
|
uint8_t credit;
|
|
} T_LE_COC_SEND_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t conn_id;
|
|
uint16_t cid;
|
|
T_GAP_CHANN_STATE conn_state;
|
|
uint16_t cause;
|
|
} T_LE_COC_CHANN_STATE;
|
|
|
|
/** @brief Response of le credit based security register request.*/
|
|
typedef struct
|
|
{
|
|
uint16_t cause;
|
|
} T_LE_COC_CREDIT_BASED_SECURITY_REG_RSP;
|
|
|
|
/** @brief Response of le credit based psm register request.*/
|
|
typedef struct
|
|
{
|
|
uint16_t le_psm;
|
|
uint16_t cause;
|
|
} T_LE_COC_CREDIT_BASED_PSM_REG_RSP;
|
|
|
|
#define GAP_COC_MSG_LE_CHANN_STATE 0x01
|
|
#define GAP_COC_MSG_LE_REG_PSM 0x02
|
|
#define GAP_COC_MSG_LE_SET_PSM_SECURITY 0x03
|
|
#define GAP_COC_MSG_LE_SEND_DATA 0x04
|
|
#define GAP_COC_MSG_LE_RECEIVE_DATA 0x05
|
|
|
|
typedef union
|
|
{
|
|
T_LE_COC_CHANN_STATE *p_le_chann_state;
|
|
T_LE_COC_RECEIVE_DATA *p_le_receive_data;
|
|
T_LE_COC_SEND_DATA *p_le_send_data;
|
|
T_LE_COC_CREDIT_BASED_SECURITY_REG_RSP *p_le_set_psm_security_rsp;
|
|
T_LE_COC_CREDIT_BASED_PSM_REG_RSP *p_le_reg_psm_rsp;
|
|
} T_LE_COC_DATA;
|
|
|
|
typedef T_APP_RESULT(*P_FUN_LE_COC_APP_CB)(uint8_t coc_type, void *p_coc_data);
|
|
/*============================================================================*
|
|
* Functions
|
|
*============================================================================*/
|
|
/** @defgroup GAP_LE_CREDIT_BASED_CONN_Exported_Functions GAP LE Credit Based Connection Exported Functions
|
|
* @brief
|
|
* @{
|
|
*/
|
|
bool le_coc_init(uint8_t chann_num);
|
|
void le_coc_register_app_cb(P_FUN_LE_COC_APP_CB app_callback);
|
|
T_GAP_CAUSE le_coc_set_param(T_LE_COC_PARAM_TYPE param, uint8_t len, void *p_value);
|
|
T_GAP_CAUSE le_coc_get_chann_param(T_LE_COC_CHANN_PARAM_TYPE param, void *p_value, uint16_t cid);
|
|
T_GAP_CAUSE le_coc_create(uint8_t conn_id, uint16_t le_psm);
|
|
T_GAP_CAUSE le_coc_disc(uint16_t cid);
|
|
T_GAP_CAUSE le_coc_send_data(uint16_t cid, uint8_t *p_data, uint16_t data_len);
|
|
T_GAP_CAUSE le_coc_reg_psm(uint16_t le_psm, uint8_t action);
|
|
T_GAP_CAUSE le_coc_set_psm_security(uint16_t le_psm, bool active, T_LE_COC_SECURITY_MODE mode,
|
|
uint8_t key_size);
|
|
/** End of GAP_LE_CREDIT_BASED_CONN_Exported_Functions
|
|
* @}
|
|
*/
|
|
|
|
/** End of GAP_LE_CREDIT_BASED_CONN
|
|
* @}
|
|
*/
|
|
|
|
/** End of GAP_LE
|
|
* @}
|
|
*/
|
|
|
|
/** End of GAP
|
|
* @}
|
|
*/
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* _LE_CREDIT_BASED_CONN_H_ */
|