Module modules.serial.serial_rn2483_radio
Process for controlling the setup of the RN2483 radio and reading its received messages.
Functions
def rn2483_radio_process(serial_status: queue.Queue[str],
radio_signal_report: queue.Queue[int],
rn2483_radio_input: queue.Queue[str],
rn2483_radio_payloads: queue.Queue[str],
serial_port: str,
settings: RadioParameters)-
Expand source code
def rn2483_radio_process( serial_status: Queue[str], radio_signal_report: Queue[int], rn2483_radio_input: Queue[str], rn2483_radio_payloads: Queue[str], serial_port: str, settings: RadioParameters, ): """Runs the primary logic for connecting to and reading from the RN2483 radio.""" radio = RN2483Radio(serial_port) logger.info(f"RN2483 Radio: Connected to {serial_port}") serial_status.put("rn2483_connected True") serial_status.put(f"rn2483_port {serial_port}") # Set up radio logger.info("Setting up") while True: try: logger.debug("Setting up radio") radio.setup(settings) logger.debug("Radio initialization worked.") break except SerialException: serial_status.put("rn2483_connected False") serial_status.put("rn2483_port null") logger.error("RN2483 Radio: Error communicating with serial device.") time.sleep(3) # Get transmissions logger.info("receiving") while True: logger.info("Waiting") while not rn2483_radio_input.empty(): command_string = rn2483_radio_input.get() if command_string == "radio get snr": radio_signal_report.put(radio.signal_report()) else: logger.error(f"Radio command '{command_string}' is not implemented.") # TODO: LIMIT TO ONLY AFTER THE ENTIRE BATCH IS DONE. # TODO: AFTER SENDING A COMMAND TO RADIO RECALL SET_RX_MODE() # Put serial message in data queue for telemetry message = radio.receive() if message is not None: logger.info(f"Received: {message}") rn2483_radio_payloads.put(message) else: logger.info("Got nothing")
Runs the primary logic for connecting to and reading from the RN2483 radio.