From 805717179a0594a2efd33f34a37de469a1d70c8a Mon Sep 17 00:00:00 2001 From: skarg Date: Sat, 12 Jun 2010 23:04:10 +0000 Subject: [PATCH] Changed convert function to fix a couple of problems and make the code clear. --- bacnet-stack/src/abort.c | 29 ++++++++++++++++++++------ bacnet-stack/src/reject.c | 43 ++++++++++++++++++++++++++++++++++----- 2 files changed, 61 insertions(+), 11 deletions(-) diff --git a/bacnet-stack/src/abort.c b/bacnet-stack/src/abort.c index ac1e308e..f1828fa3 100644 --- a/bacnet-stack/src/abort.c +++ b/bacnet-stack/src/abort.c @@ -39,19 +39,36 @@ /** @file abort.c Abort Encoding/Decoding */ /* Helper function to avoid needing additional entries in service data structures * when passing back abort status. - * Convert from error code to abort code - assumes value is in range - * ERROR_CODE_RESERVED1 to ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED - * anything outside this range gets converted to ABORT_REASON_OTHER. + * Convert from error code to abort code. + * Anything not defined converts to ABORT_REASON_OTHER. * Will need reworking if it is required to return proprietary abort codes. */ - BACNET_ABORT_REASON abort_convert_error_code( BACNET_ERROR_CODE error_code) { BACNET_ABORT_REASON abort_code = ABORT_REASON_OTHER; - if((error_code > ERROR_CODE_RESERVED1) && (error_code <= ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED)) - abort_code = (BACNET_ABORT_REASON)(error_code - ERROR_CODE_RESERVED1); + switch (error_code) { + case ERROR_CODE_ABORT_BUFFER_OVERFLOW: + abort_code = ABORT_REASON_BUFFER_OVERFLOW; + break; + case ERROR_CODE_ABORT_INVALID_APDU_IN_THIS_STATE: + abort_code = ABORT_REASON_INVALID_APDU_IN_THIS_STATE; + break; + case ERROR_CODE_ABORT_PREEMPTED_BY_HIGHER_PRIORITY_TASK: + abort_code = ABORT_REASON_PREEMPTED_BY_HIGHER_PRIORITY_TASK; + break; + case ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED: + abort_code = ABORT_REASON_SEGMENTATION_NOT_SUPPORTED; + break; + case ERROR_CODE_ABORT_PROPRIETARY: + abort_code = FIRST_PROPRIETARY_ABORT_REASON; + break; + case ERROR_CODE_ABORT_OTHER: + default: + abort_code = ABORT_REASON_OTHER; + break; + } return(abort_code); } diff --git a/bacnet-stack/src/reject.c b/bacnet-stack/src/reject.c index 29274205..e7d30806 100644 --- a/bacnet-stack/src/reject.c +++ b/bacnet-stack/src/reject.c @@ -40,9 +40,8 @@ /* Helper function to avoid needing additional entries in service data structures * when passing back reject status. - * Convert from error code to reject code - assumes value is in range - * ERROR_CODE_REJECT_BUFFER_OVERFLOW to ERROR_CODE_REJECT_UNRECOGNIZED_SERVICE - * anything outside this range gets converted to REJECT_REASON_OTHER. + * Convert from error code to reject code. + * Anything not defined gets converted to REJECT_REASON_OTHER. * Will need reworking if it is required to return proprietary reject codes. */ @@ -51,8 +50,42 @@ BACNET_REJECT_REASON reject_convert_error_code( { BACNET_REJECT_REASON reject_code = REJECT_REASON_OTHER; - if((error_code > ERROR_CODE_NETWORK_DOWN) && (error_code <= ERROR_CODE_REJECT_UNRECOGNIZED_SERVICE)) - reject_code = (BACNET_REJECT_REASON)(error_code - ERROR_CODE_NETWORK_DOWN); + switch (error_code) { + case ERROR_CODE_REJECT_BUFFER_OVERFLOW: + reject_code = REJECT_REASON_BUFFER_OVERFLOW; + break; + case ERROR_CODE_REJECT_INCONSISTENT_PARAMETERS: + reject_code = REJECT_REASON_INCONSISTENT_PARAMETERS; + break; + case ERROR_CODE_REJECT_INVALID_PARAMETER_DATA_TYPE: + reject_code = REJECT_REASON_INVALID_PARAMETER_DATA_TYPE; + break; + case ERROR_CODE_REJECT_INVALID_TAG: + reject_code = REJECT_REASON_INVALID_TAG; + break; + case ERROR_CODE_REJECT_MISSING_REQUIRED_PARAMETER: + reject_code = REJECT_REASON_MISSING_REQUIRED_PARAMETER; + break; + case ERROR_CODE_REJECT_PARAMETER_OUT_OF_RANGE: + reject_code = REJECT_REASON_PARAMETER_OUT_OF_RANGE; + break; + case ERROR_CODE_REJECT_TOO_MANY_ARGUMENTS: + reject_code = REJECT_REASON_TOO_MANY_ARGUMENTS; + break; + case ERROR_CODE_REJECT_UNDEFINED_ENUMERATION: + reject_code = REJECT_REASON_UNDEFINED_ENUMERATION; + break; + case ERROR_CODE_REJECT_UNRECOGNIZED_SERVICE: + reject_code = REJECT_REASON_UNRECOGNIZED_SERVICE; + break; + case ERROR_CODE_REJECT_PROPRIETARY: + reject_code = FIRST_PROPRIETARY_REJECT_REASON; + break; + case ERROR_CODE_REJECT_OTHER: + default: + reject_code = REJECT_REASON_OTHER; + break; + } return(reject_code); }