diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-07-18 13:32:16 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-10-25 19:47:16 +0200 |
commit | 0bb91ce53dd2d2351f2070d302a35b6f0b8d7c8b (patch) | |
tree | af3767592f76fcf3dcafc9e9ea3325aa3afa70e4 | |
parent | d0fb94c49f3c27590bb6134fdca328c6f0a2180f (diff) |
api: add 'ServiceCategory' property to the SMS interface
Will be used in 3GPP2 SMS messages.
-rw-r--r-- | cli/mmcli-sms.c | 8 | ||||
-rw-r--r-- | docs/reference/api/ModemManager-sections.txt | 1 | ||||
-rw-r--r-- | docs/reference/libmm-glib/libmm-glib-sections.txt | 7 | ||||
-rw-r--r-- | include/ModemManager-enums.h | 82 | ||||
-rw-r--r-- | introspection/org.freedesktop.ModemManager1.Sms.xml | 9 | ||||
-rw-r--r-- | libmm-glib/mm-sms.c | 18 | ||||
-rw-r--r-- | libmm-glib/mm-sms.h | 2 | ||||
-rw-r--r-- | src/mm-sms.c | 2 |
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))) : |