Skip to content

Commit b9aa95d

Browse files
committed
Merged in changes from upstream SAMD CORE 1.6.16 2017.08.23
2 parents 7c28b40 + f2ac24f commit b9aa95d

File tree

22 files changed

+135
-71
lines changed

22 files changed

+135
-71
lines changed

CHANGELOG

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
1-
1.6.16: (identical to beta version 1.6.8-beta-b3)
2-
1.6.8-beta-b3:
3-
* Changed version numbering to match Arduino SAMD core to indicate which upstream changes have been merged in.
4-
Release version 1.6.7 then skips to 1.6.16. Beta version 1.6.8-beta-b3 became release version 1.6.16.
1+
1.6.16 (release version, same as 1.6.16-beta-b0):
2+
1.6.16-beta-b0:
53
* Added MattairTech Xeno support (64-pin D21, L21, and C21)
6-
* Merged in changes from upstream SAMD CORE 1.6.17 (not released yet):
7-
* Fix changing trigger mode (RISING/FALLING/...) in attachInterrupt(..) during runtime. Thanks @joverbee
8-
* Improved ISR response time. Thanks @joverbee
4+
* Changed version numbering to match Arduino SAMD core to indicate which upstream changes have been merged in.
5+
* Release version 1.6.7 then skips to 1.6.16. Beta version 1.6.8-beta-b2 skips to 1.6.16-beta-b0.
96
* Merged in changes from upstream SAMD CORE 1.6.16 2017.08.23:
107
* PWMs now can perform real 16-bit resolution if analogWriteResolution(16) is set. Thanks @Adminius
118
* USB CDC: fixed issue of available() getting stuck when receiving ZLP's
@@ -15,6 +12,8 @@
1512
* Fixed pgm_read_ptr compatibility macro. Thanks @nkrkv
1613
* Documentation updates
1714

15+
**Version numbering change**
16+
1817
1.6.8-beta-b2:
1918
* Added SD Card firmware loading support to the bootloader (4KB and 8KB)
2019
* Removed SDU library, as the bootloader now supports SD cards directly

README.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,9 @@ CHANGELOG for details on upstream commits and MattairTech additions that have be
1818

1919
## What's New - Release Version (1.6.16)
2020

21-
* Changed version numbering to match Arduino SAMD core to indicate which upstream changes have been merged in.
22-
Release version 1.6.7 then skips to 1.6.16. Beta version 1.6.8-beta-b3 became 1.6.16.
2321
* Added MattairTech Xeno support (64-pin D21, L21, and C21)
24-
* Merged in changes from upstream SAMD CORE 1.6.17 (not released yet):
25-
* Fix changing trigger mode (RISING/FALLING/...) in attachInterrupt(..) during runtime. Thanks @joverbee
26-
* Improved ISR response time. Thanks @joverbee
22+
* Changed version numbering to match Arduino SAMD core to indicate which upstream changes have been merged in.
23+
* Release version 1.6.7 then skips to 1.6.16. Beta version 1.6.8-beta-b2 skips to 1.6.16-beta-b0.
2724
* Merged in changes from upstream SAMD CORE 1.6.16 2017.08.23:
2825
* PWMs now can perform real 16-bit resolution if analogWriteResolution(16) is set. Thanks @Adminius
2926
* USB CDC: fixed issue of available() getting stuck when receiving ZLP's
@@ -34,11 +31,13 @@ CHANGELOG for details on upstream commits and MattairTech additions that have be
3431
* Documentation updates
3532

3633

37-
## What's New - Beta Version (1.6.8-beta)
34+
## What's New - Beta Version (1.6.16-beta)
3835
**See Beta Builds section for installation instructions.**
3936

40-
**1.6.8-beta-b3:**
41-
*Beta version 1.6.8-beta-b3 became release version 1.6.16. See above*
37+
**1.6.16-beta-b0:**
38+
*Beta version 1.6.16-beta-b0 became release version 1.6.16. See above*
39+
40+
**Version numbering change**
4241

4342
**1.6.8-beta-b2:**
4443
* Added SD Card firmware loading support to the bootloader (4KB and 8KB)

bootloaders/zero/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ allow the build_all_bootloaders.sh script to select SD Card support.
355355

356356
#### Boards definitions:
357357

