[IOT-1551] Tizen: Support Ethernet/3G Status Monitoring in IP Adapter
authorhyuna0213.jo <hyuna0213.jo@samsung.com>
Fri, 28 Oct 2016 04:18:54 +0000 (13:18 +0900)
committerAshok Babu Channa <ashok.channa@samsung.com>
Mon, 21 Nov 2016 16:33:10 +0000 (16:33 +0000)
Currently Wifi status monitoring is supported for tizen.
To support Ethernet/3G status monitoring in IP Adapter,
Wifi Manager is replaced with Connection Manager.

Change-Id: Ie5350269c152a42267218749952ab47171b865be
Signed-off-by: hyuna0213.jo <hyuna0213.jo@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/13711
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Abhishek Sharma <ce.abhishek@samsung.com>
Reviewed-by: Ashok Babu Channa <ashok.channa@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/14317
Reviewed-by: Phil Coval <philippe.coval@osg.samsung.com>
Reviewed-by: Jaehong Jo <jaehong.jo@samsung.com>
resource/csdk/connectivity/build/tizen/packaging/com.oic.ca.spec
resource/csdk/connectivity/build/tizen/scons/SConscript
resource/csdk/connectivity/src/ip_adapter/tizen/SConscript
resource/csdk/connectivity/src/ip_adapter/tizen/caipnwmonitor.c
resource/csdk/stack/samples/tizen/SimpleClientServer/packaging/com.oic.ri.sample.spec
resource/csdk/stack/samples/tizen/SimpleClientServer/scons/SConscript
resource/csdk/stack/samples/tizen/build/packaging/com.oic.ri.spec
resource/csdk/stack/samples/tizen/build/scons/SConscript
service/easy-setup/sampleapp/enrollee/tizen-sdb/EnrolleeSample/packaging/com.oic.es.sample.spec
tools/tizen/iotivity.spec

index 96b19b8..30d1941 100644 (file)
@@ -31,6 +31,7 @@ Source0: http://mirrors.kernel.org/%{name}/%{version}/%{name}-%{version}.tar.gz
 
 BuildRequires: pkgconfig(dlog)
 BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(capi-network-connection)
 BuildRequires: pkgconfig(capi-network-wifi)
 BuildRequires: pkgconfig(capi-network-bluetooth)
 BuildRequires: boost-devel
index 5dc9883..88be35d 100644 (file)
@@ -20,7 +20,7 @@ else:
 if env.get('LOGGING'):
     env.AppendUnique(CPPDEFINES = ['TB_LOG'])
 
-env.ParseConfig("pkg-config --cflags --libs capi-network-wifi dlog glib-2.0")
+env.ParseConfig("pkg-config --cflags --libs capi-network-wifi capi-network-connection dlog glib-2.0")
 if 'ALL' in transport:
                env.AppendUnique(CPPDEFINES = ['WIFI_ADAPTER', 'NO_ETHERNET_ADAPTER','EDR_ADAPTER','LE_ADAPTER'])
                print "CA Transport is ALL"
@@ -53,4 +53,4 @@ else:
 env.SConscript(['../con/lib/libcoap-4.1.1/SConscript'])
 env.SConscript(['../con/SConscript'])
 env.SConscript(['../con/c_common/SConscript'])
-env.SConscript(['../con/logger/SConscript'])
\ No newline at end of file
+env.SConscript(['../con/logger/SConscript'])
index 249d73c..560891e 100644 (file)
@@ -5,7 +5,7 @@
 Import('env', 'src_dir')
 import os.path
 
-env.ParseConfig("pkg-config --cflags --libs capi-network-wifi")
+env.ParseConfig("pkg-config --cflags --libs capi-network-wifi capi-network-connection")
 
 src_files = [ 'caipnwmonitor.c' ]
 
index 8e0de54..ef7291e 100644 (file)
@@ -18,8 +18,6 @@
 *
 ******************************************************************/
 
-#include "caipinterface.h"
-
 #include <sys/types.h>
 #include <ifaddrs.h>
 #include <net/if.h>
 #include <errno.h>
 #include <unistd.h>
 #include <sys/ioctl.h>
-#include <wifi.h>
 #include <linux/netlink.h>
 #include <linux/rtnetlink.h>
 #include <arpa/inet.h>
 #include <netinet/in.h>
+#include <wifi.h>
+#include <net_connection.h>
 
