aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--host/lib/usrp/mpmd/mpmd_mboard_impl.cpp9
-rw-r--r--mpm/python/usrp_mpm/periph_manager/base.py8
2 files changed, 16 insertions, 1 deletions
diff --git a/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp b/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp
index bd792ce59..274e2d370 100644
--- a/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp
+++ b/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp
@@ -37,6 +37,15 @@ namespace {
uhd::rpc_client::sptr rpc,
const uhd::device_addr_t mb_args
) {
+ auto init_status =
+ rpc->request_with_token<std::vector<std::string>>(
+ "get_init_status");
+ if (init_status[0] != "true") {
+ throw uhd::runtime_error(
+ std::string("Device is in bad state: ") + init_status[1]
+ );
+ }
+
// TODO maybe put this somewhere else?
const std::set<std::string> key_blacklist{
"serial", "claimed", "type", "rev", "addr"
diff --git a/mpm/python/usrp_mpm/periph_manager/base.py b/mpm/python/usrp_mpm/periph_manager/base.py
index 5b30bf1ec..93edb36ce 100644
--- a/mpm/python/usrp_mpm/periph_manager/base.py
+++ b/mpm/python/usrp_mpm/periph_manager/base.py
@@ -377,11 +377,17 @@ class PeriphManagerBase(object):
"""
Returns the status of the device after its initialization (that happens
at startup, not that happens when init() is called).
+ The status is a tuple of 2 strings, the first is either "true" or
+ "false", depending on whether or not the device initialization was
+ successful, and the second is an arbitrary error string.
Use this function to figure out if something went wrong at bootup, and
what.
"""
- return self._initialization_status
+ return [
+ "true" if self._device_initialized else "false",
+ self._initialization_status
+ ]
@no_claim
def list_available_overlays(self):