diff options
author | Josh Blum <josh@joshknows.com> | 2010-04-21 17:49:00 -0700 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-04-21 17:49:00 -0700 |
commit | e5248746f66829c0bd899bcde5c15970fdda785d (patch) | |
tree | b2b0bab970610737ff4710e508dd5a9c04c92869 /host/lib/usrp/usrp2/usrp2_iface.cpp | |
parent | 72f4ce79c88d03b33d585a2ea48076e2010a21a8 (diff) | |
download | uhd-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.cpp | 8 |
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; } |