Commit Graph
16 Commits
Author SHA1 Message Date
Aleksander Morgado 3186a498c1 sms-part-3gpp: port to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado 0e05d0dcf0 base-sms: port to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado 6c5a2e24ae base-sms: set dbus id as soon as object is created 2020-04-08 16:35:09 +02:00
Aleksander Morgado 6a3e2d6a61 base-sms: fix warnings with -Wshadow
mm-base-sms.c: In function ‘mm_base_sms_new_from_properties’:
  mm-base-sms.c:1831:51: error: declaration of ‘properties’ shadows a global declaration [-Werror=shadow]
   1831 |                                  MMSmsProperties *properties,
        |                                  ~~~~~~~~~~~~~~~~~^~~~~~~~~~
  mm-base-sms.c:53:20: note: shadowed declaration is here
     53 | static GParamSpec *properties[PROP_LAST];
        |                    ^~~~~~~~~~
2020-01-30 11:59:14 +01:00
Aleksander Morgado 1d0ead9aca base-sms: fix warnings with -Wshadow
mm-base-sms.c: In function ‘generate_3gpp_submit_pdus’:
  mm-base-sms.c:153:19: error: declaration of ‘i’ shadows a previous local [-Werror=shadow]
    153 |             guint i = 0;
        |                   ^
  mm-base-sms.c:102:11: note: shadowed declaration is here
    102 |     guint i;
        |           ^
2020-01-30 11:59:14 +01:00
Aleksander Morgado 0c921bbc94 sms: initialize common fields early for multipart messages
Do not wait until all parts are received in order to initialize all
fields that are common to all parts in the SMS message, do it as soon
as the first part is received.

https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/137
2019-07-19 14:09:37 +00:00
Aleksander Morgado ea93aad8a4 base-sms: wait up to 60s when sending SMS messages
The operation sending the raw data of the SMS may timeout because the
current value of 10s is too low.

