Extend org.freedesktop.ModemManager.Modem interface.
* Add IpMethod property with known values ppp (default), static, DHCP. * Rename DataDevice property to Device. * Add GetIP4Config method. It should be implemented only when IpMethod==static. * Update org.freedesktop.ModemManager.Modem.Gsm.Sms interface based on Pablo Martí Gamboa's suggestions. * Adjust MBM and HSO interfaces to take advantage of the generic Modem interface.
This commit is contained in:
+1
-6
@@ -41,15 +41,11 @@ libmm_plugin_hso_la_LDFLAGS = -module -avoid-version
|
||||
# MBM
|
||||
|
||||
libmm_plugin_mbm_la_SOURCES = \
|
||||
mm-modem-gsm-mbm-glue.h \
|
||||
mm-modem-mbm.c \
|
||||
mm-modem-mbm.h \
|
||||
mm-plugin-mbm.c \
|
||||
mm-plugin-mbm.h
|
||||
|
||||
mm-modem-gsm-mbm-glue.h: $(top_srcdir)/introspection/mm-modem-gsm-mbm.xml
|
||||
dbus-binding-tool --prefix=mm_modem_gsm_mbm --mode=glib-server --output=$@ $<
|
||||
|
||||
libmm_plugin_mbm_la_CPPFLAGS = \
|
||||
$(MM_CFLAGS) \
|
||||
-I$(top_srcdir)/src
|
||||
@@ -100,7 +96,6 @@ libmm_plugin_novatel_la_LDFLAGS = -module -avoid-version
|
||||
|
||||
|
||||
BUILT_SOURCES = \
|
||||
mm-modem-gsm-hso-glue.h \
|
||||
mm-modem-gsm-mbm-glue.h
|
||||
mm-modem-gsm-hso-glue.h
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
+116
-171
@@ -20,9 +20,6 @@ static void impl_hso_authenticate (MMModemHso *self,
|
||||
const char *password,
|
||||
DBusGMethodInvocation *context);
|
||||
|
||||
static void impl_hso_get_ip4_config (MMModemHso *self,
|
||||
DBusGMethodInvocation *context);
|
||||
|
||||
#include "mm-modem-gsm-hso-glue.h"
|
||||
|
||||
static gpointer mm_modem_hso_parent_class = NULL;
|
||||
@@ -30,7 +27,6 @@ static gpointer mm_modem_hso_parent_class = NULL;
|
||||
#define MM_MODEM_HSO_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MM_TYPE_MODEM_HSO, MMModemHsoPrivate))
|
||||
|
||||
typedef struct {
|
||||
char *network_device;
|
||||
GRegex *connection_enabled_regex;
|
||||
gpointer std_parser;
|
||||
|
||||
@@ -39,13 +35,6 @@ typedef struct {
|
||||
guint connect_pending_id;
|
||||
} MMModemHsoPrivate;
|
||||
|
||||
enum {
|
||||
PROP_0,
|
||||
PROP_NETWORK_DEVICE,
|
||||
|
||||
LAST_PROP
|
||||
};
|
||||
|
||||
#define OWANDATA_TAG "_OWANDATA: "
|
||||
|
||||
MMModem *
|
||||
@@ -61,7 +50,9 @@ mm_modem_hso_new (const char *serial_device,
|
||||
MM_SERIAL_DEVICE, serial_device,
|
||||
MM_SERIAL_SEND_DELAY, (guint64) 10000,
|
||||
MM_MODEM_DRIVER, driver,
|
||||
MM_MODEM_HSO_NETWORK_DEVICE, network_device,
|
||||
MM_MODEM_DEVICE, network_device,
|
||||
MM_MODEM_IP_METHOD, MM_MODEM_IP_METHOD_STATIC,
|
||||
MM_MODEM_TYPE, MM_MODEM_TYPE_GSM,
|
||||
NULL));
|
||||
}
|
||||
|
||||
@@ -217,96 +208,6 @@ mm_hso_modem_authenticate (MMModemHso *self,
|
||||
auth_done (MM_SERIAL (self), NULL, NULL, info);
|
||||
}
|
||||
|
||||
static void
|
||||
free_dns_array (gpointer data)
|
||||
{
|
||||
g_array_free ((GArray *) data, TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
ip4_config_invoke (MMCallbackInfo *info)
|
||||
{
|
||||
MMModemHsoIp4Fn callback = (MMModemHsoIp4Fn) info->callback;
|
||||
|
||||
callback (MM_MODEM_HSO (info->modem),
|
||||
GPOINTER_TO_UINT (mm_callback_info_get_data (info, "ip4-address")),
|
||||
(GArray *) mm_callback_info_get_data (info, "ip4-dns"),
|
||||
info->error, info->user_data);
|
||||
}
|
||||
|
||||
static void
|
||||
get_ip4_config_done (MMSerial *serial,
|
||||
GString *response,
|
||||
GError *error,
|
||||
gpointer user_data)
|
||||
{
|
||||
MMCallbackInfo *info = (MMCallbackInfo *) user_data;
|
||||
char **items, **iter;
|
||||
GArray *dns_array;
|
||||
int i;
|
||||
guint32 tmp;
|
||||
guint cid;
|
||||
|
||||
if (error) {
|
||||
info->error = g_error_copy (error);
|
||||
goto out;
|
||||
} else if (!g_str_has_prefix (response->str, OWANDATA_TAG)) {
|
||||
info->error = g_error_new_literal (MM_MODEM_ERROR, MM_MODEM_ERROR_GENERAL,
|
||||
"Retrieving failed: invalid response.");
|
||||
goto out;
|
||||
}
|
||||
|
||||
cid = hso_get_cid (MM_MODEM_HSO (serial));
|
||||
dns_array = g_array_sized_new (FALSE, TRUE, sizeof (guint32), 2);
|
||||
items = g_strsplit (response->str + strlen (OWANDATA_TAG), ", ", 0);
|
||||
|
||||
for (iter = items, i = 0; *iter; iter++, i++) {
|
||||
if (i == 0) { /* CID */
|
||||
long int tmp;
|
||||
|
||||
errno = 0;
|
||||
tmp = strtol (*iter, NULL, 10);
|
||||
if (errno != 0 || tmp < 0 || (guint) tmp != cid) {
|
||||
info->error = g_error_new (MM_MODEM_ERROR, MM_MODEM_ERROR_GENERAL,
|
||||
"Unknown CID in OWANDATA response (got %d, expected %d)", (guint) tmp, cid);
|
||||
break;
|
||||
}
|
||||
} else if (i == 1) { /* IP address */
|
||||
if (inet_pton (AF_INET, *iter, &tmp) > 0)
|
||||
mm_callback_info_set_data (info, "ip4-address", GUINT_TO_POINTER (tmp), NULL);
|
||||
} else if (i == 3) { /* DNS 1 */
|
||||
if (inet_pton (AF_INET, *iter, &tmp) > 0)
|
||||
g_array_append_val (dns_array, tmp);
|
||||
} else if (i == 4) { /* DNS 2 */
|
||||
if (inet_pton (AF_INET, *iter, &tmp) > 0)
|
||||
g_array_append_val (dns_array, tmp);
|
||||
}
|
||||
}
|
||||
|
||||
g_strfreev (items);
|
||||
mm_callback_info_set_data (info, "ip4-dns", dns_array, free_dns_array);
|
||||
|
||||
out:
|
||||
mm_callback_info_schedule (info);
|
||||
}
|
||||
|
||||
void
|
||||
mm_hso_modem_get_ip4_config (MMModemHso *self,
|
||||
MMModemHsoIp4Fn callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
MMCallbackInfo *info;
|
||||
char *command;
|
||||
|
||||
g_return_if_fail (MM_IS_MODEM_HSO (self));
|
||||
g_return_if_fail (callback != NULL);
|
||||
|
||||
info = mm_callback_info_new_full (MM_MODEM (self), ip4_config_invoke, G_CALLBACK (callback), user_data);
|
||||
command = g_strdup_printf ("AT_OWANDATA=%d", hso_get_cid (self));
|
||||
mm_serial_queue_command (MM_SERIAL (self), command, 3, get_ip4_config_done, info);
|
||||
g_free (command);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
@@ -380,6 +281,105 @@ do_connect (MMModem *modem,
|
||||
mm_callback_info_schedule (info);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
free_dns_array (gpointer data)
|
||||
{
|
||||
g_array_free ((GArray *) data, TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
ip4_config_invoke (MMCallbackInfo *info)
|
||||
{
|
||||
MMModemIp4Fn callback = (MMModemIp4Fn) info->callback;
|
||||
|
||||
callback (info->modem,
|
||||
GPOINTER_TO_UINT (mm_callback_info_get_data (info, "ip4-address")),
|
||||
(GArray *) mm_callback_info_get_data (info, "ip4-dns"),
|
||||
info->error, info->user_data);
|
||||
}
|
||||
|
||||
static void
|
||||
get_ip4_config_done (MMSerial *serial,
|
||||
GString *response,
|
||||
GError *error,
|
||||
gpointer user_data)
|
||||
{
|
||||
MMCallbackInfo *info = (MMCallbackInfo *) user_data;
|
||||
char **items, **iter;
|
||||
GArray *dns_array;
|
||||
int i;
|
||||
guint32 tmp;
|
||||
guint cid;
|
||||
|
||||
if (error) {
|
||||
info->error = g_error_copy (error);
|
||||
goto out;
|
||||
} else if (!g_str_has_prefix (response->str, OWANDATA_TAG)) {
|
||||
info->error = g_error_new_literal (MM_MODEM_ERROR, MM_MODEM_ERROR_GENERAL,
|
||||
"Retrieving failed: invalid response.");
|
||||
goto out;
|
||||
}
|
||||
|
||||
cid = hso_get_cid (MM_MODEM_HSO (serial));
|
||||
dns_array = g_array_sized_new (FALSE, TRUE, sizeof (guint32), 2);
|
||||
items = g_strsplit (response->str + strlen (OWANDATA_TAG), ", ", 0);
|
||||
|
||||
for (iter = items, i = 0; *iter; iter++, i++) {
|
||||
if (i == 0) { /* CID */
|
||||
long int tmp;
|
||||
|
||||
errno = 0;
|
||||
tmp = strtol (*iter, NULL, 10);
|
||||
if (errno != 0 || tmp < 0 || (guint) tmp != cid) {
|
||||
info->error = g_error_new (MM_MODEM_ERROR, MM_MODEM_ERROR_GENERAL,
|
||||
"Unknown CID in OWANDATA response (got %d, expected %d)", (guint) tmp, cid);
|
||||
break;
|
||||
}
|
||||
} else if (i == 1) { /* IP address */
|
||||
if (inet_pton (AF_INET, *iter, &tmp) > 0)
|
||||
mm_callback_info_set_data (info, "ip4-address", GUINT_TO_POINTER (tmp), NULL);
|
||||
} else if (i == 3) { /* DNS 1 */
|
||||
if (inet_pton (AF_INET, *iter, &tmp) > 0)
|
||||
g_array_append_val (dns_array, tmp);
|
||||
} else if (i == 4) { /* DNS 2 */
|
||||
if (inet_pton (AF_INET, *iter, &tmp) > 0)
|
||||
g_array_append_val (dns_array, tmp);
|
||||
}
|
||||
}
|
||||
|
||||
g_strfreev (items);
|
||||
mm_callback_info_set_data (info, "ip4-dns", dns_array, free_dns_array);
|
||||
|
||||
out:
|
||||
mm_callback_info_schedule (info);
|
||||
}
|
||||
|
||||
static void
|
||||
get_ip4_config (MMModem *modem,
|
||||
MMModemIp4Fn callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
MMCallbackInfo *info;
|
||||
char *command;
|
||||
|
||||
info = mm_callback_info_new_full (modem, ip4_config_invoke, G_CALLBACK (callback), user_data);
|
||||
command = g_strdup_printf ("AT_OWANDATA=%d", hso_get_cid (MM_MODEM_HSO (modem)));
|
||||
mm_serial_queue_command (MM_SERIAL (modem), command, 3, get_ip4_config_done, info);
|
||||
g_free (command);
|
||||
}
|
||||
|
||||
static void
|
||||
disconnect (MMModem *modem,
|
||||
MMModemFn callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
MMCallbackInfo *info;
|
||||
|
||||
info = mm_callback_info_new (modem, callback, user_data);
|
||||
mm_serial_queue_command (MM_SERIAL (modem), "AT_OWANCALL=1,0,0", 3, NULL, info);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
@@ -410,28 +410,6 @@ impl_hso_authenticate (MMModemHso *self,
|
||||
mm_hso_modem_authenticate (self, username, password, impl_hso_auth_done, context);
|
||||
}
|
||||
|
||||
static void
|
||||
impl_hso_ip4_config_done (MMModemHso *modem,
|
||||
guint32 address,
|
||||
GArray *dns,
|
||||
GError *error,
|
||||
gpointer user_data)
|
||||
{
|
||||
DBusGMethodInvocation *context = (DBusGMethodInvocation *) user_data;
|
||||
|
||||
if (error)
|
||||
dbus_g_method_return_error (context, error);
|
||||
else
|
||||
dbus_g_method_return (context, address, dns);
|
||||
}
|
||||
|
||||
static void
|
||||
impl_hso_get_ip4_config (MMModemHso *self,
|
||||
DBusGMethodInvocation *context)
|
||||
{
|
||||
mm_hso_modem_get_ip4_config (self, impl_hso_ip4_config_done, context);
|
||||
}
|
||||
|
||||
static void
|
||||
connection_enabled (const char *str, gpointer data)
|
||||
{
|
||||
@@ -566,6 +544,8 @@ modem_init (MMModem *modem_class)
|
||||
{
|
||||
modem_class->enable = enable;
|
||||
modem_class->connect = do_connect;
|
||||
modem_class->get_ip4_config = get_ip4_config;
|
||||
modem_class->disconnect = disconnect;
|
||||
}
|
||||
|
||||
static GObject*
|
||||
@@ -574,7 +554,8 @@ constructor (GType type,
|
||||
GObjectConstructParam *construct_params)
|
||||
{
|
||||
GObject *object;
|
||||
MMModemHsoPrivate *priv;
|
||||
char *modem_device;
|
||||
char *serial_device;
|
||||
|
||||
object = G_OBJECT_CLASS (mm_modem_hso_parent_class)->constructor (type,
|
||||
n_construct_params,
|
||||
@@ -582,49 +563,24 @@ constructor (GType type,
|
||||
if (!object)
|
||||
return NULL;
|
||||
|
||||
priv = MM_MODEM_HSO_GET_PRIVATE (object);
|
||||
/* Make sure both serial device and data device are provided */
|
||||
g_object_get (object,
|
||||
MM_MODEM_DEVICE, &modem_device,
|
||||
MM_SERIAL_DEVICE, &serial_device,
|
||||
NULL);
|
||||
|
||||
if (!priv->network_device) {
|
||||
if (!modem_device || !serial_device || !strcmp (modem_device, serial_device)) {
|
||||
g_warning ("No network device provided");
|
||||
g_object_unref (object);
|
||||
return NULL;
|
||||
object = NULL;
|
||||
}
|
||||
|
||||
g_free (modem_device);
|
||||
g_free (serial_device);
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
static void
|
||||
set_property (GObject *object, guint prop_id,
|
||||
const GValue *value, GParamSpec *pspec)
|
||||
{
|
||||
MMModemHsoPrivate *priv = MM_MODEM_HSO_GET_PRIVATE (object);
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_NETWORK_DEVICE:
|
||||
/* Construct only */
|
||||
priv->network_device = g_value_dup_string (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
get_property (GObject *object, guint prop_id,
|
||||
GValue *value, GParamSpec *pspec)
|
||||
{
|
||||
MMModemHsoPrivate *priv = MM_MODEM_HSO_GET_PRIVATE (object);
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_NETWORK_DEVICE:
|
||||
g_value_set_string (value, priv->network_device);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
static void
|
||||
finalize (GObject *object)
|
||||
{
|
||||
@@ -633,7 +589,6 @@ finalize (GObject *object)
|
||||
/* Clear the pending connection if necessary */
|
||||
connect_pending_done (MM_MODEM_HSO (object));
|
||||
|
||||
g_free (priv->network_device);
|
||||
g_regex_unref (priv->connection_enabled_regex);
|
||||
mm_serial_parser_v1_destroy (priv->std_parser);
|
||||
|
||||
@@ -650,17 +605,7 @@ mm_modem_hso_class_init (MMModemHsoClass *klass)
|
||||
|
||||
/* Virtual methods */
|
||||
object_class->constructor = constructor;
|
||||
object_class->set_property = set_property;
|
||||
object_class->get_property = get_property;
|
||||
object_class->finalize = finalize;
|
||||
/* Properties */
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_NETWORK_DEVICE,
|
||||
g_param_spec_string (MM_MODEM_HSO_NETWORK_DEVICE,
|
||||
"NetworkDevice",
|
||||
"Network device",
|
||||
NULL,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
|
||||
}
|
||||
|
||||
GType
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
#define MM_IS_MODEM_HSO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MM_TYPE_MODEM_HSO))
|
||||
#define MM_MODEM_HSO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_MODEM_HSO, MMModemHsoClass))
|
||||
|
||||
#define MM_MODEM_HSO_NETWORK_DEVICE "network-device"
|
||||
|
||||
typedef struct {
|
||||
MMGenericGsm parent;
|
||||
} MMModemHso;
|
||||
@@ -22,13 +20,6 @@ typedef struct {
|
||||
MMGenericGsmClass parent;
|
||||
} MMModemHsoClass;
|
||||
|
||||
typedef void (*MMModemHsoIp4Fn) (MMModemHso *modem,
|
||||
guint32 address,
|
||||
GArray *dns,
|
||||
GError *error,
|
||||
gpointer user_data);
|
||||
|
||||
|
||||
GType mm_modem_hso_get_type (void);
|
||||
|
||||
MMModem *mm_modem_hso_new (const char *serial_device,
|
||||
@@ -41,9 +32,4 @@ void mm_hso_modem_authenticate (MMModemHso *self,
|
||||
MMModemFn callback,
|
||||
gpointer user_data);
|
||||
|
||||
void mm_hso_modem_get_ip4_config (MMModemHso *self,
|
||||
MMModemHsoIp4Fn callback,
|
||||
gpointer user_data);
|
||||
|
||||
|
||||
#endif /* MM_MODEM_HSO_H */
|
||||
|
||||
@@ -47,8 +47,9 @@ mm_modem_huawei_new (const char *data_device,
|
||||
|
||||
return MM_MODEM (g_object_new (MM_TYPE_MODEM_HUAWEI,
|
||||
MM_SERIAL_DEVICE, monitor_device,
|
||||
MM_MODEM_DATA_DEVICE, data_device,
|
||||
MM_MODEM_DEVICE, data_device,
|
||||
MM_MODEM_DRIVER, driver,
|
||||
MM_MODEM_TYPE, MM_MODEM_TYPE_GSM,
|
||||
NULL));
|
||||
}
|
||||
|
||||
|
||||
+15
-56
@@ -48,7 +48,6 @@ static gpointer mm_modem_mbm_parent_class = NULL;
|
||||
#define MM_MODEM_MBM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MM_TYPE_MODEM_MBM, MMModemMbmPrivate))
|
||||
|
||||
typedef struct {
|
||||
char *network_device;
|
||||
GRegex *boot_trig_regex;
|
||||
GRegex *msg_waiting_regex;
|
||||
GRegex *ciev_regex;
|
||||
@@ -56,13 +55,6 @@ typedef struct {
|
||||
guint32 signal_quality;
|
||||
} MMModemMbmPrivate;
|
||||
|
||||
enum {
|
||||
PROP_0,
|
||||
PROP_NETWORK_DEVICE,
|
||||
|
||||
LAST_PROP
|
||||
};
|
||||
|
||||
MMModem *
|
||||
mm_modem_mbm_new (const char *serial_device,
|
||||
const char *network_device,
|
||||
@@ -76,7 +68,9 @@ mm_modem_mbm_new (const char *serial_device,
|
||||
MM_SERIAL_DEVICE, serial_device,
|
||||
MM_SERIAL_SEND_DELAY, (guint64) 10000,
|
||||
MM_MODEM_DRIVER, driver,
|
||||
MM_MODEM_MBM_NETWORK_DEVICE, network_device,
|
||||
MM_MODEM_DEVICE, network_device,
|
||||
MM_MODEM_IP_METHOD, MM_MODEM_IP_METHOD_DHCP,
|
||||
MM_MODEM_TYPE, MM_MODEM_TYPE_GSM,
|
||||
NULL));
|
||||
}
|
||||
|
||||
@@ -460,7 +454,8 @@ constructor (GType type,
|
||||
GObjectConstructParam *construct_params)
|
||||
{
|
||||
GObject *object;
|
||||
MMModemMbmPrivate *priv;
|
||||
char *modem_device;
|
||||
char *serial_device;
|
||||
|
||||
object = G_OBJECT_CLASS (mm_modem_mbm_parent_class)->constructor (type,
|
||||
n_construct_params,
|
||||
@@ -468,55 +463,29 @@ constructor (GType type,
|
||||
if (!object)
|
||||
return NULL;
|
||||
|
||||
priv = MM_MODEM_MBM_GET_PRIVATE (object);
|
||||
/* Make sure both serial device and data device are provided */
|
||||
g_object_get (object,
|
||||
MM_MODEM_DEVICE, &modem_device,
|
||||
MM_SERIAL_DEVICE, &serial_device,
|
||||
NULL);
|
||||
|
||||
if (!priv->network_device) {
|
||||
if (!modem_device || !serial_device || !strcmp (modem_device, serial_device)) {
|
||||
g_warning ("No network device provided");
|
||||
g_object_unref (object);
|
||||
return NULL;
|
||||
object = NULL;
|
||||
}
|
||||
|
||||
g_free (modem_device);
|
||||
g_free (serial_device);
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
static void
|
||||
set_property (GObject *object, guint prop_id,
|
||||
const GValue *value, GParamSpec *pspec)
|
||||
{
|
||||
MMModemMbmPrivate *priv = MM_MODEM_MBM_GET_PRIVATE (object);
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_NETWORK_DEVICE:
|
||||
/* Construct only */
|
||||
priv->network_device = g_value_dup_string (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
get_property (GObject *object, guint prop_id,
|
||||
GValue *value, GParamSpec *pspec)
|
||||
{
|
||||
MMModemMbmPrivate *priv = MM_MODEM_MBM_GET_PRIVATE (object);
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_NETWORK_DEVICE:
|
||||
g_value_set_string (value, priv->network_device);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
static void
|
||||
finalize (GObject *object)
|
||||
{
|
||||
MMModemMbmPrivate *priv = MM_MODEM_MBM_GET_PRIVATE (object);
|
||||
|
||||
g_free (priv->network_device);
|
||||
mm_serial_parser_v1_destroy (priv->std_parser);
|
||||
g_regex_unref (priv->boot_trig_regex);
|
||||
g_regex_unref (priv->msg_waiting_regex);
|
||||
@@ -535,17 +504,7 @@ mm_modem_mbm_class_init (MMModemMbmClass *klass)
|
||||
|
||||
/* Virtual methods */
|
||||
object_class->constructor = constructor;
|
||||
object_class->set_property = set_property;
|
||||
object_class->get_property = get_property;
|
||||
object_class->finalize = finalize;
|
||||
/* Properties */
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_NETWORK_DEVICE,
|
||||
g_param_spec_string (MM_MODEM_MBM_NETWORK_DEVICE,
|
||||
"NetworkDevice",
|
||||
"Network device",
|
||||
NULL,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
|
||||
}
|
||||
|
||||
GType
|
||||
|
||||
@@ -35,8 +35,6 @@
|
||||
#define MM_IS_MODEM_MBM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MM_TYPE_MODEM_MBM))
|
||||
#define MM_MODEM_MBM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_MODEM_MBM, MMModemMbmClass))
|
||||
|
||||
#define MM_MODEM_MBM_NETWORK_DEVICE "network-device"
|
||||
|
||||
typedef struct {
|
||||
MMGenericGsm parent;
|
||||
} MMModemMbm;
|
||||
@@ -45,27 +43,10 @@ typedef struct {
|
||||
MMGenericGsmClass parent;
|
||||
} MMModemMbmClass;
|
||||
|
||||
typedef void (*MMModemMbmIp4Fn) (MMModemMbm *modem,
|
||||
guint32 address,
|
||||
GArray *dns,
|
||||
GError *error,
|
||||
gpointer user_data);
|
||||
|
||||
|
||||
GType mm_modem_mbm_get_type (void);
|
||||
|
||||
MMModem *mm_modem_mbm_new (const char *serial_device,
|
||||
const char *network_device,
|
||||
const char *driver);
|
||||
|
||||
void mm_mbm_modem_authenticate (MMModemMbm *self,
|
||||
const char *username,
|
||||
const char *password,
|
||||
MMModemFn callback,
|
||||
gpointer user_data);
|
||||
|
||||
void mm_mbm_modem_get_ip4_config (MMModemMbm *self,
|
||||
MMModemMbmIp4Fn callback,
|
||||
gpointer user_data);
|
||||
|
||||
#endif /* MM_MODEM_MBM_H */
|
||||
|
||||
@@ -20,6 +20,7 @@ mm_modem_novatel_new (const char *data_device,
|
||||
return MM_MODEM (g_object_new (MM_TYPE_MODEM_NOVATEL,
|
||||
MM_SERIAL_DEVICE, data_device,
|
||||
MM_MODEM_DRIVER, driver,
|
||||
MM_MODEM_TYPE, MM_MODEM_TYPE_GSM,
|
||||
NULL));
|
||||
}
|
||||
|
||||
@@ -51,7 +52,7 @@ pin_check_done (MMModem *modem, GError *error, gpointer user_data)
|
||||
mm_callback_info_schedule (info);
|
||||
} else
|
||||
/* Finish the initialization */
|
||||
mm_serial_queue_command (MM_SERIAL (modem), "Z X4 &C1 +CMEE=1;+CFUN=1", 10, init_modem_done, info);
|
||||
mm_serial_queue_command (MM_SERIAL (modem), "Z E0 V1 X4 &C1 +CMEE=1;+CFUN=1", 10, init_modem_done, info);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -20,6 +20,7 @@ mm_modem_option_new (const char *data_device,
|
||||
return MM_MODEM (g_object_new (MM_TYPE_MODEM_OPTION,
|
||||
MM_SERIAL_DEVICE, data_device,
|
||||
MM_MODEM_DRIVER, driver,
|
||||
MM_MODEM_TYPE, MM_MODEM_TYPE_GSM,
|
||||
NULL));
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ mm_modem_sierra_new (const char *data_device,
|
||||
return MM_MODEM (g_object_new (MM_TYPE_MODEM_SIERRA,
|
||||
MM_SERIAL_DEVICE, data_device,
|
||||
MM_MODEM_DRIVER, driver,
|
||||
MM_MODEM_TYPE, MM_MODEM_TYPE_GSM,
|
||||
NULL));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user