Example #1
0
 def link_add(self, device):
     '''add new link'''
     try:
         print("Connect %s source_system=%d" %
               (device, self.settings.source_system))
         conn = mavutil.mavlink_connection(
             device,
             autoreconnect=True,
             source_system=self.settings.source_system,
             baud=self.settings.baudrate)
         conn.mav.srcComponent = self.settings.source_component
     except Exception as msg:
         print("Failed to connect to %s : %s" % (device, msg))
         return False
     if self.settings.rtscts:
         conn.set_rtscts(True)
     conn.linknum = len(self.mpstate.mav_master)
     conn.mav.set_callback(self.master_callback, conn)
     if hasattr(conn.mav, 'set_send_callback'):
         conn.mav.set_send_callback(self.master_send_callback, conn)
     conn.linknum = len(self.mpstate.mav_master)
     conn.linkerror = False
     conn.link_delayed = False
     conn.last_heartbeat = 0
     conn.last_message = 0
     conn.highest_msec = 0
     self.mpstate.mav_master.append(conn)
     self.status.counters['MasterIn'].append(0)
     try:
         mp_util.child_fd_list_add(conn.port.fileno())
     except Exception:
         pass
     return True
Example #2
0
 def link_add(self, device):
     '''add new link'''
     try:
         print("Connect %s source_system=%d" % (device, self.settings.source_system))
         conn = mavutil.mavlink_connection(device, autoreconnect=True,
                                           source_system=self.settings.source_system,
                                           baud=self.settings.baudrate)
         conn.mav.srcComponent = self.settings.source_component
     except Exception as msg:
         print("Failed to connect to %s : %s" % (device, msg))
         return False
     if self.settings.rtscts:
         conn.set_rtscts(True)
     conn.linknum = len(self.mpstate.mav_master)
     conn.mav.set_callback(self.master_callback, conn)
     if hasattr(conn.mav, 'set_send_callback'):
         conn.mav.set_send_callback(self.master_send_callback, conn)
     conn.linknum = len(self.mpstate.mav_master)
     conn.linkerror = False
     conn.link_delayed = False
     conn.last_heartbeat = 0
     conn.last_message = 0
     conn.highest_msec = 0
     self.mpstate.mav_master.append(conn)
     self.status.counters['MasterIn'].append(0)
     try:
         mp_util.child_fd_list_add(conn.port.fileno())
     except Exception:
         pass
     return True
Example #3
0
 def link_add(self, descriptor, force_connected=False):
     '''add new link'''
     try:
         (device,
          optional_attributes) = self.parse_link_descriptor(descriptor)
         # if there's only 1 colon for port:baud
         # and if the first string is a valid serial port, it's a serial connection
         if len(device.split(':')) == 2:
             ports = mavutil.auto_detect_serial(
                 preferred_list=preferred_ports)
             for p in ports:
                 if p.device == device.split(':')[0]:
                     # it's a valid serial port, reformat arguments to fit
                     self.settings.baudrate = int(device.split(':')[1])
                     device = device.split(':')[0]
                     break
         print("Connect %s source_system=%d" %
               (device, self.settings.source_system))
         try:
             conn = mavutil.mavlink_connection(
                 device,
                 autoreconnect=True,
                 source_system=self.settings.source_system,
                 baud=self.settings.baudrate,
                 force_connected=force_connected)
         except Exception as e:
             # try the same thing but without force-connected for
             # backwards-compatability
             conn = mavutil.mavlink_connection(
                 device,
                 autoreconnect=True,
                 source_system=self.settings.source_system,
                 baud=self.settings.baudrate)
         conn.mav.srcComponent = self.settings.source_component
     except Exception as msg:
         print("Failed to connect to %s : %s" % (descriptor, msg))
         return False
     if self.settings.rtscts:
         conn.set_rtscts(True)
     conn.mav.set_callback(self.master_callback, conn)
     if hasattr(conn.mav, 'set_send_callback'):
         conn.mav.set_send_callback(self.master_send_callback, conn)
     conn.linknum = len(self.mpstate.mav_master)
     conn.linkerror = False
     conn.link_delayed = False
     conn.last_heartbeat = 0
     conn.last_message = 0
     conn.highest_msec = {}
     conn.target_system = self.settings.target_system
     self.apply_link_attributes(conn, optional_attributes)
     self.mpstate.mav_master.append(conn)
     self.status.counters['MasterIn'].append(0)
     self.status.bytecounters['MasterIn'].append(self.status.ByteCounter())
     self.mpstate.vehicle_link_map[conn.linknum] = set(())
     try:
         mp_util.child_fd_list_add(conn.port.fileno())
     except Exception:
         pass
     return True
