Realtek/inc/bluetooth/gap/gap_credit_based_conn.h

156 lines
4.9 KiB
C
Raw Normal View History

2025-11-25 10:21:47 +08:00
/**
*********************************************************************************************************
* 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_ */