From b8051dd0e1f446966fa70a09c04d3f7a527c456f Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Thu, 3 Jan 2013 20:51:51 +0200 Subject: [PATCH] core: Add initial mgmt version reading to adapter.c --- src/adapter.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/adapter.c b/src/adapter.c index 2d7be382f..1fb4e9ce2 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -89,6 +89,8 @@ static GSList *adapters = NULL; static int default_adapter_id = -1; struct mgmt *mgmt = NULL; +uint8_t mgmt_version = 0; +uint8_t mgmt_revision = 0; static const char *base_path = "/org/bluez"; static GSList *adapter_drivers = NULL; @@ -3729,12 +3731,37 @@ int adapter_unregister(int id) return 0; } +static void read_version_complete(uint8_t status, uint16_t length, + const void *param, void *user_data) +{ + const struct mgmt_rp_read_version *rp = param; + + if (length < sizeof(*rp)) { + error("Unexpected length for mgmt_read_version response"); + return; + } + + mgmt_revision = bt_get_le16(&rp->revision); + mgmt_version = rp->version; + + DBG("version %u.%u", mgmt_version, mgmt_revision); +} + int adapter_init(void) { + unsigned int id; + mgmt = mgmt_new_default(); if (!mgmt) return -EIO; + id = mgmt_send(mgmt, MGMT_OP_READ_VERSION, MGMT_INDEX_NONE, 0, NULL, + read_version_complete, NULL, NULL); + if (id == 0) { + error("mgmt_send(READ_VERSION) failed"); + return -EIO; + } + return 0; } -- 2.47.3