mirror of
https://github.com/Theaninova/Arduino-IRremote.git
synced 2026-01-09 19:22:48 +00:00
Standardise commenting as C++ style throughout
This commit is contained in:
213
IRremote.cpp
213
IRremote.cpp
@@ -1,22 +1,22 @@
|
|||||||
/*
|
//******************************************************************************
|
||||||
* IRremote
|
// IRremote
|
||||||
* Version 0.11 August, 2009
|
// Version 0.11 August, 2009
|
||||||
* Copyright 2009 Ken Shirriff
|
// Copyright 2009 Ken Shirriff
|
||||||
* For details, see http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
|
// For details, see http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
|
||||||
*
|
//
|
||||||
* Modified by Paul Stoffregen <paul@pjrc.com> to support other boards and timers
|
// Modified by Paul Stoffregen <paul@pjrc.com> to support other boards and timers
|
||||||
* Modified by Mitra Ardron <mitra@mitra.biz>
|
// Modified by Mitra Ardron <mitra@mitra.biz>
|
||||||
* Added Sanyo and Mitsubishi controllers
|
// Added Sanyo and Mitsubishi controllers
|
||||||
* Modified Sony to spot the repeat codes that some Sony's send
|
// Modified Sony to spot the repeat codes that some Sony's send
|
||||||
*
|
//
|
||||||
* Interrupt code based on NECIRrcv by Joe Knapp
|
// Interrupt code based on NECIRrcv by Joe Knapp
|
||||||
* http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1210243556
|
// http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1210243556
|
||||||
* Also influenced by http://zovirl.com/2008/11/12/building-a-universal-remote-with-an-arduino/
|
// Also influenced by http://zovirl.com/2008/11/12/building-a-universal-remote-with-an-arduino/
|
||||||
*
|
//
|
||||||
* JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
|
// JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
|
||||||
* LG added by Darryl Smith (based on the JVC protocol)
|
// LG added by Darryl Smith (based on the JVC protocol)
|
||||||
* Whynter A/C ARC-110WD added by Francesco Meschia
|
// Whynter A/C ARC-110WD added by Francesco Meschia
|
||||||
*/
|
//******************************************************************************
|
||||||
|
|
||||||
#include "IRremote.h"
|
#include "IRremote.h"
|
||||||
#include "IRremoteInt.h"
|
#include "IRremoteInt.h"
|
||||||
@@ -158,8 +158,9 @@ void IRsend::sendRaw(unsigned int buf[], int len, int hz)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
#ifdef SEND_RC5
|
|
||||||
// Note: first bit must be a one (start bit)
|
// Note: first bit must be a one (start bit)
|
||||||
|
//
|
||||||
|
#ifdef SEND_RC5
|
||||||
void IRsend::sendRC5(unsigned long data, int nbits)
|
void IRsend::sendRC5(unsigned long data, int nbits)
|
||||||
{
|
{
|
||||||
enableIROut(36);
|
enableIROut(36);
|
||||||
@@ -183,8 +184,9 @@ void IRsend::sendRC5(unsigned long data, int nbits)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
#ifdef SEND_RC6
|
|
||||||
// Caller needs to take care of flipping the toggle bit
|
// Caller needs to take care of flipping the toggle bit
|
||||||
|
//
|
||||||
|
#ifdef SEND_RC6
|
||||||
void IRsend::sendRC6(unsigned long data, int nbits)
|
void IRsend::sendRC6(unsigned long data, int nbits)
|
||||||
{
|
{
|
||||||
enableIROut(36);
|
enableIROut(36);
|
||||||
@@ -298,36 +300,37 @@ void IRsend::sendSAMSUNG(unsigned long data, int nbits)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
|
// Sends an IR mark for the specified number of microseconds.
|
||||||
|
// The mark output is modulated at the PWM frequency.
|
||||||
|
//
|
||||||
void IRsend::mark(int time) {
|
void IRsend::mark(int time) {
|
||||||
// Sends an IR mark for the specified number of microseconds.
|
|
||||||
// The mark output is modulated at the PWM frequency.
|
|
||||||
TIMER_ENABLE_PWM; // Enable pin 3 PWM output
|
TIMER_ENABLE_PWM; // Enable pin 3 PWM output
|
||||||
if (time > 0) delayMicroseconds(time);
|
if (time > 0) delayMicroseconds(time);
|
||||||
}
|
}
|
||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
/* Leave pin off for time (given in microseconds) */
|
// Leave pin off for time (given in microseconds)
|
||||||
|
// Sends an IR space for the specified number of microseconds.
|
||||||
|
// A space is no output, so the PWM output is disabled.
|
||||||
|
//
|
||||||
void IRsend::space(int time) {
|
void IRsend::space(int time) {
|
||||||
// Sends an IR space for the specified number of microseconds.
|
|
||||||
// A space is no output, so the PWM output is disabled.
|
|
||||||
TIMER_DISABLE_PWM; // Disable pin 3 PWM output
|
TIMER_DISABLE_PWM; // Disable pin 3 PWM output
|
||||||
if (time > 0) delayMicroseconds(time);
|
if (time > 0) delayMicroseconds(time);
|
||||||
}
|
}
|
||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
|
// Enables IR output. The khz value controls the modulation frequency in kilohertz.
|
||||||
|
// The IR output will be on pin 3 (OC2B).
|
||||||
|
// This routine is designed for 36-40KHz; if you use it for other values, it's up to you
|
||||||
|
// to make sure it gives reasonable results. (Watch out for overflow / underflow / rounding.)
|
||||||
|
// TIMER2 is used in phase-correct PWM mode, with OCR2A controlling the frequency and OCR2B
|
||||||
|
// controlling the duty cycle.
|
||||||
|
// There is no prescaling, so the output frequency is 16MHz / (2 * OCR2A)
|
||||||
|
// To turn the output on and off, we leave the PWM running, but connect and disconnect the output pin.
|
||||||
|
// A few hours staring at the ATmega documentation and this will all make sense.
|
||||||
|
// See my Secrets of Arduino PWM at http://arcfn.com/2009/07/secrets-of-arduino-pwm.html for details.
|
||||||
|
//
|
||||||
void IRsend::enableIROut(int khz) {
|
void IRsend::enableIROut(int khz) {
|
||||||
// Enables IR output. The khz value controls the modulation frequency in kilohertz.
|
|
||||||
// The IR output will be on pin 3 (OC2B).
|
|
||||||
// This routine is designed for 36-40KHz; if you use it for other values, it's up to you
|
|
||||||
// to make sure it gives reasonable results. (Watch out for overflow / underflow / rounding.)
|
|
||||||
// TIMER2 is used in phase-correct PWM mode, with OCR2A controlling the frequency and OCR2B
|
|
||||||
// controlling the duty cycle.
|
|
||||||
// There is no prescaling, so the output frequency is 16MHz / (2 * OCR2A)
|
|
||||||
// To turn the output on and off, we leave the PWM running, but connect and disconnect the output pin.
|
|
||||||
// A few hours staring at the ATmega documentation and this will all make sense.
|
|
||||||
// See my Secrets of Arduino PWM at http://arcfn.com/2009/07/secrets-of-arduino-pwm.html for details.
|
|
||||||
|
|
||||||
|
|
||||||
// Disable the Timer2 Interrupt (which is used for receiving IR)
|
// Disable the Timer2 Interrupt (which is used for receiving IR)
|
||||||
TIMER_DISABLE_INTR; //Timer2 Overflow Interrupt
|
TIMER_DISABLE_INTR; //Timer2 Overflow Interrupt
|
||||||
|
|
||||||
@@ -351,6 +354,7 @@ IRrecv::IRrecv(int recvpin)
|
|||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
// initialization
|
// initialization
|
||||||
|
//
|
||||||
void IRrecv::enableIRIn() {
|
void IRrecv::enableIRIn() {
|
||||||
cli();
|
cli();
|
||||||
// setup pulse clock timer interrupt
|
// setup pulse clock timer interrupt
|
||||||
@@ -376,6 +380,7 @@ void IRrecv::enableIRIn() {
|
|||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
// enable/disable blinking of pin 13 on IR processing
|
// enable/disable blinking of pin 13 on IR processing
|
||||||
|
//
|
||||||
void IRrecv::blink13(int blinkflag)
|
void IRrecv::blink13(int blinkflag)
|
||||||
{
|
{
|
||||||
irparams.blinkflag = blinkflag;
|
irparams.blinkflag = blinkflag;
|
||||||
@@ -391,6 +396,7 @@ void IRrecv::blink13(int blinkflag)
|
|||||||
// First entry is the SPACE between transmissions.
|
// First entry is the SPACE between transmissions.
|
||||||
// As soon as a SPACE gets long, ready is set, state switches to IDLE, timing of SPACE continues.
|
// As soon as a SPACE gets long, ready is set, state switches to IDLE, timing of SPACE continues.
|
||||||
// As soon as first MARK arrives, gap width is recorded, ready is cleared, and new logging starts
|
// As soon as first MARK arrives, gap width is recorded, ready is cleared, and new logging starts
|
||||||
|
//
|
||||||
ISR(TIMER_INTR_NAME)
|
ISR(TIMER_INTR_NAME)
|
||||||
{
|
{
|
||||||
TIMER_RESET;
|
TIMER_RESET;
|
||||||
@@ -766,9 +772,10 @@ long IRrecv::decodeWhynter(decode_results *results) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
#ifdef DECODE_SANYO
|
|
||||||
// I think this is a Sanyo decoder - serial = SA 8650B
|
// I think this is a Sanyo decoder - serial = SA 8650B
|
||||||
// Looks like Sony except for timings, 48 chars of data and time/space different
|
// Looks like Sony except for timings, 48 chars of data and time/space different
|
||||||
|
//
|
||||||
|
#ifdef DECODE_SANYO
|
||||||
long IRrecv::decodeSanyo(decode_results *results) {
|
long IRrecv::decodeSanyo(decode_results *results) {
|
||||||
long data = 0;
|
long data = 0;
|
||||||
if (irparams.rawlen < 2 * SANYO_BITS + 2) {
|
if (irparams.rawlen < 2 * SANYO_BITS + 2) {
|
||||||
@@ -776,12 +783,15 @@ long IRrecv::decodeSanyo(decode_results *results) {
|
|||||||
}
|
}
|
||||||
int offset = 0; // Skip first space
|
int offset = 0; // Skip first space
|
||||||
// Initial space
|
// Initial space
|
||||||
/* Put this back in for debugging - note can't use #DEBUG as if Debug on we don't see the repeat cos of the delay
|
|
||||||
|
#if 0
|
||||||
|
// Put this back in for debugging - note can't use #DEBUG as if Debug on we don't see the repeat cos of the delay
|
||||||
Serial.print("IR Gap: ");
|
Serial.print("IR Gap: ");
|
||||||
Serial.println( results->rawbuf[offset]);
|
Serial.println( results->rawbuf[offset]);
|
||||||
Serial.println( "test against:");
|
Serial.println( "test against:");
|
||||||
Serial.println(results->rawbuf[offset]);
|
Serial.println(results->rawbuf[offset]);
|
||||||
*/
|
#endif
|
||||||
|
|
||||||
if (results->rawbuf[offset] < SANYO_DOUBLE_SPACE_USECS) {
|
if (results->rawbuf[offset] < SANYO_DOUBLE_SPACE_USECS) {
|
||||||
// Serial.print("IR Gap found: ");
|
// Serial.print("IR Gap found: ");
|
||||||
results->bits = 0;
|
results->bits = 0;
|
||||||
@@ -833,8 +843,9 @@ long IRrecv::decodeSanyo(decode_results *results) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
#ifdef DECODE_MITSUBISHI
|
|
||||||
// Looks like Sony except for timings, 48 chars of data and time/space different
|
// Looks like Sony except for timings, 48 chars of data and time/space different
|
||||||
|
//
|
||||||
|
#ifdef DECODE_MITSUBISHI
|
||||||
long IRrecv::decodeMitsubishi(decode_results *results) {
|
long IRrecv::decodeMitsubishi(decode_results *results) {
|
||||||
// Serial.print("?!? decoding Mitsubishi:");Serial.print(irparams.rawlen); Serial.print(" want "); Serial.println( 2 * MITSUBISHI_BITS + 2);
|
// Serial.print("?!? decoding Mitsubishi:");Serial.print(irparams.rawlen); Serial.print(" want "); Serial.println( 2 * MITSUBISHI_BITS + 2);
|
||||||
long data = 0;
|
long data = 0;
|
||||||
@@ -843,13 +854,17 @@ long IRrecv::decodeMitsubishi(decode_results *results) {
|
|||||||
}
|
}
|
||||||
int offset = 0; // Skip first space
|
int offset = 0; // Skip first space
|
||||||
// Initial space
|
// Initial space
|
||||||
/* Put this back in for debugging - note can't use #DEBUG as if Debug on we don't see the repeat cos of the delay
|
|
||||||
|
#if 0
|
||||||
|
// Put this back in for debugging - note can't use #DEBUG as if Debug on we don't see the repeat cos of the delay
|
||||||
Serial.print("IR Gap: ");
|
Serial.print("IR Gap: ");
|
||||||
Serial.println( results->rawbuf[offset]);
|
Serial.println( results->rawbuf[offset]);
|
||||||
Serial.println( "test against:");
|
Serial.println( "test against:");
|
||||||
Serial.println(results->rawbuf[offset]);
|
Serial.println(results->rawbuf[offset]);
|
||||||
*/
|
#endif
|
||||||
/* Not seeing double keys from Mitsubishi
|
|
||||||
|
#if 0
|
||||||
|
// Not seeing double keys from Mitsubishi
|
||||||
if (results->rawbuf[offset] < MITSUBISHI_DOUBLE_SPACE_USECS) {
|
if (results->rawbuf[offset] < MITSUBISHI_DOUBLE_SPACE_USECS) {
|
||||||
// Serial.print("IR Gap found: ");
|
// Serial.print("IR Gap found: ");
|
||||||
results->bits = 0;
|
results->bits = 0;
|
||||||
@@ -857,7 +872,9 @@ long IRrecv::decodeMitsubishi(decode_results *results) {
|
|||||||
results->decode_type = MITSUBISHI;
|
results->decode_type = MITSUBISHI;
|
||||||
return DECODED;
|
return DECODED;
|
||||||
}
|
}
|
||||||
*/
|
#endif
|
||||||
|
|
||||||
|
|
||||||
offset++;
|
offset++;
|
||||||
|
|
||||||
// Typical
|
// Typical
|
||||||
@@ -907,6 +924,7 @@ long IRrecv::decodeMitsubishi(decode_results *results) {
|
|||||||
// offset and used are updated to keep track of the current position.
|
// offset and used are updated to keep track of the current position.
|
||||||
// t1 is the time interval for a single bit in microseconds.
|
// t1 is the time interval for a single bit in microseconds.
|
||||||
// Returns -1 for error (measured time interval is not a multiple of t1).
|
// Returns -1 for error (measured time interval is not a multiple of t1).
|
||||||
|
//
|
||||||
int IRrecv::getRClevel(decode_results *results, int *offset, int *used, int t1) {
|
int IRrecv::getRClevel(decode_results *results, int *offset, int *used, int t1) {
|
||||||
if (*offset >= results->rawlen) {
|
if (*offset >= results->rawlen) {
|
||||||
// After end of recorded buffer, assume SPACE.
|
// After end of recorded buffer, assume SPACE.
|
||||||
@@ -1232,13 +1250,11 @@ long IRrecv::decodeSAMSUNG(decode_results *results) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
/**
|
// Aiwa system
|
||||||
* Aiwa system
|
// Remote control RC-T501
|
||||||
* Remote control RC-T501
|
// Lirc file http://lirc.sourceforge.net/remotes/aiwa/RC-T501
|
||||||
* Lirc file http://lirc.sourceforge.net/remotes/aiwa/RC-T501
|
//
|
||||||
*
|
#ifdef DECODE_AIWA_RC_T501
|
||||||
*/
|
|
||||||
#ifdef DECODE_AIWA_RC_T501
|
|
||||||
long IRrecv::decodeAiwaRCT501(decode_results *results) {
|
long IRrecv::decodeAiwaRCT501(decode_results *results) {
|
||||||
int data = 0;
|
int data = 0;
|
||||||
int offset = 1; // skip first garbage read
|
int offset = 1; // skip first garbage read
|
||||||
@@ -1295,23 +1311,22 @@ long IRrecv::decodeAiwaRCT501(decode_results *results) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
/* -----------------------------------------------------------------------
|
// hashdecode - decode an arbitrary IR code.
|
||||||
* hashdecode - decode an arbitrary IR code.
|
// Instead of decoding using a standard encoding scheme
|
||||||
* Instead of decoding using a standard encoding scheme
|
// (e.g. Sony, NEC, RC5), the code is hashed to a 32-bit value.
|
||||||
* (e.g. Sony, NEC, RC5), the code is hashed to a 32-bit value.
|
//
|
||||||
*
|
// The algorithm: look at the sequence of MARK signals, and see if each one
|
||||||
* The algorithm: look at the sequence of MARK signals, and see if each one
|
// is shorter (0), the same length (1), or longer (2) than the previous.
|
||||||
* is shorter (0), the same length (1), or longer (2) than the previous.
|
// Do the same with the SPACE signals. Hszh the resulting sequence of 0's,
|
||||||
* Do the same with the SPACE signals. Hszh the resulting sequence of 0's,
|
// 1's, and 2's to a 32-bit value. This will give a unique value for each
|
||||||
* 1's, and 2's to a 32-bit value. This will give a unique value for each
|
// different code (probably), for most code systems.
|
||||||
* different code (probably), for most code systems.
|
//
|
||||||
*
|
// http://arcfn.com/2010/01/using-arbitrary-remotes-with-arduino.html
|
||||||
* http://arcfn.com/2010/01/using-arbitrary-remotes-with-arduino.html
|
//
|
||||||
*/
|
|
||||||
|
|
||||||
// Compare two tick values, returning 0 if newval is shorter,
|
// Compare two tick values, returning 0 if newval is shorter,
|
||||||
// 1 if newval is equal, and 2 if newval is longer
|
// 1 if newval is equal, and 2 if newval is longer
|
||||||
// Use a tolerance of 20%
|
// Use a tolerance of 20%
|
||||||
|
//
|
||||||
int IRrecv::compare(unsigned int oldval, unsigned int newval) {
|
int IRrecv::compare(unsigned int oldval, unsigned int newval) {
|
||||||
if (newval < oldval * .8) {
|
if (newval < oldval * .8) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1326,13 +1341,13 @@ int IRrecv::compare(unsigned int oldval, unsigned int newval) {
|
|||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
// Use FNV hash algorithm: http://isthe.com/chongo/tech/comp/fnv/#FNV-param
|
// Use FNV hash algorithm: http://isthe.com/chongo/tech/comp/fnv/#FNV-param
|
||||||
|
// Converts the raw code values into a 32-bit hash code.
|
||||||
|
// Hopefully this code is unique for each button.
|
||||||
|
// This isn't a "real" decoding, just an arbitrary value.
|
||||||
|
//
|
||||||
#define FNV_PRIME_32 16777619
|
#define FNV_PRIME_32 16777619
|
||||||
#define FNV_BASIS_32 2166136261
|
#define FNV_BASIS_32 2166136261
|
||||||
|
|
||||||
/* Converts the raw code values into a 32-bit hash code.
|
|
||||||
* Hopefully this code is unique for each button.
|
|
||||||
* This isn't a "real" decoding, just an arbitrary value.
|
|
||||||
*/
|
|
||||||
long IRrecv::decodeHash(decode_results *results) {
|
long IRrecv::decodeHash(decode_results *results) {
|
||||||
// Require at least 6 samples to prevent triggering on noise
|
// Require at least 6 samples to prevent triggering on noise
|
||||||
if (results->rawlen < 6) {
|
if (results->rawlen < 6) {
|
||||||
@@ -1351,28 +1366,27 @@ long IRrecv::decodeHash(decode_results *results) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
/* Sharp and DISH support by Todd Treece ( http://unionbridge.org/design/ircommand )
|
// Sharp and DISH support by Todd Treece ( http://unionbridge.org/design/ircommand )
|
||||||
|
//
|
||||||
The Dish send function needs to be repeated 4 times, and the Sharp function
|
// The Dish send function needs to be repeated 4 times, and the Sharp function
|
||||||
has the necessary repeat built in because of the need to invert the signal.
|
// has the necessary repeat built in because of the need to invert the signal.
|
||||||
|
//
|
||||||
Sharp protocol documentation:
|
// Sharp protocol documentation:
|
||||||
http://www.sbprojects.com/knowledge/ir/sharp.htm
|
// http://www.sbprojects.com/knowledge/ir/sharp.htm
|
||||||
|
//
|
||||||
Here are the LIRC files that I found that seem to match the remote codes
|
// Here are the LIRC files that I found that seem to match the remote codes
|
||||||
from the oscilloscope:
|
// from the oscilloscope:
|
||||||
|
//
|
||||||
Sharp LCD TV:
|
// Sharp LCD TV:
|
||||||
http://lirc.sourceforge.net/remotes/sharp/GA538WJSA
|
// http://lirc.sourceforge.net/remotes/sharp/GA538WJSA
|
||||||
|
//
|
||||||
DISH NETWORK (echostar 301):
|
// DISH NETWORK (echostar 301):
|
||||||
http://lirc.sourceforge.net/remotes/echostar/301_501_3100_5100_58xx_59xx
|
// http://lirc.sourceforge.net/remotes/echostar/301_501_3100_5100_58xx_59xx
|
||||||
|
//
|
||||||
For the DISH codes, only send the last for characters of the hex.
|
// For the DISH codes, only send the last for characters of the hex.
|
||||||
i.e. use 0x1C10 instead of 0x0000000000001C10 which is listed in the
|
// i.e. use 0x1C10 instead of 0x0000000000001C10 which is listed in the
|
||||||
linked LIRC file.
|
// linked LIRC file.
|
||||||
*/
|
//
|
||||||
|
|
||||||
#ifdef SEND_SHARP
|
#ifdef SEND_SHARP
|
||||||
void IRsend::sendSharp(unsigned long data, int nbits) {
|
void IRsend::sendSharp(unsigned long data, int nbits) {
|
||||||
unsigned long invertdata = data ^ SHARP_TOGGLE_MASK;
|
unsigned long invertdata = data ^ SHARP_TOGGLE_MASK;
|
||||||
@@ -1402,6 +1416,7 @@ void IRsend::sendSharp(unsigned long data, int nbits) {
|
|||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
// Sharp send compatible with data obtained through decodeSharp
|
// Sharp send compatible with data obtained through decodeSharp
|
||||||
|
//
|
||||||
void IRsend::sendSharp(unsigned int address, unsigned int command) {
|
void IRsend::sendSharp(unsigned int address, unsigned int command) {
|
||||||
sendSharpRaw((address << 10) | (command << 2) | 2, 15);
|
sendSharpRaw((address << 10) | (command << 2) | 2, 15);
|
||||||
}
|
}
|
||||||
@@ -1430,13 +1445,11 @@ void IRsend::sendDISH(unsigned long data, int nbits)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
/**
|
// Aiwa system
|
||||||
* Aiwa system
|
// Remote control RC-T501
|
||||||
* Remote control RC-T501
|
// Lirc file http://lirc.sourceforge.net/remotes/aiwa/RC-T501
|
||||||
* Lirc file http://lirc.sourceforge.net/remotes/aiwa/RC-T501
|
//
|
||||||
*
|
#ifdef SEND_AIWA_RC_T501
|
||||||
*/
|
|
||||||
#ifdef SEND_AIWA_RC_T501
|
|
||||||
void IRsend::sendAiwaRCT501(int code) {
|
void IRsend::sendAiwaRCT501(int code) {
|
||||||
// PRE-DATA, 26 bits, 0x227EEC0
|
// PRE-DATA, 26 bits, 0x227EEC0
|
||||||
long int pre = 0x227EEC0;
|
long int pre = 0x227EEC0;
|
||||||
|
|||||||
Reference in New Issue
Block a user