Realtek/inc/bluetooth/gap/gap_msg.h

272 lines
8.4 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_msg.h
* @brief This file contains function prototype for all GAP roles.
* @details
* @author ranhui
* @date 2016-02-18
* @version v0.1
* *************************************************************************************
*/
/*============================================================================*
* Define to prevent recursive inclusion
*============================================================================*/
#ifndef GAP_MSG_H
#define GAP_MSG_H
#ifdef __cplusplus
extern "C"
{
#endif
/*============================================================================*
* Header Files
*============================================================================*/
#include "upperstack_config.h"
/** @defgroup GAP_MSG_MODULE GAP Message
* @brief GAP message
* @{
*/
/*============================================================================*
* Macros
*============================================================================*/
/** @defgroup Gap_Msg_Exported_Macros GAP Msg Exported Macros
* @{
*/
/** @defgroup GAP_MSG_TYPE GAP BT Message Type Definitions
* @brief Define the subtype of Message IO_MSG_TYPE_BT_STATUS.
* @{
*/
#define GAP_MSG_LE_DEV_STATE_CHANGE 0x01 //!< Device state change msg type.
#define GAP_MSG_LE_CONN_STATE_CHANGE 0x02 //!< Connection state change msg type.
#define GAP_MSG_LE_CONN_PARAM_UPDATE 0x03 //!< Connection parameter update changed msg type.
#define GAP_MSG_LE_CONN_MTU_INFO 0x04 //!< Connection MTU size info msg type.
#define GAP_MSG_LE_AUTHEN_STATE_CHANGE 0x05 //!< Authentication state change msg type.
#define GAP_MSG_LE_BOND_PASSKEY_DISPLAY 0x06 //!< Bond passkey display msg type.
#define GAP_MSG_LE_BOND_PASSKEY_INPUT 0x07 //!< Bond passkey input msg type.
#define GAP_MSG_LE_BOND_OOB_INPUT 0x08 //!< Bond passkey oob input msg type.
#define GAP_MSG_LE_BOND_USER_CONFIRMATION 0x09 //!< Bond user confirmation msg type.
#define GAP_MSG_LE_BOND_JUST_WORK 0x0A //!< Bond user confirmation msg type.
#if F_BT_LE_5_0_AE_ADV_SUPPORT
#define GAP_MSG_LE_EXT_ADV_STATE_CHANGE 0x0B //!< Extended advertising state change msg type.
#endif
/**
* @}
*/
/** @defgroup GAP_DEVICE_STATE GAP Device State
* @{
*/
/** @defgroup GAP_INIT_STATE GAP Initial State
* @{
*/
#define GAP_INIT_STATE_INIT 0 //!< Waiting to be started
#define GAP_INIT_STATE_STACK_READY 1 //!< Stack is ready
/** @} End GAP_INIT_STATE */
/** @defgroup GAP_ADV_STATE GAP Advertising State
* @{
*/
#define GAP_ADV_STATE_IDLE 0 //!< Idle, no advertising
#define GAP_ADV_STATE_START 1 //!< Start Advertising. A temporary state, haven't received the result.
#define GAP_ADV_STATE_ADVERTISING 2 //!< Advertising
#define GAP_ADV_STATE_STOP 3 //!< Stop Advertising. A temporary state, haven't received the result.
/** @} End GAP_ADV_STATE */
/** @defgroup GAP_ADV_SUB_STATE GAP Advertising Substate
* @{
*/
#define GAP_ADV_TO_IDLE_CAUSE_STOP 0 //!<Advertising is stopped by user stop or high duty cycle directed advertising timeout
#define GAP_ADV_TO_IDLE_CAUSE_CONN 1 //!<Advertising is stopped for link establishment
/** @} End GAP_ADV_SUB_STATE */
/** @defgroup GAP_SCAN_STATE GAP Scan State
* @{
*/
#define GAP_SCAN_STATE_IDLE 0 //!< Idle, no scanning
#define GAP_SCAN_STATE_START 1 //!< Start scanning. A temporary state, haven't received the result.
#define GAP_SCAN_STATE_SCANNING 2 //!< Scanning
#define GAP_SCAN_STATE_STOP 3 //!< Stop scanning, A temporary state, haven't received the result.
/** @} End GAP_SCAN_STATE */
/** @defgroup GAP_CONN_STATE GAP Connection State
* @{
*/
#define GAP_CONN_DEV_STATE_IDLE 0 //!< Idle
#define GAP_CONN_DEV_STATE_INITIATING 1 //!< Initiating Connection
/** @} End GAP_CONN_STATE */
/** @} End GAP_DEVICE_STATE */
/** @defgroup BOND_PAIRING_STATE_DEFINES Authentication States
* @{
*/
#define GAP_AUTHEN_STATE_STARTED 0x00 //!< Authentication started
#define GAP_AUTHEN_STATE_COMPLETE 0x01 //!< Authentication complete
/** @} End BOND_PAIRING_STATE_DEFINES */
/** @defgroup GAP_CONN_PARAM_UPDATE_STATUS Connection Parameter Update Status
* @{
*/
#define GAP_CONN_PARAM_UPDATE_STATUS_SUCCESS 0 //!< Connection paramter update status success.
#define GAP_CONN_PARAM_UPDATE_STATUS_FAIL 1 //!< Connection paramter update status failed.
#define GAP_CONN_PARAM_UPDATE_STATUS_PENDING 2 //!< Connection paramter update status pending.
/** End of GAP_CONN_PARAM_UPDATE_STATUS
* @}
*/
/** @brief GAP connection states*/
typedef enum
{
GAP_CONN_STATE_DISCONNECTED, //!< Disconnected.
GAP_CONN_STATE_CONNECTING, //!< Connecting.
GAP_CONN_STATE_CONNECTED, //!< Connected.
GAP_CONN_STATE_DISCONNECTING //!< Disconnecting.
} T_GAP_CONN_STATE;
/** End of Gap_Msg_Exported_Macros
* @}
*/
/*============================================================================*
* Types
*============================================================================*/
/** @defgroup Gap_Msg_Exported_Types GAP Msg Exported Types
* @{
*/
/** @brief Device State.*/
typedef struct
{
uint8_t gap_init_state: 1; //!< @ref GAP_INIT_STATE
uint8_t gap_adv_sub_state: 1; //!< @ref GAP_ADV_SUB_STATE
uint8_t gap_adv_state: 2; //!< @ref GAP_ADV_STATE
uint8_t gap_scan_state: 2; //!< @ref GAP_SCAN_STATE
uint8_t gap_conn_state: 2; //!< @ref GAP_CONN_STATE
} T_GAP_DEV_STATE;
/** @brief The msg_data of GAP_MSG_LE_DEV_STATE_CHANGE.*/
typedef struct
{
T_GAP_DEV_STATE new_state;
uint16_t cause;
} T_GAP_DEV_STATE_CHANGE;
/** @brief The msg_data of GAP_MSG_LE_CONN_STATE_CHANGE.*/
typedef struct
{
uint8_t conn_id;
uint8_t new_state;
uint16_t disc_cause;
} T_GAP_CONN_STATE_CHANGE;
/** @brief The msg_data of GAP_MSG_LE_CONN_PARAM_UPDATE.*/
typedef struct
{
uint8_t conn_id;
uint8_t status;
uint16_t cause;
} T_GAP_CONN_PARAM_UPDATE;
/** @brief The msg_data of GAP_MSG_LE_AUTHEN_STATE_CHANGE.*/
typedef struct
{
uint8_t conn_id;
uint8_t new_state;
uint16_t status;
} T_GAP_AUTHEN_STATE;
/** @brief The msg_data of GAP_MSG_LE_BOND_PASSKEY_DISPLAY.*/
typedef struct
{
uint8_t conn_id;
} T_GAP_BOND_PASSKEY_DISPLAY;
/** @brief The msg_data of GAP_MSG_LE_BOND_USER_CONFIRMATION.*/
typedef struct
{
uint8_t conn_id;
} T_GAP_BOND_USER_CONF;
/** @brief The msg_data of T_GAP_BOND_JUST_WORK_CONF.*/
typedef struct
{
uint8_t conn_id;
} T_GAP_BOND_JUST_WORK_CONF;
/** @brief The msg_data of GAP_MSG_LE_BOND_PASSKEY_INPUT.*/
typedef struct
{
uint8_t conn_id;
uint8_t key_press;
} T_GAP_BOND_PASSKEY_INPUT;
/** @brief The msg_data of GAP_MSG_LE_BOND_OOB_INPUT.*/
typedef struct
{
uint8_t conn_id;
} T_GAP_BOND_OOB_INPUT;
/** @brief The msg_data of GAP_MSG_LE_CONN_MTU_INFO.*/
typedef struct
{
uint8_t conn_id;
uint16_t mtu_size;
} T_GAP_CONN_MTU_INFO;
/** @brief The msg_data of GAP_MSG_LE_EXT_ADV_STATE_CHANGE.*/
#if F_BT_LE_5_0_AE_ADV_SUPPORT
typedef struct
{
uint8_t adv_handle;
uint8_t new_state;
uint16_t cause;
} T_GAP_EXT_ADV_STATE_CHANGE;
#endif
/** @brief The msg_data of T_LE_GAP_MSG. */
typedef union
{
T_GAP_DEV_STATE_CHANGE gap_dev_state_change;
T_GAP_CONN_STATE_CHANGE gap_conn_state_change;
T_GAP_CONN_PARAM_UPDATE gap_conn_param_update;
T_GAP_CONN_MTU_INFO gap_conn_mtu_info;
T_GAP_AUTHEN_STATE gap_authen_state;
T_GAP_BOND_PASSKEY_DISPLAY gap_bond_passkey_display;
T_GAP_BOND_PASSKEY_INPUT gap_bond_passkey_input;
T_GAP_BOND_OOB_INPUT gap_bond_oob_input;
T_GAP_BOND_USER_CONF gap_bond_user_conf;
T_GAP_BOND_JUST_WORK_CONF gap_bond_just_work_conf;
#if F_BT_LE_5_0_AE_ADV_SUPPORT
T_GAP_EXT_ADV_STATE_CHANGE gap_ext_adv_state_change;
#endif
} T_LE_GAP_MSG_DATA;
/** @brief As the param of T_IO_MSG. type is IO_MSG_TYPE_BT_STATUS. */
typedef struct
{
T_LE_GAP_MSG_DATA msg_data;
} T_LE_GAP_MSG;
/** End of Gap_Msg_Exported_Types
* @}
*/
/** End of GAP_MSG_MODULE
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* GAP_MSG_H */