diff --git a/impl/src/sdr/sdr_sxceiver.c b/impl/src/sdr/sdr_sxceiver.c index 01f5967..6326740 100644 --- a/impl/src/sdr/sdr_sxceiver.c +++ b/impl/src/sdr/sdr_sxceiver.c @@ -8,13 +8,15 @@ #include #include +#include "logger.h" + #include "config.h" #include "sdr_sxceiver.h" void soapy_log_handler(const SoapySDRLogLevel logLevel, const char *message) { - fprintf(stderr, "soapy [%d]: %s\n", logLevel, message); + LOG(LVL_ERR, "soapy [%d]: %s", logLevel, message); } static void close_streams(sdr_ctx_t *ctx) @@ -52,12 +54,12 @@ result_t sdr_init(sdr_ctx_t *ctx) SoapySDRKwargs *results = SoapySDRDevice_enumerate(NULL, &length); for (size_t i = 0; i < length; i++) { - fprintf(stderr, "sdr: Found device #%d:\n", (int)i); + LOG(LVL_INFO, "Found device #%d:", (int)i); for (size_t j = 0; j < results[i].size; j++) { - fprintf(stderr, "sdr: - %s=%s\n", results[i].keys[j], results[i].vals[j]); + LOG(LVL_INFO, "- %s=%s", results[i].keys[j], results[i].vals[j]); } - fprintf(stderr, "sdr: \n"); + LOG(LVL_ERR, ""); } SoapySDRKwargsList_clear(results, length); @@ -71,85 +73,85 @@ result_t sdr_init(sdr_ctx_t *ctx) if (ctx->sdr == NULL) { - fprintf(stderr, "sdr: SoapySDRDevice_make fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "SoapySDRDevice_make fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } //query device info SoapySDRRange *ranges; char** names = SoapySDRDevice_listAntennas(ctx->sdr, SOAPY_SDR_RX, 0, &length); - fprintf(stderr, "sdr: Rx antennas: "); - for (size_t i = 0; i < length; i++) fprintf(stderr, "%s, ", names[i]); - fprintf(stderr, "\n"); + LOG(LVL_INFO, "Rx antennas: "); + for (size_t i = 0; i < length; i++) LOG(LVL_INFO, "%s, ", names[i]); + LOG(LVL_INFO, ""); SoapySDRStrings_clear(&names, length); names = SoapySDRDevice_listGains(ctx->sdr, SOAPY_SDR_RX, 0, &length); - fprintf(stderr, "sdr: Rx gains: "); + LOG(LVL_INFO, "Rx gains: "); for (size_t i = 0; i < length; i++) { SoapySDRRange range = SoapySDRDevice_getGainRange(ctx->sdr, SOAPY_SDR_RX, i); - fprintf(stderr, "%s [%.3lf .. %.3lf / %.3lf], ", names[i], range.minimum, range.maximum, range.step); + LOG(LVL_INFO, "%s [%.3lf .. %.3lf / %.3lf], ", names[i], range.minimum, range.maximum, range.step); } - fprintf(stderr, "\n"); + LOG(LVL_INFO, ""); SoapySDRStrings_clear(&names, length); ranges = SoapySDRDevice_getFrequencyRange(ctx->sdr, SOAPY_SDR_RX, 0, &length); - fprintf(stderr, "sdr: Rx freq ranges: "); - for (size_t i = 0; i < length; i++) fprintf(stderr, "[%g Hz -> %g Hz], ", ranges[i].minimum, ranges[i].maximum); - fprintf(stderr, "\n"); + LOG(LVL_INFO, "Rx freq ranges: "); + for (size_t i = 0; i < length; i++) LOG(LVL_INFO, "[%g Hz -> %g Hz], ", ranges[i].minimum, ranges[i].maximum); + LOG(LVL_INFO, ""); free(ranges); names = SoapySDRDevice_listAntennas(ctx->sdr, SOAPY_SDR_TX, 0, &length); - fprintf(stderr, "sdr: Tx antennas: "); - for (size_t i = 0; i < length; i++) fprintf(stderr, "%s, ", names[i]); - fprintf(stderr, "\n"); + LOG(LVL_INFO, "Tx antennas: "); + for (size_t i = 0; i < length; i++) LOG(LVL_INFO, "%s, ", names[i]); + LOG(LVL_INFO, ""); SoapySDRStrings_clear(&names, length); names = SoapySDRDevice_listGains(ctx->sdr, SOAPY_SDR_TX, 0, &length); - fprintf(stderr, "sdr: Tx gains: "); + LOG(LVL_INFO, "Tx gains: "); for (size_t i = 0; i < length; i++) { SoapySDRRange range = SoapySDRDevice_getGainRange(ctx->sdr, SOAPY_SDR_TX, i); - fprintf(stderr, "%s [%.3lf .. %.3lf / %.3lf], ", names[i], range.minimum, range.maximum, range.step); + LOG(LVL_INFO, "%s [%.3lf .. %.3lf / %.3lf], ", names[i], range.minimum, range.maximum, range.step); } - fprintf(stderr, "\n"); + LOG(LVL_INFO, ""); SoapySDRStrings_clear(&names, length); ranges = SoapySDRDevice_getFrequencyRange(ctx->sdr, SOAPY_SDR_TX, 0, &length); - fprintf(stderr, "sdr: Tx freq ranges: "); - for (size_t i = 0; i < length; i++) fprintf(stderr, "[%g Hz -> %g Hz], ", ranges[i].minimum, ranges[i].maximum); - fprintf(stderr, "\n"); + LOG(LVL_INFO, "Tx freq ranges: "); + for (size_t i = 0; i < length; i++) LOG(LVL_INFO, "[%g Hz -> %g Hz], ", ranges[i].minimum, ranges[i].maximum); + LOG(LVL_INFO, ""); free(ranges); //setup streams ctx->rx_stream = SoapySDRDevice_setupStream(ctx->sdr, SOAPY_SDR_RX, SOAPY_SDR_CF32, NULL, 0, NULL); if(ctx->rx_stream == NULL) { - fprintf(stderr, "sdr: setupStream fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "setupStream fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } ctx->tx_stream = SoapySDRDevice_setupStream(ctx->sdr, SOAPY_SDR_TX, SOAPY_SDR_CF32, NULL, 0, NULL); if(ctx->tx_stream == NULL) { - fprintf(stderr, "sdr: setupStream fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "setupStream fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } //apply settings if (SoapySDRDevice_setSampleRate(ctx->sdr, SOAPY_SDR_RX, 0, SDR_RX_SAMPLING_RATE) != 0) { - fprintf(stderr, "sdr: setSampleRate fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "setSampleRate fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } if (SoapySDRDevice_setFrequency(ctx->sdr, SOAPY_SDR_RX, 0, SDR_RX_FREQ - SDR_RX_IF_SHIFT, NULL) != 0) { - fprintf(stderr, "sdr: setFrequency fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "setFrequency fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } if (SoapySDRDevice_setSampleRate(ctx->sdr, SOAPY_SDR_TX, 0, SDR_TX_SAMPLING_RATE) != 0) { - fprintf(stderr, "sdr: setSampleRate fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "setSampleRate fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } if (SoapySDRDevice_setFrequency(ctx->sdr, SOAPY_SDR_TX, 0, SDR_TX_FREQ, NULL) != 0) { - fprintf(stderr, "sdr: setFrequency fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "setFrequency fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } @@ -176,17 +178,17 @@ result_t sdr_start_rx(sdr_ctx_t *ctx) { // set gains if(SoapySDRDevice_setGainElement(ctx->sdr, SOAPY_SDR_RX, 0, "PGA", SDR_GAIN_RX_PGA) != 0) { - fprintf(stderr, "sdr: setGainElement fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "setGainElement fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } if(SoapySDRDevice_setGainElement(ctx->sdr, SOAPY_SDR_RX, 0, "LNA", SDR_GAIN_RX_LNA) != 0) { - fprintf(stderr, "sdr: setGainElement fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "setGainElement fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } if(SoapySDRDevice_activateStream(ctx->sdr, ctx->rx_stream, 0, 0, 0) != 0) { - fprintf(stderr, "sdr: activateStream fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "activateStream fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } @@ -198,17 +200,17 @@ result_t sdr_start_tx(sdr_ctx_t *ctx, size_t burst_size) { // set gain if(SoapySDRDevice_setGainElement(ctx->sdr, SOAPY_SDR_TX, 0, "DAC", SDR_GAIN_TX_DAC) != 0) { - fprintf(stderr, "sdr: setGainElement fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "setGainElement fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } if(SoapySDRDevice_setGainElement(ctx->sdr, SOAPY_SDR_TX, 0, "MIXER", SDR_GAIN_TX_MIXER) != 0) { - fprintf(stderr, "sdr: setGainElement fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "setGainElement fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } if(SoapySDRDevice_activateStream(ctx->sdr, ctx->tx_stream, 0, 0, burst_size) != 0) { - fprintf(stderr, "sdr: activateStream fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "activateStream fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } @@ -219,7 +221,7 @@ result_t sdr_start_tx(sdr_ctx_t *ctx, size_t burst_size) result_t sdr_stop_rx(sdr_ctx_t *ctx) { if(SoapySDRDevice_deactivateStream(ctx->sdr, ctx->rx_stream, 0, 0) != 0) { - fprintf(stderr, "sdr: activateStream fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "activateStream fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } @@ -230,7 +232,7 @@ result_t sdr_stop_rx(sdr_ctx_t *ctx) result_t sdr_stop_tx(sdr_ctx_t *ctx) { if(SoapySDRDevice_deactivateStream(ctx->sdr, ctx->tx_stream, 0, 0) != 0) { - fprintf(stderr, "sdr: activateStream fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "activateStream fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } @@ -250,7 +252,7 @@ result_t sdr_transmit(sdr_ctx_t *ctx, const float complex *samples, size_t nsamp int ret = SoapySDRDevice_writeStream(ctx->sdr, ctx->tx_stream, (const void* const*)buffs, nsamples, &flags, 0, timeout_us); if(ret <= 0) { - fprintf(stderr, "sdr: writeStream fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "writeStream fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; } @@ -271,7 +273,7 @@ result_t sdr_receive(sdr_ctx_t *ctx, float complex *samples, size_t *nsamples, l int ret = SoapySDRDevice_readStream(ctx->sdr, ctx->rx_stream, (void* const*)buffs, *nsamples, &flags, &timeNs, timeout_us); if(ret <= 0) { - fprintf(stderr, "sdr: readStream fail: %s\n", SoapySDRDevice_lastError()); + LOG(LVL_ERR, "readStream fail: %s", SoapySDRDevice_lastError()); return ERR_SOAPY; }