I am trying to scan based on short name and manufacturing data, the short name filter is working, but the manufacturing data filter is throwing error. Can you help me with that, here is the code
static void start_scan(void)
{
int err;
struct bt_scan_init_param scan_init = {
.connect_if_match = 1,
.scan_param = NULL,
.conn_param = BT_LE_CONN_PARAM_DEFAULT
};
bt_scan_init(&scan_init);
bt_scan_cb_register(&scan_cb);
struct bt_scan_manufacturer_data manufac_data = {
.data = GROUP_ID,
.data_len = sizeof(GROUP_ID),
};
err = bt_scan_filter_add(BT_SCAN_FILTER_TYPE_MANUFACTURER_DATA, &manufac_data );
if (err) {
printk("\nScanning filters cannot be setted (err %d)\n", err); // this error, reason error type (-12)
return err;
}
struct bt_scan_short_name ble_shrt_name;
ble_shrt_name.name = "Nordic_ad";
ble_shrt_name.min_len = 9;
err = bt_scan_filter_add(BT_SCAN_FILTER_TYPE_SHORT_NAME, &ble_shrt_name );
if (err) {
printk("\nScanning filters cannot be set (err %d)\n", err);
return err;
}
err = bt_scan_filter_enable(BT_SCAN_FILTER_TYPE_SHORT_NAME, false);
if (err) {
printk("\nFilters cannot be turned on (err %d)\n", err);
return err;
}
err = bt_scan_filter_enable(BT_SCAN_FILTER_TYPE_MANUFACTURER_DATA, false);
if (err) {
printk("\nFilters cannot be turned on (err %d)\n", err);
return err;
}
uint16_t GROUP_ID = 5; in both advertisement and scanning code