From 89ddbbe2a014a889d7af0b7ca1ee5b8cf10307e1 Mon Sep 17 00:00:00 2001 From: skarg Date: Thu, 18 Oct 2007 11:41:18 +0000 Subject: [PATCH] Moved iam.c back to src, and removed the separate iam directory. Since gcc and others tool linkers can remove unused functions, this turned out to be a wasted effort. --- bacnet-stack/lib/Makefile | 4 +- bacnet-stack/lib/makefile.b32 | 4 +- bacnet-stack/ports/at91sam7s/makefile | 4 +- bacnet-stack/ports/atmega168/Makefile | 3 +- bacnet-stack/src/{iam => }/iam.c | 0 bacnet-stack/src/iam/iam_send.c | 71 ----------- bacnet-stack/src/iam/iam_server.c | 68 ----------- bacnet-stack/src/iam/iam_test.c | 156 ------------------------- bacnet-stack/{src/iam => test}/iam.mak | 0 9 files changed, 4 insertions(+), 306 deletions(-) rename bacnet-stack/src/{iam => }/iam.c (100%) delete mode 100755 bacnet-stack/src/iam/iam_send.c delete mode 100755 bacnet-stack/src/iam/iam_server.c delete mode 100755 bacnet-stack/src/iam/iam_test.c rename bacnet-stack/{src/iam => test}/iam.mak (100%) diff --git a/bacnet-stack/lib/Makefile b/bacnet-stack/lib/Makefile index b33d32cc..d0b02521 100644 --- a/bacnet-stack/lib/Makefile +++ b/bacnet-stack/lib/Makefile @@ -43,9 +43,7 @@ CORE_SRC = \ $(BACNET_CORE)/awf.c \ $(BACNET_CORE)/cov.c \ $(BACNET_CORE)/dcc.c \ - $(BACNET_CORE)/iam/iam_client.c \ - $(BACNET_CORE)/iam/iam_server.c \ - $(BACNET_CORE)/iam/iam_send.c \ + $(BACNET_CORE)/iam.c \ $(BACNET_CORE)/ihave.c \ $(BACNET_CORE)/rd.c \ $(BACNET_CORE)/rp.c \ diff --git a/bacnet-stack/lib/makefile.b32 b/bacnet-stack/lib/makefile.b32 index 959da277..53a61a49 100644 --- a/bacnet-stack/lib/makefile.b32 +++ b/bacnet-stack/lib/makefile.b32 @@ -62,9 +62,7 @@ CORE2_SRC = $(BACNET_CORE)\arf.c \ $(BACNET_CORE)\awf.c \ $(BACNET_CORE)\cov.c \ $(BACNET_CORE)\dcc.c \ - $(BACNET_CORE)\iam\iam_client.c \ - $(BACNET_CORE)\iam\iam_server.c \ - $(BACNET_CORE)\iam\iam_send.c \ + $(BACNET_CORE)\iam.c \ $(BACNET_CORE)\ihave.c \ $(BACNET_CORE)\rd.c \ $(BACNET_CORE)\rp.c \ diff --git a/bacnet-stack/ports/at91sam7s/makefile b/bacnet-stack/ports/at91sam7s/makefile index dffbd869..e630a492 100644 --- a/bacnet-stack/ports/at91sam7s/makefile +++ b/bacnet-stack/ports/at91sam7s/makefile @@ -82,9 +82,7 @@ CORESRC = $(BACNET_CORE)/npdu.c \ $(BACNET_CORE)/dcc.c \ $(BACNET_CORE)/rd.c \ $(BACNET_CORE)/whois.c \ - $(BACNET_CORE)/iam/iam_client.c \ - $(BACNET_CORE)/iam/iam_server.c \ - $(BACNET_CORE)/iam/iam_send.c \ + $(BACNET_CORE)/iam.c \ $(BACNET_CORE)/version.c CSRC = $(PORTSRC) $(DEMOSRC) diff --git a/bacnet-stack/ports/atmega168/Makefile b/bacnet-stack/ports/atmega168/Makefile index fc2010cf..384e86db 100644 --- a/bacnet-stack/ports/atmega168/Makefile +++ b/bacnet-stack/ports/atmega168/Makefile @@ -42,8 +42,7 @@ CORESRC = \ $(BACNET_CORE)/bacdcode/bitstring.c \ $(BACNET_CORE)/bacdcode/octetstring.c \ $(BACNET_CORE)/bacdcode/characterstring.c \ - $(BACNET_CORE)/iam/iam_server.c \ - $(BACNET_CORE)/iam/iam_send.c \ + $(BACNET_CORE)/iam.c \ $(BACNET_CORE)/rp.c \ $(BACNET_CORE)/whois.c \ $(BACNET_CORE)/bacaddr.c \ diff --git a/bacnet-stack/src/iam/iam.c b/bacnet-stack/src/iam.c similarity index 100% rename from bacnet-stack/src/iam/iam.c rename to bacnet-stack/src/iam.c diff --git a/bacnet-stack/src/iam/iam_send.c b/bacnet-stack/src/iam/iam_send.c deleted file mode 100755 index 6fcc5262..00000000 --- a/bacnet-stack/src/iam/iam_send.c +++ /dev/null @@ -1,71 +0,0 @@ -/*####COPYRIGHTBEGIN#### - ------------------------------------------- - Copyright (C) 2005 Steve Karg - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to: - The Free Software Foundation, Inc. - 59 Temple Place - Suite 330 - Boston, MA 02111-1307, USA. - - As a special exception, if other files instantiate templates or - use macros or inline functions from this file, or you compile - this file and link it with other works to produce a work based - on this file, this file does not by itself cause the resulting - work to be covered by the GNU General Public License. However - the source code for this file must still be made available in - accordance with section (3) of the GNU General Public License. - - This exception does not invalidate any other reasons why a work - based on this file might be covered by the GNU General Public - License. - ------------------------------------------- -####COPYRIGHTEND####*/ -#include -#include "bacenum.h" -#include "bacdef.h" -#include "npdu.h" -#include "dcc.h" -#include "datalink.h" -#include "device.h" -#include "bacdcode.h" -#include "address.h" -#include "iam.h" - -int iam_send(uint8_t * buffer) -{ - int len = 0; - int pdu_len = 0; - BACNET_ADDRESS dest; - int bytes_sent = 0; - BACNET_NPDU_DATA npdu_data; - - /* if we are forbidden to send, don't send! */ - if (!dcc_communication_enabled()) - return 0; - - /* I-Am is a global broadcast */ - datalink_get_broadcast_address(&dest); - /* encode the NPDU portion of the packet */ - npdu_encode_npdu_data(&npdu_data, false, MESSAGE_PRIORITY_NORMAL); - pdu_len = npdu_encode_pdu(&buffer[0], &dest, NULL, &npdu_data); - /* encode the APDU portion of the packet */ - len = iam_encode_apdu(&buffer[pdu_len], - Device_Object_Instance_Number(), - MAX_APDU, SEGMENTATION_NONE, Device_Vendor_Identifier()); - pdu_len += len; - /* send data */ - bytes_sent = datalink_send_pdu(&dest, &npdu_data, &buffer[0], pdu_len); - - return bytes_sent; -} diff --git a/bacnet-stack/src/iam/iam_server.c b/bacnet-stack/src/iam/iam_server.c deleted file mode 100755 index ef109cab..00000000 --- a/bacnet-stack/src/iam/iam_server.c +++ /dev/null @@ -1,68 +0,0 @@ -/*####COPYRIGHTBEGIN#### - ------------------------------------------- - Copyright (C) 2005 Steve Karg - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to: - The Free Software Foundation, Inc. - 59 Temple Place - Suite 330 - Boston, MA 02111-1307, USA. - - As a special exception, if other files instantiate templates or - use macros or inline functions from this file, or you compile - this file and link it with other works to produce a work based - on this file, this file does not by itself cause the resulting - work to be covered by the GNU General Public License. However - the source code for this file must still be made available in - accordance with section (3) of the GNU General Public License. - - This exception does not invalidate any other reasons why a work - based on this file might be covered by the GNU General Public - License. - ------------------------------------------- -####COPYRIGHTEND####*/ -#include -#include "bacenum.h" -#include "bacdef.h" -#include "npdu.h" -#include "dcc.h" -#include "datalink.h" -#include "device.h" -#include "bacdcode.h" -#include "address.h" - -/* encode I-Am service */ -int iam_encode_apdu(uint8_t * apdu, - uint32_t device_id, - unsigned max_apdu, int segmentation, uint16_t vendor_id) -{ - int len = 0; /* length of each encoding */ - int apdu_len = 0; /* total length of the apdu, return value */ - - if (apdu) { - apdu[0] = PDU_TYPE_UNCONFIRMED_SERVICE_REQUEST; - apdu[1] = SERVICE_UNCONFIRMED_I_AM; /* service choice */ - apdu_len = 2; - len = encode_application_object_id(&apdu[apdu_len], - OBJECT_DEVICE, device_id); - apdu_len += len; - len = encode_application_unsigned(&apdu[apdu_len], max_apdu); - apdu_len += len; - len = encode_application_enumerated(&apdu[apdu_len], segmentation); - apdu_len += len; - len = encode_application_unsigned(&apdu[apdu_len], vendor_id); - apdu_len += len; - } - - return apdu_len; -} diff --git a/bacnet-stack/src/iam/iam_test.c b/bacnet-stack/src/iam/iam_test.c deleted file mode 100755 index 1b0c36fc..00000000 --- a/bacnet-stack/src/iam/iam_test.c +++ /dev/null @@ -1,156 +0,0 @@ -/*####COPYRIGHTBEGIN#### - ------------------------------------------- - Copyright (C) 2005 Steve Karg - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to: - The Free Software Foundation, Inc. - 59 Temple Place - Suite 330 - Boston, MA 02111-1307, USA. - - As a special exception, if other files instantiate templates or - use macros or inline functions from this file, or you compile - this file and link it with other works to produce a work based - on this file, this file does not by itself cause the resulting - work to be covered by the GNU General Public License. However - the source code for this file must still be made available in - accordance with section (3) of the GNU General Public License. - - This exception does not invalidate any other reasons why a work - based on this file might be covered by the GNU General Public - License. - ------------------------------------------- -####COPYRIGHTEND####*/ -#include -#include "bacenum.h" -#include "bacdef.h" -#include "npdu.h" -#include "dcc.h" -#include "datalink.h" -#include "device.h" -#include "bacdcode.h" -#include "address.h" -#include -#include -#include "ctest.h" - -int iam_decode_apdu(uint8_t * apdu, - uint32_t * pDevice_id, - unsigned *pMax_apdu, int *pSegmentation, uint16_t * pVendor_id) -{ - int apdu_len = 0; /* total length of the apdu, return value */ - - /* valid data? */ - if (!apdu) - return -1; - /* optional checking - most likely was already done prior to this call */ - if (apdu[0] != PDU_TYPE_UNCONFIRMED_SERVICE_REQUEST) - return -1; - if (apdu[1] != SERVICE_UNCONFIRMED_I_AM) - return -1; - apdu_len = iam_decode_service_request(&apdu[2], - pDevice_id, pMax_apdu, pSegmentation, pVendor_id); - - return apdu_len; -} - -void testIAm(Test * pTest) -{ - uint8_t apdu[480] = { 0 }; - int len = 0; - uint32_t device_id = 42; - unsigned max_apdu = 480; - int segmentation = SEGMENTATION_NONE; - uint16_t vendor_id = 42; - uint32_t test_device_id = 0; - unsigned test_max_apdu = 0; - int test_segmentation = 0; - uint16_t test_vendor_id = 0; - - len = iam_encode_apdu(&apdu[0], - device_id, max_apdu, segmentation, vendor_id); - ct_test(pTest, len != 0); - - len = iam_decode_apdu(&apdu[0], - &test_device_id, - &test_max_apdu, &test_segmentation, &test_vendor_id); - - ct_test(pTest, len != -1); - ct_test(pTest, test_device_id == device_id); - ct_test(pTest, test_vendor_id == vendor_id); - ct_test(pTest, test_max_apdu == max_apdu); - ct_test(pTest, test_segmentation == segmentation); -} - -#ifdef TEST_IAM -/* dummy function stubs */ -int datalink_send_pdu(BACNET_ADDRESS * dest, - BACNET_NPDU_DATA * npdu_data, uint8_t * pdu, unsigned pdu_len) -{ - (void) dest; - (void) npdu_data; - (void) pdu; - (void) pdu_len; - - return 0; -} - -void datalink_get_broadcast_address(BACNET_ADDRESS * dest) -{ /* destination address */ - (void) dest; -} - -uint16_t Device_Vendor_Identifier(void) -{ - return 0; -} - -uint32_t Device_Object_Instance_Number(void) -{ - return 0; -} - -void address_add_binding(uint32_t device_id, - unsigned max_apdu, BACNET_ADDRESS * src) -{ - (void) device_id; - (void) max_apdu; - (void) src; -} - -/* dummy for apdu dependency */ -void tsm_free_invoke_id(uint8_t invokeID) -{ - /* dummy stub for testing */ - (void) invokeID; -} - - -int main(void) -{ - Test *pTest; - bool rc; - - pTest = ct_create("BACnet I-Am", NULL); - /* individual tests */ - rc = ct_addTestFunction(pTest, testIAm); - assert(rc); - - ct_setStream(pTest, stdout); - ct_run(pTest); - (void) ct_report(pTest); - ct_destroy(pTest); - - return 0; -} -#endif /* TEST_IAM */ diff --git a/bacnet-stack/src/iam/iam.mak b/bacnet-stack/test/iam.mak similarity index 100% rename from bacnet-stack/src/iam/iam.mak rename to bacnet-stack/test/iam.mak