diff --git a/Readme.md b/Readme.md index ee44912..10a32a0 100644 --- a/Readme.md +++ b/Readme.md @@ -66,8 +66,8 @@ timeNeedsSync // the time had been set but a sync attempt did timeSet // the time is set and is synced ``` -Time and Date values are not valid if the status is timeNotSet. Otherwise, values can be used but -the returned time may have drifted if the status is timeNeedsSync. +Time and Date values are not valid if the status is `timeNotSet`. Otherwise, values can be used but +the returned time may have drifted if the status is `timeNeedsSync`. ```c setSyncProvider(getTimeFunction); // set the external time provider @@ -89,15 +89,15 @@ illustrating how the library can be used with various time sources: A companion Processing sketch will automatically provide these messages if it is running and connected to the Arduino serial port. -- `TimeSerialDateStrings.pde` adds day and month name strings to the sketch above +- `TimeSerialDateStrings.pde` adds day and month name strings to the sketch above. Short (3 characters) and long strings are available to print the days of the week and names of the months. - `TimeRTC` uses a DS1307 real-time clock to provide time synchronization. - A basic RTC library named DS1307RTC is included in the download. - To run this sketch the DS1307RTC library must be installed. + The basic [DS1307RTC library][1] must be downloaded and installed, + in order to run this sketch. -- `TimeRTCSet` is similar to the above and adds the ability to set the Real Time Clock +- `TimeRTCSet` is similar to the above and adds the ability to set the Real Time Clock. - `TimeRTCLog` demonstrates how to calculate the difference between times. It is a very simple logger application that monitors events on digital pins @@ -106,11 +106,11 @@ illustrating how the library can be used with various time sources: - `TimeNTP` uses the Arduino Ethernet shield to access time using the internet NTP time service. The NTP protocol uses UDP and the UdpBytewise library is required, see: - http://bitbucket.org/bjoern/arduino_osc/src/14667490521f/libraries/Ethernet/ + -- `TimeGPS` gets time from a GPS +- `TimeGPS` gets time from a GPS. This requires the TinyGPS library from Mikal Hart: - http://arduiniana.org/libraries/TinyGPS + ## Differences @@ -126,7 +126,7 @@ Changes in the Time library API: - function added to automatically sync time with external source - `localTime` and `maketime` parameters changed, `localTime` renamed to `breakTime` -## Technical notes: +## Technical Notes Internal system time is based on the standard Unix `time_t`. The value is the number of seconds since Jan 1, 1970. @@ -140,16 +140,18 @@ See the sketches in the examples directory for usage. The default interval for re-syncing the time is 5 minutes but can be changed by calling the `setSyncInterval(interval)` method to set the number of seconds between re-sync attempts. -The Time library defines a structure for holding time elements that is a compact version of the C tm structure. -All the members of the Arduino tm structure are bytes and the year is offset from 1970. +The Time library defines a structure for holding time elements that is a compact version of the C `tm` structure. +All the members of the Arduino `tm` structure are bytes and the year is offset from 1970. Convenience macros provide conversion to and from the Arduino format. -Low level functions to convert between system time and individual time elements are provided: +Low-level functions to convert between system time and individual time elements are provided: ```c breakTime(time, &tm); // break time_t into elements stored in tm struct -makeTime(&tm); // return time_t from elements stored in tm struct +makeTime(&tm); // return time_t from elements stored in tm struct ``` -The DS1307RTC library included in the download provides an example of how a time provider +This [DS1307RTC library][1] provides an example of how a time provider can use the low-level functions to interface with the Time library. + +[1]: diff --git a/Time.cpp b/Time.cpp index 8e53e56..0dcb29f 100644 --- a/Time.cpp +++ b/Time.cpp @@ -141,9 +141,9 @@ int year(time_t t) { // the year for the given time /*============================================================================*/ /* functions to convert to and from system time */ -/* These are for interfacing with time serivces and are not normally needed in a sketch */ +/* These are for interfacing with time services and are not normally needed in a sketch */ -// leap year calulator expects year argument as years offset from 1970 +// leap year calculator expects year argument as years offset from 1970 #define LEAP_YEAR(Y) ( ((1970+(Y))>0) && !((1970+(Y))%4) && ( ((1970+(Y))%100) || !((1970+(Y))%400) ) ) static const uint8_t monthDays[]={31,28,31,30,31,30,31,31,30,31,30,31}; // API starts months from 1, this array starts from 0 @@ -213,7 +213,7 @@ time_t makeTime(const tmElements_t &tm){ seconds= tm.Year*(SECS_PER_DAY * 365); for (i = 0; i < tm.Year; i++) { if (LEAP_YEAR(i)) { - seconds += SECS_PER_DAY; // add extra days for leap years + seconds += SECS_PER_DAY; // add extra days for leap years } } diff --git a/TimeLib.h b/TimeLib.h index 20e2445..b587046 100644 --- a/TimeLib.h +++ b/TimeLib.h @@ -80,7 +80,7 @@ typedef time_t(*getExternalTime)(); #define elapsedDays(_time_) ((_time_) / SECS_PER_DAY) // this is number of days since Jan 1 1970 #define elapsedSecsToday(_time_) ((_time_) % SECS_PER_DAY) // the number of seconds since last midnight // The following macros are used in calculating alarms and assume the clock is set to a date later than Jan 1 1971 -// Always set the correct time before settting alarms +// Always set the correct time before setting alarms #define previousMidnight(_time_) (((_time_) / SECS_PER_DAY) * SECS_PER_DAY) // time at the start of the given day #define nextMidnight(_time_) (previousMidnight(_time_) + SECS_PER_DAY) // time at the end of the given day #define elapsedSecsThisWeek(_time_) (elapsedSecsToday(_time_) + ((dayOfWeek(_time_)-1) * SECS_PER_DAY)) // note that week starts on day 1