libmm-glib: allow new 'teleservice-id' and 'service-category' keywords in MMSmsProperties
This commit is contained in:
@@ -1103,6 +1103,10 @@ mm_sms_properties_get_class
|
||||
mm_sms_properties_set_class
|
||||
mm_sms_properties_get_delivery_report_request
|
||||
mm_sms_properties_set_delivery_report_request
|
||||
mm_sms_properties_get_teleservice_id
|
||||
mm_sms_properties_set_teleservice_id
|
||||
mm_sms_properties_get_service_category
|
||||
mm_sms_properties_set_service_category
|
||||
<SUBSECTION Private>
|
||||
mm_sms_properties_get_dictionary
|
||||
mm_sms_properties_dup
|
||||
|
||||
@@ -957,6 +957,50 @@ mm_common_get_sms_storage_from_string (const gchar *str,
|
||||
return MM_SMS_STORAGE_UNKNOWN;
|
||||
}
|
||||
|
||||
MMSmsCdmaTeleserviceId
|
||||
mm_common_get_sms_cdma_teleservice_id_from_string (const gchar *str,
|
||||
GError **error)
|
||||
{
|
||||
GEnumClass *enum_class;
|
||||
guint i;
|
||||
|
||||
enum_class = G_ENUM_CLASS (g_type_class_ref (MM_TYPE_SMS_CDMA_TELESERVICE_ID));
|
||||
|
||||
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 MMSmsCdmaTeleserviceId value",
|
||||
str);
|
||||
return MM_SMS_CDMA_TELESERVICE_ID_UNKNOWN;
|
||||
}
|
||||
|
||||
MMSmsCdmaServiceCategory
|
||||
mm_common_get_sms_cdma_service_category_from_string (const gchar *str,
|
||||
GError **error)
|
||||
{
|
||||
GEnumClass *enum_class;
|
||||
guint i;
|
||||
|
||||
enum_class = G_ENUM_CLASS (g_type_class_ref (MM_TYPE_SMS_CDMA_SERVICE_CATEGORY));
|
||||
|
||||
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 MMSmsCdmaServiceCategory value",
|
||||
str);
|
||||
return MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN;
|
||||
}
|
||||
|
||||
MMOmaFeature
|
||||
mm_common_get_oma_features_from_string (const gchar *str,
|
||||
GError **error)
|
||||
|
||||
@@ -59,6 +59,10 @@ MMBearerAllowedAuth mm_common_get_allowed_auth_from_string (const gchar *str,
|
||||
GError **error);
|
||||
MMSmsStorage mm_common_get_sms_storage_from_string (const gchar *str,
|
||||
GError **error);
|
||||
MMSmsCdmaTeleserviceId mm_common_get_sms_cdma_teleservice_id_from_string (const gchar *str,
|
||||
GError **error);
|
||||
MMSmsCdmaServiceCategory mm_common_get_sms_cdma_service_category_from_string (const gchar *str,
|
||||
GError **error);
|
||||
MMOmaFeature mm_common_get_oma_features_from_string (const gchar *str,
|
||||
GError **error);
|
||||
MMOmaSessionType mm_common_get_oma_session_type_from_string (const gchar *str,
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
* mm_modem_messaging_create() or mm_modem_messaging_create_sync().
|
||||
*/
|
||||
|
||||
G_DEFINE_TYPE (MMSmsProperties, mm_sms_properties, G_TYPE_OBJECT);
|
||||
G_DEFINE_TYPE (MMSmsProperties, mm_sms_properties, G_TYPE_OBJECT)
|
||||
|
||||
#define PROPERTY_TEXT "text"
|
||||
#define PROPERTY_DATA "data"
|
||||
@@ -43,6 +43,8 @@ G_DEFINE_TYPE (MMSmsProperties, mm_sms_properties, G_TYPE_OBJECT);
|
||||
#define PROPERTY_VALIDITY "validity"
|
||||
#define PROPERTY_CLASS "class"
|
||||
#define PROPERTY_DELIVERY_REPORT_REQUEST "delivery-report-request"
|
||||
#define PROPERTY_TELESERVICE_ID "teleservice-id"
|
||||
#define PROPERTY_SERVICE_CATEGORY "service-category"
|
||||
|
||||
struct _MMSmsPropertiesPrivate {
|
||||
gchar *text;
|
||||
@@ -54,6 +56,8 @@ struct _MMSmsPropertiesPrivate {
|
||||
gint class;
|
||||
gboolean delivery_report_request_set;
|
||||
gboolean delivery_report_request;
|
||||
MMSmsCdmaTeleserviceId teleservice_id;
|
||||
MMSmsCdmaServiceCategory service_category;
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
@@ -385,6 +389,74 @@ mm_sms_properties_get_delivery_report_request (MMSmsProperties *self)
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/**
|
||||
* mm_sms_properties_set_teleservice_id:
|
||||
* @self: A #MMSmsProperties.
|
||||
* @teleservice_id: The CDMA teleservice ID.
|
||||
*
|
||||
* Sets the CDMA teleservice ID of the SMS.
|
||||
*/
|
||||
void
|
||||
mm_sms_properties_set_teleservice_id (MMSmsProperties *self,
|
||||
MMSmsCdmaTeleserviceId teleservice_id)
|
||||
{
|
||||
g_return_if_fail (MM_IS_SMS_PROPERTIES (self));
|
||||
|
||||
self->priv->teleservice_id = teleservice_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* mm_sms_properties_get_teleservice_id:
|
||||
* @self: A #MMSmsProperties.
|
||||
*
|
||||
* Gets the CDMA teleservice ID of the SMS.
|
||||
*
|
||||
* Returns: the CDMA teleservice ID.
|
||||
*/
|
||||
MMSmsCdmaTeleserviceId
|
||||
mm_sms_properties_get_teleservice_id (MMSmsProperties *self)
|
||||
{
|
||||
g_return_val_if_fail (MM_IS_SMS_PROPERTIES (self), MM_SMS_CDMA_TELESERVICE_ID_UNKNOWN);
|
||||
|
||||
return self->priv->teleservice_id;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/**
|
||||
* mm_sms_properties_set_service_category:
|
||||
* @self: A #MMSmsProperties.
|
||||
* @service_category: The CDMA service category.
|
||||
*
|
||||
* Sets the CDMA service category of the SMS.
|
||||
*/
|
||||
void
|
||||
mm_sms_properties_set_service_category (MMSmsProperties *self,
|
||||
MMSmsCdmaServiceCategory service_category)
|
||||
{
|
||||
g_return_if_fail (MM_IS_SMS_PROPERTIES (self));
|
||||
|
||||
self->priv->service_category = service_category;
|
||||
}
|
||||
|
||||
/**
|
||||
* mm_sms_properties_get_service_category:
|
||||
* @self: A #MMSmsProperties.
|
||||
*
|
||||
* Gets the CDMA message service category of the SMS.
|
||||
*
|
||||
* Returns: the CDMA service category.
|
||||
*/
|
||||
MMSmsCdmaServiceCategory
|
||||
mm_sms_properties_get_service_category (MMSmsProperties *self)
|
||||
{
|
||||
g_return_val_if_fail (MM_IS_SMS_PROPERTIES (self), MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN);
|
||||
|
||||
return self->priv->service_category;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
GVariant *
|
||||
mm_sms_properties_get_dictionary (MMSmsProperties *self)
|
||||
{
|
||||
@@ -446,6 +518,18 @@ mm_sms_properties_get_dictionary (MMSmsProperties *self)
|
||||
PROPERTY_DELIVERY_REPORT_REQUEST,
|
||||
g_variant_new_boolean (self->priv->delivery_report_request));
|
||||
|
||||
if (self->priv->teleservice_id != MM_SMS_CDMA_TELESERVICE_ID_UNKNOWN)
|
||||
g_variant_builder_add (&builder,
|
||||
"{sv}",
|
||||
PROPERTY_TELESERVICE_ID,
|
||||
g_variant_new_uint32 (self->priv->teleservice_id));
|
||||
|
||||
if (self->priv->service_category != MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN)
|
||||
g_variant_builder_add (&builder,
|
||||
"{sv}",
|
||||
PROPERTY_SERVICE_CATEGORY,
|
||||
g_variant_new_uint32 (self->priv->service_category));
|
||||
|
||||
return g_variant_ref_sink (g_variant_builder_end (&builder));
|
||||
}
|
||||
|
||||
@@ -539,7 +623,29 @@ consume_string (MMSmsProperties *self,
|
||||
}
|
||||
|
||||
mm_sms_properties_set_delivery_report_request (self, request);
|
||||
} else if (g_str_equal (key, PROPERTY_DATA)) {
|
||||
} else if (g_str_equal (key, PROPERTY_TELESERVICE_ID)) {
|
||||
MMSmsCdmaTeleserviceId teleservice_id;
|
||||
GError *inner_error = NULL;
|
||||
|
||||
teleservice_id = mm_common_get_sms_cdma_teleservice_id_from_string (value, &inner_error);
|
||||
if (inner_error) {
|
||||
g_propagate_error (error, inner_error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
mm_sms_properties_set_teleservice_id (self, teleservice_id);
|
||||
} else if (g_str_equal (key, PROPERTY_SERVICE_CATEGORY)) {
|
||||
MMSmsCdmaServiceCategory service_category;
|
||||
GError *inner_error = NULL;
|
||||
|
||||
service_category = mm_common_get_sms_cdma_service_category_from_string (value, &inner_error);
|
||||
if (inner_error) {
|
||||
g_propagate_error (error, inner_error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
mm_sms_properties_set_service_category (self, service_category);
|
||||
} else if (g_str_equal (key, PROPERTY_DATA)) {
|
||||
g_set_error (error,
|
||||
MM_CORE_ERROR,
|
||||
MM_CORE_ERROR_INVALID_ARGS,
|
||||
@@ -648,6 +754,14 @@ consume_variant (MMSmsProperties *properties,
|
||||
mm_sms_properties_set_delivery_report_request (
|
||||
properties,
|
||||
g_variant_get_boolean (value));
|
||||
else if (g_str_equal (key, PROPERTY_TELESERVICE_ID))
|
||||
mm_sms_properties_set_teleservice_id (
|
||||
properties,
|
||||
g_variant_get_uint32 (value));
|
||||
else if (g_str_equal (key, PROPERTY_SERVICE_CATEGORY))
|
||||
mm_sms_properties_set_service_category (
|
||||
properties,
|
||||
g_variant_get_uint32 (value));
|
||||
else {
|
||||
/* Set error */
|
||||
g_set_error (error,
|
||||
@@ -756,6 +870,8 @@ mm_sms_properties_init (MMSmsProperties *self)
|
||||
MMSmsPropertiesPrivate);
|
||||
self->priv->validity_type = MM_SMS_VALIDITY_TYPE_UNKNOWN;
|
||||
self->priv->class = -1;
|
||||
self->priv->teleservice_id = MM_SMS_CDMA_TELESERVICE_ID_UNKNOWN;
|
||||
self->priv->service_category = MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN;
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -74,6 +74,10 @@ void mm_sms_properties_set_class (MMSmsProperties *self,
|
||||
gint class);
|
||||
void mm_sms_properties_set_delivery_report_request (MMSmsProperties *self,
|
||||
gboolean request);
|
||||
void mm_sms_properties_set_teleservice_id (MMSmsProperties *self,
|
||||
MMSmsCdmaTeleserviceId teleservice_id);
|
||||
void mm_sms_properties_set_service_category (MMSmsProperties *self,
|
||||
MMSmsCdmaServiceCategory service_category);
|
||||
|
||||
const gchar *mm_sms_properties_get_text (MMSmsProperties *self);
|
||||
const guint8 *mm_sms_properties_get_data (MMSmsProperties *self,
|
||||
@@ -86,6 +90,8 @@ MMSmsValidityType mm_sms_properties_get_validity_type (MMSmsProperties *se
|
||||
guint mm_sms_properties_get_validity_relative (MMSmsProperties *self);
|
||||
gint mm_sms_properties_get_class (MMSmsProperties *self);
|
||||
gboolean mm_sms_properties_get_delivery_report_request (MMSmsProperties *self);
|
||||
MMSmsCdmaTeleserviceId mm_sms_properties_get_teleservice_id (MMSmsProperties *self);
|
||||
MMSmsCdmaServiceCategory mm_sms_properties_get_service_category (MMSmsProperties *self);
|
||||
|
||||
/*****************************************************************************/
|
||||
/* ModemManager/libmm-glib/mmcli specific methods */
|
||||
|
||||
Reference in New Issue
Block a user