Now able to set the GPRS access point
This commit is contained in:
parent
8dab5ea1ae
commit
67200d9281
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <System.h>
|
#include <System.h>
|
||||||
#include "Phone.h"
|
#include "Phone.h"
|
||||||
@ -28,6 +29,7 @@ typedef struct _GPRS
|
|||||||
{
|
{
|
||||||
GtkWidget * window;
|
GtkWidget * window;
|
||||||
GtkWidget * attach;
|
GtkWidget * attach;
|
||||||
|
GtkWidget * apn;
|
||||||
} GPRS;
|
} GPRS;
|
||||||
|
|
||||||
|
|
||||||
@ -38,6 +40,7 @@ static int _gprs_destroy(PhonePlugin * plugin);
|
|||||||
static int _gprs_event(PhonePlugin * plugin, PhoneEvent event, ...);
|
static int _gprs_event(PhonePlugin * plugin, PhoneEvent event, ...);
|
||||||
static void _gprs_settings(PhonePlugin * plugin);
|
static void _gprs_settings(PhonePlugin * plugin);
|
||||||
|
|
||||||
|
static int _gprs_access_point(PhonePlugin * plugin);
|
||||||
static int _gprs_attach(PhonePlugin * plugin);
|
static int _gprs_attach(PhonePlugin * plugin);
|
||||||
|
|
||||||
|
|
||||||
@ -99,7 +102,7 @@ static int _gprs_event(PhonePlugin * plugin, PhoneEvent event, ...)
|
|||||||
|
|
||||||
static int _gprs_event_functional(PhonePlugin * plugin)
|
static int _gprs_event_functional(PhonePlugin * plugin)
|
||||||
{
|
{
|
||||||
return _gprs_attach(plugin);
|
return _gprs_attach(plugin) | _gprs_access_point(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -130,9 +133,14 @@ static void _gprs_settings(PhonePlugin * plugin)
|
|||||||
g_signal_connect_swapped(G_OBJECT(gprs->window), "delete-event",
|
g_signal_connect_swapped(G_OBJECT(gprs->window), "delete-event",
|
||||||
G_CALLBACK(_on_settings_closex), plugin);
|
G_CALLBACK(_on_settings_closex), plugin);
|
||||||
vbox = gtk_vbox_new(FALSE, 0);
|
vbox = gtk_vbox_new(FALSE, 0);
|
||||||
/* check button */
|
/* attachment */
|
||||||
gprs->attach = gtk_check_button_new_with_label("Always on");
|
gprs->attach = gtk_check_button_new_with_label("Always on");
|
||||||
gtk_box_pack_start(GTK_BOX(vbox), gprs->attach, FALSE, TRUE, 0);
|
gtk_box_pack_start(GTK_BOX(vbox), gprs->attach, FALSE, TRUE, 0);
|
||||||
|
/* access point */
|
||||||
|
widget = gtk_label_new("Access point:");
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
|
||||||
|
gprs->apn = gtk_entry_new();
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), gprs->apn, FALSE, TRUE, 0);
|
||||||
/* button box */
|
/* button box */
|
||||||
bbox = gtk_hbutton_box_new();
|
bbox = gtk_hbutton_box_new();
|
||||||
gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
|
gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
|
||||||
@ -157,6 +165,10 @@ static void _on_settings_cancel(gpointer data)
|
|||||||
GPRS * gprs = plugin->priv;
|
GPRS * gprs = plugin->priv;
|
||||||
char const * p;
|
char const * p;
|
||||||
|
|
||||||
|
if((p = plugin->helper->config_get(plugin->helper->phone, "gprs",
|
||||||
|
"apn")) == NULL)
|
||||||
|
p = "";
|
||||||
|
gtk_entry_set_text(GTK_ENTRY(gprs->apn), p);
|
||||||
if((p = plugin->helper->config_get(plugin->helper->phone, "gprs",
|
if((p = plugin->helper->config_get(plugin->helper->phone, "gprs",
|
||||||
"attach")) != NULL
|
"attach")) != NULL
|
||||||
&& strtoul(p, NULL, 10) != 0)
|
&& strtoul(p, NULL, 10) != 0)
|
||||||
@ -180,17 +192,42 @@ static void _on_settings_ok(gpointer data)
|
|||||||
{
|
{
|
||||||
PhonePlugin * plugin = data;
|
PhonePlugin * plugin = data;
|
||||||
GPRS * gprs = plugin->priv;
|
GPRS * gprs = plugin->priv;
|
||||||
gboolean value;
|
char const * p;
|
||||||
|
gboolean active;
|
||||||
|
|
||||||
value = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
|
if((p = gtk_entry_get_text(GTK_ENTRY(gprs->apn))) != NULL
|
||||||
|
&& strlen(p) != 0
|
||||||
|
&& plugin->helper->config_set(plugin->helper->phone,
|
||||||
|
"gprs", "apn", p) == 0)
|
||||||
|
_gprs_access_point(plugin);
|
||||||
|
active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
|
||||||
gprs->attach));
|
gprs->attach));
|
||||||
plugin->helper->config_set(plugin->helper->phone, "gprs",
|
if(plugin->helper->config_set(plugin->helper->phone, "gprs", "attach",
|
||||||
"attach", value ? "1" : "0");
|
active ? "1" : "0") == 0)
|
||||||
_gprs_attach(plugin);
|
_gprs_attach(plugin);
|
||||||
gtk_widget_hide(gprs->window);
|
gtk_widget_hide(gprs->window);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* gprs_access_point */
|
||||||
|
static int _gprs_access_point(PhonePlugin * plugin)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
char const cmd[] = "AT+CGDCONT=1,\"IP\",";
|
||||||
|
char const * p;
|
||||||
|
char * q;
|
||||||
|
|
||||||
|
if((p = plugin->helper->config_get(plugin->helper->phone, "gprs",
|
||||||
|
"apn")) == NULL)
|
||||||
|
return 0;
|
||||||
|
if((q = string_new_append(cmd, "\"", p, "\"", NULL)) == NULL)
|
||||||
|
return -1;
|
||||||
|
ret = plugin->helper->queue(plugin->helper->phone, q);
|
||||||
|
string_delete(q);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* gprs_attach */
|
/* gprs_attach */
|
||||||
static int _gprs_attach(PhonePlugin * plugin)
|
static int _gprs_attach(PhonePlugin * plugin)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user