mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-20 10:54:14 +01:00
OP-1058 Add xxxGet and xxxSet functions to handle multielement fields as struct
for example: EKFStateVariancePSet(EKFStateVariancePData *NewP); EKFStateVariancePGet(EKFStateVariancePData *NewP); Also in this case array accessors are renamed as xxxArrayGet/Set: EKFStateVariancePArraySet(float *NewP); EKFStateVariancePArrayGet(float *NewP); Nothing changes for anonymous items as default functions continues to deal with arrays +review OPReview-552
This commit is contained in:
parent
e91bc28667
commit
0db9a9bf8d
@ -204,13 +204,13 @@ static int32_t check_stabilization_settings(int index, bool multirotor)
|
||||
// Get the different axis modes for this switch position
|
||||
switch (index) {
|
||||
case 1:
|
||||
ManualControlSettingsStabilization1SettingsGet(modes);
|
||||
ManualControlSettingsStabilization1SettingsArrayGet(modes);
|
||||
break;
|
||||
case 2:
|
||||
ManualControlSettingsStabilization2SettingsGet(modes);
|
||||
ManualControlSettingsStabilization2SettingsArrayGet(modes);
|
||||
break;
|
||||
case 3:
|
||||
ManualControlSettingsStabilization3SettingsGet(modes);
|
||||
ManualControlSettingsStabilization3SettingsArrayGet(modes);
|
||||
break;
|
||||
default:
|
||||
return SYSTEMALARMS_ALARM_ERROR;
|
||||
|
@ -109,7 +109,7 @@ int32_t AirspeedInitialize()
|
||||
#endif
|
||||
|
||||
uint8_t adcRouting[HWSETTINGS_ADCROUTING_NUMELEM];
|
||||
HwSettingsADCRoutingGet(adcRouting);
|
||||
HwSettingsADCRoutingArrayGet(adcRouting);
|
||||
|
||||
// Determine if the barometric airspeed sensor is routed to an ADC pin
|
||||
for (int i = 0; i < HWSETTINGS_ADCROUTING_NUMELEM; i++) {
|
||||
|
@ -647,7 +647,7 @@ static void settingsUpdatedCb(__attribute__((unused)) UAVObjEvent *objEv)
|
||||
attitudeSettings.AccelBias.Y = trim_accels[1] / trim_samples;
|
||||
// Z should average -grav
|
||||
attitudeSettings.AccelBias.Z = trim_accels[2] / trim_samples + GRAV / ACCEL_SCALE;
|
||||
attitudeSettings.TrimFlight = ATTITUDESETTINGS_TRIMFLIGHT_NORMAL;
|
||||
attitudeSettings.TrimFlight = ATTITUDESETTINGS_TRIMFLIGHT_NORMAL;
|
||||
AttitudeSettingsSet(&attitudeSettings);
|
||||
} else {
|
||||
trim_requested = false;
|
||||
|
@ -366,7 +366,7 @@ static int32_t updateAttitudeComplementary(bool first_run)
|
||||
magData.z = 0.0f;
|
||||
#endif
|
||||
float magBias[3];
|
||||
RevoCalibrationmag_biasGet(magBias);
|
||||
RevoCalibrationmag_biasArrayGet(magBias);
|
||||
// don't trust Mag for initial orientation if it has not been calibrated
|
||||
if (magBias[0] < 1e-6f && magBias[1] < 1e-6f && magBias[2] < 1e-6f) {
|
||||
magCalibrated = false;
|
||||
|
@ -91,7 +91,7 @@ int32_t BatteryInitialize(void)
|
||||
#endif
|
||||
|
||||
uint8_t adcRouting[HWSETTINGS_ADCROUTING_NUMELEM];
|
||||
HwSettingsADCRoutingGet(adcRouting);
|
||||
HwSettingsADCRoutingArrayGet(adcRouting);
|
||||
|
||||
// Determine if the battery sensors are routed to ADC pins
|
||||
for (int i = 0; i < HWSETTINGS_ADCROUTING_NUMELEM; i++) {
|
||||
|
@ -97,12 +97,12 @@ int32_t CameraStabInitialize(void)
|
||||
#ifdef MODULE_CAMERASTAB_BUILTIN
|
||||
cameraStabEnabled = true;
|
||||
#else
|
||||
uint8_t optionalModules[HWSETTINGS_OPTIONALMODULES_NUMELEM];
|
||||
HwSettingsOptionalModulesData optionalModules;
|
||||
|
||||
HwSettingsInitialize();
|
||||
HwSettingsOptionalModulesGet(optionalModules);
|
||||
HwSettingsOptionalModulesGet(&optionalModules);
|
||||
|
||||
if (optionalModules[HWSETTINGS_OPTIONALMODULES_CAMERASTAB] == HWSETTINGS_OPTIONALMODULES_ENABLED) {
|
||||
if (optionalModules.CameraStab == HWSETTINGS_OPTIONALMODULES_ENABLED) {
|
||||
cameraStabEnabled = true;
|
||||
} else {
|
||||
cameraStabEnabled = false;
|
||||
|
@ -102,12 +102,12 @@ static int32_t comUsbBridgeInitialize(void)
|
||||
bridge_enabled = true;
|
||||
#else
|
||||
HwSettingsInitialize();
|
||||
uint8_t optionalModules[HWSETTINGS_OPTIONALMODULES_NUMELEM];
|
||||
HwSettingsOptionalModulesData optionalModules;
|
||||
|
||||
HwSettingsOptionalModulesGet(optionalModules);
|
||||
HwSettingsOptionalModulesGet(&optionalModules);
|
||||
|
||||
if (usart_port && vcp_port &&
|
||||
(optionalModules[HWSETTINGS_OPTIONALMODULES_COMUSBBRIDGE] == HWSETTINGS_OPTIONALMODULES_ENABLED)) {
|
||||
(optionalModules.ComUsbBridge == HWSETTINGS_OPTIONALMODULES_ENABLED)) {
|
||||
bridge_enabled = true;
|
||||
} else {
|
||||
bridge_enabled = false;
|
||||
|
@ -110,9 +110,9 @@ int32_t FixedWingPathFollowerStart()
|
||||
int32_t FixedWingPathFollowerInitialize()
|
||||
{
|
||||
HwSettingsInitialize();
|
||||
uint8_t optionalModules[HWSETTINGS_OPTIONALMODULES_NUMELEM];
|
||||
HwSettingsOptionalModulesGet(optionalModules);
|
||||
if (optionalModules[HWSETTINGS_OPTIONALMODULES_FIXEDWINGPATHFOLLOWER] == HWSETTINGS_OPTIONALMODULES_ENABLED) {
|
||||
HwSettingsOptionalModulesData optionalModules;
|
||||
HwSettingsOptionalModulesGet(&optionalModules);
|
||||
if (optionalModules.FixedWingPathFollower == HWSETTINGS_OPTIONALMODULES_ENABLED) {
|
||||
followerEnabled = true;
|
||||
FixedWingPathFollowerSettingsInitialize();
|
||||
FixedWingPathFollowerStatusInitialize();
|
||||
|
@ -130,11 +130,11 @@ int32_t GPSInitialize(void)
|
||||
gpsEnabled = true;
|
||||
#else
|
||||
HwSettingsInitialize();
|
||||
uint8_t optionalModules[HWSETTINGS_OPTIONALMODULES_NUMELEM];
|
||||
HwSettingsOptionalModulesData optionalModules;
|
||||
|
||||
HwSettingsOptionalModulesGet(optionalModules);
|
||||
HwSettingsOptionalModulesGet(&optionalModules);
|
||||
|
||||
if (optionalModules[HWSETTINGS_OPTIONALMODULES_GPS] == HWSETTINGS_OPTIONALMODULES_ENABLED) {
|
||||
if (optionalModules.GPS == HWSETTINGS_OPTIONALMODULES_ENABLED) {
|
||||
gpsEnabled = true;
|
||||
} else {
|
||||
gpsEnabled = false;
|
||||
|
@ -276,9 +276,9 @@ static int32_t osdoutputInitialize(void)
|
||||
osdoutputEnabled = 1;
|
||||
#else
|
||||
HwSettingsInitialize();
|
||||
uint8_t optionalModules[HWSETTINGS_OPTIONALMODULES_NUMELEM];
|
||||
HwSettingsOptionalModulesGet(optionalModules);
|
||||
if (optionalModules[HWSETTINGS_OPTIONALMODULES_OSDHK] == HWSETTINGS_OPTIONALMODULES_ENABLED) {
|
||||
HwSettingsOptionalModulesData optionalModules;
|
||||
HwSettingsOptionalModulesGet(&optionalModules);
|
||||
if (optionalModules.OsdHk == HWSETTINGS_OPTIONALMODULES_ENABLED) {
|
||||
osdoutputEnabled = 1;
|
||||
} else {
|
||||
osdoutputEnabled = 0;
|
||||
|
@ -229,7 +229,7 @@ static int32_t complementaryFilter(struct data *this, float gyro[3], float accel
|
||||
mag[2] = 0.0f;
|
||||
#endif
|
||||
float magBias[3];
|
||||
RevoCalibrationmag_biasGet(magBias);
|
||||
RevoCalibrationmag_biasArrayGet(magBias);
|
||||
// don't trust Mag for initial orientation if it has not been calibrated
|
||||
if (magBias[0] < 1e-6f && magBias[1] < 1e-6f && magBias[2] < 1e-6f) {
|
||||
this->magCalibrated = false;
|
||||
|
@ -88,12 +88,12 @@ static float scale(float val, float inMin, float inMax, float outMin, float outM
|
||||
int32_t TxPIDInitialize(void)
|
||||
{
|
||||
bool txPIDEnabled;
|
||||
uint8_t optionalModules[HWSETTINGS_OPTIONALMODULES_NUMELEM];
|
||||
HwSettingsOptionalModulesData optionalModules;
|
||||
|
||||
HwSettingsInitialize();
|
||||
HwSettingsOptionalModulesGet(optionalModules);
|
||||
HwSettingsOptionalModulesGet(&optionalModules);
|
||||
|
||||
if (optionalModules[HWSETTINGS_OPTIONALMODULES_TXPID] == HWSETTINGS_OPTIONALMODULES_ENABLED) {
|
||||
if (optionalModules.TxPID == HWSETTINGS_OPTIONALMODULES_ENABLED) {
|
||||
txPIDEnabled = true;
|
||||
} else {
|
||||
txPIDEnabled = false;
|
||||
|
@ -125,11 +125,11 @@ int32_t VtolPathFollowerStart()
|
||||
*/
|
||||
int32_t VtolPathFollowerInitialize()
|
||||
{
|
||||
uint8_t optionalModules[HWSETTINGS_OPTIONALMODULES_NUMELEM];
|
||||
HwSettingsOptionalModulesData optionalModules;
|
||||
|
||||
HwSettingsOptionalModulesGet(optionalModules);
|
||||
HwSettingsOptionalModulesGet(&optionalModules);
|
||||
|
||||
if (optionalModules[HWSETTINGS_OPTIONALMODULES_VTOLPATHFOLLOWER] == HWSETTINGS_OPTIONALMODULES_ENABLED) {
|
||||
if (optionalModules.VtolPathFollower == HWSETTINGS_OPTIONALMODULES_ENABLED) {
|
||||
VtolPathFollowerSettingsInitialize();
|
||||
NedAccelInitialize();
|
||||
PathDesiredInitialize();
|
||||
|
@ -280,11 +280,49 @@ bool UAVObjectGeneratorFlight::process_object(ObjectInfo *info)
|
||||
.arg(fieldTypeStrC[info->fields[n]->type]));
|
||||
setgetfields.append(QString("}\n"));
|
||||
} else {
|
||||
// When no struct accessor is available for a field array accessor is the default.
|
||||
QString suffix = QString("");
|
||||
|
||||
if (info->fields[n]->elementNames[0].compare(QString("0")) != 0) {
|
||||
// struct based field accessor
|
||||
QString structTypeName = QString("%1%2Data").arg(info->name).arg(info->fields[n]->name);
|
||||
/* SET */
|
||||
setgetfields.append(QString("void %2%3Set( %1 *New%3 )\n")
|
||||
.arg(structTypeName)
|
||||
.arg(info->name)
|
||||
.arg(info->fields[n]->name));
|
||||
setgetfields.append(QString("{\n"));
|
||||
setgetfields.append(QString(" UAVObjSetDataField(%1Handle(), (void *)New%2, offsetof(%1Data, %2), %3*sizeof(%4));\n")
|
||||
.arg(info->name)
|
||||
.arg(info->fields[n]->name)
|
||||
.arg(info->fields[n]->numElements)
|
||||
.arg(fieldTypeStrC[info->fields[n]->type]));
|
||||
setgetfields.append(QString("}\n"));
|
||||
|
||||
/* GET */
|
||||
setgetfields.append(QString("void %2%3Get( %1 *New%3 )\n")
|
||||
.arg(structTypeName)
|
||||
.arg(info->name)
|
||||
.arg(info->fields[n]->name));
|
||||
setgetfields.append(QString("{\n"));
|
||||
setgetfields.append(QString(" UAVObjGetDataField(%1Handle(), (void *)New%2, offsetof(%1Data, %2), %3*sizeof(%4));\n")
|
||||
.arg(info->name)
|
||||
.arg(info->fields[n]->name)
|
||||
.arg(info->fields[n]->numElements)
|
||||
.arg(fieldTypeStrC[info->fields[n]->type]));
|
||||
setgetfields.append(QString("}\n"));
|
||||
|
||||
// Append array suffix to array accessors
|
||||
suffix = QString("Array");
|
||||
}
|
||||
|
||||
// array based field accessor
|
||||
/* SET */
|
||||
setgetfields.append(QString("void %2%3Set( %1 *New%3 )\n")
|
||||
setgetfields.append(QString("void %2%3%4Set( %1 *New%3 )\n")
|
||||
.arg(fieldTypeStrC[info->fields[n]->type])
|
||||
.arg(info->name)
|
||||
.arg(info->fields[n]->name));
|
||||
.arg(info->fields[n]->name)
|
||||
.arg(suffix));
|
||||
setgetfields.append(QString("{\n"));
|
||||
setgetfields.append(QString(" UAVObjSetDataField(%1Handle(), (void *)New%2, offsetof(%1Data, %2), %3*sizeof(%4));\n")
|
||||
.arg(info->name)
|
||||
@ -294,10 +332,11 @@ bool UAVObjectGeneratorFlight::process_object(ObjectInfo *info)
|
||||
setgetfields.append(QString("}\n"));
|
||||
|
||||
/* GET */
|
||||
setgetfields.append(QString("void %2%3Get( %1 *New%3 )\n")
|
||||
setgetfields.append(QString("void %2%3%4Get( %1 *New%3 )\n")
|
||||
.arg(fieldTypeStrC[info->fields[n]->type])
|
||||
.arg(info->name)
|
||||
.arg(info->fields[n]->name));
|
||||
.arg(info->fields[n]->name)
|
||||
.arg(suffix));
|
||||
setgetfields.append(QString("{\n"));
|
||||
setgetfields.append(QString(" UAVObjGetDataField(%1Handle(), (void *)New%2, offsetof(%1Data, %2), %3*sizeof(%4));\n")
|
||||
.arg(info->name)
|
||||
@ -315,17 +354,37 @@ bool UAVObjectGeneratorFlight::process_object(ObjectInfo *info)
|
||||
for (int n = 0; n < info->fields.length(); ++n) {
|
||||
// if (!info->fields[n]->defaultValues.isEmpty() )
|
||||
{
|
||||
QString suffix = QString("");
|
||||
if (info->fields[n]->elementNames[0].compare(QString("0")) != 0) {
|
||||
// struct based field accessor
|
||||
QString structTypeName = QString("%1%2Data").arg(info->name).arg(info->fields[n]->name);
|
||||
|
||||
/* SET */
|
||||
setgetfieldsextern.append(QString("extern void %2%3Set(%1 *New%3);\n")
|
||||
.arg(structTypeName)
|
||||
.arg(info->name)
|
||||
.arg(info->fields[n]->name));
|
||||
|
||||
/* GET */
|
||||
setgetfieldsextern.append(QString("extern void %2%3Get(%1 *New%3);\n")
|
||||
.arg(structTypeName)
|
||||
.arg(info->name)
|
||||
.arg(info->fields[n]->name));
|
||||
suffix = QString("Array");
|
||||
}
|
||||
/* SET */
|
||||
setgetfieldsextern.append(QString("extern void %2%3Set(%1 *New%3);\n")
|
||||
setgetfieldsextern.append(QString("extern void %2%3%4Set(%1 *New%3);\n")
|
||||
.arg(fieldTypeStrC[info->fields[n]->type])
|
||||
.arg(info->name)
|
||||
.arg(info->fields[n]->name));
|
||||
.arg(info->fields[n]->name)
|
||||
.arg(suffix));
|
||||
|
||||
/* GET */
|
||||
setgetfieldsextern.append(QString("extern void %2%3Get(%1 *New%3);\n")
|
||||
setgetfieldsextern.append(QString("extern void %2%3%4Get(%1 *New%3);\n")
|
||||
.arg(fieldTypeStrC[info->fields[n]->type])
|
||||
.arg(info->name)
|
||||
.arg(info->fields[n]->name));
|
||||
.arg(info->fields[n]->name)
|
||||
.arg(suffix));
|
||||
}
|
||||
}
|
||||
outInclude.replace(QString("$(SETGETFIELDSEXTERN)"), setgetfieldsextern);
|
||||
|
Loading…
x
Reference in New Issue
Block a user