Use connman's StateChangedProperties to process service state 31/245031/5 accepted/tizen/unified/20210122.123010 submit/tizen/20201106.060323 submit/tizen/20201116.030352 submit/tizen/20201127.052752 submit/tizen/20201217.131910 submit/tizen/20201229.102954 submit/tizen/20210119.130611
authorNishant Chaprana <n.chaprana@samsung.com>
Mon, 2 Nov 2020 11:15:20 +0000 (16:45 +0530)
committerNishant Chaprana <n.chaprana@samsung.com>
Mon, 2 Nov 2020 11:15:20 +0000 (16:45 +0530)
Change-Id: I7ba0a129bc7da44f75bdafc5d4c6e8f3e95723e1
Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
include/internal/network-internal.h
packaging/libnet-client.spec
packaging/libnet-client.spec.rej [new file with mode: 0644]
src/network-profile-intf.c
src/network-signal-handler.c

index a654b3b7b8933cc9582d9230c36f60c71e580a00..2f18aa5ac492113e7c3d7b9afbe9b8a43e7cf5ac 100755 (executable)
@@ -105,6 +105,7 @@ extern "C" {
                        "type='signal',interface='fi.w1.wpa_supplicant1.Interface'"
 
 #define SIGNAL_PROPERTY_CHANGED                "PropertyChanged"
+#define SIGNAL_STATE_CHANGED_PROPERTIES        "StateChangedProperties"
 #define SIGNAL_PROPERTIES_CHANGED      "PropertiesChanged"
 #define SIGNAL_TECHNOLOGY_ADDED                "TechnologyAdded"
 #define SIGNAL_TECHNOLOGY_REMOVED      "TechnologyRemoved"
@@ -219,6 +220,9 @@ int _net_get_all_profile_list(network_info_t *network_info,
 int _net_get_default_profile_info(network_info_t *network_info,
                        net_profile_info_t *profile_info);
 void _net_clear_request_table(network_info_t *network_info);
+int _net_extract_service_info(network_info_t *network_info,
+               const char *ProfileName, GVariantIter *iter,
+               net_profile_info_t *ProfInfo);
 
 int _net_dbus_create_gdbus_call(network_info_t *network_info);
 void _net_dbus_close_gdbus_call(network_info_t *network_info);
index 6a2f15295fceb27e8419e4afc312b6b3482b81a8..81c2fb952a98259c024619a9f9cffec3259a2535 100755 (executable)
@@ -1,6 +1,6 @@
 Name:          libnet-client
 Summary:       Network Client library (Shared library)
-Version:       1.2.5
+Version:       1.2.6
 Release:       1
 Group:         System/Network
 License:       Flora-1.1
diff --git a/packaging/libnet-client.spec.rej b/packaging/libnet-client.spec.rej
new file mode 100644 (file)
index 0000000..f7ca953
--- /dev/null
@@ -0,0 +1,9 @@
+diff a/packaging/libnet-client.spec b/packaging/libnet-client.spec     (rejected hunks)
+@@ -1,6 +1,6 @@
+ Name:         libnet-client
+ Summary:      Network Client library (Shared library)
+-Version:      1.2.4
++Version:      1.2.5
+ Release:      1
+ Group:                System/Network
+ License:      Flora-1.1
index bb7c5755aaff78fd8e265f111e24e1187fd9ba07..1ae6882080f0d571dcfbe0902be527457209267d 100755 (executable)
@@ -36,8 +36,6 @@
  * Local Functions Declaration
  *****************************************************************************/
 static int __net_extract_wifi_info(GVariantIter *array, net_profile_info_t *ProfInfo);
-static int __net_extract_service_info(network_info_t *network_info,
-               const char *ProfileName, GVariantIter *iter, net_profile_info_t *ProfInfo);
 static int __net_extract_services(network_info_t *network_info,
                GVariantIter *message, net_device_t device_type,
                net_profile_info_t **profile_info, int *profile_count);
@@ -1927,7 +1925,7 @@ static int __net_extract_bluetooth_info(GVariantIter *array, net_profile_info_t
        return Error;
 }
 
-static int __net_extract_service_info(network_info_t *network_info,
+int _net_extract_service_info(network_info_t *network_info,
                const char *ProfileName, GVariantIter *iter,
                net_profile_info_t *ProfInfo)
 {
@@ -2067,7 +2065,7 @@ static int __net_get_mesh_peers(network_info_t *network_info,
        g_variant_get(message, "(a(oa{sv}))", &iter);
        while (g_variant_iter_loop(iter, "(oa{sv})", &path, &service)) {
                if (g_strcmp0(ProfileName, path) == 0) {
-                       Error = __net_extract_service_info(network_info,
+                       Error = _net_extract_service_info(network_info,
                                        ProfileName, service, ProfInfo);
                        g_variant_iter_free(service);
                        g_free(path);
@@ -2101,7 +2099,7 @@ static int __net_get_profile_info(network_info_t *network_info,
        }
 
        g_variant_get(message, "(a{sv})", &service);
-       Error = __net_extract_service_info(network_info, ProfileName,
+       Error = _net_extract_service_info(network_info, ProfileName,
                        service, ProfInfo);
        g_variant_iter_free(service);
        g_variant_unref(message);
index 3cf04df2f0992cb2d2e60fb91a78417c6fe98a63..d23793fe43409547713ec1690b393ebf257ea85b 100755 (executable)
@@ -254,28 +254,8 @@ static void __net_handle_failure_ind(network_info_t *network_info,
        __NETWORK_FUNC_EXIT__;
 }
 
-static int string2state(const char *state)
-{
-       if (g_strcmp0(state, "idle") == 0)
-               return NET_STATE_TYPE_IDLE;
-       else if (g_strcmp0(state, "association") == 0)
-               return NET_STATE_TYPE_ASSOCIATION;
-       else if (g_strcmp0(state, "configuration") == 0)
-               return NET_STATE_TYPE_CONFIGURATION;
-       else if (g_strcmp0(state, "ready") == 0)
-               return NET_STATE_TYPE_READY;
-       else if (g_strcmp0(state, "online") == 0)
-               return NET_STATE_TYPE_ONLINE;
-       else if (g_strcmp0(state, "disconnect") == 0)
-               return NET_STATE_TYPE_DISCONNECT;
-       else if (g_strcmp0(state, "failure") == 0)
-               return NET_STATE_TYPE_FAILURE;
-
-       return NET_STATE_TYPE_UNKNOWN;
-}
-
 static int __net_handle_service_state_changed(network_info_t *network_info,
-               const gchar *sig_path, const char *key, const char *state)
+               const gchar *sig_path, net_state_type_t state, net_profile_info_t *prof_info)
 {
        net_err_t Error = NET_ERR_NONE;
        net_state_type_t old_state, new_state;
@@ -299,7 +279,7 @@ static int __net_handle_service_state_changed(network_info_t *network_info,
                return Error;
        }
 
-       NETWORK_LOG(NETWORK_LOW, "[%s] %s", state, sig_path);
+       NETWORK_LOG(NETWORK_LOW, "[%d] %s", state, sig_path);
 
        if (device_type == NET_DEVICE_WIFI && net_wifi_state == WIFI_OFF) {
                NETWORK_LOG(NETWORK_LOW, "Wi-Fi is off");
@@ -308,7 +288,7 @@ static int __net_handle_service_state_changed(network_info_t *network_info,
        }
 
        old_state = network_info->state_table[device_type];
-       new_state = string2state(state);
+       new_state = state;
 
        NETWORK_LOG(NETWORK_LOW, "old state[%d] new state[%d]", old_state, new_state);
 
@@ -369,16 +349,12 @@ static int __net_handle_service_state_changed(network_info_t *network_info,
                                NETWORK_LOG(NETWORK_LOW, "Sending NET_EVENT_OPEN_IND");
                        }
 
-                       net_profile_info_t prof_info;
-                       if ((Error = net_get_profile_info(network_info, sig_path, &prof_info)) != NET_ERR_NONE) {
-                               NETWORK_LOG(NETWORK_ERROR, "net_get_profile_info() failed [%s]",
-                                               _net_print_error(Error));
-
+                       if (prof_info == NULL) {
                                event_data->Datalength = 0;
                                event_data->Data = NULL;
                        } else {
                                event_data->Datalength = sizeof(net_profile_info_t);
-                               event_data->Data = &prof_info;
+                               event_data->Data = prof_info;
                        }
 
                        event_data->Error = Error;
@@ -739,19 +715,16 @@ static void __net_connman_service_signal_filter(GDBusConnection *conn,
 {
        __NETWORK_FUNC_ENTER__;
 
-       const char *key = NULL;
-       const char *value = NULL;
-       GVariant *var;
        network_info_t *network_info = (network_info_t *)user_data;
 
        if (g_strcmp0(sig, SIGNAL_PROPERTY_CHANGED) == 0) {
-               g_variant_get(param, "(sv)", &key, &var);
+               const char *key = NULL;
+               const char *value = NULL;
+               GVariant *var;
 
-               if (g_strcmp0(key, "State") == 0) {
-                       g_variant_get(var, "s", &value);
+               g_variant_get(param, "(sv)", &key, &var);
 
-                       __net_handle_service_state_changed(network_info, path, key, value);
-               } else if (g_strcmp0(key, "Error") == 0) {
+               if (g_strcmp0(key, "Error") == 0) {
                        g_variant_get(var, "s", &value);
 
                        __net_handle_service_set_error(key, value);
@@ -761,6 +734,20 @@ static void __net_connman_service_signal_filter(GDBusConnection *conn,
                g_free((gchar *)key);
                if (NULL != var)
                        g_variant_unref(var);
+
+       } else if (g_strcmp0(sig, SIGNAL_STATE_CHANGED_PROPERTIES) == 0) {
+               net_profile_info_t prof_info;
+               GVariantIter *iter = NULL;
+               const gchar *object_path = NULL;
+
+               g_variant_get(param, "((&oa{sv}))", &object_path, &iter);
+
+               _net_extract_service_info(network_info, object_path, iter, &prof_info);
+
+               __net_handle_service_state_changed(network_info, object_path,
+                               prof_info.ProfileState, &prof_info);
+
+               g_variant_iter_free(iter);
        }
 
        __NETWORK_FUNC_EXIT__;
@@ -981,9 +968,9 @@ int _net_register_signal(network_info_t *network_info)
                        network_info,
                        CONNMAN_SERVICE,
                        CONNMAN_SERVICE_INTERFACE,
-                       SIGNAL_PROPERTY_CHANGED,
+                       SIGNAL_STATE_CHANGED_PROPERTIES,
+                       NULL,
                        NULL,
-                       "State",
                        __net_connman_service_signal_filter);
 
        /* Create connman mesh state connection */