From c5fd67080358ef781e7fb60c9b01bd4b7cb75350 Mon Sep 17 00:00:00 2001
From: Florian Kaltenberger <kaltenbe@eurecom.fr>
Date: Fri, 18 Aug 2017 17:18:02 +0200
Subject: [PATCH] making use of gpsdo optional

---
 targets/ARCH/COMMON/common_lib.h             |  4 ++-
 targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp |  6 +++--
 targets/RT/USER/lte-softmodem.c              | 27 +++++---------------
 3 files changed, 13 insertions(+), 24 deletions(-)

diff --git a/targets/ARCH/COMMON/common_lib.h b/targets/ARCH/COMMON/common_lib.h
index be69a7027a..129705c229 100644
--- a/targets/ARCH/COMMON/common_lib.h
+++ b/targets/ARCH/COMMON/common_lib.h
@@ -140,7 +140,9 @@ typedef enum {
   //! This tells the underlying hardware to use the internal reference
   internal=0,
   //! This tells the underlying hardware to use the external reference
-  external=1
+  external=1,
+  //! This tells the underlying hardware to use the gpsdo reference
+  gpsdo=2
 } clock_source_t;
 
 /*! \brief RF frontend parameters set by application */
diff --git a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
index 8fc177245d..95a2903785 100644
--- a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
+++ b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
@@ -660,7 +660,9 @@ extern "C" {
         uhd::set_thread_priority_safe(1.0);
         usrp_state_t *s = (usrp_state_t*)calloc(sizeof(usrp_state_t),1);
         
-        s->use_gps =1;
+	if (openair0_cfg[0].clock_source==gpsdo)        
+	    s->use_gps =1;
+
         // Initialize USRP device
         device->openair0_cfg = openair0_cfg;
 
@@ -755,7 +757,7 @@ extern "C" {
 
             // lock mboard clocks
             if (openair0_cfg[0].clock_source == internal){
-                //s->usrp->set_clock_source("internal");
+	        s->usrp->set_clock_source("internal");
             }
             else{
                 s->usrp->set_clock_source("external");
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index a1f3bcb57b..d680a42464 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -608,9 +608,6 @@ static void get_options (int argc, char **argv) {
     //  char                          line[1000];
     //  int                           l;
     int k,i;//,j,k;
-#if defined(OAI_USRP) || defined(CPRIGW)
-    int clock_src;
-#endif
     int CC_id;
 
 
@@ -639,6 +636,7 @@ static void get_options (int argc, char **argv) {
         LONG_OPTION_USIMTEST,
         LONG_OPTION_MMAPPED_DMA,
         LONG_OPTION_EXTERNAL_CLOCK,
+        LONG_OPTION_GPSDO_CLOCK,
         LONG_OPTION_WAIT_FOR_SYNC,
         LONG_OPTION_SINGLE_THREAD_DISABLE,
         LONG_OPTION_THREADIQ,
@@ -681,6 +679,7 @@ static void get_options (int argc, char **argv) {
         {"usim-test", no_argument, NULL, LONG_OPTION_USIMTEST},
         {"mmapped-dma", no_argument, NULL, LONG_OPTION_MMAPPED_DMA},
         {"external-clock", no_argument, NULL, LONG_OPTION_EXTERNAL_CLOCK},
+        {"gpsdo-clock", no_argument, NULL, LONG_OPTION_GPSDO_CLOCK},
         {"wait-for-sync", no_argument, NULL, LONG_OPTION_WAIT_FOR_SYNC},
         {"single-thread-disable", no_argument, NULL, LONG_OPTION_SINGLE_THREAD_DISABLE},
         {"threadIQ",  required_argument, NULL, LONG_OPTION_THREADIQ},
@@ -810,6 +809,10 @@ static void get_options (int argc, char **argv) {
       clock_source = external;
       break;
 
+    case LONG_OPTION_GPSDO_CLOCK:
+      clock_source = gpsdo;
+      break;
+
     case LONG_OPTION_WAIT_FOR_SYNC:
       wait_for_sync = 1;
       break;
@@ -1002,24 +1005,6 @@ static void get_options (int argc, char **argv) {
 
             break;
 
-        case 's':
-#if defined(OAI_USRP) || defined(CPRIGW)
-
-            clock_src = atoi(optarg);
-
-            if (clock_src == 0) {
-                //  char ref[128] = "internal";
-                //strncpy(uhd_ref, ref, strlen(ref)+1);
-            } else if (clock_src == 1) {
-                //char ref[128] = "external";
-                //strncpy(uhd_ref, ref, strlen(ref)+1);
-            }
-
-#else
-            printf("Note: -s not defined for ExpressMIMO2\n");
-#endif
-            break;
-
         case 'S':
             exit_missed_slots=0;
             printf("Skip exit for missed slots\n");
-- 
GitLab