Ported bacnet-basic from zephyr project to create basis for mini example. (#933)

This commit is contained in:
Steve Karg
2025-02-27 15:49:29 -06:00
committed by GitHub
parent 4ebc1a4566
commit 3e480f41e2
23 changed files with 3162 additions and 147 deletions
+24 -30
View File
@@ -57,7 +57,8 @@ static analog_output_write_present_value_callback
/* These three arrays are used by the ReadPropertyMultiple handler */
static const int Analog_Output_Properties_Required[] = {
static const int Properties_Required[] = {
/* unordered list of required properties */
PROP_OBJECT_IDENTIFIER,
PROP_OBJECT_NAME,
PROP_OBJECT_TYPE,
@@ -74,12 +75,13 @@ static const int Analog_Output_Properties_Required[] = {
-1
};
static const int Analog_Output_Properties_Optional[] = {
static const int Properties_Optional[] = {
/* unordered list of optional properties */
PROP_RELIABILITY, PROP_DESCRIPTION, PROP_COV_INCREMENT,
PROP_MIN_PRES_VALUE, PROP_MAX_PRES_VALUE, -1
};
static const int Analog_Output_Properties_Proprietary[] = { -1 };
static const int Properties_Proprietary[] = { -1 };
/**
* @brief Returns the list of required, optional, and proprietary properties.
@@ -95,13 +97,13 @@ void Analog_Output_Property_Lists(
const int **pRequired, const int **pOptional, const int **pProprietary)
{
if (pRequired) {
*pRequired = Analog_Output_Properties_Required;
*pRequired = Properties_Required;
}
if (pOptional) {
*pOptional = Analog_Output_Properties_Optional;
*pOptional = Properties_Optional;
}
if (pProprietary) {
*pProprietary = Analog_Output_Properties_Proprietary;
*pProprietary = Properties_Proprietary;
}
return;
@@ -985,7 +987,13 @@ int Analog_Output_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata)
(rpdata->application_data_len == 0)) {
return 0;
}
if (!property_lists_member(
Properties_Required, Properties_Optional, Properties_Proprietary,
rpdata->object_property)) {
rpdata->error_class = ERROR_CLASS_PROPERTY;
rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
return BACNET_STATUS_ERROR;
}
apdu = rpdata->application_data;
apdu_size = rpdata->application_data_len;
switch (rpdata->object_property) {
@@ -1069,7 +1077,6 @@ int Analog_Output_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata)
apdu_len = encode_application_real(
&apdu[0], Analog_Output_COV_Increment(rpdata->object_instance));
break;
#if (BACNET_PROTOCOL_REVISION >= 17)
case PROP_CURRENT_COMMAND_PRIORITY:
i = Analog_Output_Present_Value_Priority(rpdata->object_instance);
if ((i >= BACNET_MIN_PRIORITY) && (i <= BACNET_MAX_PRIORITY)) {
@@ -1078,7 +1085,6 @@ int Analog_Output_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata)
apdu_len = encode_application_null(&apdu[0]);
}
break;
#endif
default:
rpdata->error_class = ERROR_CLASS_PROPERTY;
rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
@@ -1139,28 +1145,16 @@ bool Analog_Output_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data)
wp_data->object_instance, value.type.Boolean);
}
break;
case PROP_COV_INCREMENT:
case PROP_OBJECT_IDENTIFIER:
case PROP_OBJECT_TYPE:
case PROP_OBJECT_NAME:
case PROP_STATUS_FLAGS:
case PROP_EVENT_STATE:
case PROP_UNITS:
case PROP_RELIABILITY:
case PROP_PRIORITY_ARRAY:
case PROP_RELINQUISH_DEFAULT:
case PROP_MAX_PRES_VALUE:
case PROP_MIN_PRES_VALUE:
case PROP_DESCRIPTION:
#if (BACNET_PROTOCOL_REVISION >= 17)
case PROP_CURRENT_COMMAND_PRIORITY:
#endif
wp_data->error_class = ERROR_CLASS_PROPERTY;
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
break;
default:
wp_data->error_class = ERROR_CLASS_PROPERTY;
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
if (property_lists_member(
Properties_Required, Properties_Optional,
Properties_Proprietary, wp_data->object_property)) {
wp_data->error_class = ERROR_CLASS_PROPERTY;
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
} else {
wp_data->error_class = ERROR_CLASS_PROPERTY;
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
}
break;
}