Hey guys. I am making a firmware using nrf52840 dongle which scans nearby bluetooth devices. I do not want to connect to any device, just send scanning data to another device via UART.
Below is the code where I am getting scanning data on console
static void ble_evt_handler(ble_evt_t const * p_ble_evt, void * p_context)
{
switch (p_ble_evt->header.evt_id)
{
case BLE_GAP_EVT_ADV_REPORT:
{
NRF_LOG_RAW_HEXDUMP_INFO (m_scan.scan_buffer.p_data, m_scan.scan_buffer.len);
NRF_LOG_RAW_INFO ("----------------------------------\r\n");
}
default:
break;
}
}
I changed nrf logging tx pin and connect to my other device and got the same result, but it gives me ascii format such as I want 4C in hex but it is giving me 4C in ascii, so now I want to use uart and send hex data, but same as I am getting in ascii.
My other code is below, but it is not giving me the right result. I want advertisement data to be sent to other device via uart and I will decode the data on that side to get only ble beacons and extract MAC address from the advertised data. I hope you guys understand me.
static void ble_evt_handler(ble_evt_t const * p_ble_evt, void * p_context)
{
ble_gap_evt_t const * p_gap_evt = &p_ble_evt->evt.gap_evt;
uint8_t uuid[30];
uint8_array_t adv_data;
switch (p_ble_evt->header.evt_id)
{
case BLE_GAP_EVT_ADV_REPORT:
{
for (int i=0;i<100;i++)
{
app_uart_put(p_gap_evt->params.adv_report.data.p_data);
}
}
}
}
Your suggestion will be appreciated.
Regards,