Refactored.

This commit is contained in:
skarg
2006-08-07 21:00:58 +00:00
parent 96af8adb51
commit cefc6b4d6d
2 changed files with 60 additions and 42 deletions
+60 -42
View File
@@ -48,48 +48,66 @@ int bacapp_encode_application_data(uint8_t * apdu,
{ {
int apdu_len = 0; /* total length of the apdu, return value */ int apdu_len = 0; /* total length of the apdu, return value */
if (apdu) { if (value && apdu)
if (value->tag == BACNET_APPLICATION_TAG_NULL) {
apdu[apdu_len++] = value->tag; switch (value->tag) {
else if (value->tag == BACNET_APPLICATION_TAG_BOOLEAN) case BACNET_APPLICATION_TAG_NULL:
apdu_len += encode_tagged_boolean(&apdu[apdu_len], apdu[0] = value->tag;
value->type.Boolean); apdu_len++;
else if (value->tag == BACNET_APPLICATION_TAG_UNSIGNED_INT) break;
apdu_len += encode_tagged_unsigned(&apdu[apdu_len], case BACNET_APPLICATION_TAG_BOOLEAN:
value->type.Unsigned_Int); apdu_len = encode_tagged_boolean(&apdu[0],
else if (value->tag == BACNET_APPLICATION_TAG_SIGNED_INT) value->type.Boolean);
apdu_len += encode_tagged_signed(&apdu[apdu_len], break;
value->type.Signed_Int); case BACNET_APPLICATION_TAG_UNSIGNED_INT:
else if (value->tag == BACNET_APPLICATION_TAG_REAL) apdu_len = encode_tagged_unsigned(&apdu[0],
apdu_len += encode_tagged_real(&apdu[apdu_len], value->type.Unsigned_Int);
value->type.Real); break;
#if 0 case BACNET_APPLICATION_TAG_SIGNED_INT:
else if (value->tag == BACNET_APPLICATION_TAG_DOUBLE) apdu_len = encode_tagged_signed(&apdu[0],
apdu_len += encode_tagged_double(&apdu[apdu_len], value->type.Signed_Int);
value->type.Double); break;
#endif case BACNET_APPLICATION_TAG_REAL:
else if (value->tag == BACNET_APPLICATION_TAG_OCTET_STRING) apdu_len = encode_tagged_real(&apdu[0],
apdu_len += encode_tagged_octet_string(&apdu[apdu_len], value->type.Real);
&value->type.Octet_String); break;
else if (value->tag == BACNET_APPLICATION_TAG_CHARACTER_STRING) case BACNET_APPLICATION_TAG_ENUMERATED:
apdu_len += encode_tagged_character_string(&apdu[apdu_len], apdu_len = encode_tagged_enumerated(&apdu[0],
&value->type.Character_String); value->type.Enumerated);
else if (value->tag == BACNET_APPLICATION_TAG_BIT_STRING) break;
apdu_len += encode_tagged_bitstring(&apdu[apdu_len], case BACNET_APPLICATION_TAG_DATE:
&value->type.Bit_String); apdu_len = encode_tagged_date(&apdu[0],
else if (value->tag == BACNET_APPLICATION_TAG_ENUMERATED) &value->type.Date);
apdu_len += encode_tagged_enumerated(&apdu[apdu_len], break;
value->type.Enumerated); case BACNET_APPLICATION_TAG_TIME:
else if (value->tag == BACNET_APPLICATION_TAG_DATE) apdu_len = encode_tagged_time(&apdu[0],
apdu_len += encode_tagged_date(&apdu[apdu_len], &value->type.Time);
&value->type.Date); break;
else if (value->tag == BACNET_APPLICATION_TAG_TIME) case BACNET_APPLICATION_TAG_OBJECT_ID:
apdu_len += encode_tagged_time(&apdu[apdu_len], apdu_len = encode_tagged_object_id(&apdu[0],
&value->type.Time); value->type.Object_Id.type,
else if (value->tag == BACNET_APPLICATION_TAG_OBJECT_ID) value->type.Object_Id.instance);
apdu_len += encode_tagged_object_id(&apdu[apdu_len], break;
value->type.Object_Id.type, case BACNET_APPLICATION_TAG_OCTET_STRING:
value->type.Object_Id.instance); apdu_len = encode_tagged_octet_string(&apdu[0],
&value->type.Octet_String);
break;
case BACNET_APPLICATION_TAG_CHARACTER_STRING:
apdu_len = encode_tagged_character_string(&apdu[0],
&value->type.Character_String);
break;
case BACNET_APPLICATION_TAG_BIT_STRING:
apdu_len = encode_tagged_bitstring(&apdu[0],
&value->type.Bit_String);
break;
case BACNET_APPLICATION_TAG_DOUBLE:
/* FIXME: double is not implemented yet.
apdu_len = encode_tagged_double(&apdu[0],
value->type.Double);
*/
default:
break;
}
} }
return apdu_len; return apdu_len;
Binary file not shown.