From 0116bcbfe7e4f6ce4e8feebd0223d76e07d81795 Mon Sep 17 00:00:00 2001 From: skarg Date: Wed, 14 May 2014 22:21:29 +0000 Subject: [PATCH] Added -d option to Epics demo to only display Device properties. --- bacnet-stack/demo/epics/main.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/bacnet-stack/demo/epics/main.c b/bacnet-stack/demo/epics/main.c index 3fe53cc9..8e948e65 100644 --- a/bacnet-stack/demo/epics/main.c +++ b/bacnet-stack/demo/epics/main.c @@ -170,6 +170,8 @@ static bool Using_Walked_List = false; static bool IsLongArray = false; /* Show value instead of '?' */ static bool ShowValues = false; +/* show only device object properties */ +static bool ShowDeviceObjectOnly = false; /* read required and optional properties when RPM ALL does not work */ static bool Optional_Properties = false; @@ -697,7 +699,7 @@ void PrintReadPropertyData( (value->next != NULL)) { /* There are more. */ fprintf(stdout, ", "); - if (!(Walked_List_Index % 4)) + if (!(Walked_List_Index % 3)) fprintf(stdout, "\n "); } else { fprintf(stdout, " } \n"); @@ -1004,8 +1006,9 @@ void PrintUsage( ("bacepics -- Generates Full EPICS file, including Object and Property List \n"); printf("Usage: \n"); printf - (" bacepics [-v] [-p sport] [-t target_mac [-n dnet]] device-instance \n"); + (" bacepics [-v] [-d] [-p sport] [-t target_mac [-n dnet]] device-instance \n"); printf(" -v: show values instead of '?' \n"); + printf(" -d: show only device object properties\n"); printf (" -p: Use sport for \"my\" port, instead of 0xBAC0 (BACnet/IP only) \n"); printf(" Allows you to communicate with a localhost target. \n"); @@ -1018,7 +1021,7 @@ void PrintUsage( printf(" or on routed Virtual Network \n"); printf("\n"); printf - ("You may want to redirect the output to a .tpi file for VTS use,\n"); + ("You can redirect the output to a .tpi file for VTS use,\n"); printf(" eg, bacepics -v 2701876 > epics-2701876.tpi \n"); printf("\n"); exit(0); @@ -1047,6 +1050,9 @@ int CheckCommandLineArgs( case 'v': ShowValues = true; break; + case 'd': + ShowDeviceObjectOnly = true; + break; case 'p': if (++i < argc) { #if defined(BACDL_BIP) @@ -1327,7 +1333,10 @@ void PrintHeading( printf("?"); } printf("\n}\n\n"); +} +void Print_Device_Heading(void) +{ printf("List of Objects in Test Device:\n"); /* Print Opening brace, then kick off the Device Object */ printf("{\n"); @@ -1503,7 +1512,12 @@ int main( case PRINT_HEADING: /* Print out the header information */ - PrintHeading(); + if (ShowDeviceObjectOnly) { + Print_Device_Heading(); + } else { + PrintHeading(); + Print_Device_Heading(); + } myState = GET_ALL_REQUEST; /* Fall through now */ @@ -1713,6 +1727,13 @@ int main( printf(" -- Found %d Objects \n", Keylist_Count(Object_List)); Object_List_Index = -1; /* start over (will be incr to 0) */ + if (ShowDeviceObjectOnly) { + /* Closing brace for the Device Object */ + printf(" }, \n"); + /* done with all Objects, signal end of this while loop */ + myObject.type = MAX_BACNET_OBJECT_TYPE; + break; + } } /* Advance to the next object, as long as it's not the Device object */ do {