Merge pull request #464 from andrzej-kaczmarek/bt5-resolv-fix
nimble/phy: Fix resolving address
diff --git a/hw/drivers/nimble/nrf52/src/ble_phy.c b/hw/drivers/nimble/nrf52/src/ble_phy.c
index 2da23a2..1091d95 100644
--- a/hw/drivers/nimble/nrf52/src/ble_phy.c
+++ b/hw/drivers/nimble/nrf52/src/ble_phy.c
@@ -771,6 +771,9 @@
uint32_t usecs;
uint32_t ticks;
struct ble_mbuf_hdr *ble_hdr;
+ uint8_t *dptr;
+
+ dptr = (uint8_t *)&g_ble_phy_rx_buf[0];
/* Clear events and clear interrupt */
NRF_RADIO->EVENTS_ADDRESS = 0;
@@ -825,7 +828,7 @@
}
/* Call Link Layer receive start function */
- rc = ble_ll_rx_start((uint8_t *)&g_ble_phy_rx_buf[0] + 3,
+ rc = ble_ll_rx_start(dptr + 3,
g_ble_phy_data.phy_chan,
&g_ble_phy_data.rxhdr);
if (rc >= 0) {
@@ -850,11 +853,11 @@
* header (+2 octets).
*/
if (BLE_MBUF_HDR_EXT_ADV(&g_ble_phy_data.rxhdr)) {
- NRF_AAR->ADDRPTR = (uint32_t)&g_ble_phy_rx_buf[5];
+ NRF_AAR->ADDRPTR = (uint32_t)(dptr + 5);
NRF_RADIO->BCC = (BLE_DEV_ADDR_LEN + BLE_LL_PDU_HDR_LEN + 2) * 8 +
g_ble_phy_data.phy_bcc_offset;
} else {
- NRF_AAR->ADDRPTR = (uint32_t)&g_ble_phy_rx_buf[3];
+ NRF_AAR->ADDRPTR = (uint32_t)(dptr + 3);
NRF_RADIO->BCC = (BLE_DEV_ADDR_LEN + BLE_LL_PDU_HDR_LEN) * 8 +
g_ble_phy_data.phy_bcc_offset;
}