/*************************************************** ** ** Decodes the service data part of Event Notification ** ****************************************************/ int alarm_ack_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_ALARM_ACK_DATA * data) { int len = 0; int section_len; uint32_t enumValue; /* unused parameter */ unused_var(apdu_len); if (-1 == (section_len = decode_context_unsigned(&apdu[len], 0, &data->ackProcessIdentifier))) { return -1; } len += section_len; if (-1 == (section_len = decode_context_object_id(&apdu[len], 1, &data->eventObjectIdentifier.type, &data->eventObjectIdentifier.instance))) { return -1; } len += section_len; if (-1 == (section_len = decode_context_enumerated(&apdu[len], 2, &enumValue))) { return -1; } data->eventStateAcked = (BACNET_EVENT_STATE) enumValue; len += section_len; if (-1 == (section_len = bacapp_decode_context_timestamp(&apdu[len], 3, &data->eventTimeStamp))) { return -1; } len += section_len; if (-1 == (section_len = decode_context_character_string(&apdu[len], 4, &data->ackSource))) { return -1; } len += section_len; if (-1 == (section_len = bacapp_decode_context_timestamp(&apdu[len], 5, &data->ackTimeStamp))) { return -1; } len += section_len; return len; }
void testTimestampTime( Test * pTest) { BACNET_TIMESTAMP testTimestampIn; BACNET_TIMESTAMP testTimestampOut; uint8_t buffer[MAX_APDU]; int inLen; int outLen; testTimestampIn.tag = TIME_STAMP_TIME; testTimestampIn.value.time.hour = 1; testTimestampIn.value.time.min = 2; testTimestampIn.value.time.sec = 3; testTimestampIn.value.time.hundredths = 4; memset(&testTimestampOut, 0, sizeof(testTimestampOut)); inLen = bacapp_encode_context_timestamp(buffer, 2, &testTimestampIn); outLen = bacapp_decode_context_timestamp(buffer, 2, &testTimestampOut); ct_test(pTest, inLen == outLen); ct_test(pTest, testTimestampIn.tag == testTimestampOut.tag); ct_test(pTest, testTimestampIn.value.time.hour == testTimestampOut.value.time.hour); ct_test(pTest, testTimestampIn.value.time.min == testTimestampOut.value.time.min); ct_test(pTest, testTimestampIn.value.time.sec == testTimestampOut.value.time.sec); ct_test(pTest, testTimestampIn.value.time.hundredths == testTimestampOut.value.time.hundredths); }
void testTimestampSequence( Test * pTest) { BACNET_TIMESTAMP testTimestampIn; BACNET_TIMESTAMP testTimestampOut; uint8_t buffer[MAX_APDU]; int inLen; int outLen; testTimestampIn.tag = TIME_STAMP_SEQUENCE; testTimestampIn.value.sequenceNum = 0x1234; memset(&testTimestampOut, 0, sizeof(testTimestampOut)); inLen = bacapp_encode_context_timestamp(buffer, 2, &testTimestampIn); outLen = bacapp_decode_context_timestamp(buffer, 2, &testTimestampOut); ct_test(pTest, inLen == outLen); ct_test(pTest, testTimestampIn.tag == testTimestampOut.tag); ct_test(pTest, testTimestampIn.value.sequenceNum == testTimestampOut.value.sequenceNum); }