Files
banban/ql-application/threadx/common/include/bt_inc/ql_ble_api.h
T

670 lines
22 KiB
C

/*============================================================================
Copyright (c) 2022 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
Quectel Wireless Solution Proprietary and Confidential.
=============================================================================*/
#ifndef _QL_BLE_API_H
#define _QL_BLE_API_H
#include "ql_bt.h"
#ifdef __cplusplus
extern "C" {
#endif
/*****************************************************************
* Function: ql_bt_le_connect
*
* Description:
* Establishes a LE (Low Energy) connection with the specified device.
* The `type` parameter defines the address type (e.g., public or random).
*
* Parameters:
* addr [in] Address of the target LE device.
* type [in] Address type of the target device (e.g., public, random).
*
* Return:
* 0 Connection successful.
* -1 Failed to connect.
*
*****************************************************************/
int ql_bt_le_connect(struct bt_addr addr, int type);
/*****************************************************************
* Function: ql_bt_le_disconnect
*
* Description:
* Disconnects the LE connection identified by the given connection handle.
*
* Parameters:
* con_handle [in] Connection handle of the LE connection.
*
* Return:
* 0 Disconnection successful.
* -1 Failed to disconnect.
*
*****************************************************************/
int ql_bt_le_disconnect(unsigned short con_handle);
/*****************************************************************
* Function: ql_le_get_pair_info
*
* Description:
* Retrieves the pairing information for a specified index.
*
* Parameters:
* index [in] Index for retrieving pairing information.
*
* Return:
* 0 Pairing information retrieved successfully.
* -1 Failed to retrieve pairing information.
*
*****************************************************************/
int ql_le_get_pair_info(int index);
/*****************************************************************
* Function: ql_le_remove_pair_info
*
* Description:
* Removes pairing information for a specified index.
*
* Parameters:
* index [in] Index for removing pairing information.
*
* Return:
* 0 Pairing information removed successfully.
* -1 Failed to remove pairing information.
*
*****************************************************************/
int ql_le_remove_pair_info(int index);
/*****************************************************************
* Function: ql_bt_le_set_white_list
*
* Description:
* Adds a device to the LE white list. The `type` parameter defines
* the address type of the device (e.g., public or random).
*
* Parameters:
* addr [in] Address of the device to add to the white list.
* type [in] Address type of the device (e.g., public, random).
*
* Return:
* 0 Device added to the white list successfully.
* -1 Failed to add device to the white list.
*
*****************************************************************/
int ql_bt_le_set_white_list(struct bt_addr addr, unsigned char type);
/*****************************************************************
* Function: ql_bt_le_remove_white_list
*
* Description:
* Removes a device from the LE white list. The `type` parameter
* defines the address type of the device (e.g., public or random).
* After removal, the device will no longer be included in the
* whitelist and cannot participate in whitelist-restricted
* Bluetooth operations.
*
* Parameters:
* addr [in] Address of the device to remove from the white list.
* type [in] Address type of the device (e.g., public, random).
*
* Return:
* 0 Device removed from the white list successfully.
* -1 Failed to remove device from the white list.
*
*****************************************************************/
int ql_bt_le_remove_white_list(struct bt_addr addr, unsigned char type);
/*****************************************************************
* Function: ql_bt_le_clear_white_list
*
* Description:
* Clears all devices from the LE white list.
*
* Parameters:
* None
*
* Return:
* 0 White list cleared successfully.
* -1 Failed to clear the white list.
*
*****************************************************************/
int ql_bt_le_clear_white_list();
/*****************************************************************
* Function: ql_bt_le_set_random_address
*
* Description:
* Sets the random address for the LE device.
*
* Parameters:
* addr [in] The random address to be set for the device.
*
* Return:
* 0 Random address set successfully.
* -1 Failed to set random address.
*
*****************************************************************/
int ql_bt_le_set_random_address(struct bt_addr addr);
/*****************************************************************
* Function: ql_le_set_adv_mode
*
* Description:
* Sets the advertising mode for LE (Low Energy) advertising.
* The mode is defined by the following enum:
* - `BT_LE_ADV_LEGACY_MODE`: Legacy advertising mode.
* - `BT_LE_EXTENDED_ADV_LEGACY_MODE`: Extended legacy advertising mode.
* - `BT_LE_EXTENDED_ADV_AUX_MODE`: Extended auxiliary advertising mode.
*
* Parameters:
* le_adv_mode [in] Advertising mode to set (one of the enum values).
* - `BT_LE_ADV_LEGACY_MODE`: Legacy advertising mode.
* - `BT_LE_EXTENDED_ADV_LEGACY_MODE`: Extended legacy advertising mode.
* - `BT_LE_EXTENDED_ADV_AUX_MODE`: Extended auxiliary advertising mode.
*
* Return:
* None
*
*****************************************************************/
void ql_le_set_adv_mode(uint8_t le_adv_mode);
/*****************************************************************
* Function: ql_bt_le_set_adv_parameters
*
* Description:
* Sets the advertising parameters for LE (Low Energy) advertising.
*
* Parameters:
* para [in] Pointer to the LE advertising parameters structure.
*
* Return:
* 0 Parameters set successfully.
* -1 Failed to set advertising parameters.
*
*****************************************************************/
int ql_bt_le_set_adv_parameters(struct ql_bt_task_le_adv_parameters *para);
/*****************************************************************
* Function: ql_bt_le_create_adv_data
*
* Description:
* Creates the advertising data for LE (Low Energy) advertising.
*
* Parameters:
* gap [in] GAP (Generic Access Profile) type.
* buffer [in] Pointer to the buffer where the advertising data is stored.
* buffer_size [in] Size of the buffer.
* data [in] Pointer to the actual data to be used in advertising.
* size [in] Size of the advertising data.
*
* Return:
* 0 Advertising data created successfully.
* -1 Failed to create advertising data.
*
*****************************************************************/
int ql_bt_le_create_adv_data(int gap, unsigned char *buffer, int buffer_size, unsigned char *data, int size);
/*****************************************************************
* Function: ql_bt_le_set_adv_data
*
* Description:
* Sets the advertising data for LE (Low Energy) advertising.
*
* Parameters:
* data [in] Pointer to the advertising data.
* length [in] Length of the advertising data.
*
* Return:
* 0 Advertising data set successfully.
* -1 Failed to set advertising data.
*
*****************************************************************/
int ql_bt_le_set_adv_data(unsigned char *data, unsigned char length);
/*****************************************************************
* Function: ql_le_set_scan_response_data
*
* Description:
* Sets the scan response data for LE (Low Energy) advertising.
*
* Parameters:
* data [in] Pointer to the scan response data.
* length [in] Length of the scan response data.
*
* Return:
* 0 Scan response data set successfully.
* -1 Failed to set scan response data.
*
*****************************************************************/
int ql_le_set_scan_response_data(unsigned char *data, unsigned char length);
/*****************************************************************
* Function: ql_bt_le_set_ext_adv_parameters
*
* Description:
* Sets the extended advertising parameters for LE (Low Energy).
*
* Parameters:
* para [in] Pointer to the extended advertising parameters structure.
*
* Return:
* 0 Extended advertising parameters set successfully.
* -1 Failed to set extended advertising parameters.
*
*****************************************************************/
int ql_bt_le_set_ext_adv_parameters(struct bt_task_le_ext_adv_parameters *para);
/*****************************************************************
* Function: ql_bt_le_set_adv_set_random_address
*
* Description:
* Sets a random address for a specific LE advertising set.
*
* Parameters:
* handle [in] Handle of the advertising set.
* addr [in] Random address to be set for the advertising set.
*
* Return:
* 0 Random address set successfully.
* -1 Failed to set random address.
*
*****************************************************************/
int ql_bt_le_set_adv_set_random_address(unsigned char handle, struct bt_addr addr);
/*****************************************************************
* Function: ql_bt_le_set_ext_adv_data
*
* Description:
* Sets the extended advertising data for LE (Low Energy) advertising.
*
* Parameters:
* data [in] Pointer to the advertising data.
* length [in] Length of the advertising data.
* handle [in] Handle for the advertising set.
* operation [in] Operation to perform (e.g., insert or update).
* fragment [in] Fragmentation behavior for the data.
*
* Return:
* 0 Advertising data set successfully.
* -1 Failed to set extended advertising data.
*
*****************************************************************/
int ql_bt_le_set_ext_adv_data(unsigned char *data, unsigned char length, unsigned char handle, unsigned char operation, unsigned char fragment);
/*****************************************************************
* Function: ql_bt_le_set_ext_scan_response
*
* Description:
* Sets the extended scan response data for LE (Low Energy) advertising.
*
* Parameters:
* data [in] Pointer to the scan response data.
* length [in] Length of the scan response data.
* handle [in] Handle for the advertising set.
* operation [in] Operation to perform (e.g., insert or update).
* fragment [in] Fragmentation behavior for the data.
*
* Return:
* 0 Scan response data set successfully.
* -1 Failed to set extended scan response data.
*
*****************************************************************/
int ql_bt_le_set_ext_scan_response(unsigned char *data, unsigned char length, unsigned char handle, unsigned char operation, unsigned char fragment);
/*****************************************************************
* Function: ql_bt_le_set_adv_enable
*
* Description:
* Enables or disables LE (Low Energy) advertising.
*
* Parameters:
* enable [in] 1 to enable advertising, 0 to disable advertising.
*
* Return:
* 0 Advertising enabled or disabled successfully.
* -1 Failed to enable or disable advertising.
*
*****************************************************************/
int ql_bt_le_set_adv_enable(int enable);
/*****************************************************************
* Function: ql_ble_set_adv_cfg_enable
*
* Description:
* Enables or disables the advertising configuration for LE (Low Energy) advertising.
*
* Parameters:
* params [in] Pointer to the advertising parameters structure.
* enable [in] 1 to enable advertising configuration, 0 to disable.
*
* Return:
* 0 Configuration enabled or disabled successfully.
* -1 Failed to enable or disable advertising configuration.
*
*****************************************************************/
int ql_ble_set_adv_cfg_enable(struct ql_bt_adv_params* params, int enable);
/*****************************************************************
* Function: ql_bt_le_set_pair_enable
*
* Description:
* Enables or disables LE (Low Energy) pairing.
*
* Parameters:
* set_enable [in] 1 to enable pairing, 0 to disable pairing.
*
* Return:
* 0 Pairing enabled or disabled successfully.
* -1 Failed to enable or disable pairing.
*
*****************************************************************/
int ql_bt_le_set_pair_enable(unsigned char set_enable);
/*****************************************************************
* Function: ql_bt_le_set_default_phy
*
* Description:
* Sets the default PHY (physical layer) for LE (Low Energy) connections.
*
* Parameters:
* all_phys [in] PHY for all connections (bitmask of supported PHY types).
* tx_phys [in] PHY to be used for transmitting (e.g., 1M, 2M, Coded).
* rx_phys [in] PHY to be used for receiving (e.g., 1M, 2M, Coded).
*
* Return:
* 0 PHY settings applied successfully.
* -1 Failed to set PHY.
*
*****************************************************************/
int ql_bt_le_set_default_phy(unsigned char all_phys, unsigned char tx_phys, unsigned char rx_phys);
/*****************************************************************
* Function: ql_bt_le_register_att_service
*
* Description:
* Registers an ATT (Attribute Protocol) service with read and write callback functions.
*
* Parameters:
* profile_data [in] Pointer to the profile data for the ATT service.
* profile_data_len [in] Length of the profile data.
* read_callback [in] Callback function for handling read requests.
* write_callback [in] Callback function for handling write requests.
*
* Return:
* 0 Service registered successfully.
* -1 Failed to register service.
*
*****************************************************************/
int ql_bt_le_register_att_service(unsigned char *profile_data, unsigned short profile_data_len, att_read_callback_t read_callback, att_write_callback_t write_callback);
/*****************************************************************
* Function: ql_le_send_service_change
*
* Description:
* Sends a service change notification to the connected device.
*
* Parameters:
* conn_handle [in] Connection handle for the LE connection.
*
* Return:
* None
*
*****************************************************************/
void ql_le_send_service_change(unsigned short conn_handle);
/*****************************************************************
* Function: ql_appbt_le_notify
*
* Description:
* Sends a notification to the client for a given LE (Low Energy) characteristic.
*
* Parameters:
* conn_handle [in] Connection handle of the LE device.
* att_handle [in] Attribute handle for the characteristic.
* data [in] Pointer to the data to be notified.
* size [in] Size of the data to be notified.
*
* Return:
* 0 Notification sent successfully.
* -1 Failed to send notification.
*
*****************************************************************/
int ql_appbt_le_notify(unsigned short conn_handle, unsigned short att_handle, unsigned char *data, int size);
/*****************************************************************
* Function: ql_appbt_le_indicate
*
* Description:
* Sends an indication to the client for a given LE (Low Energy) characteristic.
*
* Parameters:
* conn_handle [in] Connection handle of the LE device.
* att_handle [in] Attribute handle for the characteristic.
* data [in] Pointer to the data to be indicated.
* size [in] Size of the data to be indicated.
*
* Return:
* 0 Indication sent successfully.
* -1 Failed to send indication.
*
*****************************************************************/
int ql_appbt_le_indicate(unsigned short conn_handle, unsigned short att_handle, unsigned char *data, int size);
/*****************************************************************
* Function: ql_le_custom_mtu_request
*
* Description:
* Sends a custom MTU (Maximum Transmission Unit) request to the peer device.
*
* Parameters:
* conn_handle [in] Connection handle for the LE connection.
* mtu [in] The requested MTU size.
*
* Return:
* 0 MTU request sent successfully.
* -1 Failed to send MTU request.
*
*****************************************************************/
int ql_le_custom_mtu_request(unsigned short conn_handle, unsigned short mtu);
/*****************************************************************
* Function: ql_bt_le_scan
*
* Description:
* Starts LE (Low Energy) scanning for nearby devices with the specified parameters.
*
* Parameters:
* type [in] Scan type (e.g., passive or active).
* interval [in] Scan interval (in units of 0.625 ms).
* window [in] Scan window (in units of 0.625 ms).
* own_address_type [in] Address type for the local device.
* handle [in] Callback function to handle scan events.
*
* Return:
* 0 Scanning started successfully.
* -1 Failed to start scanning.
*
*****************************************************************/
int ql_bt_le_scan(unsigned char type, unsigned short int interval, unsigned short int window, unsigned char own_address_type, le_scan_event_handle_t handle);
/*****************************************************************
* Function: ql_bt_le_scan_with_filter
*
* Description:
* Starts LE scanning for nearby devices with the specified parameters and a filter.
*
* Parameters:
* type [in] Scan type (e.g., passive or active).
* interval [in] Scan interval (in units of 0.625 ms).
* window [in] Scan window (in units of 0.625 ms).
* own_address_type [in] Address type for the local device.
* filter [in] Scan filter for device discovery (e.g., specific devices).
* handle [in] Callback function to handle scan events.
*
* Return:
* 0 Scanning with filter started successfully.
* -1 Failed to start scanning with filter.
*
*****************************************************************/
int ql_bt_le_scan_with_filter(unsigned char type, unsigned short int interval, unsigned short int window, unsigned char own_address_type, unsigned char filter, le_scan_event_handle_t handle);
/*****************************************************************
* Function: ql_bt_le_scan_stop
*
* Description:
* Stops the ongoing LE (Low Energy) scanning process.
*
* Parameters:
* None
*
* Return:
* 0 Scanning stopped successfully.
* -1 Failed to stop scanning.
*
*****************************************************************/
int ql_bt_le_scan_stop(void);
/*****************************************************************
* Function: ql_le_custom_gatt_scan_start
*
* Description:
* Starts a custom GATT (Generic Attribute Profile) scan for a specific LE (Low Energy) connection.
*
* Parameters:
* conn_handle [in] Connection handle for the LE connection.
*
* Return:
* 0 Scan started successfully.
* -1 Failed to start scan.
*
*****************************************************************/
int ql_le_custom_gatt_scan_start(unsigned short conn_handle);
/*****************************************************************
* Function: ql_le_custom_write_command
*
* Description:
* Sends a write command to a specific attribute handle on the LE connection.
* The write command does not require an acknowledgment.
*
* Parameters:
* conn_handle [in] Connection handle for the LE connection.
* att_handle [in] Attribute handle to write to.
* data [in] Pointer to the data to be written.
* size [in] Size of the data.
*
* Return:
* 0 Write command sent successfully.
* -1 Failed to send write command.
*
*****************************************************************/
int ql_le_custom_write_command(unsigned short conn_handle, unsigned short att_handle, unsigned char *data, unsigned short size);
/*****************************************************************
* Function: ql_le_custom_write_request
*
* Description:
* Sends a write request to a specific attribute handle on the LE connection.
* This request requires an acknowledgment from the peer device.
*
* Parameters:
* conn_handle [in] Connection handle for the LE connection.
* att_handle [in] Attribute handle to write to.
* data [in] Pointer to the data to be written.
* size [in] Size of the data.
*
* Return:
* 0 Write request sent successfully.
* -1 Failed to send write request.
*
*****************************************************************/
int ql_le_custom_write_request(unsigned short conn_handle, unsigned short att_handle, unsigned char *data, unsigned short size);
/*****************************************************************
* Function: ql_le_custom_read_request
*
* Description:
* Sends a read request for a specific attribute handle on the LE connection.
* The request will retrieve the attribute value from the peer device.
*
* Parameters:
* conn_handle [in] Connection handle for the LE connection.
* att_handle [in] Attribute handle to read from.
*
* Return:
* 0 Read request sent successfully.
* -1 Failed to send read request.
*
*****************************************************************/
int ql_le_custom_read_request(unsigned short conn_handle, unsigned short att_handle);
/*****************************************************************
* Function: ql_le_custom_connection_parameter_update_request
*
* Description:
* Sends a connection parameter update request for an LE connection.
* This request allows updating parameters like connection interval, slave latency, and supervision timeout.
*
* Parameters:
* conn_handle [in] Connection handle for the LE connection.
* conn_interval [in] New connection interval to request.
* slave_latency [in] New slave latency to request.
* supervision_timeout [in] New supervision timeout to request.
*
* Return:
* 0 Connection parameter update request sent successfully.
* -1 Failed to send connection parameter update request.
*
*****************************************************************/
int ql_le_custom_connection_parameter_update_request(unsigned short conn_handle, unsigned short conn_interval, unsigned short slave_latency, unsigned short supervision_timeout);
#ifdef __cplusplus
} /*"C" */
#endif
#endif