From cee436eb45b485af3b3e70cec26d6ff5c013d224 Mon Sep 17 00:00:00 2001 From: skarg Date: Wed, 26 Nov 2008 13:57:38 +0000 Subject: [PATCH] Cleaned up PIC18F6720 project to enable mostly clean compile and build with latest MPLab (8.x) and MCC18 compiler (3.x). --- bacnet-stack/include/bacenum.h | 8 +- .../ports/pic18f6720/BACnet-Server.mcp | 276 +++++++++++++----- .../ports/pic18f6720/BACnet-Server.mcw | Bin 54272 -> 58368 bytes bacnet-stack/ports/pic18f6720/apdu.c | 160 ++++++++++ bacnet-stack/ports/pic18f6720/dlmstp.c | 1 + bacnet-stack/ports/pic18f6720/main.c | 27 +- 6 files changed, 366 insertions(+), 106 deletions(-) create mode 100644 bacnet-stack/ports/pic18f6720/apdu.c diff --git a/bacnet-stack/include/bacenum.h b/bacnet-stack/include/bacenum.h index 59a70005..4446be4d 100644 --- a/bacnet-stack/include/bacenum.h +++ b/bacnet-stack/include/bacenum.h @@ -710,7 +710,7 @@ typedef enum { PROP_STATE_ZONE_OCCUPANCY_STATE = 31, PROP_STATE_ACCESS_CRED_DISABLE_REASON = 32, PROP_STATE_ACCESS_CRED_DISABLE = 33, - PROP_STATE_AUTHENTICATION_STATUS = 34, + PROP_STATE_AUTHENTICATION_STATUS = 34 } BACNET_PROPERTY_STATES; typedef enum { @@ -897,15 +897,15 @@ typedef enum { OBJECT_ACCESS_USER = 35, OBJECT_ACCESS_ZONE = 36, OBJECT_AUTHENTICATION_FACTOR_INPUT = 37, + MAX_ASHRAE_OBJECT_TYPE = 38 /* Enumerated values 0-127 are reserved for definition by ASHRAE. */ /* Enumerated values 128-1023 may be used by others subject to */ /* the procedures and constraints described in Clause 23. */ - /* used for bit string loop */ - MAX_ASHRAE_OBJECT_TYPE = 38, - MAX_BACNET_OBJECT_TYPE = 1023 } BACNET_OBJECT_TYPE; +/* used for bit string loop */ +#define MAX_BACNET_OBJECT_TYPE 1023 typedef enum { SEGMENTATION_BOTH = 0, diff --git a/bacnet-stack/ports/pic18f6720/BACnet-Server.mcp b/bacnet-stack/ports/pic18f6720/BACnet-Server.mcp index 02a83061..444b2bd7 100644 --- a/bacnet-stack/ports/pic18f6720/BACnet-Server.mcp +++ b/bacnet-stack/ports/pic18f6720/BACnet-Server.mcp @@ -2,11 +2,12 @@ magic_cookie={66E99B07-E706-4689-9E80-9B2582898A13} file_version=1.0 [PATH_INFO] +BuildDirPolicy=BuildDirIsSourceDir dir_src= dir_bin= dir_tmp= dir_sin= -dir_inc=C:\code\bacnet-stack;C:\code\bacnet-stack\demo\handler;C:\code\bacnet-stack\demo\object;C:\code\bacnet-stack\ports\pic18f6720 +dir_inc=C:\code\bacnet-stack\include;C:\code\bacnet-stack\ports\pic18f6720 dir_lib=C:\mcc18\lib dir_lkr= [CAT_FILTERS] @@ -15,6 +16,134 @@ filter_inc=*.h;*.inc filter_obj=*.o filter_lib=*.lib filter_lkr=*.lkr +[CAT_SUBFOLDERS] +subfolder_src= +subfolder_inc= +subfolder_obj= +subfolder_lib= +subfolder_lkr= +[FILE_SUBFOLDERS] +file_000=. +file_001=. +file_002=. +file_003=. +file_004=. +file_005=. +file_006=. +file_007=. +file_008=. +file_009=. +file_010=. +file_011=. +file_012=. +file_013=. +file_014=. +file_015=. +file_016=. +file_017=. +file_018=. +file_019=. +file_020=. +file_021=. +file_022=. +file_023=. +file_024=. +file_025=. +file_026=. +file_027=. +file_028=. +file_029=. +file_030=. +file_031=. +file_032=. +file_033=. +file_034=. +file_035=. +file_036=. +file_037=. +file_038=. +file_039=. +file_040=. +file_041=. +file_042=. +file_043=. +file_044=. +file_045=. +file_046=. +file_047=. +file_048=. +file_049=. +file_050=. +file_051=. +file_052=. +file_053=. +file_054=. +file_055=. +file_056=. +file_057=. +file_058=. +file_059=. +[GENERATED_FILES] +file_000=no +file_001=no +file_002=no +file_003=no +file_004=no +file_005=no +file_006=no +file_007=no +file_008=no +file_009=no +file_010=no +file_011=no +file_012=no +file_013=no +file_014=no +file_015=no +file_016=no +file_017=no +file_018=no +file_019=no +file_020=no +file_021=no +file_022=no +file_023=no +file_024=no +file_025=no +file_026=no +file_027=no +file_028=no +file_029=no +file_030=no +file_031=no +file_032=no +file_033=no +file_034=no +file_035=no +file_036=no +file_037=no +file_038=no +file_039=no +file_040=no +file_041=no +file_042=no +file_043=no +file_044=no +file_045=no +file_046=no +file_047=no +file_048=no +file_049=no +file_050=no +file_051=no +file_052=no +file_053=no +file_054=no +file_055=no +file_056=no +file_057=no +file_058=no +file_059=no [OTHER_FILES] file_000=no file_001=no @@ -76,86 +205,81 @@ file_056=no file_057=no file_058=no file_059=no -file_060=no -file_061=no -file_062=no -file_063=no -file_064=no -file_065=no [FILE_INFO] -file_000=C:\code\bacnet-stack\abort.c -file_001=C:\code\bacnet-stack\apdu.c -file_002=C:\code\bacnet-stack\bacapp.c -file_003=C:\code\bacnet-stack\bacdcode.c -file_004=C:\code\bacnet-stack\bacerror.c -file_005=C:\code\bacnet-stack\bacstr.c -file_006=C:\code\bacnet-stack\crc.c -file_007=C:\code\bacnet-stack\dcc.c -file_008=C:\code\bacnet-stack\iam.c -file_009=C:\code\bacnet-stack\npdu.c -file_010=C:\code\bacnet-stack\rd.c -file_011=C:\code\bacnet-stack\reject.c -file_012=C:\code\bacnet-stack\rp.c -file_013=C:\code\bacnet-stack\whois.c -file_014=C:\code\bacnet-stack\demo\handler\h_dcc.c -file_015=C:\code\bacnet-stack\demo\handler\h_rd.c -file_016=main.c -file_017=dlmstp.c -file_018=device.c -file_019=rs485.c -file_020=isr.c -file_021=C:\code\bacnet-stack\datetime.c -file_022=C:\code\bacnet-stack\demo\handler\txbuf.c -file_023=C:\code\bacnet-stack\demo\handler\h_whois.c -file_024=mstp.c -file_025=bv.c -file_026=ai.c -file_027=bi.c -file_028=av.c -file_029=h_rp.c -file_030=h_wp.c -file_031=C:\code\bacnet-stack\wp.c -file_032=C:\code\bacnet-stack\wp.h -file_033=C:\code\bacnet-stack\abort.h -file_034=C:\code\bacnet-stack\apdu.h -file_035=C:\code\bacnet-stack\bacapp.h -file_036=C:\code\bacnet-stack\bacdcode.h -file_037=C:\code\bacnet-stack\bacdef.h -file_038=C:\code\bacnet-stack\bacenum.h -file_039=C:\code\bacnet-stack\bacerror.h -file_040=C:\code\bacnet-stack\bacstr.h -file_041=C:\code\bacnet-stack\config.h -file_042=C:\code\bacnet-stack\crc.h -file_043=C:\code\bacnet-stack\dcc.h -file_044=C:\code\bacnet-stack\dlmstp.h -file_045=C:\code\bacnet-stack\iam.h -file_046=C:\code\bacnet-stack\npdu.h -file_047=C:\code\bacnet-stack\rd.h -file_048=C:\code\bacnet-stack\reject.h -file_049=C:\code\bacnet-stack\rp.h -file_050=C:\code\bacnet-stack\whois.h -file_051=C:\code\bacnet-stack\demo\handler\client.h -file_052=C:\code\bacnet-stack\demo\handler\handlers.h -file_053=C:\code\bacnet-stack\demo\object\ai.h -file_054=C:\code\bacnet-stack\demo\object\ao.h -file_055=C:\code\bacnet-stack\demo\object\device.h -file_056=stdbool.h -file_057=stdint.h -file_058=hardware.h -file_059=rs485.h -file_060=C:\code\bacnet-stack\datetime.h -file_061=C:\code\bacnet-stack\demo\handler\txbuf.h -file_062=mstp.h -file_063=C:\code\bacnet-stack\datalink.h -file_064=C:\mcc18\h\p18f6720.h -file_065=18F6720.lkr -file_066=C:\code\bacnet-stack\demo\handler\h_npdu.c -file_067=C:\code\bacnet-stack\demo\handler\s_iam.c +file_000=C:\code\bacnet-stack\src\abort.c +file_001=C:\code\bacnet-stack\src\bacapp.c +file_002=C:\code\bacnet-stack\src\bacdcode.c +file_003=C:\code\bacnet-stack\src\bacerror.c +file_004=C:\code\bacnet-stack\src\bacstr.c +file_005=C:\code\bacnet-stack\src\crc.c +file_006=C:\code\bacnet-stack\src\dcc.c +file_007=C:\code\bacnet-stack\src\iam.c +file_008=C:\code\bacnet-stack\src\rd.c +file_009=C:\code\bacnet-stack\src\reject.c +file_010=C:\code\bacnet-stack\src\rp.c +file_011=C:\code\bacnet-stack\src\whois.c +file_012=C:\code\bacnet-stack\demo\handler\h_dcc.c +file_013=C:\code\bacnet-stack\demo\handler\h_rd.c +file_014=main.c +file_015=dlmstp.c +file_016=device.c +file_017=rs485.c +file_018=isr.c +file_019=C:\code\bacnet-stack\src\datetime.c +file_020=C:\code\bacnet-stack\demo\handler\txbuf.c +file_021=C:\code\bacnet-stack\demo\handler\h_whois.c +file_022=mstp.c +file_023=bv.c +file_024=ai.c +file_025=bi.c +file_026=av.c +file_027=h_rp.c +file_028=h_wp.c +file_029=C:\code\bacnet-stack\src\wp.c +file_030=C:\code\bacnet-stack\demo\handler\h_npdu.c +file_031=C:\code\bacnet-stack\demo\handler\s_iam.c +file_032=C:\code\bacnet-stack\src\bacreal.c +file_033=C:\code\bacnet-stack\src\bacint.c +file_034=C:\code\bacnet-stack\src\npdu.c +file_035=C:\code\bacnet-stack\src\version.c +file_036=apdu.c +file_037=C:\code\bacnet-stack\demo\handler\noserv.c +file_038=stdbool.h +file_039=stdint.h +file_040=rs485.h +file_041=mstp.h +file_042=C:\mcc18\h\p18f6720.h +file_043=C:\code\bacnet-stack\include\bits.h +file_044=C:\code\bacnet-stack\include\abort.h +file_045=C:\code\bacnet-stack\include\ai.h +file_046=C:\code\bacnet-stack\include\apdu.h +file_047=C:\code\bacnet-stack\include\bacaddr.h +file_048=C:\code\bacnet-stack\include\bacapp.h +file_049=C:\code\bacnet-stack\include\bacdcode.h +file_050=C:\code\bacnet-stack\include\bacdef.h +file_051=C:\code\bacnet-stack\include\bacenum.h +file_052=C:\code\bacnet-stack\include\bacerror.h +file_053=C:\code\bacnet-stack\include\bacint.h +file_054=C:\code\bacnet-stack\include\bacprop.h +file_055=C:\code\bacnet-stack\include\bacreal.h +file_056=C:\code\bacnet-stack\include\bacstr.h +file_057=C:\code\bacnet-stack\include\bigend.h +file_058=C:\code\bacnet-stack\include\config.h +file_059=18F6720.lkr [SUITE_INFO] suite_guid={5B7D72DD-9861-47BD-9F60-2BE967BF8416} suite_state= [TOOL_SETTINGS] TS{DD2213A8-6310-47B1-8376-9430CDFC013F}= TS{BFD27FBA-4A02-4C0E-A5E5-B812F3E7707C}=/m"$(BINDIR_)$(TARGETBASE).map" /o"$(TARGETBASE).cof" -TS{C2AF05E7-1416-4625-923D-E114DB6E2B96}=-DPRINT_ENABLED=0 -DBACDL_MSTP=1 -DTSM_ENABLED=0 -DBIG_ENDIAN=0 -mL -Ls -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- +TS{C2AF05E7-1416-4625-923D-E114DB6E2B96}=-DPRINT_ENABLED=0 -DBACDL_MSTP=1 -DBIG_ENDIAN=0 -DMAX_APDU=50 -DMAX_TSM_TRANSACTIONS=0 -mL -Ls -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- TS{ADE93A55-C7C7-4D4D-A4BA-59305F7D0391}= +[INSTRUMENTED_TRACE] +enable=0 +transport=0 +format=0 +[CUSTOM_BUILD] +Pre-Build= +Pre-BuildEnabled=1 +Post-Build= +Post-BuildEnabled=1 diff --git a/bacnet-stack/ports/pic18f6720/BACnet-Server.mcw b/bacnet-stack/ports/pic18f6720/BACnet-Server.mcw index 68e526d5e25ed0796466fc15aeeefa4150a3ff1d..31711b56591b4bc7ca58ea7c2e8f2f28aa514121 100644 GIT binary patch literal 58368 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 literal 54272 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 diff --git a/bacnet-stack/ports/pic18f6720/apdu.c b/bacnet-stack/ports/pic18f6720/apdu.c new file mode 100644 index 00000000..1ce45554 --- /dev/null +++ b/bacnet-stack/ports/pic18f6720/apdu.c @@ -0,0 +1,160 @@ +/*####COPYRIGHTBEGIN#### + ------------------------------------------- + Copyright (C) 2007 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 +#include +#include "bits.h" +#include "apdu.h" +#include "bacdef.h" +#include "bacdcode.h" +#include "bacenum.h" +#include "handlers.h" + +uint16_t apdu_timeout( + void) +{ + return 3000; +} + +uint8_t apdu_retries( + void) +{ + return 3; +} + +bool apdu_service_supported( + BACNET_SERVICES_SUPPORTED service_supported) +{ + bool status = false; + + switch (service_supported) { + case SERVICE_SUPPORTED_READ_PROPERTY: + case SERVICE_SUPPORTED_WHO_IS: + case SERVICE_CONFIRMED_REINITIALIZE_DEVICE: + case SERVICE_SUPPORTED_WRITE_PROPERTY: + case SERVICE_CONFIRMED_DEVICE_COMMUNICATION_CONTROL: + status = true; + break; + default: + break; + } + + return status; +} + +uint16_t apdu_decode_confirmed_service_request( + uint8_t * apdu, /* APDU data */ + uint16_t apdu_len, + BACNET_CONFIRMED_SERVICE_DATA * service_data, + uint8_t * service_choice, + uint8_t ** service_request, + uint16_t * service_request_len) +{ + uint16_t len = 0; /* counts where we are in PDU */ + + service_data->segmented_message = (apdu[0] & BIT3) ? true : false; + service_data->more_follows = (apdu[0] & BIT2) ? true : false; + service_data->segmented_response_accepted = + (apdu[0] & BIT1) ? true : false; + service_data->max_segs = decode_max_segs(apdu[1]); + service_data->max_resp = decode_max_apdu(apdu[1]); + service_data->invoke_id = apdu[2]; + len = 3; + if (service_data->segmented_message) { + service_data->sequence_number = apdu[len++]; + service_data->proposed_window_number = apdu[len++]; + } + *service_choice = apdu[len++]; + *service_request = &apdu[len]; + *service_request_len = apdu_len - len; + + return len; +} + +void apdu_handler( + BACNET_ADDRESS * src, + uint8_t * apdu, /* APDU data */ + uint16_t apdu_len) +{ + BACNET_CONFIRMED_SERVICE_DATA service_data = { 0 }; + uint8_t service_choice = 0; + uint8_t *service_request = NULL; + uint16_t service_request_len = 0; + uint16_t len = 0; /* counts where we are in PDU */ + + if (apdu) { + /* PDU Type */ + switch (apdu[0] & 0xF0) { + case PDU_TYPE_CONFIRMED_SERVICE_REQUEST: + len = apdu_decode_confirmed_service_request(&apdu[0], /* APDU data */ + apdu_len, &service_data, &service_choice, &service_request, + &service_request_len); + if (service_choice == SERVICE_CONFIRMED_READ_PROPERTY) { + handler_read_property(service_request, service_request_len, + src, &service_data); + } + else if (service_choice == SERVICE_CONFIRMED_WRITE_PROPERTY) { + handler_write_property(service_request, + service_request_len, src, &service_data); + } else if (service_choice == SERVICE_CONFIRMED_REINITIALIZE_DEVICE) { + handler_reinitialize_device(service_request, + service_request_len, src, &service_data); + } else if (service_choice == SERVICE_CONFIRMED_DEVICE_COMMUNICATION_CONTROL) { + handler_device_communication_control(service_request, + service_request_len, src, &service_data); + } else { + handler_unrecognized_service(service_request, + service_request_len, src, &service_data); + } + break; + case PDU_TYPE_UNCONFIRMED_SERVICE_REQUEST: + service_choice = apdu[1]; + service_request = &apdu[2]; + service_request_len = apdu_len - 2; + if (service_choice == SERVICE_UNCONFIRMED_WHO_IS) { + handler_who_is(service_request, service_request_len, src); + } + break; + case PDU_TYPE_SIMPLE_ACK: + case PDU_TYPE_COMPLEX_ACK: + case PDU_TYPE_SEGMENT_ACK: + case PDU_TYPE_ERROR: + case PDU_TYPE_REJECT: + case PDU_TYPE_ABORT: + default: + break; + } + } + return; +} diff --git a/bacnet-stack/ports/pic18f6720/dlmstp.c b/bacnet-stack/ports/pic18f6720/dlmstp.c index 084875ad..f7bdbad4 100644 --- a/bacnet-stack/ports/pic18f6720/dlmstp.c +++ b/bacnet-stack/ports/pic18f6720/dlmstp.c @@ -34,6 +34,7 @@ #include "dlmstp.h" #include "rs485.h" #include "npdu.h" +#include "handlers.h" /* Number of MS/TP Packets Rx/Tx */ uint16_t MSTP_Packets = 0; diff --git a/bacnet-stack/ports/pic18f6720/main.c b/bacnet-stack/ports/pic18f6720/main.c index e7da61da..49ad0c3d 100644 --- a/bacnet-stack/ports/pic18f6720/main.c +++ b/bacnet-stack/ports/pic18f6720/main.c @@ -36,7 +36,7 @@ #include "datalink.h" #include "dcc.h" #include "handlers.h" -#include "iam.h" +#include "client.h" #include "txbuf.h" /* chip configuration data */ @@ -92,30 +92,6 @@ volatile uint8_t Milliseconds = 0; volatile uint8_t Zero_Cross_Timeout = 0; -static void BACnet_Service_Handlers_Init( - void) -{ - /* we need to handle who-is to support dynamic device binding */ - apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_WHO_IS, handler_who_is); - /* Set the handlers for any confirmed services that we support. */ - /* We must implement read property - it's required! */ - apdu_set_confirmed_handler(SERVICE_CONFIRMED_READ_PROPERTY, - handler_read_property); - apdu_set_confirmed_handler(SERVICE_CONFIRMED_REINITIALIZE_DEVICE, - handler_reinitialize_device); - apdu_set_confirmed_handler(SERVICE_CONFIRMED_WRITE_PROPERTY, - handler_write_property); -#if 0 - apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_UTC_TIME_SYNCHRONIZATION, - handler_timesync_utc); - apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_TIME_SYNCHRONIZATION, - handler_timesync); -#endif - /* handle communication so we can shutup when asked */ - apdu_set_confirmed_handler(SERVICE_CONFIRMED_DEVICE_COMMUNICATION_CONTROL, - handler_device_communication_control); -} - void Reinitialize( void) { @@ -255,7 +231,6 @@ void Initialize_Variables( ENABLE_TIMER4_INT(); /* interrupts must be enabled before we read our inputs */ Global_Int(INT_ENABLED); - BACnet_Service_Handlers_Init(); dlmstp_init(); /* Start our time from now */ Milliseconds = 0;