Feature/add create object service (#476)
Added BACnet CreateObject and DeleteObject services * refactored codec for BACnetPropertyValue into bacapp module * added unit tests for BACnetPropertyValue * refactored COV and Events to use BACnetPropertyValue codec API * added unit tests for COV * added overrun safe decoders for tag numbers and boolean context * added unit tests and codecs for CreateObject and DeleteObject services * added APDU service handers and senders for CreateObject and DeleteObject services * added command line apps bacco and bacdo for CreateObject and DeleteObject services * added CreateObject and DeleteObject service handling in example server app and device object * added new BACnetRejectReason, Error Class, and BACnetAbortReason enumerations and conversions --------- Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
This commit is contained in:
+64
-2
@@ -73,6 +73,21 @@ BACNET_ABORT_REASON abort_convert_error_code(BACNET_ERROR_CODE error_code)
|
||||
case ERROR_CODE_ABORT_INSUFFICIENT_SECURITY:
|
||||
abort_code = ABORT_REASON_INSUFFICIENT_SECURITY;
|
||||
break;
|
||||
case ERROR_CODE_ABORT_WINDOW_SIZE_OUT_OF_RANGE:
|
||||
abort_code = ABORT_REASON_WINDOW_SIZE_OUT_OF_RANGE;
|
||||
break;
|
||||
case ERROR_CODE_ABORT_APPLICATION_EXCEEDED_REPLY_TIME:
|
||||
abort_code = ABORT_REASON_APPLICATION_EXCEEDED_REPLY_TIME;
|
||||
break;
|
||||
case ERROR_CODE_ABORT_OUT_OF_RESOURCES:
|
||||
abort_code = ABORT_REASON_OUT_OF_RESOURCES;
|
||||
break;
|
||||
case ERROR_CODE_ABORT_TSM_TIMEOUT:
|
||||
abort_code = ABORT_REASON_TSM_TIMEOUT;
|
||||
break;
|
||||
case ERROR_CODE_ABORT_APDU_TOO_LONG:
|
||||
abort_code = ABORT_REASON_APDU_TOO_LONG;
|
||||
break;
|
||||
case ERROR_CODE_ABORT_PROPRIETARY:
|
||||
abort_code = ABORT_REASON_PROPRIETARY_FIRST;
|
||||
break;
|
||||
@@ -85,6 +100,38 @@ BACNET_ABORT_REASON abort_convert_error_code(BACNET_ERROR_CODE error_code)
|
||||
return (abort_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Determine if a BACnetErrorCode is a BACnetAbortReason
|
||||
* @param error_code #BACNET_ERROR_CODE enumeration
|
||||
* @return true if the BACnet Error Code is a BACnet abort reason
|
||||
*/
|
||||
bool abort_valid_error_code(BACNET_ERROR_CODE error_code)
|
||||
{
|
||||
bool status = false;
|
||||
|
||||
switch (error_code) {
|
||||
case ERROR_CODE_ABORT_OTHER:
|
||||
case ERROR_CODE_ABORT_BUFFER_OVERFLOW:
|
||||
case ERROR_CODE_ABORT_INVALID_APDU_IN_THIS_STATE:
|
||||
case ERROR_CODE_ABORT_PREEMPTED_BY_HIGHER_PRIORITY_TASK:
|
||||
case ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED:
|
||||
case ERROR_CODE_ABORT_SECURITY_ERROR:
|
||||
case ERROR_CODE_ABORT_INSUFFICIENT_SECURITY:
|
||||
case ERROR_CODE_ABORT_WINDOW_SIZE_OUT_OF_RANGE:
|
||||
case ERROR_CODE_ABORT_APPLICATION_EXCEEDED_REPLY_TIME:
|
||||
case ERROR_CODE_ABORT_OUT_OF_RESOURCES:
|
||||
case ERROR_CODE_ABORT_TSM_TIMEOUT:
|
||||
case ERROR_CODE_ABORT_APDU_TOO_LONG:
|
||||
case ERROR_CODE_ABORT_PROPRIETARY:
|
||||
status = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Convert error-code from abort-reason
|
||||
*
|
||||
@@ -101,6 +148,9 @@ BACNET_ERROR_CODE abort_convert_to_error_code(BACNET_ABORT_REASON abort_code)
|
||||
BACNET_ERROR_CODE error_code = ERROR_CODE_ABORT_OTHER;
|
||||
|
||||
switch (abort_code) {
|
||||
case ABORT_REASON_OTHER:
|
||||
error_code = ERROR_CODE_ABORT_OTHER;
|
||||
break;
|
||||
case ABORT_REASON_BUFFER_OVERFLOW:
|
||||
error_code = ERROR_CODE_ABORT_BUFFER_OVERFLOW;
|
||||
break;
|
||||
@@ -119,8 +169,20 @@ BACNET_ERROR_CODE abort_convert_to_error_code(BACNET_ABORT_REASON abort_code)
|
||||
case ABORT_REASON_INSUFFICIENT_SECURITY:
|
||||
error_code = ERROR_CODE_ABORT_INSUFFICIENT_SECURITY;
|
||||
break;
|
||||
case ABORT_REASON_OTHER:
|
||||
error_code = ERROR_CODE_ABORT_OTHER;
|
||||
case ABORT_REASON_WINDOW_SIZE_OUT_OF_RANGE:
|
||||
error_code = ERROR_CODE_ABORT_WINDOW_SIZE_OUT_OF_RANGE;
|
||||
break;
|
||||
case ABORT_REASON_APPLICATION_EXCEEDED_REPLY_TIME:
|
||||
error_code = ERROR_CODE_ABORT_APPLICATION_EXCEEDED_REPLY_TIME;
|
||||
break;
|
||||
case ABORT_REASON_OUT_OF_RESOURCES:
|
||||
error_code = ERROR_CODE_ABORT_OUT_OF_RESOURCES;
|
||||
break;
|
||||
case ABORT_REASON_TSM_TIMEOUT:
|
||||
error_code = ERROR_CODE_ABORT_TSM_TIMEOUT;
|
||||
break;
|
||||
case ABORT_REASON_APDU_TOO_LONG:
|
||||
error_code = ERROR_CODE_ABORT_APDU_TOO_LONG;
|
||||
break;
|
||||
default:
|
||||
if ((abort_code >= ABORT_REASON_PROPRIETARY_FIRST) &&
|
||||
|
||||
Reference in New Issue
Block a user