Example #4
0
    def handle_remove(self, device):
        for i, conn in enumerate(self.mpstate.mav_outputs):
            if str(i) == device or conn.address == device:
                print(f"Removing breaker {conn.address}")
                try:
                    mp_util.child_fd_list_add(conn.port.fileno())
                except Exception:
                    pass
                conn.close()
                self.mpstate.mav_outputs.pop(i)

                self._devices.discard(device)
Example #5
0
 def cmd_output_remove(self, args):
     '''remove an output'''
     device = args[0]
     for i in range(len(self.mpstate.mav_outputs)):
         conn = self.mpstate.mav_outputs[i]
         if str(i) == device or conn.address == device:
             print("Removing output %s" % conn.address)
             try:
                 mp_util.child_fd_list_add(conn.port.fileno())
             except Exception:
                 pass
             conn.close()
             self.mpstate.mav_outputs.pop(i)
             return
Example #6
0
 def cmd_output_remove(self, args):
     """remove an output"""
     device = args[0]
     for i in range(len(self.mpstate.mav_outputs)):
         conn = self.mpstate.mav_outputs[i]
         if str(i) == device or conn.address == device:
             print("Removing output %s" % conn.address)
             try:
                 mp_util.child_fd_list_add(conn.port.fileno())
             except Exception:
                 pass
             conn.close()
             self.mpstate.mav_outputs.pop(i)
             return
Example #7
0
 def cmd_output_add(self, args):
     '''add new output'''
     device = args[0]
     print("Adding output %s" % device)
     try:
         conn = mavutil.mavlink_connection(device, input=False)
     except Exception:
         print("Failed to connect to %s" % device)
         return
     self.mpstate.mav_outputs.append(conn)
     try:
         mp_util.child_fd_list_add(conn.port.fileno())
     except Exception:
         pass
Example #8
0
 def cmd_output_add(self, args):
     '''add new output'''
     device = args[0]
     print("Adding output %s" % device)
     try:
         conn = mavutil.mavlink_connection(device, input=False)
     except Exception:
         print("Failed to connect to %s" % device)
         return
     self.mpstate.mav_outputs.append(conn)
     try:
         mp_util.child_fd_list_add(conn.port.fileno())
     except Exception:
         pass
Example #9
0
 def cmd_output_add(self, args):
     """add new output"""
     device = args[0]
     print("Adding output %s" % device)
     try:
         conn = mavutil.mavlink_connection(device, input=False, source_system=self.settings.source_system)
         conn.mav.srcComponent = self.settings.source_component
     except Exception:
         print("Failed to connect to %s" % device)
         return
     self.mpstate.mav_outputs.append(conn)
     try:
         mp_util.child_fd_list_add(conn.port.fileno())
     except Exception:
         pass
Example #10
0
 def cmd_output_add(self, args):
     '''add new output'''
     device = args[0]
     print(("Adding output %s" % device))
     try:
         conn = mavutil.mavlink_connection(
             device, input=False, source_system=self.settings.source_system)
         conn.mav.srcComponent = self.settings.source_component
     except Exception:
         print(("Failed to connect to %s" % device))
         return
     self.mpstate.mav_outputs.append(conn)
     try:
         mp_util.child_fd_list_add(conn.port.fileno())
     except Exception:
         pass
Example #11
0
 def link_add(self, descriptor, force_connected=False):
     '''add new link'''
     try:
         (device,
          optional_attributes) = self.parse_link_descriptor(descriptor)
         print("Connect %s source_system=%d" %
               (device, self.settings.source_system))
         try:
             conn = mavutil.mavlink_connection(
                 device,
                 autoreconnect=True,
                 source_system=self.settings.source_system,
                 baud=self.settings.baudrate,
                 force_connected=force_connected)
         except Exception as e:
             # try the same thing but without force-connected for
             # backwards-compatability
             conn = mavutil.mavlink_connection(
                 device,
                 autoreconnect=True,
                 source_system=self.settings.source_system,
                 baud=self.settings.baudrate)
         conn.mav.srcComponent = self.settings.source_component
     except Exception as msg:
         print("Failed to connect to %s : %s" % (descriptor, msg))
         return False
     if self.settings.rtscts:
         conn.set_rtscts(True)
     conn.mav.set_callback(self.master_callback, conn)
     if hasattr(conn.mav, 'set_send_callback'):
         conn.mav.set_send_callback(self.master_send_callback, conn)
     conn.linknum = len(self.mpstate.mav_master)
     conn.linkerror = False
     conn.link_delayed = False
     conn.last_heartbeat = 0
     conn.last_message = 0
     conn.highest_msec = 0
     conn.target_system = self.settings.target_system
     self.apply_link_attributes(conn, optional_attributes)
     self.mpstate.mav_master.append(conn)
     self.status.counters['MasterIn'].append(0)
     self.status.bytecounters['MasterIn'].append(self.status.ByteCounter())
     try:
         mp_util.child_fd_list_add(conn.port.fileno())
     except Exception:
         pass
     return True
