+/**
+ * Converts a time in epoch format into a day number.
+ *
+ * Returns the day number for the given epoch time. The epoch time represents
+ * the number of seconds since 00:00:00 UTC on 01/01/1970.
+ *
+ * The day number is calculated as:
+ * (Number of Seconds since Epoch) / (60 * 60 * 24)
+ *
+ * @param epoch The epoch time in seconds.
+ * @return The day number for this epoch time.
+ */
+uint32_t epoch_to_day_number(time_t epoch) {
+ uint32_t day_number;
+
+ // DayNumber <- (Number of Seconds since Epoch) / (60 * 60 * 24)
+ day_number = epoch / (60 * 60 * 24);
+
+ return day_number;
+}
+
+/**
+ * Converts a time in epoch format into a time interval number.
+ *
+ * Returns the time interval number for the given epoch time. The epoch time
+ * represents the number of seconds since 00:00:00 UTC on 01/01/1970.
+ *
+ * The time interval number is calculated as:
+ * (Seconds Since Start of DayNumber) / (60 * 10)
+ *
+ * and must fall in the interval [0, 143].
+ *
+ * @param epoch The epoch time in seconds.
+ * @return The time interval number for this epoch time.
+ */
+uint8_t epoch_to_time_interval_number(time_t epoch) {
+ uint8_t time_interval_number;
+ uint32_t day_number;
+ uint32_t seconds;
+
+ // TimeNumberInterval <- (Seconds Since Start of DayNumber) / (60 * 10)
+ day_number = epoch_to_day_number(epoch);
+ seconds = epoch - (day_number * (60 * 60 * 24));
+
+ time_interval_number = seconds / (60 * 10);
+
+ // Falls in interval [0,143]
+ if (time_interval_number > 143) {
+ time_interval_number = 143;
+ }
+
+ return time_interval_number;
+}
+
+/** @} addtogroup Utils */