Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
    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