When this happens, we may end up marking the modem as invalid if the
operation takes much longer, as in
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/133

  <debug> [1561707204.192676] (ttyUSB3): --> 'AT+CMGS=22<CR>'
  <debug> [1561707204.207212] (ttyUSB3): <-- '<CR><LF>> '
  <debug> [1561707204.207562] (ttyUSB3) device open count is 3 (open)
  <debug> [1561707204.207695] (ttyUSB3) device open count is 2 (close)
  <debug> [1561707204.207841] (ttyUSB3): --> '0021000B9164xxxxxxxxFx00000AEDF6989D06D1CB733A\26'
  <debug> [1561707204.261028] (ttyUSB3): <-- '<CR><LF>'
  <debug> [1561707205.197464] (ttyUSB3) device open count is 3 (open)
  <debug> [1561707207.197763] loading signal quality...
  <debug> [1561707207.197990] (ttyUSB3) device open count is 4 (open)
  <debug> [1561707210.199337] (ttyUSB3) device open count is 5 (open)
  <debug> [1561707214.197198] (ttyUSB3) device open count is 4 (close)
  <debug> [1561707214.197443] (ttyUSB3): --> 'AT+CGACT?<CR>'
  <debug> [1561707215.196530] (ttyUSB3) device open count is 5 (open)
  <warn>  [1561707217.196750] checking if connected failed: Couldn't check current list of active PDP contexts: Serial command timed out
  <debug> [1561707217.196928] (ttyUSB3) device open count is 4 (close)
  <warn>  [1561707217.197065] (tty/ttyUSB3) at port timed out 2 consecutive times
  <debug> [1561707217.197187] (ttyUSB3): --> 'AT+CIND?<CR>'
  <debug> [1561707220.198180] (ttyUSB3) device open count is 5 (open)
  <debug> [1561707222.196792] (ttyUSB3) device open count is 6 (open)
  <debug> [1561707222.196983] (ttyUSB3) device open count is 5 (close)
  <warn>  [1561707222.197125] (tty/ttyUSB3) at port timed out 3 consecutive times
  <debug> [1561707222.197257] (ttyUSB3): --> 'AT+CGACT?<CR>'
  <debug> [1561707225.198384] (ttyUSB3) device open count is 6 (open)
  <warn>  [1561707225.198616] checking if connected failed: Couldn't check current list of active PDP contexts: Serial command timed out
  <debug> [1561707225.198703] (ttyUSB3) device open count is 5 (close)
  <warn>  [1561707225.198814] (tty/ttyUSB3) at port timed out 4 consecutive times
  <debug> [1561707225.199437] (ttyUSB3): --> 'AT+CGACT?<CR>'
  <warn>  [1561707228.196747] checking if connected failed: Couldn't check current list of active PDP contexts: Serial command timed out
  <debug> [1561707228.196915] (ttyUSB3) device open count is 4 (close)
  <warn>  [1561707228.197050] (tty/ttyUSB3) at port timed out 5 consecutive times
  <debug> [1561707228.197175] (ttyUSB3): --> 'AT+CGACT?<CR>'
  <debug> [1561707230.197709] (ttyUSB3) device open count is 5 (open)
  <warn>  [1561707231.197089] checking if connected failed: Couldn't check current list of active PDP contexts: Serial command timed out
  <debug> [1561707231.197256] (ttyUSB3) device open count is 4 (close)
  <warn>  [1561707231.197387] (tty/ttyUSB3) at port timed out 6 consecutive times
  <debug> [1561707231.197519] (ttyUSB3): --> 'AT+CSQ<CR>'
  <debug> [1561707234.199671] Couldn't refresh signal quality: 'Serial command timed out'
  <debug> [1561707234.199897] (ttyUSB3) device open count is 5 (open)
  <debug> [1561707234.200038] (ttyUSB3) device open count is 4 (close)
  <warn>  [1561707234.200161] (tty/ttyUSB3) at port timed out 7 consecutive times
  <debug> [1561707234.200291] (ttyUSB3): --> 'AT+CGACT?<CR>'
  <debug> [1561707235.197071] (ttyUSB3) device open count is 5 (open)
  <debug> [1561707237.198460] Signal quality value not updated in 60s, marking as not being recent
  <warn>  [1561707237.198846] checking if connected failed: Couldn't check current list of active PDP contexts: Serial command timed out
  <debug> [1561707237.198949] (ttyUSB3) device open count is 4 (close)
  <warn>  [1561707237.199060] (tty/ttyUSB3) at port timed out 8 consecutive times
  <debug> [1561707237.199636] (ttyUSB3): --> 'AT+CGACT?<CR>'
  <debug> [1561707240.198778] (ttyUSB3) device open count is 5 (open)
  <warn>  [1561707240.199031] checking if connected failed: Couldn't check current list of active PDP contexts: Serial command timed out
  <debug> [1561707240.199127] (ttyUSB3) device open count is 4 (close)
  <warn>  [1561707240.199244] (tty/ttyUSB3) at port timed out 9 consecutive times
  <debug> [1561707240.199363] (ttyUSB3): --> 'AT+CNSMOD?<CR>'
  <debug> [1561707243.198163] Couldn't refresh access technologies: 'Serial command timed out'
  <debug> [1561707243.198294] Periodic signal quality checks scheduled in 30s
  <debug> [1561707243.198402] (ttyUSB3) device open count is 3 (close)
  <error> [1561707243.198528] (tty/ttyUSB3) at port timed out 10 consecutive times, marking modem '/org/freedesktop/ModemManager1/Modem/0' as invalid
  <debug> [1561707243.198699] (ttyUSB3): --> 'AT+CGACT?<CR>'

