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
Example #2
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
	def sweep(self, sweep_config):
		"""Perform a single frequency sweep and return results
		immediately

		sweep_config -- Frequency sweep configuration to use.
		"""

		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
	def sweep(self, sweep_config):
		"""Perform a single frequency sweep and return results
		immediately

		sweep_config -- Frequency sweep configuration to use.
		"""

		response = self.alh.post("sensing/quickSweepBin",
				"dev %d conf %d ch %d:%d:%d" % (
				sweep_config.config.device.id,
				sweep_config.config.id,
				sweep_config.start_ch,
				sweep_config.step_ch,
				sweep_config.stop_ch))

		data = response[:-4]
		crc = response[-4:]

		their_crc = struct.unpack("i", crc[-4:])[0]
		our_crc = binascii.crc32(data)
		if their_crc != our_crc:
			# Firmware versions 2.29 only calculate CRC on the
			# first half of the response due to a bug
			our_crc = binascii.crc32(data[:len(data)/2])
			if their_crc != our_crc:
				raise CRCError
			else:
				log.warning("working around broken CRC calculation! "
						"please upgrade node firmware")

		assert sweep_config.num_channels * 2 == len(data)

		sweep = Sweep()
		sweep.timestamp = 0
		for n in xrange(0, len(data), 2):
			datum = data[n:n+2]

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

		return sweep
	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
Example #6
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
Example #7
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)
Example #8
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)