#define CONNMAN_API_SUBJECT_TO_CHANGE
#include <connman/device.h>
+#include <connman/option.h>
#include <connman/dbus.h>
#include <connman/log.h>
static int add_interface(struct supplicant_task *task)
{
+ const char *driver = connman_option_get_string("wifi");
DBusMessage *message;
+ DBusMessageIter array, dict;
DBusPendingCall *call;
DBG("task %p", task);
if (message == NULL)
return -ENOMEM;
- dbus_message_append_args(message, DBUS_TYPE_STRING, &task->ifname,
- DBUS_TYPE_INVALID);
+ dbus_message_iter_init_append(message, &array);
+
+ dbus_message_iter_append_basic(&array,
+ DBUS_TYPE_STRING, &task->ifname);
+
+ dbus_message_iter_open_container(&array, DBUS_TYPE_ARRAY,
+ DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
+ DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING
+ DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);
+
+ connman_dbus_dict_append_variant(&dict, "driver",
+ DBUS_TYPE_STRING, &driver);
+
+ dbus_message_iter_close_container(&array, &dict);
if (dbus_connection_send_with_reply(connection, message,
&call, TIMEOUT) == FALSE) {
{ "2wire" },
{ "compaq" },
{ "tsunami" },
- { "comcomcom" },
+ { "comcomcom", "3com" },
+ { "3Com", "3com" },
{ "Symbol", "symbol" },
{ "Wireless" , "wireless" },
{ "WLAN", "wlan" },
static unsigned char calculate_strength(struct supplicant_result *result)
{
- if (result->quality < 0)
- return 0;
+ if (result->quality < 0) {
+ unsigned char strength;
+
+ if (result->level > 0)
+ strength = 100 - result->level;
+ else
+ strength = 120 + result->level;
+
+ if (strength > 100)
+ strength = 100;
+
+ return strength;
+ }
return result->quality;
}
static unsigned short calculate_channel(struct supplicant_result *result)
{
- return 0;
+ if (result->frequency < 0)
+ return 0;
+
+ return (result->frequency - 2407) / 5;
}
static void get_properties(struct supplicant_task *task);
memset(&result, 0, sizeof(result));
result.frequency = -1;
result.quality = -1;
- result.level = -1;
- result.noise = -1;
+ result.level = 0;
+ result.noise = 0;
dbus_message_iter_init(reply, &array);