From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: MIME-Version: 1.0 In-Reply-To: References: <1301510036-17282-1-git-send-email-andre.dieb@signove.com> Date: Mon, 11 Apr 2011 10:08:20 -0300 Message-ID: Subject: Re: [RFC 1/2] Add Type property to Device From: Elvis Pfutzenreuter To: Claudio Takahasi , linux-bluetooth@vger.kernel.org Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-bluetooth-owner@vger.kernel.org List-ID: 2011/3/31 Claudio Takahasi > > Hi Marcel/Johan/Luiz, > > We need opinions for this change... > > Why this information is needed: Appearance characteristic is not > available in the advertising. Currently, BlueZ implements interleaved > discovery: 5.12sec inquiring + 5.12sec scanning. > Found devices are reported through the DeviceFound() signal. The user > space needs to check the "Broadcaster" property inside the DeviceFound > signal to check if the device is Basic Rate or LE, which is not > acceptable(in my opinion). We need a meaningful property to > distinguish LE devices. > > Before we push these patches upstream we need to define which > information it exposes: Operational Mode or host/controller > capability? > > My opinion: > 1. for the Adapter it should represent the operational mode, a > controller can support LE, but the host can disable it. Setting > EnableLE = false(main.conf) should "disable" LE functionalities. > 2. for DeviceFound(), the UI needs this info only to distinguish LE > devices. In my opinion UUIDs and Broadcaster properties are not > enough/appropriated for this purpose. "Qualified" devices will not > enable inquiry scan and advertising at same time. Our main target is > to connect to LE only devices. "BR/EDR/LE" can be confusing in this > context. Suggestions here? > 3. for the Device, I am not sure if we need to expose this information > to the users, appearance characteristic is mandatory, if a Device > "object" exists in the system the appearance value will be > available(it will be retrieved after discovery primary services) > > Comments? Any news on this? > > Andre: > You need to check the adapter features, old adapters doesn't support EDR. Andre is on vacation (lucky guy), so I will do the fixes once we have settled the other questions. > > Claudio. > > On Wed, Mar 30, 2011 at 6:33 PM, Andre Dieb Martins > wrote: > > --- > >  doc/device-api.txt |    4 ++++ > >  src/device.c       |   18 ++++++++++++++++++ > >  src/device.h       |    2 ++ > >  3 files changed, 24 insertions(+), 0 deletions(-) > > > > diff --git a/doc/device-api.txt b/doc/device-api.txt > > index d1feb18..a667296 100644 > > --- a/doc/device-api.txt > > +++ b/doc/device-api.txt > > @@ -130,6 +130,10 @@ Properties string Address [readonly] > >                        Proposed icon name according to the freedesktop.org > >                        icon naming specification. > > > > +               string Type [readonly] > > + > > +                       Device type (BR/EDR, LE, BR/EDR/LE). > > + > >                uint32 Class [readonly] > > > >                        The Bluetooth class of device of the remote device. > > diff --git a/src/device.c b/src/device.c > > index d567952..96683de 100644 > > --- a/src/device.c > > +++ b/src/device.c > > @@ -228,6 +228,20 @@ static void device_free(gpointer user_data) > >        g_free(device); > >  } > > > > +const char *devtype2str(device_type_t type) > > If the plan is to use the same type(device_type_t) for devices and > adapters we should rename this type. > > > > +{ > > +       switch (type) { > > +       case DEVICE_TYPE_BREDR: > > +               return "BR/EDR"; > > +       case DEVICE_TYPE_LE: > > +               return "LE"; > > +       case DEVICE_TYPE_DUALMODE: > > +               return "BR/EDR/LE"; > > +       default: > > +               return "Unknown"; > > +       } > > +} > > + > >  gboolean device_is_paired(struct btd_device *device) > >  { > >        return device->paired; > > @@ -302,6 +316,10 @@ static DBusMessage *get_properties(DBusConnection *conn, > >                                                DBUS_TYPE_STRING, &icon); > >        } > > > > +       /* Type */ > > +       ptr = devtype2str(device->type); > > +       dict_append_entry(&dict, "Type", DBUS_TYPE_STRING, &ptr); > > + > >        /* Paired */ > >        boolean = device_is_paired(device); > >        dict_append_entry(&dict, "Paired", DBUS_TYPE_BOOLEAN, &boolean); > > diff --git a/src/device.h b/src/device.h > > index 3ce212b..b385070 100644 > > --- a/src/device.h > > +++ b/src/device.h > > @@ -41,6 +41,8 @@ typedef enum { > >        DEVICE_TYPE_DUALMODE > >  } device_type_t; > > > > +const char *devtype2str(device_type_t type); > > + > >  struct btd_device *device_create(DBusConnection *conn, > >                                struct btd_adapter *adapter, > >                                const gchar *address, device_type_t type); > > -- > > 1.7.1 > > > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at  http://vger.kernel.org/majordomo-info.html > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at  http://vger.kernel.org/majordomo-info.html