aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/usrp2/usrp2_iface.cpp
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2010-04-21 17:49:00 -0700
committerJosh Blum <josh@joshknows.com>2010-04-21 17:49:00 -0700
commite5248746f66829c0bd899bcde5c15970fdda785d (patch)
treeb2b0bab970610737ff4710e508dd5a9c04c92869 /host/lib/usrp/usrp2/usrp2_iface.cpp
parent72f4ce79c88d03b33d585a2ea48076e2010a21a8 (diff)
downloaduhd-e5248746f66829c0bd899bcde5c15970fdda785d.tar.gz
uhd-e5248746f66829c0bd899bcde5c15970fdda785d.tar.bz2
uhd-e5248746f66829c0bd899bcde5c15970fdda785d.zip
Added protocol version number to usrp2 common header and data struct.
Diffstat (limited to 'host/lib/usrp/usrp2/usrp2_iface.cpp')
-rw-r--r--host/lib/usrp/usrp2/usrp2_iface.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/host/lib/usrp/usrp2/usrp2_iface.cpp b/host/lib/usrp/usrp2/usrp2_iface.cpp
index 742c53a14..1b0dde1b4 100644
--- a/host/lib/usrp/usrp2/usrp2_iface.cpp
+++ b/host/lib/usrp/usrp2/usrp2_iface.cpp
@@ -97,6 +97,7 @@ public:
//fill in the seq number and send
usrp2_ctrl_data_t out_copy = out_data;
+ out_copy.proto_ver = htonl(USRP2_PROTO_VERSION);
out_copy.seq = htonl(++_ctrl_seq_num);
_ctrl_transport->send(boost::asio::buffer(&out_copy, sizeof(usrp2_ctrl_data_t)));
@@ -104,6 +105,13 @@ public:
while(true){
usrp2_ctrl_data_t in_data;
size_t len = _ctrl_transport->recv(boost::asio::buffer(&in_data, sizeof(in_data)));
+ if(len >= sizeof(boost::uint32_t) and ntohl(in_data.proto_ver) != USRP2_PROTO_VERSION){
+ throw std::runtime_error(str(
+ boost::format("Expected protocol version %d, but got %d\n"
+ "The firmware build does not match the host code build."
+ ) % int(USRP2_PROTO_VERSION) % ntohl(in_data.proto_ver)
+ ));
+ }
if (len >= sizeof(usrp2_ctrl_data_t) and ntohl(in_data.seq) == _ctrl_seq_num){
return in_data;
}