summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhyunuk.tak <hyunuk.tak@samsung.com>2020-04-17 17:32:01 +0900
committerhyunuk.tak <hyunuk.tak@samsung.com>2020-04-20 09:30:46 +0900
commite45dcd5816c8fe7a881b92bb4f5f5a8c3dee55c0 (patch)
tree8feb89fc3141d520c017492e33b0a9a43521f042 /src
parent70730f50e09cac648b1c3b48f0a1e6ed40cc510f (diff)
downloadconnman-e45dcd5816c8fe7a881b92bb4f5f5a8c3dee55c0.tar.gz
connman-e45dcd5816c8fe7a881b92bb4f5f5a8c3dee55c0.tar.bz2
connman-e45dcd5816c8fe7a881b92bb4f5f5a8c3dee55c0.zip
Verify INS functions using connmanctlsubmit/tizen/20200422.012623
Change-Id: I498fac295defe24eab8e3d23c6e0864bfda8fd86 Signed-off-by: hyunuk.tak <hyunuk.tak@samsung.com>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/connman.h3
-rwxr-xr-x[-rw-r--r--]src/manager.c27
-rwxr-xr-xsrc/service.c204
3 files changed, 197 insertions, 37 deletions
diff --git a/src/connman.h b/src/connman.h
index 833e09a1..a2608396 100755
--- a/src/connman.h
+++ b/src/connman.h
@@ -727,6 +727,9 @@ void __connman_service_cleanup(void);
int __connman_service_load_modifiable(struct connman_service *service);
void __connman_service_list_struct(DBusMessageIter *iter);
+#if defined TIZEN_EXT_INS
+void __connman_ins_list_struct(DBusMessageIter *iter);
+#endif
#if defined TIZEN_EXT
int connman_service_get_ipv6_dns_method(struct connman_service *service);
diff --git a/src/manager.c b/src/manager.c
index 583b2ad1..0b232ecb 100644..100755
--- a/src/manager.c
+++ b/src/manager.c
@@ -216,6 +216,28 @@ static DBusMessage *get_services(DBusConnection *conn,
return reply;
}
+#if defined TIZEN_EXT_INS
+static void append_ins_structs(DBusMessageIter *iter, void *user_data)
+{
+ __connman_ins_list_struct(iter);
+}
+
+static DBusMessage *get_ins(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ DBusMessage *reply;
+
+ reply = dbus_message_new_method_return(msg);
+ if (!reply)
+ return NULL;
+
+ __connman_dbus_append_objpath_dict_array(reply,
+ append_ins_structs, NULL);
+
+ return reply;
+}
+#endif
+
static void append_peer_structs(DBusMessageIter *iter, void *user_data)
{
__connman_peer_list_struct(iter);
@@ -666,6 +688,11 @@ static const GDBusMethodTable manager_methods[] = {
{ GDBUS_METHOD("GetServices",
NULL, GDBUS_ARGS({ "services", "a(oa{sv})" }),
get_services) },
+#if defined TIZEN_EXT_INS
+ { GDBUS_METHOD("GetINS",
+ NULL, GDBUS_ARGS({ "services", "a(oa{sv})" }),
+ get_ins) },
+#endif
{ GDBUS_METHOD("GetPeers",
NULL, GDBUS_ARGS({ "peers", "a(oa{sv})" }),
get_peers) },
diff --git a/src/service.c b/src/service.c
index 606ef7da..3f6a003f 100755
--- a/src/service.c
+++ b/src/service.c
@@ -49,6 +49,9 @@
#define FREQ_RANGE_24GHZ_CHANNEL_14 2484
#define FREQ_RANGE_5GHZ_CHANNEL_32 5160
#define FREQ_RANGE_5GHZ_CHANNEL_165 5825
+
+#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
+#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
#endif
static DBusConnection *connection = NULL;
@@ -227,6 +230,14 @@ struct connman_service {
unsigned char last_connected_bssid[WIFI_BSSID_LEN_MAX];
bool is_internet_connection;
int assoc_reject_count;
+#if defined TIZEN_EXT_INS
+ int score_last_user_selection;
+ int score_last_connected;
+ int score_frequency;
+ int score_security_priority;
+ int score_internet_connection;
+ int score_strength;
+#endif
int ins_score;
#endif
};
@@ -751,7 +762,6 @@ static int service_ext_load(struct connman_service *service)
continue;
}
- memset(reject_data, 0, sizeof(struct assoc_reject_data));
reject_data->bssid = g_strdup(bssid);
g_hash_table_insert(reject_table, reject_data->bssid, reject_data);
}
@@ -3887,9 +3897,7 @@ static void append_wifi_ext_info(DBusMessageIter *dict,
country_code = connman_network_get_countrycode(network);
connection_mode = connman_network_get_connection_mode(network);
- snprintf(bssid_str, WIFI_BSSID_STR_LEN, "%02x:%02x:%02x:%02x:%02x:%02x",
- bssid[0], bssid[1], bssid[2],
- bssid[3], bssid[4], bssid[5]);
+ snprintf(bssid_str, WIFI_BSSID_STR_LEN, MACSTR, MAC2STR(bssid));
snprintf(country_code_str, (WIFI_COUNTRY_CODE_LEN + 1), "%c%c",
country_code[0], country_code[1]);
@@ -3965,9 +3973,7 @@ static void append_bssid_info(DBusMessageIter *iter, void *user_data)
GSList *list;
for (list = bssid_list; list; list = list->next) {
bssids = (struct connman_bssids *)list->data;
- g_snprintf(bssid_buf, MAC_ADDRESS_LENGTH, "%02x:%02x:%02x:%02x:%02x:%02x",
- bssids->bssid[0], bssids->bssid[1], bssids->bssid[2],
- bssids->bssid[3], bssids->bssid[4], bssids->bssid[5]);
+ g_snprintf(bssid_buf, MAC_ADDRESS_LENGTH, MACSTR, MAC2STR(bssids->bssid));
connman_dbus_dict_append_basic(iter, "BSSID",
DBUS_TYPE_STRING, &bssid_str);
@@ -4168,6 +4174,99 @@ static void append_properties(DBusMessageIter *dict, dbus_bool_t limited,
connman_network_append_acddbus(dict, service->network);
}
+#if defined TIZEN_EXT_INS
+static void append_ins_bssid_info(DBusMessageIter *iter, void *user_data)
+{
+ GSList *bssid_list = NULL;
+ struct connman_network *network = user_data;
+ struct connman_bssids *bssids;
+ char bssid_buf[MAC_ADDRESS_LENGTH] = {0,};
+ char *bssid_str = bssid_buf;
+
+ bssid_list = (GSList *)connman_network_get_bssid_list(network);
+ if(bssid_list) {
+ GSList *list;
+ for (list = bssid_list; list; list = list->next) {
+ bssids = (struct connman_bssids *)list->data;
+ g_snprintf(bssid_buf, MAC_ADDRESS_LENGTH, MACSTR, MAC2STR(bssids->bssid));
+
+ connman_dbus_dict_append_basic(iter, "BSSID",
+ DBUS_TYPE_STRING, &bssid_str);
+
+ connman_dbus_dict_append_basic(iter, "ScoreINS",
+ DBUS_TYPE_INT32, &bssids->ins_score);
+
+ connman_dbus_dict_append_basic(iter, "ScoreLastConnected",
+ DBUS_TYPE_INT32, &bssids->score_last_connected_bssid);
+
+ connman_dbus_dict_append_basic(iter, "ScoreAssocReject",
+ DBUS_TYPE_INT32, &bssids->score_assoc_reject);
+
+ connman_dbus_dict_append_basic(iter, "Frequency",
+ DBUS_TYPE_UINT16, &bssids->frequency);
+
+ connman_dbus_dict_append_basic(iter, "ScoreFrequency",
+ DBUS_TYPE_INT32, &bssids->score_frequency);
+
+ connman_dbus_dict_append_basic(iter, "Strength",
+ DBUS_TYPE_UINT16, &bssids->strength);
+
+ connman_dbus_dict_append_basic(iter, "ScoreStrength",
+ DBUS_TYPE_INT32, &bssids->score_strength);
+ }
+ }
+}
+
+static void append_ins_properties(DBusMessageIter *dict,
+ struct connman_service *service)
+{
+ const char *str;
+ unsigned int frequency = 0U;
+
+ if (service->name)
+ connman_dbus_dict_append_basic(dict, "Name",
+ DBUS_TYPE_STRING, &service->name);
+
+ connman_dbus_dict_append_basic(dict, "ScoreINS",
+ DBUS_TYPE_INT32, &service->ins_score);
+
+ connman_dbus_dict_append_basic(dict, "ScoreLastUserSelection",
+ DBUS_TYPE_INT32, &service->score_last_user_selection);
+
+ connman_dbus_dict_append_basic(dict, "ScoreLastConnected",
+ DBUS_TYPE_INT32, &service->score_last_connected);
+
+ str = security2string(service->security);
+ if (str)
+ connman_dbus_dict_append_basic(dict, "Security",
+ DBUS_TYPE_STRING, &str);
+
+ connman_dbus_dict_append_basic(dict, "ScoreSecurityPriority",
+ DBUS_TYPE_INT32, &service->score_security_priority);
+
+ connman_dbus_dict_append_basic(dict, "Strength",
+ DBUS_TYPE_BYTE, &service->strength);
+
+ connman_dbus_dict_append_basic(dict, "ScoreStrength",
+ DBUS_TYPE_INT32, &service->score_strength);
+
+ connman_dbus_dict_append_basic(dict, "ScoreInternetConnection",
+ DBUS_TYPE_INT32, &service->score_internet_connection);
+
+ if (service->network) {
+ frequency = connman_network_get_frequency(service->network);
+ connman_dbus_dict_append_basic(dict, "Frequency",
+ DBUS_TYPE_UINT16, &frequency);
+
+ connman_dbus_dict_append_basic(dict, "ScoreFrequency",
+ DBUS_TYPE_INT32, &service->score_frequency);
+
+ connman_dbus_dict_append_dict(dict, "BSSID.List",
+ append_ins_bssid_info, service->network);
+ }
+}
+#endif
+
static void append_struct_service(DBusMessageIter *iter,
connman_dbus_append_cb_t function,
struct connman_service *service)
@@ -4210,6 +4309,34 @@ void __connman_service_list_struct(DBusMessageIter *iter)
g_list_foreach(service_list, append_struct, iter);
}
+#if defined TIZEN_EXT_INS
+static void append_dict_ins_properties(DBusMessageIter *dict, void *user_data)
+{
+ struct connman_service *service = user_data;
+
+ append_ins_properties(dict, service);
+}
+
+static void append_ins_struct(gpointer value, gpointer user_data)
+{
+ struct connman_service *service = value;
+ DBusMessageIter *iter = user_data;
+
+ if (!service->path)
+ return;
+
+ if (service->type != CONNMAN_SERVICE_TYPE_WIFI)
+ return;
+
+ append_struct_service(iter, append_dict_ins_properties, service);
+}
+
+void __connman_ins_list_struct(DBusMessageIter *iter)
+{
+ g_list_foreach(service_list, append_ins_struct, iter);
+}
+#endif
+
bool __connman_service_is_hidden(struct connman_service *service)
{
return service->hidden;
@@ -7238,6 +7365,12 @@ static int calculate_score_strength(struct connman_service *service)
static int calculate_score(struct connman_service *service)
{
+ int score_last_user_selection;
+ int score_last_connected;
+ int score_frequency;
+ int score_security_priority;
+ int score_internet_connection;
+ int score_strength;
int score = 0;
if (service->type != CONNMAN_SERVICE_TYPE_WIFI) {
@@ -7246,12 +7379,25 @@ static int calculate_score(struct connman_service *service)
return score;
}
- score += calculate_score_last_user_selection(service);
- score += calculate_score_last_connected(service);
- score += calculate_score_frequency(service);
- score += calculate_score_security_priority(service);
- score += calculate_score_internet_connection(service);
- score += calculate_score_strength(service);
+ score_last_user_selection = calculate_score_last_user_selection(service);
+ score_last_connected = calculate_score_last_connected(service);
+ score_frequency = calculate_score_frequency(service);
+ score_security_priority = calculate_score_security_priority(service);
+ score_internet_connection = calculate_score_internet_connection(service);
+ score_strength = calculate_score_strength(service);
+
+ score = score_last_user_selection + score_last_connected +
+ score_frequency + score_security_priority +
+ score_internet_connection + score_strength;
+
+#if defined TIZEN_EXT_INS
+ service->score_last_user_selection = score_last_user_selection;
+ service->score_last_connected = score_last_connected;
+ service->score_frequency = score_frequency;
+ service->score_security_priority = score_security_priority;
+ service->score_internet_connection = score_internet_connection;
+ service->score_strength = score_strength;
+#endif
service->ins_score = score;
return score;
@@ -7376,32 +7522,16 @@ static gint service_compare(gconstpointer a, gconstpointer b)
static void print_service_sort(gpointer data, gpointer user_data)
{
struct connman_service *service = data;
- struct connman_device *device;
- const char *last_user_selection_ident;
- const char *last_connected_ident;
- unsigned int frequency;
- time_t ref_time;
- struct tm* timeinfo;
- time_t last_user_selection_time;
- device = connman_network_get_device(service->network);
- last_user_selection_ident = connman_device_get_last_user_selection_ident(device);
- last_user_selection_time = connman_device_get_last_user_selection_time(device);
- last_connected_ident = connman_device_get_last_connected_ident(device);
- frequency = connman_network_get_frequency(service->network);
+ if (service->type != CONNMAN_SERVICE_TYPE_WIFI)
+ return;
- /* Only events that occur within 8 hours are checked. */
- ref_time = time(NULL);
- timeinfo = localtime(&ref_time);
- timeinfo->tm_hour -= 8;
- ref_time = mktime(timeinfo);
-
- DBG("name[%s] score[%d] strength[%d] freq[%d] last_usr[%d] last_conn[%d] internet[%d]",
- service->name, service->ins_score, service->strength, frequency,
- (g_strcmp0(last_user_selection_ident, service->identifier) == 0 &&
- last_user_selection_time > ref_time) ? 1 : 0,
- g_strcmp0(last_connected_ident, service->identifier) == 0 ? 1 : 0,
- service->is_internet_connection);
+ DBG("name[%-20s] total[%2d] last_usr[%2d] last_conn[%2d] "
+ "freq[%2d] sec[%2d] internet[%2d] strength[%2d]",
+ service->name, service->ins_score, service->score_last_user_selection,
+ service->score_last_connected, service->score_frequency,
+ service->score_security_priority, service->score_internet_connection,
+ service->score_strength);
}
#endif