VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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 More...
 
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. More...
 
void generateMorseCodeSignalSequencesMap ()
 Called by the constructor to initialize a map of Morse Code sequences one for each letter and digit. More...
 
virtual void setDefaultAlternatingPeriod (float defaultPeriod)
 Set defaults used for generating signal sequences. More...
 
virtual void setMaximumLongFlashPeriod (float maximumPeriod)
 Set the maximum period for long flashing lights Defaults to 8s (this is not part of the standard, but lets us treat long flashes the way we handle other flash lengths. More...
 
virtual void setMinimumLongFlashPeriod (float minimumPeriod)
 Set the minimum period for long flashing lights Defaults to 6s (to conform to the standard, and because we use 1/3 period for the light on-time, must be 6s or more) More...
 
virtual void setMaximumFlashPeriod (float maximumPeriod)
 Set the maximum period for flashing lights Defaults to 4s (to conform to the standard, must be less than 6. More...
 
virtual void setMinimumFlashPeriod (float minimumPeriod)
 Set the minimum period for flashing lights Defaults to 2s (to conform to the standard, must be 2. More...
 
virtual void setMaximumQuickFlashPeriod (float maximumPeriod)
 Set the maximum period for quick flashing lights Defaults to 1s (to conform to the standard, must be 1s or less) More...
 
virtual void setMinimumQuickFlashPeriod (float minimumPeriod)
 Set the minimum period for quick flashing lights Defaults to 0.8s (to conform to the standard, must be > than 0.6 to not be Very Quick) More...
 
virtual void setMaximumVeryQuickFlashPeriod (float maximumPeriod)
 Set the maximum period for very quick flashing lights Defaults to 0.6s (to conform to the standard, must be 0.6s or less) More...
 
virtual void setMinimumVeryQuickFlashPeriod (float minimumPeriod)
 Set the minimum period for very quick flashing lights Defaults to 0.5s (to conform to the standard, must be > than 0.375 by enough to not be Very Quick) More...
 
virtual void setMaximumUltraQuickFlashPeriod (float maximumPeriod)
 Set the maximum period for ultra quick flashing lights Defaults to 0.375s (to conform to the standard, must be 0.375s or less) More...
 
virtual void setMinimumUltraQuickFlashPeriod (float minimumPeriod)
 Set the maimimum period for ultra quick flashing lights Defaults to 0.2s (not part of the standard, but lets us treat ultra quick flashes the way we do the other kinds) More...
 
virtual void setOnTimeFraction (float onTimeFraction)
 For lights that aren't isophased, this is the portion of the light's period that will be on. More...
 
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. More...
 
virtual void setDefaultMorseCodeDash (float defaultTime)
 Set the default on-time for a Morse code 'dash' Initialized to 2.0s. More...
 
virtual void setDefaultMorseCodeDotDashSpacing (float defaultTime)
 Set the default Morse code inter-element gap Initialized to 0.6s. More...
 
virtual void setDefaultMorseCodeLetterSpacing (float defaultTime)
 Set the default Morse code inter-letter gap. More...
 
virtual void setDefaultMorseCodeGroupSpacing (float defaultTime)
 Set the off time at the end of a Morse code group. More...
 
- Public Member Functions inherited from makVrv::DtVirtualBaseClass
 DtVirtualBaseClass ()
 Do nothing constructor. More...
 
virtual ~DtVirtualBaseClass ()
 Virtual do nothing destructor. More...
 

Static Public Member Functions

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

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. More...
 
 DtLightSignalSequenceGenerator (const DtLightSignalSequenceGenerator &rhs)
 Unimplemented Copy CTOR. More...
 
DtLightSignalSequenceGeneratoroperator= (const DtLightSignalSequenceGenerator &orig)
 Unimplemented Assignment Operator. More...
 
virtual
DtNavigationLightController::SignalSequence 
flashNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Group type-specific implementations. More...
 
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). More...
 
virtual
DtNavigationLightController::SignalSequence 
flashCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a flash composite group signal sequence. More...
 
virtual
DtNavigationLightController::SignalSequence 
longFlashNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a long flash signal sequence Ontime = P/10. More...
 
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). More...
 
virtual
DtNavigationLightController::SignalSequence 
longFlashCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a long flash composite group signal sequence Returns baseCompositeGroup called with minimum and maximum periods for a long flash. More...
 
virtual
DtNavigationLightController::SignalSequence 
quickFlashNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a quick flash signal sequence Ontime = P/10. More...
 
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). More...
 
virtual
DtNavigationLightController::SignalSequence 
quickFlashCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a quick flash composite group signal sequence Returns baseCompositeGroup called with minimum and maximum periods for a quick flash. More...
 
virtual
DtNavigationLightController::SignalSequence 
veryQuickFlashNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a very quick flash signal sequence Ontime = offtime = P/2. More...
 
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). More...
 
virtual
DtNavigationLightController::SignalSequence 
veryQuickFlashCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate a very quick flash composite group signal sequence Rreturns baseCompositeGroup called with minimum and maximum periods for a very quick flash. More...
 
