MCPcopy Create free account
hub / github.com/Arduino-IRremote/Arduino-IRremote / setReceivePin

Method setReceivePin

src/IRReceive.hpp:334–366  ·  view source on GitHub ↗

* Sets / changes the receiver pin number */

Source from the content-addressed store, hash-verified

332 * Sets / changes the receiver pin number
333 */
334void 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/**

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected