char usage[] =
"sdr_power, a port of the rtl_power FFT logger to multiple SDRs\n"
"\n"
"Use:    sdr_power -f freq_range -r radio[,radio_opts] [-options] [filename]\n"
"  -f lower:upper:bin_size [Hz]\n"
"     \n"
"     Defines the frequency range and bin size.\n"
"     Bin size is a maximum, smaller more convenient bins will be\n"
"     used. Valid range is 1Hz - maximum_rate\n"
"\n"
"  -r radio[,radio_opts] (default: rtlsdr)\n"
"     The SDR to use, valid radios are\n"
"       rtlsdr, bladerf, hackrf\n"
"     Additional options are given as comma-separated key[=value] pairs\n"
"     and described below\n"
"\n"
" [-i integration_interval (default: 10 seconds)]\n"
"     buggy if a full sweep takes longer than the interval\n"
"\n"
" [-1 enables single-shot mode (default: off)]\n"
" \n"
" [-e exit_timer (default: off/0)]\n"
"\n"
"Experimental options:\n"
" [-w window (default: rectangle)]\n"
"     Available windows: hamming, blackman, blackman-harris,\n"
"                        hann-poisson, bartlett, youssef\n"
"\n"
" [-c crop_percent (default: 0%%, recommended: 20%%-50%%)]\n"
"     discards data at the edges, 100%% discards everything\n"
"     has no effect for bins larger than 1MHz\n"
"\n"
" [-F fir_size (default: disabled)]\n"
"     enables low-leakage downsample filter,\n"
"     fir_size can be 0 or 9.  0 has bad roll off,\n"
"     try with '-c 50%%')\n"
"\n"
" [-P enables peak hold (default: off)]\n"
"\n"
"  filename (a '-' dumps samples to stdout)\n"
"     omitting the filename also uses stdout\n"
"\n"
"Radio options:\n"
"   Giving options allows to control the radio and possibly use special\n"
"   functionality of that radio\n"
"   Options are given as comma-separated key=value pairs\n"
"\n"
"   Options available for all radios:\n"
"     idx (default: 0)\n"
"         Hardware index in case multiple radios are present\n"
"     maxrate (default: hardware maximum)\n"
"         Maximum sample rate, set this lower when there is buffer overflows\n"
"     \n"
"   Options for rtlsdr:\n"
"     gain=n (default: automatic)\n"
"     ppm_error=n (default: 0)\n"
"     dsampling (default: off)\n"
"         Enable direct sampling mode (experimental)\n"
"     otune (default: off)\n"
"         Enable offset tuning mode (experimental)\n"
"\n"
"   Options for hackrf:\n"
"     amp=n (default: 0)\n"
"         Antenna amp setting (0/1)\n"
"     lna=n (default: 0)\n"
"         LNA (IF) amp setting (0-40dB, 8dB step)\n"
"     vga=n (default: 0)\n"
"         VGA (BB) amp setting (0-62dB, 2dB step)\n"
"\n"
"   Options for bladerf:\n"
"     vga1=n (default: -20)\n"
"     vga2=n (default: 0)\n"
"     bandwidth=n [Hz] (default: automatic)\n"
"         Use the given bandwidth instead of selecting the closest match\n"
"         based on the sampling rate. Closest possible bandwidth is used.\n"
"\n"
"CSV FFT output columns:\n"
"   date, time, Hz low, Hz high, Hz step, samples, dbm, dbm, ...\n"
"\n"
"Examples:\n"
"   sdr_power -f 88M:108M:125k -r rtlsdr fm_stations.csv\n"
"       creates 160 bins across the FM band, individual stations should be visible\n"
"\n"
"   sdr_power -f 100M:1G:1M -r rtlsdr,amp=1,lna=40,vga=0 -i 5m -1 survey.csv\n"
"       a five minute low res scan of nearly everything\n"
"\n"
"   sdr_power -f ... -i 15m -1 -r rtlsdr log.csv\n"
"       integrate for 15 minutes and exit afterwards\n"
"\n"
"   sdr_power -f ... -e 1h -r rtlsdr | gzip > log.csv.gz\n"
"       collect data for one hour and compress it on the fly\n"
"\n"
"   sdr_power -f 100:1G:1M -m 5000000 -r bladerf,idx=1,vga1=-10,vga2=16\n"
"       select second bladeRF device, limits rate and sets VGA gains\n"
"\n"
"Convert CSV to a waterfall graphic with:\n"
"   http://kmkeen.com/tmp/heatmap.py.txt\n"
"\n";
