Cleanup sendSharp and fix reliability

This commit is contained in:
Piotr Dobrowolski
2014-09-17 21:30:36 +02:00
parent 24ba950f5c
commit 95f93e639e

View File

@@ -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)