Infrared4Arduino
IrSignal.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "InfraredTypes.h"
4 #include "IrSequence.h"
5 
10 class IrSignal {
11 public:
12  static const frequency_t defaultFrequency = 38000U;
14 
15  IrSignal();
16  IrSignal(const IrSignal& orig);
17 
18  virtual ~IrSignal();
19  IrSignal(const microseconds_t *intro, size_t lengthIntro,
20  const microseconds_t *repeat, size_t lengthRepeat,
21  const microseconds_t *ending, size_t lengthEnding,
22  frequency_t frequency = defaultFrequency,
23  bool toBeFreed = false);
24 
25  IrSignal(const microseconds_t *intro, size_t lengthIntro,
26  const microseconds_t *repeat, size_t lengthRepeat,
27  frequency_t frequency = defaultFrequency,
28  bool toBeFreed = false);
29 
30  IrSignal(const IrSequence& intro, const IrSequence& repeat, const IrSequence& ending,
31  frequency_t frequency, bool toBeFreed);
32 
33  IrSignal(const IrSequence& intro, const IrSequence& repeat, const IrSequence& ending,
34  frequency_t frequency = defaultFrequency);
35 
36 private:
37  const frequency_t frequency;
38  const IrSequence intro;
39  const IrSequence repeat;
40  const IrSequence ending;
41 
42 public:
43 
49  IrSignal *clone() const;
50 
52  return frequency;
53  }
54 
55  const IrSequence& getEnding() const {
56  return ending;
57  }
58 
59  const IrSequence& getRepeat() const {
60  return repeat;
61  }
62 
63  const IrSequence& getIntro() const {
64  return intro;
65  }
66 
72  void dump(Stream& stream, bool usingSigns = false) const;
73 
78  void dumpWithSigns(Stream& stream) const {
79  dump(stream, true);
80  };
81 
87  bool dumpFrequency(Stream& stream) const {
88  return dumpFrequency(stream, frequency);
89  };
90 
96  static bool dumpFrequency(Stream& stream, frequency_t frequency);
97 
103  unsigned int noRepetitions(unsigned int noSends) const {
104  return noSends == 0 ? 0
105  : getIntro().isEmpty() ? noSends : noSends - 1;
106  }
107 
108 
109 };
static const frequency_t defaultFrequency
Definition: IrSignal.h:12
uint16_t microseconds_t
Type for durations in micro seconds.
Definition: InfraredTypes.h:15
uint32_t frequency_t
Type for modulation frequency in Hz.
Definition: InfraredTypes.h:32
frequency_t getFrequency() const
Definition: IrSignal.h:51
const IrSequence & getIntro() const
Definition: IrSignal.h:63
This class models an IR signal with intro-, repeat-, and ending sequences.
Definition: IrSignal.h:10
void dumpWithSigns(Stream &stream) const
Print a human readable representation of the IrSignal on the Stream supplied, using signs.
Definition: IrSignal.h:78
const IrSequence & getRepeat() const
Definition: IrSignal.h:59
static const frequency_t invalidFrequency
Definition: IrSignal.h:13
void dump(Stream &stream, bool usingSigns=false) const
Print a human readable representation of the IrSignal on the Stream supplied.
Definition: IrSignal.cpp:51
bool dumpFrequency(Stream &stream) const
If the frequency is sensible, print it to the stream and return true.
Definition: IrSignal.h:87
IrSignal * clone() const
Creates a (deep) copy of the current object.
Definition: IrSignal.cpp:47
virtual ~IrSignal()
Definition: IrSignal.cpp:41
const IrSequence & getEnding() const
Definition: IrSignal.h:55
This class consists of a vector of durations.
Definition: IrSequence.h:11
unsigned int noRepetitions(unsigned int noSends) const
Implementation of the count semantics, i.e., how many repetitions should be sent if the signal is sen...
Definition: IrSignal.h:103
This file defines some general data types that are used in the library.
bool isEmpty() const
Definition: IrSequence.h:52