//****************************************************************** // // 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
@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. */