Add enumeration text lookup for BACnet types (#1209)

* Added enumeration text lookup for BACnetAuthenticationStatus, BACnetAuthorizationMode, BACnetAccessCredentialDisable, BACnetAccessCredentialDisableReason, BACnetAccessUserType, BACnetAccessZoneOccupancyState, BACnetWriteStatus, BACnetIPMode, BACnetDoorValue, BACnetMaintenance, BACnetEscalatorFault, BACnetEscalatorMode, BACnetEscalatorOperationDirection, BACnetBackupState, BACnetSecurityLevel, BACnetLiftCarDirection, BACnetLiftCarDoorCommand, BACnetLiftCarDriveStatus, BACnetLiftCarMode, BACnetLiftFault, BACnetLiftGroupMode, BACnetAuditLevel, BACnetAuditOperation, BACnetSCHubConnectorState, BACnetSCConnectionState, BACnetNodeRelationship, BACnetAction, BACnetFileAccessMethod, BACnetLockStatus, BACnetDoorAlarmState, BACnetDoorStatus, BACnetDoorSecuredStatus, and BACnetAccessEvent.

* Created BINARY_PV_MAX with the same semantic meaning as one more than the last valid enumeration, and deprecated MAX_BINARY_PV usage in the examples.

* Reduced code size by using bactext_property_states_strtoul() instead of individual API for each enumations.
This commit is contained in:
Steve Karg
2026-01-24 16:11:25 -06:00
committed by GitHub
parent 81c42566a7
commit 4924a57ccc
12 changed files with 3345 additions and 425 deletions
+3 -3
View File
@@ -531,7 +531,7 @@ bool Binary_Input_Present_Value_Set(
pObject = Binary_Input_Object(object_instance);
if (pObject) {
if (value <= MAX_BINARY_PV) {
if (value < BINARY_PV_MAX) {
/* de-polarize */
if (Binary_Polarity(pObject->Polarity) != POLARITY_NORMAL) {
if (value == BINARY_INACTIVE) {
@@ -571,7 +571,7 @@ static bool Binary_Input_Present_Value_Write(
pObject = Binary_Input_Object(object_instance);
if (pObject) {
if (value <= MAX_BINARY_PV) {
if (value < BINARY_PV_MAX) {
if (pObject->Write_Enabled) {
old_value = Binary_Present_Value(pObject->Present_Value);
Binary_Input_Present_Value_COV_Detect(pObject, value);
@@ -1193,7 +1193,7 @@ bool Binary_Input_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data)
status = write_property_type_valid(
wp_data, &value, BACNET_APPLICATION_TAG_ENUMERATED);
if (status) {
if (value.type.Enumerated <= MAX_BINARY_PV) {
if (value.type.Enumerated < BINARY_PV_MAX) {
Binary_Input_Alarm_Value_Set(
wp_data->object_instance,
(BACNET_BINARY_PV)value.type.Enumerated);
+2 -2
View File
@@ -325,7 +325,7 @@ bool Binary_Output_Present_Value_Set(
(priority != 6 /* reserved */)) {
priority--;
old_value = Object_Present_Value(pObject);
if (binary_value <= MAX_BINARY_PV) {
if (binary_value < BINARY_PV_MAX) {
BIT_SET(pObject->Priority_Active_Bits, priority);
if (binary_value == BINARY_ACTIVE) {
BIT_SET(pObject->Priority_Array, priority);
@@ -448,7 +448,7 @@ static bool Binary_Output_Present_Value_Write(
pObject = Keylist_Data(Object_List, object_instance);
if (pObject) {
if ((priority >= 1) && (priority <= BACNET_MAX_PRIORITY) &&
(value <= MAX_BINARY_PV)) {
(value < BINARY_PV_MAX)) {
if (priority != 6) {
old_value = Object_Present_Value(pObject);
Binary_Output_Present_Value_Set(
+3 -3
View File
@@ -490,7 +490,7 @@ bool Binary_Value_Present_Value_Set(
pObject = Binary_Value_Object(object_instance);
if (pObject) {
if (value <= MAX_BINARY_PV) {
if (value < BINARY_PV_MAX) {
Binary_Value_Present_Value_COV_Detect(pObject, value);
pObject->Present_Value = Binary_Present_Value_Boolean(value);
status = true;
@@ -522,7 +522,7 @@ static bool Binary_Value_Present_Value_Write(
pObject = Binary_Value_Object(object_instance);
if (pObject) {
if (value <= MAX_BINARY_PV) {
if (value < BINARY_PV_MAX) {
if (pObject->Write_Enabled) {
old_value = Binary_Present_Value(pObject->Present_Value);
Binary_Value_Present_Value_COV_Detect(pObject, value);
@@ -1096,7 +1096,7 @@ bool Binary_Value_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data)
status = write_property_type_valid(
wp_data, &value, BACNET_APPLICATION_TAG_ENUMERATED);
if (status) {
if (value.type.Enumerated <= MAX_BINARY_PV) {
if (value.type.Enumerated < BINARY_PV_MAX) {
Binary_Value_Alarm_Value_Set(
wp_data->object_instance,
(BACNET_BINARY_PV)value.type.Enumerated);