Add LMP test utility

This commit is contained in:
Marcel Holtmann 2007-01-15 20:05:22 +00:00
parent 6040c15370
commit 8f94be819d
2 changed files with 41 additions and 7 deletions

View File

@ -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

View File

@ -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);