summaryrefslogtreecommitdiffstats
path: root/sdpd
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2007-08-23 10:12:37 +0000
committerMarcel Holtmann <marcel@holtmann.org>2007-08-23 10:12:37 +0000
commit8af5664021b471e769b93a345f451f9a20b08ca8 (patch)
tree0ae7610eb71af7a62d5ba89c1392776a83d89e40 /sdpd
parentf205cd06dc4e9da2c1d5109e570008d7d80b8380 (diff)
Trigger the service classes update through a callback
Diffstat (limited to 'sdpd')
-rw-r--r--sdpd/sdpd.h3
-rw-r--r--sdpd/service.c9
2 files changed, 12 insertions, 0 deletions
diff --git a/sdpd/sdpd.h b/sdpd/sdpd.h
index 6fc60e85..ad7a2d4f 100644
--- a/sdpd/sdpd.h
+++ b/sdpd/sdpd.h
@@ -87,4 +87,7 @@ void stop_sdp_server(void);
int add_record_to_server(sdp_record_t *rec);
int remove_record_from_server(uint32_t handle);
+typedef void (*service_classes_callback_t) (const bdaddr_t *bdaddr, uint8_t value);
+
uint8_t get_service_classes(const bdaddr_t *bdaddr);
+void set_service_classes_callback(service_classes_callback_t callback);
diff --git a/sdpd/service.c b/sdpd/service.c
index 851c1459..7f8296f4 100644
--- a/sdpd/service.c
+++ b/sdpd/service.c
@@ -45,6 +45,7 @@
static sdp_record_t *server = NULL;
static uint8_t service_classes = 0x00;
+static service_classes_callback_t service_classes_callback = NULL;
/*
* List of version numbers supported by the SDP server.
@@ -123,6 +124,9 @@ static void update_svclass_list(void)
debug("Service classes 0x%02x", val);
service_classes = val;
+
+ if (service_classes_callback)
+ service_classes_callback(BDADDR_ANY, val);
}
uint8_t get_service_classes(const bdaddr_t *bdaddr)
@@ -130,6 +134,11 @@ uint8_t get_service_classes(const bdaddr_t *bdaddr)
return service_classes;
}
+void set_service_classes_callback(service_classes_callback_t callback)
+{
+ service_classes_callback = callback;
+}
+
void register_public_browse_group(void)
{
sdp_list_t *browselist;