#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