Example Code

The following example code illustrates the capabilities and usage of the µC/Clk module. This code simply initializes µC/Clk, create date/time structure, set Clock timestamp and time zone, get Clock timestamp and time zone. Also the example shows timestamp and date/time conversions.

Listing - µC/Clk Example Code
static  void  AppTaskStart (void  *p_arg)
{
    CLK_TS_SEC     ts_sec;
    CLK_TS_SEC     ts_unix_sec;
    CLK_TZ_SEC     tz_sec;
    CLK_DATE_TIME  date_time;
    CPU_BOOLEAN    valid; 
    CPU_CHAR       str[128];
    CLK_ERR        err;
 
 
    Clk_Init(&ClkTaskCfg, DEF_NULL, &err);                                                    (1)
    if (err == CLK_ERR_NONE) {
        printf("Clock module successfully initialized\r\n");
    } else {
        printf("Clock module initialization failed\r\n");
        return;
    }
    
    tz_sec = 0;
 
    valid = Clk_DateTimeMake(&date_time, 2010, 10, 18, 11, 11, 11, tz_sec);                   (2)
    if (valid != DEF_OK) {
        printf("Clock make date/time failed\r\n");
        return;        
    }
 
    date_time.Yr      = 2010;
    date_time.Month   =   10;
    date_time.Day     =   18;
    date_time.DayOfWk = Clk_GetDayOfWk(2010, 10, 18);                                         (3)
    date_time.DayOfYr =  291;
    date_time.Hr      =   11;
    date_time.Min     =   11;
    date_time.Sec     =   11;
    date_time.TZ_sec  = tz_sec;
    valid             = Clk_IsDateTimeValid(&date_time);                                      (4)
    if (valid != DEF_OK) {
        printf("Clock date/time not valid\r\n");
        return;
    } 
 
    valid = Clk_SetDateTime(&date_time);                                                      (5)
    if (valid != DEF_OK) {
        printf("Clock set date/time failed\r\n");
        return;
    }
 
    valid = Clk_DateTimeToStr(&date_time, CLK_STR_FMT_YYYY_MM_DD_HH_MM_SS_UTC, str, 128);     (6)
    if (valid == DEF_OK) {
        printf("Current Date/time :%s\r\n", str);
    } else {
        printf("Clock date/time to string failed\r\n");
        return;
    }
 
    Clk_DateTimeToTS(&ts_sec, &date_time);                                                    (7)
    if (valid == DEF_OK) {
        printf("Clock timestamp = %u\r\n", ts_sec);
    } else {
        printf("Clock date/time to timestamp failed\r\n");
        return;
    }
 
    tz_sec = (-5 * 60 * 60);
    valid = Clk_SetTZ(tz_sec);                                                                (8)
    if (valid != DEF_OK) {
        printf("Clock set timezone unix failed\r\n");
        return;
    } 
    
    valid = Clk_GetDateTime(&date_time);                                                      (9)
    if (valid != DEF_OK) {
        printf("Clock get date/time failed\r\n");
        return;
    }
 
    valid = Clk_DateTimeToStr(&date_time, CLK_STR_FMT_YYYY_MM_DD_HH_MM_SS_UTC, str, 128);    (10)
    if (valid == DEF_OK) {
        printf("Current Date/time :%s\r\n", str);
    } else {
        printf("Clock date/time to string failed\r\n");
        return;
    }
    ts_sec = Clk_GetTS();                                                                    (11)
    printf("Clock timestamp = %u\r\n", ts_sec);
    
 
    valid = Clk_TS_ToDateTime(ts_sec, 0, &date_time);                                        (12)
    if (valid != DEF_OK) {
        printf("Clock convert timestamp to date/time failed\r\n");
        return;
    }
 
    valid = Clk_GetTS_Unix(&ts_unix_sec);                                                    (13)
    if (valid != DEF_OK) {
        printf("Clock get timestamp unix failed\r\n");
        return;
    }
 
    valid = Clk_TS_UnixToDateTime(ts_unix_sec, tz_sec, &date_time);                          (14)
    if (valid != DEF_OK) {
        printf("Clock timestamp unix to date/time failed\r\n");
        return;
    }
 
    valid = Clk_DateTimeToStr(&date_time, CLK_STR_FMT_YYYY_MM_DD_HH_MM_SS_UTC, str, 128);    (15)
    if (valid == DEF_OK) {
        printf("Current Date/time :%s\r\n", str);
    } else {
        printf("Clock date/time to string failed\r\n");
        return;
    }
 
    ts_unix_sec = 126316799uL;
    valid      = Clk_TS_UnixToDateTime(ts_unix_sec, tz_sec, &date_time);                     (16)
    if (valid != DEF_OK) {
        printf("Clock set date/time failed\r\n");
        return;
    }
 
    valid = Clk_DateTimeToStr(&date_time, CLK_STR_FMT_DAY_MONTH_DD_HH_MM_SS_YYYY, str, 128); (17)
    if (valid == DEF_OK) {
        printf("Unix timestamp = %s", str);
    } else {
        printf("Clock date/time to string failed\r\n");
        return;
    }
}

(1) Initialize the µC/Clk. If the process is successful, the µC/Clk task is started, and its various data are initialized.

(2) Build a date/time structure.

(3) Get the day of week of 2010, october 18.

(4) Validate date/time structure fields.

(5) Set current timestamp of Clock module with date/time structure.

(6) Get a foramted string via a date/time structure.

(7) Convert date/time structure to a timestamp.

(8) Set Clock time zone.

(9) Get current Click date/time into a date/time structures.

(10) Get a foramted string via a date/time structure.

(11) Get current timestamp of Clock module.

(12) Convert timestamp to a date/time structure.

(13) Get current Clock timestamp as a Unix timestamp.

(14) Convert a Unix timestamp to a date/time structures.

(15) Get a foramted string via a date/time structure.

(16) Unix timestamp is equivalent of 1974, January 1 23:59:59 UTC+0

(17) Convert Unix timestamp to a date/time structure.

(18) Get a formatted string via a date/time structure.