VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends
makVrv::DtLightSignalSequenceGenerator Class Reference

DtLightSignalSequenceGenerator generates a sequence of on/off times like the S57 SIGSEQ attribute based on the LITCHR, SIGPER, and SIGGRP atributes. More...

Inheritance diagram for makVrv::DtLightSignalSequenceGenerator:
Inheritance graph
[legend]

Public Types

enum  NavigationLightCharacteristic {
  LightCharacteristicFixed = 1, LightCharacteristicFlashing = 2, LightCharacteristicLongFlashing = 3, LightCharacteristicQuickFlashing = 4,
  LightCharacteristicVeryQuickFlashing = 5, LightCharacteristicUltraQuickFlashing = 6, LightCharacteristicIsophased = 7, LightCharacteristicOcculting = 8,
  LightCharacteristicInterruptedQuickFlashing = 9, LightCharacteristicInterruptedVeryQuickFlashing = 10, LightCharacteristicInterruptedUltraQuickFlashing = 11, LightCharacteristicMorse = 12,
  LightCharacteristicFixedFlash = 13, LightCharacteristicFlashLongFlash = 14, LightCharacteristicOccultingFlash = 15, LightCharacteristicFixedLongFlash = 16,
  LightCharacteristicOccultingAlternating = 17, LightCharacteristicLongFlashAlternating = 18, LightCharacteristicFlashAlternating = 19, LightCharacteristicGroupAlternating = 20,
  LightCharacteristicQuickFlashLongFlash = 25, LightCharacteristicVeryQuickFlashLongFlash = 26, LightCharacteristicUntraQuickFlashLongFlash = 27, LightCharacteristicAlternating = 28,
  LightCharacteristicFixedAlternatingFlashing = 29
}

Public Member Functions

virtual ~DtLightSignalSequenceGenerator ()
 virtual DTOR
DtNavigationLightController::SignalSequence generateSigseq (int lightCharacteristic, float period, const std::string &signalGroup) const
 Geerate a signal sequence based on the S-57 light characteristic, period, and signal group parameters.
void generateMorseCodeSignalSequencesMap ()
 Called by the constructor to initialize a map of Morse Code sequences one for each letter and digit.
virtual void setDefaultAlternatingPeriod (float defaultPeriod)
 Set defaults used for generating signal sequences.
virtual void setDefaultFlashPeriod (float defaultPeriod)
 Set the default period for flashing lights Initialized to 2s.
virtual void setDefaultLongFlashPeriod (float defaultPeriod)
 Set the default period for long lights Initialized to 10s.
virtual void setDefaultQuickFlashPeriod (float defaultPeriod)
 Set the default period for quick flashing lights Initialized to 1s.
virtual void setDefaultVeryQuickFlashPeriod (float defaultPeriod)
 Set the default period for very quick flashing lights Initialized to 0.4s.
virtual void setDefaultUltraQuickFlashPeriod (float defaultPeriod)
 Set the default period for ultra quick flashing lights Initialized to 0.2s.
virtual void setMinimumFlashOnTime (float defaultTime)
 Set the minimum on-time for all flashing lights.
virtual void setMinimumLongFlashOnTime (float defaultTime)
 Set the minimum on-time for a long flashing light.
virtual void setDefaultMorseCodeDot (float defaultTime)
 Set default values used for generating Morse code signal sequences The international Morse code standards states: short mark (·) — "dot duration" is one time unit long longer mark (–) — three time units long inter-element gap between the dots and dashes within a character — one dot duration or one unit long short gap (between letters) — three time units long The defaults used do NOT conform strictly to these rules, but follow the example sequences found on all Morse-code signalling buoys in Boston and Honolulu harbors.
virtual void setDefaultMorseCodeDash (float defaultTime)
 Set the default on-time for a Morse code 'dash' Initialized to 2.0s.
virtual void setDefaultMorseCodeDotDashSpacing (float defaultTime)
 Set the default Morse code inter-element gap Initialized to 0.6s.
virtual void setDefaultMorseCodeLetterSpacing (float defaultTime)
 Set the default Morse code inter-letter gap.
virtual void setDefaultMorseCodeGroupSpacing (float defaultTime)
 Set the off time at the end of a Morse code group.
- Public Member Functions inherited from makVrv::DtVirtualBaseClass
 DtVirtualBaseClass ()
 Do nothing constructor.
