Add helper function for WiFi group name
authorMarcel Holtmann <marcel@holtmann.org>
Thu, 16 Jul 2009 02:45:07 +0000 (04:45 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 16 Jul 2009 02:45:07 +0000 (04:45 +0200)
include/Makefile.am
include/wifi.h [new file with mode: 0644]
src/connman.h
src/wifi.c [new file with mode: 0644]

index 160ae60..53e991d 100644 (file)
@@ -6,7 +6,7 @@ include_HEADERS = types.h log.h plugin.h security.h notifier.h \
 
 nodist_include_HEADERS = version.h
 
-noinst_HEADERS = driver.h element.h property.h rtnl.h dbus.h \
+noinst_HEADERS = driver.h element.h property.h rtnl.h wifi.h dbus.h \
                        rfkill.h resolver.h ipconfig.h service.h option.h
 
 MAINTAINERCLEANFILES = Makefile.in
diff --git a/include/wifi.h b/include/wifi.h
new file mode 100644 (file)
index 0000000..aa63f80
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ *
+ *  Connection Manager
+ *
+ *  Copyright (C) 2007-2009  Intel Corporation. All rights reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#ifndef __CONNMAN_WIFI_H
+#define __CONNMAN_WIFI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+char *connman_wifi_build_group_name(const unsigned char *ssid,
+                                               unsigned int ssid_len,
+                                                       const char *mode,
+                                                       const char *security);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CONNMAN_WIFI_H */
index 9b68083..a688db2 100644 (file)
@@ -105,6 +105,8 @@ int __connman_ipconfig_save(struct connman_ipconfig *ipconfig,
 
 enum connman_device_type __connman_inet_get_device_type(int index);
 
+#include <connman/wifi.h>
+
 #include <connman/rfkill.h>
 
 int __connman_rfkill_init(void);
diff --git a/src/wifi.c b/src/wifi.c
new file mode 100644 (file)
index 0000000..72f2500
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ *
+ *  Connection Manager
+ *
+ *  Copyright (C) 2007-2009  Intel Corporation. All rights reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib.h>
+
+#include "connman.h"
+
+char *connman_wifi_build_group_name(const unsigned char *ssid,
+                                               unsigned int ssid_len,
+                                                       const char *mode,
+                                                       const char *security)
+{
+       GString *str;
+       unsigned int i;
+
+       str = g_string_sized_new((ssid_len * 2) + 24);
+       if (str == NULL)
+               return NULL;
+
+       if (ssid_len > 0 && ssid[0] != '\0') {
+               for (i = 0; i < ssid_len; i++)
+                       g_string_append_printf(str, "%02x", ssid[i]);
+       }
+
+       g_string_append_printf(str, "_%s_%s", mode, security);
+
+       return g_string_free(str, FALSE);
+}