Infrared4Arduino
Pronto.h
Go to the documentation of this file.
1 
7 #pragma once
8 
9 #include "InfraredTypes.h"
10 #include "IrSignal.h"
11 
12 class Pronto {
13 private:
14  typedef uint16_t prontoInt;
15 
16  static const prontoInt learnedToken = 0x0000;
17  static const prontoInt learnedNonModulatedToken = 0x0100;
18  static const unsigned int bitsInHexadecimal = 4;
19  static const unsigned int digitsInProntoNumber = 4;
20  static const unsigned int numbersInPreamble = 4;
21  static const unsigned int hexMask = 0xF;
22  static const unsigned int charsInPreamble = numbersInPreamble * (digitsInProntoNumber + 1);
23  static constexpr double prontoFreqConst = 0.241246;
24  static const uint32_t prontoConst = (uint32_t) (1E6 / prontoFreqConst); // 4145146
25  static const prontoInt fallbackFrequencyCode = 0x0040; // To use with frequency = 0;
26  static const frequency_t fallbackFrequency = 64767; // To use with frequency = 0;
27 
28  Pronto() {};
29 
30  static IrSequence *mkSequence(const uint16_t *data, size_t pairs, double timebase);
31 
32  static frequency_t toFrequency(prontoInt code);
33 
34  static prontoInt toFrequencyCode(frequency_t frequency);
35 
36  static size_t lengthHexString(size_t introLength, size_t repeatLength);
37 
38  static char* setup(frequency_t frequency, size_t introLength, size_t repeatLength);
39 
40  static char hexDigit(unsigned int x);
41 
42  static unsigned int appendChar(char *result, unsigned int index, char ch);
43 
44  static unsigned int appendDuration(char *result, unsigned int index, microseconds_t duration, frequency_t frequency);
45 
46  static unsigned int appendDigit(char *result, unsigned int index, unsigned int number);
47 
48  static unsigned int appendNumber(char *result, unsigned int index, prontoInt number);
49 
50  static unsigned int appendSequence(char *result, unsigned int index, const microseconds_t *data, size_t length, frequency_t frequency);
51 
52  static unsigned int appendSequence(char *result, unsigned int index, const IrSequence& irSequence, frequency_t frequency);
53 
54 public:
61  static IrSignal *parse(const uint16_t *data, size_t size);
62 
68  static IrSignal *parse(const char *str);
69 
70 #if defined(ARDUINO) & defined(ARDUINO_ARCH_AVR)
71 
78  static IrSignal *parse(const __FlashStringHelper *str);
79 #endif
80 
86  static char* toProntoHex(const IrSignal& irSignal);
87 
95  static char* toProntoHex(const microseconds_t* data, size_t length, frequency_t frequency = IrSignal::defaultFrequency);
96 
103  static char* toProntoHex(const IrSequence& irSequence, frequency_t frequency = IrSignal::defaultFrequency);
104 };
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
This class models an IR signal with intro-, repeat-, and ending sequences.
Definition: IrSignal.h:10
static IrSignal * parse(const uint16_t *data, size_t size)
Function for parsing its input data into an IrSignal.
Definition: Pronto.cpp:7
This class consists of a vector of durations.
Definition: IrSequence.h:11
This file defines some general data types that are used in the library.
static char * toProntoHex(const IrSignal &irSignal)
Function for generating a Pronto Hex string from the argument.
Definition: Pronto.cpp:142
Static class consisting of functions for parsing a Pronto Hex string (like 0000 006C 0022 0002 015B 0...
Definition: Pronto.h:12