VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtLightSignalSequenceGenerator.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
14 
15 #include <boost/unordered_map.hpp>
16 
17 namespace makVrv
18 {
19  class DtAgentManagerInterface;
20  class DtDe;
21 
32  : public DtVirtualBaseClass
33  {
34  public:
38 
39 
40  // These are the light signal types (characteristics) defined in S57
42  {
43  LightCharacteristicFixed = 1,
44  LightCharacteristicFlashing = 2,
45  LightCharacteristicLongFlashing = 3,
46  LightCharacteristicQuickFlashing = 4,
47  LightCharacteristicVeryQuickFlashing = 5,
48  LightCharacteristicUltraQuickFlashing = 6,
49  LightCharacteristicIsophased = 7,
50  LightCharacteristicOcculting = 8,
51  LightCharacteristicInterruptedQuickFlashing = 9,
52  LightCharacteristicInterruptedVeryQuickFlashing = 10,
53  LightCharacteristicInterruptedUltraQuickFlashing = 11,
54  LightCharacteristicMorse = 12,
55  LightCharacteristicFixedFlash = 13,
56  LightCharacteristicFlashLongFlash = 14,
57  LightCharacteristicOccultingFlash = 15,
58  LightCharacteristicFixedLongFlash = 16,
59  LightCharacteristicOccultingAlternating = 17,
60  LightCharacteristicLongFlashAlternating = 18,
61  LightCharacteristicFlashAlternating = 19,
62  LightCharacteristicGroupAlternating = 20,
64  LightCharacteristicQuickFlashLongFlash = 25,
65  LightCharacteristicVeryQuickFlashLongFlash = 26,
66  LightCharacteristicUntraQuickFlashLongFlash = 27,
67  LightCharacteristicAlternating = 28,
68  LightCharacteristicFixedAlternatingFlashing = 29
69  };
70 
72  static DtLightSignalSequenceGenerator& instance( DtDe& de );
73 
76 
81  int lightCharacteristic, float period,
82  const std::string& signalGroup ) const;
83 
87  void generateMorseCodeSignalSequencesMap();
88 
90 
98  virtual void setDefaultAlternatingPeriod(float defaultPeriod);
99 
103  virtual void setMaximumLongFlashPeriod(float maximumPeriod);
104 
108  virtual void setMinimumLongFlashPeriod(float minimumPeriod);
109 
114  virtual void setMaximumFlashPeriod(float maximumPeriod);
115 
118  virtual void setMinimumFlashPeriod(float minimumPeriod);
119 
122  virtual void setMaximumQuickFlashPeriod(float maximumPeriod);
123 
127  virtual void setMinimumQuickFlashPeriod(float minimumPeriod);
128 
131  virtual void setMaximumVeryQuickFlashPeriod(float maximumPeriod);
132 
136  virtual void setMinimumVeryQuickFlashPeriod(float minimumPeriod);
137 
140  virtual void setMaximumUltraQuickFlashPeriod(float maximumPeriod);
141 
145  virtual void setMinimumUltraQuickFlashPeriod(float minimumPeriod);
146 
150  virtual void setOnTimeFraction( float onTimeFraction );
152 
154 
170  virtual void setDefaultMorseCodeDot(float defaultTime);
171 
174  virtual void setDefaultMorseCodeDash(float defaultTime);
175 
178  virtual void setDefaultMorseCodeDotDashSpacing(float defaultTime);
179 
182  virtual void setDefaultMorseCodeLetterSpacing(float defaultTime);
183 
186  virtual void setDefaultMorseCodeGroupSpacing(float defaultTime);
188 
189 
190  protected:
191 
196 
199  const DtLightSignalSequenceGenerator& rhs );
200 
202  DtLightSignalSequenceGenerator& operator=(
203  const DtLightSignalSequenceGenerator& orig );
204 
206 
215  virtual DtNavigationLightController::SignalSequence fixedSignalSequence(
216  float period, const std::string& signalGroup ) const;
217 
223  flashingSignalSequence( float period,
224  const std::string& signalGroup ) const;
225 
231  longFlashingSignalSequence( float period,
232  const std::string& signalGroup ) const;
233 
239  quickFlashingSignalSequence( float period,
240  const std::string& signalGroup ) const;
241 
247  veryQuickFlashingSignalSequence( float period,
248  const std::string& signalGroup ) const;
249 
255  ultraQuickFlashingSignalSequence( float period,
256  const std::string& signalGroup ) const;
257 
266  isophasedSignalSequence( float period,
267  const std::string& signalGroup ) const;
268 
274  occultingSignalSequence( float period,
275  const std::string& signalGroup ) const;
276 
280  interruptedQuickFlashingSignalSequence(
281  float period, const std::string& signalGroup ) const;
282 
286  interruptedVeryQuickFlashingSignalSequence(
287  float period, const std::string& signalGroup ) const;
288 
292  interruptedUltraQuickFlashingSignalSequence(
293  float period, const std::string& signalGroup ) const;
294 
313  virtual DtNavigationLightController::SignalSequence morseSignalSequence(
314  float period, const std::string& signalGroup ) const;
315 
321  fixedFlashingSignalSequence( float period,
322  const std::string& signalGroup ) const;
323 
328  flashingLongFlashingSignalSequence( float period,
329  const std::string& signalGroup ) const;
330 
333  virtual DtNavigationLightController::SignalSequence occultingFlashingSignalSequence(
334  float period, const std::string& signalGroup ) const;
335 
340  virtual DtNavigationLightController::SignalSequence fixedLongFlashingSignalSequence(
341  float period, const std::string& signalGroup ) const;
342 
355  occultingAlternatingSignalSequence(
356  float period, const std::string& signalGroup ) const;
357 
370  longFlashAlternatingSignalSequence(
371  float period, const std::string& signalGroup ) const;
372 
384  virtual DtNavigationLightController::SignalSequence flashAlternatingSignalSequence(
385  float period, const std::string& signalGroup ) const;
386 
389  virtual DtNavigationLightController::SignalSequence groupAlternatingSignalSequence(
390  float period, const std::string& signalGroup ) const;
391 
392  // LITCHR == 21 through LITCHR == 24 no longer used.
393 
397  virtual DtNavigationLightController::SignalSequence quickFlashLongFlashSignalSequence(
398  float period, const std::string& signalGroup ) const;
399 
403  virtual DtNavigationLightController::SignalSequence veryQuickFlashLongFlashSignalSequence(
404  float period, const std::string& signalGroup ) const;
405 
409  virtual DtNavigationLightController::SignalSequence ultraQuickFlashLongFlashSignalSequence(
410  float period, const std::string& signalGroup ) const;
411 
414  virtual DtNavigationLightController::SignalSequence baseFlashLongFlashSignalSequence(
415  float minFlashPeriod, float maxFlashPeriod, float period,
416  const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
417 
422  virtual DtNavigationLightController::SignalSequence alternatingSignalSequence(
423  float period, const std::string& signalGroup ) const;
424 
427  virtual DtNavigationLightController::SignalSequence fixedAlternatingSignalSequence(
428  float period, const std::string& signalGroup ) const;
430 
431  //@(
434 
438  virtual DtNavigationLightController::SignalSequence flashNoGroup(
439  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
440 
446  virtual DtNavigationLightController::SignalSequence flashSimpleGroup(
447  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
448 
453  virtual DtNavigationLightController::SignalSequence flashCompositeGroup(
454  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
455 
459  virtual DtNavigationLightController::SignalSequence longFlashNoGroup(
460  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
461 
467  virtual DtNavigationLightController::SignalSequence longFlashSimpleGroup(
468  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
469 
473  virtual DtNavigationLightController::SignalSequence longFlashCompositeGroup(
474  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
475 
479  virtual DtNavigationLightController::SignalSequence quickFlashNoGroup(
480  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
481 
487  virtual DtNavigationLightController::SignalSequence quickFlashSimpleGroup(
488  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
489 
493  virtual DtNavigationLightController::SignalSequence quickFlashCompositeGroup(
494  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
495 
499  virtual DtNavigationLightController::SignalSequence veryQuickFlashNoGroup(
500  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
501 
507  virtual DtNavigationLightController::SignalSequence veryQuickFlashSimpleGroup(
508  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
509 
513  virtual DtNavigationLightController::SignalSequence veryQuickFlashCompositeGroup(
514  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
515 
519  virtual DtNavigationLightController::SignalSequence ultraQuickFlashNoGroup(
520  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
521 
527  virtual DtNavigationLightController::SignalSequence ultraQuickFlashSimpleGroup(
528  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
529 
533  virtual DtNavigationLightController::SignalSequence ultraQuickFlashCompositeGroup(
534  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
535 
539  virtual DtNavigationLightController::SignalSequence occultingNoGroup(
540  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
541 
547  virtual DtNavigationLightController::SignalSequence occultingSimpleGroup(
548  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
549 
552  virtual DtNavigationLightController::SignalSequence occultingCompositeGroup(
553  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
554 
561  virtual DtNavigationLightController::SignalSequence alternatingNoGroup(
562  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
563 
569  virtual DtNavigationLightController::SignalSequence alternatingSimpleGroup(
570  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
571 
574  virtual DtNavigationLightController::SignalSequence alternatingCompositeGroup(
575  float period, const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
576 
577  // This is used to generate sequences for all the composite groups made up of a standard
578  // flash (flash, long flash, quick flash, very quick flash, and ultra quick flash)
579  virtual DtNavigationLightController::SignalSequence baseCompositeGroup(
580  float minFlashPeriod, float maxFlashPeriod, float period,
581  const DtLightMarkerStringParser::SignalGroup& signalGroup ) const;
583 
589  {
592  SignalGroupTypeCompositeGroup
593  };
594 
596  virtual SignalGroupType signalGroupType(
597  const DtLightMarkerStringParser::SiggrpData& data ) const;
598 
600  virtual DtNavigationLightController::SignalSequence morseCodeSequence(
601  char character ) const;
602 
603  public:
604 
607  static float sumSignalSequence(
609 
611  static void printSignalSequence(
613 
614  protected:
615 
618 
621 
624 
627 
630 
637 
639 
640  typedef boost::unordered_map
642 
644 
645  };
646 
650  : public DtVirtualBaseClass
651  {
652 
653  public:
656  static DtLightSignalSequenceGeneratorCreator& instance( DtDe& de );
657 
659  static void registerInstance( DtDe& de,
661 
663  virtual DtLightSignalSequenceGenerator* create();
664  };
665 }
666 
Contains makVrv::DtLightMarkerStringParser class.
float myDefaultMorseCodeGroupSpacing
Definition: DtLightSignalSequenceGenerator.h:635
Virtual base class.
Definition: DtVirtualBaseClass.h:22
MorseCodeMap myMorseCodeMap
Definition: DtLightSignalSequenceGenerator.h:643
float myDefaultMorseCodeDot
Definition: DtLightSignalSequenceGenerator.h:631
float myMaximumVeryQuickFlashPeriod
Definition: DtLightSignalSequenceGenerator.h:625
Definition: DtLightSignalSequenceGenerator.h:590
float myMinimumVeryQuickFlashPeriod
Definition: DtLightSignalSequenceGenerator.h:626
SignalGroupType
A SIGGRP group may be empty (or a group of size 1, which is equivalent); a simple group which is just...
Definition: DtLightSignalSequenceGenerator.h:588
float myDefaultMorseCodeDash
Definition: DtLightSignalSequenceGenerator.h:632
DtLightSignalSequenceGenerator generates a sequence of on/off times like the S57 SIGSEQ attribute bas...
Definition: DtLightSignalSequenceGenerator.h:31
float myMaximumFlashPeriod
Definition: DtLightSignalSequenceGenerator.h:619
std::list< int > SiggrpData
Each Signal Group &#39;group&#39; can have one or more numbers, each of.
Definition: DtLightMarkerStringParser.h:55
float myDefaultAlternatingPeriod
Definition: DtLightSignalSequenceGenerator.h:636
float myMaximumLongFlashPeriod
Definition: DtLightSignalSequenceGenerator.h:616
Definition: DtLightSignalSequenceGenerator.h:591
NavigationLightCharacteristic
Definition: DtLightSignalSequenceGenerator.h:41
float myMinimumQuickFlashPeriod
Definition: DtLightSignalSequenceGenerator.h:623
Contains makVrv::DtNavigationLightController class.
std::vector< float > SignalSequence
Type to hold a set of on/off times that define a signal sequence.
Definition: DtNavigationLightController.h:47
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
boost::unordered_map< char, DtNavigationLightController::SignalSequence > MorseCodeMap
Definition: DtLightSignalSequenceGenerator.h:641
float myMaximumQuickFlashPeriod
Definition: DtLightSignalSequenceGenerator.h:622
float myMinimumLongFlashPeriod
Definition: DtLightSignalSequenceGenerator.h:617
DtLightSignalSequenceGenerator creator.
Definition: DtLightSignalSequenceGenerator.h:649
float myMinimumFlashPeriod
Definition: DtLightSignalSequenceGenerator.h:620
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
float myMinimumUltraQuickFlashPeriod
Definition: DtLightSignalSequenceGenerator.h:628
float myMaximumUltraQuickFlashPeriod
Definition: DtLightSignalSequenceGenerator.h:629
float myOnTimeFraction
Definition: DtLightSignalSequenceGenerator.h:638
float myDefaultMorseCodeLetterSpacing
Definition: DtLightSignalSequenceGenerator.h:634
float myDefaultMorseCodeDotDashSpacing
Definition: DtLightSignalSequenceGenerator.h:633
A signal group can contain multiple groups for lights with multiple characteristics, like LITCHR=25 for example, which is Quick flash / Long flash.
Definition: DtLightMarkerStringParser.h:61

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)