diff --git a/build/shared/revisions.txt b/build/shared/revisions.txt index 6566c2526..e87448663 100644 --- a/build/shared/revisions.txt +++ b/build/shared/revisions.txt @@ -9,6 +9,9 @@ The following changes are included also in the Arduino IDE 1.0.7: [libraries] * EthernetClien: use IANA recommended ephemeral port range, 49152-65535 (Jack Christensen, cifer-lee) +[core] +* Fixed regression in HardwareSerial::available() introduced with https://github.com/arduino/Arduino/pull/2057 + ARDUINO 1.5.8 BETA - 2014.10.01 [ide] @@ -346,6 +349,10 @@ ARDUINO 1.0.7 * Backported GSM from IDE 1.5.x * EthernetClien: use IANA recommended ephemeral port range, 49152-65535 (Jack Christensen, cifer-lee) +[core] +* Fixed missing NOT_AN_INTERRUPT constant in digitalPinToInterrupt() macro +* Fixed regression in HardwareSerial::available() introduced with https://github.com/arduino/Arduino/pull/2057 + ARDUINO 1.0.6 - 2014.09.16 [core] diff --git a/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp b/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp index 29a336649..41935e320 100644 --- a/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp +++ b/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp @@ -152,7 +152,7 @@ void HardwareSerial::end() int HardwareSerial::available(void) { - return (int)(SERIAL_RX_BUFFER_SIZE + _rx_buffer_head - _rx_buffer_tail) % SERIAL_RX_BUFFER_SIZE; + return ((unsigned int)(SERIAL_RX_BUFFER_SIZE + _rx_buffer_head - _rx_buffer_tail)) % SERIAL_RX_BUFFER_SIZE; } int HardwareSerial::peek(void) diff --git a/hardware/arduino/avr/cores/arduino/HardwareSerial.h b/hardware/arduino/avr/cores/arduino/HardwareSerial.h index 935934b19..7dc2aa98c 100644 --- a/hardware/arduino/avr/cores/arduino/HardwareSerial.h +++ b/hardware/arduino/avr/cores/arduino/HardwareSerial.h @@ -32,6 +32,8 @@ // using a ring buffer (I think), in which head is the index of the location // to which to write the next incoming character and tail is the index of the // location from which to read. +// NOTE: a "power of 2" buffer size is reccomended to dramatically +// optimize all the modulo operations for ring buffers. #if !(defined(SERIAL_TX_BUFFER_SIZE) && defined(SERIAL_RX_BUFFER_SIZE)) #if (RAMEND < 1000) #define SERIAL_TX_BUFFER_SIZE 16