virtual ~DtVirtualBaseClass ()
 Virtual do nothing destructor.

Static Public Member Functions

static
DtLightSignalSequenceGenerator
instance (DtDe &de)
 Access a DtLightSignalSequenceGenerator.
static float sumSignalSequence (DtNavigationLightController::SignalSequence sequence)
 Calculate the total time for the specified sequence or sequence fragment.
static void printSignalSequence (const DtNavigationLightController::SignalSequence &seq)
 Prints the sequence to std::cout. No newline is printed.

Protected Types

enum  SignalGroupType { SignalGroupTypeNoGroup, SignalGroupTypeSimpleGroup, SignalGroupTypeCompositeGroup }
 A SIGGRP group may be empty (or a group of size 1, which is equivalent); a simple group which is just the number of flashes in the group; or a composite group, which is used with light characteristics the have different flash types (like 14-16 and 25-27) More...
typedef boost::unordered_map
< char,
DtNavigationLightController::SignalSequence
MorseCodeMap

Protected Member Functions

 DtLightSignalSequenceGenerator ()
 CTOR.
 DtLightSignalSequenceGenerator (const DtLightSignalSequenceGenerator &rhs)
 Unimplemented Copy CTOR.
DtLightSignalSequenceGeneratoroperator= (const DtLightSignalSequenceGenerator &orig)
 Unimplemented Assignment Operator.
virtual
DtNavigationLightController::SignalSequence 
flashNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Group type-specific implementations.
virtual
DtNavigationLightController::SignalSequence 
flashSimpleGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a simple flash group signal sequence, A simple group is one that just indicates a group size, like (4).
virtual
DtNavigationLightController::SignalSequence 
flashCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a flash composite group signal sequence.
virtual
DtNavigationLightController::SignalSequence 
longFlashNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a long flash signal sequence Ontime = P/10.
virtual
DtNavigationLightController::SignalSequence 
longFlashSimpleGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a simple long flash group signal sequence, A simple group is one that just indicates a group size, like (4).
virtual
DtNavigationLightController::SignalSequence 
longFlashCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a long flash composite group signal sequence.
virtual
DtNavigationLightController::SignalSequence 
quickFlashNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a quick flash signal sequence Ontime = P/10.
virtual
DtNavigationLightController::SignalSequence 
quickFlashSimpleGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a simple quick flash group signal sequence, A simple group is one that just indicates a group size, like (4).
virtual
DtNavigationLightController::SignalSequence 
quickFlashCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a quick flash composite group signal sequence.
virtual
DtNavigationLightController::SignalSequence 
veryQuickFlashNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a very quick flash signal sequence Ontime = offtime = P/2.
virtual
DtNavigationLightController::SignalSequence 
veryQuickFlashSimpleGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a simple very flash group signal sequence, A simple group is one that just indicates a group size, like (4).
virtual
DtNavigationLightController::SignalSequence 
veryQuickFlashCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a very quick flash composite group signal sequence.
virtual
DtNavigationLightController::SignalSequence 
ultraQuickFlashNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an ultra quick flash signal sequence Ontime = offtime = P/2.
virtual
DtNavigationLightController::SignalSequence 
ultraQuickFlashSimpleGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a simple ultra flash group signal sequence, A simple group is one that just indicates a group size, like (4).
virtual
DtNavigationLightController::SignalSequence 
ultraQuickFlashCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an ultra quick flash composite group signal sequence.
virtual
DtNavigationLightController::SignalSequence 
occultingNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an occulting signal sequence Offtime = P/10.
virtual
DtNavigationLightController::SignalSequence 
occultingSimpleGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an occulting group signal sequence, A simple group is one that just indicates a group size, like (4).
virtual
DtNavigationLightController::SignalSequence 
occultingCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an occulting composite group signal sequence.
virtual
DtNavigationLightController::SignalSequence 
alternatingNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an alternating signal sequence Offtime = 0.
virtual
DtNavigationLightController::SignalSequence 
alternatingSimpleGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an alternating group signal sequence, A simple group is one that just indicates a group size, like (4).
virtual
DtNavigationLightController::SignalSequence 
alternatingCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an alternating composite group signal sequence.
virtual SignalGroupType signalGroupType (const DtLightMarkerStringParser::SiggrpData &data) const
 Determine the signal group type based on the parsed signal group data.
