@@ -119,27 +119,6 @@ void Plane::init_rc_out_aux()
119
119
*/
120
120
void Plane::rudder_arm_disarm_check ()
121
121
{
122
- AP_Arming::RudderArming arming_rudder = arming.get_rudder_arming_type ();
123
-
124
- if (arming_rudder == AP_Arming::RudderArming::IS_DISABLED) {
125
- // parameter disallows rudder arming/disabling
126
- return ;
127
- }
128
-
129
- // if throttle is not down, then pilot cannot rudder arm/disarm
130
- if (get_throttle_input () != 0 ){
131
- rudder_arm_timer = 0 ;
132
- return ;
133
- }
134
-
135
- // if not in a manual throttle mode and not in CRUISE or FBWB
136
- // modes then disallow rudder arming/disarming
137
- if (auto_throttle_mode &&
138
- (control_mode != &mode_cruise && control_mode != &mode_fbwb)) {
139
- rudder_arm_timer = 0 ;
140
- return ;
141
- }
142
-
143
122
if (!arming.is_armed ()) {
144
123
// when not armed, full right rudder starts arming counter
145
124
if (channel_rudder->get_control_in () > 4000 ) {
@@ -160,26 +139,29 @@ void Plane::rudder_arm_disarm_check()
160
139
// not at full right rudder
161
140
rudder_arm_timer = 0 ;
162
141
}
163
- } else if ((arming_rudder == AP_Arming::RudderArming::ARMDISARM) && !is_flying ()) {
164
- // when armed and not flying, full left rudder starts disarming counter
165
- if (channel_rudder->get_control_in () < -4000 ) {
166
- uint32_t now = millis ();
167
-
168
- if (rudder_arm_timer == 0 ||
169
- now - rudder_arm_timer < 3000 ) {
170
- if (rudder_arm_timer == 0 ) {
171
- rudder_arm_timer = now;
172
- }
173
- } else {
174
- // time to disarm!
175
- arming.disarm (AP_Arming::Method::RUDDER);
176
- rudder_arm_timer = 0 ;
177
- }
178
- } else {
179
- // not at full left rudder
180
- rudder_arm_timer = 0 ;
181
- }
142
+ return ;
182
143
}
144
+
145
+ // full left rudder starts disarming counter
146
+ if (channel_rudder->get_control_in () >= -4000 ) {
147
+ // not at full left rudder
148
+ rudder_arm_timer = 0 ;
149
+ return ;
150
+ }
151
+ const uint32_t now = millis ();
152
+
153
+ if (rudder_arm_timer == 0 ) {
154
+ // start counter:
155
+ rudder_arm_timer = now;
156
+ }
157
+ if (now - rudder_arm_timer < 3000 ) {
158
+ // not yet time to disarm
159
+ return ;
160
+ }
161
+
162
+ // time to disarm!
163
+ arming.disarm (AP_Arming::Method::RUDDER);
164
+ rudder_arm_timer = 0 ;
183
165
}
184
166
185
167
void Plane::read_radio ()
0 commit comments