59 lines
2.4 KiB
C++
59 lines
2.4 KiB
C++
/* 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
|