mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-21 11:54:15 +01:00
OP-1188 Optimize stack utilization for multipid bank selection in Stabilization module
+review OPReview
This commit is contained in:
parent
e14acffd5c
commit
f9ac3a3de2
@ -757,13 +757,17 @@ static float stab_powf(float x, uint8_t p)
|
|||||||
|
|
||||||
static void SettingsBankUpdatedCb(__attribute__((unused)) UAVObjEvent *ev)
|
static void SettingsBankUpdatedCb(__attribute__((unused)) UAVObjEvent *ev)
|
||||||
{
|
{
|
||||||
StabilizationBankData bank, oldBank;
|
|
||||||
|
|
||||||
StabilizationBankGet(&oldBank);
|
|
||||||
|
|
||||||
if (cur_flight_mode < 0 || cur_flight_mode >= NUM_FMS_POSITIONS) {
|
if (cur_flight_mode < 0 || cur_flight_mode >= NUM_FMS_POSITIONS) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ((settings.FlightModeMap[cur_flight_mode] == 0 && ev->obj != StabilizationSettingsBank1Handle()) ||
|
||||||
|
(settings.FlightModeMap[cur_flight_mode] == 1 && ev->obj != StabilizationSettingsBank2Handle()) ||
|
||||||
|
(settings.FlightModeMap[cur_flight_mode] == 2 && ev->obj != StabilizationSettingsBank3Handle()) ||
|
||||||
|
settings.FlightModeMap[cur_flight_mode] > 2) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
StabilizationBankData bank;
|
||||||
|
|
||||||
switch (settings.FlightModeMap[cur_flight_mode]) {
|
switch (settings.FlightModeMap[cur_flight_mode]) {
|
||||||
case 0:
|
case 0:
|
||||||
@ -777,16 +781,8 @@ static void SettingsBankUpdatedCb(__attribute__((unused)) UAVObjEvent *ev)
|
|||||||
case 2:
|
case 2:
|
||||||
StabilizationSettingsBank3Get((StabilizationSettingsBank3Data *)&bank);
|
StabilizationSettingsBank3Get((StabilizationSettingsBank3Data *)&bank);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
|
||||||
memset(&bank, 0, sizeof(StabilizationBankDataPacked));
|
|
||||||
// return; //bank number is invalid. All we can do is ignore it.
|
|
||||||
}
|
|
||||||
|
|
||||||
// Need to do this to prevent an infinite loop
|
|
||||||
if (memcmp(&oldBank, &bank, sizeof(StabilizationBankDataPacked)) != 0) {
|
|
||||||
StabilizationBankSet(&bank);
|
|
||||||
}
|
}
|
||||||
|
StabilizationBankSet(&bank);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void BankUpdatedCb(__attribute__((unused)) UAVObjEvent *ev)
|
static void BankUpdatedCb(__attribute__((unused)) UAVObjEvent *ev)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user