gap: add extended advertising api

This commit is contained in:
Matthias Ringwald 2022-01-10 15:33:51 +01:00
parent a408e724ff
commit b56957b70f

111
src/gap.h
View File

@ -135,6 +135,39 @@ typedef enum {
AUTHORIZATION_GRANTED
} authorization_state_t;
// Extended Advertising Parameters
typedef struct {
uint16_t advertising_event_properties;
uint16_t primary_advertising_interval_min;
uint16_t primary_advertising_interval_max;
uint8_t primary_advertising_channel_map;
bd_addr_type_t own_address_type;
bd_addr_type_t peer_address_type;
bd_addr_t peer_address;
uint8_t advertising_filter_policy;
int8_t advertising_tx_power;
uint8_t primary_advertising_phy;
uint8_t secondary_advertising_max_skip;
uint8_t secondary_advertising_phy;
uint8_t advertising_sid;
uint8_t scan_request_notification_enable;
} le_extended_advertising_parameters_t;
// Extended Advertising Set State
typedef struct {
btstack_linked_item_t item;
le_extended_advertising_parameters_t params;
bd_addr_t random_address;
uint8_t * adv_data;
uint8_t * scan_data;
uint16_t adv_data_len;
uint16_t scan_data_len;
uint16_t enable_timeout;
uint8_t advertising_handle;
uint8_t enable_max_scan_events;
uint8_t state;
uint8_t tasks;
} le_advertising_set_t;
/* API_START */
@ -426,7 +459,7 @@ void gap_random_address_set(const bd_addr_t addr);
void gap_advertisements_set_data(uint8_t advertising_data_length, uint8_t * advertising_data);
/**
* @brief Set Advertisement Paramters
* @brief Set Advertisement Parameters
* @param adv_int_min
* @param adv_int_max
* @param adv_type
@ -457,6 +490,82 @@ void gap_advertisements_enable(int enabled);
*/
void gap_scan_response_set_data(uint8_t scan_response_data_length, uint8_t * scan_response_data);
/**
* @brief Provide storage for new advertising set and setup on Controller
* @param storage to use by stack, needs to stay valid until adv set is removed with gap_extended_advertising_remove
* @param advertising_parameters
* @param out_advertising_handle to use with other adv config commands
* @return status
* @events: GAP_SUBEVENT_ADVERTISING_SET_INSTALLED
*/
uint8_t gap_extended_advertising_setup(le_advertising_set_t * storage, const le_extended_advertising_parameters_t * advertising_parameters, uint8_t * out_advertising_handle);
/**
* @param Set advertising params for advertising set
* @param advertising_handle
* @param advertising_parameters
* @return status
*/
uint8_t gap_extended_advertising_set_params(uint8_t advertising_handle, const le_extended_advertising_parameters_t * advertising_parameters);
/**
* @param Get advertising params for advertising set, e.g. to update params
* @param advertising_handle
* @param advertising_parameters
* @return status
*/
uint8_t gap_extended_advertising_get_params(uint8_t advertising_handle, le_extended_advertising_parameters_t * advertising_parameters);
/**
* @param Set random addrress for advertising set
* @param advertising_handle
* @param random_address
* @return status
*/
uint8_t gap_extended_advertising_set_random_address(uint8_t advertising_handle, bd_addr_t random_address);
/**
* @brief Set Advertising Data for a advertisement set
* @param advertising_handle
* @param advertising_data_length
* @param advertising_data
* @return status
*/
uint8_t gap_extended_advertising_set_adv_data(uint8_t advertising_handle, uint16_t advertising_data_length, uint8_t * advertising_data);
/**
* @brief Set Scan Response Data for a advertisement set
* @param advertising_handle
* @param scan_response_data_length
* @param scan_response_data
* @return status
*/
uint8_t gap_extended_advertising_set_scan_response_data(uint8_t advertising_handle, uint16_t scan_response_data_length, uint8_t * scan_response_data);
/**
* @brief Start advertising advertising set
* @param advertising_handle
* @param timeout in 10ms, or 0 == no timeout
* @param num_extended_advertising_events Controller shall send, or 0 == no max number
* @return status
*/
uint8_t gap_extended_advertising_start(uint8_t advertising_handle, uint16_t timeout, uint8_t num_extended_advertising_events);
/**
* @brief Stop advertising
* @param advertising_handle
* @return status
*/
uint8_t gap_extended_advertising_stop(uint8_t advertising_handle);
/**
* @brief Remove advertising set from Controller
* @param advertising_handle
* @return status
* @events: GAP_SUBEVENT_ADVERTISING_SET_REMOVED
*/
uint8_t gap_extended_advertising_remove(uint8_t advertising_handle);
/**
* @brief Set connection parameters for outgoing connections
* @param conn_scan_interval (unit: 0.625 msec), default: 60 ms