aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-09-14cli: new `--messaging-status' actionAleksander Morgado
Currently shows the list of supported SMS storages.
2012-09-14libmm-glib: new `mm_modem_messaging_get_supported_storages()' methodAleksander Morgado
2012-09-14api: new `SupportedStorages' property in the Messaging interfaceAleksander Morgado
We will list which are the storages allowed to use when receiving/storing SMS messages.
2012-09-14libmm-common: new helpers to work with arrays of `MMSmsStorage' valuesAleksander Morgado
2012-09-14broadband-modem: allow locking/unlocking either 'mem1' or 'mem2' or bothAleksander Morgado
So that e.g. listing all SMS in a given storage ('mem1' lock) doesn't collide with storing a new SMS ('mem2' lock).
2012-09-14sms: select proper storage when deleting SMSAleksander Morgado
2012-09-14cli: new `--store-in-storage' action to be able to select where to store the SMSAleksander Morgado
Expects the storage as the enum nickname string, e.g: "me" for MM_SMS_STORAGE_ME or "sm" for MM_SMS_STORAGE_SM
2012-09-14api: Sms.Store() now requires the specific memory storage where to store the SMSAleksander Morgado
... or MM_SMS_STORAGE_UNKNOWN to store it in the default storage.
2012-09-14iface-modem-messaging: setting preferred storages is a one-time operationAleksander Morgado
Selection specific storages to run actions on them can now be done with the broadband-modem-specific lock|unlock_sms_storages() methods.
2012-09-14iface-modem-messaging: load initial SMS parts after having set default storagesAleksander Morgado
We really want the 'mem3' storage set as soon as possible.
2012-09-14broadband-modem: lock/unlock the 'mem1' storage when reading initial SMS listsAleksander Morgado
2012-09-14broadband-modem: new methods to lock/unlock current SMS storagesAleksander Morgado
The default AT commands to play with SMS rely on AT+CPMS to select the default memory storages for different operations. AT+CPMS defines 3 different storages, called 'mem1' (for reading/listing/deleting), 'mem2' (for storing or sending from storage) and 'mem3' (for receiving). For example, when an SMS is to be deleted, we first need to select with AT+CPMS the proper 'mem1' storage before issuing the command to delete the SMS part. But, in order to do this properly we need to synchronize the access to the currently set storages, so that no more than one action is run in the storages at the same time (e.g. don't store an SMS while another SMS is being deleted). In order to synchronize this access, we now provide commands to lock()/unlock() the storages, which should be used when we want to do some operation on them. Note that this logic is only required because we cannot specify the storage explicitly in the specific AT command operations. With QMI we don't need this locking/unlocking.
2012-09-14iface-modem-messaging: new methods to check support for storage actionsAleksander Morgado
We can now check whether a specific storage is valid for receiving or storing.
2012-09-14broadband-modem-qmi: we don't support 3GPP2 messaging yetAleksander Morgado
2012-09-14sms-qmi: handle sending/storing multipart SMS messagesAleksander Morgado
2012-09-14sms-part: create proper SUBMIT PDUs for multipart SMS messagesAleksander Morgado
If the SMS part is from a multipart message we'll need to create a PDU with a proper User Data Header. This patch is based on a previous implementation by: Roberto Majadas <roberto.majadas@openshine.com>
2012-09-14sms: try to store/send all parts of a SMS messageAleksander Morgado
2012-09-14sms: allow users to create multipart SMS messagesAleksander Morgado
2012-09-14sms: always export incomplete multipart SMS messagesAleksander Morgado
2012-09-14sms-part: new util to split input text string into chunks to fit in PDUsAleksander Morgado
2012-09-14sms-part: allow storing and accessing the user encoding info of an SMS partAleksander Morgado
2012-09-14sms: either 'text' or 'data' is mandatoryAleksander Morgado
2012-09-14iface-modem-3gpp: update state to REGISTERED after loading operator code/nameAleksander Morgado
Call managers all want to be able to set the operator ID and/or name as soon as we get registered. We will consider now that whenever we get into registered state we already have operator code and name updated to the proper values. Applications shouldn't, though, just rely on those values to be valid as long as we're registered, as the modem may re-register automatically in some other network (e.g. going from a roaming network to the home network). This change involves not setting the state to REGISTERED until operator name and code loading sequences have been run. We will still signal in the log the change, with a new 'registering' intermediate state indication.
2012-09-13broadband-modem-qmi: don't update access technology from operator infoAleksander Morgado
The operator info seems to show what the operator can do; it doesn't show the current access technology.
2012-09-13broadband-modem-qmi: update access technology along with signal qualityAleksander Morgado
2012-09-13broadband-modem-qmi: handle SEARCHING registration stateAleksander Morgado
2012-09-12core: fix a leak in "core: better handling of non-UCS2 conversions that ↵Dan Williams
should be UCS2 (bgo #683817)"
2012-09-12core: better handling of non-UCS2 conversions that should be UCS2 (bgo #683817)Dan Williams
Some modems return the +COPS operator name in hex-encoded current character set (as set with +CSCS). Others return the operator name in ASCII when set to UCS2, while yet others return the ASCII name with trash at the end (*cough* Huawei *cough*). Handle that better by not crashing.
2012-09-12api: remove `Completed' signal from the Messaging interfaceAleksander Morgado
This signal is no longer needed, as the individual state changes of the SMS objects are enough to know their correct status of completion. See https://bugzilla.gnome.org/show_bug.cgi?id=675178
2012-09-11sms: fix full data setting with `g_variant_new_from_data()'Aleksander Morgado
The `g_variant_new_from_data()' method uses the original array during its operation, so we need to make sure it is valid as long as the method needs it, or we'll end up with Valgrind complaining a bit: ==4834== Invalid read of size 1 ==4834== at 0x36ADC75DA5: g_variant_get_byte (in /usr/lib64/libglib-2.0.so.0.3200.4) ==4834== by 0x3161ABED8C: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161ABEEA2: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161ABE844: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161ABE91E: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161ABEEA2: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161AC232E: g_dbus_message_to_blob (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161AB750A: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161AB9FEF: g_dbus_connection_send_message (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161ABDB22: g_dbus_connection_emit_signal (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x4C5B8BD: _mm_gdbus_sms_emit_changed (mm-gdbus-sms.c:2291) ==4834== by 0x36ADC47694: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.3200.4) ==4834== Address 0x939efa0 is 0 bytes inside a block of size 512 free'd ==4834== at 0x4A079AE: free (vg_replace_malloc.c:427) ==4834== by 0x36ADC4D37E: g_free (in /usr/lib64/libglib-2.0.so.0.3200.4) ==4834== by 0x36ADC1CF40: ??? (in /usr/lib64/libglib-2.0.so.0.3200.4) ==4834== by 0x43C88E: assemble_sms (mm-sms.c:1260) ==4834== by 0x43CAD6: mm_sms_multipart_take_part (mm-sms.c:1329) ==4834== by 0x43E2EF: take_multipart (mm-sms-list.c:268) ==4834== by 0x43E546: mm_sms_list_take_part (mm-sms-list.c:328) ==4834== by 0x454C8F: mm_iface_modem_messaging_take_part (mm-iface-modem-messaging.c:353) ==4834== by 0x461DF6: sms_pdu_part_list_ready (mm-broadband-modem.c:5007) ==4834== by 0x3161A6CFB6: g_simple_async_result_complete (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x432F82: at_command_parse_response (mm-base-modem-at.c:490) ==4834== by 0x489F96: handle_response (mm-at-serial-port.c:161)
2012-09-11novatel-lte: implement modem resetBen Chan
2012-09-10iface-modem-3gpp-ussd: avoid update if object skeleton is NULLBen Chan
2012-09-08broadband-modem-qmi: set network port to 802.3/no-QoS modeDan Williams
The kernel drivers expect this mode, so make sure we set it.
2012-09-08icera: increase timeout for +CFUN=4Ben Chan
2012-09-08novatel-lte: set default SMS storage to 'SM'Ben Chan
Novatel E362 LTE modem only supports 'SM' and 'SR', but not 'ME'.
2012-09-07broadband-modem: clear error properly as it may be re-usedAleksander Morgado
Avoids this kind of issues: [mm-sms-list.c:334] mm_sms_list_take_part(): SMS part at 'me/0' is from a singlepart SMS [mm-iface-modem-messaging.c:475] sms_added(): Added received SMS at '/org/freedesktop/ModemManager1/SMS/31' [mm-broadband-modem.c:4791] sms_pdu_part_list_ready(): Error parsing PDU (1): PDU too short (2): 41 < 79 GLib-WARNING **: GError set over the top of a previous GError or uninitialized memory. This indicates a bug in someone's code. You must ensure an error is NULL before it's set. The overwriting error message was: PDU too short (3): 28 < (210 + 14), user data length: '203' [mm-broadband-modem.c:4791] sms_pdu_part_list_ready(): Error parsing PDU (2): PDU too short (3): 28 < (210 + 14), user data length: '203'
2012-09-07sms: multipart sequence starts with 1; singlepart is always 0Aleksander Morgado
2012-09-07cli: include both current and modem capabilities in modem reportAleksander Morgado
2012-09-07broadband-modem-qmi: try to use Band Preference for current caps if availableAleksander Morgado
The "NAS Get System Selection Preference" response may come without "Mode Preference". If that is found, look for "Band Preference" and "LTE Band Preference" TLVs and try to build capabilities from those. This makes my UML290 properly report CDMA/EVDO+LTE capabilities: ModemManager[16586]: [/dev/cdc-wdm0] Received message... >>>>>> QMUX: >>>>>> length = 55 >>>>>> flags = 0x80 >>>>>> service = "nas" >>>>>> client = 1 >>>>>> QMI: >>>>>> flags = "response" >>>>>> transaction = 1 >>>>>> tlv_length = 43 >>>>>> message = "Get System Selection Preference" (0x0034) >>>>>> TLV: >>>>>> type = "Result" (0x02) >>>>>> length = 4 >>>>>> value = 00:00:00:00 >>>>>> translated = SUCCESS >>>>>> TLV: >>>>>> type = "Emergency mode" (0x10) >>>>>> length = 1 >>>>>> value = 00 >>>>>> translated = 0 >>>>>> TLV: >>>>>> type = "Band Preference" (0x12) >>>>>> length = 8 >>>>>> value = 07:00:00:00:00:00:00:00 >>>>>> translated = 7 >>>>>> TLV: >>>>>> type = "CDMA PRL Preference" (0x13) >>>>>> length = 2 >>>>>> value = FF:3F >>>>>> translated = 16383 >>>>>> TLV: >>>>>> type = "Roaming Preference" (0x14) >>>>>> length = 2 >>>>>> value = FF:00 >>>>>> translated = 255 >>>>>> TLV: >>>>>> type = "LTE Band Preference" (0x15) >>>>>> length = 8 >>>>>> value = 00:00:00:00:00:00:00:00 >>>>>> translated = 0 ModemManager[16586]: KEY: 01:00:01:03:00:00:00:00 ModemManager[16586]: Service: 03 ModemManager[16586]: Client ID: 01 ModemManager[16586]: Transaction ID: 01:00 ModemManager[16586]: <debug> [1347005734.979115] [mm-broadband-modem-qmi.c:321] load_current_capabilities_get_system_selection_preference_ready(): Mode preference not reported in system selection preference ModemManager[16586]: <debug> [1347005734.979131] [mm-broadband-modem-qmi.c:333] load_current_capabilities_get_system_selection_preference_ready(): Valid bands reported in system selection preference: 'bc-0-a-system, bc-0-b-system, bc-1-all-blocks' ModemManager[16586]: <debug> [1347005734.979141] [mm-broadband-modem-qmi.c:341] load_current_capabilities_get_system_selection_preference_ready(): LTE band preference found ModemManager[16586]: [/dev/cdc-wdm0] Sending message... <<<<<< QMUX: <<<<<< length = 12 <<<<<< flags = 0x00 <<<<<< service = "dms" <<<<<< client = 1 <<<<<< QMI: <<<<<< flags = "none" <<<<<< transaction = 1 <<<<<< tlv_length = 0 <<<<<< message = "Get Capabilities" (0x0020) ModemManager[16586]: KEY: 01:00:01:02:00:00:00:00 ModemManager[16586]: Service: 02 ModemManager[16586]: Client ID: 01 ModemManager[16586]: Transaction ID: 01:00 ModemManager[16586]: <debug> [1347005734.982676] [mm-at-serial-port.c:392] debug_log(): (ttyACM0): <-- '<CR><LF>OK<CR><LF>' ModemManager[16586]: <debug> [1347005734.982751] [mm-serial-port.c:969] mm_serial_port_close(): (ttyACM0) device open count is 2 (close) ModemManager[16586]: <debug> [1347005734.982797] [mm-at-serial-port.c:392] debug_log(): (ttyACM0): --> 'AT+CMEE=1<CR>' ModemManager[16586]: [/dev/cdc-wdm0] Received message... >>>>>> QMUX: >>>>>> length = 38 >>>>>> flags = 0x80 >>>>>> service = "dms" >>>>>> client = 1 >>>>>> QMI: >>>>>> flags = "response" >>>>>> transaction = 1 >>>>>> tlv_length = 26 >>>>>> message = "Get Capabilities" (0x0020) >>>>>> TLV: >>>>>> type = "Result" (0x02) >>>>>> length = 4 >>>>>> value = 00:00:00:00 >>>>>> translated = SUCCESS >>>>>> TLV: >>>>>> type = "Info" (0x01) >>>>>> length = 16 >>>>>> value = B0:9D:57:00:00:DD:6D:00:03:02:05:01:02:04:05:08 >>>>>> translated = [ max_tx_channel_rate = '5742000' max_rx_channel_rate = '7200000' data_service_capability = '3' sim_capability = '2' radio_interface_list = '{ [0] = '1 ' [1] = '2 ' [2] = '4 ' [3] = '5 ' [4] = '8 '}' ] ModemManager[16586]: KEY: 01:00:01:02:00:00:00:00 ModemManager[16586]: Service: 02 ModemManager[16586]: Client ID: 01 ModemManager[16586]: Transaction ID: 01:00 ModemManager[16586]: <debug> [1347005734.983353] [mm-broadband-modem-qmi.c:183] modem_load_current_capabilities_finish(): loaded current capabilities: cdma-evdo, lte
2012-09-07broadband-modem-qmi: don't always trust the current capabilities reported by SSPAleksander Morgado
Sometimes the 'Mode Preference' TLV in the SSP response will have incorrect values. The following log is for a Gobi3k modem which is *only* GMS/UMTS. ModemManager[13415]: [/dev/cdc-wdm0] Received message... >>>>>> QMUX: >>>>>> length = 44 >>>>>> flags = 0x80 >>>>>> service = "nas" >>>>>> client = 2 >>>>>> QMI: >>>>>> flags = "response" >>>>>> transaction = 1 >>>>>> tlv_length = 32 >>>>>> message = "Get System Selection Preference" (0x0034) >>>>>> TLV: >>>>>> type = "Result" (0x02) >>>>>> length = 4 >>>>>> value = 00:00:00:00 >>>>>> translated = SUCCESS >>>>>> TLV: >>>>>> type = "Emergency mode" (0x10) >>>>>> length = 1 >>>>>> value = 00 >>>>>> translated = 0 >>>>>> TLV: >>>>>> type = "Mode Preference" (0x11) >>>>>> length = 2 >>>>>> value = 0F:00 >>>>>> translated = 15 >>>>>> TLV: >>>>>> type = "Band Preference" (0x12) >>>>>> length = 8 >>>>>> value = FF:FF:FF:3F:FF:FF:FF:FF >>>>>> translated = 18446744070488326143 >>>>>> TLV: >>>>>> type = "Roaming Preference" (0x14) >>>>>> length = 2 >>>>>> value = FF:00 >>>>>> translated = 255 Instead of setting to '1' only the bits related to GSM/UMTS in the "Mode Preference" TLV, the modem sets all the bits it knows of to '1', including the CDMA/EVDO ones. It is not easy to detect this properly, because the modem didn't set to '1' the bits it didn't know of (e.g. LTE or TD-SCDMA), so we *cannot* assume that 0x000F actually means 'unknown'. So, we now will pass these returned values through the "DMS Get Capabilities" filter, as we did for the Technology Preference result. The final reported current capabilities will be either: * The intersection between the capabilities loaded by "NAS Get System Selection Preference" and "DMS Get Capabilities" or, * The intersection between the capabilities loaded by "NAS Get Technology Preference" and "DMS Get Capabilities". For 'modem' (not 'current') capabilities, we still rely only on "DMS Get Capabilities".
2012-09-06sms-qmi: implement SMS part deletingAleksander Morgado
2012-09-06sms-qmi: implement singlepart SMS sendingAleksander Morgado
2012-09-06sms-qmi: implement singlepart SMS storageAleksander Morgado
2012-09-06sms-qmi: new `MMSmsQmi' objectAleksander Morgado
2012-09-06broadband-modem-qmi: implement unsolicited messaging events setup/cleanupAleksander Morgado
2012-09-06broadband-modem-qmi: implement unsolicited messaging events enabling/disablingAleksander Morgado
2012-09-06broadband-modem-qmi: minor indentation fixAleksander Morgado
2012-09-06broadband-modem-qmi: load initial SMS parts using QMIAleksander Morgado
2012-09-06broadband-modem-qmi: implement default storage setting using QMIAleksander Morgado
2012-09-06broadband-modem-qmi: no need to setup SMS format, always in PDU modeAleksander Morgado