Commit Graph

2709 Commits

Author SHA1 Message Date
Richard Röjfors 06de0c3067 gprs: Remove prior attaching state logic
Commit 1fd419e5b4 and
0167c3339c introduced logic that
treated ofono_gprs_cid_activated as an 'attaching' state.

Since gprs_attached_update now guarantees that we
will not get attached without having a context activated
in LTE, this is not needed anymore. It also potentially
interferes in case the driver was actually attaching.
2019-08-21 13:27:26 -05:00
Richard Röjfors b50ff27d3f gprs: Check for LTE in gprs_attached_update
Since we have a different condition for the attach state
when running on LTE, we should consider it in gprs_attached_update.
Previously it's done in some instances. But for instance if
the driver got detached from GPRS but now running on LTE with a
context up, we would be deattached.
2019-08-21 13:11:11 -05:00
Richard Röjfors 9a1b490e78 gprs: Ignore activated contexts during init, list them later
There is an issue if an context gets auto activated early,
then provisioning might not have run yet for instance,
so a "new" context is created, which might be duplicated
by a provisioning context later.
So ignore the activated contexts until gprs is ready,
then it calls the driver to list active contexts.
2019-08-13 01:41:16 -05:00
Richard Röjfors 88ee0123ab gprs: Do not detach when running LTE and GPRS is unavailable.
There are cases where the gprs status might updated to for instance
"unknown" while LTE is the bearer.
In that case we should not set the attach state to FALSE,
since then running LTE the conext activation reflects the attached
state.
2019-08-12 15:45:40 -05:00
Richard Röjfors 5752702cbe gprs: Do not leak CID on failure to assign context 2019-08-07 17:10:17 -05:00
Richard Röjfors d4ced627e0 gprs: Use -1 as netreg status during init.
Previously the valid "unknown" netreg status was set
during startup, but its a bit problematic for gprs.
There might be cases where a LTE context is activated
before netreg is finished updating its status.
Resulting in gprs taking faulty actions.
Instead we set the status to -1 until we are updated
with a known value.
During the time the status is -1, gprs postpones actions until
the status is valid (>= 0).
2019-08-07 16:54:25 -05:00
Antara Borwankar 90c312484f netmon: adding get functionality for neighbouring cell information
Handled the get neighbouring cell information function which returns
an array of signal strength of all neighbouring cells.
2019-06-07 11:40:59 -05:00
Denis Kenzior 765c6655f2 treewide: Use L_TFR macro 2019-05-24 11:55:38 -05:00
Denis Kenzior 48e31f9fc3 main: Quiet ld errors with external ell
When oFono is built with --enable-external-ell, the compiler for some
reason does not generate a debug section on some systems.  This is due
to the fact that l_debug is never called.  However, ell also does not
call l_debug, yet when built-in ell is used, the section is created by
the compiler.

