Enhanced date and time parsing for WriteProperty demo.

This commit is contained in:
skarg
2007-02-14 21:52:13 +00:00
parent d387da80e6
commit 2fed6fcf3b
3 changed files with 61 additions and 1 deletions
+51 -1
View File
@@ -536,7 +536,9 @@ bool bacapp_parse_application_data(BACNET_APPLICATION_TAG tag_number,
} else if (tag_number == BACNET_APPLICATION_TAG_DATE) {
count =
sscanf(argv, "%d/%d/%d:%d", &year, &month, &day, &wday);
if (count == 4) {
if (count == 3) {
datetime_set_date(&value->type.Date, year, month, day);
} else if (count == 4) {
value->type.Date.year = year;
value->type.Date.month = month;
value->type.Date.day = day;
@@ -552,6 +554,16 @@ bool bacapp_parse_application_data(BACNET_APPLICATION_TAG tag_number,
value->type.Time.min = min;
value->type.Time.sec = sec;
value->type.Time.hundredths = hundredths;
} else if (count == 3) {
value->type.Time.hour = hour;
value->type.Time.min = min;
value->type.Time.sec = sec;
value->type.Time.hundredths = 0;
} else if (count == 2) {
value->type.Time.hour = hour;
value->type.Time.min = min;
value->type.Time.sec = 0;
value->type.Time.hundredths = 0;
} else
status = false;
} else if (tag_number == BACNET_APPLICATION_TAG_OBJECT_ID) {
@@ -918,6 +930,26 @@ void testBACnetApplicationData(Test * pTest)
ct_test(pTest, value.type.Date.wday == 1);
ct_test(pTest, testBACnetApplicationDataValue(&value));
/* Happy Valentines Day! */
status = bacapp_parse_application_data(BACNET_APPLICATION_TAG_DATE,
"2007/2/14", &value);
ct_test(pTest, status == true);
ct_test(pTest, value.type.Date.year == 2007);
ct_test(pTest, value.type.Date.month == 2);
ct_test(pTest, value.type.Date.day == 14);
ct_test(pTest, value.type.Date.wday == BACNET_WEEKDAY_WEDNESDAY);
ct_test(pTest, testBACnetApplicationDataValue(&value));
/* Wildcard Values */
status = bacapp_parse_application_data(BACNET_APPLICATION_TAG_DATE,
"2155/255/255:255", &value);
ct_test(pTest, status == true);
ct_test(pTest, value.type.Date.year == 2155);
ct_test(pTest, value.type.Date.month == 255);
ct_test(pTest, value.type.Date.day == 255);
ct_test(pTest, value.type.Date.wday == 255);
ct_test(pTest, testBACnetApplicationDataValue(&value));
status = bacapp_parse_application_data(BACNET_APPLICATION_TAG_TIME,
"23:59:59.12", &value);
ct_test(pTest, status == true);
@@ -927,6 +959,24 @@ void testBACnetApplicationData(Test * pTest)
ct_test(pTest, value.type.Time.hundredths == 12);
ct_test(pTest, testBACnetApplicationDataValue(&value));
status = bacapp_parse_application_data(BACNET_APPLICATION_TAG_TIME,
"23:59:59", &value);
ct_test(pTest, status == true);
ct_test(pTest, value.type.Time.hour == 23);
ct_test(pTest, value.type.Time.min == 59);
ct_test(pTest, value.type.Time.sec == 59);
ct_test(pTest, value.type.Time.hundredths == 0);
ct_test(pTest, testBACnetApplicationDataValue(&value));
status = bacapp_parse_application_data(BACNET_APPLICATION_TAG_TIME,
"23:59", &value);
ct_test(pTest, status == true);
ct_test(pTest, value.type.Time.hour == 23);
ct_test(pTest, value.type.Time.min == 59);
ct_test(pTest, value.type.Time.sec == 0);
ct_test(pTest, value.type.Time.hundredths == 0);
ct_test(pTest, testBACnetApplicationDataValue(&value));
status =
bacapp_parse_application_data(BACNET_APPLICATION_TAG_OBJECT_ID,
"0:100", &value);
Binary file not shown.
+10
View File
@@ -37,6 +37,16 @@
#include <stdint.h>
#include <stdbool.h>
typedef enum {
BACNET_WEEKDAY_MONDAY = 1,
BACNET_WEEKDAY_TUESDAY = 2,
BACNET_WEEKDAY_WEDNESDAY = 3,
BACNET_WEEKDAY_THURSDAY = 4,
BACNET_WEEKDAY_FRIDAY = 5,
BACNET_WEEKDAY_SATURDAY = 6,
BACNET_WEEKDAY_SUNDAY = 7
} BACNET_WEEKDAY;
/* date */
typedef struct BACnet_Date {
uint16_t year; /* AD */