Re: Removing GAttrib.

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

 



Hi Marcel,

Sounds good. I had a chance to sync up with Claudio and Lizardo
face-to-face today at the Bluetooth World Conference and we had a long
discussion on how to do this refactor. I will go ahead and start a new
(and unit tested) implementation of the ATT layer as "struct bt_att"
as you suggested. I will integrate this with attrib/gatt as a first
step, replacing attrib/att. I will then move on to implement a bt_gatt
and bt_att_db.

-Arman

On Tue, Apr 8, 2014 at 6:28 PM, Marcel Holtmann <marcel@xxxxxxxxxxxx> wrote:
> Hi Arman,
>
>>> I am pretty open on how many steps we want to take at a time or what we want to do later. What I know for sure is that I
>>> want to rid of GIOChannel and BtIO usage and GLib.
>>
>> I agree with everything you described and I think a clean GLib-free
>> implementation that can be shared among Linux and Android code is the
>> way to go. My only concern is that a D-Bus GATT client API is much
>> needed for Chromium and I'm concerned that the big overhaul involved
>> in removing BtIO and GLib is going to take too long.
>>
>> So my question is this: how open would you be for an initial GATT
>> client API that uses the existing code in attrib/* internally? I'm
>> thinking of something very similar to how android/gatt.c has been
>> implemented so far. So what I have in mind is:
>>
>>     - The bt_gatt structure you mentioned, lives in src/shared/gatt.*
>> and internally uses GAttrib, etc. The code is D-Bus free and could be
>> used by the GATT client code in android/gatt as well.
>>     - D-Bus code added to src/gatt-dbus.* to expose client objects.
>> This code talks to src/shared/gatt.*.
>>     - src/device.* and profiles modified to use the new API with no
>> explicit GIOChannel usage.
>
> I have no problem in doing this in parallel and take smaller or different steps. My main point is that everybody knows where we need to go in the long term.
>
>> What I'm suggesting is basically to make the daemon use the new API
>> first and implement the new API with the existing GLib based code so
>> that we have at least some implementation to work with for Chromium
>> (and we isolate GLib usage to one place as far as GATT is concerned),
>> and THEN implement bt_gatt, bt_att etc. the proper way. Is this
>> something that you would be open to upstreaming? My primary concern is
>> simply the amount of time it will take to implement a new ATT/GATT
>> endpoint but if you believe that we should absolutely do it the right
>> way the first time around then it's not the end of the world.
>
> Go ahead with it. Internal refactoring is simple. Just plan to have unit tests included that check will ensure that all changes you make are tested.
>
> We did this for AVDTP, AVRCP and now MCAP for our refactoring to make code shareable between Android and upstream.
>
> Regards
>
> Marcel
>
--
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