Fixed minor issues in Periodic Adv Enhancements

This commit is contained in:
Roshan Bangar
2024-02-20 18:48:54 +05:30
committed by Abhinav Kudnar
parent e5309236c9
commit 27837f47c3
2 changed files with 29 additions and 33 deletions
+7 -9
View File
@@ -1655,13 +1655,13 @@ struct ble_gap_periodic_adv_params {
#if MYNEWT_VAL(BLE_PERIODIC_ADV_ENH) #if MYNEWT_VAL(BLE_PERIODIC_ADV_ENH)
/** @brief Periodic advertising enable parameters */ /** @brief Periodic advertising enable parameters */
struct ble_gap_periodic_adv_enable_params { struct ble_gap_periodic_adv_start_params {
/** If include adi in aux_sync_ind PDU */ /** If include adi in aux_sync_ind PDU */
unsigned int include_adi:1; unsigned int include_adi:1;
}; };
/** @brief Periodic advertising sync reporting parameters */ /** @brief Periodic advertising sync reporting parameters */
struct ble_gap_periodic_adv_sync_report_params { struct ble_gap_periodic_adv_sync_reporting_params {
/** If filter duplicates */ /** If filter duplicates */
unsigned int filter_duplicates:1; unsigned int filter_duplicates:1;
}; };
@@ -1721,7 +1721,7 @@ int ble_gap_periodic_adv_configure(uint8_t instance,
*/ */
int int
ble_gap_periodic_adv_start(uint8_t instance, ble_gap_periodic_adv_start(uint8_t instance,
const struct ble_gap_periodic_adv_enable_params *params); const struct ble_gap_periodic_adv_start_params *params);
#else #else
/** /**
@@ -1756,8 +1756,8 @@ int ble_gap_periodic_adv_stop(uint8_t instance);
* @return 0 on success or error code on failure. * @return 0 on success or error code on failure.
*/ */
int ble_gap_periodic_adv_set_data(uint8_t instance, int ble_gap_periodic_adv_set_data(uint8_t instance,
struct os_mbuf *data, struct os_mbuf *data,
struct ble_gap_periodic_adv_set_data_params *params); struct ble_gap_periodic_adv_set_data_params *params);
#else #else
/** /**
* Configures the data to include in periodic advertisements for specified * Configures the data to include in periodic advertisements for specified
@@ -1821,7 +1821,7 @@ int ble_gap_periodic_adv_sync_terminate(uint16_t sync_handle);
*/ */
int ble_gap_periodic_adv_sync_reporting(uint16_t sync_handle, int ble_gap_periodic_adv_sync_reporting(uint16_t sync_handle,
bool enable, bool enable,
const struct ble_gap_periodic_adv_sync_report_params *params); const struct ble_gap_periodic_adv_sync_reporting_params *params);
#else #else
/** /**
* Disable or enable periodic reports for specified sync. * Disable or enable periodic reports for specified sync.
@@ -1867,13 +1867,11 @@ int ble_gap_periodic_adv_sync_set_info(uint8_t instance,
* Set the default periodic sync transfer params. * Set the default periodic sync transfer params.
* *
* *
* @param conn_handle Handle identifying connection.
* @param params Default Parameters for periodic sync transfer. * @param params Default Parameters for periodic sync transfer.
* *
* @return 0 on success; nonzero on failure. * @return 0 on success; nonzero on failure.
*/ */
int periodic_adv_set_default_sync_params(uint16_t conn_handle, int periodic_adv_set_default_sync_params(const struct ble_gap_periodic_sync_params *params);
const struct ble_gap_periodic_sync_params *params);
/** /**
* Enables or disables sync transfer reception on specified connection. * Enables or disables sync transfer reception on specified connection.
+22 -24
View File
@@ -42,9 +42,7 @@
#define bssnz_t #define bssnz_t
#endif #endif
#if MYNEWT_VAL(BLE_PERIODIC_ADV_ENH)
#define SET_BIT(t, n) (t |= 1UL << (n)) #define SET_BIT(t, n) (t |= 1UL << (n))
#endif
/** /**
* GAP - Generic Access Profile. * GAP - Generic Access Profile.
@@ -3901,7 +3899,7 @@ ble_gap_periodic_adv_configure(uint8_t instance,
#if MYNEWT_VAL(BLE_PERIODIC_ADV_ENH) #if MYNEWT_VAL(BLE_PERIODIC_ADV_ENH)
int int
ble_gap_periodic_adv_start(uint8_t instance, const struct ble_gap_periodic_adv_enable_params *params) ble_gap_periodic_adv_start(uint8_t instance, const struct ble_gap_periodic_adv_start_params *params)
#else #else
int int
ble_gap_periodic_adv_start(uint8_t instance) ble_gap_periodic_adv_start(uint8_t instance)
@@ -3957,6 +3955,7 @@ ble_gap_periodic_adv_update_did(uint8_t instance)
static uint8_t buf[sizeof(struct ble_hci_le_set_periodic_adv_data_cp)]; static uint8_t buf[sizeof(struct ble_hci_le_set_periodic_adv_data_cp)];
struct ble_hci_le_set_periodic_adv_data_cp *cmd = (void *) buf; struct ble_hci_le_set_periodic_adv_data_cp *cmd = (void *) buf;
uint16_t opcode; uint16_t opcode;
memset(buf, 0, sizeof(buf)); memset(buf, 0, sizeof(buf));
opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_PERIODIC_ADV_DATA); opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_PERIODIC_ADV_DATA);
@@ -4116,7 +4115,7 @@ int ble_gap_periodic_adv_set_data(uint8_t instance, struct os_mbuf *data)
#if MYNEWT_VAL(BLE_PERIODIC_ADV_ENH) #if MYNEWT_VAL(BLE_PERIODIC_ADV_ENH)
/* update_did and data cannot be set at the same time */ /* update_did and data cannot be set at the same time */
if (params && params -> update_did && data) { if (params && params->update_did && data) {
rc = BLE_HS_EINVAL; rc = BLE_HS_EINVAL;
goto done; goto done;
} }
@@ -4131,7 +4130,7 @@ int ble_gap_periodic_adv_set_data(uint8_t instance, struct os_mbuf *data)
} }
#if MYNEWT_VAL(BLE_PERIODIC_ADV_ENH) #if MYNEWT_VAL(BLE_PERIODIC_ADV_ENH)
if (params && params -> update_did) { if (params && params->update_did) {
rc = ble_gap_periodic_adv_update_did(instance); rc = ble_gap_periodic_adv_update_did(instance);
} }
else { else {
@@ -4387,7 +4386,7 @@ ble_gap_periodic_adv_sync_terminate(uint16_t sync_handle)
int int
ble_gap_periodic_adv_sync_reporting(uint16_t sync_handle, ble_gap_periodic_adv_sync_reporting(uint16_t sync_handle,
bool enable, bool enable,
const struct ble_gap_periodic_adv_sync_report_params *params) const struct ble_gap_periodic_adv_sync_reporting_params *params)
#else #else
int int
ble_gap_periodic_adv_sync_reporting(uint16_t sync_handle, bool enable) ble_gap_periodic_adv_sync_reporting(uint16_t sync_handle, bool enable)
@@ -4556,36 +4555,35 @@ periodic_adv_transfer_enable(uint16_t conn_handle,
return rc; return rc;
} }
/* BLE_HCI_OCF_LE_SET_DEFAULT_SYNC_TRANSFER_PARAMS command api */
int int
periodic_adv_set_default_sync_params(uint16_t conn_handle, periodic_adv_set_default_sync_params(const struct ble_gap_periodic_sync_params *params)
const struct ble_gap_periodic_sync_params *params)
{ {
struct ble_hci_le_periodic_adv_sync_transfer_params_cp cmd; struct ble_hci_le_set_default_periodic_sync_transfer_params_cp cmd;
struct ble_hci_le_periodic_adv_sync_transfer_params_rp rsp;
uint16_t opcode; uint16_t opcode;
int rc;
if (!ble_hs_is_enabled()) {
return BLE_HS_EDISABLED;
}
opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_DEFAULT_SYNC_TRANSFER_PARAMS); opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_DEFAULT_SYNC_TRANSFER_PARAMS);
cmd.conn_handle = htole16(conn_handle); memset(&cmd, 0, sizeof(cmd));
cmd.sync_cte_type = 0x00;
cmd.mode = params->reports_disabled ? 0x01 : 0x02; if (params != NULL) {
cmd.sync_cte_type = 0x00;
cmd.mode = params->reports_disabled ? 0x01 : 0x02;
#if MYNEWT_VAL(BLE_PERIODIC_ADV_ENH) #if MYNEWT_VAL(BLE_PERIODIC_ADV_ENH)
if (params->filter_duplicates) if (!params->reports_disabled && params->filter_duplicates) {
cmd.mode = 0x03; cmd.mode = 0x03;
}
#endif #endif
cmd.skip = htole16(params->skip); cmd.skip = htole16(params->skip);
cmd.sync_timeout = htole16(params->sync_timeout); cmd.sync_timeout = htole16(params->sync_timeout);
rc = ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), &rsp, sizeof(rsp));
if (!rc) {
BLE_HS_DBG_ASSERT(le16toh(rsp.conn_handle) == conn_handle);
} }
return rc; return ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0);
} }
int int