aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcores/arduino/Arduino.h1
-rw-r--r--cores/arduino/CDC.cpp2
-rw-r--r--cores/arduino/USBAPI.h1
-rw-r--r--cores/arduino/main.cpp7
-rw-r--r--variants/leonardo/pins_arduino.h2
-rw-r--r--variants/mega/pins_arduino.h2
-rw-r--r--variants/robot_control/pins_arduino.h2
-rw-r--r--variants/robot_motor/pins_arduino.h2
-rw-r--r--variants/standard/pins_arduino.h2
9 files changed, 21 insertions, 0 deletions
diff --git a/cores/arduino/Arduino.h b/cores/arduino/Arduino.h
index 93a3525..425dfcb 100755
--- a/cores/arduino/Arduino.h
+++ b/cores/arduino/Arduino.h
@@ -113,6 +113,7 @@ typedef uint8_t boolean;
typedef uint8_t byte;
void init(void);
+void initVariant(void);
void pinMode(uint8_t, uint8_t);
void digitalWrite(uint8_t, uint8_t);
diff --git a/cores/arduino/CDC.cpp b/cores/arduino/CDC.cpp
index 3cfd1b7..aae91c2 100644
--- a/cores/arduino/CDC.cpp
+++ b/cores/arduino/CDC.cpp
@@ -116,10 +116,12 @@ bool WEAK CDC_Setup(Setup& setup)
void Serial_::begin(unsigned long baud_count)
{
+ peek_buffer = -1;
}
void Serial_::begin(unsigned long baud_count, byte config)
{
+ peek_buffer = -1;
}
void Serial_::end(void)
diff --git a/cores/arduino/USBAPI.h b/cores/arduino/USBAPI.h
index d506b58..4846fc2 100644
--- a/cores/arduino/USBAPI.h
+++ b/cores/arduino/USBAPI.h
@@ -30,6 +30,7 @@ class Serial_ : public Stream
private:
int peek_buffer;
public:
+ Serial_() { peek_buffer = -1; };
void begin(unsigned long);
void begin(unsigned long, uint8_t);
void end(void);
diff --git a/cores/arduino/main.cpp b/cores/arduino/main.cpp
index 0ad6962..091c365 100644
--- a/cores/arduino/main.cpp
+++ b/cores/arduino/main.cpp
@@ -19,10 +19,17 @@
#include <Arduino.h>
+// Weak empty variant initialization function.
+// May be redefined by variant files.
+void initVariant() __attribute__((weak));
+void initVariant() { }
+
int main(void)
{
init();
+ initVariant();
+
#if defined(USBCON)
USBDevice.attach();
#endif
diff --git a/variants/leonardo/pins_arduino.h b/variants/leonardo/pins_arduino.h
index 473b92e..fd75373 100644
--- a/variants/leonardo/pins_arduino.h
+++ b/variants/leonardo/pins_arduino.h
@@ -133,6 +133,8 @@ static const uint8_t A11 = 29; // D12
extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
+#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT)))))
+
#ifdef ARDUINO_MAIN
// On the Arduino board, digital pins are also used
diff --git a/variants/mega/pins_arduino.h b/variants/mega/pins_arduino.h
index 9991a21..a80991b 100644
--- a/variants/mega/pins_arduino.h
+++ b/variants/mega/pins_arduino.h
@@ -83,6 +83,8 @@ static const uint8_t A15 = 69;
( (((p) >= 62) && ((p) <= 69)) ? ((p) - 62) : \
0 ) ) ) ) ) )
+#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : ((p) >= 18 && (p) <= 21 ? 23 - (p) : NOT_AN_INTERRUPT)))
+
#ifdef ARDUINO_MAIN
const uint16_t PROGMEM port_to_mode_PGM[] = {
diff --git a/variants/robot_control/pins_arduino.h b/variants/robot_control/pins_arduino.h
index 4acfc0d..b868064 100644
--- a/variants/robot_control/pins_arduino.h
+++ b/variants/robot_control/pins_arduino.h
@@ -94,6 +94,8 @@ static const uint8_t LED1 = 17; // D17 - RX_Led
extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
+#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT)))))
+
#ifdef ARDUINO_MAIN
// On the Arduino board, digital pins are also used
diff --git a/variants/robot_motor/pins_arduino.h b/variants/robot_motor/pins_arduino.h
index fdb4c67..7dc4a79 100644
--- a/variants/robot_motor/pins_arduino.h
+++ b/variants/robot_motor/pins_arduino.h
@@ -89,6 +89,8 @@ static const uint8_t TK4 = 12; // A11
extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
+#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT)))))
+
#ifdef ARDUINO_MAIN
// On the Arduino board, digital pins are also used
diff --git a/variants/standard/pins_arduino.h b/variants/standard/pins_arduino.h
index 2e24e19..3d4a9f6 100644
--- a/variants/standard/pins_arduino.h
+++ b/variants/standard/pins_arduino.h
@@ -60,6 +60,8 @@ static const uint8_t A7 = 21;
#define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)0))))
#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14)))
+#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT))
+
#ifdef ARDUINO_MAIN
// On the Arduino board, digital pins are also used