def calcFilename(scanlevel, start, gain): filename = "%sHz-%sHz-%07.2fdB-%sHz-%s-%s" % ( commons.float2Hz(start, 3, True), commons.float2Hz(start + scanlevel['windows'], 3, True), gain, commons.float2Hz(scanlevel['binsize'], 3, True), commons.float2Sec(scanlevel['interval']), commons.float2Sec(scanlevel['quitafter'])) fullname = os.path.join(scanlevel['scandir'], filename) return fullname
def calcFilename(scanlevel, start, gain): filename = "%sHz-%sHz-%07.2fdB-%sHz-%s-%s" % ( commons.float2Hz(start, 3, True), commons.float2Hz(start + scanlevel['windows'], 3, True), gain, commons.float2Hz(scanlevel['binsize'], 3, True), commons.float2Sec(scanlevel['interval']), commons.float2Sec(scanlevel['quitafter']) ) fullname = os.path.join(scanlevel['scandir'], filename) return fullname
def executeRTLPower(cmdargs, config, scanlevel, start): # Create directory if not exists if not os.path.isdir(scanlevel['scandir']): print "executeRTLPower SCANDIR: %s" % scanlevel['scandir'] os.makedirs(scanlevel['scandir']) for gain in scanlevel['gains']: filename = calcFilename(scanlevel, start, gain) # Ignore call rtl_power if file already exist csv_filename = "%s.csv" % filename exists = os.path.isfile(csv_filename) if exists: showVerbose( config, "%sScan '%s' : %shz-%shz already exists%s" % (tcolor.GREEN, scanlevel['name'], commons.float2Hz(start), commons.float2Hz(start + scanlevel['windows']), tcolor.DEFAULT)) return else: running_filename = "%s.running" % filename exists = os.path.isfile(running_filename) if exists: print "%sScan '%s' : delete old running file %shz-%shz" % ( tcolor.DEFAULT, scanlevel['name'], commons.float2Hz(start), commons.float2Hz(start + scanlevel['windows']), ) os.remove(running_filename) print "%sScan '%s' : %shz-%shz with %s gain / Begin: %s / Finish in: ~%s" % ( tcolor.DEFAULT, scanlevel['name'], commons.float2Hz(start), commons.float2Hz(start + scanlevel['windows']), gain, time.strftime("%H:%M:%S", time.localtime()), commons.float2Sec(scanlevel['quitafter']), ) cmddir = None if os.name == "nt": cmddir = "C:\\SDRHunter\\rtl-sdr-release\\x32" cmd = "rtl_power -p %s -g %s -f %s:%s:%s -i %s -e %s \"%s\"" % ( config['global']['ppm'], gain, start, start + scanlevel['windows'], scanlevel['binsize'], scanlevel['interval'], scanlevel['quitafter'], running_filename) # Create Scan info file createScanInfoFile(cmdargs, config, scanlevel, start, gain) # Call rtl_power shell command executeShell(cmd, cmddir) # Rename file os.rename(running_filename, csv_filename)
def showInfo(config, args): # Show config result_scan = [] if 'configs' in config: for configname in config['configs']: result_scan.append( [ configname, config['configs'][configname]['location'], config['configs'][configname]['antenna'], ] ) header = ['Config name', 'Location','Antenna'] print tabulate(result_scan, headers=header, stralign="right") print "" # Show the scan information table result_scan = [] if 'scans' in config: for scanlevel in config['scans']: result_scan.append( [ "%sHz" % commons.float2Hz(scanlevel['freq_start']), "%sHz" % commons.float2Hz(scanlevel['freq_end']), "%sHz" % commons.float2Hz(scanlevel['windows']), commons.float2Sec(scanlevel['interval']), scanlevel['nbsamples_lines'], commons.float2Sec(commons.sec2Float(scanlevel['interval']) * scanlevel['nbsamples_lines']), # scanlevel['quitafter'], scanlevel['maxlevel_legend'], ] ) header = [ 'Freq. Start', 'Freq. End', 'Windows', 'Interval', 'Nb lines', 'Total time', 'Max legend level' ] print tabulate(result_scan, headers=header, stralign="right") # Show global config if 'global' in config: pprint.pprint(config['global'],indent=2)
def showInfo(config, args): # Show config result_scan = [] if 'configs' in config: for configname in config['configs']: result_scan.append([ configname, config['configs'][configname]['location'], config['configs'][configname]['antenna'], ]) header = ['Config name', 'Location', 'Antenna'] print tabulate(result_scan, headers=header, stralign="right") print "" # Show the scan information table result_scan = [] if 'scans' in config: for scanlevel in config['scans']: result_scan.append([ "%sHz" % commons.float2Hz(scanlevel['freq_start']), "%sHz" % commons.float2Hz(scanlevel['freq_end']), "%sHz" % commons.float2Hz(scanlevel['windows']), commons.float2Sec(scanlevel['interval']), scanlevel['nbsamples_lines'], commons.float2Sec( commons.sec2Float(scanlevel['interval']) * scanlevel['nbsamples_lines']), # scanlevel['quitafter'], scanlevel['maxlevel_legend'], ]) header = [ 'Freq. Start', 'Freq. End', 'Windows', 'Interval', 'Nb lines', 'Total time', 'Max legend level' ] print tabulate(result_scan, headers=header, stralign="right") # Show global config if 'global' in config: pprint.pprint(config['global'], indent=2)
def executeRTLPower(cmdargs, config, scanlevel, start): # Create directory if not exists if not os.path.isdir(scanlevel['scandir']): print "executeRTLPower SCANDIR: %s" % scanlevel['scandir'] os.makedirs(scanlevel['scandir']) for gain in scanlevel['gains']: filename = calcFilename(scanlevel, start, gain) # Ignore call rtl_power if file already exist csv_filename = "%s.csv" % filename exists = os.path.isfile(csv_filename) if exists: showVerbose( config, "%sScan '%s' : %shz-%shz already exists%s" % ( tcolor.GREEN, scanlevel['name'], commons.float2Hz(start), commons.float2Hz(start + scanlevel['windows']), tcolor.DEFAULT ) ) return else: running_filename = "%s.running" % filename exists = os.path.isfile(running_filename) if exists: print "%sScan '%s' : delete old running file %shz-%shz" % ( tcolor.DEFAULT, scanlevel['name'], commons.float2Hz(start), commons.float2Hz(start + scanlevel['windows']), ) os.remove(running_filename) print "%sScan '%s' : %shz-%shz with %s gain / Begin: %s / Finish in: ~%s" % ( tcolor.DEFAULT, scanlevel['name'], commons.float2Hz(start), commons.float2Hz(start + scanlevel['windows']), gain, time.strftime("%H:%M:%S", time.localtime()), commons.float2Sec(scanlevel['quitafter']), ) cmddir = None if os.name == "nt": cmddir = "C:\\SDRHunter\\rtl-sdr-release\\x32" cmd = "rtl_power -p %s -g %s -f %s:%s:%s -i %s -e %s \"%s\"" % ( config['global']['ppm'], gain, start, start + scanlevel['windows'], scanlevel['binsize'], scanlevel['interval'], scanlevel['quitafter'], running_filename ) # Create Scan info file createScanInfoFile(cmdargs, config, scanlevel, start, gain) # Call rtl_power shell command executeShell(cmd, cmddir) # Rename file os.rename(running_filename, csv_filename)