Example #1
0
/***************************************************
**
** 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;
}
Example #2
0
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);
}
Example #3
0
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);
}