diff --git a/flight/Modules/CameraStab/camerastab.c b/flight/Modules/CameraStab/camerastab.c
index 51d6c2561..12915be68 100644
--- a/flight/Modules/CameraStab/camerastab.c
+++ b/flight/Modules/CameraStab/camerastab.c
@@ -165,7 +165,7 @@ static void attitudeUpdated(UAVObjEvent* ev)
// we are guaranteed that the iteration order of i is roll pitch yaw
// that guarnteees this won't be used uninited, but the compiler doesn't know that
// so we init it or turn the warning/error off for each compiler
- float elevon_roll = 0.0;
+ float elevon_roll = 0.0f;
// process axes
for (uint8_t i = 0; i < CAMERASTABSETTINGS_INPUT_NUMELEM; i++) {
@@ -228,45 +228,39 @@ static void attitudeUpdated(UAVObjEvent* ev)
case CAMERASTABSETTINGS_INPUT_ROLL:
// we are guaranteed that the iteration order of i is roll pitch yaw
// for elevon mixing we simply grab the value for later use
- if (cameraStab.GimbalType == CAMERASTABSETTINGS_GIMBALTYPE_ELEVONSSGYAWPITCHROLL) {
+ if (cameraStab.GimbalType == CAMERASTABSETTINGS_GIMBALTYPE_ROLLPITCHMIXED)
elevon_roll = output;
- }
- else {
+ else
CameraDesiredRollOrServo1Set(&output);
- }
break;
case CAMERASTABSETTINGS_INPUT_PITCH:
// we are guaranteed that the iteration order of i is roll pitch yaw
// for elevon mixing we use the value we previously grabbed and set both s1 and s2
- if (cameraStab.GimbalType == CAMERASTABSETTINGS_GIMBALTYPE_ELEVONSSGYAWPITCHROLL) {
- float elevon_pitch;
- elevon_pitch = output;
+ if (cameraStab.GimbalType == CAMERASTABSETTINGS_GIMBALTYPE_ROLLPITCHMIXED) {
+ float elevon_pitch = output;
// elevon reversing works like this:
// first use the normal reversing facilities to get servo 1 roll working in the correct direction
// then use the normal reversing facilities to get servo 2 roll working in the correct direction
// then use these new reversing switches to reverse servo 1 and/or 2 pitch as needed
// if servo 1 pitch is reversed
- if (cameraStab.ElevonSSGServo1PitchReverse == CAMERASTABSETTINGS_ELEVONSSGSERVO1PITCHREVERSE_TRUE) {
+ if (cameraStab.Servo1PitchReverse == CAMERASTABSETTINGS_SERVO1PITCHREVERSE_TRUE) {
// use (reversed pitch) + roll
- output = ((1.0 - elevon_pitch) + elevon_roll) / 2;
- }
- else {
+ output = ((1.0f - elevon_pitch) + elevon_roll) / 2.0f;
+ } else {
// use pitch + roll
- output = (elevon_pitch + elevon_roll) / 2;
+ output = (elevon_pitch + elevon_roll) / 2.0f;
}
CameraDesiredRollOrServo1Set(&output);
// if servo 2 pitch is reversed
- if (cameraStab.ElevonSSGServo2PitchReverse == CAMERASTABSETTINGS_ELEVONSSGSERVO2PITCHREVERSE_TRUE) {
+ if (cameraStab.Servo2PitchReverse == CAMERASTABSETTINGS_SERVO2PITCHREVERSE_TRUE) {
// use (reversed pitch) - roll
- output = ((1.0 - elevon_pitch) - elevon_roll) / 2;
- }
- else {
+ output = ((1.0f - elevon_pitch) - elevon_roll) / 2.0f;
+ } else {
// use pitch - roll
- output = (elevon_pitch - elevon_roll) / 2;
+ output = (elevon_pitch - elevon_roll) / 2.0f;
}
CameraDesiredPitchOrServo2Set(&output);
- }
- else {
+ } else {
CameraDesiredPitchOrServo2Set(&output);
}
break;
@@ -294,6 +288,7 @@ void applyFeedForward(uint8_t index, float dT_millis, float *attitude, CameraSta
switch (cameraStab->GimbalType) {
case CAMERASTABSETTINGS_GIMBALTYPE_GENERIC:
+ case CAMERASTABSETTINGS_GIMBALTYPE_ROLLPITCHMIXED:
// no correction
break;
case CAMERASTABSETTINGS_GIMBALTYPE_YAWROLLPITCH:
diff --git a/shared/uavobjectdefinition/camerastabsettings.xml b/shared/uavobjectdefinition/camerastabsettings.xml
index 6cc387e5c..0a3626183 100644
--- a/shared/uavobjectdefinition/camerastabsettings.xml
+++ b/shared/uavobjectdefinition/camerastabsettings.xml
@@ -8,13 +8,13 @@
-
+
-
-
+
+