summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xclient/ins.c63
1 files changed, 59 insertions, 4 deletions
diff --git a/client/ins.c b/client/ins.c
index f62f8379..6403f610 100755
--- a/client/ins.c
+++ b/client/ins.c
@@ -27,6 +27,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
+#include <stdbool.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
@@ -35,6 +36,25 @@
#include "ins.h"
+#define BOOLSTR(s) (((s) == true) ? "TRUE" : "FALSE")
+
+struct ins_info_s {
+ struct {
+ bool last_user_selection;
+ bool last_connected;
+ bool security_priority;
+ bool internet_connection;
+ bool frequency;
+ bool strength;
+ } ssid;
+ struct {
+ bool last_connected;
+ bool assoc_reject;
+ bool frequency;
+ bool strength;
+ } bssid;
+};
+
struct bssid_info_s {
char *bssid;
unsigned int strength;
@@ -61,7 +81,7 @@ static void print_bssid_info(gpointer value, gpointer user_data)
(*bssid_rank)++;
}
-static GSList *get_bssid_list(DBusMessageIter *iter)
+static GSList *get_bssid_list(DBusMessageIter *iter, struct ins_info_s *ins_info)
{
char *property;
DBusMessageIter entry, val;
@@ -90,11 +110,15 @@ static GSList *get_bssid_list(DBusMessageIter *iter)
dbus_message_iter_next(&entry);
dbus_message_iter_recurse(&entry, &val);
dbus_message_iter_get_basic(&val, &(bssid_info->score_last_connected));
+ if (bssid_info->score_last_connected)
+ ins_info->bssid.last_connected = true;
} else if (strcmp(property, "ScoreAssocReject") == 0) {
dbus_message_iter_next(&entry);
dbus_message_iter_recurse(&entry, &val);
dbus_message_iter_get_basic(&val, &(bssid_info->score_assoc_reject));
+ if (bssid_info->score_assoc_reject)
+ ins_info->bssid.assoc_reject = true;
} else if (strcmp(property, "Frequency") == 0) {
dbus_message_iter_next(&entry);
@@ -105,6 +129,8 @@ static GSList *get_bssid_list(DBusMessageIter *iter)
dbus_message_iter_next(&entry);
dbus_message_iter_recurse(&entry, &val);
dbus_message_iter_get_basic(&val, &(bssid_info->score_frequency));
+ if (bssid_info->score_frequency)
+ ins_info->bssid.frequency = true;
} else if (strcmp(property, "Strength") == 0) {
dbus_message_iter_next(&entry);
@@ -115,6 +141,8 @@ static GSList *get_bssid_list(DBusMessageIter *iter)
dbus_message_iter_next(&entry);
dbus_message_iter_recurse(&entry, &val);
dbus_message_iter_get_basic(&val, &(bssid_info->score_strength));
+ if (bssid_info->score_strength)
+ ins_info->bssid.strength = true;
bssid_list = g_slist_append(bssid_list, bssid_info);
}
@@ -125,7 +153,8 @@ static GSList *get_bssid_list(DBusMessageIter *iter)
return bssid_list;
}
-static void print_ins_info(int *rank, char *path, char *filter, DBusMessageIter *iter)
+static void print_ins_info(int *rank, struct ins_info_s *ins_info,
+ char *path, char *filter, DBusMessageIter *iter)
{
char *name = "";
char *security;
@@ -162,11 +191,15 @@ static void print_ins_info(int *rank, char *path, char *filter, DBusMessageIter
dbus_message_iter_next(&entry);
dbus_message_iter_recurse(&entry, &val);
dbus_message_iter_get_basic(&val, &score_last_user_selection);
+ if (score_last_user_selection)
+ ins_info->ssid.last_user_selection = true;
} else if (strcmp(property, "ScoreLastConnected") == 0) {
dbus_message_iter_next(&entry);
dbus_message_iter_recurse(&entry, &val);
dbus_message_iter_get_basic(&val, &score_last_connected);
+ if (score_last_connected)
+ ins_info->ssid.last_connected = true;
} else if (strcmp(property, "Security") == 0) {
dbus_message_iter_next(&entry);
@@ -177,6 +210,8 @@ static void print_ins_info(int *rank, char *path, char *filter, DBusMessageIter
dbus_message_iter_next(&entry);
dbus_message_iter_recurse(&entry, &val);
dbus_message_iter_get_basic(&val, &score_security_priority);
+ if (score_security_priority)
+ ins_info->ssid.security_priority = true;
} else if (strcmp(property, "Strength") == 0) {
dbus_message_iter_next(&entry);
@@ -187,11 +222,15 @@ static void print_ins_info(int *rank, char *path, char *filter, DBusMessageIter
dbus_message_iter_next(&entry);
dbus_message_iter_recurse(&entry, &val);
dbus_message_iter_get_basic(&val, &score_strength);
+ if (score_strength)
+ ins_info->ssid.strength = true;
} else if (strcmp(property, "ScoreInternetConnection") == 0) {
dbus_message_iter_next(&entry);
dbus_message_iter_recurse(&entry, &val);
dbus_message_iter_get_basic(&val, &score_internet_connection);
+ if (score_internet_connection)
+ ins_info->ssid.internet_connection = true;
} else if (strcmp(property, "Frequency") == 0) {
dbus_message_iter_next(&entry);
@@ -202,6 +241,8 @@ static void print_ins_info(int *rank, char *path, char *filter, DBusMessageIter
dbus_message_iter_next(&entry);
dbus_message_iter_recurse(&entry, &val);
dbus_message_iter_get_basic(&val, &score_frequency);
+ if (score_frequency)
+ ins_info->ssid.frequency = true;
} else if (strcmp(property, "BSSID.List") == 0) {
dbus_message_iter_next(&entry);
@@ -209,7 +250,7 @@ static void print_ins_info(int *rank, char *path, char *filter, DBusMessageIter
if (dbus_message_iter_get_arg_type(&val)
== DBUS_TYPE_ARRAY) {
dbus_message_iter_recurse(&val, &dict);
- bssid_list = get_bssid_list(&dict);
+ bssid_list = get_bssid_list(&dict, ins_info);
}
}
@@ -251,6 +292,9 @@ static void list_ins_array(DBusMessageIter *iter, char *filter)
DBusMessageIter array, dict;
char *path = NULL;
int rank = 1;
+ struct ins_info_s ins_info;
+
+ memset(&ins_info, 0, sizeof(ins_info));
while (dbus_message_iter_get_arg_type(iter) == DBUS_TYPE_STRUCT) {
@@ -265,11 +309,22 @@ static void list_ins_array(DBusMessageIter *iter, char *filter)
if (dbus_message_iter_get_arg_type(&array)
== DBUS_TYPE_ARRAY) {
dbus_message_iter_recurse(&array, &dict);
- print_ins_info(&rank, path, filter, &dict);
+ print_ins_info(&rank, &ins_info, path, filter, &dict);
}
dbus_message_iter_next(iter);
}
+
+ fprintf(stdout, "\n");
+ fprintf(stdout, " [SSID] last_usr[%s] last_conn[%s] "
+ "sec_priority[%s] internet[%s] freq[%s] strength[%s]\n",
+ BOOLSTR(ins_info.ssid.last_user_selection), BOOLSTR(ins_info.ssid.last_connected),
+ BOOLSTR(ins_info.ssid.security_priority), BOOLSTR(ins_info.ssid.internet_connection),
+ BOOLSTR(ins_info.ssid.frequency), BOOLSTR(ins_info.ssid.strength));
+
+ fprintf(stdout, " [BSSID] last_conn[%s] assoc_reject[%s] freq[%s] strength[%s]\n",
+ BOOLSTR(ins_info.bssid.last_connected), BOOLSTR(ins_info.bssid.assoc_reject),
+ BOOLSTR(ins_info.bssid.frequency), BOOLSTR(ins_info.bssid.strength));
}
void __connmanctl_ins_list(DBusMessageIter *iter, char *filter)