Refactored timestamp for use in Alarm properties in objects.

This commit is contained in:
skarg
2009-10-10 21:48:13 +00:00
parent d88d85b5cd
commit 5b60c94fad
3 changed files with 79 additions and 26 deletions
+7
View File
@@ -59,6 +59,13 @@ extern "C" {
#endif /* __cplusplus */
void bacapp_timestamp_copy(
BACNET_TIMESTAMP * dest,
BACNET_TIMESTAMP * src);
int bacapp_encode_timestamp(
uint8_t * apdu,
BACNET_TIMESTAMP * value);
int bacapp_encode_context_timestamp(
uint8_t * apdu,
+9
View File
@@ -504,6 +504,15 @@ BACNET_APPLICATION_TAG bacapp_context_tag_type(
break;
}
break;
case PROP_LIST_OF_GROUP_MEMBERS:
switch (tag_number) {
case 0:
tag = BACNET_APPLICATION_TAG_OBJECT_ID;
break;
default:
break;
}
break;
case PROP_EXCEPTION_SCHEDULE:
switch (tag_number) {
case 1:
+63 -26
View File
@@ -35,6 +35,68 @@
#include "assert.h"
#include "timestamp.h"
void bacapp_timestamp_copy(
BACNET_TIMESTAMP * dest,
BACNET_TIMESTAMP * src)
{
if (dest && src) {
dest->tag = src->tag;
switch (src->tag) {
case TIME_STAMP_TIME:
datetime_copy_time(
&dest->value.time,
&src->value.time);
break;
case TIME_STAMP_SEQUENCE:
dest->value.sequenceNum = src->value.sequenceNum;
break;
case TIME_STAMP_DATETIME:
datetime_copy(
&dest->value.dateTime,
&src->value.dateTime);
break;
default:
break;
}
}
}
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;
}
int bacapp_encode_context_timestamp(
uint8_t * apdu,
uint8_t tag_number,
@@ -46,33 +108,8 @@ int bacapp_encode_context_timestamp(
if (value && apdu) {
len = encode_opening_tag(&apdu[apdu_len], tag_number);
apdu_len += len;
switch (value->tag) {
case TIME_STAMP_TIME:
len =
encode_context_time(&apdu[apdu_len], 0,
&value->value.time);
break;
case TIME_STAMP_SEQUENCE:
len =
encode_context_unsigned(&apdu[apdu_len], 1,
value->value.sequenceNum);
break;
case TIME_STAMP_DATETIME:
len =
bacapp_encode_context_datetime(&apdu[apdu_len], 2,
&value->value.dateTime);
break;
default:
len = 0;
assert(0);
break;
}
len = bacapp_encode_timestamp(&apdu[apdu_len], value);
apdu_len += len;
len = encode_closing_tag(&apdu[apdu_len], tag_number);
apdu_len += len;
}