+#include "caipinterface.h"
 #include "caipnwmonitor.h"
 #include "caadapterutils.h"
 #include "logger.h"
 #include "oic_string.h"
 #include <coap/utlist.h>
 
-#define TAG "IP_MONITOR"
+#define TAG "OIC_CA_IP_MONITOR"
+
 #define NETLINK_MESSAGE_LENGTH  (4096)
 #define IFC_LABEL_LOOP          "lo"
 #define IFC_ADDR_LOOP_IPV4      "127.0.0.1"
 #define IFC_ADDR_LOOP_IPV6      "::1"
 
 /**
+ * Used to storing a connection handle for managing data connections.
+ */
+static connection_h connection = NULL;
+
+/**
  * Used to storing adapter changes callback interface.
  */
 static struct CAIPCBData_t *g_adapterCallbackList = NULL;
@@ -73,13 +79,7 @@ static void CAIPPassNetworkChangesToAdapter(CANetworkStatus_t status);
 /**
  * Callback function to received connection state changes.
  */
-static void CAWIFIConnectionStateChangedCb(wifi_connection_state_e state, wifi_ap_h ap,
-                                           void *userData);
-
-/**
- * Callback function to received device state changes.
- */
-static void CAWIFIDeviceStateChangedCb(wifi_device_state_e state, void *userData);
+static void CAIPConnectionStateChangedCb(connection_type_e type, void* userData);
 
 int CAGetPollingInterval(int interval)
 {
@@ -195,29 +195,27 @@ CAResult_t CAIPStartNetworkMonitor(CAIPAdapterStateChangeCallback callback,
 
     if (!g_adapterCallbackList)
     {
-        // Initialize Wifi service
-       wifi_error_e ret = wifi_initialize();
-       if (WIFI_ERROR_NONE != ret)
-       {
-           OIC_LOG(ERROR, TAG, "wifi_initialize failed");
-           return CA_STATUS_FAILED;
-       }
-
-       // Set callback for receiving state changes
-       ret = wifi_set_device_state_changed_cb(CAWIFIDeviceStateChangedCb, NULL);
-       if (WIFI_ERROR_NONE != ret)
-       {
-           OIC_LOG(ERROR, TAG, "wifi_set_device_state_changed_cb failed");
-           return CA_STATUS_FAILED;
-       }
-
-       // Set callback for receiving connection state changes
-       ret = wifi_set_connection_state_changed_cb(CAWIFIConnectionStateChangedCb, NULL);
-       if (WIFI_ERROR_NONE != ret)
-       {
-           OIC_LOG(ERROR, TAG, "wifi_set_connection_state_changed_cb failed");
-           return CA_STATUS_FAILED;
-       }
+        // Initialize Wifi service.
+        if (WIFI_ERROR_NONE != wifi_initialize())
+        {
+            OIC_LOG(ERROR, TAG, "wifi_initialize failed");
+        }
+
+        // Initialize Connections.
+        connection_error_e ret = connection_create(&connection);
+        if (CONNECTION_ERROR_NONE != ret)
+        {
+            OIC_LOG(ERROR, TAG, "connection_create failed");
+            return CA_STATUS_FAILED;
+        }
+
+        // Set callback for receiving state changes.
+        ret = connection_set_type_changed_cb(connection, CAIPConnectionStateChangedCb, NULL);
+        if (CONNECTION_ERROR_NONE != ret)
+        {
+            OIC_LOG(ERROR, TAG, "connection_set_type_changed_cb failed");
+            return CA_STATUS_FAILED;
+        }
     }
 
     return CAIPSetNetworkMonitorCallback(callback, adapter);
@@ -230,26 +228,29 @@ CAResult_t CAIPStopNetworkMonitor(CATransportAdapter_t adapter)
     CAIPUnSetNetworkMonitorCallback(adapter);
     if (!g_adapterCallbackList)
     {
-        // Reset callback for receiving state changes
-       wifi_error_e ret = wifi_unset_device_state_changed_cb();
-       if (WIFI_ERROR_NONE != ret)
-       {
-           OIC_LOG(ERROR, TAG, "wifi_unset_device_state_changed_cb failed");
-       }
-
-       // Reset callback for receiving connection state changes
-       ret = wifi_unset_connection_state_changed_cb();
-       if (WIFI_ERROR_NONE != ret)
-       {
-           OIC_LOG(ERROR, TAG, "wifi_unset_connection_state_changed_cb failed");
-       }
-
-       // Deinitialize Wifi service
-       ret = wifi_deinitialize();
-       if (WIFI_ERROR_NONE != ret)
-       {
-           OIC_LOG(ERROR, TAG, "wifi_deinitialize failed");
-       }
+        // Deinitialize Wifi service.
+        if (WIFI_ERROR_NONE != wifi_deinitialize())
+        {
+            OIC_LOG(ERROR, TAG, "wifi_deinitialize failed");
+        }
+
+        // Reset callback for receiving state changes.
+        if (connection)
+        {
+            connection_error_e ret = connection_unset_type_changed_cb(connection);
+            if (CONNECTION_ERROR_NONE != ret)
+            {
+                OIC_LOG(ERROR, TAG, "connection_unset_type_changed_cb failed");
+            }
+
+            // Deinitialize Wifi service.
+            ret = connection_destroy(connection);
+            if (CONNECTION_ERROR_NONE != ret)
+            {
+                OIC_LOG(ERROR, TAG, "connection_destroy failed");
+            }
+            connection = NULL;
+        }
     }
 
     return CA_STATUS_OK;
@@ -392,43 +393,27 @@ static CAInterface_t *CANewInterfaceItem(int index, char *name, int family,
     return ifitem;
 }
 
-void CAWIFIConnectionStateChangedCb(wifi_connection_state_e state, wifi_ap_h ap,
-                                    void *userData)
+void CAIPConnectionStateChangedCb(connection_type_e type, void* userData)
 {
-    OIC_LOG(DEBUG, TAG, "IN");
-
-    if (WIFI_CONNECTION_STATE_ASSOCIATION == state
-        || WIFI_CONNECTION_STATE_CONFIGURATION == state)
+    switch (type)
     {
-        OIC_LOG(DEBUG, TAG, "Connection is in Association State");
-        return;
+        case CONNECTION_TYPE_DISCONNECTED:
+            OIC_LOG(DEBUG, TAG, "Connection is in CONNECTION_TYPE_DISCONNECTED");
+            CAIPPassNetworkChangesToAdapter(CA_INTERFACE_DOWN);
+            break;
+        case CONNECTION_TYPE_ETHERNET:
+            OIC_LOG(DEBUG, TAG, "Connection is in CONNECTION_TYPE_ETHERNET");
+            CAIPPassNetworkChangesToAdapter(CA_INTERFACE_UP);
+            break;
+        case CONNECTION_TYPE_WIFI:
+            OIC_LOG(DEBUG, TAG, "Connection is in CONNECTION_TYPE_WIFI");
+            CAIPPassNetworkChangesToAdapter(CA_INTERFACE_UP);
+            break;
+        case CONNECTION_TYPE_CELLULAR:
+            OIC_LOG(DEBUG, TAG, "Connection is in CONNECTION_TYPE_CELLULAR");
+            CAIPPassNetworkChangesToAdapter(CA_INTERFACE_UP);
+            break;
+        default:
+            break;
     }
-
-    if (WIFI_CONNECTION_STATE_CONNECTED == state)
-    {
-        CAIPPassNetworkChangesToAdapter(CA_INTERFACE_UP);
-    }
-    else
-    {
-        CAIPPassNetworkChangesToAdapter(CA_INTERFACE_DOWN);
-    }
-
-    OIC_LOG(DEBUG, TAG, "OUT");
-}
-
-void CAWIFIDeviceStateChangedCb(wifi_device_state_e state, void *userData)
-{
-    OIC_LOG(DEBUG, TAG, "IN");
-
-    if (WIFI_DEVICE_STATE_ACTIVATED == state)
-    {
-        OIC_LOG(DEBUG, TAG, "Wifi is in Activated State");
-    }
-    else
-    {
-        CAWIFIConnectionStateChangedCb(WIFI_CONNECTION_STATE_DISCONNECTED, NULL, NULL);
-        OIC_LOG(DEBUG, TAG, "Wifi is in Deactivated State");
-    }
-
-    OIC_LOG(DEBUG, TAG, "OUT");
 }
index e9b6ac9..5396cbc 100644 (file)
@@ -37,6 +37,7 @@ BuildRequires: boost-devel
 BuildRequires: boost-thread
 BuildRequires: boost-system
 BuildRequires: boost-filesystem
+BuildRequires: pkgconfig(capi-network-connection)
 BuildRequires: pkgconfig(capi-network-wifi)
 BuildRequires: pkgconfig(capi-network-bluetooth)
 BuildRequires: scons
index d5f28f2..b03b189 100644 (file)
@@ -32,7 +32,7 @@ sample_dir = build_dir
 
 print "MQ flag is %s" % with_mq
 
-env.AppendUnique(CPPFLAGS = ['-std=c++0x', '-fPIC', '-D__TIZEN__','-DWITH_POSIX', '-Wall', '-DSLP_SDK_LOG', '-g','-D_GNU_SOURCE','-DTIZEN_DEBUG_ENABLE', '-DTB_LOG','`pkg-config', '--cflags', '--libs','dlog', 'com.oic.ri', 'capi-network-wifi',
+env.AppendUnique(CPPFLAGS = ['-std=c++0x', '-fPIC', '-D__TIZEN__','-DWITH_POSIX', '-Wall', '-DSLP_SDK_LOG', '-g','-D_GNU_SOURCE','-DTIZEN_DEBUG_ENABLE', '-DTB_LOG','`pkg-config', '--cflags', '--libs','dlog', 'com.oic.ri', 'capi-network-wifi', 'capi-network-connection',
                                'gobject-2.0','glib-2.0`'])
 
 if routing == 'GW':
@@ -44,7 +44,7 @@ if env.get('WITH_PROXY'):
        env.AppendUnique(CPPDEFINES = ['WITH_CHPROXY'])
        
 env.Append(LIBS=[
-  'm', 'pthread', 'rt', 'dl', 'stdc++', 'gobject-2.0', 'gio-2.0', 'glib-2.0', 'capi-network-wifi', 'dlog', 'capi-network-bluetooth', 'connectivity_abstraction', 'coap', 'octbstack', 'ocsrm', 'c_common'
+  'm', 'pthread', 'rt', 'dl', 'stdc++', 'gobject-2.0', 'gio-2.0', 'glib-2.0', 'capi-network-wifi', 'capi-network-connection', 'dlog', 'capi-network-bluetooth', 'connectivity_abstraction', 'coap', 'octbstack', 'ocsrm', 'c_common'
 ])
 
 if secured == '1':
index 997a35b..7b41821 100644 (file)
@@ -34,6 +34,7 @@ Source0: http://mirrors.kernel.org/%{name}/%{version}/%{name}-%{version}.tar.gz
 
 BuildRequires: pkgconfig(dlog)
 BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(capi-network-connection)
 BuildRequires: pkgconfig(capi-network-wifi)
 BuildRequires: pkgconfig(capi-network-bluetooth)
 BuildRequires: pkgconfig(uuid)
index 0382f4f..24750a6 100644 (file)
@@ -20,7 +20,7 @@ else:
 if env.get('LOGGING'):
     env.AppendUnique(CPPDEFINES = ['TB_LOG'])
 
-env.ParseConfig("pkg-config --cflags --libs capi-network-wifi dlog glib-2.0")
+env.ParseConfig("pkg-config --cflags --libs capi-network-wifi capi-network-connection dlog glib-2.0")
 if 'ALL' in transport:
                env.AppendUnique(CPPDEFINES = ['WIFI_ADAPTER', 'NO_ETHERNET_ADAPTER','EDR_ADAPTER','LE_ADAPTER'])
                print "CA Transport is ALL"
index 8981c73..fbf1fb6 100644 (file)
@@ -37,6 +37,7 @@ BuildRequires: boost-devel
 BuildRequires: boost-thread
 BuildRequires: boost-system
 BuildRequires: boost-filesystem
+BuildRequires: pkgconfig(capi-network-connection)
 BuildRequires: pkgconfig(capi-network-wifi)
 BuildRequires: pkgconfig(capi-network-bluetooth)
 BuildRequires: scons
index 115b4e0..7c72113 100644 (file)
@@ -87,6 +87,7 @@ BuildRequires:  pkgconfig(glib-2.0)
 BuildRequires:  pkgconfig(sqlite3)
 %if "%{TARGET_OS}" == "tizen"
 BuildRequires:  pkgconfig(dlog)
+BuildRequires:  pkgconfig(capi-network-connection)
 BuildRequires:  pkgconfig(capi-network-wifi)
 BuildRequires:  pkgconfig(capi-network-bluetooth) >= 0.1.52
 %endif