Example #1
0
class Testbed(TestbedBase):

	RADIO_CLASS = Radio

	def __init__(self):
		self.n = 0
		self.sensor = SpectrumSensor(base_hz=2.4e9, step_hz=100e3, nchannels=64)

		self.radio_devices = list_radio_devices()
		log.debug("detected %d connected radios" % (len(self.radio_devices,)))

		self.radios = []

	def _get_radio(self):

		try:
			path = self.radio_devices.pop()
		except IndexError:
			raise TestbedError("Can't get radio device")

		self.n += 1

		radio = Radio(path, self.n)
		self.radios.append(radio)

		return radio

	def get_radio_pair(self):

		dst_radio = self._get_radio()
		src_radio = self._get_radio()

		dst_radio.neighbor = src_radio.addr
		src_radio.neighbor = dst_radio.addr

		return dst_radio, src_radio

	def start(self):
		log.debug("starting spectrum sensor")
		self.sensor.start()

		log.debug("starting radios")
		for radio in self.radios:
			radio.start()

	def stop(self):
		log.debug("stopping spectrum sensor")
		self.sensor.stop()

		log.debug("cleaning up radios")
		for radio in self.radios:
			radio.stop()

	def get_spectrum(self):
		return self.sensor.get_spectrum()

	def get_frequency_range(self):
		return min(self.sensor.fft_size, 256)

	def get_bandwidth_range(self):
		return 4

	def get_power_range(self):
		return 17