diff --git a/flight/modules/TxPID/txpid.c b/flight/modules/TxPID/txpid.c index ce8d3b943..f14239dbc 100644 --- a/flight/modules/TxPID/txpid.c +++ b/flight/modules/TxPID/txpid.c @@ -64,6 +64,7 @@ #include "stabilizationsettingsbank2.h" #include "stabilizationsettingsbank3.h" #include "flightstatus.h" +#include "txpidstatus.h" #include "hwsettings.h" // @@ -114,6 +115,7 @@ int32_t TxPIDInitialize(void) if (txPIDEnabled) { TxPIDSettingsInitialize(); + TxPIDStatusInitialize(); AccessoryDesiredInitialize(); UAVObjEvent ev = { @@ -138,7 +140,14 @@ int32_t TxPIDInitialize(void) metadata.telemetryUpdateMode = UPDATEMODE_PERIODIC; metadata.telemetryUpdatePeriod = TELEMETRY_UPDATE_PERIOD_MS; StabilizationSettingsSetMetadata(&metadata); -#endif + + AttitudeSettingsInitialize(); + AttitudeSettingsGetMetadata(&metadata); + metadata.telemetryAcked = 0; + metadata.telemetryUpdateMode = UPDATEMODE_PERIODIC; + metadata.telemetryUpdatePeriod = TELEMETRY_UPDATE_PERIOD_MS; + AttitudeSettingsSetMetadata(&metadata); +#endif /* if (TELEMETRY_UPDATE_PERIOD_MS != 0) */ return 0; } @@ -206,6 +215,9 @@ static void updatePIDs(UAVObjEvent *ev) #endif AccessoryDesiredData accessory; + TxPIDStatusData txpid_status; + TxPIDStatusGet(&txpid_status); + uint8_t needsUpdateBank = 0; uint8_t needsUpdateStab = 0; uint8_t needsUpdateAtt = 0; @@ -234,6 +246,8 @@ static void updatePIDs(UAVObjEvent *ev) continue; } + TxPIDStatusCurPIDToArray(txpid_status.CurPID)[i] = value; + switch (TxPIDSettingsPIDsToArray(inst.PIDs)[i]) { case TXPIDSETTINGS_PIDS_ROLLRATEKP: needsUpdateBank |= update(&bank.RollRatePID.Kp, value); @@ -432,6 +446,15 @@ static void updatePIDs(UAVObjEvent *ev) return; } } + + if (needsUpdateStab || + needsUpdateAtt || +#ifdef REVOLUTION + needsUpdateAltitude || +#endif /* REVOLUTION */ + needsUpdateBank) { + TxPIDStatusSet(&txpid_status);; + } } /** diff --git a/flight/targets/boards/discoveryf4bare/firmware/UAVObjects.inc b/flight/targets/boards/discoveryf4bare/firmware/UAVObjects.inc index 804a6aa41..4eed92d80 100644 --- a/flight/targets/boards/discoveryf4bare/firmware/UAVObjects.inc +++ b/flight/targets/boards/discoveryf4bare/firmware/UAVObjects.inc @@ -122,6 +122,7 @@ UAVOBJSRCFILENAMES += poilocation UAVOBJSRCFILENAMES += poilearnsettings UAVOBJSRCFILENAMES += mpugyroaccelsettings UAVOBJSRCFILENAMES += txpidsettings +UAVOBJSRCFILENAMES += txpidstatus UAVOBJSRCFILENAMES += takeofflocation UAVOBJSRCFILENAMES += perfcounter diff --git a/flight/targets/boards/revolution/firmware/UAVObjects.inc b/flight/targets/boards/revolution/firmware/UAVObjects.inc index 1746f3a38..2786a755c 100644 --- a/flight/targets/boards/revolution/firmware/UAVObjects.inc +++ b/flight/targets/boards/revolution/firmware/UAVObjects.inc @@ -122,6 +122,7 @@ UAVOBJSRCFILENAMES += poilocation UAVOBJSRCFILENAMES += poilearnsettings UAVOBJSRCFILENAMES += mpugyroaccelsettings UAVOBJSRCFILENAMES += txpidsettings +UAVOBJSRCFILENAMES += txpidstatus UAVOBJSRCFILENAMES += takeofflocation UAVOBJSRCFILENAMES += perfcounter diff --git a/flight/targets/boards/revonano/firmware/UAVObjects.inc b/flight/targets/boards/revonano/firmware/UAVObjects.inc index 1746f3a38..2786a755c 100644 --- a/flight/targets/boards/revonano/firmware/UAVObjects.inc +++ b/flight/targets/boards/revonano/firmware/UAVObjects.inc @@ -122,6 +122,7 @@ UAVOBJSRCFILENAMES += poilocation UAVOBJSRCFILENAMES += poilearnsettings UAVOBJSRCFILENAMES += mpugyroaccelsettings UAVOBJSRCFILENAMES += txpidsettings +UAVOBJSRCFILENAMES += txpidstatus UAVOBJSRCFILENAMES += takeofflocation UAVOBJSRCFILENAMES += perfcounter diff --git a/flight/targets/boards/revoproto/firmware/UAVObjects.inc b/flight/targets/boards/revoproto/firmware/UAVObjects.inc index 8f515e30c..d0451ba31 100644 --- a/flight/targets/boards/revoproto/firmware/UAVObjects.inc +++ b/flight/targets/boards/revoproto/firmware/UAVObjects.inc @@ -122,6 +122,7 @@ UAVOBJSRCFILENAMES += poilocation UAVOBJSRCFILENAMES += poilearnsettings UAVOBJSRCFILENAMES += mpugyroaccelsettings UAVOBJSRCFILENAMES += txpidsettings +UAVOBJSRCFILENAMES += txpidstatus UAVOBJSRCFILENAMES += takeofflocation UAVOBJSRC = $(foreach UAVOBJSRCFILE,$(UAVOBJSRCFILENAMES),$(OPUAVSYNTHDIR)/$(UAVOBJSRCFILE).c ) diff --git a/ground/openpilotgcs/src/plugins/uavobjects/uavobjects.pro b/ground/openpilotgcs/src/plugins/uavobjects/uavobjects.pro index b3e3cd810..cc906d684 100644 --- a/ground/openpilotgcs/src/plugins/uavobjects/uavobjects.pro +++ b/ground/openpilotgcs/src/plugins/uavobjects/uavobjects.pro @@ -139,6 +139,7 @@ UAVOBJS = \ $${UAVOBJ_XML_DIR}/takeofflocation.xml \ $${UAVOBJ_XML_DIR}/taskinfo.xml \ $${UAVOBJ_XML_DIR}/txpidsettings.xml \ + $${UAVOBJ_XML_DIR}/txpidstatus.xml \ $${UAVOBJ_XML_DIR}/velocitydesired.xml \ $${UAVOBJ_XML_DIR}/velocitystate.xml \ $${UAVOBJ_XML_DIR}/vtolpathfollowersettings.xml \ diff --git a/shared/uavobjectdefinition/txpidstatus.xml b/shared/uavobjectdefinition/txpidstatus.xml new file mode 100644 index 000000000..f0e8a425a --- /dev/null +++ b/shared/uavobjectdefinition/txpidstatus.xml @@ -0,0 +1,10 @@ + + + Status of @ref TxPID optional module used to tune PID settings using R/C transmitter. + + + + + + +