Analysis of BACnet-0.7.1 protocol stack source code file set

Source: Internet
Author: User

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.

 

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.