mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-11-17 17:24:32 +08:00
Add LMP test utility
This commit is contained in:
parent
6040c15370
commit
8f94be819d
@ -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
|
||||
|
||||
|
@ -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);
|
Loading…
Reference in New Issue
Block a user