Add support for parsing management version response
diff --git a/plugins/mgmtops.c b/plugins/mgmtops.c
index e311be8..a4bad4b 100644
--- a/plugins/mgmtops.c
+++ b/plugins/mgmtops.c
@@ -51,9 +51,44 @@
static int mgmt_sock = -1;
static guint mgmt_watch = 0;
+static void read_version_complete(int sk, void *buf, size_t len)
+{
+ struct hci_mgmt_read_version_rp *rp = buf;
+ uint16_t revision;
+
+ if (len < HCI_MGMT_READ_VERSION_RP_SIZE) {
+ error("Too small read version complete event");
+ return;
+ }
+
+ revision = btohs(bt_get_unaligned(&rp->revision));
+
+ DBG("status %u version %u revision %u", rp->status, rp->version,
+ revision);
+}
+
static void mgmt_cmd_complete(int sk, void *buf, size_t len)
{
+ struct hci_mgmt_cmd_complete_ev *ev = buf;
+ uint16_t opcode;
+
DBG("");
+
+ if (len < sizeof(*ev)) {
+ error("Too small management command complete event packet");
+ return;
+ }
+
+ opcode = btohs(bt_get_unaligned(&ev->opcode));
+
+ switch (opcode) {
+ case HCI_MGMT_OP_READ_VERSION:
+ read_version_complete(sk, ev->data, len - sizeof(*ev));
+ break;
+ default:
+ error("Unknown command complete for opcode %u", opcode);
+ break;
+ }
}
static void mgmt_cmd_status(int sk, void *buf, size_t len)