![]() |
VR-Forces 4.3 Class Documentation
|
DtLightSignalSequenceGenerator generates a sequence of on/off times like the S57 SIGSEQ attribute based on the LITCHR, SIGPER, and SIGGRP atributes. More...

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. | |
| DtLightSignalSequenceGenerator & | operator= (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. | |
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.
|
protected |
|
protected |
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)
|
virtual |
virtual DTOR
|
protected |
CTOR.
Only callable by friend creator
|
protected |
Unimplemented Copy CTOR.
|
static |
Access a DtLightSignalSequenceGenerator.
| 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 |
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 |
Set the default period for flashing lights Initialized to 2s.
|
virtual |
Set the default period for long lights Initialized to 10s.
|
virtual |
Set the default period for quick flashing lights Initialized to 1s.
|
virtual |
Set the default period for very quick flashing lights Initialized to 0.4s.
|
virtual |
Set the default period for ultra quick flashing lights Initialized to 0.2s.
|
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 |
Set the minimum on-time for a long flashing light.
Initialized to 2s
|
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 |
Set the default on-time for a Morse code 'dash' Initialized to 2.0s.
|
virtual |
Set the default Morse code inter-element gap Initialized to 0.6s.
|
virtual |
Set the default Morse code inter-letter gap.
Initialized to 2.0s
|
virtual |
Set the off time at the end of a Morse code group.
Initialized to 9.0s
|
protected |
Unimplemented Assignment Operator.
|
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
|
protectedvirtual |
LITCHR == 2.
Flashing. Based on the Signal Group Type:
|
protectedvirtual |
LITCHR == 3.
Long Flashing. Based on the Signal Group Type:
|
protectedvirtual |
LITCHR == 4.
Quick Flashing. Based on the Signal Group Type:
|
protectedvirtual |
LITCHR == 5.
Very Quick Flashing. Based on the Signal Group Type:
|
protectedvirtual |
LITCHR == 6.
Ultra Quick Flashing. Based on the Signal Group Type:
|
protectedvirtual |
LITCHR == 7.
Isophased. Based on the Signal Group Type:
|
protectedvirtual |
LITCHR == 8.
Occulting. Based on the Signal Group Type:
|
protectedvirtual |
LITCHR == 9.
Interrupted Very Quick Flashing.
|
protectedvirtual |
LITCHR == 10.
Interrupted Very Quick Flashing.
|
protectedvirtual |
LITCHR == 11.
Interrupted Ultra Quick Flashing.
|
protectedvirtual |
LITCHR == 12.
Morse Code.
|
protectedvirtual |
LITCHR == 13.
Fixed Flashing.
|
protectedvirtual |
LITCHR == 14.
Flashing Long Flashing.
|
protectedvirtual |
LITCHR == 15.
Occulting Long Flashing.
|
protectedvirtual |
LITCHR == 16.
Fixed Long Flashing
|
protectedvirtual |
LITCHR == 17.
Occulting Alternating. Based on the Signal Group Type:
|
protectedvirtual |
LITCHR == 18.
Long Flash Alternating. Based on the Signal Group Type:
|
protectedvirtual |
LITCHR == 19.
Flash Alternating. Based on the Signal Group Type:
|
protectedvirtual |
LITCHR == 20.
Flashing Long Flashing.
|
protectedvirtual |
LITCHR == 25.
Quick Flashing Long Flashing.
|
protectedvirtual |
LITCHR == 26.
Very Quick Flashing Long Flashing.
|
protectedvirtual |
LITCHR == 27.
Ultra Quick Flashing Long Flashing.
|
protectedvirtual |
LITCHR == 28.
Alternating. Based on the Signal Group Type:
|
protectedvirtual |
LITCHR == 29.
Fixed Alternating.
|
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]
|
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]
|
protectedvirtual |
Generate a flash composite group signal sequence.
A composite group is a group with 2 or more subgroups, like (2 + 1)
|
protectedvirtual |
Generate a long flash signal sequence Ontime = P/10.
(or the minimum long flash time); offtime = P - ontime Returns [ontime][offtime]
|
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]
|
protectedvirtual |
Generate a long flash composite group signal sequence.
|
protectedvirtual |
Generate a quick flash signal sequence Ontime = P/10.
(or the minimum flash time); offtime = P - ontime Returns [ontime][offtime]
|
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]
|
protectedvirtual |
Generate a quick flash composite group signal sequence.
|
protectedvirtual |
Generate a very quick flash signal sequence Ontime = offtime = P/2.
Returns [ontime][offtime]
|
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]
|
protectedvirtual |
Generate a very quick flash composite group signal sequence.
|
protectedvirtual |
Generate an ultra quick flash signal sequence Ontime = offtime = P/2.
Returns [ontime][offtime]
|
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]
|
protectedvirtual |
Generate an ultra quick flash composite group signal sequence.
|
protectedvirtual |
Generate an occulting signal sequence Offtime = P/10.
(or the minimum flash time); ontime = P - offtime Returns [ontime][offtime]
|
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]
|
protectedvirtual |
Generate an occulting composite group signal sequence.
|
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
|
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]
|
protectedvirtual |
Generate an alternating composite group signal sequence.
|
protectedvirtual |
Determine the signal group type based on the parsed signal group data.
|
protectedvirtual |
Get the morse code sequence for the indicated character.
|
static |
Calculate the total time for the specified sequence or sequence fragment.
|
static |
Prints the sequence to std::cout. No newline is printed.
|
friend |
The class may only be instantiated through the friend creator.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |