def get_data(self): for scanner in self.scanners: if scanner.file_reader.sample_queue.empty(): continue current_cf = self.bands[0][0] count = scanner.sample_count while not scanner.file_reader.sample_queue.empty(): ts, xydata = scanner.file_reader.sample_queue.get() if self.dump_to_file: cPickle.dump((scanner.idx, ts, xydata), self.dump_file) for (tsf, freq_cf, noise, rssi, pwr) in SpectrumFileReader.decode(xydata): print('centre frequency: {}'.format( scanner.freq_to_chan(int(freq_cf)))) sc_pwr = [] if count < scanner.sample_count and current_cf == freq_cf: for freq_sc, sigval in sorted(pwr.items()): sc_pwr.append(sigval) s = pd.Series(sc_pwr, index=df.columns) df = df.append(s, ignore_index=True) else: count = scanner.sample_count for freq_sc, sigval in sorted(pwr.items()): sc_pwr.append(sigval) df = pd.DataFrame(sc_pwr).T count -= 1 current_cf = freq_cf self.write_data("./spectral_data/" + str(current_cf) + ".csv", df)
def update_data(self, w, frame_clock, user_data): time = frame_clock.get_frame_time() if time - self.lastframe > 1000: self.lastframe = time else: return True hmp = self.heatmap mpf = self.max_per_freq for scanner in self.scanners: if scanner.file_reader.sample_queue.empty(): continue ts, xydata = scanner.file_reader.sample_queue.get() if self.dump_to_file: cPickle.dump((scanner.idx, ts, xydata), self.dump_file) if not self.ui_update: continue for (tsf, freq_cf, noise, rssi, pwr) in SpectrumFileReader.decode(xydata): if scanner.mode.value == 1 and freq_cf < self.last_x: # chanscan # we wrapped the scan... self.hmp_gen += 1 self.mpf_gen += 1 if scanner.mode.value == 2: # background if self.bg_sample_count == self.bg_sample_count_limit: self.bg_sample_count = 0 self.hmp_gen += 1 self.mpf_gen += 1 self.bg_sample_count += 1 for freq_sc, sigval in pwr.iteritems(): if freq_sc not in hmp or self.hmp_gen_tbl.get(freq_sc, 0) < self.hmp_gen: hmp[freq_sc] = {} self.hmp_gen_tbl[freq_sc] = self.hmp_gen arr = hmp[freq_sc] mody = ceil(sigval*2.0)/2.0 arr.setdefault(mody, 0) arr[mody] += 1.0 mpf.setdefault(freq_sc, 0) if sigval > mpf[freq_sc] or self.mpf_gen_tbl.get(freq_sc, 0) < self.mpf_gen: mpf[freq_sc] = sigval self.mpf_gen_tbl[freq_sc] = self.mpf_gen self.last_x = freq_cf if not self.ui_update: return True self.heatmap = hmp self.max_per_freq = mpf w.queue_draw() return True
def process(fn): print "processing '%s':" % fn f = open(fn, 'r') while True: try: device_id, ts, sample_data = cPickle.load(f) for tsf, freq, noise, rssi, pwrs in SpectrumFileReader.decode(sample_data): print device_id, ts, tsf, freq, noise, rssi for carrier_freq, pwr_level in pwrs.iteritems(): print carrier_freq, pwr_level except EOFError: break
def update_data(self, w, frame_clock, user_data): time = frame_clock.get_frame_time() if time - self.lastframe > 1000: self.lastframe = time else: return True hmp = self.heatmap mpf = self.max_per_freq for scanner in self.scanners: if scanner.file_reader.sample_queue.empty(): continue ts, xydata = scanner.file_reader.sample_queue.get() if self.dump_to_file: cPickle.dump((scanner.idx, ts, xydata), self.dump_file) if not self.ui_update: continue for (tsf, freq_cf, noise, rssi, pwr) in SpectrumFileReader.decode(xydata): if scanner.mode.value == 1 and freq_cf < self.last_x: # chanscan # we wrapped the scan... self.hmp_gen += 1 self.mpf_gen += 1 if scanner.mode.value == 2: # background if self.bg_sample_count == self.bg_sample_count_limit: self.bg_sample_count = 0 self.hmp_gen += 1 self.mpf_gen += 1 self.bg_sample_count += 1 for freq_sc, sigval in pwr.iteritems(): if freq_sc not in hmp or self.hmp_gen_tbl.get( freq_sc, 0) < self.hmp_gen: hmp[freq_sc] = {} self.hmp_gen_tbl[freq_sc] = self.hmp_gen arr = hmp[freq_sc] mody = ceil(sigval * 2.0) / 2.0 arr.setdefault(mody, 0) arr[mody] += 1.0 mpf.setdefault(freq_sc, 0) if sigval > mpf[freq_sc] or self.mpf_gen_tbl.get( freq_sc, 0) < self.mpf_gen: mpf[freq_sc] = sigval self.mpf_gen_tbl[freq_sc] = self.mpf_gen self.last_x = freq_cf if not self.ui_update: return True self.heatmap = hmp self.max_per_freq = mpf w.queue_draw() return True