virtual
DtNavigationLightController::SignalSequence 
morseCodeSequence (char character) const
 Get the morse code sequence for the indicated character.
virtual
DtNavigationLightController::SignalSequence 
fixedSignalSequence (float period, const std::string &signalGroup) const
 Light Characteristic Implementations.
virtual
DtNavigationLightController::SignalSequence 
flashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 2.
virtual
DtNavigationLightController::SignalSequence 
longFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 3.
virtual
DtNavigationLightController::SignalSequence 
quickFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 4.
virtual
DtNavigationLightController::SignalSequence 
veryQuickFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 5.
virtual
DtNavigationLightController::SignalSequence 
ultraQuickFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 6.
virtual
DtNavigationLightController::SignalSequence 
isophasedSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 7.
virtual
DtNavigationLightController::SignalSequence 
occultingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 8.
virtual
DtNavigationLightController::SignalSequence 
interruptedQuickFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 9.
virtual
DtNavigationLightController::SignalSequence 
interruptedVeryQuickFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 10.
virtual
DtNavigationLightController::SignalSequence 
interruptedUltraQuickFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 11.
virtual
DtNavigationLightController::SignalSequence 
morseSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 12.
virtual
DtNavigationLightController::SignalSequence 
fixedFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 13.
virtual
DtNavigationLightController::SignalSequence 
flashingLongFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 14.
virtual
DtNavigationLightController::SignalSequence 
occultingFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 15.
virtual
DtNavigationLightController::SignalSequence 
fixedLongFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 16.
virtual
DtNavigationLightController::SignalSequence 
occultingAlternatingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 17.
virtual
DtNavigationLightController::SignalSequence 
longFlashAlternatingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 18.
virtual
DtNavigationLightController::SignalSequence 
flashAlternatingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 19.
virtual
DtNavigationLightController::SignalSequence 
groupAlternatingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 20.
virtual
DtNavigationLightController::SignalSequence 
quickFlashLongFlashSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 25.
virtual
DtNavigationLightController::SignalSequence 
veryQuickFlashLongFlashSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 26.
virtual
DtNavigationLightController::SignalSequence 
ultraQuickFlashLongFlashSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 27.
virtual
DtNavigationLightController::SignalSequence 
alternatingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 28.
virtual
DtNavigationLightController::SignalSequence 
fixedAlternatingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 29.

Protected Attributes

float myDefaultAlternatingPeriod
float myDefaultLongFlashPeriod
float myDefaultQuickFlashPeriod
float myDefaultVeryQuickFlashPeriod
float myDefaultUltraQuickFlashPeriod
float myDefaultFlashPeriod
float myMinimumFlashOnTime
float myMinimumLongFlashOnTime
float myDefaultMorseCodeDot
float myDefaultMorseCodeDash
float myDefaultMorseCodeDotDashSpacing
float myDefaultMorseCodeLetterSpacing
float myDefaultMorseCodeGroupSpacing
MorseCodeMap myMorseCodeMap

Friends

class DtLightSignalSequenceGeneratorCreator
 The class may only be instantiated through the friend creator.

Detailed Description

DtLightSignalSequenceGenerator generates a sequence of on/off times like the S57 SIGSEQ attribute based on the LITCHR, SIGPER, and SIGGRP atributes.

While the S57 SIGSEQ attribute provides the most accuracy as to how a navigation light operates, it is an optional parameter and not always included. An instance of this class can be used to approximate the light sequence to the point where the light's sequence properties should be recognizable.

Member Typedef Documentation

Member Enumeration Documentation

Enumerator:
LightCharacteristicFixed 
LightCharacteristicFlashing 
LightCharacteristicLongFlashing 
LightCharacteristicQuickFlashing 
LightCharacteristicVeryQuickFlashing 
LightCharacteristicUltraQuickFlashing 
LightCharacteristicIsophased 
LightCharacteristicOcculting 
LightCharacteristicInterruptedQuickFlashing 
LightCharacteristicInterruptedVeryQuickFlashing 
LightCharacteristicInterruptedUltraQuickFlashing 
LightCharacteristicMorse 
LightCharacteristicFixedFlash 
LightCharacteristicFlashLongFlash 
LightCharacteristicOccultingFlash 
LightCharacteristicFixedLongFlash 
LightCharacteristicOccultingAlternating 
LightCharacteristicLongFlashAlternating 
LightCharacteristicFlashAlternating 
LightCharacteristicGroupAlternating 
LightCharacteristicQuickFlashLongFlash 

