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 */
if (apdu) {
if (value->tag == BACNET_APPLICATION_TAG_NULL)
apdu[apdu_len++] = value->tag;
else if (value->tag == BACNET_APPLICATION_TAG_BOOLEAN)
apdu_len += encode_tagged_boolean(&apdu[apdu_len],
value->type.Boolean);
else if (value->tag == BACNET_APPLICATION_TAG_UNSIGNED_INT)
apdu_len += encode_tagged_unsigned(&apdu[apdu_len],
value->type.Unsigned_Int);
else if (value->tag == BACNET_APPLICATION_TAG_SIGNED_INT)
apdu_len += encode_tagged_signed(&apdu[apdu_len],
value->type.Signed_Int);
else if (value->tag == BACNET_APPLICATION_TAG_REAL)
apdu_len += encode_tagged_real(&apdu[apdu_len],
value->type.Real);
#if 0
else if (value->tag == BACNET_APPLICATION_TAG_DOUBLE)
apdu_len += encode_tagged_double(&apdu[apdu_len],
value->type.Double);
#endif
else if (value->tag == BACNET_APPLICATION_TAG_OCTET_STRING)
apdu_len += encode_tagged_octet_string(&apdu[apdu_len],
&value->type.Octet_String);
else if (value->tag == BACNET_APPLICATION_TAG_CHARACTER_STRING)
apdu_len += encode_tagged_character_string(&apdu[apdu_len],
&value->type.Character_String);
else if (value->tag == BACNET_APPLICATION_TAG_BIT_STRING)
apdu_len += encode_tagged_bitstring(&apdu[apdu_len],
&value->type.Bit_String);
else if (value->tag == BACNET_APPLICATION_TAG_ENUMERATED)
apdu_len += encode_tagged_enumerated(&apdu[apdu_len],
value->type.Enumerated);
else if (value->tag == BACNET_APPLICATION_TAG_DATE)
apdu_len += encode_tagged_date(&apdu[apdu_len],
&value->type.Date);
else if (value->tag == BACNET_APPLICATION_TAG_TIME)
apdu_len += encode_tagged_time(&apdu[apdu_len],
&value->type.Time);
else if (value->tag == BACNET_APPLICATION_TAG_OBJECT_ID)
apdu_len += encode_tagged_object_id(&apdu[apdu_len],
value->type.Object_Id.type,
value->type.Object_Id.instance);
if (value && apdu)
{
switch (value->tag) {
case BACNET_APPLICATION_TAG_NULL:
apdu[0] = value->tag;
apdu_len++;
break;
case BACNET_APPLICATION_TAG_BOOLEAN:
apdu_len = encode_tagged_boolean(&apdu[0],
value->type.Boolean);
break;
case BACNET_APPLICATION_TAG_UNSIGNED_INT:
apdu_len = encode_tagged_unsigned(&apdu[0],
value->type.Unsigned_Int);
break;
case BACNET_APPLICATION_TAG_SIGNED_INT:
apdu_len = encode_tagged_signed(&apdu[0],
value->type.Signed_Int);
break;
case BACNET_APPLICATION_TAG_REAL:
apdu_len = encode_tagged_real(&apdu[0],
value->type.Real);
break;
case BACNET_APPLICATION_TAG_ENUMERATED:
apdu_len = encode_tagged_enumerated(&apdu[0],
value->type.Enumerated);
break;
case BACNET_APPLICATION_TAG_DATE:
apdu_len = encode_tagged_date(&apdu[0],
&value->type.Date);
break;
case BACNET_APPLICATION_TAG_TIME:
apdu_len = encode_tagged_time(&apdu[0],
&value->type.Time);
break;
case BACNET_APPLICATION_TAG_OBJECT_ID:
apdu_len = encode_tagged_object_id(&apdu[0],
value->type.Object_Id.type,
value->type.Object_Id.instance);
break;
case BACNET_APPLICATION_TAG_OCTET_STRING:
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;
Binary file not shown.