libmm-common: expect 'rm-protocol' in the common bearer properties
This commit is contained in:
@@ -27,6 +27,7 @@ G_DEFINE_TYPE (MMCommonBearerProperties, mm_common_bearer_properties, G_TYPE_OBJ
|
|||||||
#define PROPERTY_IP_TYPE "ip-type"
|
#define PROPERTY_IP_TYPE "ip-type"
|
||||||
#define PROPERTY_NUMBER "number"
|
#define PROPERTY_NUMBER "number"
|
||||||
#define PROPERTY_ALLOW_ROAMING "allow-roaming"
|
#define PROPERTY_ALLOW_ROAMING "allow-roaming"
|
||||||
|
#define PROPERTY_RM_PROTOCOL "rm-protocol"
|
||||||
|
|
||||||
struct _MMCommonBearerPropertiesPrivate {
|
struct _MMCommonBearerPropertiesPrivate {
|
||||||
/* APN */
|
/* APN */
|
||||||
@@ -42,6 +43,8 @@ struct _MMCommonBearerPropertiesPrivate {
|
|||||||
/* Roaming allowance */
|
/* Roaming allowance */
|
||||||
gboolean allow_roaming_set;
|
gboolean allow_roaming_set;
|
||||||
gboolean allow_roaming;
|
gboolean allow_roaming;
|
||||||
|
/* Protocol of the Rm interface */
|
||||||
|
MMModemCdmaRmProtocol rm_protocol;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
@@ -94,6 +97,13 @@ mm_common_bearer_properties_set_number (MMCommonBearerProperties *self,
|
|||||||
self->priv->number = g_strdup (number);
|
self->priv->number = g_strdup (number);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
mm_common_bearer_properties_set_rm_protocol (MMCommonBearerProperties *self,
|
||||||
|
MMModemCdmaRmProtocol protocol)
|
||||||
|
{
|
||||||
|
self->priv->rm_protocol = protocol;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
const gchar *
|
const gchar *
|
||||||
@@ -132,6 +142,12 @@ mm_common_bearer_properties_get_number (MMCommonBearerProperties *self)
|
|||||||
return self->priv->number;
|
return self->priv->number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MMModemCdmaRmProtocol
|
||||||
|
mm_common_bearer_properties_get_rm_protocol (MMCommonBearerProperties *self)
|
||||||
|
{
|
||||||
|
return self->priv->rm_protocol;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
GVariant *
|
GVariant *
|
||||||
@@ -181,6 +197,12 @@ mm_common_bearer_properties_get_dictionary (MMCommonBearerProperties *self)
|
|||||||
PROPERTY_ALLOW_ROAMING,
|
PROPERTY_ALLOW_ROAMING,
|
||||||
g_variant_new_boolean (self->priv->allow_roaming));
|
g_variant_new_boolean (self->priv->allow_roaming));
|
||||||
|
|
||||||
|
if (self->priv->rm_protocol)
|
||||||
|
g_variant_builder_add (&builder,
|
||||||
|
"{sv}",
|
||||||
|
PROPERTY_RM_PROTOCOL,
|
||||||
|
g_variant_new_uint32 (self->priv->rm_protocol));
|
||||||
|
|
||||||
return g_variant_ref_sink (g_variant_builder_end (&builder));
|
return g_variant_ref_sink (g_variant_builder_end (&builder));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -212,7 +234,17 @@ mm_common_bearer_properties_consume_string (MMCommonBearerProperties *self,
|
|||||||
mm_common_bearer_properties_set_allow_roaming (self, allow_roaming);
|
mm_common_bearer_properties_set_allow_roaming (self, allow_roaming);
|
||||||
} else if (g_str_equal (key, PROPERTY_NUMBER))
|
} else if (g_str_equal (key, PROPERTY_NUMBER))
|
||||||
mm_common_bearer_properties_set_number (self, value);
|
mm_common_bearer_properties_set_number (self, value);
|
||||||
else {
|
else if (g_str_equal (key, PROPERTY_RM_PROTOCOL)) {
|
||||||
|
GError *inner_error = NULL;
|
||||||
|
MMModemCdmaRmProtocol protocol;
|
||||||
|
|
||||||
|
protocol = mm_common_get_rm_protocol_from_string (value, &inner_error);
|
||||||
|
if (inner_error) {
|
||||||
|
g_propagate_error (error, inner_error);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
mm_common_bearer_properties_set_rm_protocol (self, protocol);
|
||||||
|
} else {
|
||||||
g_set_error (error,
|
g_set_error (error,
|
||||||
MM_CORE_ERROR,
|
MM_CORE_ERROR,
|
||||||
MM_CORE_ERROR_INVALID_ARGS,
|
MM_CORE_ERROR_INVALID_ARGS,
|
||||||
@@ -376,6 +408,7 @@ mm_common_bearer_properties_init (MMCommonBearerProperties *self)
|
|||||||
|
|
||||||
/* Some defaults */
|
/* Some defaults */
|
||||||
self->priv->allow_roaming = TRUE;
|
self->priv->allow_roaming = TRUE;
|
||||||
|
self->priv->rm_protocol = MM_MODEM_CDMA_RM_PROTOCOL_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -69,6 +69,9 @@ void mm_common_bearer_properties_set_allow_roaming (
|
|||||||
void mm_common_bearer_properties_set_number (
|
void mm_common_bearer_properties_set_number (
|
||||||
MMCommonBearerProperties *properties,
|
MMCommonBearerProperties *properties,
|
||||||
const gchar *number);
|
const gchar *number);
|
||||||
|
void mm_common_bearer_properties_set_rm_protocol (
|
||||||
|
MMCommonBearerProperties *properties,
|
||||||
|
MMModemCdmaRmProtocol protocol);
|
||||||
|
|
||||||
const gchar *mm_common_bearer_properties_get_apn (
|
const gchar *mm_common_bearer_properties_get_apn (
|
||||||
MMCommonBearerProperties *properties);
|
MMCommonBearerProperties *properties);
|
||||||
@@ -82,6 +85,8 @@ gboolean mm_common_bearer_properties_get_allow_roaming (
|
|||||||
MMCommonBearerProperties *properties);
|
MMCommonBearerProperties *properties);
|
||||||
const gchar *mm_common_bearer_properties_get_number (
|
const gchar *mm_common_bearer_properties_get_number (
|
||||||
MMCommonBearerProperties *properties);
|
MMCommonBearerProperties *properties);
|
||||||
|
MMModemCdmaRmProtocol mm_common_bearer_properties_get_rm_protocol (
|
||||||
|
MMCommonBearerProperties *properties);
|
||||||
|
|
||||||
gboolean mm_common_bearer_properties_consume_string (MMCommonBearerProperties *self,
|
gboolean mm_common_bearer_properties_consume_string (MMCommonBearerProperties *self,
|
||||||
const gchar *key,
|
const gchar *key,
|
||||||
|
@@ -375,6 +375,29 @@ mm_common_get_boolean_from_string (const gchar *value,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MMModemCdmaRmProtocol
|
||||||
|
mm_common_get_rm_protocol_from_string (const gchar *str,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
GEnumClass *enum_class;
|
||||||
|
guint i;
|
||||||
|
|
||||||
|
enum_class = G_ENUM_CLASS (g_type_class_ref (MM_TYPE_MODEM_CDMA_RM_PROTOCOL));
|
||||||
|
|
||||||
|
|
||||||
|
for (i = 0; enum_class->values[i].value_nick; i++) {
|
||||||
|
if (!g_ascii_strcasecmp (str, enum_class->values[i].value_nick))
|
||||||
|
return enum_class->values[i].value;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_set_error (error,
|
||||||
|
MM_CORE_ERROR,
|
||||||
|
MM_CORE_ERROR_INVALID_ARGS,
|
||||||
|
"Couldn't match '%s' with a valid MMModemCdmaRmProtocol value",
|
||||||
|
str);
|
||||||
|
return MM_MODEM_CDMA_RM_PROTOCOL_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
GVariant *
|
GVariant *
|
||||||
mm_common_build_bands_unknown (void)
|
mm_common_build_bands_unknown (void)
|
||||||
{
|
{
|
||||||
|
@@ -25,14 +25,16 @@ gchar *mm_common_get_modes_string (MMModemMode mode);
|
|||||||
gchar *mm_common_get_bands_string (const MMModemBand *bands,
|
gchar *mm_common_get_bands_string (const MMModemBand *bands,
|
||||||
guint n_bands);
|
guint n_bands);
|
||||||
|
|
||||||
MMModemMode mm_common_get_modes_from_string (const gchar *str,
|
MMModemMode mm_common_get_modes_from_string (const gchar *str,
|
||||||
GError **error);
|
GError **error);
|
||||||
void mm_common_get_bands_from_string (const gchar *str,
|
void mm_common_get_bands_from_string (const gchar *str,
|
||||||
MMModemBand **bands,
|
MMModemBand **bands,
|
||||||
guint *n_bands,
|
guint *n_bands,
|
||||||
GError **error);
|
GError **error);
|
||||||
gboolean mm_common_get_boolean_from_string (const gchar *value,
|
gboolean mm_common_get_boolean_from_string (const gchar *value,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
MMModemCdmaRmProtocol mm_common_get_rm_protocol_from_string (const gchar *str,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
GArray *mm_common_bands_variant_to_garray (GVariant *variant);
|
GArray *mm_common_bands_variant_to_garray (GVariant *variant);
|
||||||
MMModemBand *mm_common_bands_variant_to_array (GVariant *variant,
|
MMModemBand *mm_common_bands_variant_to_array (GVariant *variant,
|
||||||
|
Reference in New Issue
Block a user