Infrared4Arduino
IrSignal.h
Go to the documentation of this file.
1 #ifndef IRSIGNAL_H
2 #define IRSIGNAL_H
3 
4 #include "InfraredTypes.h"
5 #include "IrSequence.h"
6 
11 class IrSignal {
12 public:
13  static const frequency_t defaultFrequency = 38000U;
15 
16  IrSignal();
17  IrSignal(const IrSignal& orig);
18 
19  virtual ~IrSignal();
20  IrSignal(const microseconds_t *intro, size_t lengthIntro,
21  const microseconds_t *repeat, size_t lengthRepeat,
22  const microseconds_t *ending, size_t lengthEnding,
23  frequency_t frequency = defaultFrequency,
24  boolean toBeFreed = false);
25 
26  IrSignal(const microseconds_t *intro, size_t lengthIntro,
27  const microseconds_t *repeat, size_t lengthRepeat,
28  frequency_t frequency = defaultFrequency,
29  boolean toBeFreed = false);
30 
31  IrSignal(const IrSequence& intro, const IrSequence& repeat, const IrSequence& ending,
32  frequency_t frequency, boolean toBeFreed);
33 
34  IrSignal(const IrSequence& intro, const IrSequence& repeat, const IrSequence& ending,
35  frequency_t frequency = defaultFrequency);
36 
37 private:
38  const frequency_t frequency;
39  const IrSequence intro;
40  const IrSequence repeat;
41  const IrSequence ending;
42 
43 public:
44 
50  IrSignal *clone() const;
51 
53  return frequency;
54  }
55 
56  const IrSequence& getEnding() const {
57  return ending;
58  }
59 
60  const IrSequence& getRepeat() const {
61  return repeat;
62  }
63 
64  const IrSequence& getIntro() const {
65  return intro;
66  }
67 
73  void dump(Stream& stream, boolean usingSigns = false) const;
74 
79  void dumpWithSigns(Stream& stream) const {
80  dump(stream, true);
81  };
82 
88  boolean dumpFrequency(Stream& stream) const {
89  return dumpFrequency(stream, frequency);
90  };
91 
97  static boolean dumpFrequency(Stream& stream, frequency_t frequency);
98 
104  unsigned int noRepetitions(unsigned int noSends) const {
105  return noSends == 0 ? 0
106  : getIntro().isEmpty() ? noSends : noSends - 1;
107  }
108 
109 
110 };
111 
112 #endif /* IRSIGNAL_H */
IrSignal * clone() const
Creates a (deep) copy of the current object.
Definition: IrSignal.cpp:38
static const frequency_t defaultFrequency
Definition: IrSignal.h:13
boolean isEmpty() const
Definition: IrSequence.h:53
uint16_t microseconds_t
Type for durations in micro seconds.
Definition: InfraredTypes.h:16
void dumpWithSigns(Stream &stream) const
Print a human readable representation of the IrSignal on the Stream supplied, using signs...
Definition: IrSignal.h:79
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:104
This class models an IR signal with intro-, repeat-, and ending sequences.
Definition: IrSignal.h:11
const IrSequence & getIntro() const
Definition: IrSignal.h:64
static const frequency_t invalidFrequency
Definition: IrSignal.h:14
uint16_t frequency_t
Type for modulation frequency in Hz.
Definition: InfraredTypes.h:33
const IrSequence & getRepeat() const
Definition: IrSignal.h:60
virtual ~IrSignal()
Definition: IrSignal.cpp:32
This class consists of a vector of durations.
Definition: IrSequence.h:12
frequency_t getFrequency() const
Definition: IrSignal.h:52
This file defines some general data types that are used in the library.
const IrSequence & getEnding() const
Definition: IrSignal.h:56
boolean dumpFrequency(Stream &stream) const
If the frequency is sensible, print it to the stream and return true.
Definition: IrSignal.h:88
void dump(Stream &stream, boolean usingSigns=false) const
Print a human readable representation of the IrSignal on the Stream supplied.
Definition: IrSignal.cpp:42