diff --git a/src/device.c b/src/device.c
index fd7a641..307b15e 100644
--- a/src/device.c
+++ b/src/device.c
return recs;
}
+void btd_device_set_record(struct btd_device *device, const char *uuid,
+ const char *record)
+{
+ /* This API is only used for BR/EDR */
+ struct bearer_state *state = &device->bredr_state;
+ struct browse_req *req;
+ sdp_list_t *recs = NULL;
+ sdp_record_t *rec;
+
+ if (!record)
+ return;
+
+ req = browse_request_new(device, BROWSE_SDP, NULL);
+ if (!req)
+ return;
+
+ rec = record_from_string(record);
+ recs = sdp_list_append(recs, rec);
+ update_bredr_services(req, recs);
+ sdp_list_free(recs, NULL);
+
+ device->svc_refreshed = true;
+ state->svc_resolved = true;
+
+ device_probe_profiles(device, req->profiles_added);
+
+ /* Propagate services changes */
+ g_dbus_emit_property_changed(dbus_conn, req->device->path,
+ DEVICE_INTERFACE, "UUIDs");
+
+ device_svc_resolved(device, BROWSE_SDP, device->bdaddr_type, 0);
+}
+
const sdp_record_t *btd_device_get_record(struct btd_device *device,
const char *uuid)
{
diff --git a/src/device.h b/src/device.h
index 8505617..32f8edc 100644
--- a/src/device.h
+++ b/src/device.h
int device_addr_type_cmp(gconstpointer a, gconstpointer b);
GSList *btd_device_get_uuids(struct btd_device *device);
void device_probe_profiles(struct btd_device *device, GSList *profiles);
+
+void btd_device_set_record(struct btd_device *device, const char *uuid,
+ const char *record);
const sdp_record_t *btd_device_get_record(struct btd_device *device,
const char *uuid);
struct gatt_primary *btd_device_get_primary(struct btd_device *device,