aboutsummaryrefslogtreecommitdiffstats
path: root/host
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2017-10-09 17:44:02 -0700
committerMartin Braun <martin.braun@ettus.com>2017-12-22 15:04:02 -0800
commitcea45dda8f7d7918930a6b1150913390d4480037 (patch)
tree66ca4ca6bdabe32e023317afae8bde674ecaf329 /host
parent9a9759e2cfea3de602dda3053c1a4a46005abeb1 (diff)
downloaduhd-cea45dda8f7d7918930a6b1150913390d4480037.tar.gz
uhd-cea45dda8f7d7918930a6b1150913390d4480037.tar.bz2
uhd-cea45dda8f7d7918930a6b1150913390d4480037.zip
mpm: Add mboard EEPROM support
MPMD binds a property for the mboard EEPROM to the appropriate RPC calls. PeriphManager now provides default implementations for an mboard EEPROM.
Diffstat (limited to 'host')
-rw-r--r--host/include/uhd/types/eeprom.hpp20
-rw-r--r--host/lib/usrp/mpmd/mpmd_impl.cpp25
2 files changed, 43 insertions, 2 deletions
diff --git a/host/include/uhd/types/eeprom.hpp b/host/include/uhd/types/eeprom.hpp
new file mode 100644
index 000000000..814d429c8
--- /dev/null
+++ b/host/include/uhd/types/eeprom.hpp
@@ -0,0 +1,20 @@
+//
+// Copyright 2017 Ettus Research (National Instruments Corp.)
+//
+// SPDX-License-Identifier: GPL-3.0
+//
+
+#ifndef INCLUDED_UHD_EEPROM_HPP
+#define INCLUDED_UHD_EEPROM_HPP
+
+#include <map>
+#include <string>
+
+namespace uhd {
+
+ typedef std::map<std::string, std::string> eeprom_map_t;
+
+
+} /* namespace uhd */
+
+#endif /* INCLUDED_UHD_EEPROM_HPP */
diff --git a/host/lib/usrp/mpmd/mpmd_impl.cpp b/host/lib/usrp/mpmd/mpmd_impl.cpp
index 1b22ed294..965ede6f5 100644
--- a/host/lib/usrp/mpmd/mpmd_impl.cpp
+++ b/host/lib/usrp/mpmd/mpmd_impl.cpp
@@ -26,6 +26,8 @@
#include <uhd/utils/static.hpp>
#include <uhd/utils/tasks.hpp>
#include <uhd/types/sensors.hpp>
+#include <uhd/types/eeprom.hpp>
+#include <uhd/usrp/mboard_eeprom.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/asio.hpp>
#include <boost/make_shared.hpp>
@@ -128,6 +130,27 @@ namespace {
})
;
}
+
+ /*** EEPROM *********************************************************/
+ tree->create<uhd::usrp::mboard_eeprom_t>(mb_path / "eeprom")
+ .add_coerced_subscriber([mb](const uhd::usrp::mboard_eeprom_t& mb_eeprom){
+ eeprom_map_t eeprom_map;
+ for (const auto& key : mb_eeprom.keys()) {
+ eeprom_map[key] = mb_eeprom[key];
+ }
+ mb->rpc->notify_with_token("set_mb_eeprom", eeprom_map);
+ })
+ .set_publisher([mb](){
+ auto mb_eeprom =
+ mb->rpc->request_with_token<std::map<std::string, std::string>>(
+ "get_mb_eeprom"
+ );
+ uhd::usrp::mboard_eeprom_t mb_eeprom_dict(
+ mb_eeprom.cbegin(), mb_eeprom.cend()
+ );
+ return mb_eeprom_dict;
+ })
+ ;
}
void reset_time_synchronized(uhd::property_tree::sptr tree)
@@ -284,8 +307,6 @@ mpmd_mboard_impl::uptr mpmd_impl::setup_mb(
// query more information about FPGA/MPM
- // Call init on periph_manager, this will init the dboards/mboard, maybe
- // even selfcal and everything
// Query time/clock sources on mboards/dboards
// Throw rpc calls with boost bind into the property tree?