int rf_rssi_scan(srslte_rf_t *rf, float *freqs, float *rssi, int nof_bands, double fs, int nsamp) { int i, j; int ret = -1; cf_t *buffer; double f; buffer = calloc(nsamp, sizeof(cf_t)); if (!buffer) { goto free_and_exit; } srslte_rf_set_rx_gain(rf, 20.0); srslte_rf_set_rx_srate(rf, fs); for (i=0;i<nof_bands;i++) { srslte_rf_stop_rx_stream(rf); f = (double) freqs[i]; srslte_rf_set_rx_freq(rf, f); srslte_rf_rx_wait_lo_locked(rf); usleep(10000); srslte_rf_start_rx_stream(rf, false); /* discard first samples */ for (j=0;j<2;j++) { if (srslte_rf_recv(rf, buffer, nsamp, 1) != nsamp) { goto free_and_exit; } } rssi[i] = srslte_vec_avg_power_cf(buffer, nsamp); printf("[%3d]: Freq %4.1f Mhz - RSSI: %3.2f dBm\r", i, f/1000000, 10*log10f(rssi[i]) + 30); fflush(stdout); if (SRSLTE_VERBOSE_ISINFO()) { printf("\n"); } } srslte_rf_stop_rx_stream(rf); ret = 0; free_and_exit: free(buffer); return ret; }
int srslte_rf_recv_wrapper(void *h, void *data, uint32_t nsamples, srslte_timestamp_t *q) { DEBUG(" ---- Receive %d samples ---- \n", nsamples); return srslte_rf_recv(h, data, nsamples, 1); }