21-24 No longer used.

LightCharacteristicVeryQuickFlashLongFlash 
LightCharacteristicUntraQuickFlashLongFlash 
LightCharacteristicAlternating 
LightCharacteristicFixedAlternatingFlashing 

A SIGGRP group may be empty (or a group of size 1, which is equivalent); a simple group which is just the number of flashes in the group; or a composite group, which is used with light characteristics the have different flash types (like 14-16 and 25-27)

Enumerator:
SignalGroupTypeNoGroup 
SignalGroupTypeSimpleGroup 
SignalGroupTypeCompositeGroup 

Constructor & Destructor Documentation

virtual makVrv::DtLightSignalSequenceGenerator::~DtLightSignalSequenceGenerator ( )
virtual

virtual DTOR

makVrv::DtLightSignalSequenceGenerator::DtLightSignalSequenceGenerator ( )
protected

CTOR.

Only callable by friend creator

makVrv::DtLightSignalSequenceGenerator::DtLightSignalSequenceGenerator ( const DtLightSignalSequenceGenerator rhs)
protected

Unimplemented Copy CTOR.

Member Function Documentation

static DtLightSignalSequenceGenerator& makVrv::DtLightSignalSequenceGenerator::instance ( DtDe de)
static
DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::generateSigseq ( int  lightCharacteristic,
float  period,
const std::string &  signalGroup 
) const

Geerate a signal sequence based on the S-57 light characteristic, period, and signal group parameters.

A signal sequence is a vector of floats which represent light on and off times, respectively

void makVrv::DtLightSignalSequenceGenerator::generateMorseCodeSignalSequencesMap ( )

Called by the constructor to initialize a map of Morse Code sequences one for each letter and digit.

This needs to be called again if any of the Morse code-related defaults are changed

virtual void makVrv::DtLightSignalSequenceGenerator::setDefaultAlternatingPeriod ( float  defaultPeriod)
virtual

Set defaults used for generating signal sequences.

The default periods are technically not necessary, since this is a required attribute for all non-fixed lights. The are included for completeness in the case(s) where data may be incomplete. Set the default period for alternating lights Initialized to 4s

virtual void makVrv::DtLightSignalSequenceGenerator::setDefaultFlashPeriod ( float  defaultPeriod)
virtual

Set the default period for flashing lights Initialized to 2s.

virtual void makVrv::DtLightSignalSequenceGenerator::setDefaultLongFlashPeriod ( float  defaultPeriod)
virtual

Set the default period for long lights Initialized to 10s.

virtual void makVrv::DtLightSignalSequenceGenerator::setDefaultQuickFlashPeriod ( float  defaultPeriod)
virtual

Set the default period for quick flashing lights Initialized to 1s.

virtual void makVrv::DtLightSignalSequenceGenerator::setDefaultVeryQuickFlashPeriod ( float  defaultPeriod)
virtual

Set the default period for very quick flashing lights Initialized to 0.4s.

virtual void makVrv::DtLightSignalSequenceGenerator::setDefaultUltraQuickFlashPeriod ( float  defaultPeriod)
virtual

Set the default period for ultra quick flashing lights Initialized to 0.2s.

virtual void makVrv::DtLightSignalSequenceGenerator::setMinimumFlashOnTime ( float  defaultTime)
virtual

Set the minimum on-time for all flashing lights.

The on-time for an ungrouped light is typically 10% of the period, but not less than this minimum. The minimum is not used for very quick or ultra quick flashing lights, since their periods require a smaller on-time. These two faster flash types are typically isophased (and grouped). Initialized to 0.3 seconds

virtual void makVrv::DtLightSignalSequenceGenerator::setMinimumLongFlashOnTime ( float  defaultTime)
virtual

Set the minimum on-time for a long flashing light.

Initialized to 2s

virtual void makVrv::DtLightSignalSequenceGenerator::setDefaultMorseCodeDot ( float  defaultTime)
virtual

Set default values used for generating Morse code signal sequences The international Morse code standards states: short mark (·) — "dot duration" is one time unit long longer mark (–) — three time units long inter-element gap between the dots and dashes within a character — one dot duration or one unit long short gap (between letters) — three time units long The defaults used do NOT conform strictly to these rules, but follow the example sequences found on all Morse-code signalling buoys in Boston and Honolulu harbors.

