Improve hciops logging
diff --git a/plugins/hciops.c b/plugins/hciops.c
index cdbd261..34d0609 100644
--- a/plugins/hciops.c
+++ b/plugins/hciops.c
@@ -495,12 +495,12 @@
struct btd_device *device;
struct hci_auth_info_req req;
unsigned char key[16];
- char sa[18], da[18];
+ char da[18];
uint8_t type;
int err;
- ba2str(&BDADDR(index), sa); ba2str(dba, da);
- info("link_key_request (sba=%s, dba=%s)", sa, da);
+ ba2str(dba, da);
+ DBG("hci%d dba %s", index, da);
adapter = manager_find_adapter(&BDADDR(index));
if (adapter)
@@ -534,7 +534,7 @@
/* Link key found */
- DBG("link key type = 0x%02x", type);
+ DBG("link key type 0x%02x", type);
/* Don't use unauthenticated combination keys if MITM is
* required */
@@ -556,14 +556,13 @@
{
evt_link_key_notify *evt = ptr;
bdaddr_t *dba = &evt->bdaddr;
- char sa[18], da[18];
+ char da[18];
int err;
unsigned char old_key[16];
uint8_t old_key_type;
- ba2str(&BDADDR(index), sa); ba2str(dba, da);
- info("link_key_notify (sba=%s, dba=%s, type=%d)", sa, da,
- evt->key_type);
+ ba2str(dba, da);
+ DBG("hci%d dba %s type %d", index, da, evt->key_type);
err = read_link_key(&BDADDR(index), dba, old_key, &old_key_type);
if (err < 0)
@@ -602,18 +601,19 @@
evt_return_link_keys *evt = ptr;
uint8_t num = evt->num_keys;
unsigned char key[16];
- char sa[18], da[18];
+ char da[18];
bdaddr_t dba;
int i;
- ba2str(&BDADDR(index), sa);
+ DBG("hci%d num_keys %u", index, num);
+
ptr++;
for (i = 0; i < num; i++) {
bacpy(&dba, ptr); ba2str(&dba, da);
memcpy(key, ptr + 6, 16);
- info("return_link_keys (sba=%s, dba=%s)", sa, da);
+ DBG("hci%d returned key for %s", index, da);
btd_event_returned_link_key(&BDADDR(index), &dba);
@@ -627,6 +627,8 @@
{
evt_user_confirm_request *req = ptr;
+ DBG("hci%d", index);
+
if (btd_event_user_confirm(&BDADDR(index), &req->bdaddr,
btohl(req->passkey)) < 0)
hci_send_cmd(SK(index), OGF_LINK_CTL,
@@ -637,6 +639,8 @@
{
evt_user_passkey_request *req = ptr;
+ DBG("hci%d", index);
+
if (btd_event_user_passkey(&BDADDR(index), &req->bdaddr) < 0)
hci_send_cmd(SK(index), OGF_LINK_CTL,
OCF_USER_PASSKEY_NEG_REPLY, 6, ptr);
@@ -646,12 +650,15 @@
{
evt_user_passkey_notify *req = ptr;
+ DBG("hci%d", index);
+
btd_event_user_notify(&BDADDR(index), &req->bdaddr,
btohl(req->passkey));
}
static void remote_oob_data_request(int index, void *ptr)
{
+ DBG("hci%d", index);
hci_send_cmd(SK(index), OGF_LINK_CTL,
OCF_REMOTE_OOB_DATA_NEG_REPLY, 6, ptr);
}
@@ -659,11 +666,11 @@
static void io_capa_request(int index, void *ptr)
{
bdaddr_t *dba = ptr;
- char sa[18], da[18];
+ char da[18];
uint8_t cap, auth;
- ba2str(&BDADDR(index), sa); ba2str(dba, da);
- info("io_capa_request (sba=%s, dba=%s)", sa, da);
+ ba2str(dba, da);
+ DBG("hci%d IO capability request for %s", index, da);
if (btd_event_get_io_cap(&BDADDR(index), dba, &cap, &auth) < 0) {
io_capability_neg_reply_cp cp;
@@ -688,10 +695,10 @@
static void io_capa_response(int index, void *ptr)
{
evt_io_capability_response *evt = ptr;
- char sa[18], da[18];
+ char da[18];
- ba2str(&BDADDR(index), sa); ba2str(&evt->bdaddr, da);
- info("io_capa_response (sba=%s, dba=%s)", sa, da);
+ ba2str(&evt->bdaddr, da);
+ DBG("hci%d IO capability response from %s", index, da);
btd_event_set_io_cap(&BDADDR(index), &evt->bdaddr,
evt->capability, evt->authentication);
@@ -704,14 +711,14 @@
pin_code_reply_cp pr;
struct hci_conn_info_req *cr;
struct hci_conn_info *ci;
- char sa[18], da[18], pin[17];
+ char da[18], pin[17];
int pinlen;
memset(&pr, 0, sizeof(pr));
bacpy(&pr.bdaddr, dba);
- ba2str(&BDADDR(index), sa); ba2str(dba, da);
- info("pin_code_request (sba=%s, dba=%s)", sa, da);
+ ba2str(dba, da);
+ DBG("hci%d PIN request for %s", index, da);
cr = g_malloc0(sizeof(*cr) + sizeof(*ci));
@@ -881,6 +888,8 @@
static void read_local_name_complete(int index, read_local_name_rp *rp)
{
+ DBG("hci%d status %u", index, rp->status);
+
if (rp->status)
return;
@@ -920,6 +929,8 @@
read_inq_response_tx_power_level_rp *rp = ptr;
struct btd_adapter *adapter;
+ DBG("hci%d status %u", index, rp->status);
+
if (rp->status)
return;
@@ -937,6 +948,8 @@
read_simple_pairing_mode_rp *rp = ptr;
struct btd_adapter *adapter;
+ DBG("hci%d status %u", index, rp->status);
+
if (rp->status)
return;
@@ -949,15 +962,17 @@
adapter_update_ssp_mode(adapter, rp->mode);
}
-static void read_local_ext_features_complete(bdaddr_t *sba,
+static void read_local_ext_features_complete(int index,
const read_local_ext_features_rp *rp)
{
struct btd_adapter *adapter;
+ DBG("hci%d status %u", index, rp->status);
+
if (rp->status)
return;
- adapter = manager_find_adapter(sba);
+ adapter = manager_find_adapter(&BDADDR(index));
if (!adapter) {
error("No matching adapter found");
return;
@@ -972,6 +987,8 @@
static void read_bd_addr_complete(int index, read_bd_addr_rp *rp)
{
+ DBG("hci%d status %u", index, rp->status);
+
if (rp->status)
return;
@@ -1002,6 +1019,8 @@
struct btd_adapter *adapter;
read_scan_enable_rp *rp = ptr;
+ DBG("hci%d status %u", index, status);
+
adapter = manager_find_adapter(&BDADDR(index));
if (!adapter) {
@@ -1029,7 +1048,7 @@
break;
case cmd_opcode_pack(OGF_INFO_PARAM, OCF_READ_LOCAL_EXT_FEATURES):
ptr += sizeof(evt_cmd_complete);
- read_local_ext_features_complete(&BDADDR(index), ptr);
+ read_local_ext_features_complete(index, ptr);
break;
case cmd_opcode_pack(OGF_INFO_PARAM, OCF_READ_BD_ADDR):
ptr += sizeof(evt_cmd_complete);
@@ -1091,6 +1110,8 @@
evt_remote_name_req_complete *evt = ptr;
char name[MAX_NAME_LENGTH + 1];
+ DBG("hci%d status %u", index, evt->status);
+
memset(name, 0, sizeof(name));
if (!evt->status)
@@ -1104,6 +1125,8 @@
evt_read_remote_version_complete *evt = ptr;
bdaddr_t dba;
+ DBG("hci%d status %u", index, evt->status);
+
if (evt->status)
return;
@@ -1198,6 +1221,8 @@
evt_read_remote_features_complete *evt = ptr;
bdaddr_t dba;
+ DBG("hci%d status %u", index, evt->status);
+
if (evt->status)
return;
@@ -1259,6 +1284,8 @@
evt_auth_complete *evt = ptr;
bdaddr_t dba;
+ DBG("hci%d status %u", index, evt->status);
+
if (get_bdaddr(index, btohs(evt->handle), &dba) < 0)
return;
@@ -1269,6 +1296,8 @@
{
evt_simple_pairing_complete *evt = ptr;
+ DBG("hci%d status %u", index, evt->status);
+
btd_event_simple_pairing_complete(&BDADDR(index), &evt->bdaddr,
evt->status);
}
@@ -1288,7 +1317,7 @@
le_advertising_info *info;
uint8_t num, i;
- DBG("LE Meta Event");
+ DBG("hci%d LE Meta Event %u", index, meta->subevent);
if (meta->subevent != EVT_LE_ADVERTISING_REPORT)
return;
@@ -1555,6 +1584,8 @@
uint16_t policy;
read_stored_link_key_cp cp;
+ DBG("hci%d", index);
+
if (hci_devinfo(index, &di) < 0)
return;
@@ -1602,6 +1633,8 @@
int dd;
pid_t pid;
+ DBG("hci%d", index);
+
dd = hci_open_dev(index);
if (dd < 0) {
error("Unable to open hci%d: %s (%d)", index,
@@ -1674,6 +1707,8 @@
struct hci_dev_info di;
gboolean devup;
+ DBG("hci%d", index);
+
init_device(index);
memset(&di, 0, sizeof(di));
@@ -1725,6 +1760,8 @@
int i, err, ctl = GPOINTER_TO_INT(user_data);
size_t req_size;
+ DBG("");
+
req_size = HCI_MAX_DEV * sizeof(struct hci_dev_req) + sizeof(uint16_t);
dl = g_try_malloc0(req_size);
@@ -1813,6 +1850,8 @@
GIOChannel *ctl_io, *child_io;
int sock, err;
+ DBG("");
+
if (child_pipe[0] != -1)
return -EALREADY;
@@ -1873,6 +1912,8 @@
{
int i;
+ DBG("");
+
for (i = 0; i <= max_dev; i++) {
if (SK(i) >= 0)
hci_close_dev(SK(i));
@@ -1907,6 +1948,8 @@
{
int err;
+ DBG("hci%d", index);
+
if (ioctl(SK(index), HCIDEVUP, index) == 0)
return 0;
@@ -1924,6 +1967,8 @@
{
int err = 0;
+ DBG("hci%d", index);
+
if (ioctl(SK(index), HCIDEVDOWN, index) == 0)
goto done; /* on success */
@@ -1941,6 +1986,8 @@
{
uint8_t mode = SCAN_DISABLED;
+ DBG("hci%d powered %d", index, powered);
+
if (powered)
return hciops_start(index);
@@ -1955,6 +2002,8 @@
{
uint8_t mode = SCAN_PAGE;
+ DBG("hci%d", index);
+
if (hci_send_cmd(SK(index), OGF_HOST_CTL,
OCF_WRITE_SCAN_ENABLE, 1, &mode) < 0)
return -errno;
@@ -1966,6 +2015,8 @@
{
uint8_t mode = (SCAN_PAGE | SCAN_INQUIRY);
+ DBG("hci%d", index);
+
if (hci_send_cmd(SK(index), OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE,
1, &mode) < 0)
return -errno;
@@ -1977,6 +2028,8 @@
{
write_class_of_dev_cp cp;
+ DBG("hci%d class 0x%06x", index, class);
+
memcpy(cp.dev_class, &class, 3);
if (hci_send_cmd(SK(index), OGF_HOST_CTL, OCF_WRITE_CLASS_OF_DEV,
@@ -1993,6 +2046,8 @@
uint8_t lap[] = { 0x33, 0x8b, 0x9e, 0x00, 0x8b, 0x9e };
write_current_iac_lap_cp cp;
+ DBG("hci%d, class %06x limited %d", index, class, limited);
+
/*
* 1: giac
* 2: giac + liac
@@ -2013,6 +2068,8 @@
uint8_t lap[3] = { 0x33, 0x8b, 0x9e };
int err;
+ DBG("hci%d length %u periodic %d", index, length, periodic);
+
if (periodic) {
periodic_inquiry_cp cp;
@@ -2049,6 +2106,8 @@
struct hci_dev_info di;
int err;
+ DBG("hci%d", index);
+
if (hci_devinfo(index, &di) < 0)
return -errno;
@@ -2068,6 +2127,8 @@
{
le_set_scan_enable_cp cp;
+ DBG("hci%d enable %u", index, enable);
+
memset(&cp, 0, sizeof(cp));
cp.enable = enable;
cp.filter_dup = 0;
@@ -2083,6 +2144,8 @@
{
le_set_scan_parameters_cp cp;
+ DBG("hci%d", index);
+
memset(&cp, 0, sizeof(cp));
cp.type = 0x01; /* Active scanning */
cp.interval = htobs(0x0010);
@@ -2099,12 +2162,18 @@
static int hciops_stop_scanning(int index)
{
+ DBG("hci%d", index);
+
return le_set_scan_enable(index, 0);
}
static int hciops_resolve_name(int index, bdaddr_t *bdaddr)
{
remote_name_req_cp cp;
+ char addr[18];
+
+ ba2str(bdaddr, addr);
+ DBG("hci%d dba %s", index, addr);
memset(&cp, 0, sizeof(cp));
bacpy(&cp.bdaddr, bdaddr);
@@ -2121,6 +2190,8 @@
{
change_local_name_cp cp;
+ DBG("hci%d, name %s", index, name);
+
memset(&cp, 0, sizeof(cp));
strncpy((char *) cp.name, name, sizeof(cp.name));
@@ -2134,6 +2205,10 @@
static int hciops_cancel_resolve_name(int index, bdaddr_t *bdaddr)
{
remote_name_req_cancel_cp cp;
+ char addr[18];
+
+ ba2str(bdaddr, addr);
+ DBG("hci%d dba %s", index, addr);
memset(&cp, 0, sizeof(cp));
bacpy(&cp.bdaddr, bdaddr);
@@ -2150,6 +2225,8 @@
write_page_activity_cp cp;
uint8_t type;
+ DBG("hci%d enable %d", index, enable);
+
if (enable) {
type = PAGE_SCAN_TYPE_INTERLACED;
cp.interval = 0x0024; /* 22.5 msec page scan interval */
@@ -2173,6 +2250,9 @@
static int hciops_read_clock(int index, int handle, int which, int timeout,
uint32_t *clock, uint16_t *accuracy)
{
+ DBG("hci%d handle %d which %d timeout %d", index, handle, which,
+ timeout);
+
if (hci_read_clock(SK(index), handle, which, clock, accuracy,
timeout) < 0)
return -errno;
@@ -2184,6 +2264,10 @@
{
int err;
struct hci_conn_info_req *cr;
+ char addr[18];
+
+ ba2str(bdaddr, addr);
+ DBG("hci%d dba %s", index, addr);
cr = g_malloc0(sizeof(*cr) + sizeof(struct hci_conn_info));
bacpy(&cr->bdaddr, bdaddr);
@@ -2206,6 +2290,8 @@
{
write_ext_inquiry_response_cp cp;
+ DBG("hci%d", index);
+
memset(&cp, 0, sizeof(cp));
memcpy(cp.data, data, 240);
@@ -2219,12 +2305,18 @@
static int hciops_read_bdaddr(int index, bdaddr_t *bdaddr)
{
+ DBG("hci%d", index);
bacpy(bdaddr, &BDADDR(index));
return 0;
}
static int hciops_block_device(int index, bdaddr_t *bdaddr)
{
+ char addr[18];
+
+ ba2str(bdaddr, addr);
+ DBG("hci%d dba %s", index, addr);
+
if (ioctl(SK(index), HCIBLOCKADDR, bdaddr) < 0)
return -errno;
@@ -2233,6 +2325,11 @@
static int hciops_unblock_device(int index, bdaddr_t *bdaddr)
{
+ char addr[18];
+
+ ba2str(bdaddr, addr);
+ DBG("hci%d dba %s", index, addr);
+
if (ioctl(SK(index), HCIUNBLOCKADDR, bdaddr) < 0)
return -errno;
@@ -2245,6 +2342,8 @@
struct hci_conn_info *ci;
int err, i;
+ DBG("hci%d", index);
+
cl = g_malloc0(10 * sizeof(*ci) + sizeof(*cl));
cl->dev_id = index;
@@ -2269,12 +2368,14 @@
static int hciops_read_local_version(int index, struct hci_version *ver)
{
+ DBG("hci%d", index);
memcpy(ver, &VER(index), sizeof(*ver));
return 0;
}
static int hciops_read_local_features(int index, uint8_t *features)
{
+ DBG("hci%d", index);
memcpy(features, FEATURES(index), 8);
return 0;
}
@@ -2283,6 +2384,8 @@
{
uint8_t page_num = 1;
+ DBG("hci%d", index);
+
if (hci_send_cmd(SK(index), OGF_INFO_PARAM,
OCF_READ_LOCAL_EXT_FEATURES, 1, &page_num) < 0)
return -errno;
@@ -2292,6 +2395,8 @@
static int hciops_read_link_policy(int index)
{
+ DBG("hci%d", index);
+
if (hci_send_cmd(SK(index), OGF_LINK_POLICY,
OCF_READ_DEFAULT_LINK_POLICY, 0, NULL) < 0)
return -errno;
@@ -2303,6 +2408,8 @@
{
disconnect_cp cp;
+ DBG("hci%d handle %u", index, handle);
+
memset(&cp, 0, sizeof(cp));
cp.handle = htobs(handle);
cp.reason = HCI_OE_USER_ENDED_CONNECTION;
@@ -2317,6 +2424,10 @@
static int hciops_remove_bonding(int index, bdaddr_t *bdaddr)
{
delete_stored_link_key_cp cp;
+ char addr[18];
+
+ ba2str(bdaddr, addr);
+ DBG("hci%d dba %s", index, addr);
memset(&cp, 0, sizeof(cp));
bacpy(&cp.bdaddr, bdaddr);
@@ -2333,7 +2444,7 @@
{
auth_requested_cp cp;
- DBG("");
+ DBG("hci%d handle %u", index, handle);
memset(&cp, 0, sizeof(cp));
cp.handle = htobs(handle);
@@ -2347,8 +2458,12 @@
static int hciops_pincode_reply(int index, bdaddr_t *bdaddr, const char *pin)
{
+ char addr[18];
int err;
+ ba2str(bdaddr, addr);
+ DBG("hci%d dba %s", index, addr);
+
if (pin) {
pin_code_reply_cp pr;
size_t len = strlen(pin);
@@ -2374,8 +2489,12 @@
static int hciops_confirm_reply(int index, bdaddr_t *bdaddr, gboolean success)
{
- int err;
user_confirm_reply_cp cp;
+ char addr[18];
+ int err;
+
+ ba2str(bdaddr, addr);
+ DBG("hci%d dba %s success %d", index, addr, success);
memset(&cp, 0, sizeof(cp));
bacpy(&cp.bdaddr, bdaddr);
@@ -2397,8 +2516,12 @@
static int hciops_passkey_reply(int index, bdaddr_t *bdaddr, uint32_t passkey)
{
+ char addr[18];
int err;
+ ba2str(bdaddr, addr);
+ DBG("hci%d dba %s", index, addr);
+
if (passkey != INVALID_PASSKEY) {
user_passkey_reply_cp cp;
@@ -2422,6 +2545,10 @@
static int hciops_get_auth_info(int index, bdaddr_t *bdaddr, uint8_t *auth)
{
struct hci_auth_info_req req;
+ char addr[18];
+
+ ba2str(bdaddr, addr);
+ DBG("hci%d dba %s", index, addr);
memset(&req, 0, sizeof(req));
bacpy(&req.bdaddr, bdaddr);
@@ -2437,6 +2564,8 @@
static int hciops_read_scan_enable(int index)
{
+ DBG("hci%d", index);
+
if (hci_send_cmd(SK(index), OGF_HOST_CTL, OCF_READ_SCAN_ENABLE,
0, NULL) < 0)
return -errno;
@@ -2448,6 +2577,8 @@
{
write_le_host_supported_cp cp;
+ DBG("hci%d le %u simul %u", index, le, simul);
+
memset(&cp, 0, sizeof(cp));
cp.le = le;
cp.simul = simul;
@@ -2470,6 +2601,8 @@
struct remote_version_req *req = user_data;
read_remote_version_cp cp;
+ DBG("hci%d handle %u", req->index, req->handle);
+
memset(&cp, 0, sizeof(cp));
cp.handle = htobs(req->handle);
@@ -2484,6 +2617,8 @@
{
struct remote_version_req *req;
+ DBG("hci%d handle %u delayed %d", index, handle, delayed);
+
req = g_new0(struct remote_version_req, 1);
req->handle = handle;
req->index = index;
@@ -2544,11 +2679,13 @@
static int hciops_init(void)
{
+ DBG("");
return btd_register_adapter_ops(&hci_ops, FALSE);
}
static void hciops_exit(void)
{
+ DBG("");
btd_adapter_cleanup_ops(&hci_ops);
}