Documentation for the Data Sharing BIBBs: RP, RPM, WP.

A start on ReadRange for Trending BIBB.
This commit is contained in:
tbrennan3
2010-02-28 03:44:06 +00:00
parent 2a68202503
commit cd33aa18e9
12 changed files with 210 additions and 34 deletions
+40 -24
View File
@@ -45,51 +45,51 @@ typedef struct BACnet_Read_Range_Data {
uint32_t array_index;
uint8_t *application_data;
int application_data_len;
BACNET_BIT_STRING ResultFlags; /* FIRST_ITEM, LAST_ITEM, MORE_ITEMS */
int RequestType; /* Index, sequence or time based request */
int Overhead; /* How much space the baggage takes in the response */
BACNET_BIT_STRING ResultFlags; /**< FIRST_ITEM, LAST_ITEM, MORE_ITEMS. */
int RequestType; /**< Index, sequence or time based request. */
int Overhead; /**< How much space the baggage takes in the response. */
uint32_t ItemCount;
uint32_t FirstSequence;
union { /* Pick the appropriate data type */
union { /**< Pick the appropriate data type. */
uint32_t RefIndex;
uint32_t RefSeqNum;
BACNET_DATE_TIME RefTime;
} Range;
int32_t Count; /* SIGNED value as +ve vs -ve is important */
int32_t Count; /**< SIGNED value as +ve vs -ve is important. */
BACNET_ERROR_CLASS error_class;
BACNET_ERROR_CODE error_code;
} BACNET_READ_RANGE_DATA;
/* Defines to indicate which type of read range request it is
/** Defines to indicate which type of read range request it is.
Not really a bit map but we do it like this to allow quick
checking of request against capabilities for the property */
#define RR_BY_POSITION 1
#define RR_BY_SEQUENCE 2
#define RR_BY_TIME 4
#define RR_READ_ALL 8 /* Read all of array - so don't send any range in the request */
#define RR_ARRAY_OF_LISTS 16 /* For info functionality indicates array of lists if set */
#define RR_READ_ALL 8 /**< Read all of array - so don't send any range in the request */
#define RR_ARRAY_OF_LISTS 16 /**< For info functionality indicates array of lists if set */
/* Bit String Enumerations */
/** Bit String Enumerations */
typedef enum {
RESULT_FLAG_FIRST_ITEM = 0,
RESULT_FLAG_LAST_ITEM = 1,
RESULT_FLAG_MORE_ITEMS = 2
} BACNET_RESULT_FLAGS;
/* Defines for ReadRange packet overheads to allow us to determine how
/** Defines for ReadRange packet overheads to allow us to determine how
* much space is left for actual payload:
*
* Overhead is comprised of:
* 1. PDU Type + invoke ID + service type = 3 bytes
* 2. Object ID = 5 bytes
* 3. Object Property = 2 bytes if property is 0-255, 3 if property is
* 256-65535 theoretical max of 5 bytes but how likely is that?
* 4. Optional array index = 2 bytes if index is 0-255, 3 if index is
* 256-65535 theoretical max of 5 bytes but how likely is that?
* 5. Flags = 3 bytes
* 6. Opening and closing tag for data = 2 bytes
* 7. firstSequenceNumber [6] Unsigned32 OPTIONAL -- used only if 'Item Count' > 0
* - 1. PDU Type + invoke ID + service type = 3 bytes
* - 2. Object ID = 5 bytes
* - 3. Object Property = 2 bytes if property is 0-255, 3 if property is
* 256-65535 theoretical max of 5 bytes but how likely is that?
* - 4. Optional array index = 2 bytes if index is 0-255, 3 if index is
* 256-65535 theoretical max of 5 bytes but how likely is that?
* - 5. Flags = 3 bytes
* - 6. Opening and closing tag for data = 2 bytes
* - 7. firstSequenceNumber [6] Unsigned32 OPTIONAL -- used only if 'Item Count' > 0
* and the request was either of type 'By Sequence Number' or 'By Time'
* = minimum of 2 bytes, maximum of 5 bytes.
*
@@ -105,10 +105,10 @@ typedef enum {
#define RR_1ST_SEQ_OVERHEAD 5
#define RR_INDEX_OVERHEAD 3 /* or 5 if paranoid */
/* Define pointer to function type for handling ReadRange request.
/** Define pointer to function type for handling ReadRange request.
This function will take the following parameters:
1. A pointer to a buffer of at least MAX_APDU bytes to build the response in.
2. A pointer to a BACNET_READ_RANGE_DATA structure with all the request
- 1. A pointer to a buffer of at least MAX_APDU bytes to build the response in.
- 2. A pointer to a BACNET_READ_RANGE_DATA structure with all the request
information in it. The function is responsible for applying the request
to the property in question and returning the response. */
@@ -116,7 +116,7 @@ typedef int (*rr_handler_function) (
uint8_t *apdu,
BACNET_READ_RANGE_DATA *pRequest);
/* Structure to return the type of requests a given object property can
/** Structure to return the type of requests a given object property can
* accept and the address of the function to handle the request */
typedef struct rrpropertyinfo {
@@ -124,7 +124,7 @@ typedef struct rrpropertyinfo {
rr_handler_function Handler;
} RR_PROP_INFO;
/* Function pointer for ReadRange information retrieval function */
/** Function pointer for ReadRange information retrieval function */
typedef bool (*rr_info_function) (
BACNET_READ_RANGE_DATA *pRequest, /* Info on the request */
@@ -154,5 +154,21 @@ uint8_t Send_ReadRange_Request(
uint32_t device_id, /* destination device */
BACNET_READ_RANGE_DATA * read_access_data);
/** @defgroup Trend Trending BIBBs
* These BIBBs prescribe the BACnet capabilities required to interoperably
* perform the trending functions enumerated in clause 22.2.1.4 for the
* BACnet devices defined therein.
*/
/** @defgroup TrendReadRange Trending -Read Range Service (eg, in T-VMT)
* @ingroup Trend
* 15.8 ReadRange Service <br>
* The ReadRange service is used by a client BACnet-user to read a specific
* range of data items representing a subset of data available within a
* specified object property.
* The service may be used with any list or array of lists property.
*/
#endif
+15
View File
@@ -114,4 +114,19 @@ extern "C" {
#ifdef __cplusplus
}
#endif /* __cplusplus */
/** @defgroup DataShare Data Sharing BIBBs
* These BIBBs prescribe the BACnet capabilities required to interoperably
* perform the data sharing functions enumerated in 22.2.1.1 for the BACnet
* devices defined therein.
*/
/** @defgroup DSRP Data Sharing -Read Property Service (DS-RP)
* @ingroup DataShare
* 15.5 ReadProperty Service <br>
* The ReadProperty service is used by a client BACnet-user to request the
* value of one property of one BACnet Object. This service allows read access
* to any property of any object, whether a BACnet-defined object or not.
*/
#endif
+14
View File
@@ -191,4 +191,18 @@ extern "C" {
#ifdef __cplusplus
}
#endif /* __cplusplus */
/** @defgroup DSRPM Data Sharing -Read Property Multiple Service (DS-RPM)
* @ingroup DataShare
* 15.7 ReadPropertyMultiple Service <br>
* The ReadPropertyMultiple service is used by a client BACnet-user to request
* the values of one or more specified properties of one or more BACnet Objects.
* This service allows read access to any property of any object, whether a
* BACnet-defined object or not. The user may read a single property of a single
* object, a list of properties of a single object, or any number of properties
* of any number of objects.
* A 'Read Access Specification' with the property identifier ALL can be used to
* learn the implemented properties of an object along with their values.
*/
#endif
+14 -1
View File
@@ -39,7 +39,7 @@
#include "bacdcode.h"
#include "bacapp.h"
/* write property can have application tagged data, or context tagged data,
/** @note: write property can have application tagged data, or context tagged data,
or even complex data types (i.e. opening and closing tag around data).
It could also have more than one value or element. */
@@ -92,4 +92,17 @@ extern "C" {
#ifdef __cplusplus
}
#endif /* __cplusplus */
/** @defgroup DSWP Data Sharing - Write Property Service (DS-WP)
* @ingroup DataShare
* 15.9 WriteProperty Service <br>
* The WriteProperty service is used by a client BACnet-user to modify the
* value of a single specified property of a BACnet object. This service
* potentially allows write access to any property of any object, whether a
* BACnet-defined object or not. Some implementors may wish to restrict write
* access to certain properties of certain objects. In such cases, an attempt
* to modify a restricted property shall result in the return of an error of
* 'Error Class' PROPERTY and 'Error Code' WRITE_ACCESS_DENIED.
*/
#endif