If you change them, call generateMorseCodeSignalSequencesMap() to regenerate the character map. Set the default on-time for a Morse code 'dot' Initialized to 0.4s

virtual void makVrv::DtLightSignalSequenceGenerator::setDefaultMorseCodeDash ( float  defaultTime)
virtual

Set the default on-time for a Morse code 'dash' Initialized to 2.0s.

virtual void makVrv::DtLightSignalSequenceGenerator::setDefaultMorseCodeDotDashSpacing ( float  defaultTime)
virtual

Set the default Morse code inter-element gap Initialized to 0.6s.

virtual void makVrv::DtLightSignalSequenceGenerator::setDefaultMorseCodeLetterSpacing ( float  defaultTime)
virtual

Set the default Morse code inter-letter gap.

Initialized to 2.0s

virtual void makVrv::DtLightSignalSequenceGenerator::setDefaultMorseCodeGroupSpacing ( float  defaultTime)
virtual

Set the off time at the end of a Morse code group.

Initialized to 9.0s

DtLightSignalSequenceGenerator& makVrv::DtLightSignalSequenceGenerator::operator= ( const DtLightSignalSequenceGenerator orig)
protected

Unimplemented Assignment Operator.

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::fixedSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

Light Characteristic Implementations.

For this documentation, on and off times are indicated between '[]'. The first is always an 'on'time, and then alternating 'off', 'on' etc. Abbreviations used: P = Period, G = group sizeLITCHR == 1. Fixed. Returns an empty sequence, which is interpreted as fixed by the light controller

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::flashingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 2.

Flashing. Based on the Signal Group Type:

  • No Group: returns flashingNoGroup()
  • Simple Group: returns flashingSimpleGroup()
  • Composite Group: returns flashingCompositeGroup()
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::longFlashingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 3.

Long Flashing. Based on the Signal Group Type:

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::quickFlashingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 4.

Quick Flashing. Based on the Signal Group Type:

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::veryQuickFlashingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 5.

Very Quick Flashing. Based on the Signal Group Type:

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::ultraQuickFlashingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 6.

Ultra Quick Flashing. Based on the Signal Group Type:

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::isophasedSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 7.

Isophased. Based on the Signal Group Type:

  • No Group: Ontime = offtime = P/2.. Returns [ontime][offtime]
  • Simple Group: Ontime = offtime = P/(G*4.) Returns [ontime][offtime] for each group except the last, then [ontime], then [P/2.+offtime]
  • Composite Group: returns empty sequence [] ; prints 'unimplemented' warning
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::occultingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 8.

Occulting. Based on the Signal Group Type:

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::interruptedQuickFlashingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 9.

Interrupted Very Quick Flashing.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::interruptedVeryQuickFlashingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 10.

Interrupted Very Quick Flashing.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::interruptedUltraQuickFlashingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 11.

Interrupted Ultra Quick Flashing.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::morseSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 12.

Morse Code.

  • returns morse coded sequence(s) for the specified letter(s) and/or digit(s)returned by morseCodeSequence() followed by the remainder of time from the specified period. Example. Given a Period of 16.s and a SIGGRP of (AA) - morseCodeSequence('A') returns [myDefaultMorseCodeDot] [myDefaultMorseCodeDotDashSpacing] [myDefaultMorseCodeDash]. To add the second 'A', we need a letter spacing: [myDefaultMorseCodeLetterSpacing] and then repeat the 'A' sequence: [myDefaultMorseCodeDot] [myDefaultMorseCodeDotDashSpacing] [myDefaultMorseCodeDash]. The method then adds up all the time used by the sequence 'AA'. Using the default timings, that would be 0.4+0.6+2.0+2.0+0.4+0.6+2.0 = 8.0. So a final offtime of 16.-8.=8. seconds ends the sequence.
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::fixedFlashingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 13.

Fixed Flashing.

  • returns flashSignalSequence() and prints a warning to console. The current light model implementation cannot support this type, as it requires changing intensity rather than just on/off states
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::flashingLongFlashingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 14.

Flashing Long Flashing.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::occultingFlashingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 15.

Occulting Long Flashing.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::fixedLongFlashingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 16.

