Added partial documentation of DS-COV.
Dropped the Latex output from default doxyfile. Added a convenience starting point for HTML output, the only format that has worked well for this project on doxygen.
This commit is contained in:
@@ -529,7 +529,7 @@ FILE_PATTERNS =
|
|||||||
# should be searched for input files as well. Possible values are YES and NO.
|
# should be searched for input files as well. Possible values are YES and NO.
|
||||||
# If left blank NO is used.
|
# If left blank NO is used.
|
||||||
|
|
||||||
RECURSIVE = NO
|
RECURSIVE = YES
|
||||||
|
|
||||||
# The EXCLUDE tag can be used to specify files and/or directories that should
|
# The EXCLUDE tag can be used to specify files and/or directories that should
|
||||||
# excluded from the INPUT source files. This way you can easily exclude a
|
# excluded from the INPUT source files. This way you can easily exclude a
|
||||||
@@ -781,7 +781,7 @@ HTML_DYNAMIC_SECTIONS = NO
|
|||||||
# can add a path in front of the file if the result should not be
|
# can add a path in front of the file if the result should not be
|
||||||
# written to the html output directory.
|
# written to the html output directory.
|
||||||
|
|
||||||
CHM_FILE =
|
CHM_FILE = BAC-stack.chm
|
||||||
|
|
||||||
# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
|
# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
|
||||||
# be used to specify the location (absolute path including file name) of
|
# be used to specify the location (absolute path including file name) of
|
||||||
@@ -840,7 +840,7 @@ TREEVIEW_WIDTH = 250
|
|||||||
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
|
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
|
||||||
# generate Latex output.
|
# generate Latex output.
|
||||||
|
|
||||||
GENERATE_LATEX = YES
|
GENERATE_LATEX = NO
|
||||||
|
|
||||||
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
|
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
|
||||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
||||||
@@ -938,7 +938,7 @@ COMPACT_RTF = NO
|
|||||||
# programs which support those fields.
|
# programs which support those fields.
|
||||||
# Note: wordpad (write) and others do not support links.
|
# Note: wordpad (write) and others do not support links.
|
||||||
|
|
||||||
RTF_HYPERLINKS = NO
|
RTF_HYPERLINKS = YES
|
||||||
|
|
||||||
# Load stylesheet definitions from file. Syntax is similar to doxygen's
|
# Load stylesheet definitions from file. Syntax is similar to doxygen's
|
||||||
# config file, i.e. a series of assignments. You only have to provide
|
# config file, i.e. a series of assignments. You only have to provide
|
||||||
@@ -1208,14 +1208,14 @@ HAVE_DOT = NO
|
|||||||
# indirect inheritance relations. Setting this tag to YES will force the
|
# indirect inheritance relations. Setting this tag to YES will force the
|
||||||
# the CLASS_DIAGRAMS tag to NO.
|
# the CLASS_DIAGRAMS tag to NO.
|
||||||
|
|
||||||
CLASS_GRAPH = YES
|
CLASS_GRAPH = NO
|
||||||
|
|
||||||
# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
|
# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
|
||||||
# will generate a graph for each documented class showing the direct and
|
# will generate a graph for each documented class showing the direct and
|
||||||
# indirect implementation dependencies (inheritance, containment, and
|
# indirect implementation dependencies (inheritance, containment, and
|
||||||
# class references variables) of the class with other documented classes.
|
# class references variables) of the class with other documented classes.
|
||||||
|
|
||||||
COLLABORATION_GRAPH = YES
|
COLLABORATION_GRAPH = NO
|
||||||
|
|
||||||
# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
|
# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
|
||||||
# will generate a graph for groups, showing the direct groups dependencies
|
# will generate a graph for groups, showing the direct groups dependencies
|
||||||
@@ -1245,7 +1245,7 @@ INCLUDE_GRAPH = YES
|
|||||||
# documented header file showing the documented files that directly or
|
# documented header file showing the documented files that directly or
|
||||||
# indirectly include this file.
|
# indirectly include this file.
|
||||||
|
|
||||||
INCLUDED_BY_GRAPH = YES
|
INCLUDED_BY_GRAPH = NO
|
||||||
|
|
||||||
# If the CALL_GRAPH and HAVE_DOT options are set to YES then
|
# If the CALL_GRAPH and HAVE_DOT options are set to YES then
|
||||||
# doxygen will generate a call dependency graph for every global function
|
# doxygen will generate a call dependency graph for every global function
|
||||||
@@ -1266,7 +1266,7 @@ CALLER_GRAPH = NO
|
|||||||
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
|
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
|
||||||
# will graphical hierarchy of all classes instead of a textual one.
|
# will graphical hierarchy of all classes instead of a textual one.
|
||||||
|
|
||||||
GRAPHICAL_HIERARCHY = YES
|
GRAPHICAL_HIERARCHY = NO
|
||||||
|
|
||||||
# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
|
# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
|
||||||
# then doxygen will show the dependencies a directory has on other directories
|
# then doxygen will show the dependencies a directory has on other directories
|
||||||
|
|||||||
@@ -177,6 +177,17 @@ static int cov_encode_subscription(
|
|||||||
return apdu_len;
|
return apdu_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Handle a request to list all the COV subscriptions.
|
||||||
|
* @ingroup DSCOV
|
||||||
|
* Invoked by a request to read the Device object's PROP_ACTIVE_COV_SUBSCRIPTIONS.
|
||||||
|
* Loops through the list of COV Subscriptions, and, for each valid one,
|
||||||
|
* adds its description to the APDU.
|
||||||
|
* @note This function needs some work to better handle buffer overruns.
|
||||||
|
* @param apdu [out] Buffer in which the APDU contents are built.
|
||||||
|
* @param max_apdu [in] Max length of the APDU buffer.
|
||||||
|
* @return How many bytes were encoded in the buffer, or -2 if the response
|
||||||
|
* would not fit within the buffer.
|
||||||
|
*/
|
||||||
int handler_cov_encode_subscriptions(
|
int handler_cov_encode_subscriptions(
|
||||||
uint8_t * apdu,
|
uint8_t * apdu,
|
||||||
int max_apdu)
|
int max_apdu)
|
||||||
@@ -192,6 +203,7 @@ int handler_cov_encode_subscriptions(
|
|||||||
cov_encode_subscription(&apdu[apdu_len],
|
cov_encode_subscription(&apdu[apdu_len],
|
||||||
max_apdu - apdu_len, &COV_Subscriptions[index]);
|
max_apdu - apdu_len, &COV_Subscriptions[index]);
|
||||||
apdu_len += len;
|
apdu_len += len;
|
||||||
|
/* TODO: too late here to notice that we overran the buffer */
|
||||||
if (apdu_len > max_apdu) {
|
if (apdu_len > max_apdu) {
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
@@ -202,6 +214,9 @@ int handler_cov_encode_subscriptions(
|
|||||||
return apdu_len;
|
return apdu_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Handler to initialize the COV list, clearing and disabling each entry.
|
||||||
|
* @ingroup DSCOV
|
||||||
|
*/
|
||||||
void handler_cov_init(
|
void handler_cov_init(
|
||||||
void)
|
void)
|
||||||
{
|
{
|
||||||
@@ -368,8 +383,27 @@ static bool cov_send_request(
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* note: worst case tasking: MS/TP with the ability to send only
|
/** Handler to check the list of subscribed objects for any that have changed
|
||||||
one notification per task cycle */
|
* and so need to have notifications sent.
|
||||||
|
* @ingroup DSCOV
|
||||||
|
* This handler will be invoked by the main program every second or so.
|
||||||
|
* This example only handles Binary Inputs, but can be easily extended to
|
||||||
|
* support other types.
|
||||||
|
* For each subscribed object,
|
||||||
|
* - See if the subscription has timed out
|
||||||
|
* - Remove it if it has timed out.
|
||||||
|
* - See if the subscribed object instance has changed
|
||||||
|
* (eg, check with Binary_Input_Change_Of_Value() )
|
||||||
|
* - If changed,
|
||||||
|
* - Clear the COV (eg, Binary_Input_Change_Of_Value_Clear() )
|
||||||
|
* - Send the notice with cov_send_request()
|
||||||
|
* - Will be confirmed or unconfirmed, as per the subscription.
|
||||||
|
*
|
||||||
|
* @note worst case tasking: MS/TP with the ability to send only
|
||||||
|
* one notification per task cycle.
|
||||||
|
*
|
||||||
|
* @param elapsed_seconds [in] How many seconds have elapsed since last called.
|
||||||
|
*/
|
||||||
void handler_cov_task(
|
void handler_cov_task(
|
||||||
uint32_t elapsed_seconds)
|
uint32_t elapsed_seconds)
|
||||||
{
|
{
|
||||||
@@ -447,6 +481,23 @@ static bool cov_subscribe(
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Handler for a COV Subscribe Service request.
|
||||||
|
* @ingroup DSCOV
|
||||||
|
* This handler will be invoked by apdu_handler() if it has been enabled
|
||||||
|
* by a call to apdu_set_confirmed_handler().
|
||||||
|
* This handler builds a response packet, which is
|
||||||
|
* - an Abort if
|
||||||
|
* - the message is segmented
|
||||||
|
* - if decoding fails
|
||||||
|
* - an ACK, if cov_subscribe() succeeds
|
||||||
|
* - an Error if cov_subscribe() fails
|
||||||
|
*
|
||||||
|
* @param service_request [in] The contents of the service request.
|
||||||
|
* @param service_len [in] The length of the service_request.
|
||||||
|
* @param src [in] BACNET_ADDRESS of the source of the message
|
||||||
|
* @param service_data [in] The BACNET_CONFIRMED_SERVICE_DATA information
|
||||||
|
* decoded from the APDU header of this message.
|
||||||
|
*/
|
||||||
void handler_cov_subscribe(
|
void handler_cov_subscribe(
|
||||||
uint8_t * service_request,
|
uint8_t * service_request,
|
||||||
uint16_t service_len,
|
uint16_t service_len,
|
||||||
|
|||||||
@@ -6,18 +6,22 @@ To build the Doxygen documentation for the BACnet Stack:
|
|||||||
graphviz installed.
|
graphviz installed.
|
||||||
- To build from the command line, just enter
|
- To build from the command line, just enter
|
||||||
doxygen BACnet-stack.doxyfile
|
doxygen BACnet-stack.doxyfile
|
||||||
- Output is built in doc/output/html and doc/output/latex
|
- Output is built in doc/output/html, and there is a convenient
|
||||||
- The Latex output can be converted into a PDF (see doxygen manual,
|
starting point at doc/output/BAC_stack.html.
|
||||||
google, and good luck!)
|
|
||||||
- If you use Eclipse,
|
- If you use Eclipse,
|
||||||
- install the eClox plugin to support doxygen within Eclipse
|
- install the eClox plugin to support doxygen within Eclipse
|
||||||
- Build the documents by right clicking on BACnet-stack.doxyfile,
|
- Build the documents by right clicking on BACnet-stack.doxyfile,
|
||||||
and selecting "@ Build Documentation"
|
and selecting "@ Build Documentation"
|
||||||
- Feel free to tweak the doxygen output to your tastes, interests, and
|
- Feel free to tweak the doxygen output to your tastes, interests, and
|
||||||
choice of output formats.
|
choice of output formats.
|
||||||
|
- The Latex output can be converted into a PDF (see doxygen manual,
|
||||||
|
google, and good luck!)
|
||||||
|
- I have tried the PDF, man, and RTF outputs and not liked the results
|
||||||
|
for any of them (500+ pages). I recommend the HTML output, as it is
|
||||||
|
well organized and has an obvious flow, both of which the others lack.
|
||||||
|
|
||||||
The doxygen output is not checked into this project because it consists of
|
The doxygen output is not checked into this project because it consists of
|
||||||
over 10,000 little files (for HTML and Latex), and it is easily
|
over 5,000 little files (for HTML with call graphs), and it is easily
|
||||||
regenerated.
|
regenerated.
|
||||||
|
|
||||||
For speed, the function call graphs are not enabled in the SVN version
|
For speed, the function call graphs are not enabled in the SVN version
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||||
|
<title>BAC-stack</title>
|
||||||
|
</head>
|
||||||
|
<frameset cols="250,*">
|
||||||
|
<frame src="html/tree.html" name="treefrm"/>
|
||||||
|
<frame src="html/main.html" name="basefrm"/>
|
||||||
|
<noframes>
|
||||||
|
<body>
|
||||||
|
<a href="html/main.html">Frames are disabled. Click here to go to the main page.</a>
|
||||||
|
</body>
|
||||||
|
</noframes>
|
||||||
|
</frameset>
|
||||||
|
</html>
|
||||||
@@ -126,4 +126,19 @@ extern "C" {
|
|||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
/** @defgroup DSCOV Data Sharing - Change of Value Service (DS-COV)
|
||||||
|
* @ingroup DataShare
|
||||||
|
* 13.1 Change of Value Reporting <br>
|
||||||
|
* Change of value (COV) reporting allows a COV-client to subscribe with a
|
||||||
|
* COV-server, on a permanent or temporary basis, to receive reports of some
|
||||||
|
* changes of value of some referenced property based on fixed criteria.
|
||||||
|
* If an object provides COV reporting, then changes of value of any
|
||||||
|
* subscribed-to properties of the object, in some cases based on programmable
|
||||||
|
* increments, trigger COV notifications to be sent to subscribing clients.
|
||||||
|
* Typically, COV notifications are sent to supervisory programs in COV-client
|
||||||
|
* devices or to operators or logging devices. Any object, proprietary or
|
||||||
|
* standard, may support COV reporting at the implementor's option.
|
||||||
|
*/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user