LLPM questions

Dear Nordic engineers

I ask a question about LLPM some time ago and I accidentally closed the discussion.Now there is a new follow up.

devzone.nordicsemi.com/.../llpm-questions

1、This issues has a FAE is working on it.We intercepted the packet and found that communication packet in the air is normal.This problem is because the callback function is not entered.Please give me some  good suggestions for this problem.  

2、Because this issues was only discovered during their internal testing, and there are no related complaints about products currently on the market, we suspect it is a problem with the test computer.Can be put on hold for now.

Now they have some new questions and need your help.

1、How to modify the connection interval of LLPM?We try to use function call set_conn_params in ble_conn_params.c to increase the connection interval  when received USB_DC_SUSPEND event.This is correct.When LLPM mode is enabled,the connection interval parameter ranges from 1000us to 7000us.Now we hope that the power consumption can be lower,so we would like to set the connection interval to be larger,but if modify the larger parameter ,it will not take effect.Is there any other way to modify the connection interval?

2、The LLPM mode communicates with the dongle.When there is a lot of communicates data,the event queue will overflow,causing the connection to be disconnected.Please tell me,how to increase the size of the event queue?

Thank you for your support and best regards~

Parents
  • /** @brief Connection Interval in microseconds. Valid range is 7,500 us to 4,000,000 us in 1,250
    * us steps. If LLPM mode is enabled, parameters in the range 1,000 us to 7,000 us in
    * 1,000 us steps are also accepted.

    1. From your screenshot from the SDC documentation i can see connection intervals specified by Bluetooth (from 7.5 ms increadsed with 1.25 ms step) should work fine too. What value do you use? What was the error code that you observed?

    2. What is the disconnection reason? How you know that the disconnection is related to the event queue overflow? We have not seen anything similar on our dongles, do you introduce additional functionalities to the dongle (so that it performs more operations that could delay Bluetooth processing)?

    Best regards,
    Kenneth

  • Dear Kenneth

    1、The following TXT file is the LOG printed after we failed to modify the connection interval.

    00> [00:00:00.000,000] <inf> event_manager: e: module_state_event module:main state:READY
    00> [00:00:00.000,000] <wrn> leds: No effect set
    00> [00:00:00.000,000] <wrn> leds: No effect set
    00> [00:00:00.000,549] <inf> sdc_hci_driver: SoftDevice Controller build revision: 
    00>                                          e5 c7 9c d9 91 00 1d 66  ea fb 6e 7b 98 2f 42 0d |.......f ..n{./B.
    00>                                          f1 60 93 c8                                      |.`..             
    00> [00:00:00.000,854] <inf> power_manager: Activate power manager
    00> [00:00:00.000,976] <inf> event_manager: e: module_state_event module:board state:READY
    00> [00:00:00.001,068] <inf> event_manager: e: module_state_event module:click_detector state:READY
    00> [00:00:00.001,129] <inf> event_manager: e: module_state_event module:leds state:READY
    00> [00:00:00.001,220] <inf> event_manager: e: module_state_event module:ble_discovery state:READY
    00> [00:00:00.001,281] <inf> event_manager: e: module_state_event module:info state:READY
    00> [00:00:00.001,373] <inf> event_manager: e: module_state_event module:usb_state state:READY
    00> [00:00:00.001,434] <inf> event_manager: e: led_event led_id:0 effect:0x411bc
    00> [00:00:00.001,525] <inf> event_manager: e: module_state_event module:usb_dtm state:READY
    00> [00:00:00.001,556] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x0c03 len 3
    00> [00:00:00.001,800] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x1003 len 3
    00> [00:00:00.001,983] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x1001 len 3
    00> [00:00:00.002,197] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x1002 len 3
    00> [00:00:00.002,380] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x2003 len 3
    00> [00:00:00.002,563] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x2002 len 3
    00> [00:00:00.002,716] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x201c len 3
    00> [00:00:00.002,899] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x202f len 3
    00> [00:00:00.003,051] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x2024 len 7
    00> [00:00:00.003,265] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x202e len 5
    00> [00:00:00.003,417] <inf> usb_hid: Device connected
    00> [00:00:00.003,479] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x202a len 3
    00> [00:00:00.003,631] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x2001 len 11
    00> [00:00:00.003,814] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x0c01 len 11
    00> [00:00:00.003,997] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfc01 len 3
    00> [00:00:00.004,150] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfc02 len 3
    00> [00:00:00.004,364] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x2025 len 3
    00> [00:00:00.004,455] <inf> bt_hci_core: No ID address. App must call settings_load()
    00> [00:00:00.004,455] <inf> ble_state: Bluetooth initialized
    00> [00:00:00.004,455] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfd01 len 4
    00> [00:00:00.004,608] <inf> ble_state: LLPM enabled
    00> [00:00:00.004,699] <inf> event_manager: e: usb_state_event state:POWERED
    00> [00:00:00.004,730] <inf> hid_forward: NO_active---
    00> [00:00:00.004,791] <inf> event_manager: e: module_state_event module:ble_state state:READY
    00> [00:00:00.004,852] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfd04 len 4
    00> [00:00:00.005,096] <inf> event_manager: e: led_ready_event led_id:0 effect:0x411bc
    00> [00:00:00.005,187] <inf> event_manager: e: module_state_event module:ble_conn_params state:READY
    00> [00:00:00.005,249] <inf> event_manager: e: module_state_event module:ble_scan state:READY
    00> [00:00:00.005,310] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x1009 len 3
    00> [00:00:00.005,493] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfc09 len 3
    00> [00:00:00.007,019] <inf> usb_hid: Device suspended
    00> [00:00:00.007,019] <wrn> usb_state: USB suspend_send_close_led
    00> [00:00:00.007,019] <wrn> usb_state: USB suspend
    00> [00:00:00.010,406] <inf> settings_loader: Settings loaded
    00> [00:00:00.010,498] <inf> event_manager: e: module_state_event module:hid_forward state:READY
    00> [00:00:00.010,589] <inf> event_manager: e: usb_state_event state:SUSPENDED
    00> [00:00:00.010,589] <inf> hid_forward: NO_active---
    00> [00:00:00.010,650] <inf> event_manager: e: module_state_event module:settings_loader state:READY
    00> [00:00:00.010,681] <inf> ble_bond: Device has 1 identities
    00> [00:00:47.991,760] <inf> hid_forward: read-2=20
    00> [00:00:47.991,821] <inf> usb_state: revc-21-
    00> [00:00:47.991,851] <err> usb_state: n_len =21 5000
    00> [00:00:47.992,767] <inf> hid_forward: read-2=20
    00> [00:00:48.107,757] <inf> hid_forward: read-2=20
    00> [00:00:48.107,788] <inf> usb_state: revc-21-
    00> [00:00:48.107,849] <err> usb_state: n_len =21 5000
    00> [00:00:48.108,764] <inf> hid_forward: read-2=20
    00> [00:00:48.544,738] <inf> hid_forward: read-2=20
    00> [00:00:48.544,799] <inf> usb_state: revc-21-
    00> [00:00:48.544,860] <err> usb_state: n_len =21 5000
    00> [00:00:48.545,745] <inf> hid_forward: read-2=20
    00> [00:00:48.650,726] <inf> hid_forward: read-2=20
    00> [00:00:48.650,817] <inf> usb_state: revc-21-
    00> [00:00:48.650,878] <err> usb_state: n_len =21 5000
    00> [00:00:48.651,763] <inf> hid_forward: read-2=20
    00> [00:00:52.240,875] <inf> usb_hid: Device suspended
    00> [00:00:52.240,936] <wrn> usb_state: USB suspend_send_close_led
    00> [00:00:52.240,966] <wrn> usb_state: USB suspend
    00> [00:00:52.241,027] <inf> usb_state: USB HID 0x20003c18 disabled
    00> [00:00:52.241,210] <inf> event_manager: e: hid_report_subscription_event report 0x2 notification disabled by 0x20003c18
    00> [00:00:52.241,394] <inf> event_manager: e: hid_report_subscription_event report 0x7 notification disabled by 0x20003c18
    00> [00:00:52.241,485] <inf> event_manager: e: hid_report_subscription_event report 0x5 notification disabled by 0x20003c18
    00> [00:00:52.241,577] <inf> event_manager: e: hid_report_subscription_event report 0x6 notification disabled by 0x20003c18
    00> [00:00:52.241,668] <inf> event_manager: e: hid_report_subscription_event report 0x3 notification disabled by 0x20003c18
    00> [00:00:52.241,729] <inf> event_manager: e: usb_state_event state:SUSPENDED
    00> [00:00:52.241,729] <inf> hid_forward: NO_active---
    00> [00:00:53.218,750] <wrn> power_manager: SEND_SUSPEND_MS
    00> [00:00:53.218,841] <inf> hid_forward: REPORT_ID_VENDOR_OUT=0
    00> [00:00:53.220,733] <inf> hid_forward: hogp_write
    00> [00:00:53.317,596] <wrn> power_manager: SEND_SUSPEND_MS
    00> [00:00:53.317,657] <inf> hid_forward: REPORT_ID_VENDOR_OUT=0
    00> [00:00:53.318,756] <inf> hid_forward: hogp_write
    00> [00:00:53.416,015] <wrn> power_manager: SEND_SUSPEND_MS
    00> [00:00:53.416,107] <inf> hid_forward: REPORT_ID_VENDOR_OUT=0
    00> [00:00:53.417,724] <inf> hid_forward: hogp_write
    00> [00:00:53.514,648] <wrn> power_manager: SEND_SUSPEND_MS
    00> [00:00:53.514,739] <inf> hid_forward: REPORT_ID_VENDOR_OUT=0
    00> [00:00:53.515,747] <inf> hid_forward: hogp_write
    00> [00:00:53.613,586] <wrn> power_manager: SEND_SUSPEND_MS
    00> [00:00:53.613,677] <inf> hid_forward: REPORT_ID_VENDOR_OUT=0
    00> [00:00:53.614,746] <inf> hid_forward: hogp_write
    00> [00:00:53.711,975] <wrn> power_manager: SEND_SUSPEND_MS
    00> [00:00:53.712,036] <inf> hid_forward: REPORT_ID_VENDOR_OUT=0
    00> [00:00:53.713,745] <inf> hid_forward: hogp_write
    00> [00:00:53.810,577] <inf> power_manager: System power down-1
    00> [00:00:53.810,607] <inf> event_manager: e: power_down_event
    00> [00:00:53.810,729] <inf> ble_scan: handle_power_down_event
    00> [00:00:53.810,729] <inf> nrf_bt_scan: bt_scan_stop
    00> [00:00:53.810,760] <wrn> ble_scan: Active scan already disabled
    00> [00:00:53.810,791] <inf> power_manager: Power down the board
    00> [00:00:53.810,791] <wrn> power_manager: System suspended
    00> [00:00:53.810,852] <inf> event_manager: e: module_state_event module:board state:OFF
    00> [00:00:53.811,004] <inf> event_manager: e: module_state_event module:click_detector state:OFF
    00> [00:00:53.811,096] <inf> event_manager: e: module_state_event module:leds state:OFF
    00> [00:00:53.811,218] <inf> event_manager: e: module_state_event module:ble_bond state:OFF
    00> [00:00:53.811,248] <inf> event_manager: e: ble_peer_search_event inactive
    00> [00:00:53.811,462] <inf> event_manager: e: module_state_event module:ble_scan state:OFF
    00> [00:00:53.811,523] <inf> event_manager: e: module_state_event module:usb_dtm state:OFF
    00> [00:00:53.811,798] <inf> event_manager: e: led_event led_id:1 effect:0x41194
    00> [00:00:59.576,995] <inf> event_manager: e: ble_peer_conn_params_event peer=0x20002ee8 min=6 max=6 lat=99 timeout=400 (required)
    00> [00:00:59.576,995] <inf> ble_conn_params: Request to update conn: 0x20002ee8 latency to: 99
    00> [00:00:59.577,026] <inf> ble_conn_params: conn_params_update_required
    00> [00:00:59.577,026] <inf> ble_conn_params: change conn interval
    00> [00:00:59.577,056] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfd02 len 13
    00> [00:00:59.577,270] <inf> ble_conn_params: Conn params for peer: 0x20002ee8 set: LLPM, latency: 99
    00> [00:00:59.577,301] <inf> ble_conn_params: current_peers 0
    00> [00:00:59.622,802] <inf> event_manager: e: ble_peer_conn_params_event peer=0x20002ee8 min=d07 max=d07 lat=9 timeout=400 (updated)
    00> [00:01:04.845,916] <inf> event_manager: e: ble_peer_conn_params_event peer=0x20002ee8 min=6 max=6 lat=0 timeout=400 (required)
    00> [00:01:04.845,947] <inf> ble_conn_params: Request to update conn: 0x20002ee8 latency to: 0
    00> [00:01:04.845,947] <inf> ble_conn_params: conn_params_update_required
    00> [00:01:04.845,947] <inf> ble_conn_params: normal conn interval
    00> [00:01:04.845,977] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfd02 len 13
    00> [00:01:04.846,160] <inf> ble_conn_params: Conn params for peer: 0x20002ee8 set: LLPM, latency: 0
    00> [00:01:04.846,160] <inf> ble_conn_params: current_peers 0
    00> [00:01:04.859,832] <inf> hid_forward: read-2=20
    00> [00:01:04.859,832] <inf> hid_forward: read-2
    00> [00:01:04.859,863] <inf> event_manager: e: wake_up_event
    00> [00:01:04.859,893] <inf> power_manager: Wake up the board
    00> [00:01:04.860,015] <inf> ble_scan: handle_power_down_event
    00> [00:01:04.860,015] <inf> ble_scan: Max number of peers connected - scanning disabled
    00> [00:01:04.860,046] <inf> usb_state: USB wakeup requested
    00> [00:01:04.860,107] <inf> event_manager: e: module_state_event module:board state:READY
    00> [00:01:04.860,168] <inf> event_manager: e: module_state_event module:click_detector state:READY
    00> [00:01:04.860,260] <inf> event_manager: e: module_state_event module:leds state:READY
    00> [00:01:04.860,321] <inf> event_manager: e: module_state_event module:ble_bond state:READY
    00> [00:01:04.860,351] <inf> ble_scan: Max number of peers connected - scanning disabled
    00> [00:01:04.860,412] <inf> event_manager: e: module_state_event module:ble_scan state:READY
    00> [00:01:04.860,473] <inf> event_manager: e: module_state_event module:usb_dtm state:READY
    00> [00:01:04.860,626] <inf> event_manager: e: led_ready_event led_id:0 effect:0x411bc
    00> [00:01:04.860,687] <inf> event_manager: e: led_ready_event led_id:1 effect:0x41194
    00> [00:01:04.865,081] <inf> usb_hid: Device resumed
    00> [00:01:04.865,081] <inf> usb_hid: from suspend
    00> [00:01:04.865,112] <wrn> usb_state: USB resume
    00> [00:01:04.865,203] <inf> usb_state: USB HID 0x20003c18 enabled
    00> [00:01:04.865,203] <inf> usb_state: REPORT_PROTOCOL active
    00> [00:01:04.865,264] <inf> hid_forward: REPORT_ID_VENDOR_OUT=0
    00> [00:01:04.865,295] <inf> event_manager: e: usb_state_event state:ACTIVE
    00> [00:01:04.865,295] <inf> hid_forward: active----0
    00> [00:01:04.865,386] <inf> event_manager: e: hid_report_subscription_event report 0x2 notification enabled by 0x20003c18
    00> [00:01:04.865,478] <inf> event_manager: e: hid_report_subscription_event report 0x7 notification enabled by 0x20003c18
    00> [00:01:04.865,600] <inf> event_manager: e: hid_report_subscription_event report 0x1 notification enabled by 0x20003c18
    00> [00:01:04.865,692] <inf> event_manager: e: hid_report_subscription_event report 0x5 notification enabled by 0x20003c18
    00> [00:01:04.865,783] <inf> event_manager: e: hid_report_subscription_event report 0x6 notification enabled by 0x20003c18
    00> [00:01:04.865,936] <inf> event_manager: e: hid_report_subscription_event report 0x3 notification enabled by 0x20003c18
    00> [00:01:04.866,058] <inf> event_manager: e: hid_report_subscription_event report 0x1 notification enabled by 0x20003c18
    00> [00:01:04.866,760] <inf> hid_forward: read-2=20
    00> [00:01:04.873,748] <inf> hid_forward: hogp_write
    00> [00:01:04.915,466] <err> sdc_hci_driver: SoftDevice Controller ASSERT: 62, 1311
    00> [00:01:04.915,466] <err> os: ***** HARD FAULT *****
    00> [00:01:04.915,466] <err> os:   Fault escalation (see below)
    00> [00:01:04.915,466] <err> os: r0/a1:  0x00000003  r1/a2:  0x200028c8  r2/a3:  0x20000e48
    00> [00:01:04.915,466] <err> os: r3/a4:  0x00000000 r12/ip:  0x00000001 r14/lr:  0x0003d093
    00> [00:01:04.915,496] <err> os:  xpsr:  0x61000011
    00> [00:01:04.915,496] <err> os: Faulting instruction address (r15/pc): 0x000383f2
    00> [00:01:04.915,496] <err> os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0
    00> [00:01:04.915,496] <err> os: Fault during interrupt handling
    00> 
    00> [00:01:04.915,496] <err> os: Current thread: 0x20003408 (unknown)
    00> 
    00> [00:01:12.041,717] <err> fatal_error: Resetting system
    00> 
    00> [00:00:00.000,000] <inf> event_manager: e: module_state_event module:main state:READY
    00> [00:00:00.000,000] <wrn> leds: No effect set
    00> [00:00:00.000,000] <wrn> leds: No effect set
    00> [00:00:00.000,457] <inf> sdc_hci_driver: SoftDevice Controller build revision: 
    00>                                          e5 c7 9c d9 91 00 1d 66  ea fb 6e 7b 98 2f 42 0d |.......f ..n{./B.
    00>                                          f1 60 93 c8                                      |.`..             
    00> [00:00:00.000,762] <inf> power_manager: Activate power manager
    00> [00:00:00.000,885] <inf> event_manager: e: module_state_event module:board state:READY
    00> [00:00:00.000,946] <inf> event_manager: e: module_state_event module:click_detector state:READY
    00> [00:00:00.001,037] <inf> event_manager: e: module_state_event module:leds state:READY
    00> [00:00:00.001,098] <inf> event_manager: e: module_state_event module:ble_discovery state:READY
    00> [00:00:00.001,190] <inf> event_manager: e: module_state_event module:info state:READY
    00> [00:00:00.001,251] <inf> event_manager: e: module_state_event module:usb_state state:READY
    00> [00:00:00.001,342] <inf> event_manager: e: led_event led_id:0 effect:0x411bc
    00> [00:00:00.001,403] <inf> event_manager: e: module_state_event module:usb_dtm state:READY
    00> [00:00:00.001,464] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x0c03 len 3
    00> [00:00:00.001,708] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x1003 len 3
    00> [00:00:00.001,861] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x1001 len 3
    00> [00:00:00.002,044] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x1002 len 3
    00> [00:00:00.002,288] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x2003 len 3
    00> [00:00:00.002,471] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x2002 len 3
    00> [00:00:00.002,624] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x201c len 3
    00> [00:00:00.002,807] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x202f len 3
    00> [00:00:00.002,960] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x2024 len 7
    00> [00:00:00.003,143] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x202e len 5
    00> [00:00:00.003,326] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x202a len 3
    00> [00:00:00.003,509] <inf> usb_hid: Device connected
    00> [00:00:00.003,540] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x2001 len 11
    00> [00:00:00.003,723] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x0c01 len 11
    00> [00:00:00.003,906] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfc01 len 3
    00> [00:00:00.004,058] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfc02 len 3
    00> [00:00:00.004,272] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x2025 len 3
    00> [00:00:00.004,333] <inf> bt_hci_core: No ID address. App must call settings_load()
    00> [00:00:00.004,333] <inf> ble_state: Bluetooth initialized
    00> [00:00:00.004,364] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfd01 len 4
    00> [00:00:00.004,516] <inf> ble_state: LLPM enabled
    00> [00:00:00.004,608] <inf> event_manager: e: usb_state_event state:POWERED
    00> [00:00:00.004,608] <inf> hid_forward: NO_active---
    00> [00:00:00.004,669] <inf> event_manager: e: module_state_event module:ble_state state:READY
    00> [00:00:00.004,760] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfd04 len 4
    00> [00:00:00.005,004] <inf> event_manager: e: led_ready_event led_id:0 effect:0x411bc
    00> [00:00:00.005,065] <inf> event_manager: e: module_state_event module:ble_conn_params state:READY
    00> [00:00:00.005,157] <inf> event_manager: e: module_state_event module:ble_scan state:READY
    00> [00:00:00.009,857] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x1009 len 3
    00> [00:00:00.010,009] <inf> usb_hid: Device suspended
    00> [00:00:00.010,040] <wrn> usb_state: USB suspend_send_close_led
    00> [00:00:00.010,040] <wrn> usb_state: USB suspend
    00> [00:00:00.010,070] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfc09 len 3
    00> [00:00:00.011,505] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x2027 len 42
    00> [00:00:00.011,688] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x204e len 11
    00> [00:00:00.011,871] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x202d len 4
    00> [00:00:00.012,054] <inf> settings_loader: Settings loaded
    00> [00:00:00.012,115] <inf> event_manager: e: module_state_event module:hid_forward state:READY
    00> [00:00:00.012,207] <inf> event_manager: e: usb_state_event state:SUSPENDED
    00> [00:00:00.012,207] <inf> hid_forward: NO_active---
    00> [00:00:00.012,268] <inf> event_manager: e: module_state_event module:settings_loader state:READY
    00> [00:00:00.012,298] <inf> ble_bond: Device has 1 identities
    00> [00:00:00.012,298] <inf> ble_bond: Selected BLE peers
    00> [00:00:00.012,420] <inf> event_manager: e: ble_peer_operation_event SELECTED bt_app_id=0 bt_stack_id=0
    00> [00:00:00.012,481] <inf> event_manager: e: module_state_event module:ble_bond state:READY
    00> [00:00:00.012,756] <inf> ble_scan: Address filter added D6:7B:DE:5D:65:3A (random)
    00> [00:00:00.012,817] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x2005 len 9
    00> [00:00:00.013,000] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x200b len 10
    00> [00:00:00.013,183] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x200c len 5
    00> [00:00:00.013,427] <inf> ble_scan: Scan started
    00> [00:00:00.013,519] <inf> event_manager: e: led_event led_id:1 effect:0x4118c
    00> [00:00:00.013,580] <inf> event_manager: e: ble_peer_search_event active
    00> [00:00:00.013,702] <inf> event_manager: e: led_event led_id:1 effect:0x4119c
    00> [00:00:00.013,793] <inf> event_manager: e: led_ready_event led_id:1 effect:0x4118c
    00> [00:00:00.028,503] <inf> ble_scan: Filters matched. D6:7B:DE:5D:65:3A (random) connectable
    00> [00:00:00.028,503] <inf> nrf_bt_scan: bt_scan_stop
    00> [00:00:00.028,533] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x200c len 5
    00> [00:00:00.028,808] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x200d len 28
    00> [00:00:00.029,174] <inf> nrf_bt_scan: Connecting (0)
    00> [00:00:00.029,174] <inf> ble_scan: Connecting done
    00> [00:00:00.065,643] <inf> ble_state: Setting TX power to: 0
    00> [00:00:00.065,673] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfc0e len 7
    00> [00:00:00.065,826] <inf> ble_state: TX power returned by command: 0
    00> [00:00:00.065,856] <inf> ble_state: Connected to D6:7B:DE:5D:65:3A (random)
    00> [00:00:00.066,131] <inf> event_manager: e: ble_peer_event id=0x20002ee8 CONNECTED
    00> [00:00:00.066,223] <inf> event_manager: e: led_event led_id:1 effect:0x4119c
    00> [00:00:00.070,220] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0x2019 len 31
    00> [00:00:00.119,476] <inf> usb_hid: Device resumed
    00> [00:00:00.119,476] <inf> usb_hid: from suspend
    00> [00:00:00.119,506] <wrn> usb_state: USB resume
    00> [00:00:00.119,567] <inf> usb_hid: Device reset detected
    00> [00:00:00.119,567] <inf> hid_forward: REPORT_ID_VENDOR_OUT=-22
    00> [00:00:00.119,598] <inf> event_manager: e: usb_state_event state:POWERED
    00> [00:00:00.119,628] <inf> hid_forward: NO_active---
    00> [00:00:00.130,340] <inf> ble_state: Security with D6:7B:DE:5D:65:3A (random) level 2
    00> [00:00:00.130,523] <inf> event_manager: e: ble_peer_event id=0x20002ee8 SECURED
    00> [00:00:00.130,676] <inf> event_manager: e: led_event led_id:1 effect:0x4119c
    00> [00:00:00.152,832] <inf> ble_state: MTU exchange done
    00> [00:00:00.207,214] <inf> usb_hid: Device reset detected
    00> [00:00:00.280,120] <inf> ble_discovery: LLPM supported
    00> [00:00:00.323,028] <inf> usb_hid: Device configured
    00> [00:00:00.323,028] <wrn> usb_state: USB_DC_CONFIGURED
    00> [00:00:00.323,181] <inf> usb_state: USB HID 0x20003c18 enabled
    00> [00:00:00.323,181] <inf> usb_state: REPORT_PROTOCOL active
    00> [00:00:00.323,242] <inf> event_manager: e: usb_state_event state:ACTIVE
    00> [00:00:00.323,242] <inf> hid_forward: active----0
    00> [00:00:00.323,303] <inf> event_manager: e: usb_hid_event id:0x20003c18 enabled
    00> [00:00:00.323,394] <inf> event_manager: e: hid_report_subscription_event report 0x2 notification enabled by 0x20003c18
    00> [00:00:00.323,486] <inf> event_manager: e: hid_report_subscription_event report 0x7 notification enabled by 0x20003c18
    00> [00:00:00.323,608] <inf> event_manager: e: hid_report_subscription_event report 0x1 notification enabled by 0x20003c18
    00> [00:00:00.323,730] <inf> event_manager: e: hid_report_subscription_event report 0x5 notification enabled by 0x20003c18
    00> [00:00:00.323,822] <inf> event_manager: e: hid_report_subscription_event report 0x6 notification enabled by 0x20003c18
    00> [00:00:00.323,913] <inf> event_manager: e: hid_report_subscription_event report 0x3 notification enabled by 0x20003c18
    00> [00:00:00.324,005] <inf> event_manager: e: hid_report_subscription_event report 0x1 notification enabled by 0x20003c18
    00> [00:00:00.324,035] <inf> hid_forward: REPORT_ID_VENDOR_OUT=-22
    00> [00:00:00.324,066] <wrn> usb_state: id=0 , time =0
    00> [00:00:00.324,218] <wrn> usb_hid: len 332 doesn't match Report Descriptor size
    00> [00:00:00.346,191] <inf> usb_state: No action on keyboard LEDs report = 3
    00> [00:00:00.346,252] <inf> hid_forward: REPORT_ID_KEYBOARD_LEDS=-22
    00> [00:00:00.400,299] <inf> ble_discovery: HW ID: 8be2be5a63dd4b5f
    00> [00:00:00.475,158] <inf> ble_discovery: VID: 687 PID: 04
    00> [00:00:00.580,139] <inf> ble_discovery: HIDS discovery procedure succeeded
    00> [00:00:00.580,200] <inf> event_manager: e: ble_discovery_complete_event
    00> [00:00:00.580,841] <inf> hid_forward: Peripheral 0x200029c8 registered and linked to 0x2000397c
    00> [00:00:00.580,841] <inf> ble_conn_params: normal conn interval
    00> [00:00:00.580,871] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfd02 len 13
    00> [00:00:00.581,054] <inf> ble_conn_params: Conn params for peer: 0x20002ee8 set: LLPM, latency: 0
    00> [00:00:00.632,934] <inf> event_manager: e: ble_peer_conn_params_event peer=0x20002ee8 min=d01 max=d01 lat=0 timeout=400 (updated)
    00> [00:00:00.656,097] <inf> hid_forward: Subscriber to rep id:2
    00> [00:00:00.656,127] <inf> hid_forward: Subscriber to rep id:1
    00> [00:00:00.656,158] <inf> hid_forward: Subscriber to rep id:3
    00> [00:00:00.656,188] <inf> hid_forward: Subscriber to rep id:6
    00> [00:00:00.656,188] <inf> hid_forward: Subscriber to rep id:8
    00> [00:00:00.656,188] <inf> hid_forward: Subscriber to rep id:12
    00> [00:00:00.656,188] <inf> hid_forward: is_ble_discovery_complete_event----
    00> [00:00:00.658,172] <inf> hid_forward: REPORT_ID_KEYBOARD_LEDS=0
    00> [00:00:00.660,156] <inf> hid_forward: hogp_write
    00> [00:00:01.046,386] <inf> event_manager: e: ble_peer_conn_params_event peer=0x20002ee8 min=6 max=6 lat=99 timeout=400 (required)
    00> [00:00:01.046,417] <inf> ble_conn_params: Request to update conn: 0x20002ee8 latency to: 99
    00> [00:00:01.046,417] <inf> ble_conn_params: conn_params_update_required
    00> [00:00:01.046,417] <inf> ble_conn_params: normal conn interval
    00> [00:00:01.046,447] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfd02 len 13
    00> [00:00:01.046,691] <inf> ble_conn_params: Conn params for peer: 0x20002ee8 set: LLPM, latency: 99
    00> [00:00:01.046,691] <inf> ble_conn_params: current_peers 0
    00> [00:00:01.092,193] <inf> event_manager: e: ble_peer_conn_params_event peer=0x20002ee8 min=d01 max=d01 lat=99 timeout=400 (updated)
    00> [00:00:01.094,390] <inf> event_manager: e: ble_peer_conn_params_event peer=0x20002ee8 min=6 max=6 lat=0 timeout=400 (required)
    00> [00:00:01.094,390] <inf> ble_conn_params: Request to update conn: 0x20002ee8 latency to: 0
    00> [00:00:01.094,421] <inf> ble_conn_params: conn_params_update_required
    00> [00:00:01.094,421] <inf> ble_conn_params: normal conn interval
    00> [00:00:01.094,451] <wrn> bt_hci_core: buf 0x2000c9f0 opcode 0xfd02 len 13
    00> [00:00:01.094,696] <inf> ble_conn_params: Conn params for peer: 0x20002ee8 set: LLPM, latency: 0
    00> [00:00:01.094,696] <inf> ble_conn_params: current_peers 0
    00> [00:00:01.239,196] <inf> event_manager: e: ble_peer_conn_params_event peer=0x20002ee8 min=d01 max=d01 lat=0 timeout=400 (updated)
    00> [00:00:02.535,186] <inf> nrf_bt_scan: bt_scan_stop
    00> [00:00:02.535,186] <wrn> ble_scan: Active scan already disabled
    00> [00:00:02.535,217] <inf> ble_scan: Max number of peers connected - scanning disabled
    00> [00:00:02.535,247] <inf> event_manager: e: ble_peer_search_event inactive
    00> [00:00:02.535,400] <inf> event_manager: e: led_event led_id:1 effect:0x41194
    00> [00:00:02.535,522] <inf> event_manager: e: led_ready_event led_id:1 effect:0x41194
    (Connection lost)

    2、In addition, we have solved the problem of event queue overflow. Thanks again for your support.

    3、About the problem of abnormal CAP and NUM indicators,We intercepted the packet and found that communication packet in the air is normal.This problem is because the callback function is not entered.

    00> [00000000] <inf> event_manager: e: module_state_event module:main state:READY
    00> [00000130] <inf> sdc_hci_driver: SoftDevice Controller build revision: 
    00>                                  e5 c7 9c d9 91 00 1d 66  ea fb 6e 7b 98 2f 42 0d |.......f ..n{./B.
    00>                                  f1 60 93 c8                                      |.`..             
    00> [00000136] <inf> hid_state: Init HID state!
    00> [00000140] <inf> power_manager: Activate power manager
    00> [00000157] <inf> light_design: Can LED_DRIVER_SDB_GPIO_PIN 
    00> [00000158] <inf> spi_nrfx_spim: CS control inhibited (no GPIO device)
    00> [00000197] <inf> usb_hid: Device connected
    00> [00000224] <inf> event_manager: e: module_state_event module:board state:READY
    00> [00000227] <inf> event_manager: e: module_state_event module:battery_meas state:READY
    00> [00000230] <inf> event_manager: e: module_state_event module:info state:READY
    00> [00000232] <inf> event_manager: e: module_state_event module:usb_state state:READY
    00> [00000235] <inf> event_manager: e: module_state_event module:hfclk_lock state:READY
    00> [00000238] <inf> event_manager: e: module_state_event module:scan_timer state:READY
    00> [00000240] <inf> event_manager: e: usb_state_event state:POWERED
    00> [00000240] <inf> light_design: BAT_CHARGING
    00> [00000242] <inf> event_manager: e: module_state_event module:light_design state:READY
    00> [00000306] <inf> usb_hid: Device suspended
    00> [00000306] <wrn> usb_state: USB suspend
    00> [00000324] <inf> bt_hci_core: No ID address. App must call settings_load()
    00> [00000324] <inf> ble_state: Bluetooth initialized
    00> [00000330] <inf> ble_state: LLPM enabled
    00> [00000347] <inf> event_manager: e: usb_state_event state:SUSPENDED
    00> [00000347] <inf> light_design: BAT_default
    00> [00000349] <inf> event_manager: e: module_state_event module:ble_state state:READY
    00> [00000360] <inf> hids: Service initialized
    00> [00000363] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [00000363] <wrn> hid_state: No linked report sink
    00> [00000378] <inf> event_manager: e: module_state_event module:ble_adv state:READY
    00> [00000381] <inf> event_manager: e: module_state_event module:bas state:READY
    00> [00000383] <inf> event_manager: e: module_state_event module:hids state:READY
    00> [00001331] <inf> flash: Settings read-func_ram_tab
    00> [00001598] <inf> settings_loader: Settings loaded
    00> [00001623] <inf> event_manager: e: module_state_event module:settings_loader state:READY
    00> [00001623] <inf> ble_bond: Device has 6 identities
    00> [00001639] <inf> event_manager: e: module_state_event module:ble_bond state:READY
    00> [00001642] <inf> event_manager: e: mulprotocol_event code_1=1    code_1=0
    00> [00001657] <inf> event_manager: e: selector_event id: 0 position: 1
    00> [00001657] <inf> ble_bond: selector_event_handler state = 3
    00> [00001657] <inf> ble_bond: Selected BLE peers
    00> [00001658] <inf> ble_bond: get_bt_stack_peer_id    
    00> [00001673] <inf> event_manager: e: ble_peer_operation_event SELECTED bt_app_id=1 bt_stack_id=2
    00> [00001673] <inf> ble_adv: event->op = 1 state = 3
    00> [00001674] <inf> ble_adv: Advertising stopped
    00> [00001674] <inf> ble_adv: cur_identity = 2 
    00> [00001675] <inf> ble_adv: Advertising stopped
    00> [00001675] <inf> ble_adv: direct = 0 0 0
    00> [00001676] <inf> ble_adv: Use fast advertising
    00> [00001722] <inf> ble_adv: Advertising started
    00> [00001737] <inf> event_manager: e: ble_peer_search_event inactive
    00> [00001738] <inf> event_manager: e: ble_peer_search_event inactive
    00> [00001739] <inf> event_manager: e: ble_peer_search_event active
    00> [00004462] <inf> usb_hid: Device resumed
    00> [00004462] <inf> usb_hid: from suspend
    00> [00004463] <wrn> usb_state: USB resume
    00> [00004464] <inf> usb_hid: Device reset detected
    00> [00004465] <inf> event_manager: e: usb_state_event state:POWERED
    00> [00004466] <inf> light_design: BAT_CHARGING
    00> [00006801] <inf> usb_hid: Device reset detected
    00> [00010928] <inf> usb_hid: Device configured
    00> [00010931] <inf> usb_state: USB HID 0x20004654 enabled
    00> [00010932] <inf> usb_state: REPORT_PROTOCOL active
    00> [00010934] <inf> event_manager: e: usb_state_event state:ACTIVE
    00> [00010934] <inf> light_design: BAT_CHARGING
    00> [00010961] <inf> usb_state: set_idle
    00> [35968367] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [35968368] <inf> hid_state: Send keybit
    00> [35968432] <inf> usb_state: SET_REPORT
    00> [35968432] <inf> usb_state: No action on keyboard LEDs report 2
    00> [35974000] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [35974001] <inf> hid_state: Send keybit
    00> [36024244] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36024245] <inf> hid_state: Send keybit
    00> [36024280] <inf> usb_state: SET_REPORT
    00> [36024280] <inf> usb_state: No action on keyboard LEDs report 0
    00> [36028853] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36028853] <inf> hid_state: Send keybit
    00> [36167233] <inf> battery_meas: Battery level: 97% (4155 mV)
    00> [36167235] <inf> event_manager: e: battery_level_event level=97
    00> [36487297] <inf> battery_meas: Battery level: 99% (4184 mV)
    00> [36487299] <inf> event_manager: e: battery_level_event level=99
    00> [36487914] <inf> scan_timer: SAVE_FLASH_TIME 
    00> [36521622] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36521623] <inf> hid_state: Send keybit
    00> [36521651] <inf> usb_state: SET_REPORT
    00> [36521651] <inf> usb_state: No action on keyboard LEDs report 2
    00> [36525392] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36525393] <inf> hid_state: Send keybit
    00> [36546384] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36546384] <inf> hid_state: Send keybit
    00> [36546424] <inf> usb_state: SET_REPORT
    00> [36546424] <inf> usb_state: No action on keyboard LEDs report 0
    00> [36549914] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36549914] <inf> hid_state: Send keybit
    00> [36603723] <inf> scan_timer: SAVE_FLASH_TIME 
    00> [36620879] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36620880] <inf> hid_state: Send keybit
    00> [36620900] <inf> usb_state: SET_REPORT
    00> [36620900] <inf> usb_state: No action on keyboard LEDs report 2
    00> [36626001] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36626001] <inf> hid_state: Send keybit
    00> [36649104] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36649104] <inf> hid_state: Send keybit
    00> [36649148] <inf> usb_state: SET_REPORT
    00> [36649148] <inf> usb_state: No action on keyboard LEDs report 0
    00> [36654741] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36654742] <inf> hid_state: Send keybit
    00> [36661808] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36661808] <inf> hid_state: Send keybit
    00> [36661872] <inf> usb_state: SET_REPORT
    00> [36661872] <inf> usb_state: No action on keyboard LEDs report 2
    00> [36666480] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36666481] <inf> hid_state: Send keybit
    00> [36698991] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36698992] <inf> hid_state: Send keybit
    00> [36699018] <inf> usb_state: SET_REPORT
    00> [36699018] <inf> usb_state: No action on keyboard LEDs report 0
    00> [36703605] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36703606] <inf> hid_state: Send keybit
    00> [36807361] <inf> battery_meas: Battery level: 97% (4156 mV)
    00> [36807363] <inf> event_manager: e: battery_level_event level=97
    00> [36955888] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36955888] <inf> hid_state: Send keybit
    00> [36955909] <inf> usb_state: SET_REPORT
    00> [36955909] <inf> usb_state: No action on keyboard LEDs report 2
    00> [36958576] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [36958577] <inf> hid_state: Send keybit
    00> [37029877] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [37029878] <inf> hid_state: Send keybit
    00> [37029938] <inf> usb_state: SET_REPORT
    00> [37029938] <inf> usb_state: No action on keyboard LEDs report 3
    00> [37032624] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [37032625] <inf> hid_state: Send keybit
    00> [37067376] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [37067377] <inf> hid_state: Send keybit
    00> [37067407] <inf> usb_state: SET_REPORT
    00> [37067408] <inf> usb_state: No action on keyboard LEDs report 7
    00> [37070577] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [37070577] <inf> hid_state: Send keybit
    00> [37127425] <inf> battery_meas: Battery level: 96% (4148 mV)
    00> [37127436] <inf> event_manager: e: battery_level_event level=96
    00> [37447489] <inf> battery_meas: Battery level: 99% (4183 mV)
    00> [37447491] <inf> event_manager: e: battery_level_event level=99
    00> [37767553] <inf> battery_meas: Battery level: 100% (4192 mV)
    00> [37767555] <inf> event_manager: e: battery_level_event level=100
    00> [38087617] <inf> battery_meas: Battery level: 95% (4142 mV)
    00> [38087619] <inf> event_manager: e: battery_level_event level=95
    00> [38407681] <inf> battery_meas: Battery level: 95% (4138 mV)
    00> [38407683] <inf> event_manager: e: battery_level_event level=95
    00> [38727745] <inf> battery_meas: Battery level: 98% (4165 mV)
    00> [38727747] <inf> event_manager: e: battery_level_event level=98
    00> [39047809] <inf> battery_meas: Battery level: 99% (4177 mV)
    00> [39047811] <inf> event_manager: e: battery_level_event level=99
    00> [39367873] <inf> battery_meas: Battery level: 99% (4179 mV)
    00> [39367884] <inf> event_manager: e: battery_level_event level=99
    00> [39687937] <inf> battery_meas: Battery level: 100% (4186 mV)
    00> [39687939] <inf> event_manager: e: battery_level_event level=100
    00> [40008001] <inf> battery_meas: Battery level: 100% (4195 mV)
    00> [40008003] <inf> event_manager: e: battery_level_event level=100
    00> [40328065] <inf> battery_meas: Battery level: 100% (4188 mV)
    00> [40328067] <inf> event_manager: e: battery_level_event level=100
    00> [40648129] <inf> battery_meas: Battery level: 97% (4161 mV)
    00> [40648131] <inf> event_manager: e: battery_level_event level=97
    00> [40968193] <inf> battery_meas: Battery level: 100% (4193 mV)
    00> [40968195] <inf> event_manager: e: battery_level_event level=100
    00> [41288257] <inf> battery_meas: Battery level: 98% (4170 mV)
    00> [41288259] <inf> event_manager: e: battery_level_event level=98
    00> [41608321] <inf> battery_meas: Battery level: 96% (4152 mV)
    00> [41608332] <inf> event_manager: e: battery_level_event level=96
    00> [41928385] <inf> battery_meas: Battery level: 97% (4155 mV)
    00> [41928387] <inf> event_manager: e: battery_level_event level=97
    00> [42248449] <inf> battery_meas: Battery level: 98% (4169 mV)
    00> [42248451] <inf> event_manager: e: battery_level_event level=98
    00> [42568513] <inf> battery_meas: Battery level: 98% (4166 mV)
    00> [42568515] <inf> event_manager: e: battery_level_event level=98
    00> [42888577] <inf> battery_meas: Battery level: 96% (4151 mV)
    00> [42888579] <inf> event_manager: e: battery_level_event level=96
    00> [43208641] <inf> battery_meas: Battery level: 97% (4161 mV)
    00> [43208643] <inf> event_manager: e: battery_level_event level=97
    00> [43528705] <inf> battery_meas: Battery level: 95% (4143 mV)
    00> [43528707] <inf> event_manager: e: battery_level_event level=95
    00> [43848769] <inf> battery_meas: Battery level: 96% (4146 mV)
    00> [43848780] <inf> event_manager: e: battery_level_event level=96
    00> [44168833] <inf> battery_meas: Battery level: 97% (4157 mV)
    00> [44168835] <inf> event_manager: e: battery_level_event level=97
    00> [44488897] <inf> battery_meas: Battery level: 97% (4160 mV)
    00> [44488899] <inf> event_manager: e: battery_level_event level=97
    00> [44808961] <inf> battery_meas: Battery level: 98% (4170 mV)
    00> [44808963] <inf> event_manager: e: battery_level_event level=98
    00> [45129025] <inf> battery_meas: Battery level: 100% (4195 mV)
    00> [45129045] <inf> event_manager: e: battery_level_event level=100
    00> [45449089] <inf> battery_meas: Battery level: 97% (4157 mV)
    00> [45449104] <inf> event_manager: e: battery_level_event level=97
    00> [45592080] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [45592080] <inf> hid_state: Send keybit
    00> [45592119] <inf> usb_state: SET_REPORT
    00> [45592119] <inf> usb_state: No action on keyboard LEDs report 5
    00> [45595354] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [45595354] <inf> hid_state: Send keybit
    00> [45662352] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [45662352] <inf> hid_state: Send keybit
    00> [45662403] <inf> usb_state: SET_REPORT
    00> [45662403] <inf> usb_state: No action on keyboard LEDs report 7
    00> [45665809] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [45665809] <inf> hid_state: Send keybit
    00> [45769153] <inf> battery_meas: Battery level: 94% (4130 mV)
    00> [45769168] <inf> event_manager: e: battery_level_event level=94
    00> [45923216] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [45923216] <inf> hid_state: Send keybit
    00> [45923254] <inf> usb_state: SET_REPORT
    00> [45923254] <inf> usb_state: No action on keyboard LEDs report 5
    00> [45928464] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [45928465] <inf> hid_state: Send keybit
    00> [45952783] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [45952784] <inf> hid_state: Send keybit
    00> [45952807] <inf> usb_state: SET_REPORT
    00> [45952807] <inf> usb_state: No action on keyboard LEDs report 7
    00> [45957649] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [45957649] <inf> hid_state: Send keybit
    00> [45971728] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [45971728] <inf> hid_state: Send keybit
    00> [45971778] <inf> usb_state: SET_REPORT
    00> [45971778] <inf> usb_state: No action on keyboard LEDs report 5
    00> [45975632] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [45975633] <inf> hid_state: Send keybit
    00> [46065995] <inf> scan_timer: switch usb mode
    00> [46072335] <inf> event_manager: e: mulprotocol_event code_1=3    code_1=1
    00> [46072336] <inf> ble_adv: Advertising stopped
    00> [46072337] <wrn> bt_conn: BT_CONN_CONNECTED reason : 13
    00> [46072347] <inf> ble_adv: Peer disconnecting
    00> [46072348] <inf> usb_state: Cannot initialize
    00> [46072349] <inf> event_manager: e: ble_peer_search_event inactive
    00> [46072352] <inf> event_manager: e: ble_peer_event id=0x200037e0 DISCONNECTING
    00> [46072352] <inf> hid_state: Subscriber 0x200037e0 disconnected
    00> [46074075] <inf> ble_state: Disconnected from 00:1A:7D:DA:71:13 (public) (reason 22)
    00> [46074100] <inf> event_manager: e: ble_peer_event id=0x200037e0 DISCONNECTED
    00> [46074101] <inf> ble_adv: PEER_STATE_DISCONNECTED
    00> [46074102] <wrn> hid_state: Subscriber 0x200037e0 was not connected
    00> [46089217] <inf> battery_meas: Battery level: 97% (4156 mV)
    00> [46089219] <inf> event_manager: e: battery_level_event level=97
    00> [46103979] <inf> scan_timer: switch ble mode
    00> [46110319] <inf> event_manager: e: mulprotocol_event code_1=1    code_1=3
    00> [46110322] <inf> event_manager: e: selector_event id: 0 position: 1
    00> [46110323] <inf> ble_bond: selector_event_handler state = 2
    00> [46110323] <inf> ble_bond: Selected BLE peers
    00> [46110323] <inf> ble_bond: get_bt_stack_peer_id    
    00> [46110326] <inf> event_manager: e: ble_peer_operation_event SELECTED bt_app_id=1 bt_stack_id=5
    00> [46110326] <inf> ble_adv: event->op = 1 state = 3
    00> [46110327] <inf> ble_adv: Advertising stopped
    00> [46110327] <inf> ble_adv: cur_identity = 5 
    00> [46110329] <inf> ble_adv: Advertising stopped
    00> [46110329] <inf> ble_adv: direct = 0 0 0
    00> [46110329] <inf> ble_adv: Use fast advertising
    00> [46110371] <inf> ble_adv: Advertising started
    00> [46110373] <inf> event_manager: e: ble_peer_search_event inactive
    00> [46110374] <inf> event_manager: e: ble_peer_search_event inactive
    00> [46110375] <inf> event_manager: e: ble_peer_search_event active
    00> [46163486] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [46163486] <inf> hid_state: PEER_STATE_CONNECTED
    00> [46167957] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [46167957] <inf> hid_state: PEER_STATE_CONNECTED
    00> [46409281] <inf> battery_meas: Battery level: 100% (4197 mV)
    00> [46409297] <inf> event_manager: e: battery_level_event level=100
    00> [46571600] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [46571600] <inf> hid_state: PEER_STATE_CONNECTED
    00> [46575952] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [46575953] <inf> hid_state: PEER_STATE_CONNECTED
    00> [46641424] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [46641424] <inf> hid_state: PEER_STATE_CONNECTED
    00> [46646165] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [46646165] <inf> hid_state: PEER_STATE_CONNECTED
    00> [46681296] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [46681296] <inf> hid_state: PEER_STATE_CONNECTED
    00> [46687381] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [46687382] <inf> hid_state: PEER_STATE_CONNECTED
    00> [46729345] <inf> battery_meas: Battery level: 95% (4142 mV)
    00> [46729360] <inf> event_manager: e: battery_level_event level=95
    00> [46741072] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [46741072] <inf> hid_state: PEER_STATE_CONNECTED
    00> [46745685] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [46745685] <inf> hid_state: PEER_STATE_CONNECTED
    00> [47006400] <inf> ble_adv: ble_adv_update_fn state = 4
    00> [47006415] <inf> ble_adv: Advertising stopped
    00> [47006416] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47049409] <inf> battery_meas: Battery level: 97% (4162 mV)
    00> [47049411] <inf> event_manager: e: battery_level_event level=97
    00> [47053109] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [47053110] <inf> ble_adv: Advertising stopped
    00> [47053110] <inf> ble_adv: direct = 0 0 0
    00> [47053110] <inf> ble_adv: Use fast advertising
    00> [47053153] <inf> ble_adv: Advertising started
    00> [47053153] <inf> ble_adv: ble_adv_start
    00> [47053153] <inf> hid_state: PEER_STATE_CONNECTED
    00> [47053155] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47053156] <inf> event_manager: e: ble_peer_search_event active
    00> [47059184] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [47059185] <inf> hid_state: PEER_STATE_CONNECTED
    00> [47369473] <inf> battery_meas: Battery level: 100% (4193 mV)
    00> [47369476] <inf> event_manager: e: battery_level_event level=100
    00> [47482731] <inf> scan_timer: switch device 2
    00> [47482737] <inf> event_manager: e: click_event key_id: 1 click: SHORT
    00> [47482737] <inf> ble_bond: Start peer select
    00> [47482738] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47482740] <inf> event_manager: e: ble_peer_operation_event SELECT bt_app_id=1 bt_stack_id=5
    00> [47483395] <inf> event_manager: e: click_event key_id: 7 click: DOUBLE
    00> [47483395] <inf> ble_bond: Select peer
    00> [47483396] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47483399] <inf> event_manager: e: ble_peer_operation_event CANCEL bt_app_id=1 bt_stack_id=5
    00> [47531435] <inf> scan_timer: switch device 3
    00> [47531441] <inf> event_manager: e: click_event key_id: 2 click: SHORT
    00> [47531441] <inf> ble_bond: Start peer select
    00> [47531442] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47531445] <inf> event_manager: e: ble_peer_operation_event SELECT bt_app_id=2 bt_stack_id=3
    00> [47532099] <inf> event_manager: e: click_event key_id: 7 click: DOUBLE
    00> [47532099] <inf> ble_bond: Select peer
    00> [47532789] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47532814] <inf> event_manager: e: ble_peer_operation_event SELECTED bt_app_id=2 bt_stack_id=3
    00> [47532814] <inf> ble_adv: event->op = 1 state = 4
    00> [47532822] <inf> ble_adv: Advertising stopped
    00> [47532822] <inf> ble_adv: cur_identity = 3 
    00> [47532823] <inf> ble_adv: Advertising stopped
    00> [47532823] <inf> ble_adv: direct = 0 0 0
    00> [47532824] <inf> ble_adv: Use fast advertising
    00> [47532866] <inf> ble_adv: Advertising started
    00> [47532868] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47532869] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47532870] <inf> event_manager: e: ble_peer_search_event active
    00> [47578123] <inf> scan_timer: switch device 1
    00> [47578129] <inf> event_manager: e: click_event key_id: 0 click: SHORT
    00> [47578129] <inf> ble_bond: Start peer select
    00> [47578130] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47578134] <inf> event_manager: e: ble_peer_operation_event SELECT bt_app_id=0 bt_stack_id=0
    00> [47578787] <inf> event_manager: e: click_event key_id: 7 click: DOUBLE
    00> [47578787] <inf> ble_bond: Select peer
    00> [47579426] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47579451] <inf> event_manager: e: ble_peer_operation_event SELECTED bt_app_id=0 bt_stack_id=0
    00> [47579451] <inf> ble_adv: event->op = 1 state = 4
    00> [47579460] <inf> ble_adv: Advertising stopped
    00> [47579460] <inf> ble_adv: cur_identity = 0 
    00> [47579461] <inf> ble_adv: Advertising stopped
    00> [47579461] <inf> ble_adv: direct = 0 0 0
    00> [47579461] <inf> ble_adv: Use fast advertising
    00> [47579504] <inf> ble_adv: Advertising started
    00> [47579505] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47579506] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47579507] <inf> event_manager: e: ble_peer_search_event active
    00> [47664363] <inf> scan_timer: switch device 2
    00> [47664369] <inf> event_manager: e: click_event key_id: 1 click: SHORT
    00> [47664369] <inf> ble_bond: Start peer select
    00> [47664370] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47664372] <inf> event_manager: e: ble_peer_operation_event SELECT bt_app_id=1 bt_stack_id=5
    00> [47665027] <inf> event_manager: e: click_event key_id: 7 click: DOUBLE
    00> [47665027] <inf> ble_bond: Select peer
    00> [47665525] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47665550] <inf> event_manager: e: ble_peer_operation_event SELECTED bt_app_id=1 bt_stack_id=5
    00> [47665550] <inf> ble_adv: event->op = 1 state = 4
    00> [47665558] <inf> ble_adv: Advertising stopped
    00> [47665558] <inf> ble_adv: cur_identity = 5 
    00> [47665559] <inf> ble_adv: Advertising stopped
    00> [47665559] <inf> ble_adv: direct = 0 0 0
    00> [47665560] <inf> ble_adv: Use fast advertising
    00> [47665608] <inf> ble_adv: Advertising started
    00> [47665610] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47665611] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47665612] <inf> event_manager: e: ble_peer_search_event active
    00> [47689537] <inf> battery_meas: Battery level: 100% (4196 mV)
    00> [47689557] <inf> event_manager: e: battery_level_event level=100
    00> [47725195] <inf> scan_timer: switch device 1
    00> [47725200] <inf> event_manager: e: click_event key_id: 0 click: SHORT
    00> [47725201] <inf> ble_bond: Start peer select
    00> [47725201] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47725204] <inf> event_manager: e: ble_peer_operation_event SELECT bt_app_id=0 bt_stack_id=0
    00> [47725859] <inf> event_manager: e: click_event key_id: 7 click: DOUBLE
    00> [47725859] <inf> ble_bond: Select peer
    00> [47726372] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47726397] <inf> event_manager: e: ble_peer_operation_event SELECTED bt_app_id=0 bt_stack_id=0
    00> [47726397] <inf> ble_adv: event->op = 1 state = 4
    00> [47726406] <inf> ble_adv: Advertising stopped
    00> [47726406] <inf> ble_adv: cur_identity = 0 
    00> [47726407] <inf> ble_adv: Advertising stopped
    00> [47726407] <inf> ble_adv: direct = 0 0 0
    00> [47726407] <inf> ble_adv: Use fast advertising
    00> [47726450] <inf> ble_adv: Advertising started
    00> [47726451] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47726452] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47726453] <inf> event_manager: e: ble_peer_search_event active
    00> [47761547] <inf> scan_timer: switch device 2
    00> [47761553] <inf> event_manager: e: click_event key_id: 1 click: SHORT
    00> [47761553] <inf> ble_bond: Start peer select
    00> [47761554] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47761556] <inf> event_manager: e: ble_peer_operation_event SELECT bt_app_id=1 bt_stack_id=5
    00> [47762211] <inf> event_manager: e: click_event key_id: 7 click: DOUBLE
    00> [47762211] <inf> ble_bond: Select peer
    00> [47762730] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47762755] <inf> event_manager: e: ble_peer_operation_event SELECTED bt_app_id=1 bt_stack_id=5
    00> [47762756] <inf> ble_adv: event->op = 1 state = 4
    00> [47762764] <inf> ble_adv: Advertising stopped
    00> [47762764] <inf> ble_adv: cur_identity = 5 
    00> [47762765] <inf> ble_adv: Advertising stopped
    00> [47762765] <inf> ble_adv: direct = 0 0 0
    00> [47762765] <inf> ble_adv: Use fast advertising
    00> [47762813] <inf> ble_adv: Advertising started
    00> [47762814] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47762815] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47762816] <inf> event_manager: e: ble_peer_search_event active
    00> [47845579] <inf> scan_timer: switch usb mode
    00> [47851924] <inf> event_manager: e: mulprotocol_event code_1=3    code_1=1
    00> [47851933] <inf> ble_adv: Advertising stopped
    00> [47851933] <inf> usb_state: Cannot initialize
    00> [47851935] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47883659] <inf> scan_timer: switch ble mode
    00> [47890000] <inf> event_manager: e: mulprotocol_event code_1=1    code_1=3
    00> [47890003] <inf> event_manager: e: selector_event id: 0 position: 1
    00> [47890003] <inf> ble_bond: selector_event_handler state = 2
    00> [47890003] <inf> ble_bond: Selected BLE peers
    00> [47890003] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47890006] <inf> event_manager: e: ble_peer_operation_event SELECTED bt_app_id=1 bt_stack_id=5
    00> [47890006] <inf> ble_adv: event->op = 1 state = 3
    00> [47890007] <inf> ble_adv: Advertising stopped
    00> [47890007] <inf> ble_adv: cur_identity = 5 
    00> [47890008] <inf> ble_adv: Advertising stopped
    00> [47890009] <inf> ble_adv: direct = 0 0 0
    00> [47890009] <inf> ble_adv: Use fast advertising
    00> [47890051] <inf> ble_adv: Advertising started
    00> [47890053] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47890054] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47890055] <inf> event_manager: e: ble_peer_search_event active
    00> [47926827] <inf> scan_timer: switch rf mode
    00> [47933172] <inf> event_manager: e: mulprotocol_event code_1=2    code_1=1
    00> [47933181] <inf> ble_adv: Advertising stopped
    00> [47933183] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47933184] <inf> event_manager: e: selector_event id: 0 position: 0
    00> [47933185] <inf> ble_bond: selector_event_handler state = 2
    00> [47933185] <inf> ble_bond: Selected dongle peer
    00> [47933185] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47933188] <inf> event_manager: e: ble_peer_operation_event SELECTED bt_app_id=3 bt_stack_id=4
    00> [47933188] <inf> ble_adv: event->op = 1 state = 3
    00> [47933189] <inf> ble_adv: Advertising stopped
    00> [47933189] <inf> ble_adv: cur_identity = 4 
    00> [47933190] <inf> ble_adv: Advertising stopped
    00> [47933190] <inf> ble_adv: direct = 0 0 0
    00> [47933191] <inf> ble_adv: Use fast advertising
    00> [47933233] <inf> ble_adv: Advertising started
    00> [47933235] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47933236] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47933237] <inf> event_manager: e: ble_peer_search_event active
    00> [47967088] <inf> event_manager: e: keyboard_event code_1=0, code_2=0
    00> [47967089] <inf> hid_state: PEER_STATE_CONNECTED
    00> [47978219] <inf> scan_timer: switch ble mode
    00> [47984559] <inf> event_manager: e: mulprotocol_event code_1=1    code_1=2
    00> [47984567] <inf> ble_adv: Advertising stopped
    00> [47984570] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47984571] <inf> event_manager: e: selector_event id: 0 position: 1
    00> [47984571] <inf> ble_bond: selector_event_handler state = 2
    00> [47984572] <inf> ble_bond: Selected BLE peers
    00> [47984572] <inf> ble_bond: get_bt_stack_peer_id    
    00> [47984575] <inf> event_manager: e: ble_peer_operation_event SELECTED bt_app_id=1 bt_stack_id=5
    00> [47984575] <inf> ble_adv: event->op = 1 state = 3
    00> [47984577] <inf> ble_adv: Advertising stopped
    00> [47984577] <inf> ble_adv: cur_identity = 5 
    00> [47984578] <inf> ble_adv: Advertising stopped
    00> [47984578] <inf> ble_adv: direct = 0 0 0
    00> [47984578] <inf> ble_adv: Use fast advertising
    00> [47984626] <inf> ble_adv: Advertising started
    00> [47984627] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47984628] <inf> event_manager: e: ble_peer_search_event inactive
    00> [47984630] <inf> event_manager: e: ble_peer_search_event active
    00> [48009601] <inf> battery_meas: Battery level: 96% (4146 mV)
    00> [48009603] <inf> event_manager: e: battery_level_event level=96
    00> [48329665] <inf> battery_meas: Battery level: 100% (4197 mV)
    00> [48329681] <inf> event_manager: e: battery_level_event level=100

    Please give me some  good suggestions for this problem.  

    Best regards.

  • Dear Kenneth

    1. That is to say, my idea is feasible, allowing them to switch between the two modes in the USB event. So I would like to know how to switch between these two modes, or just need to update the connection interval. They tried updating a longer connection interval, which works to switch from LLPM mode to BLE mode, but switching from BLE mode to LLPM mode fails. Please give me some good advice.

    2. I would suggest that they use NCS1.9.1 for testing.

    Best regards.

  • 1) If it works switching from LLPM->BLE, but fails to switch from BLE->LLPM then ask them to check if they have done this in two steps as written in the Limitations:
    https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrfxlib/softdevice_controller/limitations.html# 

    "DRGN-11297: Maximum connection interval of 10 ms before entering LLPM-mode
    The maximum connection interval that can be active when switching to a connection interval of 1 ms is 10 ms.

    Workaround: An application that use a higher interval than 10 ms must perform two connection updates to use 1 ms connection interval:

    A first update to 10 ms connection interval.

    A second update to 1 ms connection interval."

    Best regards,
    Kenneth

  • Dear Kenneth

    We update the connection interval twice according to the method you said,and switch from BLE mode to LLPM mode,the following error will occur:

           static void update_peer_conn_params(const struct connected_peer *peer) -->
           LOG_WRN("Cannot update conn parameters for peer %p (err:%d)",
    error code is 5
    The following is the code,please heip me and give me some advice.Help us to see the code,why this error is happing.
    /*
     * Copyright (c) 2020 Nordic Semiconductor ASA
     *
     * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
     */
    
    #include <bluetooth/conn.h>
    #include <bluetooth/hci.h>
    #include <bluetooth/gatt_dm.h>
    
    #ifdef CONFIG_BT_LL_SOFTDEVICE
    #include "sdc_hci_vs.h"
    #endif /* CONFIG_BT_LL_SOFTDEVICE */
    
    #define MODULE ble_conn_params
    #include <caf/events/module_state_event.h>
    #include <caf/events/ble_common_event.h>
    #include "ble_event.h"
    
    #include "usb_event.h"  //Marcus added
    
    #include <logging/log.h>
    LOG_MODULE_REGISTER(MODULE, CONFIG_DESKTOP_BLE_CONN_PARAMS_LOG_LEVEL);
    
    #define CONN_INTERVAL_LLPM_US		1000   /* 1 ms */
    #define CONN_INTERVAL_LLPM_REG		0x0d01 /* 1 ms */
    #if (CONFIG_CAF_BLE_USE_LLPM && (CONFIG_BT_MAX_CONN > 2))
     #define CONN_INTERVAL_BLE_REG		0x0008 /* 10 ms */
    #else
     #define CONN_INTERVAL_BLE_REG		0x0006 /* 7.5 ms */
    #endif
    #define CONN_SUPERVISION_TIMEOUT	400
    
    #define CONN_PARAMS_ERROR_TIMEOUT	K_MSEC(100)
    
    struct connected_peer {
    	struct bt_conn *conn;
    	bool discovered;
    	bool llpm_support;
    	uint16_t requested_latency;
    };
    
    static struct connected_peer peers[CONFIG_BT_MAX_CONN];
    static struct k_work_delayable conn_params_update;
    
    static bool slow_con_interval = false; //Marcus
    
    static struct connected_peer *find_connected_peer(const struct bt_conn *conn)
    {
    	for (size_t i = 0; i < ARRAY_SIZE(peers); i++) {
    		if (peers[i].conn == conn) {
    			return &peers[i];
    		}
    	}
    
    	return NULL;
    }
    
    static int set_conn_params(struct bt_conn *conn, uint16_t conn_latency,
    			   bool peer_llpm_support)
    {
    	int err;
    
    #ifdef CONFIG_CAF_BLE_USE_LLPM
    	if (peer_llpm_support) {
    		struct net_buf *buf;
    		sdc_hci_cmd_vs_conn_update_t *cmd_conn_update;
    		uint16_t conn_handle;
    
    		err = bt_hci_get_conn_handle(conn, &conn_handle);
    		if (err) {
    			LOG_ERR("Failed obtaining conn_handle (err:%d)", err);
    			return err;
    		}
    
    		buf = bt_hci_cmd_create(SDC_HCI_OPCODE_CMD_VS_CONN_UPDATE,
    					sizeof(*cmd_conn_update));
    		if (!buf) {
    			LOG_ERR("Could not allocate command buffer");
    			return -ENOBUFS;
    		}
    
    		cmd_conn_update = net_buf_add(buf, sizeof(*cmd_conn_update));
    		cmd_conn_update->connection_handle   = conn_handle;
    		cmd_conn_update->conn_interval_us    = CONN_INTERVAL_LLPM_US;
    		cmd_conn_update->conn_latency        = conn_latency;
    		cmd_conn_update->supervision_timeout = CONN_SUPERVISION_TIMEOUT;
    
    		err = bt_hci_cmd_send_sync(SDC_HCI_OPCODE_CMD_VS_CONN_UPDATE, buf,
    					   NULL);
    	} else
    #endif /* CONFIG_CAF_BLE_USE_LLPM */
    	{
    		struct bt_le_conn_param param = {
    			.interval_min = CONN_INTERVAL_BLE_REG,
    			.interval_max = CONN_INTERVAL_BLE_REG,
    			.latency = conn_latency,
    			.timeout = CONN_SUPERVISION_TIMEOUT,
    		};
    
    		err = bt_conn_le_param_update(conn, &param);
    
    		if (err == -EALREADY) {
    			/* Connection parameters are already set. */
    			err = 0;
    		}
    	}
    
    	return err;
    }
    
    static void update_peer_conn_params(const struct connected_peer *peer)
    {
    	__ASSERT_NO_MSG(peer);
    	/* Do not update peripheral's connection parameters before the discovery
    	 * is completed.
    	 */
    	if (!peer->discovered) {
    		return;
    	}
    
    	struct bt_conn *conn = peer->conn;
    	uint16_t latency = peer->requested_latency;
    
    	__ASSERT_NO_MSG(conn);
    	int err = set_conn_params(conn, latency, peer->llpm_support);
    
    	if (err) {
    		LOG_WRN("Cannot update conn parameters for peer %p (err:%d)",
    			(void *)peer, err);
    		/* Retry to update the connection parameters after an error. */
    		k_work_reschedule(&conn_params_update,
    				      CONN_PARAMS_ERROR_TIMEOUT);
    	} else {
    		LOG_INF("Conn params for peer: %p set: %s, latency: %"PRIu16,
    		  (void *)peer->conn,
    		  (IS_ENABLED(CONFIG_CAF_BLE_USE_LLPM) && peer->llpm_support) ?
    		  "LLPM" : "BLE", latency);
    	}
    }
    
    static bool conn_params_update_required(struct connected_peer *peer)
    {
    	if (!peer->conn) {
    		return false;
    	}
    
    	struct bt_conn_info info;
    	int err = bt_conn_get_info(peer->conn, &info);
    
    	if (err) {
    		LOG_ERR("Cannot get conn info (%d)", err);
    		return true;
    	}
    
    	__ASSERT_NO_MSG(info.role == BT_CONN_ROLE_CENTRAL);
    
    	if ((peer->llpm_support && (info.le.interval != CONN_INTERVAL_LLPM_REG)) ||
    	    (!peer->llpm_support && (info.le.interval != CONN_INTERVAL_BLE_REG)) ||
    	    (info.le.latency != peer->requested_latency)) {
    		return true;
    	}
    
    	return false;
    }
    
    static void conn_params_update_fn(struct k_work *work)
    {
    	__ASSERT_NO_MSG(work != NULL);
    
    	for (size_t i = 0; i < ARRAY_SIZE(peers); i++) {
    		if (conn_params_update_required(&peers[i])) {
    			update_peer_conn_params(&peers[i]);
    		}
    	}
    }
    
    static void ble_peer_conn_params_event_handler(const struct ble_peer_conn_params_event *event)
    {
    	if (event->updated) {
    		/* Ignore information that connection parameters were already
    		 * updated.
    		 */
    		return;
    	}
    
    	struct connected_peer *peer = find_connected_peer(event->id);
    
    	__ASSERT_NO_MSG(peer);
    	peer->requested_latency = event->latency;
    	k_work_reschedule(&conn_params_update, K_NO_WAIT);
    
    	LOG_INF("Request to update conn: %p latency to: %"PRIu16,
    		event->id, event->latency);
    }
    
    static void init(void)
    {
    	k_work_init_delayable(&conn_params_update, conn_params_update_fn);
    }
    
    static void peer_connected(struct bt_conn *conn)
    {
    	struct connected_peer *new_peer = NULL;
    
    	for (size_t i = 0; i < ARRAY_SIZE(peers); i++) {
    		if (!peers[i].conn) {
    			new_peer = &peers[i];
    			break;
    		}
    	}
    	__ASSERT_NO_MSG(new_peer);
    
    	new_peer->conn = conn;
    }
    
    static void peer_disconnected(struct bt_conn *conn)
    {
    	struct connected_peer *peer = find_connected_peer(conn);
    
    	if (peer) {
    		peer->conn = NULL;
    		peer->llpm_support = false;
    		peer->discovered = false;
    		peer->requested_latency = 0;
    	}
    }
    
    static void peer_discovered(struct bt_conn *conn, bool peer_llpm_support)
    {
    	struct connected_peer *peer = find_connected_peer(conn);
    
    	if (peer) {
    		peer->llpm_support = peer_llpm_support;
    		peer->discovered = true;
    		update_peer_conn_params(peer);
    	}
    }
    
    static bool event_handler(const struct event_header *eh)
    {
    	if (is_module_state_event(eh)) {
    		const struct module_state_event *event =
    			cast_module_state_event(eh);
    
    		if (check_state(event, MODULE_ID(ble_state),
    				MODULE_STATE_READY)) {
    			static bool initialized;
    
    			__ASSERT_NO_MSG(!initialized);
    			initialized = true;
    
    			init();
    			module_set_state(MODULE_STATE_READY);
    		}
    
    		return false;
    	}
    
    	if (is_ble_discovery_complete_event(eh)) {
    		const struct ble_discovery_complete_event *event =
    			cast_ble_discovery_complete_event(eh);
    
    		peer_discovered(bt_gatt_dm_conn_get(event->dm),
    				event->peer_llpm_support);
    
    		return false;
    	}
    
    	if (is_ble_peer_event(eh)) {
    		const struct ble_peer_event *event =
    			cast_ble_peer_event(eh);
    
    		if (event->state == PEER_STATE_CONNECTED) {
    			peer_connected(event->id);
    		} else if (event->state == PEER_STATE_DISCONNECTED) {
    			peer_disconnected(event->id);
    		}
    
    		return false;
    	}
    
    	if (is_ble_peer_conn_params_event(eh)) {
    		ble_peer_conn_params_event_handler(
    			cast_ble_peer_conn_params_event(eh));
    
    		return false;
    	}
            /* Marcus added */
            if (is_usb_state_event(eh)) {
    		const struct usb_state_event *event = cast_usb_state_event(eh);
    
    		switch (event->state) {
    		case USB_STATE_POWERED:
    		case USB_STATE_ACTIVE:
    
                          if(slow_con_interval == true){
    
                            slow_con_interval = false;
    	                k_work_reschedule(&conn_params_update, K_NO_WAIT);
    
                          }
    
    			break;
    		case USB_STATE_SUSPENDED:
    
                          if(slow_con_interval == false){
    
                               struct bt_le_conn_param param = {
    			    .interval_min = 0x0050, /* 100ms  */
    			    .interval_max = 0x0050,/* 100ms  */
    			    .latency = 0x0006,
    			    .timeout = 400,
    		            };
                                     /* Marcus : update all peer*/
                                	for (size_t i = 0; i < ARRAY_SIZE(peers); i++) {
    		                   struct bt_conn *conn = peers[i].conn;
    			          int err = bt_conn_le_param_update(conn, &param);
                                                                       
    		                   if (err == -EALREADY) {
    			           /* Connection parameters are already set. */
    			            err = 0;                                           	                   
    	                            }
    		                }
                              slow_con_interval = true;
                          }
    	
    			break;
    		default:
    			/* Ignore */
    			break;
    		}
    		return false;
    	}
    
    
    	/* If event is unhandled, unsubscribe. */
    	__ASSERT_NO_MSG(false);
    
    	return false;
    }
    
    EVENT_LISTENER(MODULE, event_handler);
    EVENT_SUBSCRIBE(MODULE, module_state_event);
    EVENT_SUBSCRIBE(MODULE, ble_discovery_complete_event);
    EVENT_SUBSCRIBE(MODULE, ble_peer_event);
    EVENT_SUBSCRIBE(MODULE, ble_peer_conn_params_event);
    EVENT_SUBSCRIBE(MODULE, usb_state_event);  //Marcus added
    
    
     
    Best regard.

      

  • In addition,the problem of the Cap and Num buttion indicators,we tested on NCS 1.9.1 and did't reproduce again,it seems that it should be fixed.Our customers will send the prototype to the end-costomer for testing in the near future.If the end-customer also passes the test,then it can be considered that the problem has been solved.

  • Hello,

    I believe the SUSPEND problem will be fixed in NCS 2.0 that will be released any day now.

    Best regards,
    Kenneth

Reply Children
No Data
Related