From f8a97debce5b795a2a9f30fa24a00fd754932af8 Mon Sep 17 00:00:00 2001 From: PaulStoffregen Date: Fri, 5 Sep 2014 14:12:25 -0700 Subject: [PATCH] Import fixes from Michael for Arduino 1.5.7 --- DateStrings.cpp | 12 +++++++--- Time.cpp | 19 ++++++++-------- examples/TimeArduinoDue/TimeArduinoDue.ino | 2 ++ examples/TimeSerial/TimeSerial.ino | 2 +- .../TimeSerialDateStrings.ino | 22 +++++++++---------- 5 files changed, 32 insertions(+), 25 deletions(-) diff --git a/DateStrings.cpp b/DateStrings.cpp index 4facb73..2b59440 100644 --- a/DateStrings.cpp +++ b/DateStrings.cpp @@ -1,6 +1,8 @@ /* DateStrings.cpp * Definitions for date strings for use with the Time library * + * Updated for Arduino 1.5.7 18 July 2014 + * * No memory is consumed in the sketch if your code does not call any of the string methods * You can change the text of the strings, make sure the short strings are each exactly 3 characters * the long strings can be any length up to the constant dt_MAX_STRING_LEN defined in Time.h @@ -38,7 +40,7 @@ const char monthStr10[] PROGMEM = "October"; const char monthStr11[] PROGMEM = "November"; const char monthStr12[] PROGMEM = "December"; -PGM_P monthNames_P[] PROGMEM = +const PROGMEM char * const PROGMEM monthNames_P[] { "",monthStr1,monthStr2,monthStr3,monthStr4,monthStr5,monthStr6, monthStr7,monthStr8,monthStr9,monthStr10,monthStr11,monthStr12 @@ -55,8 +57,12 @@ const char dayStr5[] PROGMEM = "Thursday"; const char dayStr6[] PROGMEM = "Friday"; const char dayStr7[] PROGMEM = "Saturday"; -PGM_P dayNames_P[] PROGMEM = { dayStr0,dayStr1,dayStr2,dayStr3,dayStr4,dayStr5,dayStr6,dayStr7}; -char dayShortNames_P[] PROGMEM = "ErrSunMonTueWedThrFriSat"; +const PROGMEM char * const PROGMEM dayNames_P[] = +{ + dayStr0,dayStr1,dayStr2,dayStr3,dayStr4,dayStr5,dayStr6,dayStr7 +}; + +const char dayShortNames_P[] PROGMEM = "ErrSunMonTueWedThrFriSat"; /* functions to return date strings */ diff --git a/Time.cpp b/Time.cpp index 9d53cd7..4cb01e7 100644 --- a/Time.cpp +++ b/Time.cpp @@ -1,6 +1,6 @@ /* time.c - low level time and date functions - Copyright (c) Michael Margolis 2009 + Copyright (c) Michael Margolis 2009-2014 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -16,14 +16,15 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - 6 Jan 2010 - initial release - 12 Feb 2010 - fixed leap year calculation error - 1 Nov 2010 - fixed setTime bug (thanks to Korman for this) - 24 Mar 2012 - many edits by Paul Stoffregen: fixed timeStatus() to update - status, updated examples for Arduino 1.0, fixed ARM - compatibility issues, added TimeArduinoDue and TimeTeensy3 - examples, add error checking and messages to RTC examples, - add examples to DS1307RTC library. + 1.0 6 Jan 2010 - initial release + 1.1 12 Feb 2010 - fixed leap year calculation error + 1.2 1 Nov 2010 - fixed setTime bug (thanks to Korman for this) + 1.3 24 Mar 2012 - many edits by Paul Stoffregen: fixed timeStatus() to update + status, updated examples for Arduino 1.0, fixed ARM + compatibility issues, added TimeArduinoDue and TimeTeensy3 + examples, add error checking and messages to RTC examples, + add examples to DS1307RTC library. + 1.4 5 Sep 2014 - compatibility with Arduino 1.5.7 */ #if ARDUINO >= 100 diff --git a/examples/TimeArduinoDue/TimeArduinoDue.ino b/examples/TimeArduinoDue/TimeArduinoDue.ino index acd80d2..a19a2e0 100644 --- a/examples/TimeArduinoDue/TimeArduinoDue.ino +++ b/examples/TimeArduinoDue/TimeArduinoDue.ino @@ -26,6 +26,8 @@ void setup() { // stay with their old values." rtc_clock.set_time(__TIME__); rtc_clock.set_date(__DATE__); + // However, this might work on other unofficial SAM3X boards + // with different reset circuitry than Arduino Due? } setSyncProvider(getArduinoDueTime); if(timeStatus()!= timeSet) diff --git a/examples/TimeSerial/TimeSerial.ino b/examples/TimeSerial/TimeSerial.ino index 15aee0a..135db6f 100644 --- a/examples/TimeSerial/TimeSerial.ino +++ b/examples/TimeSerial/TimeSerial.ino @@ -7,7 +7,7 @@ T1357041600 * * A Processing example sketch to automatically send the messages is inclided in the download - * On Linux, you can use "date +T%s > /dev/ttyACM0" (UTC time zone) + * On Linux, you can use "date +T%s\n > /dev/ttyACM0" (UTC time zone) */ #include diff --git a/examples/TimeSerialDateStrings/TimeSerialDateStrings.ino b/examples/TimeSerialDateStrings/TimeSerialDateStrings.ino index f181c3d..6024776 100644 --- a/examples/TimeSerialDateStrings/TimeSerialDateStrings.ino +++ b/examples/TimeSerialDateStrings/TimeSerialDateStrings.ino @@ -7,10 +7,10 @@ * * A message starting with a time header sets the time * A Processing example sketch to automatically send the messages is inclided in the download - * On Linux, you can use "date +T%s > /dev/ttyACM0" (UTC time zone) + * On Linux, you can use "date +T%s\n > /dev/ttyACM0" (UTC time zone) * * A message starting with a format header sets the date format - * + * send: Fs\n for short date format * send: Fl\n for long date format */ @@ -35,7 +35,7 @@ void setup() { } void loop(){ - if (Serial.available()) { + if (Serial.available() > 1) { // wait for at least two characters char c = Serial.read(); if( c == TIME_HEADER) { processSyncMessage(); @@ -50,7 +50,7 @@ void loop(){ delay(1000); } -void digitalClockDisplay(){ +void digitalClockDisplay() { // digital clock display of the time Serial.print(hour()); printDigits(minute()); @@ -72,7 +72,7 @@ void digitalClockDisplay(){ Serial.println(); } -void printDigits(int digits){ +void printDigits(int digits) { // utility function for digital clock display: prints preceding colon and leading 0 Serial.print(":"); if(digits < 10) @@ -84,11 +84,11 @@ void processFormatMessage() { char c = Serial.read(); if( c == FORMAT_LONG){ isLongFormat = true; - Serial.println("Setting long format"); + Serial.println(F("Setting long format")); } - else if( c == FORMAT_SHORT){ + else if( c == FORMAT_SHORT) { isLongFormat = false; - Serial.println("Setting short format"); + Serial.println(F("Setting short format")); } } @@ -99,12 +99,10 @@ void processSyncMessage() { pctime = Serial.parseInt(); if( pctime >= DEFAULT_TIME) { // check the integer is a valid time (greater than Jan 1 2013) setTime(pctime); // Sync Arduino clock to the time received on the serial port - } + } } -time_t requestSync() -{ +time_t requestSync() { Serial.write(TIME_REQUEST); return 0; // the time will be sent later in response to serial mesg } -