7 changed files with 0 additions and 1077 deletions
@ -1,227 +0,0 @@ |
|||||||
<ParameterList version="0.1"> |
|
||||||
|
|
||||||
<!-- Parameters in the top level block --> |
|
||||||
<Block name="TopLevel"> |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</Block> |
|
||||||
|
|
||||||
<!--Parameters related to the navigation block --> |
|
||||||
<Block name="Navigation"> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Navigation_Filter/NAV_FILT_INIT/" |
|
||||||
SimulinkParameterName="Value" |
|
||||||
QGCParamID="NAV_FILT_INIT" |
|
||||||
/> |
|
||||||
</Block> |
|
||||||
|
|
||||||
<!--Parameters related to the controller block --> |
|
||||||
<Block name="Controller"> |
|
||||||
<!-- Aileron Control Parameters --> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Attitude_Controller/PID_AIL/kp/" |
|
||||||
SimulinkParameterName="Gain" |
|
||||||
QGCParamID="AIL_KP" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Attitude_Controller/PID_AIL/ki/" |
|
||||||
SimulinkParameterName="Gain" |
|
||||||
QGCParamID="AIL_KI" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Attitude_Controller/PID_AIL/kd/" |
|
||||||
SimulinkParameterName="Gain" |
|
||||||
QGCParamID="AIL_KD" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Attitude_Controller/PID_AIL/Angle_Norm/Max_Min_Angle/" |
|
||||||
SimulinkParameterName="Value" |
|
||||||
QGCParamID="ANG_AIL_MAX" |
|
||||||
/> |
|
||||||
<!-- Elevator Control Parameters --> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Attitude_Controller/PID_ELE/kp/" |
|
||||||
SimulinkParameterName="Gain" |
|
||||||
QGCParamID="ELE_KP" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Attitude_Controller/PID_ELE/ki/" |
|
||||||
SimulinkParameterName="Gain" |
|
||||||
QGCParamID="ELE_KI" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Attitude_Controller/PID_ELE/kd/" |
|
||||||
SimulinkParameterName="Gain" |
|
||||||
QGCParamID="ELE_KD" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Attitude_Controller/PID_ELE/Angle_Norm/Max_Min_Angle/" |
|
||||||
SimulinkParameterName="Value" |
|
||||||
QGCParamID="ANG_ELE_MAX" |
|
||||||
/> |
|
||||||
</Block> |
|
||||||
|
|
||||||
<!-- Paremters for the Pilot Input/Raw RC block --> |
|
||||||
<Block name="ServoInputs"> |
|
||||||
<!-- Settings for Aileron Servo --> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/AileronInput/" |
|
||||||
SimulinkParameterName="Setpoint0" |
|
||||||
QGCParamID="AIL_LEFT_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/AileronInput/" |
|
||||||
SimulinkParameterName="Setpoint1" |
|
||||||
QGCParamID="AIL_CENTER_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/AileronInput/" |
|
||||||
SimulinkParameterName="Setpoint2" |
|
||||||
QGCParamID="AIL_RIGHT_IN" |
|
||||||
/> |
|
||||||
<!-- Settings for Elevator Servo --> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/ElevatorInput/" |
|
||||||
SimulinkParameterName="Setpoint0" |
|
||||||
QGCParamID="ELE_DOWN_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/ElevatorInput/" |
|
||||||
SimulinkParameterName="Setpoint1" |
|
||||||
QGCParamID="ELE_CENTER_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/ElevatorInput/" |
|
||||||
SimulinkParameterName="Setpoint2" |
|
||||||
QGCParamID="ELE_UP_IN" |
|
||||||
/> |
|
||||||
<!-- Settings for Throttle Servo --> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/ThrottleInput/" |
|
||||||
SimulinkParameterName="Setpoint0" |
|
||||||
QGCParamID="THR_SET0_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/ThrottleInput/" |
|
||||||
SimulinkParameterName="Setpoint1" |
|
||||||
QGCParamID="THR_SET1_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/ThrottleInput/" |
|
||||||
SimulinkParameterName="Setpoint2" |
|
||||||
QGCParamID="THR_SET2_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/ThrottleInput/" |
|
||||||
SimulinkParameterName="Setpoint3" |
|
||||||
QGCParamID="THR_SET3_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/ThrottleInput/" |
|
||||||
SimulinkParameterName="Setpoint4" |
|
||||||
QGCParamID="THR_SET4_IN" |
|
||||||
/> |
|
||||||
<!-- Settings for Rudder Servo --> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/RudderInput/" |
|
||||||
SimulinkParameterName="Setpoint0" |
|
||||||
QGCParamID="RUD_LEFT_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/RudderInput/" |
|
||||||
SimulinkParameterName="Setpoint1" |
|
||||||
QGCParamID="RUD_CENTER_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/RudderInput/" |
|
||||||
SimulinkParameterName="Setpoint2" |
|
||||||
QGCParamID="RUD_RIGHT_IN" |
|
||||||
/> |
|
||||||
<!-- Settings for Gyro Mode/Gain Switch --> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/GyroInput/" |
|
||||||
SimulinkParameterName="Setpoint0" |
|
||||||
QGCParamID="GYRO_DEF_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/GyroInput/" |
|
||||||
SimulinkParameterName="Setpoint1" |
|
||||||
QGCParamID="GYRO_TOG_IN" |
|
||||||
/> |
|
||||||
<!-- Settings for Pitch Servo --> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/PitchInput/" |
|
||||||
SimulinkParameterName="Setpoint0" |
|
||||||
QGCParamID="PIT_SET0_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/PitchInput/" |
|
||||||
SimulinkParameterName="Setpoint1" |
|
||||||
QGCParamID="PIT_SET1_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/PitchInput/" |
|
||||||
SimulinkParameterName="Setpoint2" |
|
||||||
QGCParamID="PIT_SET2_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/PitchInput/" |
|
||||||
SimulinkParameterName="Setpoint3" |
|
||||||
QGCParamID="PIT_SET3_IN" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Pilot_Inputs/PitchInput/" |
|
||||||
SimulinkParameterName="Setpoint4" |
|
||||||
QGCParamID="PIT_SET4_IN" |
|
||||||
/> |
|
||||||
|
|
||||||
</Block> |
|
||||||
|
|
||||||
<!-- Parameters for the servo output block --> |
|
||||||
<Block name="ServoOutputs"> |
|
||||||
|
|
||||||
<!-- Settings for Aileron Servo --> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Servo_Outputs/AileronOutput/" |
|
||||||
SimulinkParameterName="Setpoint0" |
|
||||||
QGCParamID="AIL_LEFT_OUT" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Servo_Outputs/AileronOutput/" |
|
||||||
SimulinkParameterName="Setpoint1" |
|
||||||
QGCParamID="AIL_CENTER_OUT" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Servo_Outputs/AileronOutput/" |
|
||||||
SimulinkParameterName="Setpoint2" |
|
||||||
QGCParamID="AIL_RIGHT_OUT" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Servo_Outputs/AileronMix/Controller_Mix/" |
|
||||||
SimulinkParameterName="Value" |
|
||||||
QGCParamID="MIX_AIL" |
|
||||||
/> |
|
||||||
<!-- Settings for Elevator Servo --> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Servo_Outputs/ElevatorOutput/" |
|
||||||
SimulinkParameterName="Setpoint0" |
|
||||||
QGCParamID="ELE_DOWN_OUT" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Servo_Outputs/ElevatorOutput/" |
|
||||||
SimulinkParameterName="Setpoint1" |
|
||||||
QGCParamID="ELE_CENTER_OUT" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Servo_Outputs/ElevatorOutput/" |
|
||||||
SimulinkParameterName="Setpoint2" |
|
||||||
QGCParamID="ELE_UP_OUT" |
|
||||||
/> |
|
||||||
<Parameter |
|
||||||
SimulinkPath="avionics_src/sm_avionics/Servo_Outputs/ElevatorMix/Controller_Mix/" |
|
||||||
SimulinkParameterName="Value" |
|
||||||
QGCParamID="MIX_ELE" |
|
||||||
/> |
|
||||||
</Block> |
|
||||||
</ParameterList> |
|
@ -1,118 +0,0 @@ |
|||||||
/*=====================================================================
|
|
||||||
|
|
||||||
QGroundControl Open Source Ground Control Station |
|
||||||
|
|
||||||
(c) 2009, 2010 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
|
||||||
|
|
||||||
This file is part of the QGROUNDCONTROL project |
|
||||||
|
|
||||||
QGROUNDCONTROL is free software: you can redistribute it and/or modify |
|
||||||
it under the terms of the GNU General Public License as published by |
|
||||||
the Free Software Foundation, either version 3 of the License, or |
|
||||||
(at your option) any later version. |
|
||||||
|
|
||||||
QGROUNDCONTROL is distributed in the hope that it will be useful, |
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
GNU General Public License for more details. |
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
|
||||||
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
======================================================================*/ |
|
||||||
|
|
||||||
/**
|
|
||||||
* @file |
|
||||||
* @brief Implementation of class OpalRT::Parameter |
|
||||||
* @author Bryan Godbolt <godbolt@ualberta.ca> |
|
||||||
*/ |
|
||||||
#include "Parameter.h" |
|
||||||
using namespace OpalRT; |
|
||||||
|
|
||||||
//Parameter::Parameter(char *simulinkPath, char *simulinkName, uint8_t componentID,
|
|
||||||
// QGCParamID paramID, unsigned short opalID)
|
|
||||||
// : simulinkPath(new QString(simulinkPath)),
|
|
||||||
// simulinkName(new QString(simulinkName)),
|
|
||||||
// componentID(componentID),
|
|
||||||
// paramID(new QGCParamID(paramID)),
|
|
||||||
// opalID(opalID)
|
|
||||||
//
|
|
||||||
//{
|
|
||||||
//}
|
|
||||||
Parameter::Parameter(QString simulinkPath, QString simulinkName, uint8_t componentID, |
|
||||||
QGCParamID paramID, unsigned short opalID) |
|
||||||
: simulinkPath(new QString(simulinkPath)), |
|
||||||
simulinkName(new QString(simulinkName)), |
|
||||||
componentID(componentID), |
|
||||||
paramID(new QGCParamID(paramID)), |
|
||||||
opalID(opalID) |
|
||||||
|
|
||||||
{ |
|
||||||
} |
|
||||||
Parameter::Parameter(const Parameter &other) |
|
||||||
: componentID(other.componentID), |
|
||||||
opalID(other.opalID) |
|
||||||
{ |
|
||||||
simulinkPath = new QString(*other.simulinkPath); |
|
||||||
simulinkName = new QString(*other.simulinkName); |
|
||||||
paramID = new QGCParamID(*other.paramID); |
|
||||||
} |
|
||||||
|
|
||||||
Parameter::~Parameter() |
|
||||||
{ |
|
||||||
delete simulinkPath; |
|
||||||
delete simulinkName; |
|
||||||
delete paramID; |
|
||||||
} |
|
||||||
|
|
||||||
bool Parameter::operator ==(const Parameter& other) const |
|
||||||
{ |
|
||||||
return |
|
||||||
(*simulinkPath) == *(other.simulinkPath) |
|
||||||
&& *simulinkName == *(other.simulinkName) |
|
||||||
&& componentID == other.componentID |
|
||||||
&& *paramID == *(other.paramID) |
|
||||||
&& opalID == other.opalID; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
float Parameter::getValue() |
|
||||||
{ |
|
||||||
unsigned short allocatedParams = 1; |
|
||||||
unsigned short numParams; |
|
||||||
unsigned short numValues = 1; |
|
||||||
unsigned short returnedNumValues; |
|
||||||
double value; |
|
||||||
|
|
||||||
int returnVal = OpalGetParameters(allocatedParams, &numParams, &opalID, |
|
||||||
numValues, &returnedNumValues, &value); |
|
||||||
|
|
||||||
if (returnVal != EOK) { |
|
||||||
OpalRT::OpalErrorMsg::displayLastErrorMsg(); |
|
||||||
return FLT_MAX; |
|
||||||
} |
|
||||||
|
|
||||||
return static_cast<float>(value); |
|
||||||
} |
|
||||||
|
|
||||||
void Parameter::setValue(float val) |
|
||||||
{ |
|
||||||
unsigned short allocatedParams = 1; |
|
||||||
unsigned short numParams; |
|
||||||
unsigned short numValues = 1; |
|
||||||
unsigned short returnedNumValues; |
|
||||||
double value = static_cast<double>(val); |
|
||||||
|
|
||||||
int returnVal = OpalSetParameters(allocatedParams, &numParams, &opalID, |
|
||||||
numValues, &returnedNumValues, &value); |
|
||||||
if (returnVal != EOK) { |
|
||||||
//qDebug() << __FILE__ << ":" << __LINE__ << ": Error numer: " << QString::number(returnVal);
|
|
||||||
OpalErrorMsg::displayLastErrorMsg(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
Parameter::operator QString() const |
|
||||||
{ |
|
||||||
return *simulinkPath + *simulinkName + " " + QString::number(componentID) |
|
||||||
+ " " + *paramID + " " + QString::number(opalID); |
|
||||||
} |
|
@ -1,92 +0,0 @@ |
|||||||
/*=====================================================================
|
|
||||||
|
|
||||||
QGroundControl Open Source Ground Control Station |
|
||||||
|
|
||||||
(c) 2009, 2010 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
|
||||||
|
|
||||||
This file is part of the QGROUNDCONTROL project |
|
||||||
|
|
||||||
QGROUNDCONTROL is free software: you can redistribute it and/or modify |
|
||||||
it under the terms of the GNU General Public License as published by |
|
||||||
the Free Software Foundation, either version 3 of the License, or |
|
||||||
(at your option) any later version. |
|
||||||
|
|
||||||
QGROUNDCONTROL is distributed in the hope that it will be useful, |
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
GNU General Public License for more details. |
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
|
||||||
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
======================================================================*/ |
|
||||||
|
|
||||||
/**
|
|
||||||
* @file |
|
||||||
* @brief Parameter Object used to intefrace with an OpalRT Simulink Parameter |
|
||||||
\see OpalLink |
|
||||||
\see OpalRT::ParameterList |
|
||||||
* @author Bryan Godbolt <godbolt@ualberta.ca> |
|
||||||
*/ |
|
||||||
|
|
||||||
#ifndef PARAMETER_H |
|
||||||
#define PARAMETER_H |
|
||||||
|
|
||||||
#include <QString> |
|
||||||
#include <QDebug> |
|
||||||
|
|
||||||
#include "mavlink_types.h" |
|
||||||
#include "QGCParamID.h" |
|
||||||
#include "OpalApi.h" |
|
||||||
#include "OpalRT.h" |
|
||||||
#include <cfloat> |
|
||||||
|
|
||||||
namespace OpalRT |
|
||||||
{ |
|
||||||
class Parameter |
|
||||||
{ |
|
||||||
public: |
|
||||||
// Parameter(char *simulinkPath = "",
|
|
||||||
// char *simulinkName = "",
|
|
||||||
// uint8_t componentID = 0,
|
|
||||||
// QGCParamID paramID = QGCParamID(),
|
|
||||||
// unsigned short opalID = 0);
|
|
||||||
Parameter(QString simulinkPath = QString(), |
|
||||||
QString simulinkName = QString(), |
|
||||||
uint8_t componentID = 0, |
|
||||||
QGCParamID paramID = QGCParamID(), |
|
||||||
unsigned short opalID = 0); |
|
||||||
Parameter(const Parameter& other); |
|
||||||
~Parameter(); |
|
||||||
|
|
||||||
const QGCParamID& getParamID() const { |
|
||||||
return *paramID; |
|
||||||
} |
|
||||||
void setOpalID(unsigned short opalID) { |
|
||||||
this->opalID = opalID; |
|
||||||
} |
|
||||||
const QString& getSimulinkPath() const { |
|
||||||
return *simulinkPath; |
|
||||||
} |
|
||||||
const QString& getSimulinkName() const { |
|
||||||
return *simulinkName; |
|
||||||
} |
|
||||||
uint8_t getComponentID() const { |
|
||||||
return componentID; |
|
||||||
} |
|
||||||
float getValue(); |
|
||||||
void setValue(float value); |
|
||||||
|
|
||||||
bool operator==(const Parameter& other) const; |
|
||||||
operator QString() const; |
|
||||||
|
|
||||||
protected: |
|
||||||
QString *simulinkPath; |
|
||||||
QString *simulinkName; |
|
||||||
uint8_t componentID; |
|
||||||
QGCParamID *paramID; |
|
||||||
unsigned short opalID; |
|
||||||
}; |
|
||||||
} |
|
||||||
|
|
||||||
#endif // PARAMETER_H
|
|
@ -1,332 +0,0 @@ |
|||||||
/*=====================================================================
|
|
||||||
|
|
||||||
QGroundControl Open Source Ground Control Station |
|
||||||
|
|
||||||
(c) 2009, 2010 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
|
||||||
|
|
||||||
This file is part of the QGROUNDCONTROL project |
|
||||||
|
|
||||||
QGROUNDCONTROL is free software: you can redistribute it and/or modify |
|
||||||
it under the terms of the GNU General Public License as published by |
|
||||||
the Free Software Foundation, either version 3 of the License, or |
|
||||||
(at your option) any later version. |
|
||||||
|
|
||||||
QGROUNDCONTROL is distributed in the hope that it will be useful, |
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
GNU General Public License for more details. |
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
|
||||||
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
======================================================================*/ |
|
||||||
|
|
||||||
/**
|
|
||||||
* @file |
|
||||||
* @brief Implementation of class OpalRT::ParameterList |
|
||||||
* @author Bryan Godbolt <godbolt@ualberta.ca> |
|
||||||
*/ |
|
||||||
|
|
||||||
#include "ParameterList.h" |
|
||||||
using namespace OpalRT; |
|
||||||
|
|
||||||
ParameterList::ParameterList() |
|
||||||
:params(new QMap<int, QMap<QGCParamID, Parameter> >), |
|
||||||
paramList(new QList<QList<Parameter*> >()), |
|
||||||
reqdServoParams(new QStringList()) |
|
||||||
{ |
|
||||||
|
|
||||||
QDir settingsDir = QDir(qApp->applicationDirPath()); |
|
||||||
if (settingsDir.dirName() == "bin") |
|
||||||
settingsDir.cdUp(); |
|
||||||
settingsDir.cd("data"); |
|
||||||
|
|
||||||
// Enforce a list of parameters which are necessary for flight
|
|
||||||
reqdServoParams->append("AIL_RIGHT_IN"); |
|
||||||
reqdServoParams->append("AIL_CENTER_IN"); |
|
||||||
reqdServoParams->append("AIL_LEFT_IN"); |
|
||||||
reqdServoParams->append("AIL_RIGHT_OUT"); |
|
||||||
reqdServoParams->append("AIL_CENTER_OUT"); |
|
||||||
reqdServoParams->append("AIL_LEFT_OUT"); |
|
||||||
reqdServoParams->append("ELE_DOWN_IN"); |
|
||||||
reqdServoParams->append("ELE_CENTER_IN"); |
|
||||||
reqdServoParams->append("ELE_UP_IN"); |
|
||||||
reqdServoParams->append("ELE_DOWN_OUT"); |
|
||||||
reqdServoParams->append("ELE_CENTER_OUT"); |
|
||||||
reqdServoParams->append("ELE_UP_OUT"); |
|
||||||
reqdServoParams->append("RUD_LEFT_IN"); |
|
||||||
reqdServoParams->append("RUD_CENTER_IN"); |
|
||||||
reqdServoParams->append("RUD_RIGHT_IN"); |
|
||||||
|
|
||||||
QString filename(settingsDir.path() + "/ParameterList.xml"); |
|
||||||
if ((QFile::exists(filename)) && open(filename)) { |
|
||||||
|
|
||||||
/* Get a list of the available parameters from opal-rt */ |
|
||||||
QMap<QString, unsigned short> *opalParams = new QMap<QString, unsigned short>; |
|
||||||
getParameterList(opalParams); |
|
||||||
|
|
||||||
/* Iterate over the parameters we want to use in qgc and populate their ids */ |
|
||||||
QMap<int, QMap<QGCParamID, Parameter> >::iterator componentIter; |
|
||||||
QMap<QGCParamID, Parameter>::iterator paramIter; |
|
||||||
QString s; |
|
||||||
for (componentIter = params->begin(); componentIter != params->end(); ++componentIter) { |
|
||||||
paramList->append(QList<Parameter*>()); |
|
||||||
for (paramIter = (*componentIter).begin(); paramIter != (*componentIter).end(); ++paramIter) { |
|
||||||
paramList->last().append(paramIter.operator ->()); |
|
||||||
s = (*paramIter).getSimulinkPath() + (*paramIter).getSimulinkName(); |
|
||||||
if (opalParams->contains(s)) { |
|
||||||
(*paramIter).setOpalID(opalParams->value(s)); |
|
||||||
// qDebug() << __FILE__ << " Line:" << __LINE__ << ": Successfully added " << s;
|
|
||||||
} else { |
|
||||||
qDebug() << __FILE__ << " Line:" << __LINE__ << ": " << s << " was not found in param list"; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
delete opalParams; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
ParameterList::~ParameterList() |
|
||||||
{ |
|
||||||
delete params; |
|
||||||
delete paramList; |
|
||||||
} |
|
||||||
|
|
||||||
/**
|
|
||||||
Get the list of parameters in the simulink model. This function does not require |
|
||||||
any prior knowlege of the parameters. It works by first calling OpalGetParameterList to |
|
||||||
get the number of paramters, then allocates the required amount of memory and then gets |
|
||||||
the paramter list using a second call to OpalGetParameterList. |
|
||||||
*/ |
|
||||||
void ParameterList::getParameterList(QMap<QString, unsigned short> *opalParams) |
|
||||||
{ |
|
||||||
/* inputs */ |
|
||||||
unsigned short allocatedParams=0; |
|
||||||
unsigned short allocatedPathLen=0; |
|
||||||
unsigned short allocatedNameLen=0; |
|
||||||
unsigned short allocatedVarLen=0; |
|
||||||
|
|
||||||
/* outputs */ |
|
||||||
unsigned short numParams; |
|
||||||
unsigned short *idParam=NULL; |
|
||||||
unsigned short maxPathLen; |
|
||||||
char **paths=NULL; |
|
||||||
unsigned short maxNameLen; |
|
||||||
char **names=NULL; |
|
||||||
unsigned short maxVarLen; |
|
||||||
char **var=NULL; |
|
||||||
|
|
||||||
int returnValue; |
|
||||||
|
|
||||||
returnValue = OpalGetParameterList(allocatedParams, &numParams, idParam, |
|
||||||
allocatedPathLen, &maxPathLen, paths, |
|
||||||
allocatedNameLen, &maxNameLen, names, |
|
||||||
allocatedVarLen, &maxVarLen, var); |
|
||||||
if (returnValue!=E2BIG) { |
|
||||||
// OpalRT::setLastErrorMsg();
|
|
||||||
OpalRT::OpalErrorMsg::displayLastErrorMsg(); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
// allocate memory for parameter list
|
|
||||||
|
|
||||||
idParam = new unsigned short[numParams]; |
|
||||||
allocatedParams = numParams; |
|
||||||
|
|
||||||
paths = new char*[numParams]; |
|
||||||
for (int i=0; i<numParams; i++) |
|
||||||
paths[i]=new char[maxPathLen]; |
|
||||||
allocatedPathLen = maxPathLen; |
|
||||||
|
|
||||||
names = new char*[numParams]; |
|
||||||
for (int i=0; i<numParams; i++) |
|
||||||
names[i] = new char[maxNameLen]; |
|
||||||
allocatedNameLen = maxNameLen; |
|
||||||
|
|
||||||
var = new char*[numParams]; |
|
||||||
for (int i=0; i<numParams; i++) |
|
||||||
var[i] = new char[maxVarLen]; |
|
||||||
allocatedVarLen = maxVarLen; |
|
||||||
|
|
||||||
returnValue = OpalGetParameterList(allocatedParams, &numParams, idParam, |
|
||||||
allocatedPathLen, &maxPathLen, paths, |
|
||||||
allocatedNameLen, &maxNameLen, names, |
|
||||||
allocatedVarLen, &maxVarLen, var); |
|
||||||
|
|
||||||
if (returnValue != EOK) { |
|
||||||
// OpalRT::setLastErrorMsg();
|
|
||||||
OpalRT::OpalErrorMsg::displayLastErrorMsg(); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
QString path, name; |
|
||||||
for (int i=0; i<numParams; ++i) { |
|
||||||
path.clear(); |
|
||||||
path.append(paths[i]); |
|
||||||
name.clear(); |
|
||||||
name.append(names[i]); |
|
||||||
if (path[path.size()-1] == '/') |
|
||||||
opalParams->insert(path+name, idParam[i]); |
|
||||||
else |
|
||||||
opalParams->insert(path+'/'+name, idParam[i]); |
|
||||||
} |
|
||||||
// Dump out the list of parameters
|
|
||||||
// QMap<QString, unsigned short>::const_iterator paramPrint;
|
|
||||||
// for (paramPrint = opalParams->begin(); paramPrint != opalParams->end(); ++paramPrint)
|
|
||||||
// qDebug() << paramPrint.key();
|
|
||||||
|
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
int ParameterList::indexOf(const Parameter &p) |
|
||||||
{ |
|
||||||
// incase p is a copy of the actual parameter we want (i.e., addresses differ)
|
|
||||||
Parameter *pPtr = &((*params)[p.getComponentID()][p.getParamID()]); |
|
||||||
|
|
||||||
QList<QList<Parameter*> >::const_iterator iter; |
|
||||||
int index = -1; |
|
||||||
for (iter = paramList->begin(); iter != paramList->end(); ++iter) { |
|
||||||
if ((index = (*iter).indexOf(pPtr)) != -1) |
|
||||||
return index; |
|
||||||
} |
|
||||||
return index; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
ParameterList::const_iterator::const_iterator(QList<Parameter> paramList) |
|
||||||
{ |
|
||||||
this->paramList = QList<Parameter>(paramList); |
|
||||||
index = 0; |
|
||||||
} |
|
||||||
|
|
||||||
ParameterList::const_iterator::const_iterator(const const_iterator &other) |
|
||||||
{ |
|
||||||
paramList = QList<Parameter>(other.paramList); |
|
||||||
index = other.index; |
|
||||||
} |
|
||||||
|
|
||||||
ParameterList::const_iterator ParameterList::begin() const |
|
||||||
{ |
|
||||||
QList<QMap<QGCParamID, Parameter> > compList = params->values(); |
|
||||||
QList<Parameter> paramList; |
|
||||||
QList<QMap<QGCParamID, Parameter> >::const_iterator compIter; |
|
||||||
for (compIter = compList.begin(); compIter != compList.end(); ++compIter) |
|
||||||
paramList.append((*compIter).values()); |
|
||||||
return const_iterator(paramList); |
|
||||||
} |
|
||||||
|
|
||||||
ParameterList::const_iterator ParameterList::end() const |
|
||||||
{ |
|
||||||
const_iterator iter = begin(); |
|
||||||
return iter+=iter.paramList.size(); |
|
||||||
} |
|
||||||
|
|
||||||
int ParameterList::count() |
|
||||||
{ |
|
||||||
int count = 0; |
|
||||||
QList<QList<Parameter*> >::const_iterator iter; |
|
||||||
for (iter = paramList->begin(); iter != paramList->end(); ++iter) |
|
||||||
count += (*iter).count(); |
|
||||||
return count; |
|
||||||
} |
|
||||||
|
|
||||||
/* Functions related to reading the xml config file */ |
|
||||||
|
|
||||||
bool ParameterList::open(QString filename) |
|
||||||
{ |
|
||||||
QFile paramFile(filename); |
|
||||||
if (!paramFile.exists()) { |
|
||||||
/// \todo open dialog box (maybe: that could also go in comm config window)
|
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
if (!paramFile.open(QIODevice::ReadOnly)) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
read(¶mFile); |
|
||||||
|
|
||||||
paramFile.close(); |
|
||||||
|
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
bool ParameterList::read(QIODevice *device) |
|
||||||
{ |
|
||||||
QDomDocument *paramConfig = new QDomDocument(); |
|
||||||
|
|
||||||
QString errorStr; |
|
||||||
int errorLine; |
|
||||||
int errorColumn; |
|
||||||
|
|
||||||
if (!paramConfig->setContent(device, true, &errorStr, &errorLine, |
|
||||||
&errorColumn)) { |
|
||||||
qDebug() << "Error reading XML Parameter File on line: " << errorLine << errorStr; |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
QDomElement root = paramConfig->documentElement(); |
|
||||||
if (root.tagName() != "ParameterList") { |
|
||||||
qDebug() << __FILE__ << __LINE__ << "This is not a parameter list xml file"; |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
QDomElement child = root.firstChildElement("Block"); |
|
||||||
while (!child.isNull()) { |
|
||||||
parseBlock(child); |
|
||||||
child = child.nextSiblingElement("Block"); |
|
||||||
} |
|
||||||
|
|
||||||
if (!reqdServoParams->empty()) { |
|
||||||
qDebug() << __FILE__ << __LINE__ << "Missing the following required servo parameters"; |
|
||||||
foreach(QString s, *reqdServoParams) { |
|
||||||
qDebug() << s; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
delete paramConfig; |
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
void ParameterList::parseBlock(const QDomElement &block) |
|
||||||
{ |
|
||||||
|
|
||||||
QDomNodeList paramList; |
|
||||||
QDomElement e; |
|
||||||
Parameter *p; |
|
||||||
SubsystemIds id; |
|
||||||
if (block.attribute("name") == "Navigation") |
|
||||||
id = OpalRT::NAV; |
|
||||||
else if (block.attribute("name") == "Controller") |
|
||||||
id = OpalRT::CONTROLLER; |
|
||||||
else if (block.attribute("name") == "ServoOutputs") |
|
||||||
id = OpalRT::SERVO_OUTPUTS; |
|
||||||
else if (block.attribute("name") == "ServoInputs") |
|
||||||
id = OpalRT::SERVO_INPUTS; |
|
||||||
|
|
||||||
paramList = block.elementsByTagName("Parameter"); |
|
||||||
for (int i=0; i < paramList.size(); ++i) { |
|
||||||
e = paramList.item(i).toElement(); |
|
||||||
if (e.hasAttribute("SimulinkPath") && |
|
||||||
e.hasAttribute("SimulinkParameterName") && |
|
||||||
e.hasAttribute("QGCParamID")) { |
|
||||||
|
|
||||||
p = new Parameter(e.attribute("SimulinkPath"), |
|
||||||
e.attribute("SimulinkParameterName"), |
|
||||||
static_cast<uint8_t>(id), |
|
||||||
QGCParamID(e.attribute("QGCParamID"))); |
|
||||||
(*params)[id].insert(p->getParamID(), *p); |
|
||||||
if (reqdServoParams->contains((QString)p->getParamID())) |
|
||||||
reqdServoParams->removeAt(reqdServoParams->indexOf((QString)p->getParamID())); |
|
||||||
|
|
||||||
delete p; |
|
||||||
|
|
||||||
|
|
||||||
} else { |
|
||||||
qDebug() << __FILE__ << ":" << __LINE__ << ": error in xml doc in block" << block.attribute("name"); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} |
|
@ -1,175 +0,0 @@ |
|||||||
/*=====================================================================
|
|
||||||
|
|
||||||
QGroundControl Open Source Ground Control Station |
|
||||||
|
|
||||||
(c) 2009, 2010 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
|
||||||
|
|
||||||
This file is part of the QGROUNDCONTROL project |
|
||||||
|
|
||||||
QGROUNDCONTROL is free software: you can redistribute it and/or modify |
|
||||||
it under the terms of the GNU General Public License as published by |
|
||||||
the Free Software Foundation, either version 3 of the License, or |
|
||||||
(at your option) any later version. |
|
||||||
|
|
||||||
QGROUNDCONTROL is distributed in the hope that it will be useful, |
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
GNU General Public License for more details. |
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
|
||||||
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
======================================================================*/ |
|
||||||
|
|
||||||
#ifndef PARAMETERLIST_H |
|
||||||
#define PARAMETERLIST_H |
|
||||||
|
|
||||||
#include <QMap> |
|
||||||
#include <QVector> |
|
||||||
#include <QIODevice> |
|
||||||
#include <QFile> |
|
||||||
#include <QDir> |
|
||||||
#include <QApplication> |
|
||||||
#include <QtXml> |
|
||||||
#include <QStringList> |
|
||||||
|
|
||||||
#include "mavlink_types.h" |
|
||||||
#include "QGCParamID.h" |
|
||||||
#include "Parameter.h" |
|
||||||
#include "OpalRT.h" |
|
||||||
|
|
||||||
namespace OpalRT |
|
||||||
{ |
|
||||||
class ParameterList |
|
||||||
{ |
|
||||||
public: |
|
||||||
|
|
||||||
class const_iterator |
|
||||||
{ |
|
||||||
friend class ParameterList; |
|
||||||
|
|
||||||
public: |
|
||||||
inline const_iterator() {} |
|
||||||
const_iterator(const const_iterator& other); |
|
||||||
|
|
||||||
const_iterator& operator+=(int i) { |
|
||||||
index += i; |
|
||||||
return *this; |
|
||||||
} |
|
||||||
bool operator<(const const_iterator& other) const { |
|
||||||
return (this->paramList == other.paramList) |
|
||||||
&&(this->index<other.index); |
|
||||||
} |
|
||||||
bool operator==(const const_iterator& other) const { |
|
||||||
return (this->paramList == other.paramList) |
|
||||||
&&(this->index==other.index); |
|
||||||
} |
|
||||||
bool operator!=(const const_iterator& other) const { |
|
||||||
return !((*this) == other); |
|
||||||
} |
|
||||||
const Parameter& operator*() const { |
|
||||||
return paramList[index]; |
|
||||||
} |
|
||||||
const Parameter* operator->() const { |
|
||||||
return ¶mList[index]; |
|
||||||
} |
|
||||||
|
|
||||||
const_iterator& operator++() { |
|
||||||
++index; |
|
||||||
return *this; |
|
||||||
} |
|
||||||
private: |
|
||||||
const_iterator(QList<Parameter>); |
|
||||||
QList<Parameter> paramList; |
|
||||||
int index; |
|
||||||
}; |
|
||||||
|
|
||||||
|
|
||||||
ParameterList(); |
|
||||||
~ParameterList(); |
|
||||||
|
|
||||||
/** Count the number of parameters in the list.
|
|
||||||
\return Total number of parameters |
|
||||||
*/ |
|
||||||
int count(); |
|
||||||
|
|
||||||
/** Find p in the list and return its index.
|
|
||||||
\note In order to use this index to look up p, the component is also needed. |
|
||||||
\return the index of p or -1 if p is not found |
|
||||||
\example |
|
||||||
\code |
|
||||||
int compid = OpalRT::CONTROLLER_ID; |
|
||||||
Parameter p("simulinkpath", "simulinkparamname", compid, QGCParamID("PID_GAIN")); |
|
||||||
ParameterList pList; |
|
||||||
if ((int index=pList.indexOf(p)) != -1) |
|
||||||
qDebug() << "PID_GAIN is at index " << index; |
|
||||||
\endcode |
|
||||||
*/ |
|
||||||
int indexOf(const Parameter& p); |
|
||||||
bool contains(int compid, QGCParamID paramid) const { |
|
||||||
return (*params)[compid].contains(paramid); |
|
||||||
} |
|
||||||
|
|
||||||
/// Get a parameter from the list
|
|
||||||
const Parameter getParameter(int compid, QGCParamID paramid) const { |
|
||||||
return (*params)[compid][paramid]; |
|
||||||
} |
|
||||||
Parameter& getParameter(int compid, QGCParamID paramid) { |
|
||||||
return (*params)[compid][paramid]; |
|
||||||
} |
|
||||||
const Parameter getParameter(int compid, int index) const { |
|
||||||
return *((*paramList)[compid][index]); |
|
||||||
} |
|
||||||
|
|
||||||
/** Convenient syntax for calling OpalRT::Parameter::getParameter() */ |
|
||||||
Parameter& operator()(int compid, QGCParamID paramid) { |
|
||||||
return getParameter(compid, paramid); |
|
||||||
} |
|
||||||
Parameter& operator()(uint8_t compid, QGCParamID paramid) { |
|
||||||
return getParameter(static_cast<int>(compid), paramid); |
|
||||||
} |
|
||||||
|
|
||||||
const_iterator begin() const; |
|
||||||
const_iterator end() const; |
|
||||||
|
|
||||||
protected: |
|
||||||
/** Store the parameters mapped by componentid, and paramid.
|
|
||||||
\code |
|
||||||
// Look up a parameter
|
|
||||||
int compid = 1; |
|
||||||
QGCParamID paramid("PID_GAIN"); |
|
||||||
Parameter p = params[compid][paramid]; |
|
||||||
\endcode |
|
||||||
*/ |
|
||||||
QMap<int, QMap<QGCParamID, Parameter> > *params; |
|
||||||
/**
|
|
||||||
Store pointers to the parameters to allow fast lookup by index. |
|
||||||
This variable may be changed to const pointers to ensure all changes |
|
||||||
are made through the map container. |
|
||||||
*/ |
|
||||||
QList<QList<Parameter*> > *paramList; |
|
||||||
/**
|
|
||||||
List of parameters which are necessary to control the servos. |
|
||||||
*/ |
|
||||||
QStringList *reqdServoParams; |
|
||||||
/**
|
|
||||||
Get the list of available parameters from Opal-RT. |
|
||||||
\param[out] opalParams Map of parameter paths/names to ids which are valid in Opal-RT |
|
||||||
*/ |
|
||||||
void getParameterList(QMap<QString, unsigned short>* opalParams); |
|
||||||
|
|
||||||
/**
|
|
||||||
Open a file for reading in the xml config data |
|
||||||
*/ |
|
||||||
bool open(QString filename=QString()); |
|
||||||
/**
|
|
||||||
Attempt to read XML configuration data from device |
|
||||||
\param[in] the device to read the xml data from |
|
||||||
\return true if the configuration was read successfully, false otherwise |
|
||||||
*/ |
|
||||||
bool read(QIODevice *device); |
|
||||||
|
|
||||||
void parseBlock(const QDomElement &block); |
|
||||||
}; |
|
||||||
} |
|
||||||
#endif // PARAMETERLIST_H
|
|
@ -1,51 +0,0 @@ |
|||||||
/*=====================================================================
|
|
||||||
|
|
||||||
QGroundControl Open Source Ground Control Station |
|
||||||
|
|
||||||
(c) 2009, 2010 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
|
||||||
|
|
||||||
This file is part of the QGROUNDCONTROL project |
|
||||||
|
|
||||||
QGROUNDCONTROL is free software: you can redistribute it and/or modify |
|
||||||
it under the terms of the GNU General Public License as published by |
|
||||||
the Free Software Foundation, either version 3 of the License, or |
|
||||||
(at your option) any later version. |
|
||||||
|
|
||||||
QGROUNDCONTROL is distributed in the hope that it will be useful, |
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
GNU General Public License for more details. |
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
|
||||||
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
======================================================================*/ |
|
||||||
|
|
||||||
/**
|
|
||||||
* @file |
|
||||||
* @brief Implementation of class OpalRT::QGCParamID |
|
||||||
* @author Bryan Godbolt <godbolt@ualberta.ca> |
|
||||||
*/ |
|
||||||
|
|
||||||
#include "QGCParamID.h" |
|
||||||
using namespace OpalRT; |
|
||||||
|
|
||||||
QGCParamID::QGCParamID(const char paramid[]):data(paramid) |
|
||||||
{ |
|
||||||
} |
|
||||||
|
|
||||||
QGCParamID::QGCParamID(const QString s):data(s) |
|
||||||
{ |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
QGCParamID::QGCParamID(const QGCParamID &other):data(other.data) |
|
||||||
{ |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
//
|
|
||||||
//QDataStream& operator<<(QDataStream& stream, const QGCParamID& paramid)
|
|
||||||
//{
|
|
||||||
// return stream << paramid.data;
|
|
||||||
//}
|
|
@ -1,82 +0,0 @@ |
|||||||
/*=====================================================================
|
|
||||||
|
|
||||||
QGroundControl Open Source Ground Control Station |
|
||||||
|
|
||||||
(c) 2009 - 2011 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
|
||||||
|
|
||||||
This file is part of the QGROUNDCONTROL project |
|
||||||
|
|
||||||
QGROUNDCONTROL is free software: you can redistribute it and/or modify |
|
||||||
it under the terms of the GNU General Public License as published by |
|
||||||
the Free Software Foundation, either version 3 of the License, or |
|
||||||
(at your option) any later version. |
|
||||||
|
|
||||||
QGROUNDCONTROL is distributed in the hope that it will be useful, |
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
GNU General Public License for more details. |
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
|
||||||
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
======================================================================*/ |
|
||||||
|
|
||||||
/**
|
|
||||||
* @file |
|
||||||
* @brief Stores the paramid used for mavlink |
|
||||||
* @author Bryan Godbolt <godbolt@ualberta.ca> |
|
||||||
*/ |
|
||||||
|
|
||||||
#ifndef QGCPARAMID_H |
|
||||||
#define QGCPARAMID_H |
|
||||||
|
|
||||||
#include <QString> |
|
||||||
|
|
||||||
#include "mavlink_types.h" |
|
||||||
|
|
||||||
//namespace OpalRT
|
|
||||||
//{
|
|
||||||
// class QGCParamID;
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//QDataStream& operator<<(QDataStream&, const OpalRT::QGCParamID&);
|
|
||||||
|
|
||||||
namespace OpalRT |
|
||||||
{ |
|
||||||
/** Stores a param_id for the mavlink parameter packets. This class adds the convenience
|
|
||||||
of storing the id as a string (e.g., easy comparison). |
|
||||||
|
|
||||||
\todo Fix: warning: deprecated conversion from string constant to 'char*' |
|
||||||
*/ |
|
||||||
class QGCParamID |
|
||||||
{ |
|
||||||
// friend QDataStream& operator<<(QDataStream& stream, const QGCParamID& paramid);
|
|
||||||
public: |
|
||||||
|
|
||||||
QGCParamID(const char[]); |
|
||||||
QGCParamID(const QString); |
|
||||||
QGCParamID() {} |
|
||||||
QGCParamID(const QGCParamID& other); |
|
||||||
|
|
||||||
bool operator<(const QGCParamID& other) const { |
|
||||||
return data<other.data; |
|
||||||
} |
|
||||||
bool operator==(const QGCParamID& other) const { |
|
||||||
return data == other.data; |
|
||||||
} |
|
||||||
operator QString() const { |
|
||||||
return data; |
|
||||||
} |
|
||||||
|
|
||||||
const QString getParamString() const { |
|
||||||
return static_cast<const QString>(data); |
|
||||||
} |
|
||||||
int8_t* toInt8_t() const { |
|
||||||
return (int8_t*)data.toLatin1().data(); |
|
||||||
} |
|
||||||
|
|
||||||
protected: |
|
||||||
QString data; |
|
||||||
}; |
|
||||||
} |
|
||||||
#endif // QGCPARAMID_H
|
|
Loading…
Reference in new issue