void testDatetimeCodec( Test * pTest) { uint8_t apdu[MAX_APDU]; BACNET_DATE_TIME datetimeIn; BACNET_DATE_TIME datetimeOut; int inLen; int outLen; datetimeIn.date.day = 1; datetimeIn.date.month = 2; datetimeIn.date.wday = 3; datetimeIn.date.year = 1904; datetimeIn.time.hour = 5; datetimeIn.time.min = 6; datetimeIn.time.sec = 7; datetimeIn.time.hundredths = 8; inLen = bacapp_encode_context_datetime(apdu, 10, &datetimeIn); outLen = bacapp_decode_context_datetime(apdu, 10, &datetimeOut); ct_test(pTest, inLen == outLen); ct_test(pTest, datetimeIn.date.day == datetimeOut.date.day); ct_test(pTest, datetimeIn.date.month == datetimeOut.date.month); ct_test(pTest, datetimeIn.date.wday == datetimeOut.date.wday); ct_test(pTest, datetimeIn.date.year == datetimeOut.date.year); ct_test(pTest, datetimeIn.time.hour == datetimeOut.time.hour); ct_test(pTest, datetimeIn.time.min == datetimeOut.time.min); ct_test(pTest, datetimeIn.time.sec == datetimeOut.time.sec); ct_test(pTest, datetimeIn.time.hundredths == datetimeOut.time.hundredths); }
int bacapp_encode_timestamp( uint8_t * apdu, BACNET_TIMESTAMP * value) { int len = 0; /* length of each encoding */ if (value && apdu) { switch (value->tag) { case TIME_STAMP_TIME: len = encode_context_time(&apdu[0], 0, &value->value.time); break; case TIME_STAMP_SEQUENCE: len = encode_context_unsigned(&apdu[0], 1, value->value.sequenceNum); break; case TIME_STAMP_DATETIME: len = bacapp_encode_context_datetime(&apdu[0], 2, &value->value.dateTime); break; default: len = 0; assert(0); break; } } return len; }