Diff between b8c9114f9ee1a93fecea54afb30901a60ec76881 and 850b9d7c9b04a6a2e0778e68daaace7f2cd13520

Changed Files

File Additions Deletions Status
tools/btmgmt.c +21 -25 modified

Full Patch

diff --git a/tools/btmgmt.c b/tools/btmgmt.c
index 936fc24..c3cbc00 100644
--- a/tools/btmgmt.c
+++ b/tools/btmgmt.c
@@ -316,23 +316,23 @@ static const char *typestr(uint8_t type)
 	return "(unknown)";
 }
 
-static int mgmt_connected(int mgmt_sk, uint16_t index,
-					struct mgmt_ev_device_connected *ev,
-					uint16_t len)
+static void connected(uint16_t index, uint16_t len, const void *param,
+							void *user_data)
 {
+	const struct mgmt_ev_device_connected *ev = param;
 	uint16_t eir_len;
 
 	if (len < sizeof(*ev)) {
 		fprintf(stderr,
 			"Invalid connected event length (%u bytes)\n", len);
-		return -EINVAL;
+		return;
 	}
 
 	eir_len = bt_get_le16(&ev->eir_len);
 	if (len != sizeof(*ev) + eir_len) {
 		fprintf(stderr, "Invalid connected event length "
 			"(%u bytes, eir_len %u bytes)\n", len, eir_len);
-		return -EINVAL;
+		return;
 	}
 
 	if (monitor) {
@@ -341,18 +341,17 @@ static int mgmt_connected(int mgmt_sk, uint16_t index,
 		printf("hci%u %s type %s connected eir_len %u\n", index, addr,
 					typestr(ev->addr.type), eir_len);
 	}
-
-	return 0;
 }
 
-static int mgmt_disconnected(int mgmt_sk, uint16_t index,
-				struct mgmt_ev_device_disconnected *ev,
-				uint16_t len)
+static void disconnected(uint16_t index, uint16_t len, const void *param,
+							void *user_data)
 {
+	const struct mgmt_ev_device_disconnected *ev = param;
+
 	if (len < sizeof(struct mgmt_addr_info)) {
 		fprintf(stderr,
 			"Invalid disconnected event length (%u bytes)\n", len);
-		return -EINVAL;
+		return;
 	}
 
 	if (monitor) {
@@ -368,18 +367,17 @@ static int mgmt_disconnected(int mgmt_sk, uint16_t index,
 		printf("hci%u %s type %s disconnected with reason %u\n",
 				index, addr, typestr(ev->addr.type), reason);
 	}
-
-	return 0;
 }
 
-static int mgmt_conn_failed(int mgmt_sk, uint16_t index,
-				struct mgmt_ev_connect_failed *ev,
-				uint16_t len)
+static void conn_failed(uint16_t index, uint16_t len, const void *param,
+							void *user_data)
 {
+	const struct mgmt_ev_connect_failed *ev = param;
+
 	if (len != sizeof(*ev)) {
 		fprintf(stderr,
 			"Invalid connect_failed event length (%u bytes)\n", len);
-		return -EINVAL;
+		return;
 	}
 
 	if (monitor) {
@@ -389,8 +387,6 @@ static int mgmt_conn_failed(int mgmt_sk, uint16_t index,
 				index, addr, typestr(ev->addr.type), ev->status,
 				mgmt_errstr(ev->status));
 	}
-
-	return 0;
 }
 
 static int mgmt_auth_failed(int mgmt_sk, uint16_t index,
@@ -719,12 +715,6 @@ static int mgmt_handle_event(int mgmt_sk, uint16_t ev, uint16_t index,
 		return mgmt_cmd_complete(mgmt_sk, index, data, len);
 	case MGMT_EV_CMD_STATUS:
 		return mgmt_cmd_status(mgmt_sk, index, data, len);
-	case MGMT_EV_DEVICE_CONNECTED:
-		return mgmt_connected(mgmt_sk, index, data, len);
-	case MGMT_EV_DEVICE_DISCONNECTED:
-		return mgmt_disconnected(mgmt_sk, index, data, len);
-	case MGMT_EV_CONNECT_FAILED:
-		return mgmt_conn_failed(mgmt_sk, index, data, len);
 	case MGMT_EV_AUTH_FAILED:
 		return mgmt_auth_failed(mgmt_sk, index, data, len);
 	case MGMT_EV_LOCAL_NAME_CHANGED:
@@ -2052,6 +2042,12 @@ int main(int argc, char *argv[])
 								NULL, NULL);
 	mgmt_register(mgmt, MGMT_EV_NEW_LINK_KEY, index, new_link_key,
 								NULL, NULL);
+	mgmt_register(mgmt, MGMT_EV_DEVICE_CONNECTED, index, connected,
+								NULL, NULL);
+	mgmt_register(mgmt, MGMT_EV_DEVICE_DISCONNECTED, index, disconnected,
+								NULL, NULL);
+	mgmt_register(mgmt, MGMT_EV_CONNECT_FAILED, index, conn_failed,
+								NULL, NULL);
 
 	event_loop = g_main_loop_new(NULL, FALSE);
 	mgmt_io = g_io_channel_unix_new(mgmt_sk);