aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2013-07-18 13:32:16 +0200
committerAleksander Morgado <aleksander@lanedo.com>2013-10-25 19:47:16 +0200
commit0bb91ce53dd2d2351f2070d302a35b6f0b8d7c8b (patch)
treeaf3767592f76fcf3dcafc9e9ea3325aa3afa70e4
parentd0fb94c49f3c27590bb6134fdca328c6f0a2180f (diff)
api: add 'ServiceCategory' property to the SMS interface
Will be used in 3GPP2 SMS messages.
-rw-r--r--cli/mmcli-sms.c8
-rw-r--r--docs/reference/api/ModemManager-sections.txt1
-rw-r--r--docs/reference/libmm-glib/libmm-glib-sections.txt7
-rw-r--r--include/ModemManager-enums.h82
-rw-r--r--introspection/org.freedesktop.ModemManager1.Sms.xml9
-rw-r--r--libmm-glib/mm-sms.c18
-rw-r--r--libmm-glib/mm-sms.h2
-rw-r--r--src/mm-sms.c2
8 files changed, 126 insertions, 3 deletions
diff --git a/cli/mmcli-sms.c b/cli/mmcli-sms.c
index f3478bd2..2ff9016a 100644
--- a/cli/mmcli-sms.c
+++ b/cli/mmcli-sms.c
@@ -200,15 +200,17 @@ print_sms_info (MMSms *sms)
VALIDATE (mm_sms_get_smsc (sms)),
mm_sms_get_class (sms));
}
- /* Teleservice ID is 3GPP2 specific */
+ /* Teleservice ID and service category are 3GPP2 specific */
else if (pdu_type == MM_SMS_PDU_TYPE_CDMA_DELIVER ||
pdu_type == MM_SMS_PDU_TYPE_CDMA_SUBMIT ||
pdu_type == MM_SMS_PDU_TYPE_CDMA_CANCELLATION ||
pdu_type == MM_SMS_PDU_TYPE_CDMA_DELIVERY_ACKNOWLEDGEMENT ||
pdu_type == MM_SMS_PDU_TYPE_CDMA_USER_ACKNOWLEDGEMENT ||
pdu_type == MM_SMS_PDU_TYPE_CDMA_READ_ACKNOWLEDGEMENT) {
- g_print (" | teleservice id: '%s'\n",
- mm_sms_cdma_teleservice_id_get_string (mm_sms_get_teleservice_id (sms)));
+ g_print (" | teleservice id: '%s'\n"
+ " | service category: '%s'\n",
+ mm_sms_cdma_teleservice_id_get_string (mm_sms_get_teleservice_id (sms)),
+ mm_sms_cdma_service_category_get_string (mm_sms_get_service_category (sms)));
}
if (pdu_type == MM_SMS_PDU_TYPE_SUBMIT)
diff --git a/docs/reference/api/ModemManager-sections.txt b/docs/reference/api/ModemManager-sections.txt
index 0f238e81..fd551a29 100644
--- a/docs/reference/api/ModemManager-sections.txt
+++ b/docs/reference/api/ModemManager-sections.txt
@@ -44,6 +44,7 @@ MMSmsDeliveryState
MMSmsStorage
MMSmsValidityType
MMSmsCdmaTeleserviceId
+MMSmsCdmaServiceCategory
</SECTION>
<SECTION>
diff --git a/docs/reference/libmm-glib/libmm-glib-sections.txt b/docs/reference/libmm-glib/libmm-glib-sections.txt
index 72c90643..ace32ff1 100644
--- a/docs/reference/libmm-glib/libmm-glib-sections.txt
+++ b/docs/reference/libmm-glib/libmm-glib-sections.txt
@@ -1051,6 +1051,7 @@ mm_sms_dup_smsc
mm_sms_get_message_reference
mm_sms_get_class
mm_sms_get_teleservice_id
+mm_sms_get_service_category
mm_sms_get_validity_type
mm_sms_get_validity_relative
mm_sms_get_timestamp
@@ -1151,6 +1152,7 @@ mm_sms_delivery_state_get_string
mm_sms_storage_get_string
mm_sms_validity_type_get_string
mm_sms_cdma_teleservice_id_get_string
+mm_sms_cdma_service_category_get_string
mm_firmware_image_type_get_string
mm_oma_feature_build_string_from_mask
mm_oma_session_type_get_string
@@ -1172,6 +1174,7 @@ mm_sms_delivery_state_build_string_from_mask
mm_sms_storage_build_string_from_mask
mm_sms_validity_type_build_string_from_mask
mm_sms_cdma_teleservice_id_build_string_from_mask
+mm_sms_cdma_service_category_build_string_from_mask
mm_modem_location_source_get_string
mm_modem_contacts_storage_build_string_from_mask
mm_bearer_ip_family_build_string_from_mask
@@ -1222,6 +1225,7 @@ MM_TYPE_SMS_STATE
MM_TYPE_SMS_STORAGE
MM_TYPE_SMS_VALIDITY_TYPE
MM_TYPE_SMS_CDMA_TELESERVICE_ID
+MM_TYPE_SMS_CDMA_SERVICE_CATEGORY
MM_TYPE_OMA_FEATURE
MM_TYPE_OMA_SESSION_STATE
MM_TYPE_OMA_SESSION_STATE_FAILED_REASON
@@ -1256,6 +1260,7 @@ mm_sms_state_get_type
mm_sms_storage_get_type
mm_sms_validity_type_get_type
mm_sms_cdma_teleservice_id_get_type
+mm_sms_cdma_service_category_get_type
mm_oma_feature_get_type
mm_oma_session_state_failed_reason_get_type
mm_oma_session_state_get_type
@@ -2614,6 +2619,7 @@ mm_gdbus_sms_get_validity
mm_gdbus_sms_dup_validity
mm_gdbus_sms_get_class
mm_gdbus_sms_get_teleservice_id
+mm_gdbus_sms_get_service_category
mm_gdbus_sms_get_timestamp
mm_gdbus_sms_dup_timestamp
mm_gdbus_sms_get_discharge_timestamp
@@ -2630,6 +2636,7 @@ mm_gdbus_sms_call_store_sync
<SUBSECTION Private>
mm_gdbus_sms_set_class
mm_gdbus_sms_set_teleservice_id
+mm_gdbus_sms_set_service_category
mm_gdbus_sms_set_data
mm_gdbus_sms_set_delivery_report_request
mm_gdbus_sms_set_delivery_state
diff --git a/include/ModemManager-enums.h b/include/ModemManager-enums.h
index 22d737b2..4991756a 100644
--- a/include/ModemManager-enums.h
+++ b/include/ModemManager-enums.h
@@ -601,6 +601,88 @@ typedef enum { /*< underscore_name=mm_sms_cdma_teleservice_id >*/
} MMSmsCdmaTeleserviceId;
/**
+ * MMSmsCdmaServiceCategory:
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN: Unknown.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_EMERGENCY_BROADCAST: Emergency broadcast.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_ADMINISTRATIVE: Administrative.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_MAINTENANCE: Maintenance.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_GENERAL_NEWS_LOCAL: General news (local).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_GENERAL_NEWS_REGIONAL: General news (regional).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_GENERAL_NEWS_NATIONAL: General news (national).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_GENERAL_NEWS_INTERNATIONAL: General news (international).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_BUSINESS_NEWS_LOCAL: Business/Financial news (local).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_BUSINESS_NEWS_REGIONAL: Business/Financial news (regional).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_BUSINESS_NEWS_NATIONAL: Business/Financial news (national).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_BUSINESS_NEWS_INTERNATIONAL: Business/Financial news (international).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_SPORTS_NEWS_LOCAL: Sports news (local).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_SPORTS_NEWS_REGIONAL: Sports news (regional).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_SPORTS_NEWS_NATIONAL: Sports news (national).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_SPORTS_NEWS_INTERNATIONAL: Sports news (international).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_ENTERTAINMENT_NEWS_LOCAL: Entertainment news (local).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_ENTERTAINMENT_NEWS_REGIONAL: Entertainment news (regional).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_ENTERTAINMENT_NEWS_NATIONAL: Entertainment news (national).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_ENTERTAINMENT_NEWS_INTERNATIONAL: Entertainment news (international).
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_LOCAL_WEATHER: Local weather.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_TRAFFIC_REPORT: Area traffic report.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_FLIGHT_SCHEDULES: Local airport flight schedules.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_RESTAURANTS: Restaurants.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_LODGINGS: Lodgings.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_RETAIL_DIRECTORY: Retail directory.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_ADVERTISEMENTS: Advertisements.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_STOCK_QUOTES: Stock quotes.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_EMPLOYMENT: Employment.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_HOSPITALS: Medical / Health / Hospitals.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_TECHNOLOGY_NEWS: Technology news.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_MULTICATEGORY: Multi-category.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_PRESIDENTIAL_ALERT: Presidential alert.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_EXTREME_THREAT: Extreme threat.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_SEVERE_THREAT: Severe threat.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY: Child abduction emergency.
+ * @MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_TEST: CMAS test.
+ *
+ * Service category for CDMA SMS, as defined in 3GPP2 C.R1001-D (section 9.3).
+ */
+typedef enum { /*< underscore_name=mm_sms_cdma_service_category >*/
+ MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN = 0x0000,
+ MM_SMS_CDMA_SERVICE_CATEGORY_EMERGENCY_BROADCAST = 0x0001,
+ MM_SMS_CDMA_SERVICE_CATEGORY_ADMINISTRATIVE = 0x0002,
+ MM_SMS_CDMA_SERVICE_CATEGORY_MAINTENANCE = 0x0003,
+ MM_SMS_CDMA_SERVICE_CATEGORY_GENERAL_NEWS_LOCAL = 0x0004,
+ MM_SMS_CDMA_SERVICE_CATEGORY_GENERAL_NEWS_REGIONAL = 0x0005,
+ MM_SMS_CDMA_SERVICE_CATEGORY_GENERAL_NEWS_NATIONAL = 0x0006,
+ MM_SMS_CDMA_SERVICE_CATEGORY_GENERAL_NEWS_INTERNATIONAL = 0x0007,
+ MM_SMS_CDMA_SERVICE_CATEGORY_BUSINESS_NEWS_LOCAL = 0x0008,
+ MM_SMS_CDMA_SERVICE_CATEGORY_BUSINESS_NEWS_REGIONAL = 0x0009,
+ MM_SMS_CDMA_SERVICE_CATEGORY_BUSINESS_NEWS_NATIONAL = 0x000A,
+ MM_SMS_CDMA_SERVICE_CATEGORY_BUSINESS_NEWS_INTERNATIONAL = 0x000B,
+ MM_SMS_CDMA_SERVICE_CATEGORY_SPORTS_NEWS_LOCAL = 0x000C,
+ MM_SMS_CDMA_SERVICE_CATEGORY_SPORTS_NEWS_REGIONAL = 0x000D,
+ MM_SMS_CDMA_SERVICE_CATEGORY_SPORTS_NEWS_NATIONAL = 0x000E,
+ MM_SMS_CDMA_SERVICE_CATEGORY_SPORTS_NEWS_INTERNATIONAL = 0x000F,
+ MM_SMS_CDMA_SERVICE_CATEGORY_ENTERTAINMENT_NEWS_LOCAL = 0x0010,
+ MM_SMS_CDMA_SERVICE_CATEGORY_ENTERTAINMENT_NEWS_REGIONAL = 0x0011,
+ MM_SMS_CDMA_SERVICE_CATEGORY_ENTERTAINMENT_NEWS_NATIONAL = 0x0012,
+ MM_SMS_CDMA_SERVICE_CATEGORY_ENTERTAINMENT_NEWS_INTERNATIONAL = 0x0013,
+ MM_SMS_CDMA_SERVICE_CATEGORY_LOCAL_WEATHER = 0x0014,
+ MM_SMS_CDMA_SERVICE_CATEGORY_TRAFFIC_REPORT = 0x0015,
+ MM_SMS_CDMA_SERVICE_CATEGORY_FLIGHT_SCHEDULES = 0x0016,
+ MM_SMS_CDMA_SERVICE_CATEGORY_RESTAURANTS = 0x0017,
+ MM_SMS_CDMA_SERVICE_CATEGORY_LODGINGS = 0x0018,
+ MM_SMS_CDMA_SERVICE_CATEGORY_RETAIL_DIRECTORY = 0x0019,
+ MM_SMS_CDMA_SERVICE_CATEGORY_ADVERTISEMENTS = 0x001A,
+ MM_SMS_CDMA_SERVICE_CATEGORY_STOCK_QUOTES = 0x001B,
+ MM_SMS_CDMA_SERVICE_CATEGORY_EMPLOYMENT = 0x001C,
+ MM_SMS_CDMA_SERVICE_CATEGORY_HOSPITALS = 0x001D,
+ MM_SMS_CDMA_SERVICE_CATEGORY_TECHNOLOGY_NEWS = 0x001E,
+ MM_SMS_CDMA_SERVICE_CATEGORY_MULTICATEGORY = 0x001F,
+ MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_PRESIDENTIAL_ALERT = 0x1000,
+ MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_EXTREME_THREAT = 0x1001,
+ MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_SEVERE_THREAT = 0x1002,
+ MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY = 0x1003,
+ MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_TEST = 0x1004,
+} MMSmsCdmaServiceCategory;
+
+/**
* MMModemLocationSource:
* @MM_MODEM_LOCATION_SOURCE_NONE: None.
* @MM_MODEM_LOCATION_SOURCE_3GPP_LAC_CI: Location Area Code and Cell ID.
diff --git a/introspection/org.freedesktop.ModemManager1.Sms.xml b/introspection/org.freedesktop.ModemManager1.Sms.xml
index 729271e3..343e6111 100644
--- a/introspection/org.freedesktop.ModemManager1.Sms.xml
+++ b/introspection/org.freedesktop.ModemManager1.Sms.xml
@@ -138,6 +138,15 @@
<property name="TeleserviceId" type="u" access="read" />
<!--
+ ServiceCategory:
+
+ A <link linkend="MMSmsCdmaServiceCategory">MMSmsCdmaServiceCategory</link> value.
+
+ Always <link linkend="MM-SMS-CDMA-SERVICE-CATEGORY-UNKNOWN:CAPS">MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN</link> for 3GPP.
+ -->
+ <property name="ServiceCategory" type="u" access="read" />
+
+ <!--
DeliveryReportRequest:
#TRUE if delivery report request is required, #FALSE otherwise.
diff --git a/libmm-glib/mm-sms.c b/libmm-glib/mm-sms.c
index b8c6485c..a49deb88 100644
--- a/libmm-glib/mm-sms.c
+++ b/libmm-glib/mm-sms.c
@@ -589,6 +589,24 @@ mm_sms_get_teleservice_id (MMSms *self)
/*****************************************************************************/
/**
+ * mm_sms_get_service_category:
+ * @self: A #MMSms.
+ *
+ * Gets the 3GPP2 Service Category.
+ *
+ * Returns: a #MMSmsCdmaServiceCategory.
+ */
+MMSmsCdmaServiceCategory
+mm_sms_get_service_category (MMSms *self)
+{
+ g_return_val_if_fail (MM_IS_SMS (self), MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN);
+
+ return (MMSmsCdmaServiceCategory) mm_gdbus_sms_get_service_category (MM_GDBUS_SMS (self));
+}
+
+/*****************************************************************************/
+
+/**
* mm_sms_send_finish:
* @self: A #MMSms.
* @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_sms_send().
diff --git a/libmm-glib/mm-sms.h b/libmm-glib/mm-sms.h
index e0490614..4e4e935b 100644
--- a/libmm-glib/mm-sms.h
+++ b/libmm-glib/mm-sms.h
@@ -105,6 +105,8 @@ MMSmsPduType mm_sms_get_pdu_type (MMSms *self);
MMSmsCdmaTeleserviceId mm_sms_get_teleservice_id (MMSms *self);
+MMSmsCdmaServiceCategory mm_sms_get_service_category (MMSms *self);
+
void mm_sms_send (MMSms *self,
GCancellable *cancellable,
GAsyncReadyCallback callback,
diff --git a/src/mm-sms.c b/src/mm-sms.c
index 3b66a52b..25a44775 100644
--- a/src/mm-sms.c
+++ b/src/mm-sms.c
@@ -1500,6 +1500,7 @@ assemble_sms (MMSms *self,
"smsc", mm_sms_part_get_smsc (sorted_parts[0]),
"class", mm_sms_part_get_class (sorted_parts[0]),
"teleservice-id", MM_SMS_CDMA_TELESERVICE_ID_UNKNOWN,
+ "service-category", MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN,
"number", mm_sms_part_get_number (sorted_parts[0]),
"validity", (validity_relative ?
g_variant_new ("(uv)", MM_SMS_VALIDITY_TYPE_RELATIVE, g_variant_new_uint32 (validity_relative)) :
@@ -1739,6 +1740,7 @@ mm_sms_new_from_properties (MMBaseModem *modem,
"smsc", mm_sms_properties_get_smsc (properties),
"class", mm_sms_properties_get_class (properties),
"teleservice-id", MM_SMS_CDMA_TELESERVICE_ID_UNKNOWN,
+ "service-category", MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN,
"delivery-report-request", mm_sms_properties_get_delivery_report_request (properties),
"validity", (mm_sms_properties_get_validity_type (properties) == MM_SMS_VALIDITY_TYPE_RELATIVE ?
g_variant_new ("(uv)", MM_SMS_VALIDITY_TYPE_RELATIVE, g_variant_new_uint32 (mm_sms_properties_get_validity_relative (properties))) :