summaryrefslogtreecommitdiffstats
path: root/host/lib
diff options
context:
space:
mode:
authorBalint Seeber <balint@ettus.com>2014-03-19 16:19:46 -0700
committerBalint Seeber <balint@ettus.com>2014-03-19 16:19:46 -0700
commitda99b7edc2d1cfedd9c8acf36630d799782ee455 (patch)
tree65ad8bc33dc9cca9a659db09ccc9d561097cf1d7 /host/lib
parent416c1ff1841a9a744f9c41816f4156171ad4528f (diff)
downloaduhd-da99b7edc2d1cfedd9c8acf36630d799782ee455.tar.gz
uhd-da99b7edc2d1cfedd9c8acf36630d799782ee455.tar.bz2
uhd-da99b7edc2d1cfedd9c8acf36630d799782ee455.zip
b200: changed ad9361 ctrl/transaction magic number 64 to macro, as it is in the FX3 FW
Diffstat (limited to 'host/lib')
-rw-r--r--host/lib/usrp/b200/b200_iface.cpp6
-rw-r--r--host/lib/usrp/common/ad9361_ctrl.hpp16
-rw-r--r--host/lib/usrp/common/ad9361_transaction.h5
3 files changed, 15 insertions, 12 deletions
diff --git a/host/lib/usrp/b200/b200_iface.cpp b/host/lib/usrp/b200/b200_iface.cpp
index 2ed4eb9ae..07f518169 100644
--- a/host/lib/usrp/b200/b200_iface.cpp
+++ b/host/lib/usrp/b200/b200_iface.cpp
@@ -299,9 +299,9 @@ public:
}
}
- void ad9361_transact(const unsigned char in_buff[64], unsigned char out_buff[64]) {
- const int bytes_to_write = 64;
- const int bytes_to_read = 64;
+ void ad9361_transact(const unsigned char in_buff[AD9361_DISPATCH_PACKET_SIZE], unsigned char out_buff[AD9361_DISPATCH_PACKET_SIZE]) {
+ const int bytes_to_write = AD9361_DISPATCH_PACKET_SIZE;
+ const int bytes_to_read = AD9361_DISPATCH_PACKET_SIZE;
const size_t read_retries = 5;
int ret = fx3_control_write(B200_VREQ_AD9361_CTRL_WRITE, 0x00, 0x00, (unsigned char *)in_buff, bytes_to_write);
diff --git a/host/lib/usrp/common/ad9361_ctrl.hpp b/host/lib/usrp/common/ad9361_ctrl.hpp
index 7a13d1439..098b5dae8 100644
--- a/host/lib/usrp/common/ad9361_ctrl.hpp
+++ b/host/lib/usrp/common/ad9361_ctrl.hpp
@@ -27,6 +27,8 @@
#include <vector>
#include <string>
+#include "ad9361_transaction.h"
+
static const double AD9361_CLOCK_RATE_MAX = 61.44e6;
static const double AD9361_1_CHAN_CLOCK_RATE_MAX = AD9361_CLOCK_RATE_MAX;
@@ -35,7 +37,7 @@ static const double AD9361_2_CHAN_CLOCK_RATE_MAX = (AD9361_1_CHAN_CLOCK_RATE_MAX
struct ad9361_ctrl_iface_type
{
- virtual void ad9361_transact(const unsigned char in_buff[64], unsigned char out_buff[64]) = 0;
+ virtual void ad9361_transact(const unsigned char in_buff[AD9361_DISPATCH_PACKET_SIZE], unsigned char out_buff[AD9361_DISPATCH_PACKET_SIZE]) = 0;
};
typedef boost::shared_ptr<ad9361_ctrl_iface_type> ad9361_ctrl_iface_sptr;
@@ -47,18 +49,18 @@ struct ad9361_ctrl_over_zc : ad9361_ctrl_iface_type
_xport = xport;
}
- void ad9361_transact(const unsigned char in_buff[64], unsigned char out_buff[64])
+ void ad9361_transact(const unsigned char in_buff[AD9361_DISPATCH_PACKET_SIZE], unsigned char out_buff[AD9361_DISPATCH_PACKET_SIZE])
{
{
uhd::transport::managed_send_buffer::sptr buff = _xport->get_send_buff(10.0);
- if (not buff or buff->size() < 64) throw std::runtime_error("ad9361_ctrl_over_zc send timeout");
- std::memcpy(buff->cast<void *>(), in_buff, 64);
- buff->commit(64);
+ if (not buff or buff->size() < AD9361_DISPATCH_PACKET_SIZE) throw std::runtime_error("ad9361_ctrl_over_zc send timeout");
+ std::memcpy(buff->cast<void *>(), in_buff, AD9361_DISPATCH_PACKET_SIZE);
+ buff->commit(AD9361_DISPATCH_PACKET_SIZE);
}
{
uhd::transport::managed_recv_buffer::sptr buff = _xport->get_recv_buff(10.0);
- if (not buff or buff->size() < 64) throw std::runtime_error("ad9361_ctrl_over_zc recv timeout");
- std::memcpy(out_buff, buff->cast<const void *>(), 64);
+ if (not buff or buff->size() < AD9361_DISPATCH_PACKET_SIZE) throw std::runtime_error("ad9361_ctrl_over_zc recv timeout");
+ std::memcpy(out_buff, buff->cast<const void *>(), AD9361_DISPATCH_PACKET_SIZE);
}
}
diff --git a/host/lib/usrp/common/ad9361_transaction.h b/host/lib/usrp/common/ad9361_transaction.h
index 7cbad5908..693f32e41 100644
--- a/host/lib/usrp/common/ad9361_transaction.h
+++ b/host/lib/usrp/common/ad9361_transaction.h
@@ -25,8 +25,8 @@ extern "C" {
#endif
//various constants
-#define AD9361_TRANSACTION_VERSION 0x4
-#define AD9361_TRANSACTION_MAX_ERROR_MSG 40
+#define AD9361_TRANSACTION_VERSION 0x4
+#define AD9361_DISPATCH_PACKET_SIZE 64
//action types
#define AD9361_ACTION_ECHO 0
@@ -100,6 +100,7 @@ typedef struct
} ad9361_transaction_t;
+#define AD9361_TRANSACTION_MAX_ERROR_MSG (AD9361_DISPATCH_PACKET_SIZE - (sizeof(ad9361_transaction_t)-4)-1) // -4 for 'error_msg' alignment padding, -1 for terminating \0
#ifdef __cplusplus
}