aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp_clock
diff options
context:
space:
mode:
authorMarcus Müller <marcus.mueller@ettus.com>2016-06-04 16:10:54 +0200
committerMartin Braun <martin.braun@ettus.com>2016-06-06 16:48:52 -0700
commit2004bbdb0298d7a2ce9aa274e4a9bbdd22792567 (patch)
tree8b74817563929ef90faa73a5c55e7eda45db6cea /host/lib/usrp_clock
parentb2167e1ae42cb4afc1d474723028e50fa8aef48b (diff)
downloaduhd-2004bbdb0298d7a2ce9aa274e4a9bbdd22792567.tar.gz
uhd-2004bbdb0298d7a2ce9aa274e4a9bbdd22792567.tar.bz2
uhd-2004bbdb0298d7a2ce9aa274e4a9bbdd22792567.zip
octoclock: Fix multi-line #define statements
Now, use `do{...} while(0)` to pack multiple statements into a single one that isn't fragile. Currently ``` if(state_just_right) OCTOCLOCK_SEND_AND_RECV(all,the,options); ``` would introduce annoying bugs. Generally, there's no good reason this is a `#define` rather than a C/C++ function. The `OCTOCLOCK_PACKET_MATCHES` should probably be a C function, too, or simply an overloaded `==` operator on to `const octoclock_packet_t&`.
Diffstat (limited to 'host/lib/usrp_clock')
-rw-r--r--host/lib/usrp_clock/octoclock/common.h18
1 files changed, 10 insertions, 8 deletions
diff --git a/host/lib/usrp_clock/octoclock/common.h b/host/lib/usrp_clock/octoclock/common.h
index 5861bc4b1..89fec9ce5 100644
--- a/host/lib/usrp_clock/octoclock/common.h
+++ b/host/lib/usrp_clock/octoclock/common.h
@@ -25,14 +25,16 @@
*/
#ifdef __cplusplus
-#define UHD_OCTOCLOCK_SEND_AND_RECV(xport, pkt_code, pkt_out, len, data) pkt_out.proto_ver = OCTOCLOCK_FW_COMPAT_NUM; \
- pkt_out.code = pkt_code; \
- xport->send(boost::asio::buffer(&pkt_out, sizeof(octoclock_packet_t))); \
- len = xport->recv(boost::asio::buffer(data), 2);
-
-#define UHD_OCTOCLOCK_PACKET_MATCHES(pkt_code, pkt_out, pkt_in, len) (len > offsetof(octoclock_packet_t, data) and \
- pkt_in->sequence == pkt_out.sequence and \
- pkt_in->code == pkt_code)
+#define UHD_OCTOCLOCK_SEND_AND_RECV(xport, pkt_code, pkt_out, len, data) do {\
+ pkt_out.proto_ver = OCTOCLOCK_FW_COMPAT_NUM; \
+ pkt_out.code = pkt_code; \
+ xport->send(boost::asio::buffer(&pkt_out, sizeof(octoclock_packet_t))); \
+ len = xport->recv(boost::asio::buffer(data), 2);\
+ } while(0)
+
+#define UHD_OCTOCLOCK_PACKET_MATCHES(pkt_code, pkt_out, pkt_in, len) (len > offsetof(octoclock_packet_t, data) and \
+ pkt_in->sequence == pkt_out.sequence and \
+ pkt_in->code == pkt_code)
extern "C" {
#endif