Skip to content

Commit

Permalink
PFD bug fixes; alpha locks moves to CONF 1+F
Browse files Browse the repository at this point in the history
  • Loading branch information
flogross89 committed May 12, 2024
1 parent 9c59c77 commit 826f3be
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 20 deletions.
18 changes: 9 additions & 9 deletions fbw-a380x/src/systems/instruments/src/PFD/LowerArea.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ class FlapsIndicator extends DisplayComponent<{ bus: ArincEventBus }> {
const inMotion = this.flapsTargetPos.get() !== null || this.slatsTargetPos.get() !== null;
this.targetVisible.set((this.slatsOut || this.flapsOut || !this.configClean) ? 'visible' : 'hidden');
this.flapExtensionVisible.set(((this.flapsOut || !this.configClean) && this.flapsDataValid.get()) ? 'visible' : 'hidden');
this.flapExtensionVisible.set(((this.slatsOut || !this.configClean) && this.flapsDataValid.get()) ? 'visible' : 'hidden');
this.slatExtensionVisible.set(((this.slatsOut || !this.configClean) && this.flapsDataValid.get()) ? 'visible' : 'hidden');

if (this.slatsFault.get()) {
this.slatIndexClass.set('NormalStroke Amber CornerRound');
Expand Down Expand Up @@ -244,18 +244,18 @@ class FlapsIndicator extends DisplayComponent<{ bus: ArincEventBus }> {
</g>

<g visibility={this.slatExtensionVisible}>
<path d={circlePath(0.8, 14.1, 194.5)} class="NormalStroke Stroke Fill Cyan" visibility={this.slatsTargetPos.map((i) => (i === 0 ? 'visible' : 'hidden'))} />
<path d={circlePath(0.8, 14.1, 194.5)} class="NormalStroke Stroke Fill Cyan" visibility={this.slatsTargetPos.map((i) => (i === 0 ? 'inherit' : 'hidden'))} />
<path d={circlePath(0.8, 9.6, 195.4)} class={this.slatsTargetPos.map((i) => (i === 1 ? 'NormalStroke Stroke Fill Cyan' : 'NormalStroke White'))} />
<path d={circlePath(0.8, 5, 196.4)} class={this.slatsTargetPos.map((i) => (i === 2 ? 'NormalStroke Stroke Fill Cyan' : 'NormalStroke White'))} />

<text x={3.8} y={191.1} class={this.slatsFault.get() ? 'FontSmall Amber' : 'FontSmall White'} visibility={this.alphaLockEngaged.map((v) => (v ? 'hidden' : 'visible'))}>S</text>
<text x={3.8} y={191.1} class={this.slatsFault.get() ? 'FontSmall Amber' : 'FontSmall White'} visibility={this.alphaLockEngaged.map((v) => (v ? 'hidden' : 'inherit'))}>S</text>
</g>

<g visibility={this.flapExtensionVisible}>
<path
d="M 32.3 193.7 v 1.7 h 1.9 z"
class="Fill Stroke NormalStroke Cyan CornerRound"
visibility={this.flapsTargetPos.map((i) => (i === 0 ? 'visible' : 'hidden'))}
visibility={this.flapsTargetPos.map((i) => (i === 0 ? 'inherit' : 'hidden'))}
/>
<path
d="M 39.9 196.8 v 1.7 h 1.9 z"
Expand All @@ -274,13 +274,13 @@ class FlapsIndicator extends DisplayComponent<{ bus: ArincEventBus }> {
class={this.flapsTargetPos.map((i) => (i === 4 ? 'Fill Stroke NormalStroke Cyan CornerRound' : 'Fill Stroke NormalStroke White CornerRound'))}
/>

<text x={47.2} y={210.8} class={this.flapsFault.get() ? 'FontSmall Amber' : 'FontSmall White'} visibility={this.flapReliefEngaged.map((v) => (v ? 'hidden' : 'visible'))}>F</text>
<text x={47.2} y={210.8} class={this.flapsFault.get() ? 'FontSmall Amber' : 'FontSmall White'} visibility={this.flapReliefEngaged.map((v) => (v ? 'hidden' : 'inherit'))}>F</text>
</g>
<text class="GreenPulse FontSmallest" x={0} y={190} visibility={this.alphaLockEngaged.map((v) => (v ? 'visible' : 'hidden'))}>A LOCK</text>
<text class="GreenPulse FontSmallest" x={38} y={190} visibility={this.flapReliefEngaged.map((v) => (v ? 'visible' : 'hidden'))}>F RELIEF</text>
<text class="GreenPulse FontSmallest" x={0} y={190} visibility={this.alphaLockEngaged.map((v) => (v ? 'inherit' : 'hidden'))}>A LOCK</text>
<text class="GreenPulse FontSmallest" x={38} y={190} visibility={this.flapReliefEngaged.map((v) => (v ? 'inherit' : 'hidden'))}>F RELIEF</text>

<text class="Amber FontSmallest" x={0} y={195} visibility={this.slatsDataValid.map((v) => (v ? 'hidden' : 'visible'))}>XX</text>
<text class="Amber FontSmallest" x={37} y={195} visibility={this.flapsDataValid.map((v) => (v ? 'hidden' : 'visible'))}>XX</text>
<text class="Amber FontSmallest" x={9} y={195.5} visibility={this.slatsDataValid.map((v) => (v ? 'hidden' : 'inherit'))}>XX</text>
<text class="Amber FontSmallest" x={32.6} y={195.5} visibility={this.flapsDataValid.map((v) => (v ? 'hidden' : 'inherit'))}>XX</text>

<path class={this.slatIndexClass} d={this.slatsPath} visibility={this.slatsDataValid.map((v) => (v ? 'visible' : 'hidden'))} />
<path class={this.slatIndexClass} d={this.slatsLinePath} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,18 +203,17 @@ impl SlatFlapControlComputer {
{
FlapsConf::Conf0
} else {
FlapsConf::Conf1
self.flaps_conf
}
}
(1..=4, 0)
if context.is_in_flight()
&& !self.alpha_speed_lock_active
&& (context.indicated_airspeed().get::<knot>()
< Self::ALPHA_SPEED_LOCK_IN_AIRSPEED_THRESHOLD_KNOTS
|| context.angle_of_attack().get::<degree>()
> Self::ALPHA_SPEED_LOCK_IN_AOA_THRESHOLD_DEGREES) =>
{
FlapsConf::Conf1
FlapsConf::Conf1F
}
(_, 0) => FlapsConf::Conf0,
(1 | 2, 2)
Expand Down Expand Up @@ -279,7 +278,8 @@ impl SlatFlapControlComputer {
}

fn alpha_speed_lock_active(&self, flaps_handle: &FlapsHandle) -> bool {
flaps_handle.position() == 0 && self.flaps_conf == FlapsConf::Conf1
flaps_handle.position() == 0
&& (self.flaps_conf == FlapsConf::Conf1 || self.flaps_conf == FlapsConf::Conf1F)
}

fn surface_movement_required(demanded_angle: Angle, feedback_angle: Angle) -> bool {
Expand Down Expand Up @@ -1214,13 +1214,13 @@ mod tests {
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf2);

test_bed = test_bed.set_flaps_handle_position(0).run_one_tick();
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1); // alpha lock
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1F); // alpha lock

test_bed = test_bed.set_flaps_handle_position(3).run_one_tick();
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf3);

test_bed = test_bed.set_flaps_handle_position(0).run_one_tick();
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1);
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1F); // alpha lock

test_bed = test_bed.set_flaps_handle_position(4).run_one_tick();
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::ConfFull);
Expand Down Expand Up @@ -1366,7 +1366,7 @@ mod tests {
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf2);

test_bed = test_bed.set_flaps_handle_position(0).run_one_tick();
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1); // alpha lock
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1F); // alpha lock

test_bed = test_bed.set_flaps_handle_position(2).run_one_tick();
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf2);
Expand Down Expand Up @@ -1411,7 +1411,7 @@ mod tests {
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf3);

test_bed = test_bed.set_flaps_handle_position(0).run_one_tick();
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1); // alpha lock
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1F); // alpha lock

test_bed = test_bed.set_flaps_handle_position(3).run_one_tick();
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf3);
Expand Down Expand Up @@ -1456,7 +1456,7 @@ mod tests {
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::ConfFull);

test_bed = test_bed.set_flaps_handle_position(0).run_one_tick();
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1); // alpha lock
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1F); // alpha lock

test_bed = test_bed.set_flaps_handle_position(4).run_one_tick();
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::ConfFull);
Expand Down Expand Up @@ -1747,7 +1747,7 @@ mod tests {

test_bed = test_bed.set_flaps_handle_position(0).run_one_tick();

assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1);
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1F);
assert!(test_bed.read_slat_flap_system_status_word().get_bit(24));

test_bed = test_bed.set_indicated_airspeed(200.).run_one_tick();
Expand All @@ -1771,7 +1771,7 @@ mod tests {

test_bed = test_bed.set_flaps_handle_position(0).run_one_tick();

assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1);
assert_eq!(test_bed.get_flaps_conf(), FlapsConf::Conf1F);
assert!(test_bed.read_slat_flap_system_status_word().get_bit(24));

test_bed = test_bed
Expand Down

0 comments on commit 826f3be

Please sign in to comment.