diff --git a/bacnet-stack/demo/epics/main.c b/bacnet-stack/demo/epics/main.c index 87e63196..211f8f4e 100644 --- a/bacnet-stack/demo/epics/main.c +++ b/bacnet-stack/demo/epics/main.c @@ -76,6 +76,7 @@ static bool Provided_Targ_MAC = false; static bool Error_Detected = false; static uint16_t Last_Error_Class = 0; static uint16_t Last_Error_Code = 0; +static uint16_t Error_Count = 0; /* Counts errors we couldn't get around */ static bool Has_RPM = true; /* Assume device can do RPM, to start */ static EPICS_STATES myState = INITIAL_BINDING; @@ -504,6 +505,13 @@ void PrintReadPropertyData( * screen these out here, unless ShowValues is true. */ switch (rpm_property->propertyIdentifier) { case PROP_DEVICE_ADDRESS_BINDING: + /* Make it VTS3-friendly and don't show "Null" + * as a value. */ + if ( value->tag == BACNET_APPLICATION_TAG_NULL ) { + fprintf(stdout, "?"); + break; + } + /* Else, fall through for normal processing. */ case PROP_DAYLIGHT_SAVINGS_STATUS: case PROP_LOCAL_DATE: case PROP_LOCAL_TIME: @@ -1023,6 +1031,7 @@ int main( /* Don't think we'll ever actually reach this point. */ invoke_id = 0; myState = NEXT_OBJECT; /* Give up and move on to the next. */ + Error_Count++; } break; @@ -1098,6 +1107,7 @@ int main( Print_Property_Identifier( pPropList[Property_List_Index]); fprintf(stdout, " \r\n"); + Error_Count++; if ( ++Property_List_Index >= Property_List_Length ) myState = NEXT_OBJECT; /* Give up and move on to the next. */ } @@ -1111,6 +1121,7 @@ int main( /* Don't think we'll ever actually reach this point. */ invoke_id = 0; myState = NEXT_OBJECT; /* Give up and move on to the next. */ + Error_Count++; } break; @@ -1171,6 +1182,9 @@ int main( } while (myObject.type < MAX_BACNET_OBJECT_TYPE); + if ( Error_Count > 0 ) + fprintf(stderr, "\r-- Found %d Errors \r\n", Error_Count ); + /* Closing brace for all Objects */ printf("} \r\n"); diff --git a/bacnet-stack/include/bacenum.h b/bacnet-stack/include/bacenum.h index 18617c2a..80eec992 100644 --- a/bacnet-stack/include/bacenum.h +++ b/bacnet-stack/include/bacenum.h @@ -899,14 +899,14 @@ typedef enum { OBJECT_STRUCTURED_VIEW = 29, OBJECT_ACCESS_DOOR = 30, OBJECT_LIGHTING_OUTPUT = 31, - OBJECT_ACCESS_CREDENTIAL = 32, + OBJECT_ACCESS_CREDENTIAL = 32, /* Addendum 2008-j */ OBJECT_ACCESS_POINT = 33, OBJECT_ACCESS_RIGHTS = 34, OBJECT_ACCESS_USER = 35, OBJECT_ACCESS_ZONE = 36, - OBJECT_AUTHENTICATION_FACTOR_INPUT = 37, /* credential-data-input */ - mysterious_OBJECT_TYPE = 38, /* Can't find anything assigned to this */ - OBJECT_BITSTRING_VALUE = 39, /* Addendum 2008-w */ + OBJECT_CREDENTIAL_DATA_INPUT = 37, /* authentication-factor-input */ + OBJECT_NETWORK_SECURITY = 38, /* Addendum 2008-g */ + OBJECT_BITSTRING_VALUE = 39, /* Addendum 2008-w */ OBJECT_CHARACTERSTRING_VALUE = 40, OBJECT_DATE_PATTERN_VALUE = 41, OBJECT_DATE_VALUE = 42, diff --git a/bacnet-stack/src/bactext.c b/bacnet-stack/src/bactext.c index 36153eff..2e5c14ed 100644 --- a/bacnet-stack/src/bactext.c +++ b/bacnet-stack/src/bactext.c @@ -208,59 +208,59 @@ INDTEXT_DATA bacnet_object_type_names[] = { , {OBJECT_ACCUMULATOR, "Accumulator"} , - {OBJECT_PULSE_CONVERTER, "Pulse-Converter"} + {OBJECT_PULSE_CONVERTER, "Pulse Converter"} , - {OBJECT_EVENT_LOG, "Event-Log"} + {OBJECT_EVENT_LOG, "Event Log"} , - {OBJECT_GLOBAL_GROUP, "Global-Group"} + {OBJECT_GLOBAL_GROUP, "Global Group"} , - {OBJECT_TREND_LOG_MULTIPLE, "Trend-Log-Multiple"} + {OBJECT_TREND_LOG_MULTIPLE, "Trend Log Multiple"} , - {OBJECT_LOAD_CONTROL, "Load-Control"} + {OBJECT_LOAD_CONTROL, "Load Control"} , - {OBJECT_STRUCTURED_VIEW, "Structured-View"} + {OBJECT_STRUCTURED_VIEW, "Structured View"} , - {OBJECT_ACCESS_DOOR, "Access-Door"} + {OBJECT_ACCESS_DOOR, "Access Door"} , - {OBJECT_LIGHTING_OUTPUT, "Lighting-Output"} + {OBJECT_LIGHTING_OUTPUT, "Lighting Output"} , - {OBJECT_ACCESS_CREDENTIAL, "Access-Credential"} + {OBJECT_ACCESS_CREDENTIAL, "Access Credential"} , - {OBJECT_ACCESS_POINT, "Access-Point"} + {OBJECT_ACCESS_POINT, "Access Point"} , - {OBJECT_ACCESS_RIGHTS, "Access-Rights"} + {OBJECT_ACCESS_RIGHTS, "Access Rights"} , - {OBJECT_ACCESS_USER, "Access-User"} + {OBJECT_ACCESS_USER, "Access User"} , - {OBJECT_ACCESS_ZONE, "Access-Zone"} + {OBJECT_ACCESS_ZONE, "Access Zone"} , - {OBJECT_AUTHENTICATION_FACTOR_INPUT, "Authentication-Factor-Input"} + {OBJECT_CREDENTIAL_DATA_INPUT, "Credential Data Input"} , - {mysterious_OBJECT_TYPE, "object-of-mystery"} + {OBJECT_NETWORK_SECURITY, "Network Security"} , - {OBJECT_BITSTRING_VALUE, "Bitstring-Value"} + {OBJECT_BITSTRING_VALUE, "Bitstring Value"} , - {OBJECT_CHARACTERSTRING_VALUE, "Characterstring-Value"} + {OBJECT_CHARACTERSTRING_VALUE, "Characterstring Value"} , - {OBJECT_DATE_PATTERN_VALUE, "Date-Pattern-Value"} + {OBJECT_DATE_PATTERN_VALUE, "Date Pattern Value"} , - {OBJECT_DATE_VALUE, "Date-Value"} + {OBJECT_DATE_VALUE, "Date Value"} , - {OBJECT_DATETIME_PATTERN_VALUE, "Datetime-Pattern-Value"} + {OBJECT_DATETIME_PATTERN_VALUE, "Datetime Pattern Value"} , - {OBJECT_DATETIME_VALUE, "Datetime-Value"} + {OBJECT_DATETIME_VALUE, "Datetime Value"} , - {OBJECT_INTEGER_VALUE, "Integer-Value"} + {OBJECT_INTEGER_VALUE, "Integer Value"} , - {OBJECT_LARGE_ANALOG_VALUE, "Large-Analog-Value"} + {OBJECT_LARGE_ANALOG_VALUE, "Large Analog Value"} , - {OBJECT_OCTETSTRING_VALUE, "Octetstring-Value"} + {OBJECT_OCTETSTRING_VALUE, "Octetstring Value"} , - {OBJECT_POSITIVE_INTEGER_VALUE, "Positive-Integer-Value"} + {OBJECT_POSITIVE_INTEGER_VALUE, "Positive Integer Value"} , - {OBJECT_TIME_PATTERN_VALUE, "Time-Pattern-Value"} + {OBJECT_TIME_PATTERN_VALUE, "Time Pattern Value"} , - {OBJECT_TIME_VALUE, "Time-Value"} + {OBJECT_TIME_VALUE, "Time Value"} , {0, NULL} /* Enumerated values 0-127 are reserved for definition by ASHRAE.