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)
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)
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
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