Adding simple internal developer documentation with examples of
authorJon A. Cruz <jonc@osg.samsung.com>
Mon, 30 Mar 2015 03:22:06 +0000 (20:22 -0700)
committerErich Keane <erich.keane@intel.com>
Wed, 1 Apr 2015 16:59:29 +0000 (16:59 +0000)
integration of graphviz diagrams in doxygen for automatic cross-linking.

Change-Id: Ifcd1869f06c1025cd9192b74f02365280bc929bc
Signed-off-by: Jon A. Cruz <jonc@osg.samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/602
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Ossama Othman <ossama.othman@intel.com>
Reviewed-by: Erich Keane <erich.keane@intel.com>
resource/docs/devdocs.doxyfile [new file with mode: 0644]
resource/docs/devdox/ca_functional.dox [new file with mode: 0644]
resource/docs/devdox/ca_overview.dox [new file with mode: 0644]
resource/docs/devdox/dot/ca_arch.gv [new file with mode: 0644]
resource/docs/devdox/dot/ca_arch_sketch.gv [new file with mode: 0644]
resource/docs/devdox/dot/ca_overview.gv [new file with mode: 0644]
resource/docs/devdox/mainpage.dox [new file with mode: 0644]

diff --git a/resource/docs/devdocs.doxyfile b/resource/docs/devdocs.doxyfile
new file mode 100644 (file)
index 0000000..4ab5086
--- /dev/null
@@ -0,0 +1,330 @@
+# Doxyfile 1.8.8
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+DOXYFILE_ENCODING      = UTF-8
+PROJECT_NAME           = "IoTivity Internals Documentation"
+PROJECT_NUMBER         =
+PROJECT_BRIEF          =
+PROJECT_LOGO           =
+OUTPUT_DIRECTORY       = devdocs
+CREATE_SUBDIRS         = NO
+ALLOW_UNICODE_NAMES    = NO
+OUTPUT_LANGUAGE        = English
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       =
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        =
+STRIP_FROM_INC_PATH    =
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = YES
+QT_AUTOBRIEF           = NO
+MULTILINE_CPP_IS_BRIEF = NO
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = NO
+TAB_SIZE               = 4
+ALIASES                =
+TCL_SUBST              =
+OPTIMIZE_OUTPUT_FOR_C  = NO
+OPTIMIZE_OUTPUT_JAVA   = NO
+OPTIMIZE_FOR_FORTRAN   = NO
+OPTIMIZE_OUTPUT_VHDL   = NO
+EXTENSION_MAPPING      =
+MARKDOWN_SUPPORT       = YES
+AUTOLINK_SUPPORT       = YES
+BUILTIN_STL_SUPPORT    = NO
+CPP_CLI_SUPPORT        = NO
+SIP_SUPPORT            = NO
+IDL_PROPERTY_SUPPORT   = YES
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+INLINE_GROUPED_CLASSES = NO
+INLINE_SIMPLE_STRUCTS  = NO
+TYPEDEF_HIDES_STRUCT   = NO
+LOOKUP_CACHE_SIZE      = 0
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_PACKAGE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = YES
+EXTRACT_LOCAL_METHODS  = NO
+EXTRACT_ANON_NSPACES   = NO
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = YES
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+SHOW_GROUPED_MEMB_INC  = NO
+FORCE_LOCAL_INCLUDES   = NO
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = NO
+SORT_MEMBERS_CTORS_1ST = NO
+SORT_GROUP_NAMES       = NO
+SORT_BY_SCOPE_NAME     = NO
+STRICT_PROTO_MATCHING  = NO
+GENERATE_TODOLIST      = YES
+GENERATE_TESTLIST      = YES
+GENERATE_BUGLIST       = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS       =
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_FILES             = YES
+SHOW_NAMESPACES        = YES
+FILE_VERSION_FILTER    =
+LAYOUT_FILE            =
+CITE_BIB_FILES         =
+#---------------------------------------------------------------------------
+# Configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           =
+#---------------------------------------------------------------------------
+# Configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = devdox \
+                         ../include \
+                         ../src \
+                         ../csdk/connectivity/api \
+                         ../csdk/connectivity/common/inc \
+                         ../csdk/connectivity/common/src \
+                         ../csdk/connectivity/inc \
+                         ../csdk/connectivity/src \
+                         ../csdk/logger/include \
+                         ../csdk/logger/src \
+                         ../csdk/ocmalloc/include \
+                         ../csdk/ocmalloc/src \
+                         ../csdk/ocrandom/include \
+                         ../csdk/ocrandom/src \
+                         ../csdk/security/include \
+                         ../csdk/security/src \
+                         ../csdk/stack/include \
+                         ../csdk/stack/src
+
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          =
+RECURSIVE              = YES
+EXCLUDE                =
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       =
+EXCLUDE_SYMBOLS        =
+EXAMPLE_PATH           =
+EXAMPLE_PATTERNS       =
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             =
+INPUT_FILTER           =
+FILTER_PATTERNS        =
+FILTER_SOURCE_FILES    = NO
+FILTER_SOURCE_PATTERNS =
+USE_MDFILE_AS_MAINPAGE =
+#---------------------------------------------------------------------------
+# Configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION    = NO
+REFERENCES_LINK_SOURCE = YES
+SOURCE_TOOLTIPS        = YES
+USE_HTAGS              = NO
+VERBATIM_HEADERS       = YES
+CLANG_ASSISTED_PARSING = NO
+CLANG_OPTIONS          =
+#---------------------------------------------------------------------------
+# Configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          =
+#---------------------------------------------------------------------------
+# Configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = YES
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            =
+HTML_FOOTER            =
+HTML_STYLESHEET        =
+HTML_EXTRA_STYLESHEET  =
+HTML_EXTRA_FILES       =
+HTML_COLORSTYLE_HUE    = 220
+HTML_COLORSTYLE_SAT    = 100
+HTML_COLORSTYLE_GAMMA  = 80
+HTML_TIMESTAMP         = YES
+HTML_DYNAMIC_SECTIONS  = NO
+HTML_INDEX_NUM_ENTRIES = 100
+GENERATE_DOCSET        = NO
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
+DOCSET_PUBLISHER_NAME  = Publisher
+GENERATE_HTMLHELP      = NO
+CHM_FILE               =
+HHC_LOCATION           =
+GENERATE_CHI           = NO
+CHM_INDEX_ENCODING     =
+BINARY_TOC             = NO
+TOC_EXPAND             = NO
+GENERATE_QHP           = NO
+QCH_FILE               =
+QHP_NAMESPACE          = org.doxygen.Project
+QHP_VIRTUAL_FOLDER     = doc
+QHP_CUST_FILTER_NAME   =
+QHP_CUST_FILTER_ATTRS  =
+QHP_SECT_FILTER_ATTRS  =
+QHG_LOCATION           =
+GENERATE_ECLIPSEHELP   = NO
+ECLIPSE_DOC_ID         = org.doxygen.Project
+DISABLE_INDEX          = NO
+GENERATE_TREEVIEW      = NO
+ENUM_VALUES_PER_LINE   = 4
+TREEVIEW_WIDTH         = 250
+EXT_LINKS_IN_WINDOW    = NO
+FORMULA_FONTSIZE       = 10
+FORMULA_TRANSPARENT    = YES
+USE_MATHJAX            = NO
+MATHJAX_FORMAT         = HTML-CSS
+MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
+MATHJAX_EXTENSIONS     =
+MATHJAX_CODEFILE       =
+SEARCHENGINE           = YES
+SERVER_BASED_SEARCH    = NO
+EXTERNAL_SEARCH        = NO
+SEARCHENGINE_URL       =
+SEARCHDATA_FILE        = searchdata.xml
+EXTERNAL_SEARCH_ID     =
+EXTRA_SEARCH_MAPPINGS  =
+#---------------------------------------------------------------------------
+# Configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = YES
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4
+EXTRA_PACKAGES         =
+LATEX_HEADER           =
+LATEX_FOOTER           =
+LATEX_EXTRA_FILES      =
+PDF_HYPERLINKS         = YES
+USE_PDFLATEX           = YES
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+LATEX_SOURCE_CODE      = NO
+LATEX_BIB_STYLE        = plain
+#---------------------------------------------------------------------------
+# Configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    =
+RTF_EXTENSIONS_FILE    =
+#---------------------------------------------------------------------------
+# Configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_SUBDIR             =
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# Configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+GENERATE_DOCBOOK       = NO
+DOCBOOK_OUTPUT         = docbook
+DOCBOOK_PROGRAMLISTING = NO
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# Configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX =
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = NO
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           =
+INCLUDE_FILE_PATTERNS  =
+PREDEFINED             =
+EXPAND_AS_DEFINED      =
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration options related to external references
+#---------------------------------------------------------------------------
+TAGFILES               =
+GENERATE_TAGFILE       =
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+EXTERNAL_PAGES         = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+MSCGEN_PATH            =
+DIA_PATH               =
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = YES
+DOT_NUM_THREADS        = 0
+DOT_FONTNAME           = Helvetica
+DOT_FONTSIZE           = 10
+DOT_FONTPATH           =
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+GROUP_GRAPHS           = YES
+UML_LOOK               = NO
+UML_LIMIT_NUM_FIELDS   = 10
+TEMPLATE_RELATIONS     = NO
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = NO
+CALLER_GRAPH           = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+INTERACTIVE_SVG        = NO
+DOT_PATH               =
+DOTFILE_DIRS           = devdox/dot
+MSCFILE_DIRS           =
+DIAFILE_DIRS           =
+PLANTUML_JAR_PATH      =
+DOT_GRAPH_MAX_NODES    = 50
+MAX_DOT_GRAPH_DEPTH    = 0
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
diff --git a/resource/docs/devdox/ca_functional.dox b/resource/docs/devdox/ca_functional.dox
new file mode 100644 (file)
index 0000000..e99a417
--- /dev/null
@@ -0,0 +1,89 @@
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+/**
+@page ca_functional CA Functional design/implementation
+
+- @ref caf_overview
+  - @ref caf_ovr_communication
+    - @ref caf_ovr_comm_netinterface
+      - @ref caf_ovr_comm_netinterface_msg
+      - @ref caf_ovr_comm_netinterface_control
+      - @ref caf_ovr_comm_netinterface_eth
+      - @ref caf_ovr_comm_netinterface_wifi
+      - @ref caf_ovr_comm_netinterface_edr
+      - @ref caf_ovr_comm_netinterface_le
+      - @ref caf_ovr_comm_netinterface_detail
+
+<hr>
+
+@section caf_overview Overview
+
+The following are assorted implementation notes/references in regards to
+@ref ca_overview
+
+@subsection caf_ovr_communication Communication Adapters
+
+@subsubsection caf_ovr_comm_netinterface Network Interface Creation
+
+Interface connections are created at program startup. A Message Handler is
+started by invoking the CAInitialize() command. This in turn establishes
+the needed data structures and callbacks.
+
+@dotfile ca_arch_sketch.gv
+
+@paragraph caf_ovr_comm_netinterface_msg Message Handler
+
+The message handler owns athread pool and send and reive queue.
+
+@paragraph caf_ovr_comm_netinterface_control Interface controller
+
+This directly controls the individual adapters. Calling CAInitializeAdapters(u_thread_pool_t handle)
+will invoke whatever config had been established by compile-time flags.
+
+@paragraph caf_ovr_comm_netinterface_eth Ethernet Adapter
+
+An interface adapter implemented to support Ethernet connections. It is
+created by calling CAInitializeEthernet()
+
+@paragraph caf_ovr_comm_netinterface_wifi WiFi Adapter
+
+An interface adapter implemented to support WiFi connections. It is created
+by calling CAInitializeWifi()
+
+@paragraph caf_ovr_comm_netinterface_edr EDR Adapter
+
+An interface adapter implemented to support EDR connections. It is created
+by calling CAInitializeEDR()
+
+@paragraph caf_ovr_comm_netinterface_le LE Adapter
+
+An interface adapter implemented to support LE connections. It is created
+by calling CAInitializeLE()
+
+@paragraph caf_ovr_comm_netinterface_detail Detailed Structure
+
+The following is a more detailed breakdown on the main types involved.
+Several structs and function details are present. However the diagram
+is more of a sketch and is not 100% complete.
+
+@dotfile ca_arch.gv
+
+*/
\ No newline at end of file
diff --git a/resource/docs/devdox/ca_overview.dox b/resource/docs/devdox/ca_overview.dox
new file mode 100644 (file)
index 0000000..626a973
--- /dev/null
@@ -0,0 +1,501 @@
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+/**
+@page ca_overview CA Overview
+
+- @ref cao_overview
+- @ref cao_ddoc
+    - @ref cao_ddoc_freqs
+        - @ref cao_ddoc_freqs_discovery
+            - @ref cao_ddoc_fr1101
+            - @ref cao_ddoc_fr1102
+            - @ref cao_ddoc_fr1103
+            - @ref cao_ddoc_fr1104
+            - @ref cao_ddoc_fr1105
+            - @ref cao_ddoc_fr1106
+            - @ref cao_ddoc_fr1107
+            - @ref cao_ddoc_fr1108
+            - @ref cao_ddoc_fr1109
+        - @ref cao_ddoc_freqs_msg
+            - @ref cao_ddoc_fr1201
+            - @ref cao_ddoc_fr1202
+            - @ref cao_ddoc_fr1203
+            - @ref cao_ddoc_fr1204
+        - @ref cao_ddoc_freqs_obs
+            - @ref cao_ddoc_fr1301
+            - @ref cao_ddoc_fr1302
+            - @ref cao_ddoc_fr1303
+            - @ref cao_ddoc_fr1304
+        - @ref cao_ddoc_freqs_netconfig
+            - @ref cao_ddoc_fr1401
+            - @ref cao_ddoc_fr1402
+            - @ref cao_ddoc_fr1403
+        - @ref cao_ddoc_freqs_control_ip
+            - @ref cao_ddoc_fr2101
+            - @ref cao_ddoc_fr2102
+            - @ref cao_ddoc_fr2103
+            - @ref cao_ddoc_fr2104
+            - @ref cao_ddoc_fr2105
+            - @ref cao_ddoc_fr2106
+        - @ref cao_ddoc_freqs_control_bt
+            - @ref cao_ddoc_fr2201
+            - @ref cao_ddoc_fr2202
+            - @ref cao_ddoc_fr2203
+            - @ref cao_ddoc_fr2204
+            - @ref cao_ddoc_fr2205
+            - @ref cao_ddoc_fr2206
+        - @ref cao_ddoc_freqs_control_ble
+            - @ref cao_ddoc_fr2301
+            - @ref cao_ddoc_fr2302
+            - @ref cao_ddoc_fr2303
+            - @ref cao_ddoc_fr2304
+            - @ref cao_ddoc_fr2305
+            - @ref cao_ddoc_fr2306
+            - @ref cao_ddoc_fr2307
+        - @ref cao_ddoc_freqs_control_zigbee
+            - @ref cao_ddoc_fr2401
+            - @ref cao_ddoc_fr2402
+            - @ref cao_ddoc_fr2403
+            - @ref cao_ddoc_fr2404
+            - @ref cao_ddoc_fr2405
+            - @ref cao_ddoc_fr2406
+        - @ref cao_ddoc_freqs_control_zwave
+            - @ref cao_ddoc_fr2501
+            - @ref cao_ddoc_fr2502
+            - @ref cao_ddoc_fr2503
+            - @ref cao_ddoc_fr2504
+            - @ref cao_ddoc_fr2505
+            - @ref cao_ddoc_fr2506
+    - @ref cao_ddoc_qattr
+        - @ref cao_ddoc_qattr_reliability
+            - @ref cao_ddoc_nfr201
+            - @ref cao_ddoc_nfr202
+        - @ref cao_ddoc_qattr_security
+            - @ref cao_ddoc_nfr301
+            - @ref cao_ddoc_nfr302
+        - @ref cao_ddoc_qattr_maintenance
+            - @ref cao_ddoc_nfr501
+        - @ref cao_ddoc_qattr_portability
+            - @ref cao_ddoc_nfr601
+            - @ref cao_ddoc_nfr602
+            - @ref cao_ddoc_nfr603
+            - @ref cao_ddoc_nfr604
+            - @ref cao_ddoc_nfr605
+        - @ref cao_ddoc_qattr_extensibility
+            - @ref cao_ddoc_nfr701
+    - @ref cao_ddoc_constraints
+        - @ref cao_ddoc_constraints_licence
+            - @ref cao_ddoc_con101
+<hr>
+
+@section cao_overview Overview
+
+The original Connectivity Abstraction design overview diagram was from a presentation format. A similar version has been recreated in dot.
+
+@dotfile ca_overview.gv
+
+
+@section cao_ddoc Design doc info
+
+
+@subsection cao_ddoc_freqs Functional Requirements
+
+
+@subsubsection cao_ddoc_freqs_discovery Discovery
+
+
+@paragraph cao_ddoc_fr1101 FR.1101
+Client can find all resources on the reachable networks.
+- CA should provide the way to discover all resources on the WiFi/Ethernet/BLE/BT network.
+- Resources should be represented by dedicated URI.
+- Add ZigBee and ZWave to supported network. ( 2015.01 ) : TBD
+
+@paragraph cao_ddoc_fr1102 FR.1102
+Client can find all resources on the specific network.
+- CA should provide the way to discover all resources on the specified network.
+- The specified network can be the one of or those of WiFi/Ethernet/BLE/BT network.
+- Resources should be represented by dedicated URI.
+- Add ZigBee and ZWave to supported network. ( 2015.01 ) : TBD
+
+@paragraph cao_ddoc_fr1103 FR.1103
+Client can find specific resource on the reachable networks.
+- CA should provide discovery method to find specific resource on the WiFi/Ethernet/BLE/BT network.
+- Resource should be represented by URI.
+- Add ZigBee and ZWave to supported network. ( 2015.01 ) : TBD
+
+@paragraph cao_ddoc_fr1104 FR.1104
+Client can find specific resource on the specific network.
+- CA should provide discovery method to find specific resource on the specific network.
+- The specified network can be the one of or those of WiFi/Ethernet/BLE/BT network.
+- Resources should be represented by dedicated URI.
+- Add ZigBee and ZWave to supported network. ( 2015.01 ) : TBD
+
+@paragraph cao_ddoc_fr1105 FR.1105
+Server can advertise single resource on the reachable network.
+- CA should provide advertising method to notify the resource on the WiFi/Ethernet/BLE/BT network.
+- Resource should be represented by URI
+- Advertising can include 'alive' or 'disappear'.
+- Add ZigBee and ZWave to supported network. ( 2015.01 ) : TBD
+
+@paragraph cao_ddoc_fr1106 FR.1106
+Server can advertise single resource on the specific network.
+- CA should provide advertising method to notify the resource on the specified network.
+- The spefied network can be the on of or those of WiFi/Ethernet/BLE/BT network
+- Resource should be represented by URI
+- Advertising can include 'alive' or 'disappear'.
+- Add ZigBee and ZWave to supported network. ( 2015.01 ) : TBD
+
+@paragraph cao_ddoc_fr1107 FR.1107
+Server can advertise all resources at a time on the reachable network.
+- CA should provide advertising method to notify the all resources on the WiFi/Ethernet/BLE/BT network.
+- Resource should be represented by URI
+- Advertising can include 'alive' or 'disappear'.
+- Add ZigBee and ZWave to supported network. ( 2015.01 ) : TBD
+
+@paragraph cao_ddoc_fr1108 FR.1108
+Server can advertise all resource  at a time on the specific network.
+- CA should provide advertising method to notify the all resources on the specified network.
+- The spefied network can be the on of or those of WiFi/Ethernet/BLE/BT network
+- Resource should be represented by URI
+- Advertising can include 'alive' or 'disappear'.
+- Add ZigBee and ZWave to supported network. ( 2015.01 ) : TBD
+
+@paragraph cao_ddoc_fr1109 FR.1109
+Client can send periodic hearbeat request on the specific resource.
+- CA should check the status of discovered resource periodically.
+- Heartbeat policy can be followed by IoTivity specification.
+
+
+@subsubsection cao_ddoc_freqs_msg Messaging
+
+
+@paragraph cao_ddoc_fr1201 FR.1201
+Client can send request message to server
+- CA should provide the way to send request message to server on the supported network.
+- CA should notify the event to server when the request message arrives from client.
+
+@paragraph cao_ddoc_fr1202 FR.1202
+Server can send response message to client
+- CA should provide the way to send response messate to client on the supported network.
+- CA should notify the event to client when the response message arrives from server.
+
+@paragraph cao_ddoc_fr1203 FR.1203
+Client and Server can select QoS level for each message
+- CA should provide the way to select message QoS level to the server and client.
+- QoS level policy can follow CoAP guideline ( CON / NON / ACK / RESET )
+
+@paragraph cao_ddoc_fr1204 FR.1204
+Message can be re-sent if acknowledgement didn't received.
+- CA should send high QoS level message repeatly until the acknowledgement arrive.
+- Retransmission policy can follows CoAP guideline.
+
+
+@subsubsection cao_ddoc_freqs_obs Observation
+
+
+@paragraph cao_ddoc_fr1301 FR.1301
+Client can send observation request message to server 
+- CA should provide the way to send observation request message to server on the supported network.
+
+@paragraph cao_ddoc_fr1302 FR.1302
+Server can send observation message 
+- CA should provider the way to send observation event to the clients which request observation on the supported network.
+
+@paragraph cao_ddoc_fr1303 FR.1303
+Client can send observation cancel request message to server
+- CA should provide the way to send observation cancel request message to server on the supported network.
+
+@paragraph cao_ddoc_fr1304 FR.1304
+Server can cancel observation
+- CA should provide the way to send observation cancel event to the clients which request observation on the supported network.
+
+
+@subsubsection cao_ddoc_freqs_netconfig Network Configuration
+
+
+@paragraph cao_ddoc_fr1401 FR.1401
+Server / Client can select the network interfaces to use.
+- CA should provide the way to select network interfaces to use for communication.
+
+@paragraph cao_ddoc_fr1402 FR.1402
+Server / Client can unselect the network interfaces
+- CA should provide the way to unselect network interfaces to use for communication.
+
+@paragraph cao_ddoc_fr1403 FR.1403
+Server / Client can receive the status changes of network interface
+- CA should notify whenever the network interface status changes.
+
+
+@subsubsection cao_ddoc_freqs_control_ip Connectivity Control - Wifi/Ethernet
+
+
+@paragraph cao_ddoc_fr2101 FR.2101
+Server / client can listen multicast message
+- CA should bind multicast port
+- Multicast IP address and port policy can be followed by IoTivity specification.
+
+@paragraph cao_ddoc_fr2102 FR.2102
+Server / client can send multicast message
+- CA should bind multicast port
+- Multicast IP address and port policy can be followed by IoTivity specification.
+
+@paragraph cao_ddoc_fr2103 FR.2103
+Serve / client can listen unicast message
+- CA should bind unicast port
+- Unicast IP address and port policy can be followed by IoTivity specification.
+
+@paragraph cao_ddoc_fr2104 FR.2104
+Server / client can send unicast message
+- CA should bind unicast port
+- Unicast IP address and port policy can be followed by IoTivity specification.
+
+@paragraph cao_ddoc_fr2105 FR.2105
+Server / client can monitor the interface status.
+- CA should notify the status of interface whenever change the status
+
+@paragraph cao_ddoc_fr2106 FR.2106
+Server / client can communicate in secured way
+- CA should provde the way to send / receive data in secure way
+- DTLS should be supported as a secure transfer
+
+
+@subsubsection cao_ddoc_freqs_control_bt Connectivity Control - Bluetooth
+
+
+@paragraph cao_ddoc_fr2201 FR.2201
+Client can discover the device has IoTivity server when inquiry time.
+- CA should scan the device using the specific UUID.
+- The specific UUID should represent IoTivity service and be unique
+
+@paragraph cao_ddoc_fr2202 FR.2202
+Server can register IoTivity service which can be found when inquiry scan time
+- CA should register the specific UUID to BT service.
+- The specific UUID should represent IoTivity service and be unique
+
+@paragraph cao_ddoc_fr2203 FR.2203
+Client can request bonding to the device has IoTivity server.
+- CA should request bonding to the device.
+- CA should delegate the bonding procedure to the platform
+
+@paragraph cao_ddoc_fr2204 FR.2204
+Server can accept / deny the bonding request from client device
+- CA should deletage the bonding procedure to the platform
+
+@paragraph cao_ddoc_fr2205 FR.2205
+Server / client can get the bonded device list from BT service
+
+@paragraph cao_ddoc_fr2206 FR.2206
+Server / client can communicate throuth the RFCOMM
+- Serial Port Profile( SPP ) should be provided by platform.
+- Platform should provide the fundamental operation functions to CA.
+  : connect(), accept(), disconnect(), send(), recv()
+
+@subsubsection cao_ddoc_freqs_control_ble Connectivity Control - BLE
+
+
+@paragraph cao_ddoc_fr2301 FR.2301
+Client can discover the device has IoTivity server when scan time.
+- CA should scan the device using the specific UUID
+- The specific UUID should represent IoTivity service ahd be unique
+
+@paragraph cao_ddoc_fr2302 FR.2302
+Server can register IoTivity service which can be found when
+advertising time
+- CA should register the specific UUID to BT service.
+- The specific UUID should represent IoTivity service and be unique
+
+@paragraph cao_ddoc_fr2303 FR.2303
+Client can request bonding to the device has IoTivity server.
+- CA should request bonding to the device.
+- CA should delegate the bonding procedure to the platform
+
+@paragraph cao_ddoc_fr2304 FR.2304
+Server can accept / deny the bonding request from client device
+- CA should deletage the bonding procedure to the platform
+
+@paragraph cao_ddoc_fr2305 FR.2305
+Server / client can get the bonded device list from BT service
+
+@paragraph cao_ddoc_fr2306 FR.2306
+Server / client can communicate throuth the RFCOMM
+- General Attribute Profile( GATT ) should be provided by platform.
+- Platform should provide the fundamental operation functions to CA.
+  : connect(), accept(), disconnect(), send(), recv()
+
+@paragraph cao_ddoc_fr2307 FR.2307
+Server / client can send more lager data than 23 bytes
+- (Optional) Platform may provide 'read long' and 'write long' feature of BLE
+- CA should fragment and reassemble the lager data
+
+
+@subsubsection cao_ddoc_freqs_control_zigbee Connectivity Control - ZigBee
+
+
+@paragraph cao_ddoc_fr2401 FR.2401
+Client can start forming the ZigBee network
+- Client means ZigBee coordinator device
+- ZigBee service should provide the way to start ZigBee network forming
+
+@paragraph cao_ddoc_fr2402 FR.2402
+Client can finish the formed ZigBee network
+- Client means ZigBee coordinator device
+- ZigBee service should provide the way to finish ZigBee network forming
+
+@paragraph cao_ddoc_fr2403 FR.2403
+Client can receive the event whenever the ZigBee end-device joins and leaves
+- CA should know the identifier of ZigBee end-device when joins and leaves.
+- CA should know the identifier of ZigBee end-device joined through ZigBee router when joins and leaves.
+- CA could select the ZigBee end-device to join
+
+@paragraph cao_ddoc_fr2404 FR.2404
+Client can convert common ZigBee cluster to IoTivity URI.
+- CA should convert the common ZigBee cluster to URI.
+- The common ZigBee cluster can be one of the clusters announced by ZigBee alliance.
+  : eg. Home Automation Profile, Smart Energy Profile, and so on.
+
+@paragraph cao_ddoc_fr2405 FR.2405
+Client can convert common ZigBee cluster attributes to IoTivity attributes
+- CA should convert the common ZigBee cluster to attribute of the URI.
+- The common ZigBee profile can be one of the clusters announced by ZigBee alliance.
+
+@paragraph cao_ddoc_fr2406 FR.2406
+Client can convert CoAP message to ZCL command
+- CA should convert CoAP message to ZCL command to send ZigBee end-device
+
+
+@subsubsection cao_ddoc_freqs_control_zwave Connectivity Control - ZWave
+
+
+@paragraph cao_ddoc_fr2501 FR.2501
+Client can start creating PAN ( ZWave network )
+- Client means ZWave controller device
+- ZWave service should provide the way to start ZWave network creation
+
+@paragraph cao_ddoc_fr2502 FR.2502
+Client can finish the created PAN ( ZWave network )
+- Client means ZWave controller device
+- ZWave service should provide the way to finish created ZWave network
+
+@paragraph cao_ddoc_fr2503 FR.2503
+Client can receive the event whenever the ZWave slave joins and leaves
+- CA should know the identifier of ZWave slave when joins and leaves.
+- CA should know the identifier of ZWave slave joined through ZWave router when joins and leaves.
+- CA could select the ZWave slave to join
+
+@paragraph cao_ddoc_fr2504 FR.2504
+Client can convert common ZWave device class to IoTivity URI
+- CA should convert the common ZWave device class to URI.
+- The common ZWave device class can be one of the device classes announced by ZWave alliance.
+
+@paragraph cao_ddoc_fr2505 FR.2505
+Client can convert common ZWave command class to IoTivity attribute
+- CA should convert the common ZWave command class to attribute of the URI.
+- The common ZWave command class can be one of the command classes announced by ZWave alliance.
+
+@paragraph cao_ddoc_fr2506 FR.2506
+Client can convert CoAP message to ZWave command
+- CA should convert CoAP message to command class to send ZWave slave
+
+
+@subsection cao_ddoc_qattr Quality Attributes
+
+
+@subsubsection cao_ddoc_qattr_reliability Reliability
+
+
+@paragraph cao_ddoc_nfr201 NFR.201
+Network availability detection
+- Maxinum number of messaging failure is 3 during 10 minutes in available network .
+- Terminate the connection when the number is over the maximum value.
+
+@paragraph cao_ddoc_nfr202 NFR.202
+Messaging
+- The transmitted message from source has to be deliverd to the destination completely.
+
+@subsubsection cao_ddoc_qattr_security Security
+
+
+@paragraph cao_ddoc_nfr301 NFR.301
+Transfer Channel Protection
+- should protect the transfer channel using DTLS in CoaP , authentication in BT and other mechanisms in connectivities
+
+@paragraph cao_ddoc_nfr302 NFR.302
+Message Protection ( TBD )
+- should be able to encrypt the message to protect using RSA??
+
+
+@subsubsection cao_ddoc_qattr_maintenance Maintenance
+
+
+@paragraph cao_ddoc_nfr501 NFR.501
+Modularization for connectivities
+- One connectivity module change shouldn't have an effect on the other connectivity module.
+
+@subsubsection cao_ddoc_qattr_portability Portability
+
+
+@paragraph cao_ddoc_nfr601 NFR.601
+Support on Ubuntu 12.04
+- The software should be ported on Ubuntu (12.04) without change.
+- The platform specific portion should be controlled by build configurations.
+
+@paragraph cao_ddoc_nfr602 NFR.602
+Support on Android 4.4 / 5.0 and higher
+- The software should be ported on Android v5.0 and higher without change.
+- The platform specific portion should be controlled by build configurations.
+- JNI block can be added
+
+@paragraph cao_ddoc_nfr603 NFR.603
+Support on Tizen v2.3 and higher
+- The software should be ported on Tizen v2.3 and higher without change.
+- The platform specific portion should be controlled by build configurations.
+
+@paragraph cao_ddoc_nfr604 NFR.604
+Support on Arduino Mega
+- The software should be ported on Arduino Mega without change.
+- Connectivity function can be supported through the various shields.
+- The platform specific portion should be controlled by build configurations.
+
+@paragraph cao_ddoc_nfr605 NFR.605
+Support on Arduino Due
+- The software should be ported on Arduino Due without change.
+- Connectivity function can be supported through the various shields.
+- The platform specific portion should be controlled by build configurations.
+
+
+@subsubsection cao_ddoc_qattr_extensibility Extensibility
+
+@paragraph cao_ddoc_nfr701 NFR.701
+Connectivity Extension
+- The Architecture change has to be minimized when expanding Connectivities.
+
+
+@subsection cao_ddoc_constraints Constraints
+
+
+@subsubsection cao_ddoc_constraints_licence License
+
+
+@paragraph cao_ddoc_con101 CON.101
+Open source license
+- All source codes should be released under Apache License v2 or compatible.
+
+*/
diff --git a/resource/docs/devdox/dot/ca_arch.gv b/resource/docs/devdox/dot/ca_arch.gv
new file mode 100644 (file)
index 0000000..43ae5cf
--- /dev/null
@@ -0,0 +1,283 @@
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+digraph G {
+    label = "Network Interface Creation";
+    fontsize = 10;
+
+    edge [
+        fontsize = 10
+    ]
+
+    node [
+        fontsize = 10,
+    ]
+
+ // ----
+
+    msg_handler [
+        shape = none
+        margin = 0
+        label = <<table border="1" cellspacing="0" cellborder="0">
+                    <tr><td port="a" tooltip="Message Handler" bgcolor="gray">Message Handler</td></tr>
+                    <hr/>
+                    <tr><td align="left" href="\ref g_threadPoolHandle" tooltip="-g_threadPoolHandle: u_thread_pool_t">-g_threadPoolHandle: u_thread_pool_t</td></tr>
+                    <tr><td align="left" href="\ref g_sendThread" tooltip="-g_sendThread: CAQueueingThread_t">-g_sendThread: CAQueueingThread_t</td></tr>
+                    <tr><td align="left" href="\ref g_receiveThread" tooltip="-g_receiveThread: CAQueueingThread_t">-g_receiveThread: CAQueueingThread_t</td></tr>
+                    <tr><td align="left" href="\ref g_retransmissionContext" tooltip="-g_retransmissionContext: CARetransmission_t">-g_retransmissionContext: CARetransmission_t</td></tr>
+                    <tr><td align="left" href="\ref g_requestHandler" tooltip="-g_requestHandler: CARequestCallback">-g_requestHandler: CARequestCallback</td></tr>
+                    <tr><td align="left" href="\ref g_responseHandler" tooltip="-g_responseHandler: CAResponseCallback">-g_responseHandler: CAResponseCallback</td></tr>
+                    <hr/>
+                    <tr><td align="left" href="\ref CAInitializeMessageHandler()" tooltip="+CAInitializeMessageHandler">+CAInitializeMessageHandler</td></tr>
+                    <tr><td align="left" href="\ref CATerminateMessageHandler()" tooltip="+CATerminateMessageHandler">+CATerminateMessageHandler</td></tr>
+                </table>>
+    ]
+
+    threadpool [
+        shape = none
+        margin = 0        
+        label = <<table border="1" cellspacing="0" cellborder="0">
+                    <tr><td href="\ref u_thread_pool_t" tooltip="u_threadpool_t" bgcolor="gray">u_threadpool_t</td></tr>
+                    <hr/>
+                    <tr><td> </td></tr>
+                    <hr/>
+                    <tr><td align="left" href="\ref u_thread_pool_init()" tooltip="+u_thread_pool_init">+u_thread_pool_init</td></tr>
+                    <tr><td align="left" href="\ref u_thread_pool_free()" tooltip="+u_thread_pool_free">+u_thread_pool_free</td></tr>
+                    <tr><td align="left" href="\ref u_thread_pool_add_task()" tooltip="+u_thread_pool_add_task">+u_thread_pool_add_task</td></tr>
+                </table>>
+    ]
+
+
+    thread_out [
+        shape = none
+        margin = 0        
+        label = <<table border="1" cellspacing="0" cellborder="0">
+                    <tr><td href="\ref CASendThreadProcess()" tooltip="Send Thread" bgcolor="gray">Send Thread</td></tr>
+                    <hr/>
+                    <tr><td> </td></tr>
+                    <hr/>
+                    <tr><td align="left" href="\ref CASendThreadProcess()" tooltip="+CASendThreadProcess">+CASendThreadProcess</td></tr>
+                </table>>
+    ]
+
+    thread_in [
+        shape = none
+        margin = 0        
+        label = <<table border="1" cellspacing="0" cellborder="0">
+                    <tr><td href="\ref CAReceiveThreadProcess()" tooltip="Receive Thread" bgcolor="gray">Receive Thread</td></tr>
+                    <hr/>
+                    <tr><td> </td></tr>
+                    <hr/>
+                    <tr><td align="left" href="\ref CAReceiveThreadProcess()" tooltip="+CAReceiveThreadProcess">+CAReceiveThreadProcess</td></tr>
+                </table>>
+    ]
+
+    thread_retrans [
+        shape = none
+        margin = 0        
+        label = <<table border="1" cellspacing="0" cellborder="0">
+                    <tr><td href="\ref CASendUnicastData()" tooltip="Retransmit Thread" bgcolor="gray">Retransmit Thread</td></tr>
+                    <hr/>
+                    <tr><td> </td></tr>
+                    <hr/>
+                    <tr><td align="left" href="\ref CASendUnicastData()" tooltip="+CASendUnicastData">+CASendUnicastData</td></tr>
+                </table>>
+    ]
+
+    control [
+        tooltip = "Interface Controller",
+        label = "{Interface Controller| +CAInitializeAdapters()\l\n \n }",
+        URL = "\ref CAInitializeAdapters()"
+
+
+        shape = none
+        margin = 0        
+        label = <<table border="1" cellspacing="0" cellborder="0">
+                    <tr><td href="\ref CAInitializeAdapters()" tooltip="Interface Controller" bgcolor="gray">Interface Controller</td></tr>
+                    <hr/>
+                    <tr><td align="left" href="\ref g_adapterHandler" tooltip="-g_adapterHandler: CAConnectivityHandler_t[]">-g_adapterHandler: CAConnectivityHandler_t[]</td></tr>
+                    <tr><td align="left" href="\ref g_networkPacketReceivedCallback" tooltip="-g_networkPacketReceivedCallback: CANetworkPacketReceivedCallback">-g_networkPacketReceivedCallback: CANetworkPacketReceivedCallback</td></tr>
+
+                    <tr><td align="left" href="\ref g_networkChangeCallback" tooltip="-g_networkChangeCallback: CANetworkChangeCallback">-g_networkChangeCallback: CANetworkChangeCallback</td></tr>
+                    <hr/>
+                    <tr><td align="left" href="\ref CAInitializeAdapters()" tooltip="+CAInitializeAdapters">+CAInitializeAdapters</td></tr>
+                    <tr><td align="left" href="\ref CATerminateAdapters()" tooltip="+CATerminateAdapters">+CATerminateAdapters</td></tr>
+                    <tr><td align="left" href="\ref CAStartAdapter()" tooltip="+CAStartAdapter">+CAStartAdapter</td></tr>
+                    <tr><td align="left" href="\ref CAStopAdapter()" tooltip="+CAStopAdapter">+CAStopAdapter</td></tr>
+                    <tr><td align="left" href="\ref CAGetNetworkInfo()" tooltip="+CAGetNetworkInfo">+CAGetNetworkInfo</td></tr>
+                    <tr><td align="left" href="\ref CAStartListeningServerAdapters()" tooltip="+CAStartListeningServerAdapters">+CAStartListeningServerAdapters</td></tr>
+                    <tr><td align="left" href="\ref CAStartDiscoveryServerAdapters()" tooltip="+CAStartDiscoveryServerAdapters">+CAStartDiscoveryServerAdapters</td></tr>
+                </table>>
+    ]
+
+
+    conn_handler [
+        shape = none
+        margin = 0        
+        label = <<table border="1" cellspacing="0" cellborder="0">
+                    <tr><td href="\ref CAConnectivityHandler_t" tooltip="CAConnectivityHandler_t" bgcolor="gray">CAConnectivityHandler_t</td></tr>
+                    <hr/>
+                    <tr><td> </td></tr>
+                    <hr/>
+                    <tr><td align="left" href="\ref CAConnectivityHandler_t::startAdapter" tooltip="+startAdapter: CAAdapterStart">+startAdapter: CAAdapterStart</td></tr>
+                    <tr><td align="left" href="\ref CAConnectivityHandler_t::startListenServer" tooltip="+startListenServer: CAAdapterStartListeningServer">+startListenServer: CAAdapterStartListeningServer</td></tr>
+                    <tr><td align="left" href="\ref CAConnectivityHandler_t::startDiscoveryServer" tooltip="+startDiscoveryServer: CAAdapterStartDiscoveryServer">+startDiscoveryServer: CAAdapterStartDiscoveryServer</td></tr>
+                    <tr><td align="left" href="\ref CAConnectivityHandler_t::sendData" tooltip="+sendData: CAAdapterSendUnitcastData">+sendData: CAAdapterSendUnitcastData</td></tr>
+                    <tr><td align="left" href="\ref CAConnectivityHandler_t::sendDataToAll" tooltip="+sendDataToAll: CAAdapterSendMulticastData">+sendDataToAll: CAAdapterSendMulticastData</td></tr>
+                    <tr><td align="left" href="\ref CAConnectivityHandler_t::GetnetInfo" tooltip="+GetnetInfo: CAAdapterGetNetworkInfo">+GetnetInfo: CAAdapterGetNetworkInfo</td></tr>
+                    <tr><td align="left" href="\ref CAConnectivityHandler_t::readData" tooltip="+readData: CAAdapterReadData">+readData: CAAdapterReadData</td></tr>
+                    <tr><td align="left" href="\ref CAConnectivityHandler_t::stopAdapter" tooltip="+stopAdapter: CAAdapterStop">+stopAdapter: CAAdapterStop</td></tr>
+                    <tr><td align="left" href="\ref CAConnectivityHandler_t::terminate" tooltip="+terminate: CAAdapterTerminate">+terminate: CAAdapterTerminate</td></tr>
+                </table>>
+
+
+    ]
+
+    adapt01 [
+        shape = none
+        margin = 0
+        label = <<table border="1" cellspacing="0" cellborder="0">
+                    <tr><td href="\ref CAInitializeEthernet" tooltip="Ethernet Adapter" bgcolor="gray">Ethernet Adapter</td></tr>
+                    <hr/>
+                    <tr><td> </td></tr>
+                    <hr/>
+                    <tr><td align="left" href="\ref CAInitializeEthernet" tooltip="+CAInitializeEthernet">+CAInitializeEthernet</td></tr>
+                    <tr><td align="left" href="\ref CATerminateEthernet()" tooltip="+CATerminateEthernet">+CATerminateEthernet</td></tr>
+                    <tr><td align="left" href="\ref CAStartEthernet()" tooltip="+CAStartEthernet">+CAStartEthernet</td></tr>
+                    <tr><td align="left" href="\ref CAStopEthernet()" tooltip="+CAStopEthernet">+CAStopEthernet</td></tr>
+                    <tr><td align="left" href="\ref CAStartEthernetListeningServer()" tooltip="+CAStartEthernetListeningServer">+CAStartEthernetListeningServer</td></tr>
+                    <tr><td align="left" href="\ref CAStartEthernetDiscoveryServer()" tooltip="+CAStartEthernetDiscoveryServer">+CAStartEthernetDiscoveryServer</td></tr>
+                    <tr><td align="left" href="\ref CAGetEthernetInterfaceInformation" tooltip="+CAGetEthernetInterfaceInformation">+CAGetEthernetInterfaceInformation</td></tr>
+                    <tr><td align="left" href="\ref CASendEthernetUnicastData()" tooltip="+CASendEthernetUnicastData">+CASendEthernetUnicastData</td></tr>
+                    <tr><td align="left" href="\ref CASendEthernetMulticastData()" tooltip="+CASendEthernetMulticastData">+CASendEthernetMulticastData</td></tr>
+                    <tr><td align="left" href="\ref CAReadEthernetData()" tooltip="+CAReadEthernetData">+CAReadEthernetData</td></tr>
+                </table>>
+    ]
+
+    adapt02 [
+        tooltip = "WiFi Adapter",
+        label = "{WiFi Adapter| +CAInitializeWifi()\l\n \n }",
+        URL = "\ref CAInitializeWifi()"
+
+        shape = none
+        margin = 0
+        label = <<table border="1" cellspacing="0" cellborder="0">
+                    <tr><td href="\ref CAInitializeWifi" tooltip="WiFi Adapter" bgcolor="gray">WiFi Adapter</td></tr>
+                    <hr/>
+                    <tr><td> </td></tr>
+                    <hr/>
+                    <tr><td align="left" href="\ref CAInitializeWifi()" tooltip="+CAInitializeWifi">+CAInitializeWifi</td></tr>
+                    <tr><td align="left" href="\ref CATerminateWIFI()" tooltip="+CATerminateWIFI">+CATerminateWIFI</td></tr>
+                    <tr><td align="left" href="\ref CAStartWIFI()" tooltip="+CAStartWIFI">+CAStartWIFI</td></tr>
+                    <tr><td align="left" href="\ref CAStopWIFI()" tooltip="+CAStopWIFI">+CAStopWIFI</td></tr>
+                    <tr><td align="left" href="\ref CAStartWIFIListeningServer()" tooltip="+CAStartWIFIListeningServer">+CAStartWIFIListeningServer</td></tr>
+                    <tr><td align="left" href="\ref CAStartWIFIDiscoveryServer()" tooltip="+CAStartWIFIDiscoveryServer">+CAStartWIFIDiscoveryServer</td></tr>
+                    <tr><td align="left" href="\ref CAGetWIFIInterfaceInformation()" tooltip="+CAGetWIFIInterfaceInformation">+CAGetWIFIInterfaceInformation</td></tr>
+                    <tr><td align="left" href="\ref CASendWIFIUnicastData()" tooltip="+CASendWIFIUnicastData">+CASendWIFIUnicastData</td></tr>
+                    <tr><td align="left" href="\ref CASendWIFIMulticastData()" tooltip="+CASendWIFIMulticastData">+CASendWIFIMulticastData</td></tr>
+                    <tr><td align="left" href="\ref CAReadWIFIData()" tooltip="+CAReadWIFIData">+CAReadWIFIData</td></tr>
+                </table>>
+    ]
+
+    adapt03 [
+        tooltip = "EDR Adapter",
+        label = "{EDR Adapter| +CAInitializeEDR()\l\n \n }",
+        URL = "\ref CAInitializeEDR()"
+
+        shape = none
+        margin = 0
+        label = <<table border="1" cellspacing="0" cellborder="0">
+                    <tr><td href="\ref CAInitializeEDR" tooltip="EDR Adapter" bgcolor="gray">EDR Adapter</td></tr>
+                    <hr/>
+                    <tr><td> </td></tr>
+                    <hr/>
+                    <tr><td align="left" href="\ref CAInitializeEDR" tooltip="+CAInitializeEDR">+CAInitializeEDR</td></tr>
+                    <tr><td align="left" href="\ref CATerminateEDR()" tooltip="+CATerminateEDR">+CATerminateEDR</td></tr>
+                    <tr><td align="left" href="\ref CAStartEDR()" tooltip="+CAStartEDR">+CAStartEDR</td></tr>
+                    <tr><td align="left" href="\ref CAStopEDR()" tooltip="+CAStopEDR">+CAStopEDR</td></tr>
+                    <tr><td align="left" href="\ref CAStartEDRListeningServer()" tooltip="+CAStartEDRListeningServer">+CAStartEDRListeningServer</td></tr>
+                    <tr><td align="left" href="\ref CAStartEDRDiscoveryServer()" tooltip="+CAStartEDRDiscoveryServer">+CAStartEDRDiscoveryServer</td></tr>
+                    <tr><td align="left" href="\ref CAGetEDRInterfaceInformation" tooltip="+CAGetEDRInterfaceInformation">+CAGetEDRInterfaceInformation</td></tr>
+                    <tr><td align="left" href="\ref CASendEDRUnicastData()" tooltip="+CASendEDRUnicastData">+CASendEDRUnicastData</td></tr>
+                    <tr><td align="left" href="\ref CASendEDRMulticastData()" tooltip="+CASendEDRMulticastData">+CASendEDRMulticastData</td></tr>
+                    <tr><td align="left" href="\ref CAReadEDRData()" tooltip="+CAReadEDRData">+CAReadEDRData</td></tr>
+                </table>>
+    ]
+
+    adapt04 [
+        tooltip = "LE Adapter",
+        label = "{LE Adapter| +CAInitializeLE()\l\n \n }",
+        URL = "\ref CAInitializeLE()"
+
+        shape = none
+        margin = 0
+        label = <<table border="1" cellspacing="0" cellborder="0">
+                    <tr><td href="\ref CAInitializeLE" tooltip="LE Adapter" bgcolor="gray">LE Adapter</td></tr>
+                    <hr/>
+                    <tr><td> </td></tr>
+                    <hr/>
+                    <tr><td align="left" href="\ref CAInitializeLE()" tooltip="+CAInitializeLE">+CAInitializeLE</td></tr>
+                    <tr><td align="left" href="\ref CATerminateLE()" tooltip="+CATerminateLE">+CATerminateLE</td></tr>
+                    <tr><td align="left" href="\ref CAStartLE()" tooltip="+CAStartLE">+CAStartLE</td></tr>
+                    <tr><td align="left" href="\ref CAStopLE" tooltip="+CAStopLE">+CAStopLE</td></tr>
+                    <tr><td align="left" href="\ref CAStartLEListeningServer()" tooltip="+CAStartLEListeningServer">+CAStartLEListeningServer</td></tr>
+                    <tr><td align="left" href="\ref CAStartLEDiscoveryServer()" tooltip="+CAStartLEDiscoveryServer">+CAStartLEDiscoveryServer</td></tr>
+                    <tr><td align="left" href="\ref CAGetLEInterfaceInformation()" tooltip="+CAGetLEInterfaceInformation">+CAGetLEInterfaceInformation</td></tr>
+                    <tr><td align="left" href="\ref CASendLEUnicastData()" tooltip="+CASendLEUnicastData">+CASendLEUnicastData</td></tr>
+                    <tr><td align="left" href="\ref CASendLEMulticastData()" tooltip="+CASendLEMulticastData">+CASendLEMulticastData</td></tr>
+                    <tr><td align="left" href="\ref CAReadLEData()" tooltip="+CAReadLEData">+CAReadLEData</td></tr>
+                </table>>
+    ]
+
+
+    // UML Inheritance relationships
+    edge [
+        arrowtail = open,
+        dir = back
+    ]
+
+    {
+        conn_handler -> adapt01
+        conn_handler -> adapt02
+        conn_handler -> adapt03
+        conn_handler -> adapt04
+    }
+
+    // UML Aggregation relationships
+    edge [
+        arrowtail = odiamond,
+        dir = back
+    ]
+
+    msg_handler -> control
+    msg_handler -> threadpool
+    msg_handler -> thread_out
+    msg_handler -> thread_in
+    msg_handler -> thread_retrans
+    control -> conn_handler
+
+
+    // Additional 'layout' tweaks
+    {rank = same control threadpool thread_out thread_in thread_retrans}
+    edge [
+        style = invis
+    ]
+    threadpool -> thread_out -> control -> thread_in -> thread_retrans
+}
diff --git a/resource/docs/devdox/dot/ca_arch_sketch.gv b/resource/docs/devdox/dot/ca_arch_sketch.gv
new file mode 100644 (file)
index 0000000..fd6f322
--- /dev/null
@@ -0,0 +1,90 @@
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+digraph G {
+    label = "Network Interface Creation";
+    fontsize = 10;
+
+    edge [
+        fontsize = 10
+    ]
+
+    node [
+        fontsize = 10,
+        shape = "record"
+    ]
+
+ // ----
+
+    msg_handler [
+        label = "{Message Handler| | }",
+        tooltip = "Message Handler",
+        URL = "\ref caf_ovr_comm_netinterface_msg"
+    ]
+
+    control [
+        label = "{Interface controller| | }",
+        tooltip = "Interface controller",
+        URL = "\ref caf_ovr_comm_netinterface_control"
+    ]
+
+    adapt01 [
+        label = "{Ethernet Adapter| | }",
+        tooltip = "Ethernet Adapter",
+        URL = "\ref caf_ovr_comm_netinterface_eth"
+    ]
+
+    adapt02 [
+        label = "{WiFi Adapter| | }",
+        tooltip = "WiFi Adapter",
+        URL = "\ref caf_ovr_comm_netinterface_wifi"
+    ]
+
+    adapt03 [
+        label = "{EDR Adapter| | }",
+        tooltip = "EDR Adapter",
+        URL = "\ref caf_ovr_comm_netinterface_edr"
+    ]
+
+    adapt04 [
+        label = "{LE Adapter| | }"
+        tooltip = "LE Adapter",
+        URL = "\ref caf_ovr_comm_netinterface_le"
+    ]
+
+    // UML Aggregation relationships
+    edge [
+        arrowtail = odiamond,
+        dir = back
+    ]
+
+    msg_handler -> control
+
+    // UML Composition relationships
+    edge [
+        arrowtail = diamond,
+        dir = back
+    ]
+
+    control -> adapt01
+    control -> adapt02
+    control -> adapt03
+    control -> adapt04
+}
diff --git a/resource/docs/devdox/dot/ca_overview.gv b/resource/docs/devdox/dot/ca_overview.gv
new file mode 100644 (file)
index 0000000..2ac92d7
--- /dev/null
@@ -0,0 +1,197 @@
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+// Note that this diagram is not the best example of efficient
+// graphviz/doxygen use. It was recreating the look of an existing
+// graphic and thus is focused too much on appearance over
+// functionality.
+//
+
+digraph G {
+    label = "Abstracted Architecture";
+
+    z [
+        label = "Resource Introspection",
+        shape = box,
+        style = filled,
+        fillcolor="#efefef:#bdbdbd",
+        gradientangle=270,
+        width=8
+    ];
+
+    subgraph cluster_0 {
+        label = "Connectivity Framework";
+        labeljust="l";
+
+        yy [
+            label = "Connectivity API",
+            shape = box,
+            style = filled,
+            color = "#4a7bbd",
+            fillcolor="#e6efff:#a5c5ff",
+            gradientangle=270,
+            width=8
+        ];
+
+        subgraph cluster_1 {
+            label = "Control layer";
+            style=filled;
+            color = "#4a7bbd";
+            fillcolor="#e6efff:#a5c5ff";
+            gradientangle=270;
+
+            node [
+                style=filled,
+                color="#9cbd52",
+                fillcolor="#f7ffe6:#deffad",
+                gradientangle=270,
+                shape=box
+            ];
+
+            a0 [label="Network\nConfiguration"];
+            a1 [label="CoAP\nProtocol"];
+            a2 [label="Interface\nController"];
+
+            {rank = same a0 a1 a2}
+        }
+
+        subgraph cluster_2 {
+            label = "Transport Adapter";
+            style=filled;
+            color = "#4a7bbd"
+            fillcolor="#e6efff:#a5c5ff";
+            gradientangle=270;
+            node [
+                style=filled,
+                color="#9cbd52",
+                fillcolor="#f7ffe6:#deffad",
+                gradientangle=270,
+                shape=box
+            ];
+
+            bb [label = "Common Adapter Interface", width=5];
+
+            b0 [label="IP\nAdapter"];
+            b1 [label="LE GATT\nAdapter"];
+            b2 [label="BT SPP\nAdapter"];
+            b3 [label="XXX\nAdapter"];
+
+            {rank = same b0 b1 b2 b3}
+        }
+
+        subgraph cluster_3 {
+            label = "Platform Adapter";
+            style=filled;
+            color = "#4a7bbd"
+            fillcolor="#e6efff:#a5c5ff";
+            gradientangle=270;
+            node [
+                style=filled
+                color="#7b5aa5"
+                fillcolor="#f7e6f7:#c5b5ef";
+                gradientangle=270;
+                shape=box
+            ];
+
+            c0 [label="Ubuntu\nAdapter\n(ETH/WIFI/BT)"];
+            c1 [label="Android\nAdapter\n(WIFI/BLE/BT)"];
+            c2 [label="Tizen\nAdapter\n(WIFI/BLE/BT)"];
+            c3 [label="Arduino\nAdapter\n(ETH/WIFI/BLE)"];
+            c4 [label="Platform\n(6loWPAN)\n ", color="#f7e6f7"];
+
+            {rank = same c0 c1 c2 c3 c4}
+        }
+    }
+
+    {
+        node [
+            style = filled,
+            fillcolor="#efefef:#bdbdbd",
+            gradientangle=270,
+            shape=box
+        ];
+
+        d0 [label="Ubuntu"];
+        d1 [label="Android"];
+        d2 [label="Tizen"];
+        d3 [label="Arduino"];
+        d4 [label="????"];
+
+        {rank = same d0 d1 d2 d3 d4}
+    }
+
+    subgraph cluster_lgd {
+        label = "Legend";
+
+        node [
+            style = filled,
+            width=0.25,
+            height=0.25,
+            fixedsize=true,
+            shape=box,
+            gradientangle=270
+        ];
+
+        e0 [label=" ", color="#4a7bbd", fillcolor="#e6efff:#a5c5ff"];
+        e1 [label=" ", color="#9cbd52", fillcolor="#f7ffe6:#deffad"];
+        e2 [label=" ", color="#7b5aa5", fillcolor="#f7e6f7:#c5b5ef"];
+        e3 [label=" ", fillcolor="#efefef:#bdbdbd"];
+        e_dummy[shape=point, style=invis];
+
+        edge [penwidth=0,
+              arrowhead=none,
+              fontsize=10];
+        e0 -> e1 [label="CA Component    "];
+        e1 -> e2 [label="CA Module-platform independent    "];
+        e2 -> e3 [label="CA Module-platform specific    "];
+        e3 -> e_dummy [label="External"];
+
+        {rank = same e0 e1 e2 e3 e_dummy}
+    }
+
+    // In order to control placement of the sets of items in a
+    // top-to-bottom placement, invisible edges/arrows are used.
+    // This gives a logcial control for the physical appearance we want.
+    {
+        edge[style = invis];
+
+        // order groups to get top-to-bottom
+        z -> yy
+        yy -> {a0 a2}
+        a1 -> bb
+        {a0 a2} -> {b1 b2}
+        bb -> {b1 b2}
+        {b0 b1 b2 b3} -> c2
+        c0 -> d0
+        c1 -> d1
+        c2 -> d2
+        c3 -> d3
+        d0 -> e0
+        {d2} -> {e1 e2}
+        d4 -> e3
+
+        // order nodes left-to-right
+        a0 -> a1 -> a2
+        b0 -> b1 -> b2 -> b3
+        c0 -> c1 -> c2 -> c3 -> c4
+        d0 -> d1 -> d2 -> d3 -> d4
+        e0 -> e1 -> e2 -> e3
+    }
+}
diff --git a/resource/docs/devdox/mainpage.dox b/resource/docs/devdox/mainpage.dox
new file mode 100644 (file)
index 0000000..b2dc361
--- /dev/null
@@ -0,0 +1,43 @@
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+/**
+@mainpage
+
+This is documentation intended for internal use of developers actually
+working on the implementation code itself. At the moment this specific page
+is just a simplified placeholder.
+
+<hr>
+
+Quick starting points:
+
+- @ref ca_overview which replicates an existing requirements doc.
+  - An overview diagram in that document: @ref cao_overview
+- @ref ca_functional Minimal sample showing how diagrams and code doc can be
+  integrated.
+  - @ref caf_ovr_comm_netinterface a section with a minimal UML sketch
+  - @ref caf_ovr_comm_netinterface_detail a more detailed UML diagram
+- The 'Related Pages' tab
+
+Then see CAEthernetInitializeServer() for...
+- CAInitializeEthernet()
+- other
+*/
\ No newline at end of file