Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions IRremote.h
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
#define DECODE_RC5 1 #define DECODE_RC5 1
#define SEND_RC5 1 #define SEND_RC5 1


#define SEND_RC5X 1

#define DECODE_RC6 1 #define DECODE_RC6 1
#define SEND_RC6 1 #define SEND_RC6 1


Expand Down Expand Up @@ -103,6 +105,7 @@ typedef
UNKNOWN = -1, UNKNOWN = -1,
UNUSED = 0, UNUSED = 0,
RC5, RC5,
RC5X,
RC6, RC6,
NEC, NEC,
SONY, SONY,
Expand Down Expand Up @@ -271,6 +274,9 @@ class IRsend
# if SEND_RC5 # if SEND_RC5
void sendRC5 (unsigned long data, int nbits) ; void sendRC5 (unsigned long data, int nbits) ;
# endif # endif
# if SEND_RC5X
void sendRC5x (unsigned char toggle, unsigned char system, unsigned char command, unsigned char extension) ;
# endif
# if SEND_RC6 # if SEND_RC6
void sendRC6 (unsigned long data, int nbits) ; void sendRC6 (unsigned long data, int nbits) ;
# endif # endif
Expand Down
52 changes: 52 additions & 0 deletions ir_RC5_RC6.cpp
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -113,6 +113,58 @@ bool IRrecv::decodeRC5 (decode_results *results)
} }
#endif #endif


//+=============================================================================
#if SEND_RC5X
// send RC5x command defined by system, command and extension
void IRsend::sendRC5x(unsigned char toggle, unsigned char system, unsigned char command, unsigned char extension){

// First, assemble complete signal from components
unsigned long data;

// the initializing bits are included in the data
// if command is greater than 63, the second bit will be zero
if (command & 64){
data = 2;
}else{
data = 3;
}

// copy lsb of toggle into data
data = (data<<1) | (toggle & 1);
// copy lower 5 bits of system into data
data = (data<<5) | (system & 0x1F);
// shift by command length (6 bits) and add command
data = (data<<6) | (command & 0x3F);
// shift by extension length and add extension
data = (data<<6) | (extension & 0x3F);

// Set IR carrier frequency
enableIROut(36);

// the full command is 20 bits long
unsigned long mask = 1UL << 19;

for (int i = 0; i < 20; i++) {
if (data & mask) {
space(RC5_T1); // 1 is space, then mark
mark(RC5_T1);
}
else {
mark(RC5_T1);
space(RC5_T1);
}
// we use the RC5x protocol, which includes 2
// low cycles (4 spaces) after the device id
if (i==7){
space(4*RC5_T1);
}
// move mask
mask >>= 1;
}
space(0); // Turn off at end
}
#endif

//+============================================================================= //+=============================================================================
// RRRR CCCC 6666 // RRRR CCCC 6666
// R R C 6 // R R C 6
Expand Down
1 change: 1 addition & 0 deletions keywords.txt
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ sendSanyo KEYWORD2
sendMitsubishi KEYWORD2 sendMitsubishi KEYWORD2
sendRaw KEYWORD2 sendRaw KEYWORD2
sendRC5 KEYWORD2 sendRC5 KEYWORD2
sendRC5x KEYWORD2
sendRC6 KEYWORD2 sendRC6 KEYWORD2
sendDISH KEYWORD2 sendDISH KEYWORD2
sendSharp KEYWORD2 sendSharp KEYWORD2
Expand Down