mirror of
https://github.com/Theaninova/Arduino-IRremote.git
synced 2026-01-07 13:52:47 +00:00
Cleanup sendSharp and fix reliability
This commit is contained in:
46
IRremote.cpp
46
IRremote.cpp
@@ -1109,35 +1109,27 @@ linked LIRC file.
|
|||||||
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;
|
||||||
enableIROut(38);
|
enableIROut(38);
|
||||||
for (int i = 0; i < nbits; i++) {
|
|
||||||
if (data & 0x4000) {
|
// Sending codes in bursts of 3 (normal, inverted, normal) makes transmission
|
||||||
mark(SHARP_BIT_MARK);
|
// much more reliable. That's the exact behaviour of CD-S6470 remote control.
|
||||||
space(SHARP_ONE_SPACE);
|
for (int n = 0; n < 3; n++) {
|
||||||
|
for (int i = 1 << (nbits-1); i > 0; i>>=1) {
|
||||||
|
if (data & i) {
|
||||||
|
mark(SHARP_BIT_MARK);
|
||||||
|
space(SHARP_ONE_SPACE);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mark(SHARP_BIT_MARK);
|
||||||
|
space(SHARP_ZERO_SPACE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
mark(SHARP_BIT_MARK);
|
mark(SHARP_BIT_MARK);
|
||||||
space(SHARP_ZERO_SPACE);
|
space(SHARP_ZERO_SPACE);
|
||||||
}
|
delay(40);
|
||||||
data <<= 1;
|
|
||||||
|
data = data ^ SHARP_TOGGLE_MASK;
|
||||||
}
|
}
|
||||||
|
|
||||||
mark(SHARP_BIT_MARK);
|
|
||||||
space(SHARP_ZERO_SPACE);
|
|
||||||
delay(46);
|
|
||||||
for (int i = 0; i < nbits; i++) {
|
|
||||||
if (invertdata & 0x4000) {
|
|
||||||
mark(SHARP_BIT_MARK);
|
|
||||||
space(SHARP_ONE_SPACE);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
mark(SHARP_BIT_MARK);
|
|
||||||
space(SHARP_ZERO_SPACE);
|
|
||||||
}
|
|
||||||
invertdata <<= 1;
|
|
||||||
}
|
|
||||||
mark(SHARP_BIT_MARK);
|
|
||||||
space(SHARP_ZERO_SPACE);
|
|
||||||
delay(46);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IRsend::sendDISH(unsigned long data, int nbits)
|
void IRsend::sendDISH(unsigned long data, int nbits)
|
||||||
|
|||||||
Reference in New Issue
Block a user