Skip to content

Commit

Permalink
Merge pull request TLeconte#105 from andermatt64/master
Browse files Browse the repository at this point in the history
Fixup SoapySDR issues
  • Loading branch information
TLeconte authored Mar 17, 2023
2 parents 89cc294 + ff17754 commit c4f7958
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 6 deletions.
26 changes: 23 additions & 3 deletions acarsdec.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ int GRdB = 20;
int ppm = 0;
#endif
#ifdef WITH_SOAPY
char *antenna=NULL;
double gain = -10.0;
int ppm = 0;
int rateMult = 160;
Expand Down Expand Up @@ -120,7 +121,7 @@ static void usage(void)
fprintf (stderr, " [-L lnaState] [-G GRdB] [-p ppm] -s f1 [f2] .. [fN]");
#endif
#ifdef WITH_SOAPY
fprintf (stderr, " [-g gain] [-p ppm] [-c freq] -d devicestring f1 [f2] .. [fN]");
fprintf (stderr, " [--antenna antenna] [-g gain] [-p ppm] [-c freq] -d devicestring f1 [f2] .. [fN]");
#endif
fprintf(stderr, "\n\n");
#ifdef HAVE_LIBACARS
Expand Down Expand Up @@ -188,6 +189,8 @@ static void usage(void)
" -s f1 [f2]...[f%d]\t: decode from sdrplay receiving at VHF frequencies f1 and optionally f2 to f%d in Mhz (ie : -s 131.525 131.725 131.825 )\n", MAXNBCHANNELS, MAXNBCHANNELS);
#endif
#ifdef WITH_SOAPY
fprintf(stderr,
" --antenna antenna\t: set antenna port to use\n");
fprintf(stderr,
" -g gain\t\t: set gain in db (-10 will result in AGC; default is AGC)\n");
fprintf(stderr, " -p ppm\t\t\t: set ppm frequency correction\n");
Expand Down Expand Up @@ -226,6 +229,9 @@ int main(int argc, char **argv)
struct option long_opts[] = {
{ "verbose", no_argument, NULL, 'v' },
{ "skip-reassembly", no_argument, NULL, 1 },
#ifdef WITH_SOAPY
{ "antenna", required_argument, NULL, 2},
#endif
{ NULL, 0, NULL, 0 }
};
char sys_hostname[HOST_NAME_MAX+1];
Expand Down Expand Up @@ -291,14 +297,17 @@ int main(int argc, char **argv)
case 'p':
ppm = atoi(optarg);
break;
case 'L':
case 'L':
lnaState = atoi(optarg);
break;
case 'G':
GRdB = atoi(optarg);
break;
#endif
#ifdef WITH_SOAPY
case 2:
antenna = optarg;
break;
case 'd':
res = initSoapy(argv, optind);
inmode = 6;
Expand Down Expand Up @@ -406,7 +415,7 @@ int main(int argc, char **argv)
}

#ifdef WITH_MQTT
if(netout== NETLOG_MQTT) {
if (netout == NETLOG_MQTT) {
res = MQTTinit(mqtt_urls,idstation,mqtt_topic,mqtt_user,mqtt_passwd);
if (res) {
fprintf(stderr, "Unable to init MQTT\n");
Expand All @@ -415,6 +424,17 @@ int main(int argc, char **argv)
}
#endif

#ifdef WITH_SOAPY
if (antenna) {
if (verbose) fprintf(stderr, "Setting soapy antenna to %s\n", antenna);
res = soapySetAntenna(antenna);
if (res) {
fprintf(stderr, "Unable to set antenna for SoapySDR\n");
exit(res);
}
}
#endif

sigact.sa_handler = sigintHandler;
sigemptyset(&sigact.sa_mask);
sigact.sa_flags = 0;
Expand Down
1 change: 1 addition & 0 deletions acarsdec.h
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ extern int runAirspySample(void);
#endif
#ifdef WITH_SOAPY
extern int initSoapy(char **argv,int optind);
extern int soapySetAntenna(const char *antenna);
extern int runSoapySample(void);
extern int runSoapyClose(void);
extern int rateMult;
Expand Down
4 changes: 2 additions & 2 deletions output.c
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ static void printmsg(acarsmsg_t * msg, int chn, struct timeval tv)
{
oooi_t oooi;

#if defined (WITH_RTL) || defined (WITH_AIR)
#if defined (WITH_RTL) || defined (WITH_AIR) || defined (WITH_SOAPY)
if (inmode >= 3)
fprintf(fdout, "\n[#%1d (F:%3.3f L:%+5.1f E:%1d) ", chn + 1,
channel[chn].Fr / 1000000.0, msg->lvl, msg->err);
Expand Down Expand Up @@ -228,7 +228,7 @@ static int buildjson(acarsmsg_t * msg, int chn, struct timeval tv)
{

oooi_t oooi;
#if defined (WITH_RTL) || defined (WITH_AIR)
#if defined (WITH_RTL) || defined (WITH_AIR) || defined (WITH_SOAPY)
float freq = channel[chn].Fr / 1000000.0;
#else
float freq = 0;
Expand Down
21 changes: 20 additions & 1 deletion soapy.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ int initSoapy(char **argv, int optind)
MAXNBCHANNELS);

if (nbch == 0) {
fprintf(stderr, "Need a least one frequency\n");
fprintf(stderr, "Need a least one frequency\n");
return 1;
}

Expand Down Expand Up @@ -183,6 +183,25 @@ int initSoapy(char **argv, int optind)
return 0;
}

int soapySetAntenna(const char *antenna) {
if (dev == NULL) {
fprintf(stderr, "soapySetAntenna: SoapySDR not init'd\n");
return 1;
}

if (antenna == NULL) {
fprintf(stderr, "soapySetAntenna: antenna is NULL\n");
return 1;
}

if (SoapySDRDevice_setAntenna(dev, SOAPY_SDR_RX, 0, antenna) != 0) {
fprintf(stderr, "soapySetAntenna: SoapySDRDevice_setAntenna failed (check antenna validity)\n");
return 1;
}

return 0;
}

static void *readThreadEntryPoint(void *arg) {
int n;
int res = 0;
Expand Down

0 comments on commit c4f7958

Please sign in to comment.