allow setting options from environment variable "LIBRTLSDR_OPT"

same syntax as rtlsdr_set_opt_string()

Signed-off-by: hayati ayguen <h_ayguen@web.de>
development
hayati ayguen 2020-08-24 02:39:35 +02:00
parent 6cda6ddac7
commit f03ed7a887
1 changed files with 25 additions and 0 deletions

View File

@ -249,6 +249,7 @@ struct rtlsdr_dev {
#endif
int biast_gpio_pin_no;
int called_set_opt;
/* status */
int dev_lost;
@ -2905,6 +2906,7 @@ int rtlsdr_open(rtlsdr_dev_t **out_dev, uint32_t index)
dev->rtl_vga_control = 0;
dev->biast_gpio_pin_no = 0;
dev->called_set_opt = 0;
/* dev->softagc.command_thread; */
dev->softagc.agcState = SOFTSTATE_OFF;
@ -3187,8 +3189,23 @@ int rtlsdr_reset_buffer(rtlsdr_dev_t *dev)
return 0;
}
static void rtlsdr_process_env_opts(rtlsdr_dev_t *dev)
{
char * opts = getenv("LIBRTLSDR_OPT");
if ( opts ) {
fprintf(stderr, "process options '%s' from environment 'LIBRTLSDR_OPT'\n", opts);
rtlsdr_set_opt_string(dev, opts, 1);
}
dev->called_set_opt = 1;
}
int rtlsdr_read_sync(rtlsdr_dev_t *dev, void *buf, int len, int *n_read)
{
if (dev && !dev->called_set_opt )
rtlsdr_process_env_opts(dev);
#ifdef _ENABLE_RPC
if (rtlsdr_rpc_is_enabled())
{
@ -3494,6 +3511,9 @@ static void LIBUSB_CALL _libusb_callback(struct libusb_transfer *xfer)
int rtlsdr_wait_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx)
{
if (dev && !dev->called_set_opt )
rtlsdr_process_env_opts(dev);
#ifdef _ENABLE_RPC
if (rtlsdr_rpc_is_enabled())
{
@ -3617,6 +3637,9 @@ int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,
struct timeval zerotv = { 0, 0 };
enum rtlsdr_async_status next_status = RTLSDR_INACTIVE;
if (dev && !dev->called_set_opt )
rtlsdr_process_env_opts(dev);
#if LOG_API_CALLS
fprintf(stderr, "LOG: rtlsdr_read_async(buf_num %u, buf_len %u)\n",
(unsigned)buf_num, (unsigned)buf_len);
@ -4020,6 +4043,8 @@ int rtlsdr_set_opt_string(rtlsdr_dev_t *dev, const char *opts, int verbose)
if (!dev)
return -1;
dev->called_set_opt = 1;
/* set some defaults */
dev->softagc.deadTimeMs = 100;
dev->softagc.scanTimeMs = 100;