Or we may end up aborting other actions that the modem is doing...

  <debug> [1560473069.956036] (ttyACM2): --> 'AT+CMGS=70<CR>'
  <debug> [1560473069.963667] Added CALL at '/org/freedesktop/ModemManager1/Call/1'
  <debug> [1560473069.977937] (ttyACM2): <-- '<CR><LF>> '
  <debug> [1560473069.978558] (ttyACM2) device open count is 3 (open)
  <debug> [1560473069.978812] (ttyACM2) device open count is 2 (close)
  <debug> [1560473069.979152] (ttyACM2): --> '0001000D8......................\26'
  <debug> [1560473080.317049] (ttyACM2): --> 'ATD123456789;<CR>'
  <debug> [1560473092.293458] (ttyACM2): <-- '<CR><LF>+CMGS: 1<CR><LF><CR><LF>OK<CR><LF>'
  <warn>  [1560473092.293854] Couldn't start call : 'Couldn't start the call: Unhandled response '+CMGS: 1''
  <info>  [1560473092.293936] Call state changed: dialing -> terminated (unknown)
  <debug> [1560473092.293987] Cleaning up in-call unsolicited events...

So, update the raw data sending timeout to a much longer value.
2019-07-09 16:55:48 +02:00
Aleksander Morgado 72bdb1b365 port-serial-at: raw commands always run next
We use the raw commands exclusively when we're sending SMS data to the
device. Until this change, all raw commands were added at the tail of
the queue of pending commands, and that meant that if any unrelated AT
command was interleaved between e.g. our AT+CGMS and the actual SMS
data sent, the operation would have failed.

With this fix, we're making sure that all raw commands are added at
the head of the queue, so we're making sure that the next command
picked after e.g. CGMS is actually the raw SMS data to be sent.

We would be avoiding issues like this one, where an outgoing voice
call attempt gets in the way before we send the SMS data:

  [1556246081.786284] (ttyACM2): --> 'AT+CMGS=70<CR>'
  [1556246081.814861] (ttyACM2): <-- '<CR><LF>> '
  [1556246081.819382] (ttyACM2): --> 'ATD1234567890;<CR>'
  [1556246081.839685] (ttyACM2): <-- '<CR><LF>> '
  [1556246081.840123] Couldn't start call : 'Couldn't start the call: Unhandled response '> ''
  [1556246081.856254] (ttyACM2): --> '0001000D810..............
  [1556246081.922470] (ttyACM2): <-- '<CR><LF>+CME ERROR: 4<CR><LF>'
2019-06-03 03:50:22 +00:00
Ben Chan 436f9ef7e6 core: use g_clear_pointer() to avoid explicitly checking and resetting pointers 2018-10-18 13:17:36 +02:00
Ben Chan 749b806c30 core: remove unnecessary NULL checks for g_free()
g_free() already check if the given pointer is NULL and does nothing on
a NULL pointer.
2018-10-18 13:17:36 +02:00
Lubomir Rintel b39dd2ec05 all: drop unused variables
Keeps build with GCC 8 happy.

mm-base-call.c:758:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
mm-base-call.c:822:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
mm-base-sms.c:908:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
mm-sms-list.c:331:25: warning: variable 'ctx' set but not used [-Wunused-but-set-variable]
mm-iface-modem-messaging.c:1210:21: warning: variable 'storage_ctx' set but not used [-Wunused-but-set-variable]
huawei/mm-plugin-huawei.c:183:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
ublox/mm-plugin-ublox.c:161:24: warning: variable 'response' set but not used [-Wunused-but-set-variable]
ublox/mm-plugin-ublox.c:159:24: warning: variable 'ctx' set but not used [-Wunused-but-set-variable]
icera/mm-modem-helpers-icera.c:218:25: warning: variable 'first_free' set but not used [-Wunused-but-set-variable]
novatel/mm-common-novatel.c:50:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
2018-04-24 18:11:15 +02:00
Ben Chan 87176cf52c base-sms: port mm_base_sms_delete to use GTask 2017-07-03 10:48:34 +02:00
Ben Chan 03c86a9db8 base-sms: port sms_delete to use GTask 2017-07-03 10:48:34 +02:00
Ben Chan c5be9aad97 base-sms: port sms_send to use GTask 2017-07-03 10:48:34 +02:00
Ben Chan 4902d9d759 base-sms: port sms_store to use GTask 2017-07-03 10:48:34 +02:00
Aleksander Morgado a29382be70 sms: rename 'MMSms' to 'MMBaseSms'
Just so that we don't have same header names in src/ and /libmm-glib.
2014-07-06 16:55:29 +02:00