Re: [PATCH 5/6] core: Add device_get_class to the public interface.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Apr 11, 2013 at 10:23 AM, Marcel Holtmann <marcel@xxxxxxxxxxxx> wrote:

>>>> +uint32_t btd_device_get_class(struct btd_device *device)
>>>> +{
>>>> +     return device->class;
>>>> +}
>>
>>> why not export functions for getting the major and minor class. That seems to better then making a plugin decode that by themselves. Especially since we know they will get it work.
>>
>> Basically we had the device class exported like that in the previous
>> plugin. I don't see a huge advantage on splitting the class in this
>> file instead of in the plugin... and a plugin could also compare with
>> both the major and minor class at the same time. Anyway, is an easy
>> change and I don't have a strong preference.
>
> the reason why I prefer major and minor class is that then the core does the "math" ones and does it right. We had enough issues with it being done wrong. Including a kernel bug that we have to live with now.
>
> In addition you actually did not consider the 2 bits that define a format type of major/minor class. Only when they are 0, then the mapping is what you are checking against. These 3 bytes are the worst combination of smashing bits into each other. Check print_dev_class() of btmon to see what I mean.
>

We have do this parsing in applications as well, since BlueZ just
exports the class as a uint32 via D-Bus properties; so if BlueZ is
going to have a single place to parse this, we should also offer the
parsed values to applications as D-Bus properties.

Even the parsing of the Minor Device Class is pretty hairy, since it
depends on the Major Class; so to make sure that's done properly, it
also seems that BlueZ should do that and provide a complete parsed
description of the device.

I guess something exported in Properties like:

  major-service-class: "audio"
  major-device-class: "audio-video"
  minor-device-class: "loudspeaker"

Or for the complex HID example:

  major-service-class: none
  major-device-class: "peripheral"
  minor-device-class: "pointing-device"
  device-functions: "joystick,gamepad,digitizer-tablet"

Scott
--
Scott James Remnant | Chrome OS Systems | keybuk@xxxxxxxxxx | Google
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux