1
0
Fork 0

Put blinking marker beacon (bool) into the property registry for use by the

panel.
This commit is contained in:
curt 2001-03-29 06:05:01 +00:00
parent f8e234bb27
commit 4fc7f6d097
4 changed files with 65 additions and 9 deletions

View file

@ -103,6 +103,7 @@ FGRadioStack::init ()
{ {
morse.init(); morse.init();
beacon.init(); beacon.init();
blink.stamp();
search(); search();
update(); update();
@ -196,6 +197,13 @@ FGRadioStack::bind ()
fgTie("/radios/adf/ident", this, fgTie("/radios/adf/ident", this,
&FGRadioStack::get_adf_ident_btn, &FGRadioStack::get_adf_ident_btn,
&FGRadioStack::set_adf_ident_btn); &FGRadioStack::set_adf_ident_btn);
fgTie("/radios/marker-beacons/inner", this,
&FGRadioStack::get_inner_blink);
fgTie("/radios/marker-beacons/middle", this,
&FGRadioStack::get_middle_blink);
fgTie("/radios/marker-beacons/outer", this,
&FGRadioStack::get_outer_blink);
} }
void void
@ -234,6 +242,10 @@ FGRadioStack::unbind ()
fgUntie("/radios/adf/rotation"); fgUntie("/radios/adf/rotation");
fgUntie("/radios/adf/on"); fgUntie("/radios/adf/on");
fgUntie("/radios/adf/ident"); fgUntie("/radios/adf/ident");
fgUntie("/radios/marker-beacons/inner");
fgUntie("/radios/marker-beacons/middle");
fgUntie("/radios/marker-beacons/outer");
} }
@ -545,6 +557,39 @@ FGRadioStack::update()
globals->get_soundmgr()->stop( "adf-ident" ); globals->get_soundmgr()->stop( "adf-ident" );
} }
} }
// marker beacon blinking
bool light_on = ( outer_blink || middle_blink || inner_blink );
SGTimeStamp current;
current.stamp();
if ( light_on && (current - blink > 400000) ) {
light_on = false;
blink.stamp();
} else if ( !light_on && (current - blink > 100000) ) {
light_on = true;
blink.stamp();
}
if ( outer_marker ) {
outer_blink = light_on;
} else {
outer_blink = false;
}
if ( middle_marker ) {
middle_blink = light_on;
} else {
middle_blink = false;
}
if ( inner_marker ) {
inner_blink = light_on;
} else {
inner_blink = false;
}
cout << outer_blink << " " << middle_blink << " " << inner_blink << endl;
} }
@ -817,7 +862,7 @@ void FGRadioStack::search()
if ( beacon_type == FGMkrBeacon::OUTER ) { if ( beacon_type == FGMkrBeacon::OUTER ) {
outer_marker = true; outer_marker = true;
cout << "OUTER MARKER" << endl; // cout << "OUTER MARKER" << endl;
if ( last_beacon != FGMkrBeacon::OUTER ) { if ( last_beacon != FGMkrBeacon::OUTER ) {
if ( ! globals->get_soundmgr()->exists( "outer-marker" ) ) { if ( ! globals->get_soundmgr()->exists( "outer-marker" ) ) {
FGSimpleSound *sound = beacon.get_outer(); FGSimpleSound *sound = beacon.get_outer();
@ -830,7 +875,7 @@ void FGRadioStack::search()
} }
} else if ( beacon_type == FGMkrBeacon::MIDDLE ) { } else if ( beacon_type == FGMkrBeacon::MIDDLE ) {
middle_marker = true; middle_marker = true;
cout << "MIDDLE MARKER" << endl; // cout << "MIDDLE MARKER" << endl;
if ( last_beacon != FGMkrBeacon::MIDDLE ) { if ( last_beacon != FGMkrBeacon::MIDDLE ) {
if ( ! globals->get_soundmgr()->exists( "middle-marker" ) ) { if ( ! globals->get_soundmgr()->exists( "middle-marker" ) ) {
FGSimpleSound *sound = beacon.get_middle(); FGSimpleSound *sound = beacon.get_middle();
@ -843,7 +888,7 @@ void FGRadioStack::search()
} }
} else if ( beacon_type == FGMkrBeacon::INNER ) { } else if ( beacon_type == FGMkrBeacon::INNER ) {
inner_marker = true; inner_marker = true;
cout << "INNER MARKER" << endl; // cout << "INNER MARKER" << endl;
if ( last_beacon != FGMkrBeacon::INNER ) { if ( last_beacon != FGMkrBeacon::INNER ) {
if ( ! globals->get_soundmgr()->exists( "inner-marker" ) ) { if ( ! globals->get_soundmgr()->exists( "inner-marker" ) ) {
FGSimpleSound *sound = beacon.get_inner(); FGSimpleSound *sound = beacon.get_inner();
@ -855,7 +900,7 @@ void FGRadioStack::search()
} }
} }
} else { } else {
cout << "no marker" << endl; // cout << "no marker" << endl;
globals->get_soundmgr()->stop( "outer-marker" ); globals->get_soundmgr()->stop( "outer-marker" );
globals->get_soundmgr()->stop( "middle-marker" ); globals->get_soundmgr()->stop( "middle-marker" );
globals->get_soundmgr()->stop( "inner-marker" ); globals->get_soundmgr()->stop( "inner-marker" );

View file

@ -31,6 +31,7 @@
#include <simgear/compiler.h> #include <simgear/compiler.h>
#include <simgear/math/interpolater.hxx> #include <simgear/math/interpolater.hxx>
#include <simgear/timing/timestamp.hxx>
#include <Navaids/ilslist.hxx> #include <Navaids/ilslist.hxx>
#include <Navaids/navlist.hxx> #include <Navaids/navlist.hxx>
@ -133,6 +134,11 @@ class FGRadioStack : public FGSubsystem
bool middle_marker; bool middle_marker;
bool inner_marker; bool inner_marker;
SGTimeStamp blink;
bool outer_blink;
bool middle_blink;
bool inner_blink;
string adf_ident; string adf_ident;
string adf_trans_ident; string adf_trans_ident;
bool adf_valid; bool adf_valid;
@ -233,6 +239,11 @@ public:
inline double get_adf_alt_freq () const { return adf_alt_freq; } inline double get_adf_alt_freq () const { return adf_alt_freq; }
inline double get_adf_rotation () const { return adf_rotation; } inline double get_adf_rotation () const { return adf_rotation; }
// Marker Beacon Accessors
inline bool get_inner_blink () const { return inner_blink; }
inline bool get_middle_blink () const { return middle_blink; }
inline bool get_outer_blink () const { return outer_blink; }
// Calculated values. // Calculated values.
inline bool get_nav1_inrange() const { return nav1_inrange; } inline bool get_nav1_inrange() const { return nav1_inrange; }
bool get_nav1_to_flag () const; bool get_nav1_to_flag () const;

View file

@ -204,14 +204,14 @@ FGMkrBeacon::fgMkrBeacType FGMarkerBeacons::query( double lon, double lat,
// match up to twice the published range so we can model // match up to twice the published range so we can model
// reduced signal strength // reduced signal strength
if ( d < maxrange2 ) { if ( d < maxrange2 ) {
cout << "lon = " << lon << " lat = " << lat // cout << "lon = " << lon << " lat = " << lat
<< " closest beacon = " << sqrt( min_dist ) << endl; // << " closest beacon = " << sqrt( min_dist ) << endl;
return current->get_type(); return current->get_type();
} }
} }
cout << "lon = " << lon << " lat = " << lat // cout << "lon = " << lon << " lat = " << lat
<< " closest beacon = " << sqrt( min_dist ) << endl; // << " closest beacon = " << sqrt( min_dist ) << endl;
return FGMkrBeacon::NOBEACON; return FGMkrBeacon::NOBEACON;
} }

View file

@ -126,7 +126,7 @@ bool FGSoundMgr::update() {
if ( safety > 0.5 ) { if ( safety > 0.5 ) {
safety = 0.5; safety = 0.5;
} }
cout << "safety = " << safety << endl; // cout << "safety = " << safety << endl;
audio_sched -> setSafetyMargin ( 2 * safety ) ; audio_sched -> setSafetyMargin ( 2 * safety ) ;
if ( !audio_sched->not_working() ) { if ( !audio_sched->not_working() ) {