Return-Path: MIME-Version: 1.0 In-Reply-To: References: <1332857166-25002-1-git-send-email-jefferson.delfes@openbossa.org> Date: Wed, 28 Mar 2012 07:55:10 -0400 Message-ID: Subject: Re: [RFC BlueZ 0/2] Add support for find included services From: Anderson Lizardo To: "Ganir, Chen" Cc: Jefferson Delfes , "linux-bluetooth@vger.kernel.org" Content-Type: text/plain; charset=US-ASCII Sender: linux-bluetooth-owner@vger.kernel.org List-ID: Hi Chen, On Wed, Mar 28, 2012 at 3:30 AM, Ganir, Chen wrote: > This patch set looks like it is working properly with 16 bit uuids. I tested it with included services as primaries and as secondaries, and I even looked for included services inside other included services (secondary services which have includes). Take a look at this : > [CON][64:9c:8e:e5:a0:e9][LE]> primary > attr handle: 0x0001, end grp handle: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb > attr handle: 0x000c, end grp handle: 0x0016 uuid: 00001800-0000-1000-8000-00805f9b34fb > attr handle: 0x0017, end grp handle: 0x0019 uuid: 00001801-0000-1000-8000-00805f9b34fb > attr handle: 0x001a, end grp handle: 0x0043 uuid: 00009000-0000-1000-8000-00805f9b34fb > attr handle: 0x0044, end grp handle: 0x0046 uuid: 0000a000-0000-1000-8000-00805f9b34fb > attr handle: 0x0050, end grp handle: 0x0055 uuid: 0000a002-0000-1000-8000-00805f9b34fb > attr handle: 0x0056, end grp handle: 0x005a uuid: 0000a003-0000-1000-8000-00805f9b34fb > attr handle: 0x005b, end grp handle: 0x005d uuid: 0000a004-0000-1000-8000-00805f9b34fb > attr handle: 0x0064, end grp handle: 0x0069 uuid: 0000a001-0000-1000-8000-00805f9b34fb > attr handle: 0x006a, end grp handle: 0x006c uuid: 0000a008-0000-0000-0123-456789abcdef > attr handle: 0x0070, end grp handle: 0x0078 uuid: 0000a007-0000-0000-0123-456789abcdef > attr handle: 0x0079, end grp handle: 0x007d uuid: 00001802-0000-1000-8000-00805f9b34fb > attr handle: 0x007e, end grp handle: 0x0080 uuid: 00001804-0000-1000-8000-00805f9b34fb > attr handle: 0x0081, end grp handle: 0x0083 uuid: 00001803-0000-1000-8000-00805f9b34fb > [CON][64:9c:8e:e5:a0:e9][LE]> included 0x01 0x6c Just a note, you usually give the start-end ranges of a service. In your example database: 0x0001 0x000b 0x000c 0x0016 ... But I think it should work with any pair of start-end handles. > [CON][64:9c:8e:e5:a0:e9][LE]> > > This is a secondary service, including another secondary service, both do not show up in the primaries list above, as they should: > handle: 0x004b, start handle: 0x0047, end handle: 0x0049 uuid: 0000a006-0000-1000-8000-00805f9b34fb > > handle: 0x0051, start handle: 0x004a, end handle: 0x004f uuid: 0000a005-0000-1000-8000-00805f9b34fb The one above should have been returned by: "included 0x0050 0x0055" > handle: 0x005f, start handle: 0x0047, end handle: 0x0049 uuid: 0000a006-0000-1000-8000-00805f9b34fb This one seems to be inside a secondary service. Given that the "Find Included Services" GATT procedure is not recursive, we need to do this manually, first obtaining the range for the secondary service that contains the 0x005f handle: included 0x0064 0x0069 It should return the line below: > handle: 0x0065, start handle: 0x005e, end handle: 0x0063 uuid: 0000a005-0000-1000-8000-00805f9b34fb Next, run: included 0x005e 0x0063 Which should finally return the previous "handle: 0x005f..." line. Chen: for Generic Attribute API, I suppose you will follow this recursive method. Also remember to check for cycles, and follow the requirements on the Core spec. > [CON][64:9c:8e:e5:a0:e9][LE]> included 0x01 0x78 > However, when I tried to search for included services inside a 128bit service, which includes another 128bit secondary service, the gatttool first did not return any result, and then I got a segmentation fault. Can you send the valgrind output for this case? It should help Jefferson fixing the segfault. Thanks for the tests! Best Regards, -- Anderson Lizardo Instituto Nokia de Tecnologia - INdT Manaus - Brazil