summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-bacapp.h
diff options
context:
space:
mode:
authorJaap Keuter <jaap.keuter@xs4all.nl>2009-11-13 20:24:36 +0000
committerJaap Keuter <jaap.keuter@xs4all.nl>2009-11-13 20:24:36 +0000
commiteeb2d89d9232730d1c572ee852cd6ef75e76779d (patch)
treeb5a08387ef8ef453c6817ec16df49783e2dc4578 /epan/dissectors/packet-bacapp.h
parent943bd2c32d752295889579f05e7af592152dc8b3 (diff)
downloadwireshark-eeb2d89d9232730d1c572ee852cd6ef75e76779d.tar.gz
From Herbert Lischka:
- packet-bacapp.h eliminated and included in packet-bacapp.c - dissection of recipient-list and client-cov-increment added svn path=/trunk/; revision=30955
Diffstat (limited to 'epan/dissectors/packet-bacapp.h')
-rw-r--r--epan/dissectors/packet-bacapp.h2162
1 files changed, 0 insertions, 2162 deletions
diff --git a/epan/dissectors/packet-bacapp.h b/epan/dissectors/packet-bacapp.h
deleted file mode 100644
index e41ea96a69..0000000000
--- a/epan/dissectors/packet-bacapp.h
+++ /dev/null
@@ -1,2162 +0,0 @@
-/* packet-bacapp.h
- * Routines for BACnet (APDU) dissection
- * Copyright 2004, Herbert Lischka <lischka@kieback-peter.de>, Berlin
- *
- * $Id$
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1998 Gerald Combs
- *
- * Copied from README.developer,v 1.23
- *
- * 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.
- */
-
-#ifndef __BACAPP_H__
-#define __BACAPP_H__
-
-
-#ifndef FAULT
-#define FAULT proto_tree_add_text(subtree, tvb, offset, tvb_length(tvb) - offset, "something is going wrong here !!"); \
- offset = tvb_length(tvb);
-#endif
-
-/* BACnet PDU Types */
-#define BACAPP_TYPE_CONFIRMED_SERVICE_REQUEST 0
-#define BACAPP_TYPE_UNCONFIRMED_SERVICE_REQUEST 1
-#define BACAPP_TYPE_SIMPLE_ACK 2
-#define BACAPP_TYPE_COMPLEX_ACK 3
-#define BACAPP_TYPE_SEGMENT_ACK 4
-#define BACAPP_TYPE_ERROR 5
-#define BACAPP_TYPE_REJECT 6
-#define BACAPP_TYPE_ABORT 7
-#define MAX_BACAPP_TYPE 8
-
-#define BACAPP_SEGMENTED_REQUEST 0x08
-#define BACAPP_MORE_SEGMENTS 0x04
-#define BACAPP_SEGMENTED_RESPONSE 0x02
-#define BACAPP_SEGMENT_NAK 0x02
-#define BACAPP_SENT_BY 0x01
-
-
-/**
- * dissect_bacapp ::= CHOICE {
- * confirmed-request-PDU [0] BACnet-Confirmed-Request-PDU,
- * unconfirmed-request-PDU [1] BACnet-Unconfirmed-Request-PDU,
- * simpleACK-PDU [2] BACnet-SimpleACK-PDU,
- * complexACK-PDU [3] BACnet-ComplexACK-PDU,
- * segmentACK-PDU [4] BACnet-SegmentACK-PDU,
- * error-PDU [5] BACnet-Error-PDU,
- * reject-PDU [6] BACnet-Reject-PDU,
- * abort-PDU [7] BACnet-Abort-PDU
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- */
-void
-dissect_bacapp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
-
-/**
- * ConfirmedRequest-PDU ::= SEQUENCE {
- * pdu-type [0] Unsigned (0..15), -- 0 for this PDU Type
- * segmentedMessage [1] BOOLEAN,
- * moreFollows [2] BOOLEAN,
- * segmented-response-accepted [3] BOOLEAN,
- * reserved [4] Unsigned (0..3), -- must be set zero
- * max-segments-accepted [5] Unsigned (0..7), -- as per 20.1.2.4
- * max-APDU-length-accepted [5] Unsigned (0..15), -- as per 20.1.2.5
- * invokeID [6] Unsigned (0..255),
- * sequence-number [7] Unsigned (0..255) OPTIONAL, -- only if segmented msg
- * proposed-window-size [8] Unsigned (0..127) OPTIONAL, -- only if segmented msg
- * service-choice [9] BACnetConfirmedServiceChoice,
- * service-request [10] BACnet-Confirmed-Service-Request OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fConfirmedRequestPDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @param ack - indocates whether working on request or ack
- * @param svc - output variable to return service choice
- * @param tt - output varable to return service choice item
- * @return modified offset
- */
-static guint
-fStartConfirmed(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, guint8 ack,
- gint *svc, proto_item **tt);
-
-/**
- * Unconfirmed-Request-PDU ::= SEQUENCE {
- * pdu-type [0] Unsigned (0..15), -- 1 for this PDU type
- * reserved [1] Unsigned (0..15), -- must be set zero
- * service-choice [2] BACnetUnconfirmedServiceChoice,
- * service-request [3] BACnetUnconfirmedServiceRequest -- Context-specific tags 0..3 are NOT used in header encoding
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fUnconfirmedRequestPDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * SimpleACK-PDU ::= SEQUENCE {
- * pdu-type [0] Unsigned (0..15), -- 2 for this PDU type
- * reserved [1] Unsigned (0..15), -- must be set zero
- * invokeID [2] Unsigned (0..255),
- * service-ACK-choice [3] BACnetUnconfirmedServiceChoice -- Context-specific tags 0..3 are NOT used in header encoding
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fSimpleAckPDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ComplexACK-PDU ::= SEQUENCE {
- * pdu-type [0] Unsigned (0..15), -- 3 for this PDU Type
- * segmentedMessage [1] BOOLEAN,
- * moreFollows [2] BOOLEAN,
- * reserved [3] Unsigned (0..3), -- must be set zero
- * invokeID [4] Unsigned (0..255),
- * sequence-number [5] Unsigned (0..255) OPTIONAL, -- only if segmented msg
- * proposed-window-size [6] Unsigned (0..127) OPTIONAL, -- only if segmented msg
- * service-ACK-choice [7] BACnetConfirmedServiceChoice,
- * service-ACK [8] BACnet-Confirmed-Service-Request -- Context-specific tags 0..8 are NOT used in header encoding
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fComplexAckPDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * SegmentACK-PDU ::= SEQUENCE {
- * pdu-type [0] Unsigned (0..15), -- 4 for this PDU Type
- * reserved [1] Unsigned (0..3), -- must be set zero
- * negative-ACK [2] BOOLEAN,
- * server [3] BOOLEAN,
- * original-invokeID [4] Unsigned (0..255),
- * sequence-number [5] Unsigned (0..255),
- * actual-window-size [6] Unsigned (0..127)
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fSegmentAckPDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * Error-PDU ::= SEQUENCE {
- * pdu-type [0] Unsigned (0..15), -- 5 for this PDU Type
- * reserved [1] Unsigned (0..3), -- must be set zero
- * original-invokeID [2] Unsigned (0..255),
- * error-choice [3] BACnetConfirmedServiceChoice,
- * error [4] BACnet-Error
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fErrorPDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * Reject-PDU ::= SEQUENCE {
- * pdu-type [0] Unsigned (0..15), -- 6 for this PDU Type
- * reserved [1] Unsigned (0..3), -- must be set zero
- * original-invokeID [2] Unsigned (0..255),
- * reject-reason [3] BACnetRejectReason
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fRejectPDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * Abort-PDU ::= SEQUENCE {
- * pdu-type [0] Unsigned (0..15), -- 7 for this PDU Type
- * reserved [1] Unsigned (0..3), -- must be set zero
- * server [2] BOOLEAN,
- * original-invokeID [3] Unsigned (0..255),
- * abort-reason [4] BACnetAbortReason
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fAbortPDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * 20.2.4, adds the label with max 64Bit unsigned Integer Value to tree
- * @param tvb
- * @param tree
- * @param offset
- * @param label
- * @return modified offset
- */
-static guint
-fUnsignedTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
-
-/**
- * 20.2.5, adds the label with max 64Bit signed Integer Value to tree
- * @param tvb
- * @param tree
- * @param offset
- * @param label
- * @return modified offset
- */
-static guint
-fSignedTag (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
-
-/**
- * 20.2.8, adds the label with Octet String to tree; if lvt == 0 then lvt = restOfFrame
- * @param tvb
- * @param tree
- * @param offset
- * @param label
- * @param lvt length of String
- * @return modified offset
- */
-static guint
-fOctetString (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label, guint32 lvt);
-
-/**
- * 20.2.12, adds the label with Date Value to tree
- * @param tvb
- * @param tree
- * @param offset
- * @param label
- * @return modified offset
- */
-static guint
-fDate (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
-
-/**
- * 20.2.13, adds the label with Time Value to tree
- * @param tvb
- * @param tree
- * @param offset
- * @param label
- * @return modified offset
- */
-static guint
-fTime (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
-
-/**
- * 20.2.14, adds Object Identifier to tree
- * use BIG ENDIAN: Bits 31..22 Object Type, Bits 21..0 Instance Number
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fObjectIdentifier (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * BACnet-Confirmed-Service-Request ::= CHOICE {
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @param service_choice
- * @return offset
- */
-static guint
-fConfirmedServiceRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, gint service_choice);
-
-/**
- * BACnet-Confirmed-Service-ACK ::= CHOICE {
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @param service_choice
- * @return offset
- */
-static guint
-fConfirmedServiceAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, gint service_choice);
-
-/**
- * AcknowledgeAlarm-Request ::= SEQUENCE {
- * acknowledgingProcessIdentifier [0] Unsigned32,
- * eventObjectIdentifier [1] BACnetObjectIdentifer,
- * eventStateAcknowledge [2] BACnetEventState,
- * timeStamp [3] BACnetTimeStamp,
- * acknowledgementSource [4] Character String,
- * timeOfAcknowledgement [5] BACnetTimeStamp
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fAcknowledgeAlarmRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ConfirmedCOVNotification-Request ::= SEQUENCE {
- * subscriberProcessIdentifier [0] Unsigned32,
- * initiatingDeviceIdentifier [1] BACnetObjectIdentifer,
- * monitoredObjectIdentifier [2] BACnetObjectIdentifer,
- * timeRemaining [3] unsigned,
- * listOfValues [4] SEQUENCE OF BACnetPropertyValues
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fConfirmedCOVNotificationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ConfirmedEventNotification-Request ::= SEQUENCE {
- * ProcessIdentifier [0] Unsigned32,
- * initiatingDeviceIdentifier [1] BACnetObjectIdentifer,
- * eventObjectIdentifier [2] BACnetObjectIdentifer,
- * timeStamp [3] BACnetTimeStamp,
- * notificationClass [4] unsigned,
- * priority [5] unsigned8,
- * eventType [6] BACnetEventType,
- * messageText [7] CharacterString OPTIONAL,
- * notifyType [8] BACnetNotifyType,
- * ackRequired [9] BOOLEAN OPTIONAL,
- * fromState [10] BACnetEventState OPTIONAL,
- * toState [11] BACnetEventState,
- * eventValues [12] BACnetNotificationParameters OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fConfirmedEventNotificationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * GetAlarmSummary-ACK ::= SEQUENCE OF SEQUENCE {
- * objectIdentifier BACnetObjectIdentifer,
- * alarmState BACnetEventState,
- * acknowledgedTransitions BACnetEventTransitionBits
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fGetAlarmSummaryAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * GetEnrollmentSummary-Request ::= SEQUENCE {
- * acknowledgmentFilter [0] ENUMERATED {
- * all (0),
- * acked (1),
- * not-acked (2)
- * },
- * enrollmentFilter [1] BACnetRecipientProcess OPTIONAL,
- * eventStateFilter [2] ENUMERATED {
- * offnormal (0),
- * fault (1),
- * normal (2),
- * all (3),
- * active (4)
- * },
- * eventTypeFilter [3] BACnetEventType OPTIONAL,
- * priorityFilter [4] SEQUENCE {
- * minPriority [0] Unsigned8,
- * maxPriority [1] Unsigned8
- * } OPTIONAL,
- * notificationClassFilter [5] Unsigned OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fGetEnrollmentSummaryRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * GetEnrollmentSummary-ACK ::= SEQUENCE OF SEQUENCE {
- * objectIdentifier BACnetObjectIdentifer,
- * eventType BACnetEventType,
- * eventState BACnetEventState,
- * priority Unsigned8,
- * notificationClass Unsigned OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fGetEnrollmentSummaryAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * GetEventInformation-Request ::= SEQUENCE {
- * lastReceivedObjectIdentifier [0] BACnetObjectIdentifer
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fGetEventInformationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * GetEventInformation-ACK ::= SEQUENCE {
- * listOfEventSummaries [0] listOfEventSummaries,
- * moreEvents [1] BOOLEAN
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fGetEventInformationACK (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * LifeSafetyOperation-Request ::= SEQUENCE {
- * requestingProcessIdentifier [0] Unsigned32
- * requestingSource [1] CharacterString
- * request [2] BACnetLifeSafetyOperation
- * objectIdentifier [3] BACnetObjectIdentifier OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fLifeSafetyOperationRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label);
-
-/**
- * SubscribeCOV-Request ::= SEQUENCE {
- * subscriberProcessIdentifier [0] Unsigned32
- * monitoredObjectIdentifier [1] BACnetObjectIdentifier
- * issueConfirmedNotifications [2] BOOLEAN OPTIONAL
- * lifetime [3] Unsigned OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @param label
- * @param src
- * @return modified offset
- */
-static guint
-fSubscribeCOVRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * SubscribeCOVProperty-Request ::= SEQUENCE {
- * subscriberProcessIdentifier [0] Unsigned32
- * monitoredObjectIdentifier [1] BACnetObjectIdentifier
- * issueConfirmedNotifications [2] BOOLEAN OPTIONAL
- * lifetime [3] Unsigned OPTIONAL
- * monitoredPropertyIdentifier [4] BACnetPropertyReference OPTIONAL
- * covIncrement [5] Unsigned OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fSubscribeCOVPropertyRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * AtomicReadFile-Request ::= SEQUENCE {
- * fileIdentifier BACnetObjectIdentifier,
- * accessMethod CHOICE {
- * streamAccess [0] SEQUENCE {
- * fileStartPosition INTEGER,
- * requestedOctetCount Unsigned
- * },
- * recordAccess [1] SEQUENCE {
- * fileStartRecord INTEGER,
- * requestedRecordCount Unsigned
- * }
- * }
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fAtomicReadFileRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * AtomicWriteFile-ACK ::= SEQUENCE {
- * endOfFile BOOLEAN,
- * accessMethod CHOICE {
- * streamAccess [0] SEQUENCE {
- * fileStartPosition INTEGER,
- * fileData OCTET STRING
- * },
- * recordAccess [1] SEQUENCE {
- * fileStartRecord INTEGER,
- * returnedRecordCount Unsigned,
- * fileRecordData SEQUENCE OF OCTET STRING
- * }
- * }
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fAtomicReadFileAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * AtomicWriteFile-Request ::= SEQUENCE {
- * fileIdentifier BACnetObjectIdentifier,
- * accessMethod CHOICE {
- * streamAccess [0] SEQUENCE {
- * fileStartPosition INTEGER,
- * fileData OCTET STRING
- * },
- * recordAccess [1] SEQUENCE {
- * fileStartRecord INTEGER,
- * recordCount Unsigned,
- * fileRecordData SEQUENCE OF OCTET STRING
- * }
- * }
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fAtomicWriteFileRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * AtomicWriteFile-ACK ::= SEQUENCE {
- * fileStartPosition [0] INTEGER,
- * fileStartRecord [1] INTEGER,
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fAtomicWriteFileAck (tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-/**
- * AddListElement-Request ::= SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * propertyIdentifier [1] BACnetPropertyIdentifier,
- * propertyArrayIndex [2] Unsigned OPTIONAL, -- used only with array datatype
- * listOfElements [3] ABSTRACT-SYNTAX.&Type
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fAddListElementRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * CreateObject-Request ::= SEQUENCE {
- * objectSpecifier [0] ObjectSpecifier,
- * listOfInitialValues [1] SEQUENCE OF BACnetPropertyValue OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fCreateObjectRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree, guint offset);
-
-/**
- * CreateObject-Request ::= BACnetObjectIdentifier
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fCreateObjectAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * DeleteObject-Request ::= SEQUENCE {
- * ObjectIdentifier BACnetObjectIdentifer
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fDeleteObjectRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ReadProperty-Request ::= SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * propertyIdentifier [1] BACnetPropertyIdentifier,
- * propertyArrayIndex [2] Unsigned OPTIONAL, -- used only with array datatype
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fReadPropertyRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ReadProperty-ACK ::= SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * propertyIdentifier [1] BACnetPropertyIdentifier,
- * propertyArrayIndex [2] Unsigned OPTIONAL, -- used only with array datatype
- * propertyValue [3] ABSTRACT-SYNTAX.&Type
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fReadPropertyAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ReadPropertyConditional-Request ::= SEQUENCE {
- * objectSelectionCriteria [0] objectSelectionCriteria,
- * listOfPropertyReferences [1] SEQUENCE OF BACnetPropertyReference OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fReadPropertyConditionalRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree, guint offset);
-
-/**
- * ReadPropertyConditional-ACK ::= SEQUENCE {
- * listOfPReadAccessResults SEQUENCE OF ReadAccessResult OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fReadPropertyConditionalAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ReadPropertyMultiple-Request ::= SEQUENCE {
- * listOfReadAccessSpecs SEQUENCE OF ReadAccessSpecification
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return offset modified
- */
-static guint
-fReadPropertyMultipleRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree, guint offset);
-
-/**
- * ReadPropertyMultiple-Ack ::= SEQUENCE {
- * listOfReadAccessResults SEQUENCE OF ReadAccessResult
- * }
- * @param tvb
- * @parma pinfo
- * @param tree
- * @param offset
- * @return offset modified
- */
-static guint
-fReadPropertyMultipleAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ReadRange-Request ::= SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * propertyIdentifier [1] BACnetPropertyIdentifier,
- * propertyArrayIndex [2] Unsigned OPTIONAL, -- used only with array datatype
- * range CHOICE {
- * byPosition [3] SEQUENCE {
- * referencedIndex Unsigned,
- * count INTEGER
- * },
- * byTime [4] SEQUENCE {
- * referenceTime BACnetDateTime,
- * count INTEGER
- * },
- * timeRange [5] SEQUENCE {
- * beginningTime BACnetDateTime,
- * endingTime BACnetDateTime
- * },
- * } OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fReadRangeRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ReadRange-ACK ::= SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * propertyIdentifier [1] BACnetPropertyIdentifier,
- * propertyArrayIndex [2] Unsigned OPTIONAL, -- used only with array datatype
- * resultFlags [3] BACnetResultFlags,
- * itemCount [4] Unsigned,
- * itemData [5] SEQUENCE OF ABSTRACT-SYNTAX.&Type
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fReadRangeAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * RemoveListElement-Request ::= SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * propertyIdentifier [1] BACnetPropertyIdentifier,
- * propertyArrayIndex [2] Unsigned OPTIONAL, -- used only with array datatype
- * listOfElements [3] ABSTRACT-SYNTAX.&Type
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fRemoveListElementRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * WriteProperty-Request ::= SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * propertyIdentifier [1] BACnetPropertyIdentifier,
- * propertyArrayIndex [2] Unsigned OPTIONAL, -- used only with array datatype
- * propertyValue [3] ABSTRACT-SYNTAX.&Type
- * priority [4] Unsigned8 (1..16) OPTIONAL --used only when property is commandable
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fWritePropertyRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * WritePropertyMultiple-Request ::= SEQUENCE {
- * listOfWriteAccessSpecifications SEQUENCE OF WriteAccessSpecification
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fWritePropertyMultipleRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * DeviceCommunicationControl-Request ::= SEQUENCE {
- * timeDuration [0] Unsigned16 OPTIONAL,
- * enable-disable [1] ENUMERATED {
- * enable (0),
- * disable (1)
- * },
- * password [2] CharacterString (SIZE(1..20)) OPTIONAL
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fDeviceCommunicationControlRequest(tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-/**
- * ConfirmedPrivateTransfer-Request ::= SEQUENCE {
- * vendorID [0] Unsigned,
- * serviceNumber [1] Unsigned,
- * serviceParameters [2] ABSTRACT-SYNTAX.&Type OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fConfirmedPrivateTransferRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ConfirmedPrivateTransfer-ACK ::= SEQUENCE {
- * vendorID [0] Unsigned,
- * serviceNumber [1] Unsigned,
- * resultBlock [2] ABSTRACT-SYNTAX.&Type OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fConfirmedPrivateTransferAck(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ConfirmedTextMessage-Request ::= SEQUENCE {
- * textMessageSourceDevice [0] BACnetObjectIdentifier,
- * messageClass [1] CHOICE {
- * numeric [0] Unsigned,
- * character [1] CharacterString
- * } OPTIONAL,
- * messagePriority [2] ENUMERATED {
- * normal (0),
- * urgent (1)
- * },
- * message [3] CharacterString
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fConfirmedTextMessageRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ReinitializeDevice-Request ::= SEQUENCE {
- * reinitializedStateOfDevice [0] ENUMERATED {
- * coldstart (0),
- * warmstart (1),
- * startbackup (2),
- * endbackup (3),
- * startrestore (4),
- * endrestore (5),
- * abortrestor (6)
- * },
- * password [1] CharacterString (SIZE(1..20)) OPTIONAL
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fReinitializeDeviceRequest(tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-/**
- * VTOpen-Request ::= SEQUENCE {
- * vtClass BACnetVTClass,
- * localVTSessionIdentifier Unsigned8
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fVtOpenRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * VTOpen-ACK ::= SEQUENCE {
- * remoteVTSessionIdentifier Unsigned8
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fVtOpenAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * VTClose-Request ::= SEQUENCE {
- * listOfRemoteVTSessionIdentifiers SEQUENCE OF Unsigned8
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fVtCloseRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * VTData-Request ::= SEQUENCE {
- * vtSessionIdentifier Unsigned8,
- * vtNewData OCTET STRING,
- * vtDataFlag Unsigned (0..1)
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fVtDataRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * VTData-ACK ::= SEQUENCE {
- * allNewDataAccepted [0] BOOLEAN,
- * acceptedOctetCount [1] Unsigned OPTIONAL -- present only if allNewDataAccepted = FALSE
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fVtDataAck (tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-/**
- * Authenticate-Request ::= SEQUENCE {
- * pseudoRandomNumber [0] Unsigned32,
- * excpectedInvokeID [1] Unsigned8 OPTIONAL,
- * operatorName [2] CharacterString OPTIONAL,
- * operatorPassword [3] CharacterString (SIZE(1..20)) OPTIONAL,
- * startEncypheredSession [4] BOOLEAN OPTIONAL
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fAuthenticateRequest (tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-/**
- * Authenticate-ACK ::= SEQUENCE {
- * modifiedRandomNumber Unsigned32,
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fAuthenticateAck (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * RequestKey-Request ::= SEQUENCE {
- * requestingDeviceIdentifier BACnetObjectIdentifier,
- * requestingDeviceAddress BACnetAddress,
- * remoteDeviceIdentifier BACnetObjectIdentifier,
- * remoteDeviceAddress BACnetAddress
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fRequestKeyRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * Unconfirmed-Service-Request ::= CHOICE {
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @param service_choice
- * @return modified offset
- */
-static guint
-fUnconfirmedServiceRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, gint service_choice);
-
-/**
- * UnconfirmedCOVNotification-Request ::= SEQUENCE {
- * subscriberProcessIdentifier [0] Unsigned32,
- * initiatingDeviceIdentifier [1] BACnetObjectIdentifer,
- * monitoredObjectIdentifier [2] BACnetObjectIdentifer,
- * timeRemaining [3] unsigned,
- * listOfValues [4] SEQUENCE OF BACnetPropertyValues
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fUnconfirmedCOVNotificationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * UnconfirmedEventNotification-Request ::= SEQUENCE {
- * ProcessIdentifier [0] Unsigned32,
- * initiatingDeviceIdentifier [1] BACnetObjectIdentifer,
- * eventObjectIdentifier [2] BACnetObjectIdentifer,
- * timeStamp [3] BACnetTimeStamp,
- * notificationClass [4] unsigned,
- * priority [5] unsigned8,
- * eventType [6] BACnetEventType,
- * messageText [7] CharacterString OPTIONAL,
- * notifyType [8] BACnetNotifyType,
- * ackRequired [9] BOOLEAN OPTIONAL,
- * fromState [10] BACnetEventState OPTIONAL,
- * toState [11] BACnetEventState,
- * eventValues [12] BACnetNotificationParameters OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fUnconfirmedEventNotificationRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * I-Am-Request ::= SEQUENCE {
- * aAmDeviceIdentifier BACnetObjectIdentifier,
- * maxAPDULengthAccepted Unsigned,
- * segmentationSupported BACnetSegmentation,
- * vendorID Unsigned
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fIAmRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-
-/**
- * I-Have-Request ::= SEQUENCE {
- * deviceIdentifier BACnetObjectIdentifier,
- * objectIdentifier BACnetObjectIdentifier,
- * objectName CharacterString
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fIHaveRequest (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * UnconfirmedPrivateTransfer-Request ::= SEQUENCE {
- * vendorID [0] Unsigned,
- * serviceNumber [1] Unsigned,
- * serviceParameters [2] ABSTRACT-SYNTAX.&Type OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fUnconfirmedPrivateTransferRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * UnconfirmedTextMessage-Request ::= SEQUENCE {
- * textMessageSourceDevice [0] BACnetObjectIdentifier,
- * messageClass [1] CHOICE {
- * numeric [0] Unsigned,
- * character [1] CharacterString
- * } OPTIONAL,
- * messagePriority [2] ENUMERATED {
- * normal (0),
- * urgent (1)
- * },
- * message [3] CharacterString
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fUnconfirmedTextMessageRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * TimeSynchronization-Request ::= SEQUENCE {
- * BACnetDateTime
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fTimeSynchronizationRequest (tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-/**
- * UTCTimeSynchronization-Request ::= SEQUENCE {
- * BACnetDateTime
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fUTCTimeSynchronizationRequest (tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-/**
- * Who-Has-Request ::= SEQUENCE {
- * limits SEQUENCE {
- * deviceInstanceRangeLowLimit [0] Unsigned (0..4194303),
- * deviceInstanceRangeHighLimit [1] Unsigned (0..4194303)
- * } OPTIONAL,
- * object CHOICE {
- * objectIdentifier [2] BACnetObjectIdentifier,
- * objectName [3] CharacterString
- * }
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fWhoHas (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * Who-Is-Request ::= SEQUENCE {
- * deviceInstanceRangeLowLimit [0] Unsigned (0..4194303) OPTIONAL, -- must be used as a pair, see 16.9,
- * deviceInstanceRangeHighLimit [0] Unsigned (0..4194303) OPTIONAL, -- must be used as a pair, see 16.9,
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fWhoIsRequest (tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-/**
- * BACnet-Error ::= CHOICE {
- * addListElement [8] ChangeList-Error,
- * removeListElement [9] ChangeList-Error,
- * writePropertyMultiple [16] WritePropertyMultiple-Error,
- * confirmedPrivatTransfer [18] ConfirmedPrivateTransfer-Error,
- * vtClose [22] VTClose-Error,
- * readRange [26] ObjectAccessService-Error
- * [default] Error
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @param service
- * @return modified offset
- */
-static guint
-fBACnetError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, guint service);
-
-/**
- * Dissect a BACnetError in a context tag
- *
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint fContextTaggedError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ChangeList-Error ::= SEQUENCE {
- * errorType [0] Error,
- * firstFailedElementNumber [1] Unsigned
- * }
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fChangeListError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * CreateObject-Error ::= SEQUENCE {
- * errorType [0] Error,
- * firstFailedElementNumber [1] Unsigned
- * }
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fCreateObjectError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ConfirmedPrivateTransfer-Error ::= SEQUENCE {
- * errorType [0] Error,
- * vendorID [1] Unsigned,
- * serviceNumber [2] Unsigned,
- * errorParameters [3] ABSTRACT-SYNTAX.&Type OPTIONAL
- * }
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fConfirmedPrivateTransferError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * WritePropertyMultiple-Error ::= SEQUENCE {
- * errorType [0] Error,
- * firstFailedWriteAttempt [1] Unsigned
- * }
- * }
- * @param tvb
- * @pram pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fWritePropertyMultipleError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * VTClose-Error ::= SEQUENCE {
- * errorType [0] Error,
- * listOfVTSessionIdentifiers [1] SEQUENCE OF Unsigned8 OPTIONAL
- * }
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fVTCloseError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * BACnet Application Types chapter 20.2.1
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @param label
- * @return modified offset
- */
-static guint
-fApplicationTypes (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label);
-
-/**
- * BACnetActionCommand ::= SEQUENCE {
- * deviceIdentifier [0] BACnetObjectIdentifier OPTIONAL,
- * objectIdentifier [1] BACnetObjectIdentifier,
- * propertyIdentifier [2] BACnetPropertyIdentifier,
- * propertyArrayIndex [3] Unsigned OPTIONAL, -- used only with array datatype
- * propertyValue [4] ABSTRACT-SYNTAX.&Type,
- * priority [5] Unsigned (1..16) OPTIONAL, -- used only when property is commandable
- * postDelay [6] Unsigned OPTIONAL,
- * quitOnFailure [7] BOOLEAN,
- * writeSuccessful [8] BOOLEAN
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @param matching tag number
- * @return modified offset
- */
-static guint
-fActionCommand (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, guint8 tag_match);
-
-/**
- * BACnetActionList ::= SEQUENCE {
- * action [0] SEQUENCE of BACnetActionCommand
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fActionList (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/** BACnetAddress ::= SEQUENCE {
- * network-number Unsigned16, -- A value 0 indicates the local network
- * mac-address OCTET STRING -- A string of length 0 indicates a broadcast
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fAddress (tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-/**
- * BACnetAddressBinding ::= SEQUENCE {
- * deviceObjectID BACnetObjectIdentifier
- * deviceAddress BacnetAddress
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fAddressBinding (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * BACnetCalendaryEntry ::= CHOICE {
- * date [0] Date,
- * dateRange [1] BACnetDateRange,
- * weekNDay [2] BacnetWeekNday
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fCalendaryEntry (tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-#if 0
-/**
- * BACnetClientCOV ::= CHOICE {
- * real-increment REAL,
- * default-increment NULL
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fClientCOV (tvbuff_t *tvb, proto_tree *tree, guint offset);
-#endif
-
-/**
- * BACnetDailySchedule ::= SEQUENCE {
- * day-schedule [0] SENQUENCE OF BACnetTimeValue
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fDailySchedule (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * BACnetWeeklySchedule ::= SEQUENCE {
- * week-schedule SENQUENCE SIZE (7) OF BACnetDailySchedule
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fWeeklySchedule (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * BACnetDateRange ::= SEQUENCE {
- * StartDate Date,
- * EndDate Date
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fDateRange (tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-/**
- * BACnetDateTime ::= SEQUENCE {
- * date Date,
- * time Time
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @param label
- * @return modified offset
- */
-static guint
-fDateTime (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
-
-#if 0
-/**
- * BACnetDestination ::= SEQUENCE {
- * validDays BACnetDaysOfWeek,
- * fromTime Time,
- * toTime Time,
- * recipient BACnetRecipient,
- * processIdentifier Unsigned32,
- * issueConfirmedNotifications BOOLEAN,
- * transitions BACnetEventTransitionBits
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fDestination (tvbuff_t *tvb, proto_tree *tree, guint offset);
-#endif
-
-
-/**
- * BACnetDeviceObjectPropertyReference ::= SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * propertyIdentifier [1] BACnetPropertyIdentifier,
- * propertyArrayIndex [2] Unsigend OPTIONAL,
- * deviceIdentifier [3] BACnetObjectIdentifier OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fDeviceObjectPropertyReference (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * BACnetDeviceObjectReference ::= SEQUENCE {
- * deviceIdentifier [0] BACnetObjectIdentifier OPTIONAL,
- * objectIdentifier [1] BACnetObjectIdentifier
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fDeviceObjectReference (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-#if 0
-/**
- * BACnetEventParameter ::= CHOICE {
- * change-of-bitstring [0] SEQUENCE {
- * time-delay [0] Unsigned,
- * bitmask [1] BIT STRING,
- * list-of-bitstring-values [2] SEQUENCE OF BIT STRING
- * },
- * change-of-state [1] SEQUENCE {
- * time-delay [0] Unsigned,
- * list-of-values [1] SEQUENCE OF BACnetPropertyStates
- * },
- * change-of-value [2] SEQUENCE {
- * time-delay [0] Unsigned,
- * cov-criteria [1] CHOICE {
- * bitmask [0] BIT STRING,
- * referenced-property-increment [1] REAL
- * }
- * },
- * command-failure [3] SEQUENCE {
- * time-delay [0] Unsigned,
- * feedback-property-reference [1] BACnetDeviceObjectPropertyReference
- * },
- * floating-limit [4] SEQUENCE {
- * time-delay [0] Unsigned,
- * setpoint-reference [1] BACnetDeviceObjectPropertyReference,
- * low-diff-limit [2] REAL,
- * high-diff-limit [3] REAL,
- * deadband [4] REAL
- * },
- * out-of-range [5] SEQUENCE {
- * time-delay [0] Unsigned,
- * low-limit [1] REAL,
- * high-limit [2] REAL,
- * deadband [3] REAL
- * },
- * buffer-ready [7] SEQUENCE {
- * notification-threshold [0] Unsigned,
- * previous-notification-count [1] Unsigned32
- * }
- * change-of-life-safety [8] SEQUENCE {
- * time-delay [0] Unsigned,
- * list-of-life-safety-alarm-values [1] SEQUENCE OF BACnetLifeSafetyState,
- * list-of-alarm-values [2] SEQUENCE OF BACnetLifeSafetyState,
- * mode-property-reference [3] BACnetDeviceObjectPropertyReference
- * }
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fEventParameter (tvbuff_t *tvb, proto_tree *tree, guint offset);
-#endif
-
-
-
-/**
- * BACnetLogRecord ::= SEQUENCE {
- * timestamp [0] BACnetDateTime,
- * logDatum [1] CHOICE {
- * log-status [0] BACnetLogStatus,
- * boolean-value [1] BOOLEAN,
- * real-value [2] REAL,
- * enum-value [3] ENUMERATED, -- Optionally limited to 32 bits
- * unsigned-value [4] Unsigned, -- Optionally limited to 32 bits
- * signed-value [5] INTEGER, -- Optionally limited to 32 bits
- * bitstring-value [6] BIT STRING,-- Optionally limited to 32 bits
- * null-value [7] NULL,
- * failure [8] Error,
- * time-change [9] REAL,
- * any-value [10] ABSTRACT-SYNTAX.&Type -- Optional
- * }
- * statusFlags [2] BACnetStatusFlags OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fLogRecord (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-
-/**
- * BACnetNotificationParameters ::= CHOICE {
- * change-of-bitstring [0] SEQUENCE {
- * referenced-bitstring [0] BIT STRING,
- * status-flags [1] BACnetStatusFlags
- * },
- * change-of-state [1] SEQUENCE {
- * new-state [0] BACnetPropertyStatus,
- * status-flags [1] BACnetStatusFlags
- * },
- * change-of-value [2] SEQUENCE {
- * new-value [0] CHOICE {
- * changed-bits [0] BIT STRING,
- * changed-value [1] REAL
- * },
- * status-flags [1] BACnetStatusFlags
- * },
- * command-failure [3] SEQUENCE {
- * command-value [0] ABSTRACT-SYNTAX.&Type, -- depends on ref property
- * status-flags [1] BACnetStatusFlags
- * feedback-value [2] ABSTRACT-SYNTAX.&Type -- depends on ref property
- * },
- * floating-limit [4] SEQUENCE {
- * reference-value [0] REAL,
- * status-flags [1] BACnetStatusFlags
- * setpoint-value [2] REAL,
- * error-limit [3] REAL
- * },
- * out-of-range [5] SEQUENCE {
- * exceeding-value [0] REAL,
- * status-flags [1] BACnetStatusFlags
- * deadband [2] REAL,
- * exceeded-limit [0] REAL
- * },
- * complex-event-type [6] SEQUENCE OF BACnetPropertyValue,
- * buffer-ready [7] SEQUENCE {
- * buffer-device [0] BACnetObjectIdentifier,
- * buffer-object [1] BACnetObjectIdentifier
- * previous-notification [2] BACnetDateTime,
- * current-notification [3] BACnetDateTime
- * },
- * change-of-life-safety [8] SEQUENCE {
- * new-state [0] BACnetLifeSafetyState,
- * new-mode [1] BACnetLifeSafetyState
- * status-flags [2] BACnetStatusFlags,
- * operation-expected [3] BACnetLifeSafetyOperation
- * }
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fNotificationParameters (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * BACnetObjectPropertyReference ::= SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * propertyIdentifier [1] BACnetPropertyIdentifier,
- * propertyArrayIndex [2] Unsigned OPTIONAL, -- used only with array datatype
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fBACnetObjectPropertyReference (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-#if 0
-/**
- * BACnetObjectPropertyValue ::= SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * propertyIdentifier [1] BACnetPropertyIdentifier,
- * propertyArrayIndex [2] Unsigned OPTIONAL, -- used only with array datatype
- * -- if omitted with an array the entire array is referenced
- * value [3] ABSTRACT-SYNTAX.&Type, --any datatype appropriate for the specified property
- * priority [4] Unsigned (1..16) OPTIONAL
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fObjectPropertyValue (tvbuff_t *tvb, proto_tree *tree, guint offset);
-#endif
-
-/**
- * BACnetPriorityArray ::= SEQUENCE SIZE (16) OF BACnetPriorityValue
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fPriorityArray (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-static guint
-fPropertyReference (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, guint8 tagoffset, guint8 list);
-
-/**
- * BACnetPropertyReference ::= SEQUENCE {
- * propertyIdentifier [0] BACnetPropertyIdentifier,
- * propertyArrayIndex [1] Unsigned OPTIONAL, -- used only with array datatype
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fBACnetPropertyReference (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, guint8 list);
-
-/* static guint
-fBACnetObjectPropertyReference (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset); */
-
-static guint
-fLOPR (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-static guint
-fRestartReason (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * BACnetPropertyValue ::= SEQUENCE {
- * PropertyIdentifier [0] BACnetPropertyIdentifier,
- * propertyArrayIndex [1] Unsigned OPTIONAL, -- used only with array datatypes
- * -- if omitted with an array the entire array is referenced
- * value [2] ABSTRACT-SYNTAX.&Type, -- any datatype appropriate for the specified property
- * priority [3] Unsigned (1..16) OPTIONAL -- used only when property is commandable
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fBACnetPropertyValue (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-static guint
-fPropertyValue (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, guint8 tagoffset);
-
-/**
- * BACnet Application PDUs chapter 21
- * BACnetRecipient::= CHOICE {
- * device [0] BACnetObjectIdentifier
- * address [1] BACnetAddress
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fRecipient (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * BACnet Application PDUs chapter 21
- * BACnetRecipientProcess::= SEQUENCE {
- * recipient [0] BACnetRecipient
- * processID [1] Unsigned32
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fRecipientProcess (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-#if 0
-/**
- * BACnetSessionKey ::= SEQUENCE {
- * sessionKey OCTET STRING (SIZE(8)), -- 56 bits for key, 8 bits for checksum
- * peerAddress BACnetAddress
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- * @todo check if checksum is displayed correctly
- */
-static guint
-fSessionKey (tvbuff_t *tvb, proto_tree *tree, guint offset);
-#endif
-
-#if 0
-/**
- * BACnetSetpointReference ::= SEQUENCE {
- * sessionKey [0] BACnetObjectPropertyReference OPTIONAL
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fSetpointReference (tvbuff_t *tvb, proto_tree *tree, guint offset);
-#endif
-
-/**
- * BACnetSpecialEvent ::= SEQUENCE {
- * period CHOICE {
- * calendarEntry [0] BACnetCalendarEntry,
- * calendarRefernce [1] BACnetObjectIdentifier
- * },
- * listOfTimeValues [2] SEQUENCE OF BACnetTimeValue,
- * eventPriority [3] Unsigned (1..16)
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fSpecialEvent (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * BACnetTimeStamp ::= CHOICE {
- * time [0] Time,
- * sequenceNumber [1] Unsigned (0..65535),
- * dateTime [2] BACnetDateTime
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @param label
- * @return modified offset
- */
-static guint
-fTimeStamp (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
-
-/**
- * BACnetTimeValue ::= SEQUENCE {
- * time Time,
- * value ABSTRACT-SYNTAX.&Type -- any primitive datatype, complex types cannot be decoded
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fTimeValue (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-#if 0
-/**
- * BACnetVTSession ::= SEQUENCE {
- * local-vtSessionID Unsigned8,
- * remote-vtSessionID Unsigned8,
- * remote-vtAddress BACnetAddress
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fVTSession (tvbuff_t *tvb, proto_tree *tree, guint offset);
-#endif
-
-/**
- * BACnetWeekNDay ::= OCTET STRING (SIZE (3))
- * -- first octet month (1..12) January = 1, X'FF' = any month
- * -- second octet weekOfMonth where: 1 = days numbered 1-7
- * -- 2 = days numbered 8-14
- * -- 3 = days numbered 15-21
- * -- 4 = days numbered 22-28
- * -- 5 = days numbered 29-31
- * -- 6 = last 7 days of this month
- * -- X'FF' = any week of this month
- * -- third octet dayOfWeek (1..7) where 1 = Monday
- * -- 7 = Sunday
- * -- X'FF' = any day of week
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fWeekNDay (tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-/**
- * ReadAccessResult ::= SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * listOfResults [1] SEQUENCE OF SEQUENCE {
- * propertyIdentifier [2] BACnetPropertyIdentifier,
- * propertyArrayIndex [3] Unsigned OPTIONAL, -- used only with array datatype if omitted with an array the entire array is referenced
- * readResult CHOICE {
- * propertyValue [4] ABSTRACT-SYNTAX.&Type,
- * propertyAccessError [5] Error
- * }
- * } OPTIONAL
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fReadAccessResult (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * ReadAccessSpecification ::= SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * listOfPropertyReferences [1] SEQUENCE OF BACnetPropertyReference
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fReadAccessSpecification (tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree, guint offset);
-
-/**
- * WriteAccessSpecification ::= SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * listOfProperty [1] SEQUENCE OF BACnetPropertyValue
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fWriteAccessSpecification (tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree, guint offset);
-
-
-/********************************************************* Helper functions *******************************************/
-
-/**
- * extracts the tag number from the tag header.
- * @param tvb "TestyVirtualBuffer"
- * @param offset in actual tvb
- * @return Tag Number corresponding to BACnet 20.2.1.2 Tag Number
- */
-static guint
-fTagNo (tvbuff_t *tvb, guint offset);
-
-/**
- * splits Tag Header coresponding to 20.2.1 General Rules For BACnet Tags
- * @param tvb = "TestyVirtualBuffer"
- * @param offset = offset in actual tvb
- * @return tag_no BACnet 20.2.1.2 Tag Number
- * @return class_tag BACnet 20.2.1.1 Class
- * @return lvt BACnet 20.2.1.3 Length/Value/Type
- * @return offs = length of this header
- */
-
-static guint
-fTagHeader (tvbuff_t *tvb, guint offset, guint8 *tag_no, guint8* class_tag, guint32 *lvt);
-
-
-/**
- * adds processID with max 32Bit unsigned Integer Value to tree
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fProcessId (tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-/**
- * adds timeSpan with max 32Bit unsigned Integer Value to tree
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fTimeSpan (tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
-
-/**
- * BACnet Application PDUs chapter 21
- * BACnetPropertyIdentifier::= ENUMERATED {
- * @see bacapp_property_identifier
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @param tt returnvalue of this item
- * @return modified offset
- */
-static guint
-fPropertyIdentifier (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * BACnet Application PDUs chapter 21
- * BACnetPropertyArrayIndex::= ENUMERATED {
- * @see bacapp_property_array_index
- * }
- * @param tvb
- * @param tree
- * @param offset
- * @param tt returnvalue of this item
- * @return modified offset
- */
-static guint
-fPropertyArrayIndex (tvbuff_t *tvb, proto_tree *tree, guint offset);
-
-/**
- * listOfEventSummaries ::= SEQUENCE OF SEQUENCE {
- * objectIdentifier [0] BACnetObjectIdentifier,
- * eventState [1] BACnetEventState,
- * acknowledgedTransitions [2] BACnetEventTransitionBits,
- * eventTimeStamps [3] SEQURNCE SIZE (3) OF BACnetTimeStamps,
- * notifyType [4] BACnetNotifyType,
- * eventEnable [5] BACnetEventTransitionBits,
- * eventPriorities [6] SEQUENCE SIZE (3) OF Unsigned
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-flistOfEventSummaries (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * SelectionCriteria ::= SEQUENCE {
- * propertyIdentifier [0] BACnetPropertyIdentifier,
- * propertyArrayIndex [1] Unsigned OPTIONAL, -- used only with array datatype
- * relationSpecifier [2] ENUMERATED { bacapp_relationSpecifier },
- * comparisonValue [3] ABSTRACT-SYNTAX.&Type
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fSelectionCriteria (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * objectSelectionCriteria ::= SEQUENCE {
- * selectionLogic [0] ENUMERATED { bacapp_selectionLogic },
- * listOfSelectionCriteria [1] SelectionCriteria
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fObjectSelectionCriteria (tvbuff_t *tvb, packet_info *pinfo, proto_tree *subtree, guint offset);
-
-/**
- * BACnet-Error ::= SEQUENCE {
- * error-class ENUMERATED {},
- * error-code ENUMERATED {}
- * }
- * }
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- */
-static guint
-fError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * Generic handler for context tagged values. Mostly for handling
- * vendor-defined properties and services.
- * @param tvb
- * @param tree
- * @param offset
- * @return modified offset
- * @todo beautify this ugly construct
- */
-static guint
-fContextTaggedValue(tvbuff_t *tvb, proto_tree *tree, guint offset, const gchar *label);
-
-/**
- * realizes some ABSTRACT-SYNTAX.&Type
- * @param tvb
- * @param pinfo
- * @param tree
- * @param offset
- * @return modified offset
- * @todo beautify this ugly construct
- */
-static guint
-fAbstractSyntaxNType (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
-
-/**
- * register_bacapp
- */
-void
-proto_register_bacapp(void);
-
-/**
- * proto_reg_handoff_bacapp
- */
-void
-proto_reg_handoff_bacapp(void);
-
-/**
- * converts XXX coded strings to UTF-8
- * else 'in' is copied to 'out'
- * @param in -- pointer to string
- * @param inbytesleft
- * @param out -- pointer to string
- * @param outbytesleft
- * @param fromcoding
- * @return count of modified characters of returned string, -1 for errors
- */
-guint32
-fConvertXXXtoUTF8(gchar *in, gsize *inbytesleft, gchar *out, gsize *outbytesleft, const gchar *fromcoding);
-
-static void
-uni_to_string(char * data, gsize str_length, char *dest_buf);
-
-#endif /* __BACAPP_H__ */
-
-