Changed convert function to fix a couple of problems and make the code clear.
This commit is contained in:
@@ -39,19 +39,36 @@
|
|||||||
/** @file abort.c Abort Encoding/Decoding */
|
/** @file abort.c Abort Encoding/Decoding */
|
||||||
/* Helper function to avoid needing additional entries in service data structures
|
/* Helper function to avoid needing additional entries in service data structures
|
||||||
* when passing back abort status.
|
* when passing back abort status.
|
||||||
* Convert from error code to abort code - assumes value is in range
|
* Convert from error code to abort code.
|
||||||
* ERROR_CODE_RESERVED1 to ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED
|
* Anything not defined converts to ABORT_REASON_OTHER.
|
||||||
* anything outside this range gets converted to ABORT_REASON_OTHER.
|
|
||||||
* Will need reworking if it is required to return proprietary abort codes.
|
* Will need reworking if it is required to return proprietary abort codes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
BACNET_ABORT_REASON abort_convert_error_code(
|
BACNET_ABORT_REASON abort_convert_error_code(
|
||||||
BACNET_ERROR_CODE error_code)
|
BACNET_ERROR_CODE error_code)
|
||||||
{
|
{
|
||||||
BACNET_ABORT_REASON abort_code = ABORT_REASON_OTHER;
|
BACNET_ABORT_REASON abort_code = ABORT_REASON_OTHER;
|
||||||
|
|
||||||
if((error_code > ERROR_CODE_RESERVED1) && (error_code <= ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED))
|
switch (error_code) {
|
||||||
abort_code = (BACNET_ABORT_REASON)(error_code - ERROR_CODE_RESERVED1);
|
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);
|
return(abort_code);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,9 +40,8 @@
|
|||||||
|
|
||||||
/* Helper function to avoid needing additional entries in service data structures
|
/* Helper function to avoid needing additional entries in service data structures
|
||||||
* when passing back reject status.
|
* when passing back reject status.
|
||||||
* Convert from error code to reject code - assumes value is in range
|
* Convert from error code to reject code.
|
||||||
* ERROR_CODE_REJECT_BUFFER_OVERFLOW to ERROR_CODE_REJECT_UNRECOGNIZED_SERVICE
|
* Anything not defined gets converted to REJECT_REASON_OTHER.
|
||||||
* anything outside this range gets converted to REJECT_REASON_OTHER.
|
|
||||||
* Will need reworking if it is required to return proprietary reject codes.
|
* 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;
|
BACNET_REJECT_REASON reject_code = REJECT_REASON_OTHER;
|
||||||
|
|
||||||
if((error_code > ERROR_CODE_NETWORK_DOWN) && (error_code <= ERROR_CODE_REJECT_UNRECOGNIZED_SERVICE))
|
switch (error_code) {
|
||||||
reject_code = (BACNET_REJECT_REASON)(error_code - ERROR_CODE_NETWORK_DOWN);
|
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);
|
return(reject_code);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user