diff --git a/lib/mgmt.h b/lib/mgmt.h
index 6aa0f5f..59608e7 100644
--- a/lib/mgmt.h
+++ b/lib/mgmt.h
uint16_t monitor_handle;
} __packed;
+#define MGMT_OP_ADD_EXT_ADV_PARAMS 0x0054
+
+#define MGMT_OP_ADD_EXT_ADV_DATA 0x0055
+
#define MGMT_EV_CMD_COMPLETE 0x0001
struct mgmt_ev_cmd_complete {
uint16_t opcode;
diff --git a/src/adapter.c b/src/adapter.c
index 1f075ef..90beb89 100644
--- a/src/adapter.c
+++ b/src/adapter.c
DBG("kernel supports exp features");
kernel_features |= KERNEL_EXP_FEATURES;
break;
+ case MGMT_OP_ADD_EXT_ADV_PARAMS:
+ DBG("kernel supports ext adv commands");
+ kernel_features |= KERNEL_HAS_EXT_ADV_ADD_CMDS;
+ break;
default:
break;
}
diff --git a/src/adapter.h b/src/adapter.h
index dcc5748..ace72af 100644
--- a/src/adapter.h
+++ b/src/adapter.h
KERNEL_SET_SYSTEM_CONFIG = 1 << 2,
KERNEL_EXP_FEATURES = 1 << 3,
KERNEL_HAS_RESUME_EVT = 1 << 4,
+ KERNEL_HAS_EXT_ADV_ADD_CMDS = 1 << 5,
};
bool btd_has_kernel_features(uint32_t feature);
diff --git a/src/advertising.c b/src/advertising.c
index c03869e..7c75995 100644
--- a/src/advertising.c
+++ b/src/advertising.c
uint8_t max_ads;
uint32_t supported_flags;
unsigned int instance_bitmap;
+ bool extended_add_cmds;
};
#define AD_TYPE_BROADCAST 0
manager->mgmt_index = btd_adapter_get_index(adapter);
manager->clients = queue_new();
manager->supported_flags = MGMT_ADV_FLAG_LOCAL_NAME;
+ manager->extended_add_cmds =
+ btd_has_kernel_features(KERNEL_HAS_EXT_ADV_ADD_CMDS);
if (!g_dbus_register_interface(btd_get_dbus_connection(),
adapter_get_path(manager->adapter),