@@ -72,7 +72,7 @@ Firmata protocol and the actual pin numbers used by the Arduino
7272functions. Even though such mappings are often simple, pin
7373numbers received by Firmata protocol should always be used as
7474input to these macros, and the result of the macro should be
75- used with with any Arduino function.
75+ used with any Arduino function.
7676
7777When Firmata is extended to support a new pin mode or feature,
7878a pair of macros should be added and used for all hardware
@@ -144,6 +144,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
144144#define IS_PIN_SERVO (p ) (IS_PIN_DIGITAL(p) && (p) - 2 < MAX_SERVOS)
145145#define IS_PIN_I2C (p ) ((p) == 18 || (p) == 19)
146146#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
147+ #define IS_PIN_INTERRUPT (p ) ((p)==2 || (p)==3)
147148#define PIN_TO_DIGITAL (p ) (p)
148149#define PIN_TO_ANALOG (p ) ((p) - 14)
149150#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -160,6 +161,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
160161#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
161162#define IS_PIN_I2C (p ) ((p) == SDA || (p) == SCL)
162163#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
164+ #define IS_PIN_INTERRUPT (p ) 0
163165#define PIN_TO_DIGITAL (p ) (p)
164166#define PIN_TO_ANALOG (p ) ((p) - FIRST_ANALOG_PIN)
165167#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -176,6 +178,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
176178#define IS_PIN_PWM (p ) digitalPinHasPWM(p)
177179#define IS_PIN_SERVO (p ) (IS_PIN_DIGITAL(p) && (p) - 2 < MAX_SERVOS)
178180#define IS_PIN_I2C (p ) ((p) == 18 || (p) == 19)
181+ #define IS_PIN_INTERRUPT (p ) ((p)==2 || (p)==3)
179182#define PIN_TO_DIGITAL (p ) (p)
180183#define PIN_TO_ANALOG (p ) ((p) - 14)
181184#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -194,6 +197,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
194197#define IS_PIN_SERVO (p ) ((p) >= 2 && (p) - 2 < MAX_SERVOS)
195198#define IS_PIN_I2C (p ) ((p) == 20 || (p) == 21)
196199#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
200+ #define IS_PIN_INTERRUPT (p ) ((p)==2 || (p)==3 || (p)==18 || (p)==19 || (p)==20 || (p)==21)
197201#define PIN_TO_DIGITAL (p ) (p)
198202#define PIN_TO_ANALOG (p ) ((p) - 54)
199203#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -210,6 +214,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
210214#define IS_PIN_PWM (p ) digitalPinHasPWM(p)
211215#define IS_PIN_SERVO (p ) ((p) >= 2 && (p) - 2 < MAX_SERVOS)
212216#define IS_PIN_I2C (p ) ((p) == 20 || (p) == 21) // 70 71
217+ #define IS_PIN_INTERRUPT (p ) IS_PIN_DIGITAL(p)
213218#define PIN_TO_DIGITAL (p ) (p)
214219#define PIN_TO_ANALOG (p ) ((p) - 54)
215220#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -227,6 +232,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
227232#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
228233#define IS_PIN_I2C (p ) (0)
229234#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
235+ #define IS_PIN_INTERRUPT (p ) ((p) == 0 || (p) == 1 || (p) == 2 ||(p) == 3 || (p) == 4 || (p) == 6 ||(p) == 7 ||(p) == 16)
230236#define PIN_TO_DIGITAL (p ) (p)
231237#define PIN_TO_ANALOG (p ) (0)
232238#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -244,6 +250,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
244250#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
245251#define IS_PIN_I2C (p ) ((p) == 5 || (p) == 6)
246252#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
253+ #define IS_PIN_INTERRUPT (p ) ((p) == 5 || (p) == 6 || (p) == 7 || (p) == 8)
247254#define PIN_TO_DIGITAL (p ) (p)
248255#define PIN_TO_ANALOG (p ) (((p)<22)?21-(p):11)
249256#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -260,6 +267,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
260267#define IS_PIN_PWM (p ) digitalPinHasPWM(p)
261268#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
262269#define IS_PIN_I2C (p ) ((p) == 18 || (p) == 19)
270+ #define IS_PIN_INTERRUPT (p ) IS_PIN_DIGITAL(p)
263271#define PIN_TO_DIGITAL (p ) (p)
264272#define PIN_TO_ANALOG (p ) (((p)<=23)?(p)-14:(p)-24)
265273#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -277,6 +285,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
277285#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
278286#define IS_PIN_I2C (p ) ((p) == 0 || (p) == 1)
279287#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
288+ #define IS_PIN_INTERRUPT (p ) ((p) == 0 || (p) == 1 || (p) == 2 ||(p) == 3 ||(p) == 18 ||(p) == 19 ||(p) == 36 ||(p) == 37)
280289#define PIN_TO_DIGITAL (p ) (p)
281290#define PIN_TO_ANALOG (p ) ((p) - 38)
282291#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -294,12 +303,30 @@ writePort(port, value, bitmask): Write an 8 bit port.
294303#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
295304#define IS_PIN_I2C (p ) ((p) == 2 || (p) == 3)
296305#define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
306+ #define IS_PIN_INTERRUPT (p ) ((p)==0 || (p)==1 || (p)==2 || (p)==3 || (p)==7)
297307#define PIN_TO_DIGITAL (p ) (p)
298308#define PIN_TO_ANALOG (p ) (p) - 18
299309#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
300310#define PIN_TO_SERVO (p ) (p)
301311
302312
313+ // Intel Galileo Board
314+ #elif defined(ARDUINO_LINUX )
315+ #define TOTAL_ANALOG_PINS 6
316+ #define TOTAL_PINS 20 // 14 digital + 6 analog
317+ #define VERSION_BLINK_PIN 13
318+ #define IS_PIN_DIGITAL (p ) ((p) >= 2 && (p) <= 19)
319+ #define IS_PIN_ANALOG (p ) ((p) >= 14 && (p) <= 19)
320+ #define IS_PIN_PWM (p ) digitalPinHasPWM(p)
321+ #define IS_PIN_SERVO (p ) (IS_PIN_DIGITAL(p) && (p) - 2 < MAX_SERVOS)
322+ #define IS_PIN_I2C (p ) ((p) == SDA || (p) == SCL)
323+ #define IS_PIN_SPI (p ) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
324+ #define PIN_TO_DIGITAL (p ) (p)
325+ #define PIN_TO_ANALOG (p ) ((p) - 14)
326+ #define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
327+ #define PIN_TO_SERVO (p ) ((p) - 2)
328+
329+
303330// Sanguino
304331#elif defined(__AVR_ATmega644P__ ) || defined(__AVR_ATmega644__ )
305332#define TOTAL_ANALOG_PINS 8
@@ -310,6 +337,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
310337#define IS_PIN_PWM (p ) digitalPinHasPWM(p)
311338#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
312339#define IS_PIN_I2C (p ) ((p) == 16 || (p) == 17)
340+ #define IS_PIN_INTERRUPT (p ) ((p)==2 || (p)==10 || (p)==11)
313341#define PIN_TO_DIGITAL (p ) (p)
314342#define PIN_TO_ANALOG (p ) ((p) - 24)
315343#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -326,6 +354,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
326354#define IS_PIN_PWM (p ) digitalPinHasPWM(p)
327355#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
328356#define IS_PIN_I2C (p ) ((p) == 4 || (p) == 5)
357+ #define IS_PIN_INTERRUPT (p ) (0)
329358#define PIN_TO_DIGITAL (p ) (p)
330359#define PIN_TO_ANALOG (p ) ((p) - 36)
331360#define PIN_TO_PWM (p ) PIN_TO_DIGITAL(p)
@@ -339,7 +368,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
339368
340369// as long this is not defined for all boards:
341370#ifndef IS_PIN_SPI
342- #define IS_PIN_SPI (p ) 0
371+ #define IS_PIN_SPI (p ) (0)
343372#endif
344373
345374/*==============================================================================
0 commit comments