meta-openembedded/meta-gnome/recipes-connectivity/network-manager-applet/files/0002-Add-support-for-AP-mode-setting-for-wifi-sharing.patch
Andreas Müller 7a7f06b90c network-manager-applet: add basic AP support
Tested with gumstix overo as access point and connected windows pc and android
smartphone.

Note that there are are some settings available for AP which do not make sense - see
[1] for further details.

[1] https://bugzilla.gnome.org/show_bug.cgi?id=734589#c6

Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2014-10-27 12:50:00 +01:00

129 lines
4.4 KiB
Diff

From d789ef88a8806887bf1160bfa5d3d9eb47b6216c Mon Sep 17 00:00:00 2001
From: "Marius B. Kotsbak" <marius@kotsbak.com>
Date: Mon, 11 Aug 2014 22:11:52 +0200
Subject: [PATCH] Add support for AP mode setting for wifi sharing.
Upstream-Status: Pending [1]
[1] https://bugzilla.gnome.org/show_bug.cgi?id=734589
---
src/connection-editor/ce-page-wifi.ui | 3 +++
src/connection-editor/page-wifi.c | 46 ++++++++++++++++++++---------------
2 files changed, 30 insertions(+), 19 deletions(-)
diff --git a/src/connection-editor/ce-page-wifi.ui b/src/connection-editor/ce-page-wifi.ui
index e2e544b..b8b27c1 100644
--- a/src/connection-editor/ce-page-wifi.ui
+++ b/src/connection-editor/ce-page-wifi.ui
@@ -50,6 +50,9 @@
<row>
<col id="0" translatable="yes">Ad-hoc</col>
</row>
+ <row>
+ <col id="0" translatable="yes">Shared AP</col>
+ </row>
</data>
</object>
<object class="GtkTable" id="WifiPage">
diff --git a/src/connection-editor/page-wifi.c b/src/connection-editor/page-wifi.c
index d0a5617..17db2fa 100644
--- a/src/connection-editor/page-wifi.c
+++ b/src/connection-editor/page-wifi.c
@@ -59,6 +59,12 @@ typedef struct {
gboolean disposed;
} CEPageWifiPrivate;
+enum {
+ WIFI_MODE_INFRASTRUCTURE,
+ WIFI_MODE_ADHOC,
+ WIFI_MODE_AP
+};
+
static void
wifi_private_init (CEPageWifi *self)
{
@@ -244,22 +250,16 @@ mode_combo_changed_cb (GtkComboBox *combo,
CEPageWifiPrivate *priv = CE_PAGE_WIFI_GET_PRIVATE (self);
CEPage *parent = CE_PAGE (self);
GtkWidget *widget_band_label, *widget_chan_label, *widget_bssid_label;
- gboolean adhoc;
+ gint wifi_mode;
+ gboolean shared_wifi;
- switch (gtk_combo_box_get_active (GTK_COMBO_BOX (combo))) {
- case 1: /* adhoc */
- adhoc = TRUE;
- break;
- default: /* infrastructure */
- adhoc = FALSE;
- break;
- }
+ wifi_mode = gtk_combo_box_get_active (GTK_COMBO_BOX (combo));
widget_band_label = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wifi_band_label"));
widget_chan_label = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wifi_channel_label"));
widget_bssid_label = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wifi_bssid_label"));
- if (adhoc) {
+ if (WIFI_MODE_ADHOC == wifi_mode || WIFI_MODE_AP == wifi_mode) {
/* For Ad-Hoc show Band and Channel */
gtk_widget_show (widget_band_label);
gtk_widget_show (GTK_WIDGET (priv->band));
@@ -283,12 +283,13 @@ mode_combo_changed_cb (GtkComboBox *combo,
gtk_widget_show (GTK_WIDGET (priv->bssid));
}
- gtk_widget_set_sensitive (widget_band_label, adhoc);
- gtk_widget_set_sensitive (GTK_WIDGET (priv->band), adhoc);
- gtk_widget_set_sensitive (widget_chan_label, adhoc);
- gtk_widget_set_sensitive (GTK_WIDGET (priv->channel), adhoc);
- gtk_widget_set_sensitive (widget_bssid_label, !adhoc);
- gtk_widget_set_sensitive (GTK_WIDGET (priv->bssid), !adhoc);
+ shared_wifi = wifi_mode != WIFI_MODE_INFRASTRUCTURE;
+ gtk_widget_set_sensitive (widget_band_label, shared_wifi);
+ gtk_widget_set_sensitive (GTK_WIDGET (priv->band), shared_wifi);
+ gtk_widget_set_sensitive (widget_chan_label, shared_wifi);
+ gtk_widget_set_sensitive (GTK_WIDGET (priv->channel), shared_wifi);
+ gtk_widget_set_sensitive (widget_bssid_label, !shared_wifi);
+ gtk_widget_set_sensitive (GTK_WIDGET (priv->bssid), !shared_wifi);
ce_page_changed (CE_PAGE (self));
}
@@ -348,9 +349,12 @@ populate_ui (CEPageWifi *self)
g_byte_array_free (ssid, TRUE);
/* Default to Infrastructure */
- gtk_combo_box_set_active (priv->mode, 0);
+ gtk_combo_box_set_active (priv->mode, WIFI_MODE_INFRASTRUCTURE);
if (mode && !strcmp (mode, "adhoc"))
- gtk_combo_box_set_active (priv->mode, 1);
+ gtk_combo_box_set_active (priv->mode, WIFI_MODE_ADHOC);
+ else if (mode && !strcmp (mode, "ap"))
+ gtk_combo_box_set_active (priv->mode, WIFI_MODE_AP);
+
mode_combo_changed_cb (priv->mode, self);
g_signal_connect (priv->mode, "changed", G_CALLBACK (mode_combo_changed_cb), self);
g_free (mode);
@@ -510,14 +514,18 @@ ui_to_setting (CEPageWifi *self)
GByteArray *bssid = NULL;
GByteArray *device_mac = NULL;
GByteArray *cloned_mac = NULL;
+ gint wifi_mode;
const char *mode;
const char *band;
GtkWidget *entry;
ssid = ce_page_wifi_get_ssid (self);
- if (gtk_combo_box_get_active (priv->mode) == 1)
+ wifi_mode = gtk_combo_box_get_active (priv->mode);
+ if (WIFI_MODE_ADHOC == wifi_mode)
mode = "adhoc";
+ else if (WIFI_MODE_AP == wifi_mode)
+ mode = "ap";
else
mode = "infrastructure";
--
1.9.1