arduino/libraries/Adafruit_Circuit_Playground/utility/IRLib_P05_Panasonic_Old.h

59 lines
2.4 KiB
C
Raw Normal View History

2018-11-03 20:21:33 +00:00
/* IRLib_P05_Panasonic_Old.h
* Part of IRLib Library for Arduino receiving, decoding, and sending
* infrared signals. See COPYRIGHT.txt and LICENSE.txt for more information.
*/
/*
* This protocol #5 named "Panasonic_Old" is a 57 kHz protocol with 22 bits
* of data. The second 11 bits are the bitwise logical complement of the first 11 bits.
* The protocol is used by many cable boxes and DVR's made by Scientific Atlantic and
* Cisco. They are common for Bright House and Time Warner cable systems.
*/
#ifndef IRLIB_PROTOCOL_05_H
#define IRLIB_PROTOCOL_05_H
#define IR_SEND_PROTOCOL_05 case 5: IRsendPanasonic_Old::send(data); break;
#define IR_DECODE_PROTOCOL_05 if(IRdecodePanasonic_Old::decode()) return true;
#ifdef IRLIB_HAVE_COMBO
#define PV_IR_DECODE_PROTOCOL_05 ,public virtual IRdecodePanasonic_Old
#define PV_IR_SEND_PROTOCOL_05 ,public virtual IRsendPanasonic_Old
#else
#define PV_IR_DECODE_PROTOCOL_05 public virtual IRdecodePanasonic_Old
#define PV_IR_SEND_PROTOCOL_05 public virtual IRsendPanasonic_Old
#endif
#ifdef IRLIBSENDBASE_H
class IRsendPanasonic_Old: public virtual IRsendBase {
public:
void send(uint32_t data) {
sendGeneric(data,22, 833*4, 833*4, 833, 833, 833*3, 833,57, true);
};
};
#endif //IRLIBSENDBASE_H
#ifdef IRLIBDECODEBASE_H
class IRdecodePanasonic_Old: public virtual IRdecodeBase {
public:
virtual bool decode(void) {
IRLIB_ATTEMPT_MESSAGE(F("Panasonic_Old"));
if(!decodeGeneric(48,833*4,833*4,833,833*3,833)) return false;
// The protocol spec says that the first 11 bits described the device and function.
// The next 11 bits are the same thing only it is the logical Bitwise complement.
// Many protocols have such check features in their definition but our code typically
// doesn't perform these checks. For example NEC's least significant 8 bits are the
// complement of the next more significant 8 bits. While it's probably not necessary
// to error check this, you can un-comment the next 4 lines of code to do this extra
// checking.
// long S1= (value & 0x0007ff); // 00 0000 0000 0111 1111 1111
// long S2= (value & 0x3ff800)>> 11; // 11 1111 1111 1000 0000 0000
// S2= (~S2) & 0x0007ff;
// if (S1!=S2) return IRLIB_REJECTION_MESSAGE(F("inverted bit redundancy"));
protocolNum = PANASONIC_OLD;
return true;
};
};
#endif //IRLIBDECODEBASE_H
#define IRLIB_HAVE_COMBO
#endif //IRLIB_PROTOCOL_05_H