Fixed Long Flashing

  • returns flashSignalSequence() and prints a warning to console. The current light model implementation cannot support this type, as it requires changing intensity rather than just on/off states
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::occultingAlternatingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 17.

Occulting Alternating. Based on the Signal Group Type:

  • No Group: This function assumes that one sequence is an occulting flash for each alternating color. Offtime = P/20. (or the minimum); ontime = P/2. - offtime Returns [ontime] [offtime] [ontime] [offtime]
  • Simple Group: This function assumes that each 'group' is an occulting flash of each alternating color. Hence there are G * 2 occults. Offtime = P/(40.*G)(or the minimum flash); ontime = P/(4.*G) - offtime Returns [ontime][offtime][ontime][offtime] for each group except the last, then [ontime][offtime][ontime], then [P/2. + offtime]
  • Composite Group: returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::longFlashAlternatingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 18.

Long Flash Alternating. Based on the Signal Group Type:

  • No Group: This function assumes that one sequence is an long flash for each alternating color. Ontime = P/20. (or the minimum long flash); offtime = P/2. - ontime Returns [ontime] [offtime] [ontime] [offtime]
  • Simple Group: This function assumes that each 'group' is a long flash of each alternating color. Hence there are G * 2 flashes. Ontime = P/(40.*G)(or the minimum long flash); offtime = P/(4.*G) - ontime Returns [ontime][offtime][ontime][offtime] for each group except the last, then [ontime][offtime][ontime], then [P/2. + offtime]
  • Composite Group: returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::flashAlternatingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 19.

Flash Alternating. Based on the Signal Group Type:

  • No Group: This function assumes that one sequence is a flash for each alternating color. Ontime = P/20. (or the minimum flash); offtime = P/2. - ontime Returns [ontime] [offtime] [ontime] [offtime]
  • Simple Group: This function assumes that each 'group' is a flash of each alternating color. Hence there are G * 2 flashes. Ontime = P/(40.*G)(or the minimum flash); offtime = P/(4.*G) - ontime Returns [ontime][offtime][ontime][offtime] for each group except the last, then [ontime][offtime][ontime], then [P/2. + offtime]
  • Composite Group: returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::groupAlternatingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 20.

Flashing Long Flashing.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::quickFlashLongFlashSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 25.

Quick Flashing Long Flashing.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::veryQuickFlashLongFlashSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 26.

Very Quick Flashing Long Flashing.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::ultraQuickFlashLongFlashSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 27.

Ultra Quick Flashing Long Flashing.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::alternatingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 28.

Alternating. Based on the Signal Group Type:

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::fixedAlternatingSignalSequence ( float  period,
const std::string &  signalGroup 
) const
protectedvirtual

LITCHR == 29.

Fixed Alternating.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::flashNoGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Group type-specific implementations.

It is expected that these might be reusable when implementing some of the compound light characteristics. Generate a flash signal sequence Ontime = P/10. (or the minimum flash time); offtime = P - ontime Returns [ontime][offtime]

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::flashSimpleGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate a simple flash group signal sequence, A simple group is one that just indicates a group size, like (4).

Ontime = P/(20.*G) (or the minimum flash time); offtime = P/(2.*G) - ontime Returns [ontime][offtime] for all but the last group, then [ontime], then [P/2. + offtime]

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::flashCompositeGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate a flash composite group signal sequence.

A composite group is a group with 2 or more subgroups, like (2 + 1)

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::longFlashNoGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate a long flash signal sequence Ontime = P/10.

(or the minimum long flash time); offtime = P - ontime Returns [ontime][offtime]

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::longFlashSimpleGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate a simple long flash group signal sequence, A simple group is one that just indicates a group size, like (4).

Ontime = P/(20.*G) (or the minimum long flash time); offtime = P/(2.*G) - ontime Returns [ontime][offtime] for all but the last group, then [ontime], then [P/2. + offtime]

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::longFlashCompositeGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate a long flash composite group signal sequence.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::quickFlashNoGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate a quick flash signal sequence Ontime = P/10.

(or the minimum flash time); offtime = P - ontime Returns [ontime][offtime]

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::quickFlashSimpleGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate a simple quick flash group signal sequence, A simple group is one that just indicates a group size, like (4).