For now work around this by adding a no-op l_debug() call in main.c.
The real fix is to migrate all of the oFono logging functionality to use
ell instead.
2019-05-16 15:10:53 -05:00
Denis Kenzior 5d3640397a core: Quiet warning about strncpy use 2019-05-16 15:10:40 -05:00
Antara Borwankar 0c2f2815ca radio-settings: handling of dual mode technology preference
Handled two new dual mode technology preferences
"umts,gsm" and "lte,umts".
2019-05-16 10:40:45 -05:00
Denis Kenzior dc7fb359cb voicecall: Fix possible crash 2019-04-30 11:40:17 -05:00
Denis Kenzior 408d063f85 netmon: Fix logic error 2019-04-30 11:38:36 -05:00
Denis Kenzior 614ffb0761 sim-auth: Use memcpy instead of strncpy
The code is not really copying strings but 2 or 3 character sof the MNC.
Make this clearer.
2019-04-30 11:09:52 -05:00
Denis Kenzior d3625f8e6f message-waiting: Fix logic error 2019-04-29 19:38:12 -05:00
Denis Kenzior ca9d5b73ab gprs: Remove unneeded if conditions
ctx->message_center and ctx->message_proxy are arrays and thus
always evaluate as true
2019-04-29 19:30:22 -05:00
Denis Kenzior c56bd74cb1 gprs: Fix invalid string comparison
The default context created when provisioning fails is simply a context
with an empty APN
2019-04-29 19:27:29 -05:00
Denis Kenzior 91253a1ade gprs: Remove unneeded if statement
if (ctx->message_proxy) always resolves to TRUE
2019-04-29 19:25:57 -05:00
Denis Kenzior 87932a536f stk: Fix potential buffer overrun 2019-04-29 19:24:19 -05:00
Denis Kenzior bdda846134 phonebook: fix invalid sprintf sequence 2019-04-29 19:16:07 -05:00
Denis Kenzior a63988a33f stkutil: Call va_end on failure 2019-04-29 14:34:00 -05:00
Denis Kenzior 999494624b siri: Dereference after validating !NULL 2019-04-29 14:27:54 -05:00
Denis Kenzior 1c940839bb handsfree: Dereference after validating !NULL 2019-04-29 14:26:43 -05:00
Denis Kenzior 4fddd1a6ea sim: Dereference only after validating !NULL 2019-04-29 14:24:48 -05:00
Denis Kenzior 4a93c329b9 log: Fix potential buffer overflow
We pass in the maximum size of the buffer to the read system call.  On
the astronomically unlikely chance that we indeed read the full buffer
full of data, the subsequent assignment will overflow it.  Fix this by
passing sizeof(buf) - 1 to the read system call instead.
2019-04-29 14:16:17 -05:00
Alexander Couzens d604052cef gprs: netreg_status_changed: output the status as human readable string 2019-04-28 10:13:51 -05:00
Alexander Couzens 13181d1a01 network: debug log the network time on update 2019-04-28 10:13:07 -05:00
Alexander Couzens c508574f68 network/ofono_netreg_status_notify: debug log the lac and ci 2019-04-28 10:13:07 -05:00
Richard Röjfors 05aaab72ae gprs: Always store RoamingAllowed as a boolean.
In one instance it was stored as boolean and another as int.
Since its always parsed as a boolean and it is a boolean,
always store it as boolean.
2019-04-16 11:46:00 -05:00
Richard Röjfors b9fdba531f gprs: Fix allocation of context id read from settings
This fix is similar to the one in the following commit,
but fixes allocation for context ids after ap's are
read from settings.

commit c3fdf6a7c5
Author: Denis Kenzior <denkenz@gmail.com>
Date:   Thu Jan 3 17:17:21 2019 -0600

    gprs: Fix allocation of context id
2019-04-02 10:41:16 -05:00
Antara Borwankar d10a2490b1 sim: added error handling in set slot callback
Adding the handling of error when the driver returns
CME ERROR:4.

This error will be returned for non xmm vendor modems
using ifxmodem driver for sim.
2019-04-02 10:27:07 -05:00
Denis Kenzior c5cb6f7a3c sim: Initialize card_slot_count and active_card_slot
Initialize both to 1 so that SimManager does not erroneously show
ActiveCardSlot as 0 for drivers that do not (yet) setup these values.
2019-03-28 21:08:02 -05:00
Denis Kenzior ab4e5d0852 sim: Emit PropertyChanged for ActiveCardSlot changes 2019-03-28 21:08:02 -05:00
Antara Borwankar 693396da22 sim: handling of dual sim single active feature
Added implementation for handling CardSlotCount and ActiveCardSlot
properties for DSSA use case.
2019-03-28 21:08:02 -05:00
Anirudh Gargi e54ac6bcd4 sim: fix segfault in sim atom
While adding the sim pin cache feature, pin_name could cause issue in
cases when sim pin is not there.

