return BT_STATUS_SUCCESS;
}
+int _bt_hal_dbus_get_adapter_class(unsigned int *adapter_class)
+{
+ GDBusProxy *proxy;
+ GVariant *result;
+ GVariant *temp;
+ GError *error = NULL;
+ DBG("+");
+
+ proxy = _bt_hal_get_adapter_properties_proxy();
+ if (!proxy) {
+ DBG("Adapter Properties proxy get failed!!!");
+ return BT_STATUS_FAIL;
+ }
+
+ result = g_dbus_proxy_call_sync(proxy,
+ "Get",
+ g_variant_new("(ss)", BT_HAL_ADAPTER_INTERFACE,
+ "Class"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
+
+ if (!result) {
+ if (error != NULL) {
+ ERR("Failed to get class (Error: %s)", error->message);
+ g_clear_error(&error);
+ } else
+ ERR("Failed to get class");
+ return BT_STATUS_FAIL;
+ }
+
+
+ g_variant_get(result, "(v)", &temp);
+ *adapter_class = g_variant_get_uint32(temp);
+ DBG("Class value: [0x%06x]", *adapter_class);
+
+ g_variant_unref(result);
+ g_variant_unref(temp);
+
+ DBG("-");
+ return BT_STATUS_SUCCESS;
+}
+
/* Get Discoverable Mode API and callback */
static gboolean __bt_adapter_scan_mode_cb(gpointer user_data)
{
{
gboolean is_headset = FALSE;
gboolean is_mouse = FALSE;
+ unsigned int adapter_class = 0;
char lap_address[BT_HAL_LOWER_ADDRESS_LENGTH];
DBG("bt_agent_is_headset_class, %d +", dev_class);
if (address == NULL)
return FALSE;
+ _bt_hal_dbus_get_adapter_class(&adapter_class);
+
+ if (((adapter_class & 0x1f00) >> 8) == 0x05)
+ {
+ DBG("Adapter is Peripheral, do not response automatically");
+ return FALSE;
+ }
+
switch ((dev_class & 0x1f00) >> 8) {
case 0x04:
switch ((dev_class & 0xfc) >> 2) {