Added time, date, and datetime helper functions for copy, compare, and set.

This commit is contained in:
skarg
2007-01-19 21:53:16 +00:00
parent 0a7102a79f
commit 6864a32d22
2 changed files with 156 additions and 49 deletions
+132 -49
View File
@@ -276,17 +276,10 @@ bool bacapp_copy(BACNET_APPLICATION_DATA_VALUE * dest_value,
dest_value->type.Enumerated = src_value->type.Enumerated;
break;
case BACNET_APPLICATION_TAG_DATE:
dest_value->type.Date.year = src_value->type.Date.year;
dest_value->type.Date.month = src_value->type.Date.month;
dest_value->type.Date.day = src_value->type.Date.day;
dest_value->type.Date.wday = src_value->type.Date.wday;
bacapp_copy_date(&dest_value->type.Date, &src_value->type.Date);
break;
case BACNET_APPLICATION_TAG_TIME:
dest_value->type.Time.hour = src_value->type.Time.hour;
dest_value->type.Time.min = src_value->type.Time.min;
dest_value->type.Time.sec = src_value->type.Time.sec;
dest_value->type.Time.hundredths =
src_value->type.Time.hundredths;
bacapp_copy_time(&dest_value->type.Time, &src_value->type.Time);
break;
case BACNET_APPLICATION_TAG_OBJECT_ID:
dest_value->type.Object_Id.type =
@@ -369,6 +362,136 @@ int bacapp_data_len(uint8_t *apdu, int max_apdu_len,
return total_len;
}
/* returns true if matching or same, false if different */
bool bacapp_same_date(BACNET_DATE * date1, BACNET_DATE * date2)
{
bool status = false;
if (date1 && date2) {
status = true;
if (date1->year != date2->year)
status = false;
if (date1->month != date2->month)
status = false;
if (date1->day != date2->day)
status = false;
if (date1->wday != date2->wday)
status = false;
}
return status;
}
/* returns true if matching or same, false if different */
bool bacapp_same_time(BACNET_TIME * time1, BACNET_TIME * time2)
{
bool status = false;
if (time1 && time2) {
status = true;
if (time1->hour != time2->hour)
status = false;
if (time1->min != time2->min)
status = false;
if (time1->sec != time2->sec)
status = false;
if (time1->hundredths != time2->hundredths)
status = false;
}
return status;
}
bool bacapp_same_datetime(BACNET_DATE_TIME * datetime1,
BACNET_DATE_TIME * datetime2)
{
return (bacapp_same_time(&datetime1->time,&datetime2->time) &&
bacapp_same_date(&datetime1->date,&datetime2->date));
}
void bacapp_copy_date(BACNET_DATE * dest_date, BACNET_DATE * src_date)
{
if (dest_date && src_date) {
dest_date->year = src_date->year;
dest_date->month = src_date->month;
dest_date->day = src_date->day;
dest_date->wday = src_date->wday;
}
}
void bacapp_copy_time(BACNET_TIME * dest_time, BACNET_TIME * src_time)
{
if (dest_time && src_time) {
dest_time->hour = src_time->hour;
dest_time->min = src_time->min;
dest_time->sec = src_time->sec;
dest_time->hundredths = src_time->hundredths;
}
}
void bacapp_copy_datetime(
BACNET_DATE_TIME * dest_datetime,
BACNET_DATE_TIME * src_datetime)
{
bacapp_copy_time(&dest_datetime->time,&src_datetime->time);
bacapp_copy_date(&dest_datetime->date,&src_datetime->date);
}
void bacapp_set_date(BACNET_DATE * bdate,
uint16_t year, uint8_t month, uint8_t day, uint8_t wday)
{
if (bdate) {
bdate->year = year;
bdate->month = month;
bdate->day = day;
bdate->wday = wday;
}
}
void bacapp_set_time(BACNET_TIME * btime,
uint8_t hour, uint8_t minute, uint8_t seconds, uint8_t hundredths)
{
if (btime) {
btime->hour = hour;
btime->min = minute;
btime->sec = seconds;
btime->hundredths = hundredths;
}
}
void bacapp_set_datetime(BACNET_DATE_TIME * bdatetime,
BACNET_DATE * bdate,
BACNET_TIME * btime)
{
if (bdate && btime && bdatetime) {
bdatetime->time.hour = btime->hour;
bdatetime->time.min = btime->min;
bdatetime->time.sec = btime->sec;
bdatetime->time.hundredths = btime->hundredths;
bdatetime->date.year = bdate->year;
bdatetime->date.month = bdate->month;
bdatetime->date.day = bdate->day;
bdatetime->date.wday = bdate->wday;
}
}
void bacapp_set_datetime_values(BACNET_DATE_TIME * bdatetime,
uint16_t year, uint8_t month, uint8_t day, uint8_t wday,
uint8_t hour, uint8_t minute, uint8_t seconds, uint8_t hundredths)
{
if (bdatetime) {
bdatetime->date.year = year;
bdatetime->date.month = month;
bdatetime->date.day = day;
bdatetime->date.wday = wday;
bdatetime->time.hour = hour;
bdatetime->time.min = min;
bdatetime->time.sec = sec;
bdatetime->time.hundredths = hundredths;
}
}
#ifdef BACAPP_PRINT_ENABLED
bool bacapp_print_value(FILE * stream,
BACNET_APPLICATION_DATA_VALUE * value, BACNET_PROPERTY_ID property)
@@ -731,46 +854,6 @@ void testBACnetApplicationDataLength(Test * pTest)
ct_test(pTest, test_len == len);
}
/* returns true if matching or same, false if different */
bool bacapp_same_date(BACNET_DATE * date1, BACNET_DATE * date2)
{
bool status = false;
if (date1 && date2) {
status = true;
if (date1->year != date2->year)
status = false;
if (date1->month != date2->month)
status = false;
if (date1->day != date2->day)
status = false;
if (date1->wday != date2->wday)
status = false;
}
return status;
}
/* returns true if matching or same, false if different */
bool bacapp_same_time(BACNET_TIME * time1, BACNET_TIME * time2)
{
bool status = false;
if (time1 && time2) {
status = true;
if (time1->hour != time2->hour)
status = false;
if (time1->min != time2->min)
status = false;
if (time1->sec != time2->sec)
status = false;
if (time1->hundredths != time2->hundredths)
status = false;
}
return status;
}
/* generic - can be used by other unit tests
returns true if matching or same, false if different */
bool bacapp_same_value(BACNET_APPLICATION_DATA_VALUE * value,
+24
View File
@@ -87,6 +87,30 @@ extern "C" {
int bacapp_data_len(uint8_t *apdu, int max_apdu_len,
BACNET_PROPERTY_ID property);
/* utility comparison functions */
bool bacapp_same_date(BACNET_DATE * date1, BACNET_DATE * date2);
bool bacapp_same_time(BACNET_TIME * time1, BACNET_TIME * time2);
bool bacapp_same_datetime(
BACNET_DATE_TIME * datetime1,
BACNET_DATE_TIME * datetime2);
void bacapp_copy_date(BACNET_DATE * date1, BACNET_DATE * date2);
void bacapp_copy_time(BACNET_TIME * time1, BACNET_TIME * time2);
void bacapp_copy_datetime(
BACNET_DATE_TIME * datetime1,
BACNET_DATE_TIME * datetime2);
void bacapp_set_date(BACNET_DATE * bdate,
uint16_t year, uint8_t month, uint8_t day, uint8_t wday);
void bacapp_set_time(BACNET_TIME * btime,
uint8_t hour, uint8_t minute, uint8_t seconds, uint8_t hundredths);
void bacapp_set_datetime(BACNET_DATE_TIME * bdatetime,
BACNET_DATE * bdate,
BACNET_TIME * btime);
void bacapp_set_datetime_values(BACNET_DATE_TIME * bdatetime,
uint16_t year, uint8_t month, uint8_t day, uint8_t wday,
uint8_t hour, uint8_t minute, uint8_t seconds, uint8_t hundredths);
#if PRINT_ENABLED
#define BACAPP_PRINT_ENABLED
#else