#include "Helpers/TimeHelper.hpp" void TimeHelper::implementCUCTimeFormat(uint32_t seconds, Message &data) { // the total number of octets including the p-field (1 octet) and the 4 time units is 5 // define the P-field uint8_t bit0 = 0; // P-field extension(‘zero’: no extension; ‘one’: field is extended) uint8_t bits1_3 = 1; // Time code identification ( 001 -> 1958 January 1 epoch ) uint8_t bits4_5 = 4 - 1; // Number of octets of the basic time unit minus one uint8_t bits6_7 = 0; // Number of octets of the fractional time unit // just a reminder to be careful with the assigned values assert(bit0 < 2); assert(bits1_3 < 16); assert(bits4_5 < 4); assert(bits6_7 < 4); /** * Define the T-field, the seconds passed from the defined epoch 1 January 1958 * We use 4 octets(32 bits)for the time unit(seconds) because 32 bits for the seconds are enough * to count 136 years! But if we use 24 bits for the seconds then it will count 0,5 years and * this isn't enough. Remember we can use only integers numbers of octets for the time unit * (second) * * @todo the implementation of the total seconds depends on the structure of the RTC */ uint32_t totalSeconds = seconds; // define data data.appendBits(1, bit0); data.appendBits(3, bits1_3); data.appendBits(2, bits4_5); data.appendBits(2, bits6_7); data.appendWord(totalSeconds); }