From 8cdd480cc52deafd13b56955176620b406e2d29f Mon Sep 17 00:00:00 2001 From: skarg Date: Wed, 30 Jul 2014 16:34:21 +0000 Subject: [PATCH] Added some enum extensions for the lighting output and life safety object. Thank you, Wolfgang! --- bacnet-stack/include/bacenum.h | 5 +- bacnet-stack/include/bactext.h | 14 ++++ bacnet-stack/src/bactext.c | 122 +++++++++++++++++++++++++++++++++ 3 files changed, 140 insertions(+), 1 deletion(-) diff --git a/bacnet-stack/include/bacenum.h b/bacnet-stack/include/bacenum.h index b5e4360c..c35b2658 100644 --- a/bacnet-stack/include/bacenum.h +++ b/bacnet-stack/include/bacenum.h @@ -1711,6 +1711,7 @@ typedef enum BACnetLightingOperation { BACNET_LIGHTS_WARN_OFF = 8, BACNET_LIGHTS_WARN_RELINQUISH = 9, BACNET_LIGHTS_STOP = 10, + MAX_BACNET_LIGHTING_OPERATION = 11, /* Enumerated values 0-255 are reserved for definition by ASHRAE. Enumerated values 256-65535 may be used by others subject to the procedures and constraints described in Clause 23 */ @@ -1723,13 +1724,15 @@ typedef enum BACnetLightingInProgress { BACNET_LIGHTING_FADE_ACTIVE = 1, BACNET_LIGHTING_RAMP_ACTIVE = 2, BACNET_LIGHTING_NOT_CONTROLLED = 3, - BACNET_LIGHTING_OTHER = 4 + BACNET_LIGHTING_OTHER = 4, + MAX_BACNET_LIGHTING_IN_PROGRESS = 5 } BACNET_LIGHTING_IN_PROGRESS; typedef enum BACnetLightingTransition { BACNET_LIGHTING_TRANSITION_IDLE = 0, BACNET_LIGHTING_TRANSITION_FADE = 1, BACNET_LIGHTING_TRANSITION_RAMP = 2, + MAX_BACNET_LIGHTING_TRANSITION = 3, /* Enumerated values 0-63 are reserved for definition by ASHRAE. Enumerated values 64-255 may be used by others subject to the procedures and constraints described in Clause 23. */ diff --git a/bacnet-stack/include/bactext.h b/bacnet-stack/include/bactext.h index 997056f9..b9867b33 100644 --- a/bacnet-stack/include/bactext.h +++ b/bacnet-stack/include/bactext.h @@ -47,6 +47,9 @@ extern "C" { unsigned index); const char *bactext_application_tag_name( unsigned index); + bool bactext_application_tag_index( + const char *search_name, + unsigned *found_index); const char *bactext_object_type_name( unsigned index); bool bactext_object_type_index( @@ -100,6 +103,9 @@ extern "C" { unsigned index); const char *bactext_segmentation_name( unsigned index); + bool bactext_segmentation_index( + const char *search_name, + unsigned *found_index); const char *bactext_node_type_name( unsigned index); const char *bactext_character_string_encoding_name( @@ -119,9 +125,17 @@ extern "C" { const char *bactext_network_layer_msg_name( unsigned index); + const char *bactext_life_safety_state_name( + unsigned index); + const char *bactext_lighting_operation_name( unsigned index); + const char *bactext_lighting_in_progress( + unsigned index); + + const char *bactext_lighting_transition( + unsigned index); #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/bacnet-stack/src/bactext.c b/bacnet-stack/src/bactext.c index c38f2095..93c58750 100644 --- a/bacnet-stack/src/bactext.c +++ b/bacnet-stack/src/bactext.c @@ -163,6 +163,14 @@ const char *bactext_application_tag_name( ASHRAE_Reserved_String); } +bool bactext_application_tag_index( + const char *search_name, + unsigned *found_index) +{ + return indtext_by_istring(bacnet_application_tag_names, search_name, + found_index); +} + INDTEXT_DATA bacnet_object_type_names[] = { {OBJECT_ANALOG_INPUT, "analog-input"} , @@ -2158,6 +2166,14 @@ const char *bactext_segmentation_name( ASHRAE_Reserved_String); } +bool bactext_segmentation_index( + const char *search_name, + unsigned *found_index) +{ + return indtext_by_istring(bacnet_segmentation_names, search_name, + found_index); +} + INDTEXT_DATA bacnet_node_type_names[] = { {BACNET_NODE_UNKNOWN, "unknown"} , @@ -2230,6 +2246,112 @@ const char *bactext_network_layer_msg_name( return "Invalid Network Layer Message"; } +INDTEXT_DATA life_safety_state_names[] = { + {LIFE_SAFETY_STATE_QUIET, "quiet"} + , + {LIFE_SAFETY_STATE_PRE_ALARM, "pre-alarm"} + , + {LIFE_SAFETY_STATE_ALARM, "alarm"} + , + {LIFE_SAFETY_STATE_FAULT, "fault"} + , + {LIFE_SAFETY_STATE_FAULT_PRE_ALARM, "fault-pre-alarm"} + , + {LIFE_SAFETY_STATE_FAULT_ALARM, "fault-alarm"} + , + {LIFE_SAFETY_STATE_NOT_READY, "not-ready"} + , + {LIFE_SAFETY_STATE_ACTIVE, "active"} + , + {LIFE_SAFETY_STATE_TAMPER, "tamper"} + , + {LIFE_SAFETY_STATE_TEST_ALARM, "test-alarm"} + , + {LIFE_SAFETY_STATE_TEST_ACTIVE, "test-active"} + , + {LIFE_SAFETY_STATE_TEST_FAULT, "test-fault"} + , + {LIFE_SAFETY_STATE_TEST_FAULT_ALARM, "fault-alarm"} + , + {LIFE_SAFETY_STATE_HOLDUP, "holdupt"} + , + {LIFE_SAFETY_STATE_DURESS, "duress"} + , + {LIFE_SAFETY_STATE_TAMPER_ALARM, "tamper-alarm"} + , + {LIFE_SAFETY_STATE_ABNORMAL, "abnormal"} + , + {LIFE_SAFETY_STATE_EMERGENCY_POWER, "emergency-power"} + , + {LIFE_SAFETY_STATE_DELAYED, "delayed"} + , + {LIFE_SAFETY_STATE_BLOCKED, "blocked"} + , + {LIFE_SAFETY_STATE_LOCAL_ALARM, "local-alarm"} + , + {LIFE_SAFETY_STATE_GENERAL_ALARM, "general-alarm"} + , + {LIFE_SAFETY_STATE_SUPERVISORY, "supervisory"} + , + {LIFE_SAFETY_STATE_TEST_SUPERVISORY, "test-supervisory"} + , + {0, NULL} +}; + +const char *bactext_life_safety_state_name( + unsigned index) +{ + if (index < MAX_LIFE_SAFETY_STATE) + return indtext_by_index_default(life_safety_state_names, index, + ASHRAE_Reserved_String); + else + return "Invalid Safety State Message"; +} + +INDTEXT_DATA lighting_in_progress[] = { + {BACNET_LIGHTING_IDLE, "idle" } + , + { BACNET_LIGHTING_FADE_ACTIVE, "fade" } + , + { BACNET_LIGHTING_RAMP_ACTIVE, "ramp" } + , + { BACNET_LIGHTING_NOT_CONTROLLED, "not" } + , + {BACNET_LIGHTING_OTHER, "other"} + , + { 0, NULL } +}; + +const char *bactext_lighting_in_progress( + unsigned index) +{ + if (index < MAX_BACNET_LIGHTING_IN_PROGRESS) + return indtext_by_index_default(lighting_in_progress, index, + ASHRAE_Reserved_String); + else + return "Invalid Lighting In Progress Message"; +} + +INDTEXT_DATA lighting_transition[] = { + { BACNET_LIGHTING_TRANSITION_IDLE, "idle" } + , + { BACNET_LIGHTING_TRANSITION_FADE, "fade" } + , + { BACNET_LIGHTING_TRANSITION_RAMP, "ramp" } + , + { 0, NULL } +}; + +const char *bactext_lighting_transition( + unsigned index) +{ + if (index < MAX_BACNET_LIGHTING_TRANSITION) + return indtext_by_index_default(lighting_transition, index, + ASHRAE_Reserved_String); + else + return "Invalid Lighting Transition Message"; +} + INDTEXT_DATA bacnet_lighting_operation_names[] = { {BACNET_LIGHTS_NONE, "none"} ,