aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2012-07-22 22:42:36 +0200
committerHarald Welte <laforge@gnumonks.org>2012-07-22 22:42:36 +0200
commit678321d013c320c31a1820135f32cee63d0c0ae7 (patch)
treee782cd0500da4a06e36583fdadc619a27bc8b44b
parente729a3d595baf4f3fb9bf572840c698fe71ec072 (diff)
determine (and use) the API version as indicated in the header files
From our header files v2.4 onwards, we include some macros that allow us to do compile-time checks for the API header version. As older headers don't have those macros, we have to fall back to assume it will be v2.2
-rw-r--r--contrib/sysmobts-calib/sysmobts-layer1.c7
-rw-r--r--contrib/sysmobts-calib/sysmobts-layer1.h12
-rw-r--r--src/osmo-bts-sysmo/femtobts.h9
-rw-r--r--src/osmo-bts-sysmo/l1_if.c4
4 files changed, 30 insertions, 2 deletions
diff --git a/contrib/sysmobts-calib/sysmobts-layer1.c b/contrib/sysmobts-calib/sysmobts-layer1.c
index c475354..8c04c77 100644
--- a/contrib/sysmobts-calib/sysmobts-layer1.c
+++ b/contrib/sysmobts-calib/sysmobts-layer1.c
@@ -338,9 +338,10 @@ int activate_rf_frontend(int clock_source, int initial_cor)
prim.u.activateRfReq.rfTrx.iClkCor = initial_cor;
prim.u.activateRfReq.rfTrx.clkSrc = clock_source;
-
+#if SUPERFEMTO_API_VERSION < SUPERFEMTO_API(2,4,0)
prim.u.activateRfReq.rfRx.iClkCor = initial_cor;
- prim.u.activateRfReq.rfRx.clkSrc = clock_source;
+ prim.u.activateRfReq.rfRx.clkSrc = clock_source;
+#endif
rc = send_recv_primitive(SuperFemto_PrimId_ActivateRfReq, &prim);
return rc;
@@ -583,8 +584,10 @@ int set_clock_cor(int clock_cor, int calib, int source)
prim.u.rfClockSetupReq.rfTrx.iClkCor = clock_cor;
prim.u.rfClockSetupReq.rfTrx.clkSrc = calib;
+#if SUPERFEMTO_API_VERSION < SUPERFEMTO_API(2,4,0)
prim.u.rfClockSetupReq.rfRx.iClkCor = clock_cor;
prim.u.rfClockSetupReq.rfRx.clkSrc = calib;
+#endif
prim.u.rfClockSetupReq.rfTrxClkCal.clkSrc = source;
rc = send_recv_primitive(SuperFemto_PrimId_RfClockSetupReq, &prim);
diff --git a/contrib/sysmobts-calib/sysmobts-layer1.h b/contrib/sysmobts-calib/sysmobts-layer1.h
index 5b2b285..ec961eb 100644
--- a/contrib/sysmobts-calib/sysmobts-layer1.h
+++ b/contrib/sysmobts-calib/sysmobts-layer1.h
@@ -1,6 +1,18 @@
#ifndef SYSMOBTS_LAYER_H
#define SYSMOBTS_LAYER_H
+#include <sysmocom/femtobts/superfemto.h>
+
+/* older header files don't have this */
+#ifndef SUPERFEMTO_API
+#define SUPERFEMTO_API(x,y,z) ((x << 16) + (y << 8) + z)
+#endif
+
+#ifndef SUPERFEMTO_API_VERSION
+#define SUPERFEMTO_API_VERSION SUPERFEMTO_API(2,2,0)
+#endif
+
+
extern int initialize_layer1(uint32_t dsp_flags);
extern int print_system_info();
extern int activate_rf_frontend(int clock_source, int clock_cor);
diff --git a/src/osmo-bts-sysmo/femtobts.h b/src/osmo-bts-sysmo/femtobts.h
index b91a86f..5a716ee 100644
--- a/src/osmo-bts-sysmo/femtobts.h
+++ b/src/osmo-bts-sysmo/femtobts.h
@@ -12,6 +12,15 @@
//#define USE_L1_RTP_MODE /* Tell L1 to use RTP mode */
#endif
+/* older header files don't have this */
+#ifndef SUPERFEMTO_API
+#define SUPERFEMTO_API(x,y,z) ((x << 16) + (y << 8) + z)
+#endif
+
+#ifndef SUPERFEMTO_API_VERSION
+#define SUPERFEMTO_API_VERSION SUPERFEMTO_API(2,2,0)
+#endif
+
enum l1prim_type {
L1P_T_REQ,
L1P_T_CONF,
diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c
index 3cf2955..69c4424 100644
--- a/src/osmo-bts-sysmo/l1_if.c
+++ b/src/osmo-bts-sysmo/l1_if.c
@@ -965,6 +965,10 @@ int l1if_activate_rf(struct femtol1_hdl *hdl, int on)
/* Use clock from OCXO or whatever source is configured */
sysp->u.activateRfReq.rfTrx.clkSrc = hdl->clk_src;
sysp->u.activateRfReq.rfTrx.iClkCor = hdl->clk_cal;
+#if SUPERFEMTO_API_VERSION < SUPERFEMTO_API(2,4,0)
+ sysp->u.activateRfReq.rfRx.clkSrc = hdl->clk_src;
+ sysp->u.activateRfReq.rfRx.iClkCor = hdl->clk_cal;
+#endif /* API 2.4.0 */
#endif
} else {
sysp->id = SuperFemto_PrimId_DeactivateRfReq;