BACnet-0.7.1协议栈源码文件集解析

1、编解码文件集(必须包含的文件)

    * abort.c - BACnet Abort service encode/decode

    * bacerror.c - BACnet Error service encode/decode

    * reject.c - BACnet Reject service encode/decode

    * arf.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.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 should be the

combination of InvokeID, DeviceID, and service). So if you tried to send a

confirmed request to a device that was taken offline, you would see the retry go

out after every apdu_timeout until apdu retries had completed. Then the

transaction would 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 对象文件

    * 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、数据链路层的数据包服务:

    * 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、数据链路层控制访问物理介质

    * 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 many 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.

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值