* [Bluez-devel] Trouble adding a text parameter to the SDP service record
@ 2005-07-30 10:54 Jordi Jaen Pallares
0 siblings, 0 replies; only message in thread
From: Jordi Jaen Pallares @ 2005-07-30 10:54 UTC (permalink / raw)
To: bluez-devel
[-- Attachment #1: Type: text/plain, Size: 3092 bytes --]
Hi list,
I am trying to add a attribute "Public Key" (20 bytes length) to the
description of a service, but I get a segfault (see code below).
Following some examples in the bluez source code
(and in
http://people.csail.mit.edu/people/albert/pubs/ashuang-sm-thesis-2005.pdf)
I have managed to add successfully the PSM and the protocol version
attributes to the service description, but I could not find examples of
adding "custom" parameters.
I am sure that I still have to provide an identifier to the attribute, but
could not find out how to do it.
Any further help will be appreciated.
Here is the code :
---- snip ----
int main()
{
int ret = 0;
uint32_t service_uuid_int[] = { 0, 0, 0, 0x00FF };
uint16_t l2cap_psm = 1111, ver = 0x001;
uuid_t root_uuid, l2cap_uuid, svc_uuid;
sdp_list_t *l2cap_list = 0 ,
*root_list = 0 ,
*proto_list = 0 ,
*access_proto_list = 0 ;
sdp_data_t *psm = 0 , *version = 0, *psha1 = 0;
const char *service_name = "new service";
const char *service_dsc = "description of my service" ;
const char *service_prov = "Bluetooth Access Point" ;
// this is the key I want to put in the parameter
const char *pubsha1 = "0123456789abcdef6789" ;
sdp_record_t *record = sdp_record_alloc();
// set the general service ID
sdp_uuid128_create (&svc_uuid, &service_uuid_int) ;
sdp_set_service_id (record, svc_uuid) ;
// make the service record publicly browsable
sdp_uuid16_create (&root_uuid, PUBLIC_BROWSE_GROUP) ;
root_list = sdp_list_append (0, &root_uuid) ;
sdp_set_browse_groups (record, root_list) ;
sdp_list_free (root_list, 0);
// set l2cap information
sdp_uuid16_create (&l2cap_uuid, L2CAP_UUID) ;
l2cap_list = sdp_list_append (0, &l2cap_uuid) ;
// set PSM information
psm = sdp_data_alloc (SDP_UINT16, &l2cap_psm) ;
l2cap_list = sdp_list_append (l2cap_list, psm) ;
// set protocol version
version = sdp_data_alloc(SDP_UINT16, &ver);
l2cap_list = sdp_list_append(l2cap_list, version);
// set key parameter
psha1 = sdp_data_alloc(SDP_TEXT_STR16, pubsha1) ;
l2cap_list = sdp_list_append (l2cap_list, psha1) ;
proto_list = sdp_list_append (0 , l2cap_list) ;
// attach protocol information to service record
access_proto_list = sdp_list_append ( 0 , proto_list ) ;
printf("The next line causes segmentation fault\n");
sdp_set_access_protos ( record, access_proto_list ) ;
printf("not reached\n");
// set the name, provider , and description
sdp_set_info_attr (record, service_name, service_prov, service_dsc ) ;
// connect to the local SDP server and register the service record
sdp_session_t *session = 0 ;
session = sdp_connect ( BDADDR_ANY, BDADDR_LOCAL, SDP_RETRY_IF_BUSY ) ;
ret = sdp_record_register ( session , record , SDP_RECORD_PERSIST ) ;
if (ret < 0) {
printf("Service Record registration failed\n");
ret = -1;
}
printf("Service registration completed\n");
// cleanup
sdp_list_free (l2cap_list, 0);
sdp_list_free (access_proto_list, 0);
sdp_record_free (record);
return ret;
}
--- snap ---
Best regards,
Jordi
[-- Attachment #2: Type: text/html, Size: 5046 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-07-30 10:54 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-07-30 10:54 [Bluez-devel] Trouble adding a text parameter to the SDP service record Jordi Jaen Pallares
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.