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_, boolean 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, boolean 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_, boolean toBeFreed)
26 : frequency(frequency_),
27  intro(intro_, introLength, toBeFreed),
28  repeat(repeat_, repeatLength, toBeFreed),
29  ending(ending_, endingLength, toBeFreed) {
30 }
31 
33  //delete intro;
34  //delete repeat;
35  //delete ending;
36 }
37 
39  return new IrSignal(*intro.clone(), *repeat.clone(), *ending.clone(), frequency, true);
40 }
41 
42 void IrSignal::dump(Stream& stream, boolean usingSigns) const {
43  boolean printedSomething = dumpFrequency(stream);
44  if (printedSomething)
45  stream.println();
46  intro.dump(stream, usingSigns);
47  repeat.dump(stream, usingSigns);
48  ending.dump(stream, usingSigns);
49 }
50 
51 boolean IrSignal::dumpFrequency(Stream& stream, frequency_t frequency) {
52  if (frequency > 0 && frequency != invalidFrequency) {
53  stream.print(F("f="));
54  stream.print(frequency);
55  return true;
56  }
57  return false;
58 }
IrSignal * clone() const
Creates a (deep) copy of the current object.
Definition: IrSignal.cpp:38
uint16_t microseconds_t
Type for durations in micro seconds.
Definition: InfraredTypes.h:16
void dump(Stream &stream, boolean usingSigns=false) const
Prints the IrSequence on the stream provided.
Definition: IrSequence.cpp:28
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:11
static const frequency_t invalidFrequency
Definition: IrSignal.h:14
uint16_t frequency_t
Type for modulation frequency in Hz.
Definition: InfraredTypes.h:33
virtual ~IrSignal()
Definition: IrSignal.cpp:32
This class consists of a vector of durations.
Definition: IrSequence.h:12
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