1. codec file set (mandatory files)
* Abort. C-BACnet abort service encode/decode
* Bacerror. C-BACnet error service encode/decode
* Reject. C-BACnet reject service encode/decode
* Arn. C-atomicreadfile service encode/decode
* AWF. C-atomicwritefile service encode/decode
* RP. C-BACnet readproperty service encode/decode
* Rpm. C-readpropertymultiple service encode/decode
* Iam. C-I-am service encode/decode
* Whois. C-Whois service encode/decode
* WP. C-writeproperty service encode/decode
* Wpm. C-writepropertymultiple service encode/decode
* DCC. C-devicecommunicationcontrol service encode/decode
* Ihave. C-I-have service encode/decode
* RD. C-reinitializeddevice service encode/decode
* Timesync. C-timesynchronization service encode/decode
* Whohas. C-whohas service encode/decode
* Event. C-eventnotification service encode/decode
* Get_alarm_sum.c-getalarmsummary service encode/decode
* Getevent. C-geteventinformation service encode/decode
* LSO. C-lifesafetyoperation service encode/decode
* Ptransfer. C-privatetransfer service encode/Deco
* Readrange. C-readrange service encode/decode
2. Handler)
* Demo/handler/h_alarm_ack.c-alarm ack service handler example
* Demo/handler/h_arf.c-atomicreadfile service handler example
* Demo/handler/h_arf_a.c-atomicreadfile ack service handler example
* Demo/handler/h_awf.c-atomicwritefile service handler example
* Demo/handler/h_ccov.c-confirmedcovnotification service handler example
* Demo/handler/h_cov.c-subscribecov service handler example
* Demo/handler/h_dcc.c-devicecommuncationcontrol service handler example
* Demo/handler/h_get_alarm_sum.c-getalarmsummary service handler example
* Demo/handler/h_get_event.c-geteventinformation service handler example
* Demo/handler/h_iam.c-I-am service handler example
* Demo/handler/h_ihave.c-I-have service handler example
* Demo/handler/h_lso.c-lifesafetyoperation service handler example
* Demo/handler/h_pt.c-privatetransfer service handler example
* Demo/handler/h_pt_a.c-privatetransfer ack service handler example
* Demo/handler/h_rp.c-readproperty service handler example
* Demo/handler/h_rp_a.c-readproperty ack service handler example
* Demo/handler/h_rpm.c-readpropertymultiple service handler example
* Demo/handler/h_rpm_a.c-readpropertymultiple ack service handler example
* Demo/handler/h_rr.c-readrange service handler example
* Demo/handler/h_rr_a.c-readrange ack service handler example
* Demo/handler/h_ts.c-timesynchronization service handler example
* Demo/handler/h_ucov.c-unconfirmedcov service handler example
* Demo/handler/h_upt.c-unconfirmedprivatetransfer service handler example
* Demo/handler/h_whohas.c-whohas service handler example
* Demo/handler/h_whois.c-who-is service handler example
* Demo/handler/h_wp.c-writeproperty ack service handler example
* Demo/handler/h_wpm.c-writepropertymultiple service handler example
* Demo/handler/h_noserv.c-unrecognized service handler example
2. Address binding and switching state machine
* Address. C-this module is used to handle the address binding that occurs
In BACnet. A device ID is bound to a MAC address. The normal method is using
Who-is, and binding with the data from I-am. This is needed for client
Functionality.
* TSM. C-transaction state machine handles resending messages if a timeout
Occurs, and is needed for client functionality. The transaction state machine is
Used for confirmed messages and segmentation. For confirmed messages, it
Automatically (via tsm_timer_milliseconds) handles the retries and the timeout.
It uses the invokeid as the unique key (although officially it shoshould be
Combination of invokeid, DeviceID, and service). So if you tried to send
Confirmed request to a device that was taken offline, you wocould see the retry go
Out after every apdu_timeout until APDU retries had completed. Then
Transaction wocould self-delete (free). The stack as it is written (and most
Stacks are written this way) has a limited amount of transactions, and if you
Are sending alot of confirmed data, it can be a bottleneck if they are not freed
In a timely manner.
4. Object files
* Demo/Object/AI. C-analog input object demo
* Demo/Object/AO. C-analog output object demo
* Demo/Object/Av. C-analog value object demo
* Demo/Object/bacfile. C-file object demo
* Demo/Object/device. C-device object demo
* Demo/Object/Bi. C-binary input object demo
* Demo/Object/bo. C-binary output object demo
* Demo/Object/BV. C-binary value object demo
* Demo/Object/lc. C-load control object demo
* Demo/Object/LSP. C-Life Safety Point Object demo
* Demo/Object/MSO. C-multi-step output object demo
5. Data Packet service at the data link layer:
* APDU. C-handles dispatching the services to the proper handlers
* Bacdcode. C-primitive BACnet datatype encoding and decoding
* Bacint. C-primitive BACnet integer datatype encoding and decoding
* Bacreal. C-primitive BACnet real datatype encoding and decoding
* Bacstr. C-primative BACnet string datatype encoding and decoding
* Bacapp. C-application data encoding and decoding
* Npdu. C-encoding and decoding of the npdu layer data
* Demo/handler/h_npdu.c-handles dispatching of the network message
To the APDU dispatcher.
6. data link layer controls access to physical media
* Bip. C-BACnet/IP functionality-depends on bip_init.c in Port/xx
* Dllmstp. C-MS/TP datalink layer, also in Port/xx
* MSTP. C-MS/TP master and receive State Machine
* CRC. C-computes CRC checksum for MS/TP
* Ringbuf. C-MS/TP ring buffer used for testing
* ARCNET. C-ARCNET datalink layer functionality, in Port/xx
* Ethernet. C-BACnet Ethernet datalink layer functionality, in Port/xx
There are a dozen demonstration applications in the demo directory,
Along with your demonstation objects and handlers. All the demos accept
Command line options and have been tested under Win32 and Linux.
There is a makefile in the respective demo directory for Linux and
For Borland C ++ compilers, and a master makefile at the root level
(Makefile = Linux, makefile. B32 = Borland ).
The simplest demonstration is to run demo/Server/bacserv on one PC (or
Virtual PC), and run the other client demonstration applications one
At time on another PC (or virtual PC). Monitor the network communcations
Using Wireshark protocol analyzer, or test the BACnet server using
BACnet visual test shell vts3.