log:
ofonod[27810]: drivers/atmodem/sim.c:at_cpin_cb() crsm_pin_cb: READY
ofonod[27810]: src/sim.c:sim_pin_query_cb() sim->pin_type: 0, pin_type: 0
ofonod[27810]: Aborting (signal 11) [./src/ofonod]
ofonod[27810]: ++++++++ backtrace ++++++++
ofonod[27810]: #0  0x7fb7a7586cb0 in /lib/x86_64-linux-gnu/libc.so.6
ofonod[27810]: #1  0x7fb7a7693cd8 in /lib/x86_64-linux-gnu/libc.so.6
ofonod[27810]: #2  0x4d899b in sim_pin_query_cb() at src/sim.c:3174
ofonod[27810]: #3  0x4649e7 in at_cpin_cb() at drivers/atmodem/sim.c:1304
ofonod[27810]: #4  0x4a5d70 in at_chat_finish_command() at gatchat/gatchat.c:462
2019-03-07 10:24:54 -06:00
Antara Borwankar 608c683250 gprs-context: Adding get function for inteface
Added definition of get function to get interface value in
gprs-context
2019-02-21 11:00:04 -06:00
Philippe De Swert 45efc2354e common: Add new NB-IoT technologies
Add lte-cat-m1 and lte-cat-nb1 technology identifiers.
2019-02-17 21:18:54 -06:00
Denis Kenzior 13c0e25eb2 gprs: Let gprs_context interface be settable once
This patch allows a driver to set the interface only once, instead of at
every context activation.  The previous way was originally designed for
PPP and RAW_IP based contexts which would have a (potentially)
differently named interface after each context activation due to use of
TUN/TAP.  This also worked for static high-speed interface setups as
well, since these usually had a single interface only.

For devices that support multiple high-speed interfaces it would be
advantageous to have each gprs_context get an interface assignment right
in the modem driver and skip having to setup the interface on every
activation.
2019-02-11 17:51:16 -06:00
Nandini Rebello 55e5a766f2 modem: add support to clear cached pins.
If the modem is powered off via D-Bus, clear any cached PINs to make
sure that automatic PIN entry behavior is not activated.
2019-01-23 17:49:53 -06:00
Denis Kenzior 3152c59455 sim: Fix memory leaks introduced by sim pin caching 2019-01-23 17:49:49 -06:00
Nandini Rebello f36d6d05cc sim: Sim PIN1 cache upon modem reset/crash
Adding SIM PIN caching feature to oFono. oFono now caches the SIM PIN1
type against the ICCID throughout its lifetime in a link list and
enters implicitly upon modem reset/crash.

Note, that this behavior can violate 3GPP spec 21.111, section 5.3 -
User Data stored in ME if that section is interpreted very strictly.
However, our interpretation is that firmware resets are allowed, based
on historic precedent.  Helps in user experience by not barring out
cellular services unless pin is entered manually.

Handles cases of incorrect pin and sim pin changed externally.
Clear cached PIN incase modem disabled manually and selectively when
sim is removed.

Seperate 'pin_cache_enter_cb' added without dbus calls to handle
implict entering of cached pin.

For now this behavior is applicable to all modems by default.  In the
future it may be needed to make this behavior opt in or otherwise
configurable.
2019-01-23 17:44:31 -06:00
Denis Kenzior dbc314ebc4 stkutil: Fix ofono_bool_t usage
The actual datatype is bool
2019-01-18 08:55:52 -06:00
Denis Kenzior c3fdf6a7c5 gprs: Fix allocation of context id
After the convertion to l_uintset, the creation of new contexts fails
due to a range error being returned from l_uintset_find_unused().

The error happens because the uinset is created with a min-value of 1,
but the start-value passed to l_uintset_find_unused() is initialized as
0.

Reported-by: Martin Hundebøll <martin@geanix.com>
2019-01-03 17:17:21 -06:00
Denis Kenzior 9601ff5331 stkutil: Use standard types 2018-12-29 15:26:37 -06:00
Denis Kenzior 27c9952f86 stkutil: Convert away from glib datatypes 2018-12-29 14:14:51 -06:00
Denis Kenzior c3d5ccbe53 stkutil: Use l_queue instead of GSList 2018-12-28 18:12:21 -06:00
Denis Kenzior 22002d142c stkutil: Use l_queue instead of GSList 2018-12-28 13:48:34 -06:00
Denis Kenzior 4927905db4 stkagent: Use bool instead of gboolean / ofono_bool_t 2018-12-28 13:47:41 -06:00
Denis Kenzior caeb1650a1 util: Remove last glib uses 2018-12-27 18:18:51 -06:00
Denis Kenzior 9d18385e5f util: Remove encode_hex 2018-12-27 18:18:51 -06:00