From fbb3b45038eac0a68e0b82e601a22a1c2f9d546d Mon Sep 17 00:00:00 2001 From: skarg Date: Mon, 20 Feb 2006 21:59:40 +0000 Subject: [PATCH] reverted the who-has back from the who-is copy-paste of the directory which included the CVS directory which checked in the who-is demo as the who-has demo. Aaarghh! --- bacnet-stack/demo/whohas/Makefile | 5 +- bacnet-stack/demo/whohas/main.c | 80 ++++++++++-------------- bacnet-stack/demo/whohas/makefile.b32 | 89 +++++++++++++-------------- 3 files changed, 75 insertions(+), 99 deletions(-) diff --git a/bacnet-stack/demo/whohas/Makefile b/bacnet-stack/demo/whohas/Makefile index f276cb59..25b7b640 100644 --- a/bacnet-stack/demo/whohas/Makefile +++ b/bacnet-stack/demo/whohas/Makefile @@ -18,7 +18,7 @@ INCLUDES = -I$(BACNET_ROOT) -I$(BACNET_PORT) -I$(BACNET_OBJECT) -I$(BACNET_HANDL CFLAGS = -Wall -g $(INCLUDES) $(DEFINES) -TARGET = bacwi +TARGET = bacwh SRCS = main.c \ $(BACNET_ROOT)/rd.c \ @@ -28,10 +28,9 @@ SRCS = main.c \ $(BACNET_HANDLER)/noserv.c \ $(BACNET_HANDLER)/h_whois.c \ $(BACNET_HANDLER)/h_ihave.c \ - $(BACNET_HANDLER)/h_iam.c \ $(BACNET_HANDLER)/h_rp.c \ + $(BACNET_HANDLER)/s_whohas.c \ $(BACNET_HANDLER)/s_ihave.c \ - $(BACNET_HANDLER)/s_whois.c \ $(BACNET_OBJECT)/device.c \ $(BACNET_OBJECT)/ai.c \ $(BACNET_OBJECT)/ao.c \ diff --git a/bacnet-stack/demo/whohas/main.c b/bacnet-stack/demo/whohas/main.c index 0c4a4ba1..f1be24ff 100644 --- a/bacnet-stack/demo/whohas/main.c +++ b/bacnet-stack/demo/whohas/main.c @@ -32,6 +32,8 @@ #include #include "bactext.h" #include "iam.h" +#include "arf.h" +#include "tsm.h" #include "address.h" #include "config.h" #include "bacdef.h" @@ -40,6 +42,7 @@ #include "device.h" #include "net.h" #include "datalink.h" +#include "whohas.h" /* some demo stuff needed */ #include "filename.h" #include "handlers.h" @@ -50,8 +53,9 @@ static uint8_t Rx_Buf[MAX_MPDU] = { 0 }; /* global variables used in this file */ -static int32_t Target_Object_Instance_Min = 0; -static int32_t Target_Object_Instance_Max = BACNET_MAX_INSTANCE; +static BACNET_OBJECT_TYPE Target_Object_Type = MAX_BACNET_OBJECT_TYPE; +static uint32_t Target_Object_Instance = BACNET_MAX_INSTANCE; +static char *Target_Object_Name = NULL; static bool Error_Detected = false; @@ -91,8 +95,8 @@ static void Init_Service_Handlers(void) apdu_set_confirmed_handler(SERVICE_CONFIRMED_READ_PROPERTY, handler_read_property); /* handle the reply (request) coming back */ - apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_I_AM, - handler_i_am_add); + apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_I_HAVE, + handler_i_have); /* handle any errors coming back */ apdu_set_abort_handler(MyAbortHandler); apdu_set_reject_handler(MyRejectHandler); @@ -113,27 +117,6 @@ static void print_address(char *name, BACNET_ADDRESS * dest) } #endif -static void print_address_cache(void) -{ - int i, j; - BACNET_ADDRESS address; - uint32_t device_id = 0; - unsigned max_apdu = 0; - - fprintf(stderr, "Device\tMAC\tMaxAPDU\tNet\n"); - for (i = 0; i < MAX_ADDRESS_CACHE; i++) { - if (address_get_by_index(i, &device_id, &max_apdu, &address)) { - fprintf(stderr, "%u\t", device_id); - for (j = 0; j < address.mac_len; j++) { - fprintf(stderr, "%02X", address.mac[j]); - } - fprintf(stderr, "\t"); - fprintf(stderr, "%hu\t", max_apdu); - fprintf(stderr, "%hu\n", address.net); - } - } -} - int main(int argc, char *argv[]) { BACNET_ADDRESS src = { 0 }; /* address where message came from */ @@ -148,38 +131,34 @@ int main(int argc, char *argv[]) #endif if (argc < 2) { - printf("Usage: %s device-instance | device-instance-min device-instance-max\r\n" - "Send BACnet WhoIs request to devices, and wait for responses.\r\n" + /* note: priority 16 and 0 should produce the same end results... */ + printf("Usage: %s \r\n" + "Send BACnet WhoHas request to devices, and wait for responses.\r\n" "\r\n" - "The device-instance can be 0 to %d, or -1 for ALL.\r\n" - "The device-instance can also be specified as a range.\r\n", + "Use either:\r\n" + "The object-type can be 0 to %d.\r\n" + "The object-instance can be 0 to %d.\r\n" + "or:\r\n" + "The object-name can be any string of characters.\r\n", filename_remove_path(argv[0]), - BACNET_MAX_INSTANCE); + MAX_BACNET_OBJECT_TYPE - 1, BACNET_MAX_INSTANCE); return 0; } /* decode the command line parameters */ if (argc < 3) { - Target_Object_Instance_Min = strtol(argv[1], NULL, 0); - Target_Object_Instance_Max = Target_Object_Instance_Min; - if (Target_Object_Instance_Min > BACNET_MAX_INSTANCE) { - fprintf(stderr, - "object-instance-min=%u - it must be less than %u\r\n", - Target_Object_Instance_Min, BACNET_MAX_INSTANCE + 1); - return 1; - } + Target_Object_Name = argv[1]; } else { - Target_Object_Instance_Min = strtol(argv[1], NULL, 0); - Target_Object_Instance_Max = strtol(argv[2], NULL, 0); - if (Target_Object_Instance_Min > BACNET_MAX_INSTANCE) { + Target_Object_Type = strtol(argv[1], NULL, 0); + Target_Object_Instance = strtol(argv[2], NULL, 0); + if (Target_Object_Instance > BACNET_MAX_INSTANCE) { fprintf(stderr, - "object-instance-min=%u - it must be less than %u\r\n", - Target_Object_Instance_Min, BACNET_MAX_INSTANCE + 1); + "object-instance=%u - it must be less than %u\r\n", + Target_Object_Instance, BACNET_MAX_INSTANCE + 1); return 1; } - if (Target_Object_Instance_Max > BACNET_MAX_INSTANCE) { - fprintf(stderr, - "object-instance-max=%u - it must be less than %u\r\n", - Target_Object_Instance_Max, BACNET_MAX_INSTANCE + 1); + if (Target_Object_Type > MAX_BACNET_OBJECT_TYPE) { + fprintf(stderr, "object-type=%u - it must be less than %u\r\n", + Target_Object_Type, MAX_BACNET_OBJECT_TYPE + 1); return 1; } } @@ -201,7 +180,11 @@ int main(int argc, char *argv[]) last_seconds = time(NULL); timeout_seconds = Device_APDU_Timeout() / 1000; /* send the request */ - Send_WhoIs(Target_Object_Instance_Min, Target_Object_Instance_Max); + if (argc < 3) + Send_WhoHas_Name(-1, -1, Target_Object_Name); + else + Send_WhoHas_Object(-1, -1, + Target_Object_Type, Target_Object_Instance); /* loop forever */ for (;;) { /* increment timer - exit if timed out */ @@ -221,7 +204,6 @@ int main(int argc, char *argv[]) /* keep track of time for next check */ last_seconds = current_seconds; } - print_address_cache(); return 0; } diff --git a/bacnet-stack/demo/whohas/makefile.b32 b/bacnet-stack/demo/whohas/makefile.b32 index 339441f6..1f5e2886 100644 --- a/bacnet-stack/demo/whohas/makefile.b32 +++ b/bacnet-stack/demo/whohas/makefile.b32 @@ -11,54 +11,49 @@ BORLAND_DIR_Not_Defined: @echo You must define environment variable BORLAND_DIR to compile. !endif -PRODUCT = bacwi +PRODUCT = bacwh PRODUCT_EXE = $(PRODUCT).exe # Choose the Data Link Layer to Enable DEFINES = -DBACDL_BIP=1;TSM_ENABLED=0;USE_INADDR=1 -# Directories -BACNET_PORT = ..\..\ports\win32 -BACNET_OBJECT = ..\object -BACNET_HANDLER = ..\handler -BACNET_ROOT = ..\.. SRCS = main.c \ - $(BACNET_PORT)\bip-init.c \ - $(BACNET_ROOT)\bip.c \ - $(BACNET_HANDLER)\txbuf.c \ - $(BACNET_HANDLER)\noserv.c \ - $(BACNET_HANDLER)\h_whois.c \ - $(BACNET_HANDLER)\h_iam.c \ - $(BACNET_HANDLER)\h_rp.c \ - $(BACNET_HANDLER)\s_whois.c \ - $(BACNET_OBJECT)\bacfile.c \ - $(BACNET_OBJECT)\device.c \ - $(BACNET_OBJECT)\ai.c \ - $(BACNET_OBJECT)\ao.c \ - $(BACNET_ROOT)\address.c \ - $(BACNET_ROOT)\filename.c \ - $(BACNET_ROOT)\bacdcode.c \ - $(BACNET_ROOT)\bacapp.c \ - $(BACNET_ROOT)\bacstr.c \ - $(BACNET_ROOT)\bactext.c \ - $(BACNET_ROOT)\indtext.c \ - $(BACNET_ROOT)\bigend.c \ - $(BACNET_ROOT)\whois.c \ - $(BACNET_ROOT)\iam.c \ - $(BACNET_ROOT)\whohas.c \ - $(BACNET_ROOT)\ihave.c \ - $(BACNET_ROOT)\rd.c \ - $(BACNET_ROOT)\rp.c \ - $(BACNET_ROOT)\wp.c \ - $(BACNET_ROOT)\arf.c \ - $(BACNET_ROOT)\awf.c \ - $(BACNET_ROOT)\dcc.c \ - $(BACNET_ROOT)\datalink.c \ - $(BACNET_ROOT)\abort.c \ - $(BACNET_ROOT)\reject.c \ - $(BACNET_ROOT)\bacerror.c \ - $(BACNET_ROOT)\apdu.c \ - $(BACNET_ROOT)\npdu.c + ..\..\rd.c \ + ..\..\ports\win32\bip-init.c \ + ..\..\filename.c \ + ..\..\bip.c \ + ..\..\demo\handler\txbuf.c \ + ..\..\demo\handler\noserv.c \ + ..\..\demo\handler\h_whois.c \ + ..\..\demo\handler\h_ihave.c \ + ..\..\demo\handler\h_rp.c \ + ..\..\demo\handler\s_ihave.c \ + ..\..\demo\handler\s_whohas.c \ + ..\..\bacdcode.c \ + ..\..\bacapp.c \ + ..\..\bacstr.c \ + ..\..\bactext.c \ + ..\..\indtext.c \ + ..\..\bigend.c \ + ..\..\whois.c \ + ..\..\iam.c \ + ..\..\whohas.c \ + ..\..\ihave.c \ + ..\..\rp.c \ + ..\..\wp.c \ + ..\..\arf.c \ + ..\..\awf.c \ + ..\..\dcc.c \ + ..\..\demo\object\bacfile.c \ + ..\..\demo\object\device.c \ + ..\..\demo\object\ai.c \ + ..\..\demo\object\ao.c \ + ..\..\datalink.c \ + ..\..\abort.c \ + ..\..\reject.c \ + ..\..\bacerror.c \ + ..\..\apdu.c \ + ..\..\npdu.c OBJS = $(SRCS:.c=.obj) @@ -73,7 +68,7 @@ TLIB = $(BORLAND_DIR)\bin\tlib # Include directories # CC_DIR = $(BORLAND_DIR)\BIN -INCL_DIRS = -I$(BORLAND_DIR)\include;$(BACNET_ROOT)\;$(BACNET_OBJECT)\;$(BACNET_HANDLER)\;$(BACNET_PORT)\;. +INCL_DIRS = -I$(BORLAND_DIR)\include;..\..\;..\..\demo\object\;..\..\demo\handler\;..\..\ports\win32\;. CFLAGS = $(INCL_DIRS) $(CS_FLAGS) $(DEFINES) @@ -112,10 +107,10 @@ clean : @echo Deleting obj files, $(PRODUCT_EXE) and map files. # del $(OBJS) # command too long, bummer! del *.obj - del $(BACNET_ROOT)\*.obj - del $(BACNET_HANDLER)\*.obj - del $(BACNET_OBJECT)\*.obj - del $(BACNET_PORT)\*.obj + del ..\..\*.obj + del ..\..\demo\handler\*.obj + del ..\..\demo\object\*.obj + del ..\..\ports\win32\*.obj del $(PRODUCT_EXE) del *.map del bcc32.cfg