Пример #1
0
    def setUp(self):
        d = Device(0, "test")

        dc = DeviceConfig(0, "foo", d)
        dc.base = 1000
        dc.spacing = 1
        dc.num = 1000

        sc = SweepConfig(dc, 0, 3, 1)

        p = SpectrumSensorProgram(sc, 0, 10, 1)

        self.r = r = SpectrumSensorResult(p)

        s = Sweep()
        s.timestamp = 0.0
        s.data = [0.0, 1.0, 2.0]
        r.sweeps.append(s)

        s = Sweep()
        s.timestamp = 1.0
        s.data = [3.0, 4.0]
        r.sweeps.append(s)
Пример #2
0
    def _decode(program, data):
        num_channels = program.sweep_config.num_channels
        line_bytes = num_channels * 2 + 4

        result = SpectrumSensorResult(program)

        sweep = Sweep()
        for n in range(0, len(data), 2):
            datum = data[n:n + 2]
            if len(datum) != 2:
                continue

            if n % line_bytes == 0:
                # got a time-stamp
                t = data[n:n + 4]
                tt = struct.unpack("<i", t)[0]
                assert not sweep.data
                sweep.timestamp = tt * 1e-3
                continue

            if n % line_bytes == 2:
                # second part of a time-stamp, just ignore
                assert not sweep.data
                continue

            dbm = struct.unpack("<h", datum)[0] * 1e-2
            sweep.data.append(dbm)

            if len(sweep.data) >= num_channels:
                result.sweeps.append(sweep)
                sweep = Sweep()

        if (sweep.data):
            result.sweeps.append(sweep)

        return result
Пример #3
0
    def sweep(self, sweep_config):
        """Perform a single frequency sweep and return results
		immediately

		:param sweep_config: frequency sweep configuration to use, a :py:class:`SweepConfig` object
		"""

        sweep = Sweep()
        sweep.timestamp = 0

        for sweep_config in self._split_sweep_config(sweep_config):
            data = self._sweep(sweep_config)
            sweep.data += data

        return sweep