Skip to content

Commit

Permalink
chore: printf/log macro added
Browse files Browse the repository at this point in the history
  • Loading branch information
Guenael committed Dec 30, 2021
1 parent 8c989cc commit 7251af4
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 15 deletions.
4 changes: 3 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ LIBS = -lusb-1.0 -lrtlsdr -lpthread -lfftw3f -lcurl -lm

OBJS = rtlsdr_wsprd.o wsprd/wsprd.o wsprd/wsprsim_utils.o wsprd/wsprd_utils.o wsprd/tab.o wsprd/fano.o wsprd/nhash.o

TARGETS = rtlsdr_wsprd rtlsdr_wsprd.1
TARGETS = rtlsdr_wsprd #rtlsdr_wsprd.1

.PHONY: all clean

Expand All @@ -25,6 +25,8 @@ clean:

install:
install rtlsdr_wsprd /usr/local/bin/rtlsdr_wsprd
#install rtlsdr_wsprd.1.gz /usr/local/man/man1/rtlsdr_wsprd.1.gz

%.1: %.c | %
-help2man --no-info --output=$@ ./$|
#gzip rtlsdr_wsprd.1
52 changes: 38 additions & 14 deletions rtlsdr_wsprd.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,6 @@
#include "./wsprd/wsprsim_utils.h"


#define safe_cond_signal(n, m) pthread_mutex_lock(m); pthread_cond_signal(n); pthread_mutex_unlock(m)
#define safe_cond_wait(n, m) pthread_mutex_lock(m); pthread_cond_wait(n, m); pthread_mutex_unlock(m)


/* Sampling definition for RTL devices & WSPR protocol */
#define SIGNAL_LENGHT 120
#define SIGNAL_SAMPLE_RATE 375
Expand All @@ -47,6 +43,19 @@
#define FIR_TAPS 32


#define safe_cond_signal(n, m) pthread_mutex_lock(m); pthread_cond_signal(n); pthread_mutex_unlock(m)
#define safe_cond_wait(n, m) pthread_mutex_lock(m); pthread_cond_wait(n, m); pthread_mutex_unlock(m)


/* Debugging logs */
#define LOG_DEBUG 0
#define LOG_INFO 1
#define LOG_WARN 2
#define LOG_ERROR 3
#define LOG_LEVEL LOG_DEBUG
#define LOG(level, ...) if (level >= LOG_LEVEL) fprintf(stderr, __VA_ARGS__)


