@@ -308,22 +308,18 @@ bool wait_for_heatup = false;
308
308
#pragma GCC diagnostic push
309
309
#pragma GCC diagnostic ignored "-Wnarrowing"
310
310
311
- #ifndef RUNTIME_ONLY_ANALOG_TO_DIGITAL
312
- template <pin_t ...D>
313
- constexpr pin_t OnlyPins<_SP_END, D...>::table[sizeof ...(D)];
314
- #endif
311
+ #define DIO_PIN (P ) TERN(TARGET_LPC1768, P, analogInputToDigitalPin(P))
315
312
316
313
bool pin_is_protected (const pin_t pin) {
317
- #ifdef RUNTIME_ONLY_ANALOG_TO_DIGITAL
318
- static const pin_t sensitive_pins[] PROGMEM = { SENSITIVE_PINS };
319
- const size_t pincount = COUNT (sensitive_pins);
320
- #else
321
- static constexpr size_t pincount = OnlyPins<SENSITIVE_PINS>::size;
322
- static const pin_t (&sensitive_pins)[pincount] PROGMEM = OnlyPins<SENSITIVE_PINS>::table;
323
- #endif
324
- for (uint8_t i = 0 ; i < pincount; ++i) {
325
- const pin_t * const pptr = &sensitive_pins[i];
326
- if (pin == (sizeof (pin_t ) == 2 ? (pin_t )pgm_read_word (pptr) : (pin_t )pgm_read_byte (pptr))) return true ;
314
+ for (uint8_t i = 0 ; i < COUNT (sensitive_dio); ++i) {
315
+ const pin_t * const pptr = &sensitive_dio[i];
316
+ const pin_t p = sizeof (pin_t ) == 2 ? (pin_t )pgm_read_word (pptr) : (pin_t )pgm_read_byte (pptr);
317
+ if (pin == p) return true ;
318
+ }
319
+ for (uint8_t i = 0 ; i < COUNT (sensitive_aio); ++i) {
320
+ const pin_t * const pptr = &sensitive_aio[i];
321
+ const pin_t p = sizeof (pin_t ) == 2 ? (pin_t )pgm_read_word (pptr) : (pin_t )pgm_read_byte (pptr);
322
+ if (pin == DIO_PIN (p)) return true ;
327
323
}
328
324
return false ;
329
325
}
0 commit comments