Bluetooth: controller: Return current ADI when updating aux
When aux is upated, DID is changed and unlike SID it's only stored in aux PDU. To allow quick access to new DID value, let's just optionally return current ADI value after aux was updated. It will be useful e.g. when updating scan response data if we want to put ADI there. Signed-off-by: Andrzej Kaczmarek <andrzej.kaczmarek@codecoup.pl>
This commit is contained in:
parent
09115429a1
commit
1b1ab16a64
4 changed files with 12 additions and 8 deletions
|
@ -482,7 +482,7 @@ uint8_t ll_adv_params_set(uint16_t interval, uint8_t adv_type,
|
|||
if (pri_hdr->aux_ptr) {
|
||||
uint8_t err;
|
||||
|
||||
err = ull_adv_aux_hdr_set_clear(adv, 0, 0, NULL);
|
||||
err = ull_adv_aux_hdr_set_clear(adv, 0, 0, NULL, NULL);
|
||||
if (err) {
|
||||
/* TODO: cleanup? */
|
||||
return err;
|
||||
|
@ -1139,7 +1139,7 @@ uint8_t ll_adv_enable(uint8_t enable)
|
|||
/* Add sync_info into auxiliary PDU */
|
||||
ret = ull_adv_aux_hdr_set_clear(adv,
|
||||
ULL_ADV_PDU_HDR_FIELD_SYNC_INFO,
|
||||
0, NULL);
|
||||
0, NULL, NULL);
|
||||
if (ret) {
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -120,7 +120,7 @@ uint8_t ll_adv_aux_ad_data_set(uint8_t handle, uint8_t op, uint8_t frag_pref, ui
|
|||
*val_ptr++ = len;
|
||||
*((uint32_t *)val_ptr) = (uint32_t)data;
|
||||
err = ull_adv_aux_hdr_set_clear(adv, ULL_ADV_PDU_HDR_FIELD_AD_DATA,
|
||||
0, value);
|
||||
0, value, NULL);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
@ -262,7 +262,7 @@ uint8_t ll_adv_aux_sr_data_set(uint8_t handle, uint8_t op, uint8_t frag_pref, ui
|
|||
sr_pdu->len = sr_dptr - &sr_pdu->payload[0];
|
||||
|
||||
/* Trigger DID update */
|
||||
err = ull_adv_aux_hdr_set_clear(adv, 0, 0, NULL);
|
||||
err = ull_adv_aux_hdr_set_clear(adv, 0, 0, NULL, NULL);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
@ -368,7 +368,7 @@ int ull_adv_aux_reset(void)
|
|||
uint8_t ull_adv_aux_hdr_set_clear(struct ll_adv_set *adv,
|
||||
uint16_t sec_hdr_add_fields,
|
||||
uint16_t sec_hdr_rem_fields,
|
||||
void *value)
|
||||
void *value, struct pdu_adv_adi *adi)
|
||||
{
|
||||
struct pdu_adv_com_ext_adv *pri_com_hdr, *pri_com_hdr_prev;
|
||||
struct pdu_adv_com_ext_adv *sec_com_hdr, *sec_com_hdr_prev;
|
||||
|
@ -692,6 +692,10 @@ uint8_t ull_adv_aux_hdr_set_clear(struct ll_adv_set *adv,
|
|||
|
||||
pri_adi->did = sys_cpu_to_le16(did);
|
||||
sec_adi->did = sys_cpu_to_le16(did);
|
||||
|
||||
if (adi) {
|
||||
*adi = *pri_adi;
|
||||
}
|
||||
}
|
||||
|
||||
/* No CTEInfo field in primary channel PDU */
|
||||
|
|
|
@ -86,7 +86,7 @@ void ull_adv_aux_offset_get(struct ll_adv_set *adv);
|
|||
uint8_t ull_adv_aux_hdr_set_clear(struct ll_adv_set *adv,
|
||||
uint16_t sec_hdr_add_fields,
|
||||
uint16_t sec_hdr_rem_fields,
|
||||
void *value);
|
||||
void *value, struct pdu_adv_adi *adi);
|
||||
|
||||
/* helper function to calculate common ext adv payload header length */
|
||||
static inline uint8_t
|
||||
|
|
|
@ -198,7 +198,7 @@ uint8_t ll_adv_sync_enable(uint8_t handle, uint8_t enable)
|
|||
/* Remove sync_info from auxiliary PDU */
|
||||
err = ull_adv_aux_hdr_set_clear(adv, 0,
|
||||
ULL_ADV_PDU_HDR_FIELD_SYNC_INFO,
|
||||
NULL);
|
||||
NULL, NULL);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
@ -239,7 +239,7 @@ uint8_t ll_adv_sync_enable(uint8_t handle, uint8_t enable)
|
|||
/* Add sync_info into auxiliary PDU */
|
||||
err = ull_adv_aux_hdr_set_clear(adv,
|
||||
ULL_ADV_PDU_HDR_FIELD_SYNC_INFO,
|
||||
0, NULL);
|
||||
0, NULL, NULL);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue