All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.