예제 #1
0
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);

}
예제 #2
0
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;
}