From: Chen Ganir <chen.ganir@ti.com>
To: Szymon Janc <szymon.janc@tieto.com>
Cc: "linux-bluetooth@vger.kernel.org" <linux-bluetooth@vger.kernel.org>
Subject: Re: [PATCH v2] gatt: Translate Characteristic names
Date: Thu, 30 Aug 2012 15:38:04 +0300 [thread overview]
Message-ID: <503F5EAC.4070909@ti.com> (raw)
In-Reply-To: <1472845.YqRC14yUFc@uw000953>
Szymon,
On 08/30/2012 03:20 PM, Szymon Janc wrote:
> On Wednesday 29 of August 2012 13:56:16 chen.ganir@ti.com wrote:
>> From: Chen Ganir <chen.ganir@ti.com>
>
> Hi Chen,
>
>> Translate Characteristic UUID's to name. This list was taken from
>> the Bluetooth SIG developer site.
>> ---
>> attrib/client.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
>> 1 file changed, 80 insertions(+), 3 deletions(-)
>>
>> diff --git a/attrib/client.c b/attrib/client.c
>> index bb6adf8..4ef74b5 100644
>> --- a/attrib/client.c
>> +++ b/attrib/client.c
>> @@ -105,8 +105,79 @@ struct watcher {
>> struct gatt_service *gatt;
>> };
>>
>> +struct characteristic_info {
>> + const char *uuid;
>> + const char *name;
>> +};
>> +
>> +static const struct characteristic_info charInfo[] = {
>> + {"00002a43-0000-1000-8000-00805f9b34fb","Alert Category ID" },
>> + {"00002a42-0000-1000-8000-00805f9b34fb","Alert Category ID Bit Mask" },
>> + {"00002a06-0000-1000-8000-00805f9b34fb","Alert Level" },
>> + {"00002a44-0000-1000-8000-00805f9b34fb","Alert Notification Control Point" },
>> + {"00002a3f-0000-1000-8000-00805f9b34fb","Alert Status" },
>> + {"00002a01-0000-1000-8000-00805f9b34fb","Appearance" },
>> + {"00002a49-0000-1000-8000-00805f9b34fb","Blood Pressure Feature" },
>> + {"00002a35-0000-1000-8000-00805f9b34fb","Blood Pressure Measurement" },
>> + {"00002a38-0000-1000-8000-00805f9b34fb","Body Sensor Location" },
>> + {"00002a2b-0000-1000-8000-00805f9b34fb","Current Time" },
>> + {"00002a08-0000-1000-8000-00805f9b34fb","Date Time" },
>> + {"00002a0a-0000-1000-8000-00805f9b34fb","Day Date Time" },
>> + {"00002a09-0000-1000-8000-00805f9b34fb","Day of Week" },
>> + {"00002a00-0000-1000-8000-00805f9b34fb","Device Name" },
>> + {"00002a0d-0000-1000-8000-00805f9b34fb","DST Offset" },
>> + {"00002a0c-0000-1000-8000-00805f9b34fb","Exact Time 256" },
>> + {"00002a26-0000-1000-8000-00805f9b34fb","Firmware Revision String" },
>> + {"00002a27-0000-1000-8000-00805f9b34fb","Hardware Revision String" },
>> + {"00002a39-0000-1000-8000-00805f9b34fb","Heart Rate Control Point" },
>> + {"00002a37-0000-1000-8000-00805f9b34fb","Heart Rate Measurement" },
>> + {"00002a2a-0000-1000-8000-00805f9b34fb","IEEE 11073-20601 Regulatory" },
>> + {"00002a36-0000-1000-8000-00805f9b34fb","Intermediate Cuff Pressure" },
>> + {"00002a1e-0000-1000-8000-00805f9b34fb","Intermediate Temperature" },
>> + {"00002a0f-0000-1000-8000-00805f9b34fb","Local Time Information" },
>> + {"00002a29-0000-1000-8000-00805f9b34fb","Manufacturer Name String" },
>> + {"00002a21-0000-1000-8000-00805f9b34fb","Measurement Interval" },
>> + {"00002a24-0000-1000-8000-00805f9b34fb","Model Number String" },
>> + {"00002a46-0000-1000-8000-00805f9b34fb","New Alert" },
>> + {"00002a04-0000-1000-8000-00805f9b34fb","Peripheral Preferred Connection Parameters" },
>> + {"00002a02-0000-1000-8000-00805f9b34fb","Peripheral Privacy Flag" },
>> + {"00002a03-0000-1000-8000-00805f9b34fb","Reconnection Address" },
>> + {"00002a14-0000-1000-8000-00805f9b34fb","Reference Time Information" },
>> + {"00002a40-0000-1000-8000-00805f9b34fb","Ringer Control Point" },
>> + {"00002a41-0000-1000-8000-00805f9b34fb","Ringer Setting" },
>> + {"00002a25-0000-1000-8000-00805f9b34fb","Serial Number String" },
>> + {"00002a05-0000-1000-8000-00805f9b34fb","Service Changed" },
>> + {"00002a28-0000-1000-8000-00805f9b34fb","Software Revision String" },
>> + {"00002a47-0000-1000-8000-00805f9b34fb","Supported New Alert Category" },
>> + {"00002a48-0000-1000-8000-00805f9b34fb","Supported Unread Alert Category" },
>> + {"00002a23-0000-1000-8000-00805f9b34fb","System ID" },
>> + {"00002a1c-0000-1000-8000-00805f9b34fb","Temperature Measurement" },
>> + {"00002a1d-0000-1000-8000-00805f9b34fb","Temperature Type" },
>> + {"00002a12-0000-1000-8000-00805f9b34fb","Time Accuracy" },
>> + {"00002a13-0000-1000-8000-00805f9b34fb","Time Source" },
>> + {"00002a16-0000-1000-8000-00805f9b34fb","Time Update Control Point" },
>> + {"00002a17-0000-1000-8000-00805f9b34fb","Time Update State" },
>> + {"00002a11-0000-1000-8000-00805f9b34fb","Time with DST" },
>> + {"00002a0e-0000-1000-8000-00805f9b34fb","Time Zone" },
>> + {"00002a07-0000-1000-8000-00805f9b34fb","Tx Power Level" },
>> + {"00002a45-0000-1000-8000-00805f9b34fb","Unread Alert Status" },
>> + { }
>> +};
>> +
>> static GSList *gatt_services = NULL;
>>
>> +static const struct characteristic_info *get_char_info(const char* uuid)
>
> I would leave this function returning name directly and not whole struct characteristic_info.
>
Why ? We have this struct with characteristic information (maybe later
we'll add more information. Why limit ourselves to name only ?
>> +{
>> + const struct characteristic_info *c;
>> +
>> + for (c = charInfo; c->uuid; c++) {
>> + if(g_strcmp0(c->uuid, uuid) == 0) {
>> + return c;
>> + }
>> + }
>> + return NULL;
>> +}
>> +
>> static void characteristic_free(void *user_data)
>> {
>> struct characteristic *chr = user_data;
>> @@ -190,7 +261,7 @@ static int watcher_cmp(gconstpointer a, gconstpointer b)
>> static void append_char_dict(DBusMessageIter *iter, struct characteristic *chr)
>> {
>> DBusMessageIter dict;
>> - const char *name = "";
>> + const struct characteristic_info *char_info;
>> char *uuid;
>>
>> dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
>> @@ -202,8 +273,14 @@ static void append_char_dict(DBusMessageIter *iter, struct characteristic *chr)
>> dict_append_entry(&dict, "UUID", DBUS_TYPE_STRING, &uuid);
>> g_free(uuid);
>>
>> - /* FIXME: Translate UUID to name. */
>> - dict_append_entry(&dict, "Name", DBUS_TYPE_STRING, &name);
>> + char_info = get_char_info(chr->type);
>> +
>> + if (char_info != NULL) {
>> + const char *name = char_info->name;
>> + if (name != NULL)
>> + dict_append_entry(&dict, "Name", DBUS_TYPE_STRING, &name);
>> + }
>> +
>>
>> if (chr->desc)
>> dict_append_entry(&dict, "Description", DBUS_TYPE_STRING,
>>
>
BR,
Chen Ganir
next prev parent reply other threads:[~2012-08-30 12:38 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-29 10:56 [PATCH v2] gatt: Translate Characteristic names chen.ganir
2012-08-30 12:20 ` Szymon Janc
2012-08-30 12:38 ` Chen Ganir [this message]
2012-08-30 12:43 ` Szymon Janc
2012-09-02 6:50 ` Chen Ganir
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=503F5EAC.4070909@ti.com \
--to=chen.ganir@ti.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=szymon.janc@tieto.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.