diff options
| author | Marcel Holtmann <marcel@holtmann.org> | 2007-01-15 20:05:22 +0000 | 
|---|---|---|
| committer | Marcel Holtmann <marcel@holtmann.org> | 2007-01-15 20:05:22 +0000 | 
| commit | 8f94be819dc3173ff0f023bf5a3d41a527a612ed (patch) | |
| tree | 600cb4304c89d6ac3b4a276a075c817284589d96 | |
| parent | 6040c15370d703cdadf7fa6c98caced1b9e32e30 (diff) | |
Add LMP test utility
| -rw-r--r-- | test/Makefile.am | 4 | ||||
| -rw-r--r-- | test/lmptest.c (renamed from test/sttest.c) | 44 | 
2 files changed, 41 insertions, 7 deletions
| diff --git a/test/Makefile.am b/test/Makefile.am index 93ad39b9..18989ba5 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -12,7 +12,7 @@ sbin_PROGRAMS = hciemu  bin_PROGRAMS = l2test rctest -noinst_PROGRAMS = sdptest scotest attest hstest bdaddr sttest +noinst_PROGRAMS = sdptest scotest attest hstest bdaddr lmptest  hciemu_LDADD = $(glib_ldadd) @BLUEZ_LIBS@ $(top_builddir)/common/libhelper.a @@ -32,7 +32,7 @@ bdaddr_SOURCES = bdaddr.c  bdaddr_LDADD = @BLUEZ_LIBS@ $(top_builddir)/common/libhelper.a -sttest_LDADD = @BLUEZ_LIBS@ +lmptest_LDADD = @BLUEZ_LIBS@  noinst_MANS = bdaddr.8 diff --git a/test/sttest.c b/test/lmptest.c index 8f714489..39a906a2 100644 --- a/test/sttest.c +++ b/test/lmptest.c @@ -36,6 +36,40 @@  #include <bluetooth/hci.h>  #include <bluetooth/hci_lib.h> +#if 0 +#define OCF_ERICSSON_SEND_LMP		0x0021 +typedef struct { +	uint16_t handle; +	uint8_t  length; +	uint8_t  data[17]; +} __attribute__ ((packed)) ericsson_send_lmp_cp; +#define ERICSSON_SEND_LMP_CP_SIZE 20 + +static int ericsson_send_lmp(int dd, uint16_t handle, uint8_t length, uint8_t *data) +{ +	struct hci_request rq; +	ericsson_send_lmp_cp cp; + +	memset(&cp, 0, sizeof(cp)); +	cp.handle = htobs(handle); +	cp.length = length; +	memcpy(cp.data, data, length); + +	memset(&rq, 0, sizeof(rq)); +	rq.ogf    = OGF_VENDOR_CMD; +	rq.ocf    = OCF_ERICSSON_SEND_LMP; +	rq.cparam = &cp; +	rq.clen   = ERICSSON_SEND_LMP_CP_SIZE; +	rq.rparam = NULL; +	rq.rlen   = 0; + +	if (hci_send_req(dd, &rq, 1000) < 0) +		return -1; + +	return 0; +} +#endif +  #define OCF_ERICSSON_WRITE_EVENTS	0x0043  typedef struct {  	uint8_t mask; @@ -44,13 +78,13 @@ typedef struct {  } __attribute__ ((packed)) ericsson_write_events_cp;  #define ERICSSON_WRITE_EVENTS_CP_SIZE 3 -static int ericsson_write_events(int dd) +static int ericsson_write_events(int dd, uint8_t mask)  {  	struct hci_request rq;  	ericsson_write_events_cp cp;  	memset(&cp, 0, sizeof(cp)); -	cp.mask = 0x03; +	cp.mask = mask;  	cp.opcode = 0x00;  	cp.opcode_ext = 0x00; @@ -70,9 +104,9 @@ static int ericsson_write_events(int dd)  static void usage(void)  { -	printf("sttest - Utility for ST Microelectronics chips\n\n"); +	printf("lmptest - Utility for testing special LMP functions\n\n");  	printf("Usage:\n" -		"\tsttest [-i <dev>]\n"); +		"\tlmptest [-i <dev>]\n");  }  static struct option main_options[] = { @@ -128,7 +162,7 @@ int main(int argc, char *argv[])  		exit(1);  	} -	if (ericsson_write_events(dd) < 0) { +	if (ericsson_write_events(dd, 0x03) < 0) {  		fprintf(stderr, "Can't activate events for hci%d: %s (%d)\n",  						dev, strerror(errno), errno);  		hci_close_dev(dd); | 
