From: Frederic Danis <frederic.danis@linux.intel.com>
To: Marcel Holtmann <marcel@holtmann.org>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH v3 01/10] doc: Add settings storage documentation
Date: Thu, 11 Oct 2012 16:38:39 +0200 [thread overview]
Message-ID: <5076D9EF.4030102@linux.intel.com> (raw)
In-Reply-To: <1349890310.27233.140.camel@aeonflux>
Hello Marcel,
On 10/10/2012 19:31, Marcel Holtmann wrote:
> Hi Fred,
>
>> doc/settings-storage.txt | 102 ++++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 102 insertions(+)
>> create mode 100644 doc/settings-storage.txt
>>
>> diff --git a/doc/settings-storage.txt b/doc/settings-storage.txt
>> new file mode 100644
>> index 0000000..51d2220
>> --- /dev/null
>> +++ b/doc/settings-storage.txt
>> @@ -0,0 +1,102 @@
>> +Information related to local adapters and remote devices are stored in storage
>> +directory (default: /var/lib/bluetooth).
>> +Files are in ini-file format.
>> +
>> +There is one directory per adapter, named by its bluetooth address, which
>> +contains:
>> + - a settings file for the local adapter
>> + - an attribute_db file containing attributes of supported LE services
>> + - names file containing names of all devices already seen
>> + - one directory per remote device, named by remote device address, which
>> + contains:
>> + - a settings file
>> + - a key file accessible only by root
>> + - an attribute_db file containing attributes of remote LE services
>> +
>> +So the directory structure should be:
>> + /var/lib/bluetooth/<adapter address>/
>> + ./settings
>> + ./attribute_db
>
> not sure this is a good name.
Are you OK with "attributes" name for this file?
>> + ./names
>
> Lets call this one "cache". Since we could throw it away and it will be
> just rediscovered. And we can also stuff other cacheable details in
> there.
OK, I will replace it with cache directory, containing one file per
remote device.
>> + ./<remote device address>/
>> + ./settings
>
> Besides the Alias, are they really settings. You can not configure much
> anyway.
Rename it "info"?
>> + ./keys
>
> Not sure that I want the keys separated. That seems like a waste.
OK, I will merge it with previous file "info".
>> + ./attribute_db
>> + ./<remote device address>/
>> + ./settings
>> + ./keys
>> + ./attribute_db
>> + ...
>
> Why did we want directories for remote devices again? Can we not just
> put all in one big file with the name of the remote address?
Attribute_db (or whatever name we chose) stores the list of attributes
advertised by the remote device.
In this file I use the handle value as group name (primary key) as we
can get multiple entry with same UUID.
I think this should remain separated from "info" file, in order to parse
it more easily (just need to parse all groups in it to retrieve complete
attribute list).
That's why I think we should use one directory per remote device.
>> +
>> +Adapter directory files
>> +=======================
>> +
>> +Settings file contains 1 [General] group with adapter info:
>> + [General]
>> + Name=
>> + Class=0x000000
>> + Pairable=<true|false>
>> + PairableTimeout=0
>> + DiscoverableTimeout=0
>> + Mode=<off|connectable|discoverable>
>> + OnMode=<connectable|discoverable>
>
> Actually with management interface now being used, we can be a bit
> smarter here. The mode can be programmed even if the controller is not
> powered.
>
> So this might be better as Discoverable, Connectable, Pairable and
> Powered boolean options.
OK, I will replace Mode and OnMode keys by Discoverable, Connectable,
Pairable and Powered keys.
> Also Pairable has no timeout in the kernel API anymore. Do we still need
> this?
>
>> +The attribute_db file is a list of handles (group name) with UUID and Value as
>> +keys, for example:
>> + [0x0001]
>> + UUID=00002800-0000-1000-8000-00805f9b34fb
>> + Value=0018
>> +
>> + [0x0004]
>> + UUID=00002803-0000-1000-8000-00805f9b34fb
>> + Value=020600002A
>> +
>> + [0x0006]
>> + UUID=00002a00-0000-1000-8000-00805f9b34fb
>> + Value=4578616D706C6520446576696365
>
> Is this our primary key, the handle?
>
>> +
>> +Names file contains 1 [Names] group with device address as key:
>> + [Names]
>> + <nn:nn:nn:nn:nn:nn>=device name a
>> + <mm:mm:mm:mm:mm:mm>=device name b
>
> I am not sure this is the best idea this way. Maybe just creating files
> for each address we ever see is a better idea. Details like LastSeen
> could be useful for unpaired devices.
OK
Regarding LastSeen key, is it interesting to keep it in device "info"
file too?
So, we will open the corresponding cache/<device addr> file each time we
need to resolve remote device name, right?
>
>> +
>> +Device directory files
>> +======================
>> +
>> +Remote device settings file will include a [General] group with device infos
>> +and a [DeviceID] group with related infos:
>> + [General]
>> + Alias=
>> + Class=0x000000
>> + Manufacturer=0
>> + LmpVersion=
>> + LmpSubversion=
>
> Take these 3 our. We were just storing them for statistic purposes.
Should I remove them?
>> + Features=0000000000000000
>> + AddressType=<BR/EDR|LE>
>> + LEAddressType=<public|random>
>
> That is not needed. It is encoded in the address itself.
>
>> + LastSeen=yyyy-mm-dd hh:mm:ss GMT
>> + LastUsed=yyyy-mm-dd hh:mm:ss GMT
>> + Trusted=<true|false>
>> + Profiles=<128 bits UUID of profile 1>;<128 bits UUID of profile 2>;...
>> +
>> + [DeviceID]
>> + Assigner=0
>
> This is called Source.
OK, I will change this.
>> + Vendor=0
>> + Product=0
>> + Version=0
>> +
>> +Keys file includes informations related to link key or long term link key:
>> + [LinkKey]
>> + Key=
>> + Type=0
>> + PINLength=0
>> +
>> + [LongTermKey]
>> + Key=
>> + Authenticated=<true|false>
>> + EncSize=0
>> + EDiv=0
>> + Rand=0
>
> Can be both in the same file about the device information.
OK, I will merge them.
Regards
Fred
--
Frederic Danis Open Source Technology Center
frederic.danis@intel.com Intel Corporation
next prev parent reply other threads:[~2012-10-11 14:38 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-10 14:10 [PATCH v3 00/10] Move adapter config file to ini-file format Frédéric Danis
2012-10-10 14:10 ` [PATCH v3 01/10] doc: Add settings storage documentation Frédéric Danis
2012-10-10 17:31 ` Marcel Holtmann
2012-10-10 18:41 ` Johan Hedberg
2012-10-11 13:41 ` Marcel Holtmann
2012-10-11 14:24 ` Johan Hedberg
2012-10-11 14:38 ` Frederic Danis [this message]
2012-10-10 14:10 ` [PATCH v3 02/10] adapter: Read name in storage at init Frédéric Danis
2012-10-10 17:34 ` Marcel Holtmann
2012-10-10 14:10 ` [PATCH v3 03/10] adaptername: Retrieve config name from adapter Frédéric Danis
2012-10-10 17:38 ` Marcel Holtmann
2012-10-10 14:10 ` [PATCH v3 04/10] adapter: Read device class in storage at init Frédéric Danis
2012-10-10 17:43 ` Marcel Holtmann
2012-10-10 14:10 ` [PATCH v3 05/10] adapter: Move pairable read to load_config() Frédéric Danis
2012-10-10 17:44 ` Marcel Holtmann
2012-10-10 14:10 ` [PATCH v3 06/10] adapter: Read pairable timeout in storage at init Frédéric Danis
2012-10-10 14:10 ` [PATCH v3 07/10] adapter: Read discoverable " Frédéric Danis
2012-10-10 14:10 ` [PATCH v3 08/10] adapter: Read mode " Frédéric Danis
2012-10-10 17:46 ` Marcel Holtmann
2012-10-10 14:10 ` [PATCH v3 09/10] adapter: Move saved config to ini-file format Frédéric Danis
2012-10-10 14:10 ` [PATCH v3 10/10] TODO: Add entry to remove storage convertion function Frédéric Danis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5076D9EF.4030102@linux.intel.com \
--to=frederic.danis@linux.intel.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=marcel@holtmann.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).