def __init__(self, connection, replayMode=False, enableLog=True): super().__init__() self.internalHandlerLookup = {} self.mavStatus = {MavStsKeys.AP_SYS_ID: 1} self.isConnected = False # self.paramList = [] self.paramPanel = None self.txLock = QMutex() # uplink lock self.txResponseCond = QWaitCondition() self.txTimeoutTimer = QTimer() self.finalWPSent = False self.wpLoader = MAVWPLoader() self.onboardWPCount = 0 self.numberOfonboardWP = 0 self.onboardWP = [] self.mavlinkLogFile = None self.lastMessageReceivedTimestamp = 0.0 self.lastMessages = {} # type = (msg, timestamp) self.param = UserData.getInstance().getUserDataEntry( UD_TELEMETRY_KEY, {}) self.messageTimeoutThreshold = UserData.getParameterValue( self.param, UD_TELEMETRY_TIMEOUT_THRESHOLD_KEY, MAVLinkConnection.DEFAULT_MESSAGE_TIMEOUT_THRESHOLD) self.txTimeoutmsec = self.messageTimeoutThreshold * 1000000 # timeout for wait initial heartbeat signal self.initHeartbeatTimeout = UserData.getParameterValue( self.param, UD_TELEMETRY_HEARTBEAT_TIMEOUT_KEY, MAVLinkConnection.DEFAULT_HEARTBEAT_TIMEOUT) self.txMessageQueue = deque() self.running = True self.connection = connection self.replayMode = replayMode self.enableLog = enableLog self.uas = None if replayMode: self.enableLog = False connection.replayCompleteSignal.connect(self.requestExit) self.internalHandlerLookup[ 'PARAM_VALUE'] = self.receiveOnboardParameter self.internalHandlerLookup[ 'MISSION_REQUEST'] = self.receiveMissionRequest self.internalHandlerLookup[ 'MISSION_ACK'] = self.receiveMissionAcknowledge self.internalHandlerLookup[ 'MISSION_COUNT'] = self.receiveMissionItemCount self.internalHandlerLookup['MISSION_ITEM'] = self.receiveMissionItem self.internalHandlerLookup['DATA_STREAM'] = self.receiveDataStream self.internalHandlerLookup['PARAM_SET'] = self.receiveParameterSet self.txTimeoutTimer.timeout.connect(self._timerTimeout) self.txTimeoutTimer.setSingleShot(True)
def __init__(self, parent): super().__init__(parent) self.instrumentOpagueBackground = QBrush( QColor.fromHsvF(0, 0, 0.3, 1.0)) self.instrumentBackground = QBrush(QColor.fromHsvF(0, 0, 0.3, 0.3)) self.instrumentEdgePen = QPen(QColor.fromHsvF(0, 0, 0.65, 0.5)) self.font = QFont() self.lineWidth = 2 self.fineLineWidth = 1 self.navigationTargetBearing = PrimaryFlightDisplay.UNKNOWN_ATTITUDE self.navigationCrosstrackError = 0 self.primaryAltitude = PrimaryFlightDisplay.UNKNOWN_ALTITUDE self.GPSAltitude = PrimaryFlightDisplay.UNKNOWN_ALTITUDE self.verticalVelocity = PrimaryFlightDisplay.UNKNOWN_ALTITUDE self.primarySpeed = PrimaryFlightDisplay.UNKNOWN_SPEED self.groundspeed = PrimaryFlightDisplay.UNKNOWN_SPEED self.roll = 0.0 self.pitch = 0.0 self.yaw = 0.0 self.rollspeed = 0.0 self.pitchspeed = 0.0 self.yawspeed = 0.0 self.latitude = 0.0 self.longitude = 0.0 self.additionalParameters = {} self.param = UserData.getInstance().getUserDataEntry(UD_PFD_KEY, {}) self.isGPSSpeedPrimary = UserData.getParameterValue( self.param, UD_PFD_PRIMARY_SPEED_SOURCE_KEY) == 'GPS' self.isGPSAltitudePrimary = UserData.getParameterValue( self.param, UD_PFD_PRIMARY_ALTITUDE_SOURCE_KEY) == 'GPS' self.setMinimumSize(480, 320) self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.smallTestSize = self.SMALL_TEXT_SIZE self.mediumTextSize = self.MEDIUM_TEXT_SIZE self.largeTextSize = self.LARGE_TEXT_SIZE self.uiTimer = QTimer(self) self.uiTimer.setInterval(40) self.uiTimer.timeout.connect(self.update) self.uas = None
def __init__(self, name, parent=None): super().__init__(name, parent) self.gpsSrc = UserData.getParameterValue( self.param, UD_UAS_CONF_GPS_SRC_KEY, StandardMAVLinkInterface.DEFAULT_GPS_SRC)
def __getLastConnectionParameter(self): pParam = UserData.getInstance().getUserDataEntry(UD_TELEMETRY_KEY, {}) return UserData.getParameterValue(pParam, UD_TELEMETRY_LAST_CONNECTION_KEY, {})
def __init__(self, initParams=None, parent=None): super().__init__(parent) self.portList = {} self.autoBaud = None self.MAVLinkConnectedSignal = parent.MAVLinkConnectedSignal self.MAVLinkConnectedSignal.connect(self.__recordLastConnection) self.__autoBaudStartSignal.connect(self.__autoBaud) self.listSerialPorts() if initParams == None: self.params = self.__getLastConnectionParameter() else: self.params = initParams l = QGridLayout() row = 0 lbl, self.portsDropDown = self._createDropDown( 'Serial Port', self.portList, UserData.getParameterValue(self.params, UD_TELEMETRY_LAST_CONNECTION_PORT_KEY)) l.addWidget(lbl, row, 0, 1, 1, Qt.AlignRight) l.addWidget(self.portsDropDown, row, 1, 1, 3, Qt.AlignLeft) self.refreshButton = QPushButton( '\u21BB') # Unicode for clockwise open circle arrow self.refreshButton.setFixedSize(self.portsDropDown.height(), self.portsDropDown.height()) l.addWidget(self.refreshButton, row, 4, 1, 1, Qt.AlignLeft) self.refreshButton.clicked.connect( lambda: self.listSerialPorts(self.portsDropDown)) row += 1 lbl, self.baudDropDown = self._createDropDown( 'Baud Rate', BAUD_RATES, UserData.getParameterValue( self.params, UD_TELEMETRY_LAST_CONNECTION_BAUD_RATE_KEY)) l.addWidget(lbl, row, 0, 1, 1, Qt.AlignRight) l.addWidget(self.baudDropDown, row, 1, 1, 3, Qt.AlignLeft) row += 1 lbl, self.flowDropDown = self._createDropDown('Flow Control', FLOW_CONTROL) l.addWidget(lbl, row, 0, 1, 1, Qt.AlignRight) l.addWidget(self.flowDropDown, row, 1, 1, 1, Qt.AlignLeft) lbl, self.parityDropDown = self._createDropDown('Parity', PARITY) l.addWidget(lbl, row, 2, 1, 1, Qt.AlignRight) l.addWidget(self.parityDropDown, row, 3, 1, 1, Qt.AlignLeft) row += 1 lbl, self.bitsDropDown = self._createDropDown('Data Bits', DATA_BITS) l.addWidget(lbl, row, 0, 1, 1, Qt.AlignRight) l.addWidget(self.bitsDropDown, row, 1, 1, 1, Qt.AlignLeft) lbl, self.stopDropDown = self._createDropDown('Stop Bits', STOP_BITS) l.addWidget(lbl, row, 2, 1, 1, Qt.AlignRight) l.addWidget(self.stopDropDown, row, 3, 1, 1, Qt.AlignLeft) row += 1 self.autoBaudMessageLabel = QLabel('') l.addWidget(self.autoBaudMessageLabel, row, 0, 1, 3) row += 1 self.setLayout(l)