static void Update_Current_Time( void) { struct tm *tblock = NULL; #if defined(_MSC_VER) time_t tTemp; #else struct timeval tv; #endif /* struct tm int tm_sec Seconds [0,60]. int tm_min Minutes [0,59]. int tm_hour Hour [0,23]. int tm_mday Day of month [1,31]. int tm_mon Month of year [0,11]. int tm_year Years since 1900. int tm_wday Day of week [0,6] (Sunday =0). int tm_yday Day of year [0,365]. int tm_isdst Daylight Savings flag. */ #if defined(_MSC_VER) time(&tTemp); tblock = (struct tm *)localtime(&tTemp); #else if (gettimeofday(&tv, NULL) == 0) { tblock = (struct tm *)localtime((const time_t *)&tv.tv_sec); } #endif if (tblock) { datetime_set_date(&Local_Date, (uint16_t) tblock->tm_year + 1900, (uint8_t) tblock->tm_mon + 1, (uint8_t) tblock->tm_mday); #if !defined(_MSC_VER) datetime_set_time(&Local_Time, (uint8_t) tblock->tm_hour, (uint8_t) tblock->tm_min, (uint8_t) tblock->tm_sec, (uint8_t) (tv.tv_usec / 10000)); #else datetime_set_time(&Local_Time, (uint8_t) tblock->tm_hour, (uint8_t) tblock->tm_min, (uint8_t) tblock->tm_sec, 0); #endif if (tblock->tm_isdst) { Daylight_Savings_Status = true; } else { Daylight_Savings_Status = false; } /* note: timezone is declared in <time.h> stdlib. */ UTC_Offset = timezone / 60; } else { datetime_date_wildcard_set(&Local_Date); datetime_time_wildcard_set(&Local_Time); Daylight_Savings_Status = false; } }
void testBACnetDateTime( Test * pTest) { BACNET_DATE_TIME bdatetime1, bdatetime2; BACNET_DATE bdate; BACNET_TIME btime; int diff = 0; datetime_set_values(&bdatetime1, 1900, 1, 1, 0, 0, 0, 0); datetime_copy(&bdatetime2, &bdatetime1); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff == 0); datetime_set_time(&btime, 0, 0, 0, 0); datetime_set_date(&bdate, 1900, 1, 1); datetime_set(&bdatetime1, &bdate, &btime); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff == 0); /* midpoint */ /* if datetime1 is before datetime2, returns negative */ datetime_set_values(&bdatetime1, 2000, 7, 15, 12, 30, 30, 50); datetime_set_values(&bdatetime2, 2000, 7, 15, 12, 30, 30, 51); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff < 0); datetime_set_values(&bdatetime2, 2000, 7, 15, 12, 30, 31, 50); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff < 0); datetime_set_values(&bdatetime2, 2000, 7, 15, 12, 31, 30, 50); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff < 0); datetime_set_values(&bdatetime2, 2000, 7, 15, 13, 30, 30, 50); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff < 0); datetime_set_values(&bdatetime2, 2000, 7, 16, 12, 30, 30, 50); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff < 0); datetime_set_values(&bdatetime2, 2000, 8, 15, 12, 30, 30, 50); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff < 0); datetime_set_values(&bdatetime2, 2001, 7, 15, 12, 30, 30, 50); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff < 0); datetime_set_values(&bdatetime2, 2000, 7, 15, 12, 30, 30, 49); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff > 0); datetime_set_values(&bdatetime2, 2000, 7, 15, 12, 30, 29, 50); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff > 0); datetime_set_values(&bdatetime2, 2000, 7, 15, 12, 29, 30, 50); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff > 0); datetime_set_values(&bdatetime2, 2000, 7, 15, 11, 30, 30, 50); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff > 0); datetime_set_values(&bdatetime2, 2000, 7, 14, 12, 30, 30, 50); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff > 0); datetime_set_values(&bdatetime2, 2000, 6, 15, 12, 30, 30, 50); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff > 0); datetime_set_values(&bdatetime2, 1999, 7, 15, 12, 30, 30, 50); diff = datetime_compare(&bdatetime1, &bdatetime2); ct_test(pTest, diff > 0); return; }
void testBACnetTime( Test * pTest) { BACNET_TIME btime1, btime2; int diff = 0; datetime_set_time(&btime1, 0, 0, 0, 0); datetime_copy_time(&btime2, &btime1); diff = datetime_compare_time(&btime1, &btime2); ct_test(pTest, diff == 0); datetime_set_time(&btime1, 23, 59, 59, 99); datetime_copy_time(&btime2, &btime1); diff = datetime_compare_time(&btime1, &btime2); ct_test(pTest, diff == 0); /* midpoint */ datetime_set_time(&btime1, 12, 30, 30, 50); datetime_copy_time(&btime2, &btime1); diff = datetime_compare_time(&btime1, &btime2); ct_test(pTest, diff == 0); datetime_set_time(&btime2, 12, 30, 30, 51); diff = datetime_compare_time(&btime1, &btime2); ct_test(pTest, diff < 0); datetime_set_time(&btime2, 12, 30, 31, 50); diff = datetime_compare_time(&btime1, &btime2); ct_test(pTest, diff < 0); datetime_set_time(&btime2, 12, 31, 30, 50); diff = datetime_compare_time(&btime1, &btime2); ct_test(pTest, diff < 0); datetime_set_time(&btime2, 13, 30, 30, 50); diff = datetime_compare_time(&btime1, &btime2); ct_test(pTest, diff < 0); datetime_set_time(&btime2, 12, 30, 30, 49); diff = datetime_compare_time(&btime1, &btime2); ct_test(pTest, diff > 0); datetime_set_time(&btime2, 12, 30, 29, 50); diff = datetime_compare_time(&btime1, &btime2); ct_test(pTest, diff > 0); datetime_set_time(&btime2, 12, 29, 30, 50); diff = datetime_compare_time(&btime1, &btime2); ct_test(pTest, diff > 0); datetime_set_time(&btime2, 11, 30, 30, 50); diff = datetime_compare_time(&btime1, &btime2); ct_test(pTest, diff > 0); return; }