diff --git a/impl/src/main.c b/impl/src/main.c index 98d6052..55b4b62 100644 --- a/impl/src/main.c +++ b/impl/src/main.c @@ -301,8 +301,7 @@ int main(void) } if(n_rf_samples == 0) { - struct timespec ts_1ms = {0, 1000000}; - nanosleep(&ts_1ms, NULL); + fsleep(1e-3); continue; } diff --git a/impl/src/sdr/sdr.c b/impl/src/sdr/sdr.c index c818d9e..00156ab 100644 --- a/impl/src/sdr/sdr.c +++ b/impl/src/sdr/sdr.c @@ -6,10 +6,10 @@ #include #include #include -#include #include #include "config.h" +#include "utils.h" #include "sdr.h" @@ -141,10 +141,9 @@ static result_t stop_streaming(sdr_ctx_t *ctx) return OK; } - struct timespec ts_1ms = {0, 1000000}; while(hackrf_is_streaming(ctx->hackrf) == HACKRF_TRUE) { puts("wr"); - nanosleep(&ts_1ms, NULL); + fsleep(1e-3); } ctx->status = SDR_STATUS_IDLE; @@ -342,9 +341,9 @@ result_t sdr_receive(sdr_ctx_t *ctx, float complex *samples, size_t *nsamples, l result_t sdr_flush_tx_buffer(sdr_ctx_t *ctx) { - while(!ctx->tx_done) { - struct timespec ts_1ms = {0, 1000000}; - nanosleep(&ts_1ms, NULL); + // block until all samples have been transmitted + while(!ctx->tx_done || (get_hires_time() < (ctx->tx_start_time + ctx->tx_duration))) { + fsleep(1e-3); } return OK;