Infrared4Arduino
IrSignal.cpp
Go to the documentation of this file.
1 #include "IrSignal.h"
2 #include "IrSender.h"
3 
4 IrSignal::IrSignal(const IrSequence& intro_, const IrSequence& repeat_, const IrSequence& ending_,
5  frequency_t frequency_, bool toBeFreed)
6 : frequency(frequency_),intro(intro_, toBeFreed),repeat(repeat_, toBeFreed),ending(ending_, toBeFreed) {
7 }
8 
9 IrSignal::IrSignal(const IrSequence& intro_, const IrSequence& repeat_, const IrSequence& ending_,
10  frequency_t frequency_)
11 : frequency(frequency_),intro(intro_),repeat(repeat_),ending(ending_) {
12 }
13 
14 //IrSignal::IrSignal(const IrSignal& orig, bool toBeFreed)
15 //: frequency(orig.frequency),intro(orig.intro,toBeFreed),repeat(orig.repeat,toBeFreed),ending(orig.ending,toBeFreed) {
16 //}
17 
19 : frequency(orig.frequency),intro(orig.intro),repeat(orig.repeat),ending(orig.ending) {
20 }
21 
22 IrSignal::IrSignal(const microseconds_t *intro_, size_t introLength,
23  const microseconds_t *repeat_, size_t repeatLength,
24  const microseconds_t *ending_, size_t endingLength,
25  frequency_t frequency_, bool toBeFreed)
26 : frequency(frequency_),
27  intro(intro_, introLength, toBeFreed),
28  repeat(repeat_, repeatLength, toBeFreed),
29  ending(ending_, endingLength, toBeFreed) {
30 }
31 
32 IrSignal::IrSignal(const microseconds_t *intro_, size_t introLength,
33  const microseconds_t *repeat_, size_t repeatLength,
34  frequency_t frequency_, bool toBeFreed)
35 : frequency(frequency_),
36 intro(intro_, introLength, toBeFreed),
37 repeat(repeat_, repeatLength, toBeFreed),
38 ending(NULL, 0, false) {
39 }
40 
42  //delete intro;
43  //delete repeat;
44  //delete ending;
45 }
46 
48  return new IrSignal(*intro.clone(), *repeat.clone(), *ending.clone(), frequency, true);
49 }
50 
51 void IrSignal::dump(Stream& stream, bool usingSigns) const {
52  bool printedSomething = dumpFrequency(stream);
53  if (printedSomething)
54  stream.println();
55  intro.dump(stream, usingSigns);
56  repeat.dump(stream, usingSigns);
57  ending.dump(stream, usingSigns);
58 }
59 
60 bool IrSignal::dumpFrequency(Stream& stream, frequency_t frequency) {
61  if (frequency > 0 && frequency != invalidFrequency) {
62  stream.print(F("f="));
63  stream.print(frequency);
64  return true;
65  }
66  return false;
67 }
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
IrSequence * clone() const
Creates a (deep) clone of the current object.
Definition: IrSequence.cpp:22
This class models an IR signal with intro-, repeat-, and ending sequences.
Definition: IrSignal.h:10
void dump(Stream &stream, bool usingSigns=false) const
Prints the IrSequence on the stream provided.
Definition: IrSequence.cpp:28
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
This class consists of a vector of durations.
Definition: IrSequence.h:11