virtual
DtNavigationLightController::SignalSequence 
ultraQuickFlashNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an ultra quick flash signal sequence Ontime = offtime = P/2. More...
 
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). More...
 
virtual
DtNavigationLightController::SignalSequence 
ultraQuickFlashCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an ultra quick flash composite group signal sequence Returns baseCompositeGroup called with minimum and maximum periods for an ultra quick flash. More...
 
virtual
DtNavigationLightController::SignalSequence 
occultingNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an occulting signal sequence Offtime = P/10. More...
 
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). More...
 
virtual
DtNavigationLightController::SignalSequence 
occultingCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an occulting composite group signal sequence. More...
 
virtual
DtNavigationLightController::SignalSequence 
alternatingNoGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an alternating signal sequence Offtime = 0. More...
 
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). More...
 
virtual
DtNavigationLightController::SignalSequence 
alternatingCompositeGroup (float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 Generate an alternating composite group signal sequence. More...
 
virtual
DtNavigationLightController::SignalSequence 
baseCompositeGroup (float minFlashPeriod, float maxFlashPeriod, float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 
virtual SignalGroupType signalGroupType (const DtLightMarkerStringParser::SiggrpData &data) const
 Determine the signal group type based on the parsed signal group data. More...
 
virtual
DtNavigationLightController::SignalSequence 
morseCodeSequence (char character) const
 Get the morse code sequence for the indicated character. More...
 
virtual
DtNavigationLightController::SignalSequence 
fixedSignalSequence (float period, const std::string &signalGroup) const
 Light Characteristic Implementations. More...
 
virtual
DtNavigationLightController::SignalSequence 
flashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 2. More...
 
virtual
DtNavigationLightController::SignalSequence 
longFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 3. More...
 
virtual
DtNavigationLightController::SignalSequence 
quickFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 4. More...
 
virtual
DtNavigationLightController::SignalSequence 
veryQuickFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 5. More...
 
virtual
DtNavigationLightController::SignalSequence 
ultraQuickFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 6. More...
 
virtual
DtNavigationLightController::SignalSequence 
isophasedSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 7. More...
 
virtual
DtNavigationLightController::SignalSequence 
occultingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 8. More...
 
virtual
DtNavigationLightController::SignalSequence 
interruptedQuickFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 9. More...
 
virtual
DtNavigationLightController::SignalSequence 
interruptedVeryQuickFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 10. More...
 
virtual
DtNavigationLightController::SignalSequence 
interruptedUltraQuickFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 11. More...
 
virtual
DtNavigationLightController::SignalSequence 
morseSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 12. More...
 
virtual
DtNavigationLightController::SignalSequence 
fixedFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 13. More...
 
virtual
DtNavigationLightController::SignalSequence 
flashingLongFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 14. More...
 
virtual
DtNavigationLightController::SignalSequence 
occultingFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 15. More...
 
virtual
DtNavigationLightController::SignalSequence 
fixedLongFlashingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 16. More...
 
virtual
DtNavigationLightController::SignalSequence 
occultingAlternatingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 17. More...
 
virtual
DtNavigationLightController::SignalSequence 
longFlashAlternatingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 18. More...
 
virtual
DtNavigationLightController::SignalSequence 
flashAlternatingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 19. More...
 
virtual
DtNavigationLightController::SignalSequence 
groupAlternatingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 20. More...
 
virtual
DtNavigationLightController::SignalSequence 
quickFlashLongFlashSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 25. More...
 
virtual
DtNavigationLightController::SignalSequence 
veryQuickFlashLongFlashSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 26. More...
 
virtual
DtNavigationLightController::SignalSequence 
ultraQuickFlashLongFlashSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 27. More...
 
virtual
DtNavigationLightController::SignalSequence 
baseFlashLongFlashSignalSequence (float minFlashPeriod, float maxFlashPeriod, float period, const DtLightMarkerStringParser::SignalGroup &signalGroup) const
 The actual implementation of LITCHR 25, 26, and 27 is done here. More...
 
virtual
DtNavigationLightController::SignalSequence 
alternatingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 28. More...
 
virtual
DtNavigationLightController::SignalSequence 
fixedAlternatingSignalSequence (float period, const std::string &signalGroup) const
 LITCHR == 29. More...
 

Protected Attributes

float myMaximumLongFlashPeriod
 
float myMinimumLongFlashPeriod
 
float myMaximumFlashPeriod
 
float myMinimumFlashPeriod
 
float myMaximumQuickFlashPeriod
 
float myMinimumQuickFlashPeriod
 
float myMaximumVeryQuickFlashPeriod
 
float myMinimumVeryQuickFlashPeriod
 
float myMinimumUltraQuickFlashPeriod
 
float myMaximumUltraQuickFlashPeriod
 
float myDefaultMorseCodeDot
 
float myDefaultMorseCodeDash
 
float myDefaultMorseCodeDotDashSpacing
 
float myDefaultMorseCodeLetterSpacing
 
float myDefaultMorseCodeGroupSpacing
 
float myDefaultAlternatingPeriod
 
float myOnTimeFraction
 
MorseCodeMap myMorseCodeMap
 

Friends

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

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 min and max 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::setMaximumLongFlashPeriod ( float  maximumPeriod)
virtual

Set the maximum period for long flashing lights Defaults to 8s (this is not part of the standard, but lets us treat long flashes the way we handle other flash lengths.

virtual void makVrv::DtLightSignalSequenceGenerator::setMinimumLongFlashPeriod ( float  minimumPeriod)
virtual

Set the minimum period for long flashing lights Defaults to 6s (to conform to the standard, and because we use 1/3 period for the light on-time, must be 6s or more)

virtual void makVrv::DtLightSignalSequenceGenerator::setMaximumFlashPeriod ( float  maximumPeriod)
virtual

Set the maximum period for flashing lights Defaults to 4s (to conform to the standard, must be less than 6.

by enough to be distinguishable from a long flash)

virtual void makVrv::DtLightSignalSequenceGenerator::setMinimumFlashPeriod ( float  minimumPeriod)
virtual

Set the minimum period for flashing lights Defaults to 2s (to conform to the standard, must be 2.

or more)

virtual void makVrv::DtLightSignalSequenceGenerator::setMaximumQuickFlashPeriod ( float  maximumPeriod)
virtual

Set the maximum period for quick flashing lights Defaults to 1s (to conform to the standard, must be 1s or less)

virtual void makVrv::DtLightSignalSequenceGenerator::setMinimumQuickFlashPeriod ( float  minimumPeriod)
virtual

Set the minimum period for quick flashing lights Defaults to 0.8s (to conform to the standard, must be > than 0.6 to not be Very Quick)

virtual void makVrv::DtLightSignalSequenceGenerator::setMaximumVeryQuickFlashPeriod ( float  maximumPeriod)
virtual

Set the maximum period for very quick flashing lights Defaults to 0.6s (to conform to the standard, must be 0.6s or less)

virtual void makVrv::DtLightSignalSequenceGenerator::setMinimumVeryQuickFlashPeriod ( float  minimumPeriod)
virtual

Set the minimum period for very quick flashing lights Defaults to 0.5s (to conform to the standard, must be > than 0.375 by enough to not be Very Quick)

virtual void makVrv::DtLightSignalSequenceGenerator::setMaximumUltraQuickFlashPeriod ( float  maximumPeriod)
virtual

Set the maximum period for ultra quick flashing lights Defaults to 0.375s (to conform to the standard, must be 0.375s or less)

virtual void makVrv::DtLightSignalSequenceGenerator::setMinimumUltraQuickFlashPeriod ( float  minimumPeriod)
virtual

Set the maimimum period for ultra quick flashing lights Defaults to 0.2s (not part of the standard, but lets us treat ultra quick flashes the way we do the other kinds)

virtual void makVrv::DtLightSignalSequenceGenerator::setOnTimeFraction ( float  onTimeFraction)
virtual

For lights that aren't isophased, this is the portion of the light's period that will be on.

Note that for occulting lights, this is actually the 'off' time fraction. Default is 1/3.

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:

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 baseFlashLongFlashSignalSequence called with min and max periods for standard Flash

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.

Group Alternating.

  • 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 baseFlashLongFlashSignalSequence called with min and max periods for Quick Flash

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

LITCHR == 26.

Very Quick Flashing Long Flashing. Returns baseFlashLongFlashSignalSequence called with min and max periods for Very Quick Flash

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

LITCHR == 27.

Ultra Quick Flashing Long Flashing. Returns baseFlashLongFlashSignalSequence called with min and max periods for Ultra Quick Flash

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

The actual implementation of LITCHR 25, 26, and 27 is done here.

Each calls this method with the min and max periods for its starting flash type

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 baseCompositeGroup called with minimum and maximum periods for a standard flash

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 baseCompositeGroup called with minimum and maximum periods for a long flash.

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 baseCompositeGroup called with minimum and maximum periods for a quick flash.

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 Rreturns baseCompositeGroup called with minimum and maximum periods for a very quick flash.

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 baseCompositeGroup called with minimum and maximum periods for an ultra quick flash.

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 DtNavigationLightController::SignalSequence makVrv::DtLightSignalSequenceGenerator::baseCompositeGroup ( float  minFlashPeriod,
float  maxFlashPeriod,
float  period,
const DtLightMarkerStringParser::SignalGroup signalGroup 
) const
protectedvirtual
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::myMaximumLongFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myMinimumLongFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myMaximumFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myMinimumFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myMaximumQuickFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myMinimumQuickFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myMaximumVeryQuickFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myMinimumVeryQuickFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myMinimumUltraQuickFlashPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myMaximumUltraQuickFlashPeriod
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
float makVrv::DtLightSignalSequenceGenerator::myDefaultAlternatingPeriod
protected
float makVrv::DtLightSignalSequenceGenerator::myOnTimeFraction
protected
MorseCodeMap makVrv::DtLightSignalSequenceGenerator::myMorseCodeMap
protected

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

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)