358-
* MT_D21E_rev_A, MT_D21E_rev_B, MT_D11, MT_D21J
358+
* Xeno, MT_D21E_rev_A, MT_D21E_rev_B, MT_D11, MT_D21J
359359
* arduino_zero, arduino_mkrzero, arduino_mkr1000, genuino_mkr1000, genuino_zero
360360
* Generic_x21E, Generic_x21G, Generic_x21J, Generic_D11D14AM, Generic_D11D14AS, Generic_D11C14A
361361

cores/arduino/Print.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,14 +238,14 @@ size_t Print::printFloat(double number, uint8_t digits)
238238

239239
// Print the decimal point, but only if there are digits beyond
240240
if (digits > 0) {
241-
n += print(".");
241+
n += print('.');
242242
}
243243

244244
// Extract digits from the remainder one at a time
245245
while (digits-- > 0)
246246
{
247247
remainder *= 10.0;
248-
unsigned int toPrint = (unsigned int)remainder;
248+
unsigned int toPrint = (unsigned int)(remainder);
249249
n += print(toPrint);
250250
remainder -= toPrint;
251251
}

cores/arduino/Print.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
#define DEC 10
2929
#define HEX 16
3030
#define OCT 8
31+
#ifdef BIN // Prevent warnings if BIN is previously defined in "iotnx4.h" or similar
32+
#undef BIN
33+
#endif
3134
#define BIN 2
3235

3336
class Print
@@ -54,6 +57,10 @@ class Print
5457
return write((const uint8_t *)buffer, size);
5558
}
5659

60+
// default to zero, meaning "a single write may block"
61+
// should be overriden by subclasses with buffering
62+
virtual int availableForWrite() { return 0; }
63+
5764
size_t print(const __FlashStringHelper *);
5865
size_t print(const String &);
5966
size_t print(const char[]);
@@ -78,6 +85,8 @@ class Print
7885
size_t println(double, int = 2);
7986
size_t println(const Printable&);
8087
size_t println(void);
88+
89+
virtual void flush() { /* Empty implementation for backward compatibility */ }
8190
};
8291

8392
#endif

cores/arduino/RingBuffer.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,14 @@ int RingBuffer::available()
6767
return delta;
6868
}
6969

70+
int RingBuffer::availableForStore()
71+
{
72+
if (_iHead >= _iTail)
73+
return SERIAL_BUFFER_SIZE - 1 - _iHead + _iTail;
74+
else
75+
return _iTail - _iHead - 1;
76+
}
77+
7078
int RingBuffer::peek()
7179
{
7280
if(_iTail == _iHead)

cores/arduino/RingBuffer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class RingBuffer
4040
void clear();
4141
int read_char();
4242
int available();
43+
int availableForStore();
4344
int peek();
4445
bool isFull();
4546

cores/arduino/SERCOM.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,16 @@ int SERCOM::writeDataUART(uint8_t data)
218218
return 1;
219219
}
220220

221+
void SERCOM::enableDataRegisterEmptyInterruptUART()
222+
{
223+
sercom->USART.INTENSET.reg |= SERCOM_USART_INTENSET_DRE;
224+
}
225+
226+
void SERCOM::disableDataRegisterEmptyInterruptUART()
227+
{
228+
sercom->USART.INTENCLR.reg = SERCOM_USART_INTENCLR_DRE;
229+
}
230+
221231
/* =========================
222232
* ===== Sercom SPI
223233
* =========================

cores/arduino/SERCOM.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ class SERCOM
168168
int writeDataUART(uint8_t data) ;
169169
bool isUARTError() ;
170170
void acknowledgeUARTError() ;
171+
void enableDataRegisterEmptyInterruptUART();
172+
void disableDataRegisterEmptyInterruptUART();
171173

172174
/* ========== SPI ========== */
173175
void initSPI(SercomSpiTXPad mosi, SercomRXPad miso, SercomSpiCharSize charSize, SercomDataOrder dataOrder) ;

cores/arduino/Stream.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
#define PARSE_TIMEOUT 1000 // default number of milli-seconds to wait
2929

30-
// private method to read stream with timeout
30+
// protected method to read stream with timeout
3131
int Stream::timedRead()
3232
{
3333
int c;
@@ -39,7 +39,7 @@ int Stream::timedRead()
3939
return -1; // -1 indicates timeout
4040
}
4141

42-
// private method to peek stream with timeout
42+
// protected method to peek stream with timeout
4343
int Stream::timedPeek()
4444
{
4545
int c;

0 commit comments

Comments
 (0)