Source code for faradayio.faraday

"""
.. module:: faraday
    :platform: Unix
    :synopsis: Main module for Faraday radios from FaradayRF.

.. moduleauthor:: Bryce Salmi <bryce@faradayrf.com>

"""

import sliplib


[docs]class Faraday(object): """A class that enables transfer of data between computer and Faraday Attributes: _serialPort (serial instance): Pyserial serial port instance. """ def __init__(self, serialPort=None): self._serialPort = serialPort
[docs] def send(self, msg): """Converts data to slip format then sends over serial port Uses the SlipLib module to convert the message data into SLIP format. The message is then sent over the serial port opened with the instance of the Faraday class used when invoking send(). Args: msg (bytes): Bytes format message to send over serial port. Returns: int: Number of bytes transmitted over the serial port. """ # Create a sliplib Driver slipDriver = sliplib.Driver() # Package data in slip format slipData = slipDriver.send(msg) # Send data over serial port res = self._serialPort.serialPort.write(slipData) # Return number of bytes transmitted over serial port return res
[docs] def receive(self, length): """Reads in data from a serial port (length bytes), decodes slip A generator function which reads the serial port opened with the instance of Faraday used to read() and then uses the SlipLib module to convert the SLIP format into bytes. Each message received is added to a receive buffer in SlipLib which is then yielded. Args: length (int): Length to receive with serialPort.read(length) Yields: bytes: The next message in the receive buffer """ # Create a sliplib Driver slipDriver = sliplib.Driver() # Receive data from serial port ret = self._serialPort.serialPort.read(length) # Decode data from slip format, stores msgs in sliplib.Driver.messages slipDriver.receive(ret) # Yield each message as a generator for item in slipDriver.messages: yield item