diff options
author | Johan Hedberg <johan.hedberg@nokia.com> | 2008-10-09 14:11:16 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@nokia.com> | 2008-10-09 15:13:28 +0200 |
commit | 548026e08bd9b83b3685d515a916e2cf674184f3 (patch) | |
tree | 75f707ae2a4b825ae7f60cef44f54a74579e21a0 /src/storage.c | |
parent | 99c24bafe1619e6ace7e89be2ddea2e8f2eaf98f (diff) |
Make device driver probe calls take UUID's instead of full records
This is preparation for allowing the device object to be correctly set up even
when we don't have the full service records but only the remote UUID's.
Diffstat (limited to 'src/storage.c')
-rw-r--r-- | src/storage.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/storage.c b/src/storage.c index d048ddb4..d99fb33c 100644 --- a/src/storage.c +++ b/src/storage.c @@ -845,15 +845,19 @@ static void create_stored_records_from_keys(char *key, char *value, rec_list->recs = sdp_list_append(rec_list->recs, rec); } -sdp_list_t *read_records(const gchar *src, const gchar *dst) +sdp_list_t *read_records(bdaddr_t *src, bdaddr_t *dst) { char filename[PATH_MAX + 1]; struct record_list rec_list; + char srcaddr[18], dstaddr[18]; - rec_list.addr = dst; + ba2str(src, srcaddr); + ba2str(dst, dstaddr); + + rec_list.addr = dstaddr; rec_list.recs = NULL; - create_name(filename, PATH_MAX, STORAGEDIR, src, "sdp"); + create_name(filename, PATH_MAX, STORAGEDIR, srcaddr, "sdp"); textfile_foreach(filename, create_stored_records_from_keys, &rec_list); return rec_list.recs; @@ -952,16 +956,17 @@ static int read_device_id_from_did(const gchar *src, const gchar *dst, return 0; } -int read_device_id(const gchar *src, const gchar *dst, +int read_device_id(const gchar *srcaddr, const gchar *dstaddr, uint16_t *source, uint16_t *vendor, uint16_t *product, uint16_t *version) { uint16_t lsource, lvendor, lproduct, lversion; sdp_list_t *recs; sdp_record_t *rec; + bdaddr_t src, dst; int err; - err = read_device_id_from_did(src, dst, &lsource, + err = read_device_id_from_did(srcaddr, dstaddr, &lsource, vendor, product, version); if (!err) { if (lsource == 0xffff) @@ -970,7 +975,10 @@ int read_device_id(const gchar *src, const gchar *dst, return err; } - recs = read_records(src, dst); + str2ba(srcaddr, &src); + str2ba(dstaddr, &dst); + + recs = read_records(&src, &dst); rec = find_record_in_list(recs, PNP_UUID); if (rec) { @@ -1004,7 +1012,7 @@ int read_device_id(const gchar *src, const gchar *dst, lversion = 0x0000; } - store_device_id(src, dst, lsource, lvendor, lproduct, lversion); + store_device_id(srcaddr, dstaddr, lsource, lvendor, lproduct, lversion); if (err) return err; |