* Sets / changes the receiver pin number */
| 332 | * Sets / changes the receiver pin number |
| 333 | */ |
| 334 | void IRrecv::setReceivePin(uint_fast8_t aReceivePinNumber) { |
| 335 | irparams.IRReceivePin = aReceivePinNumber; |
| 336 | #if defined(__AVR__) |
| 337 | # if defined(__digitalPinToBit) |
| 338 | if (__builtin_constant_p(aReceivePinNumber)) { |
| 339 | irparams.IRReceivePinMask = 1UL << (__digitalPinToBit(aReceivePinNumber)); |
| 340 | } else { |
| 341 | irparams.IRReceivePinMask = digitalPinToBitMask(aReceivePinNumber); // requires 10 bytes PGM, even if not referenced (?because it is assembler code?) |
| 342 | } |
| 343 | # else |
| 344 | irparams.IRReceivePinMask = digitalPinToBitMask(aReceivePinNumber); // requires 10 bytes PGM, even if not referenced (?because it is assembler code?) |
| 345 | # endif |
| 346 | # if defined(__digitalPinToPINReg) |
| 347 | /* |
| 348 | * This code is 54 bytes smaller, if aReceivePinNumber is a constant :-), but 38 byte longer if it is not constant (,which is not likely). |
| 349 | */ |
| 350 | if (__builtin_constant_p(aReceivePinNumber)) { |
| 351 | irparams.IRReceivePinPortInputRegister = __digitalPinToPINReg(aReceivePinNumber); |
| 352 | } else { |
| 353 | irparams.IRReceivePinPortInputRegister = portInputRegister(digitalPinToPort(aReceivePinNumber)); // requires 44 bytes PGM, even if not referenced |
| 354 | } |
| 355 | # else |
| 356 | irparams.IRReceivePinPortInputRegister = portInputRegister(digitalPinToPort(aReceivePinNumber)); // requires 44 bytes PGM, even if not referenced |
| 357 | # endif |
| 358 | #endif |
| 359 | // Seems to be at least required by ESP32 |
| 360 | // Set pin mode once. pinModeFast makes no difference if used, but saves 224 if not referenced :-( |
| 361 | if (__builtin_constant_p(aReceivePinNumber)) { |
| 362 | pinModeFast(aReceivePinNumber, INPUT); |
| 363 | } else { |
| 364 | pinModeFast(aReceivePinNumber, INPUT); |
| 365 | } |
| 366 | } |
| 367 | |
| 368 | #if !defined(IR_REMOTE_DISABLE_RECEIVE_COMPLETE_CALLBACK) |
| 369 | /** |
nothing calls this directly
no outgoing calls
no test coverage detected