How can i get more than 31-Bytes adv data in bt_le_scan_start() for "device_found()" callback?

For "BLE Central"  sample:

I get the same problem when I want to get the  BLE devices' name

      the "BLE Central"  can only get  31-Bytes adv data in "device_found()" callback,   but the device-name need more than 31-Bytes

         in "nRF Connect"  I get the BLE-device like this:

                           

     but in the "BLE Central" example, can only get 31-Bytes adv data like this:

           

    in "device_found()" callback:  I can only get the type: 0x01 0x06  0xFF,  and the 0xFF 0x09 after this can't get,

          and when i print the ad->len in 

             static void device_found(const bt_addr_le_t *addr, int8_t rssi, uint8_t type,
                     struct net_buf_simple *ad)    like this:       

                 printk("  =>[%d][%d]\n",ad->len, net_buf_simple_max_len(ad) );

             it will print  =>[31][32]

        How can i get more than 31-Bytes adv data in  "device_found()" callback  for ad->data?

Parents
  • Hello,

    The second part of the payload is received in the scan response packet, while the device_found() function is invoked only for the primary advertising packet in your case. One solution could be to add an additional scan filter that matches with your scan response packet. For instance, you might filter based on the device name "Smart Rope".

    Best regards,

    Vidar

Reply
  • Hello,

    The second part of the payload is received in the scan response packet, while the device_found() function is invoked only for the primary advertising packet in your case. One solution could be to add an additional scan filter that matches with your scan response packet. For instance, you might filter based on the device name "Smart Rope".

    Best regards,

    Vidar

Children