249 lines
6.2 KiB
C
249 lines
6.2 KiB
C
/**
|
|
* @file wm_ble.h
|
|
*
|
|
* @brief Bluetooth API
|
|
*
|
|
* @author WinnerMicro
|
|
*
|
|
* Copyright (c) 2020 Winner Microelectronics Co., Ltd.
|
|
*/
|
|
#ifndef WM_BLE_H
|
|
#define WM_BLE_H
|
|
|
|
#include "wm_bt_def.h"
|
|
|
|
/**
|
|
* @defgroup BT_APIs Bluetooth APIs
|
|
* @brief Bluetooth related APIs
|
|
*/
|
|
|
|
/**
|
|
* @addtogroup BT_APIs
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @defgroup BLE_APIs BLE APIs
|
|
* @brief BLE APIs
|
|
*/
|
|
|
|
/**
|
|
* @addtogroup BLE_APIs
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief initialize the application callback function
|
|
*
|
|
* @param[in] *p_callback pointer on callback function
|
|
*
|
|
* @return @ref tls_bt_status_t
|
|
*
|
|
* @note None
|
|
*/
|
|
tls_bt_status_t tls_ble_dm_init(tls_ble_dm_callback_t callback);
|
|
|
|
/**
|
|
* @brief start/stop ble advertisement
|
|
*
|
|
* @param[in] start 1 connectable and discoverable; 2 disconnectable and discoverable; 0 stop
|
|
*
|
|
* @return @ref tls_bt_status_t
|
|
*
|
|
* @note None
|
|
*/
|
|
tls_bt_status_t tls_ble_adv(uint8_t adv_state);
|
|
|
|
/**
|
|
* @brief configure the advertisment content
|
|
*
|
|
* @param[in] *data @ref btif_dm_adv_data_t
|
|
*
|
|
* @retval @ref tls_bt_status_t
|
|
*
|
|
* @note if pure_data equals to true, the filed of manufacturer equals to all fileds of advetisement data.
|
|
* otherwise, the filed manufacturer will be advertised in 0xFF filed.
|
|
*
|
|
*/
|
|
tls_bt_status_t tls_ble_set_adv_data(tls_ble_dm_adv_data_t *data);
|
|
|
|
/**
|
|
* @brief configure the advertisment parameters
|
|
*
|
|
* @param[in] *param @ref btif_dm_adv_param_t
|
|
*
|
|
* @retval @ref tls_bt_status_t
|
|
*
|
|
* @note None
|
|
*/
|
|
tls_bt_status_t tls_ble_set_adv_param(tls_ble_dm_adv_param_t *param);
|
|
|
|
/**
|
|
* @brief configure the advertisment extented parameters
|
|
*
|
|
* @param[in] *param @ref tls_ble_dm_adv_ext_param_t
|
|
*
|
|
* @retval @ref tls_bt_status_t
|
|
*
|
|
* @note if you know how to config all the parameters, you can use this function; otherwise, tls_ble_set_adv_param will be recommanded strongly;
|
|
*/
|
|
tls_bt_status_t tls_ble_set_adv_ext_param(tls_ble_dm_adv_ext_param_t *param);
|
|
|
|
|
|
/**
|
|
* @brief start/stop ble scan
|
|
*
|
|
* @param[in] start TRUE enable; FALSE disable
|
|
*
|
|
* @retval @ref tls_bt_status_t
|
|
*
|
|
* @note None
|
|
*/
|
|
tls_bt_status_t tls_ble_scan(bool start);
|
|
|
|
/**
|
|
* @brief configure the scan parameters
|
|
*
|
|
* @param[in] window scan window size
|
|
* @param[in] interval scan interval length
|
|
* @param[in] scan mode 0 passive scan; 1 active scan;
|
|
*
|
|
* @retval @ref tls_bt_status_t
|
|
*
|
|
* @note interval should greater or equals to windows,
|
|
* both range should be within (0x0004, 0x4000)
|
|
*/
|
|
tls_bt_status_t tls_ble_set_scan_param(int window, int interval, uint8_t scan_mode);
|
|
|
|
/**
|
|
* @brief enable a async process evt
|
|
*
|
|
* @param[in] id user specific definition
|
|
* @param[in] *p_callback callback function
|
|
*
|
|
* @return @ref tls_bt_status_t
|
|
*
|
|
* @note None
|
|
*/
|
|
tls_bt_status_t tls_dm_evt_triger(int id, tls_ble_dm_triger_callback_t callback);
|
|
|
|
/**
|
|
* @brief configure the max transmit unit
|
|
*
|
|
* @param[in] *bd_addr the remote device address
|
|
* @param[in] length range [27 - 251]
|
|
*
|
|
* @return @ref tls_bt_status_t
|
|
*
|
|
* @note None
|
|
*/
|
|
tls_bt_status_t tls_dm_set_data_length(tls_bt_addr_t *bd_addr, uint16_t length);
|
|
|
|
/**
|
|
* @brief configure the ble privacy
|
|
*
|
|
* @param[in] enable TRUE: using rpa/random address, updated every 15 mins
|
|
** FALSE: public address
|
|
*
|
|
* @return @ref tls_bt_status_t
|
|
*
|
|
* @note None
|
|
*/
|
|
tls_bt_status_t tls_dm_set_privacy(uint8_t enable);
|
|
|
|
/**
|
|
* @brief update the connection parameters
|
|
*
|
|
* @param[in] *bd_addr remote device address
|
|
* @param[in] min_interval
|
|
* @param[in] max_interval
|
|
* @param[in] latency
|
|
* @param[in] timeout
|
|
*
|
|
* @return @ref tls_bt_status_t
|
|
*
|
|
* @note None
|
|
*/
|
|
tls_bt_status_t tls_ble_conn_parameter_update(const tls_bt_addr_t *bd_addr,
|
|
int min_interval,
|
|
int max_interval,
|
|
int latency,
|
|
int timeout);
|
|
|
|
/**
|
|
* @brief read the remote device signal strength connected
|
|
*
|
|
* @param[in] *bd_addr remote device address
|
|
*
|
|
* @return @ref tls_bt_status_t
|
|
*
|
|
* @note None
|
|
*/
|
|
tls_bt_status_t tls_dm_read_remote_rssi(const tls_bt_addr_t *bd_addr);
|
|
|
|
|
|
/**
|
|
* @brief config the io capabilities of local device
|
|
*
|
|
* @param[in] io_cap
|
|
*
|
|
* @return @ref tls_bt_status_t
|
|
*
|
|
* @note None
|
|
*/
|
|
|
|
tls_bt_status_t tls_ble_set_sec_io_cap(uint8_t io_cap);
|
|
|
|
/**
|
|
* @brief config the auth requirement of local device
|
|
*
|
|
* @param[in] auth_req
|
|
*
|
|
* @return @ref tls_bt_status_t
|
|
*
|
|
* @note None
|
|
*/
|
|
|
|
tls_bt_status_t tls_ble_set_sec_auth_req(uint8_t auth_req);
|
|
|
|
/**
|
|
* @brief This function is called to ensure that connection is
|
|
* encrypted. Should be called only on an open connection.
|
|
* Typically only needed for connections that first want to
|
|
* bring up unencrypted links, then later encrypt them.
|
|
|
|
* @param[in]sec_act - This is the security action to indicate
|
|
* what knid of BLE security level is required for
|
|
* the BLE link if the BLE is supported
|
|
* @param[in]bd_addr - Address of the peer device
|
|
* @ref tls_bt_status_t
|
|
*
|
|
* @note None
|
|
*/
|
|
|
|
tls_bt_status_t tls_ble_set_sec(const tls_bt_addr_t *bd_addr, uint8_t sec_act);
|
|
|
|
/**
|
|
* @brief only used to start/stop ble advertisement
|
|
*
|
|
* @param[in] start 1 start advertisement; 0 stop advertisement;
|
|
* @param[in] duration valid for start advertisement. 0 for forever, otherwise the last seconds of advertisement
|
|
*
|
|
* @return @ref tls_bt_status_t
|
|
*
|
|
* @note None
|
|
*/
|
|
|
|
tls_bt_status_t tls_ble_gap_adv(uint8_t start, int duration);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#endif /* WM_BLE_H */
|
|
|