From ecd48027faca4cd153fc11fb7e6393e24e77e7c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Br=C3=A1zio?= Date: Sat, 23 Jul 2016 01:41:25 +0100 Subject: [PATCH] Adds short timestamp format to timestamp_t --- Marlin/timestamp_t.h | 52 ++++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/Marlin/timestamp_t.h b/Marlin/timestamp_t.h index 2a18eb00f..8295360d1 100644 --- a/Marlin/timestamp_t.h +++ b/Marlin/timestamp_t.h @@ -30,13 +30,13 @@ struct timestamp_t { uint32_t timestamp; /** - * @brief Date time blank constructor + * @brief Timestamp blank constructor */ timestamp_t() : timestamp_t(0) {}; /** - * @brief Date time constructor + * @briefTimestamp constructor * @details Initializes the timestamp_t structure based on a number of seconds * * @param seconds The number of seconds @@ -46,7 +46,7 @@ struct timestamp_t { } /** - * @brief Formats the date as number of years + * @brief Formats the timestamp in years * @return The number of years */ inline uint8_t year() const { @@ -54,7 +54,7 @@ struct timestamp_t { } /** - * @brief Formats the date as number of days + * @brief Formats the timestamp in days * @return The number of days */ inline uint16_t day() const { @@ -62,7 +62,7 @@ struct timestamp_t { } /** - * @brief Formats the date as number of hours + * @brief Formats the timestamp in hours * @return The number of hours */ inline uint32_t hour() const { @@ -70,7 +70,7 @@ struct timestamp_t { } /** - * @brief Formats the date as number of minutes + * @brief Formats the timestamp in minutes * @return The number of minutes */ inline uint32_t minute() const { @@ -78,7 +78,7 @@ struct timestamp_t { } /** - * @brief Formats the date as number of seconds + * @brief Formats the timestamp in seconds * @return The number of seconds */ inline uint32_t second() const { @@ -86,12 +86,14 @@ struct timestamp_t { } /** - * @brief Formats the date as a string + * @brief Formats the timestamp as a string * @details Returns the timestamp formated as a string * - * @param buffer The array pointed to must be able to accommodate 21 bytes + * @param buffer The array pointed to must be able to accommodate 21 bytes when + * on standard mode or 10 bytes otherwise. + * @param shorty If true a short representation will be returned. * - * String output examples: + * Standard toString() output examples: * 123456789012345678901 (strlen) * 135y 364d 23h 59m 59s * 364d 23h 59m 59s @@ -99,19 +101,27 @@ struct timestamp_t { * 59m 59s * 59s * + * Short toString() output examples: + * 1234567890 (strlen) + * 1193046:59 + * */ - void toString(char *buffer) const { - int y = this->year(), - d = this->day() % 365, - h = this->hour() % 24, - m = this->minute() % 60, - s = this->second() % 60; + void toString(char *buffer, bool const &shorty = false) const { + int h = this->hour() % 24, + m = this->minute() % 60; - if (y) sprintf_P(buffer, PSTR("%iy %id %ih %im %is"), y, d, h, m, s); - else if (d) sprintf_P(buffer, PSTR("%id %ih %im %is"), d, h, m, s); - else if (h) sprintf_P(buffer, PSTR("%ih %im %is"), h, m, s); - else if (m) sprintf_P(buffer, PSTR("%im %is"), m, s); - else sprintf_P(buffer, PSTR("%is"), s); + if (shorty) sprintf_P(buffer, PSTR("%02i:%02i"), h, m); + else { + int y = this->year(), + d = this->day() % 365, + s = this->second() % 60; + + if (y) sprintf_P(buffer, PSTR("%iy %id %ih %im %is"), y, d, h, m, s); + else if (d) sprintf_P(buffer, PSTR("%id %ih %im %is"), d, h, m, s); + else if (h) sprintf_P(buffer, PSTR("%ih %im %is"), h, m, s); + else if (m) sprintf_P(buffer, PSTR("%im %is"), m, s); + else sprintf_P(buffer, PSTR("%is"), s); + } } };