Hi,
> I need to admit that I totally missed the part that you are on FreeRTOS
> but
> I see DEBUG lines that work for you.
> On the first picture you see radio activity every advertising interval
> and
> on the second one you see a single advertising event - all looks good.
Good to know that when it works, it works well :-)
> Anyway, the question now is why BLE_GAP_EVENT_ADV_COMPLETE is sent with
> a
> timeout. Did you try to debug it by setting breakpoint at
> ble_gap_adv_finished?
This is probably because advertising is started with a timeout of 3
minutes :
ble_gap_adv_start(addrType, NULL, 180000, &adv_params,
GAPEventCallback, this);
Isn't that expected?
Anyway, here's the callstack when the BLE_GAP_EVENT_ADV_COMPLETE
event
is received:
Breakpoint 2, Pinetime::Controllers::NimbleController::OnGAPEvent
(this=0x200019e0 <systemTask+96>, event=0x20006b44 <ucHeap+8364>) at
/home/jf/git/PineTime/src/components/ble/NimbleController.cpp:137
137 NRF_LOG_INFO("Advertising event :
BLE_GAP_EVENT_ADV_COMPLETE");
(gdb) bt
#0 Pinetime::Controllers::NimbleController::OnGAPEvent
(this=0x200019e0
<systemTask+96>, event=0x20006b44 <ucHeap+8364>) at
/home/jf/git/PineTime/src/components/ble/NimbleController.cpp:137
#1 0x0000e7c4 in GAPEventCallback (event=<optimized out>,
arg=<optimized out>) at
/home/jf/git/PineTime/src/components/ble/NimbleController.cpp:47
#2 0x000177cc in ble_gap_adv_finished (instance=instance@entry=0
'\000', reason=reason@entry=13, conn_handle=conn_handle@entry=0,
num_events=num_events@entry=0 '\000') at
/home/jf/git/PineTime/src/libs/mynewt-nimble/nimble/host/src/ble_gap.c:802
#3 0x00017aba in ble_gap_slave_timer () at
/home/jf/git/PineTime/src/libs/mynewt-nimble/nimble/host/src/ble_gap.c:1970
#4 0x00017d5e in ble_gap_timer () at
/home/jf/git/PineTime/src/libs/mynewt-nimble/nimble/host/src/ble_gap.c:2044
#5 0x00014a60 in ble_hs_timer_exp (ev=<optimized out>) at
/home/jf/git/PineTime/src/libs/mynewt-nimble/nimble/host/src/ble_hs.c:407
#6 0x0000b748 in ble_npl_event_run (ev=<optimized out>) at
/home/jf/git/PineTime/src/libs/mynewt-nimble/porting/npl/freertos/include/nimble/nimble_npl_os.h:115
#7 nimble_port_run () at /home/jf/git/PineTime/src/main.cpp:266
> Also could you share btsnoop logs?
Do you mean the HCI logs from BLE_MONITOR_RTT I get using btmon ?
I'll
let it run overnight to get fresh logs.
Thanks,
JF
Le 06/08/2021 10:45, Łukasz Rymanowski a écrit :
> Hi JF,
>
> I need to admit that I totally missed the part that you are on FreeRTOS
> but
> I see DEBUG lines that work for you.
> On the first picture you see radio activity every advertising interval
> and
> on the second one you see a single advertising event - all looks good.
>
> Anyway, the question now is why BLE_GAP_EVENT_ADV_COMPLETE is sent with
> a
> timeout. Did you try to debug it by setting breakpoint at
> ble_gap_adv_finished?
> Also could you share btsnoop logs?
>
> Bes
> Łukasz
>
>
> On Tue, 3 Aug 2021 at 20:37, <j...@codingfield.com> wrote:
>
>> > If you have nrf52 you could trace radio activity with some debug pins
>> > BLE_PHY_DBG_TIME_ADDRESS_END_PIN
>> > BLE_PHY_DBG_TIME_WFR_PIN
>> > BLE_PHY_DBG_TIME_TXRXEN_READY_PIN
>> >
>> > Here you can find a description of those.
>> >
>>
https://github.com/apache/mynewt-nimble/blob/master/nimble/drivers/nrf52/syscfg.yml#L35
>>
>> Thanks Łukasz! I've connected my logic analyzer (saleae logic 8) on 3
>> pins, and I've also enabled the logging feature of nimble.
>> When BLE is working fine and start advertising, I can see this in the
>> logs :
>>
>> <info> app: GAP procedure initiated: advertise;
>> <info> app: disc_mode=2
>> <info> app: adv_channel_map=0 own_addr_type=0 adv_filter_policy=0
>> adv_itvl_min=0 adv_itvl_max=0
>> <info> app:
>>
>> And when it stops, after 3 minutes:
>>
>> <info> app: Advertising event : BLE_GAP_EVENT_ADV_COMPLETE
>> <info> app: advertise complete; reason=13n status=13
>>
>> See ble-adv1.png and ble-adv2.png for screenshots of the capture of
>> the
>> 3 pins.
>>
>> I left the device running during the whole day and in the evening, I
>> tried to restart the advertising (with a push button) and... the logs
>> are exactly the same (as if it was advertising correctly for 3 minutes
>> and then complete) but... nothing on the 3 debug pins, they were just
>> flat on low level. Obviously, the device was not found by my ble
>> scanner.
>>
>> Sooo... any ideas :p ?
>>
>> Thanks!
>>
>> JF