Example #12
0
    def handle_add(self, device):
        print(f"Adding breaker {device}")
        try:
            conn = mavutil.mavlink_connection(
                device, input=False, source_system=self.settings.source_system)
            conn.mav.srcComponent = self.settings.source_component
        except Exception:
            print(f"Breaker failed to connect to {device}")
            return
        self.mpstate.mav_outputs.append(conn)
        try:
            mp_util.child_fd_list_add(conn.port.fileno())
        except Exception:
            # TODO: Huh? Why is this ignored?
            pass

        self._devices.add(device)
Example #13
0
 def cmd_output_sysid(self, args):
     '''add new output for a specific MAVLink sysID'''
     sysid = int(args[0])
     device = args[1]
     print("Adding output %s for sysid %u" % (device, sysid))
     try:
         conn = mavutil.mavlink_connection(device, input=False, source_system=self.settings.source_system)
         conn.mav.srcComponent = self.settings.source_component
     except Exception:
         print("Failed to connect to %s" % device)
         return
     try:
         mp_util.child_fd_list_add(conn.port.fileno())
     except Exception:
         pass
     if sysid in self.mpstate.sysid_outputs:
         self.mpstate.sysid_outputs[sysid].close()
     self.mpstate.sysid_outputs[sysid] = conn
Example #14
0
 def cmd_output_sysid(self, args):
     """add new output for a specific MAVLink sysID"""
     sysid = int(args[0])
     device = args[1]
     print("Adding output %s for sysid %u" % (device, sysid))
     try:
         conn = mavutil.mavlink_connection(device, input=False, source_system=self.settings.source_system)
         conn.mav.srcComponent = self.settings.source_component
     except Exception:
         print("Failed to connect to %s" % device)
         return
     try:
         mp_util.child_fd_list_add(conn.port.fileno())
     except Exception:
         pass
     if sysid in self.mpstate.sysid_outputs:
         self.mpstate.sysid_outputs[sysid].close()
     self.mpstate.sysid_outputs[sysid] = conn
Example #15
0
    def handle_sysid(self, sysid, device):
        print(f"Adding breaker {device} for sysid {sysid}")
        try:
            conn = mavutil.mavlink_connection(
                device, input=False, source_system=self.settings.source_system)
            conn.mav.srcComponent = self.settings.source_component
        except Exception:
            print(f"Breaker failed to connect to {device}")
            return
        try:
            mp_util.child_fd_list_add(conn.port.fileno())
        except Exception:
            pass
        if sysid in self.mpstate.sysid_outputs:
            self.mpstate.sysid_outputs[sysid].close()
        self.mpstate.sysid_outputs[sysid] = conn

        self._devices.add(device)
Example #16
0
 def link_add(self, descriptor, force_connected=False):
     '''add new link'''
     try:
         (device, optional_attributes) = self.parse_link_descriptor(descriptor)
         print("Connect %s source_system=%d" % (device, self.settings.source_system))
         try:
             conn = mavutil.mavlink_connection(device, autoreconnect=True,
                                               source_system=self.settings.source_system,
                                               baud=self.settings.baudrate,
                                               force_connected=force_connected)
         except Exception as e:
             # try the same thing but without force-connected for
             # backwards-compatability
             conn = mavutil.mavlink_connection(device, autoreconnect=True,
                                               source_system=self.settings.source_system,
                                               baud=self.settings.baudrate)
         conn.mav.srcComponent = self.settings.source_component
     except Exception as msg:
         print("Failed to connect to %s : %s" % (descriptor, msg))
         return False
     if self.settings.rtscts:
         conn.set_rtscts(True)
     conn.mav.set_callback(self.master_callback, conn)
     if hasattr(conn.mav, 'set_send_callback'):
         conn.mav.set_send_callback(self.master_send_callback, conn)
     conn.linknum = len(self.mpstate.mav_master)
     conn.linkerror = False
     conn.link_delayed = False
     conn.last_heartbeat = 0
     conn.last_message = 0
     conn.highest_msec = 0
     conn.target_system = self.settings.target_system
     self.apply_link_attributes(conn, optional_attributes)
     self.mpstate.mav_master.append(conn)
     self.status.counters['MasterIn'].append(0)
     try:
         mp_util.child_fd_list_add(conn.port.fileno())
     except Exception:
         pass
     return True