Example #1
0
 def send(node: Node, mod: int, message: str, offset: float, dst: int):
     if dst:
         node.cmd('gloria tx -m {} -p "{}" -t {} -d {}'.format(
             mod, message, int(offset * 8E6), dst))
     else:
         node.cmd('gloria tx -m {} -p "{}" -t {}'.format(
             mod, message, int(offset * 8E6)))
Example #2
0
 def receive(node: Node, mod: int, message_len: int, offset: float,
             ack: bool):
     if ack:
         node.cmd('gloria rx -m {} -s {} -t {} -a'.format(
             mod, message_len, int(offset * 8E6)))
     else:
         node.cmd('gloria rx -m {} -s {} -t {}'.format(
             mod, message_len, int(offset * 8E6)))
Example #3
0
    def connect_nodes(self):
        self.nodes = [
            Node(flocklab=True, id=id, test=False)
            for id in FLOCKLAB_TARGET_ID_LIST
        ]
        if self.local:
            self.serial_nodes = Node.get_serial_all()
            self.nodes.extend(self.serial_nodes)

        for node in self.nodes:
            node.interactive_mode(False)  # Enable single-line JSON Output
Example #4
0
    def __init__(self, port):
        try:
            self.node = Node(port, test=False)
            if self.node:
                if not self.node.ser.is_open:
                    self.node.ser.open()
                self.node.ser.write(b"system bootloader\r\n")
                self.node.close()
                time.sleep(0.2)

            self.port = port

        except serial.SerialException as e:
            print(e)
            raise ValueError("Port {} is NOT a valid COM Port.".format(port.device))
Example #5
0
    def connect_nodes(self):
        if not self.local:
            self.nodes: List[Node] = [
                Node(flocklab=True, id=id, test=True)
                for id in FLOCKLAB_TARGET_ID_LIST
            ]
        else:
            self.nodes: List[Node] = []
            self.serial_nodes = Node.get_serial_all()
            self.nodes.extend(self.serial_nodes)

        for node in self.nodes:
            node.cmd('config set uid {:d}'.format(node.id))
            node.cmd('config set role 1')
            node.cmd('config store')
            node.cmd('system reset')
            node.interactive_mode(False)  # Enable single-line JSON Output
            #node.flush()

        time.sleep(0.2)
Example #6
0
    def __enter__(self, devkit_count=2):
        devkits = []
        for i in range(self.devkit_count):
            devkit = Node(Node.get_serial_port(DEVKIT_PORTS[i]))
            devkit.open()
            devkit.reset()
            devkit.cmd("led blink")
            time.sleep(0.3)
            devkits.append(devkit)

        self.devkits = devkits
        self.devkit_a = devkits[0]
        self.devkit_b = devkits[1]

        self.scope = Oscilloscope()

        return self
Example #7
0
class Bootloader:
    def __init__(self, port):
        try:
            self.node = Node(port, test=False)
            if self.node:
                if not self.node.ser.is_open:
                    self.node.ser.open()
                self.node.ser.write(b"system bootloader\r\n")
                self.node.close()
                time.sleep(0.2)

            self.port = port

        except serial.SerialException as e:
            print(e)
            raise ValueError("Port {} is NOT a valid COM Port.".format(port.device))

    @staticmethod
    def get_bootloader(port):
        try:
            bootloader = Bootloader(port)
            return bootloader
        except ValueError:
            return None

    @staticmethod
    def get_all():
        ports = [port for port in serial.tools.list_ports.comports() if port[2] != 'n/a']

        if len(ports):
            with Pool(len(ports)) as p:
                bootloaders = [bootloader for bootloader in p.map(Bootloader.get_bootloader, ports) if
                               bootloader is not None]
            if bootloaders:
                print("Flora bootloaders detected: {}".format([bootloader.port.device for bootloader in bootloaders]))
            else:
                print("NO flora bootloaders detected!")
            return bootloaders
        else:
            print("NO flora bootloaders detected!")
Example #8
0
 def sync(node: Node, tx: bool):
     if tx:
         node.cmd('gloria sync')
     else:
         node.cmd('gloria rx')
Example #9
0
 def receive(node: Node):
     node.cmd('radio receive')
Example #10
0
 def configure_node(node: Node, tx: bool, modulation, power, preamble: int):
     config = RadioConfiguration(modulation,
                                 power=power,
                                 tx=tx,
                                 preamble=preamble)
     node.cmd(config.cmd)