diff options
author | Zach Eveland <zeveland@blacklabel-development.com> | 2011-09-08 20:26:47 -0400 |
---|---|---|
committer | Zach Eveland <zeveland@blacklabel-development.com> | 2011-09-08 20:26:47 -0400 |
commit | c0ad36ad4341b90a0bd3acde1e50ce85dfd2f4a8 (patch) | |
tree | ce305833da2f7cac516d33bcb6bd7cebeb2d0adb /cores/arduino/HardwareSerial.cpp | |
parent | e52cf0e4203bd6dda76c2544b0479548f465a0c7 (diff) | |
parent | 8b13206e655cd9c1123d842cab1fdd0afd6edc8b (diff) |
Merge branch 'new-extension' of https://github.com/arduino/Arduino into new-extension
Conflicts:
build/linux/dist/tools/avrdude.conf
Diffstat (limited to 'cores/arduino/HardwareSerial.cpp')
-rw-r--r-- | cores/arduino/HardwareSerial.cpp | 37 |
1 files changed, 4 insertions, 33 deletions
diff --git a/cores/arduino/HardwareSerial.cpp b/cores/arduino/HardwareSerial.cpp index 613f252..b5992ad 100644 --- a/cores/arduino/HardwareSerial.cpp +++ b/cores/arduino/HardwareSerial.cpp @@ -95,7 +95,6 @@ inline void store_char(unsigned char c, ring_buffer *buffer) #else void serialEvent() __attribute__((weak)); void serialEvent() {} - volatile static unsigned char serialEvent_flag = 0; #define serialEvent_implemented #if defined(USART_RX_vect) SIGNAL(USART_RX_vect) @@ -117,7 +116,6 @@ inline void store_char(unsigned char c, ring_buffer *buffer) #error UDR not defined #endif store_char(c, &rx_buffer); - serialEvent_flag = 1; } #endif #endif @@ -125,13 +123,11 @@ inline void store_char(unsigned char c, ring_buffer *buffer) #if defined(USART1_RX_vect) void serialEvent1() __attribute__((weak)); void serialEvent1() {} - volatile static unsigned char serialEvent1_flag = 0; #define serialEvent1_implemented SIGNAL(USART1_RX_vect) { unsigned char c = UDR1; store_char(c, &rx_buffer1); - serialEvent1_flag = 1; } #elif defined(SIG_USART1_RECV) #error SIG_USART1_RECV @@ -140,13 +136,11 @@ inline void store_char(unsigned char c, ring_buffer *buffer) #if defined(USART2_RX_vect) && defined(UDR2) void serialEvent2() __attribute__((weak)); void serialEvent2() {} - volatile static unsigned char serialEvent2_flag = 0; #define serialEvent2_implemented SIGNAL(USART2_RX_vect) { unsigned char c = UDR2; store_char(c, &rx_buffer2); - serialEvent2_flag = 1; } #elif defined(SIG_USART2_RECV) #error SIG_USART2_RECV @@ -155,13 +149,11 @@ inline void store_char(unsigned char c, ring_buffer *buffer) #if defined(USART3_RX_vect) && defined(UDR3) void serialEvent3() __attribute__((weak)); void serialEvent3() {} - volatile static unsigned char serialEvent3_flag = 0; #define serialEvent3_implemented SIGNAL(USART3_RX_vect) { unsigned char c = UDR3; store_char(c, &rx_buffer3); - serialEvent3_flag = 1; } #elif defined(SIG_USART3_RECV) #error SIG_USART3_RECV @@ -169,38 +161,17 @@ inline void store_char(unsigned char c, ring_buffer *buffer) void serialEventRun(void) { - unsigned char flag, oldSREG; #ifdef serialEvent_implemented - oldSREG = SREG; - noInterrupts(); - flag = serialEvent_flag; - serialEvent_flag = 0; - SREG = oldSREG; - if (flag) serialEvent(); + if (Serial.available()) serialEvent(); #endif #ifdef serialEvent1_implemented - oldSREG = SREG; - noInterrupts(); - flag = serialEvent1_flag; - serialEvent1_flag = 0; - SREG = oldSREG; - if (flag) serialEvent1(); + if (Serial1.available()) serialEvent1(); #endif #ifdef serialEvent2_implemented - oldSREG = SREG; - noInterrupts(); - flag = serialEvent2_flag; - serialEvent2_flag = 0; - SREG = oldSREG; - if (flag) serialEvent2(); + if (Serial2.available()) serialEvent2(); #endif #ifdef serialEvent3_implemented - oldSREG = SREG; - noInterrupts(); - flag = serialEvent3_flag; - serialEvent3_flag = 0; - SREG = oldSREG; - if (flag) serialEvent3(); + if (Serial3.available()) serialEvent3(); #endif } |