diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2008-06-30 14:05:38 +0000 |
---|---|---|
committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2008-06-30 14:05:38 +0000 |
commit | 3005856580174bb25cd0510115bed9499b1f1bdc (patch) | |
tree | c9c407b129b8d9e5ca0163d9a509cce67ad1e296 /common/glib-helper.c | |
parent | a22a088109b664efdee397affed55b039cb0999b (diff) |
Accept friendly names for discover services
Diffstat (limited to 'common/glib-helper.c')
-rw-r--r-- | common/glib-helper.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/common/glib-helper.c b/common/glib-helper.c index 931b99a5..f0435aca 100644 --- a/common/glib-helper.c +++ b/common/glib-helper.c @@ -386,10 +386,42 @@ char *bt_uuid2string(uuid_t *uuid) return str; } +static struct { + const char *name; + uint16_t class; +} bt_services[] = { + { "vcp", VIDEO_CONF_SVCLASS_ID }, + { "pbap", PBAP_SVCLASS_ID }, + { "sap", SAP_SVCLASS_ID }, + { "ftp", OBEX_FILETRANS_SVCLASS_ID }, + { "bpp", BASIC_PRINTING_SVCLASS_ID }, + { "bip", IMAGING_SVCLASS_ID }, + { "synch", IRMC_SYNC_SVCLASS_ID }, + { "dun", DIALUP_NET_SVCLASS_ID }, + { "opp", OBEX_OBJPUSH_SVCLASS_ID }, + { "fax", FAX_SVCLASS_ID }, + { "spp", SERIAL_PORT_SVCLASS_ID }, + { "hsp", HEADSET_SVCLASS_ID }, + { "hfp", HANDSFREE_SVCLASS_ID }, + { } +}; + +uint16_t bt_string2class(const char *pattern) +{ + int i; + + for (i = 0; bt_services[i].name; i++) { + if (strcasecmp(bt_services[i].name, pattern) == 0) + return bt_services[i].class; + } + + return 0; +} + int bt_string2uuid(uuid_t *uuid, const char *string) { - uint16_t data1, data2, data3, data5; uint32_t data0, data4; + uint16_t data1, data2, data3, data5; if (strlen(string) == 36 && string[8] == '-' && @@ -417,6 +449,12 @@ int bt_string2uuid(uuid_t *uuid, const char *string) sdp_uuid128_create(uuid, val); return 0; + } else { + uint16_t class = bt_string2class(string); + if (class) { + sdp_uuid16_create(uuid, class); + return 0; + } } return -1; |