#include <stdio.h> #include <time.h> #include <uhd.h>
#define SR 25 #define BW 20 #define MHzToHz 1e+6
uint64_t get_posix_clock_time () { struct timespec ts;
if (clock_gettime (CLOCK_MONOTONIC, &ts) == 0) return (uint64_t) (ts.tv_sec * 
1000000 + ts.tv_nsec / 1000); else return 0; }
uhd_error createLockedSensor(uhd_usrp_handle hDevice,uhd_sensor_value_handle 
*hSensor) { uhd_error r;
r = uhd_sensor_value_make_from_bool(hSensor,"lo_locked",false,"true","false"); 
if (r) return r;
r = uhd_usrp_get_rx_sensor(hDevice,"lo_locked",0,hSensor); if (r) 
uhd_sensor_value_free(hSensor); return r; }
uhd_error setFreq(uhd_usrp_handle hDevice,uhd_sensor_value_handle 
hSensor,double f) { uhd_tune_request_t tune_request = {.target_freq = 
f,.rf_freq_policy = UHD_TUNE_REQUEST_POLICY_AUTO,.dsp_freq_policy = 
UHD_TUNE_REQUEST_POLICY_AUTO, }; uhd_tune_result_t tune_result;
uhd_error r; bool lo_locked;
r = uhd_usrp_set_rx_freq(hDevice,&tune_request,0,&tune_result); 
if(r==UHD_ERROR_NONE && hSensor) do { 
uhd_sensor_value_to_bool(hSensor,&lo_locked); } while (!lo_locked);
return r; }
int main() { uhd_error r;
uhd_usrp_handle hDevice = 0; uhd_sensor_value_handle hSensor=0;
r = uhd_usrp_make(&hDevice,""); if (r) goto free_device;
r = createLockedSensor(hDevice,&hSensor); if (r) goto free_device;
if (hDevice) { int f_start,f_count;
printf ("Enter start freq [MHz]: "); scanf ("%d",&f_start);
printf ("Enter freq count: "); scanf ("%d",&f_count); if (f_count < 1) goto 
free_device;
uint64_t t0,t;
bool reverse = false;
for(int k=3;k>0;--k) { int f;
if (reverse) f = f_start+BW*(f_count-1); else f = f_start;
t=get_posix_clock_time(); for(int i=0;i<f_count;i++) { t0 = 
get_posix_clock_time(); setFreq(hDevice,hSensor,f*MHzToHz); t0 = 
get_posix_clock_time() - t0; printf ("f: %d t: %2.1f \n",f,t0*1e-3); f = 
(reverse) ? f-BW:f+BW; } t = get_posix_clock_time() - t;
reverse=!reverse;
printf (">> scan time: %2.1f \n",t*1e-3); } }
free_device: if (hDevice) uhd_usrp_free(&hDevice); if (hSensor) 
uhd_sensor_value_free(&hSensor);
return 0; }
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to