Skip to content

Commit afba399

Browse files
committed
Disable PCI functionality where not available
1 parent 1b8d62c commit afba399

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/PciManager.cpp

+14-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*
66
* Author: Balazs Kelemen
77
* Contact: [email protected]
8-
* Copyright: 2012 Balazs Kelemen
8+
* Copyright: 2017 Balazs Kelemen
99
* Copying permission statement:
1010
This file is part of PciManager.
1111
@@ -26,7 +26,8 @@
2626

2727
#include "Arduino.h"
2828
#include "PciManager.h"
29-
29+
//#include <avr/io.h>
30+
//#include <avr/interrupt.h>
3031

3132
/**
3233
* Add listener to the chain.
@@ -82,14 +83,16 @@ void PciManagerClass::remove(PciListener* listener) {
8283
void PciManagerClass::registerListener(byte pin, PciListener* listener) {
8384
// -- PCINT vector will be 0, 1 or 2 depending on the pin.
8485
// -- digitalPinToPCICRbit(pin) will calculate which one it is.
86+
#if defined(digitalPinToPCICRbit)
8587
listener->pciVector = digitalPinToPCICRbit(pin);
8688
listener->pciPin = pin;
8789

8890
volatile uint8_t* pcicr = digitalPinToPCICR(pin);
8991
*pcicr |= (1 << listener->pciVector);
9092
volatile uint8_t* pcmsk = digitalPinToPCMSK(pin);
9193
*pcmsk |= (1 << digitalPinToPCMSKbit(pin));
92-
94+
#endif
95+
9396
this->add(listener);
9497
}
9598

@@ -117,6 +120,7 @@ void PciManagerClass::removeListener(PciListener* listenerToRemove) {
117120

118121
if(!hasMoreListenersOnSamePin) {
119122
// -- Remove mask if no other uses this pin.
123+
#if defined(digitalPinToPCICRbit)
120124
volatile uint8_t* pcmsk = digitalPinToPCMSK(listenerToRemove->pciPin);
121125
*pcmsk &= ~(1 << digitalPinToPCMSKbit(listenerToRemove->pciPin));
122126

@@ -125,6 +129,7 @@ void PciManagerClass::removeListener(PciListener* listenerToRemove) {
125129
volatile uint8_t* pcicr = digitalPinToPCICR(listenerToRemove->pciPin);
126130
*pcicr &= ~(1 << listenerToRemove->pciVector);
127131
}
132+
#endif
128133
}
129134
}
130135

@@ -145,16 +150,21 @@ void PciManagerClass::callListeners(byte pciVectorId) {
145150
/**
146151
* Global interrupt handling implementations.
147152
*/
153+
#if defined(PCINT0_vect)
148154
ISR(PCINT0_vect){
149155
PciManager.callListeners(0);
150156
}
157+
#endif
158+
#if defined(PCINT1_vect)
151159
ISR(PCINT1_vect){
152160
PciManager.callListeners(1);
153161
}
162+
#endif
163+
#if defined(PCINT2_vect)
154164
ISR(PCINT2_vect){
155165
PciManager.callListeners(2);
156166
}
157-
167+
#endif
158168

159169
/**
160170
* Create a singleton from this manager class.

0 commit comments

Comments
 (0)