Ontime = P/(4.*G); offtime = P/(4.*G) Returns [ontime][offtime] for all but the last group, then [ontime], then [P/2. + offtime]

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::quickFlashCompositeGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate a quick flash composite group signal sequence.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::veryQuickFlashNoGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate a very quick flash signal sequence Ontime = offtime = P/2.

Returns [ontime][offtime]

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::veryQuickFlashSimpleGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate a simple very flash group signal sequence, A simple group is one that just indicates a group size, like (4).

Ontime = P/(4.*G); offtime = P/(4.*G) Returns [ontime][offtime] for all but the last group, then [ontime], then [P/2. + offtime]

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::veryQuickFlashCompositeGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate a very quick flash composite group signal sequence.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::ultraQuickFlashNoGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate an ultra quick flash signal sequence Ontime = offtime = P/2.

Returns [ontime][offtime]

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::ultraQuickFlashSimpleGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate a simple ultra flash group signal sequence, A simple group is one that just indicates a group size, like (4).

Ontime = P/(4.*G); offtime = P/(4.*G) Returns [ontime][offtime] for all but the last group, then [ontime], then [P/2. + offtime]

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::ultraQuickFlashCompositeGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate an ultra quick flash composite group signal sequence.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::occultingNoGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate an occulting signal sequence Offtime = P/10.

(or the minimum flash time); ontime = P - offtime Returns [ontime][offtime]

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::occultingSimpleGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate an occulting group signal sequence, A simple group is one that just indicates a group size, like (4).

Offtime = P/(20.*G) (or the minimum flash time); ontime = P/(2.*G) - offtime Returns [ontime][offtime] for all but the last group, then [ontime], then [P/2. + offtime]

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::occultingCompositeGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate an occulting composite group signal sequence.

  • returns empty sequence [] ; prints 'unimplemented'
virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::alternatingNoGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate an alternating signal sequence Offtime = 0.

; ontime = P/2. Returns [ontime][offtime][ontime][offtime] Note: a color switch happens ach time a multicolor light switches from off to on; the existence of the offtime, even though it is 0., will cause the light to switch to the next color

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::alternatingSimpleGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate an alternating group signal sequence, A simple group is one that just indicates a group size, like (4).

Ontime = P/(4.*G); offtime = 0. Returns [ontime][offtime][ontime][offtime] for all but the last group, then [ontime][offtime][ontime], then [P/2. + offtime]

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::alternatingCompositeGroup ( float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual

Generate an alternating composite group signal sequence.

  • returns empty sequence [] ; prints 'unimplemented'
virtual SignalGroupType makVrv::DtLightSignalSequenceGenerator::signalGroupType ( const DtLightMarkerStringParser::SiggrpData data) const
protectedvirtual

Determine the signal group type based on the parsed signal group data.

virtual DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::morseCodeSequence ( char  character) const
protectedvirtual

Get the morse code sequence for the indicated character.

static float makVrv::DtLightSignalSequenceGenerator::sumSignalSequence ( DtNavigationLightController::SignalSequence  sequence)
static

Calculate the total time for the specified sequence or sequence fragment.

static void makVrv::DtLightSignalSequenceGenerator::printSignalSequence ( const DtNavigationLightController::SignalSequence seq)
static

Prints the sequence to std::cout. No newline is printed.

Friends And Related Function Documentation

The class may only be instantiated through the friend creator.

Member Data Documentation

float makVrv::DtLightSignalSequenceGenerator::myDefaultAlternatingPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myDefaultLongFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myDefaultQuickFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myDefaultVeryQuickFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myDefaultUltraQuickFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myDefaultFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myMinimumFlashOnTime
protected
float makVrv::DtLightSignalSequenceGenerator::myMinimumLongFlashOnTime
protected
float makVrv::DtLightSignalSequenceGenerator::myDefaultMorseCodeDot
protected
float makVrv::DtLightSignalSequenceGenerator::myDefaultMorseCodeDash
protected
float makVrv::DtLightSignalSequenceGenerator::myDefaultMorseCodeDotDashSpacing
protected
float makVrv::DtLightSignalSequenceGenerator::myDefaultMorseCodeLetterSpacing
protected
float makVrv::DtLightSignalSequenceGenerator::myDefaultMorseCodeGroupSpacing
protected
MorseCodeMap makVrv::DtLightSignalSequenceGenerator::myMorseCodeMap
protected

The documentation for this class was generated from the following file:

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)