/* Thread for decoding */
struct decoder_state {
pthread_t thread;
Expand Down Expand Up @@ -107,6 +116,11 @@ struct decoder_options dec_options;
struct decoder_results dec_results[50];


/* Could be nice to update this one with the CI */
const char rtlsdr_wsprd_version[] = "0.5.4";
const char wsprnet_app_version[] = "rtlsdr-054"; // 10 chars max.!


/* Callback for each buffer received */
static void rtlsdr_callback(unsigned char *samples, uint32_t samples_count, void *ctx) {
int8_t *sigIn = (int8_t *)samples;
Expand Down Expand Up @@ -251,13 +265,16 @@ static void *decoder(void *arg) {
while (!rx_state.exit_flag) {
safe_cond_wait(&decState.ready_cond, &decState.ready_mutex);

LOG(LOG_DEBUG, "Decoder thread -- Got a signal!\n");

if (rx_state.exit_flag)
break; /* Abort case, final sig */

/* Select the previous transmission / other buffer */
uint32_t prevBuffer = (rx_state.bufferIndex + 1) % 2;

if (rx_state.iqIndex[prevBuffer] < ( (SIGNAL_LENGHT - 3) * SIGNAL_SAMPLE_RATE ) ) {
LOG(LOG_DEBUG, "Decoder thread -- Signal too short, skipping!\n");
continue; /* Partial buffer during the first RX, skip it! */
} else {
rx_options.nloop++; /* Decoding this signal, count it! */
Expand Down Expand Up @@ -301,6 +318,7 @@ static void *decoder(void *arg) {
dec_options,
dec_results,
&n_results);
LOG(LOG_DEBUG, "Decoder thread -- Decoding completed\n");
saveSample(rx_state.iSamples[prevBuffer], rx_state.qSamples[prevBuffer]);
postSpots(n_results);
printSpots(n_results);
Expand Down Expand Up @@ -352,14 +370,16 @@ void postSpots(uint32_t n_results) {
// "Table 'wsprnet_db.activity' doesn't exist" reported on web site...
// Anyone has doc about this?
if (n_results == 0) {
snprintf(url, sizeof(url) - 1, "http://wsprnet.org/post?function=wsprstat&rcall=%s&rgrid=%s&rqrg=%.6f&tpct=%.2f&tqrg=%.6f&dbm=%d&version=rtlsdr-053&mode=2",
snprintf(url, sizeof(url) - 1, "http://wsprnet.org/post?function=wsprstat&rcall=%s&rgrid=%s&rqrg=%.6f&tpct=%.2f&tqrg=%.6f&dbm=%d&version=%s&mode=2",
dec_options.rcall,
dec_options.rloc,
rx_options.dialfreq / 1e6,
0.0f,
rx_options.dialfreq / 1e6,
0);
0,
wsprnet_app_version);

LOG(LOG_DEBUG, "Sending empty report using this URL: %s\n", url);
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
Expand All @@ -375,7 +395,7 @@ void postSpots(uint32_t n_results) {
}

for (uint32_t i = 0; i < n_results; i++) {
snprintf(url, sizeof(url) - 1, "http://wsprnet.org/post?function=wspr&rcall=%s&rgrid=%s&rqrg=%.6f&date=%02d%02d%02d&time=%02d%02d&sig=%.0f&dt=%.1f&tqrg=%.6f&tcall=%s&tgrid=%s&dbm=%s&version=rtlsdr-053&mode=2",
snprintf(url, sizeof(url) - 1, "http://wsprnet.org/post?function=wspr&rcall=%s&rgrid=%s&rqrg=%.6f&date=%02d%02d%02d&time=%02d%02d&sig=%.0f&dt=%.1f&tqrg=%.6f&tcall=%s&tgrid=%s&dbm=%s&version=%s&mode=2",
dec_options.rcall,
dec_options.rloc,
dec_results[i].freq,
Expand All @@ -389,8 +409,10 @@ void postSpots(uint32_t n_results) {
dec_results[i].freq,
dec_results[i].call,
dec_results[i].loc,
dec_results[i].pwr);
dec_results[i].pwr,
wsprnet_app_version);

LOG(LOG_DEBUG, "Sending spot using this URL: %s\n", url);
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
Expand Down Expand Up @@ -813,11 +835,11 @@ int main(int argc, char **argv) {
case 0:
switch (option_index) {
case 0: // --help
usage(stdout, 0);
usage(stdout, EXIT_SUCCESS);
break;
case 1: // --version
printf("rtlsdr_wsprd 0.5.3\n");
exit(0);
printf("rtlsdr_wsprd v%s\n", rtlsdr_wsprd_version);
exit(EXIT_FAILURE);
break;
}
case 'f': // Frequency
Expand Down Expand Up @@ -941,7 +963,7 @@ int main(int argc, char **argv) {
rx_options.filename = optarg;
break;
default:
usage(stderr, 1);
usage(stderr, EXIT_FAILURE);
break;
}
}
Expand Down Expand Up @@ -1088,8 +1110,8 @@ int main(int argc, char **argv) {
struct tm *gtm = gmtime(&rawtime);

/* Print used parameter */
printf("\nStarting rtlsdr-wsprd (%04d-%02d-%02d, %02d:%02dz) -- Version 0.5.3\n",
gtm->tm_year + 1900, gtm->tm_mon + 1, gtm->tm_mday, gtm->tm_hour, gtm->tm_min);
printf("\nStarting rtlsdr-wsprd (%04d-%02d-%02d, %02d:%02dz) -- Version %s\n",
gtm->tm_year + 1900, gtm->tm_mon + 1, gtm->tm_mday, gtm->tm_hour, gtm->tm_min, rtlsdr_wsprd_version);
printf(" Callsign : %s\n", dec_options.rcall);
printf(" Locator : %s\n", dec_options.rloc);
printf(" Dial freq. : %d Hz\n", rx_options.dialfreq);
Expand Down Expand Up @@ -1131,7 +1153,9 @@ int main(int argc, char **argv) {
sec = lTime.tv_sec % 120;
usec = sec * 1000000 + lTime.tv_usec;
uwait = 120000000 - usec;
LOG(LOG_DEBUG, "Main thread waiting %d seconds\n", uwait/1000000);
usleep(uwait);
LOG(LOG_DEBUG, "Main thread will a signal to the decoder thread\n");

/* Switch to the other buffer and trigger the decoder */
rx_state.bufferIndex = (rx_state.bufferIndex + 1) % 2;
Expand Down

0 comments on commit 7251af4

Please sign in to comment.