Commit Graph

130 Commits

Author SHA1 Message Date
Aleksander Morgado
34a50edde1 api,errors: document all DBus error name prefixes
Since ModemManager 1.0 we were publishing symbols to identify all the
possible DBus error name prefixes, but these were never documented,
they were explicitly ignored in gtk-doc.

Let's provide proper documentation for them and make them first-class
API symbols.
2021-05-22 22:58:37 +00:00
Aleksander Morgado
8da8fd0248 api: update MMMobileEquipmentError enum values
Update the list of mobile equipment error codes according to v17.1.0
of 3GPP TS 27.007 (March 2021).

A lot of the enum values that were prefixed with the 'GPRS_' keyword
have now been flagged as deprecated, and a new enum name given to the
corresponding value.

The deprecated symbol names are kept in the compat support to avoid
breaking API/ABI.
2021-05-22 22:58:37 +00:00
Aleksander Morgado
6ffe84a122 api: QDU update method defined in MM 1.16.6 already
(cherry picked from commit 2cb38c568ff1fb26b23bad5e8a2851547448c30e)
2021-05-22 00:38:47 +02:00
Freedom Liu
35b1672b85 foxconn: add new MBIM QDU firmware update method support
Based on the QDU service newly added in libmbim,
T99W175 module (vid: 0x105b) supports MBIM QDU based update.
2021-04-30 10:44:19 +02:00
Aleksander Morgado
ff8e21b535 api,bearer: new 'apn-type' setting
This new setting allows the user setting up the connection to specify
the purpose of the connection being brought up.

Until now, we would always assume that connections are exclusively
brought up for connecting to the Internet, also limited by the
inability to connect to multiple different APNs at the same time.

But that may really not be true as there may be additional services
that may be accessed through other APNs, like MMS services or even
private networks for companies that have their own APNs on a given
operator (e.g. not that uncommon with banks and connected cars).

The new APN type setting will not change the way the bearer is
connected, but will allow the connection manager to decide what kind
of networking setup the specific connection needs.

This new setting can be provided by the user itself, or implicitly
read from the device if the device stores this information.
2021-04-29 10:13:22 +00:00
Aleksander Morgado
064e92e9b7 api,simple: new 'multiplex' setting in bearer properties
Both the Simple.Connect() and Modem.CreateBearer() are updated to
allow a new 'multiplex' setting in the properties provided by the user
in both of these methods.

The new setting expects a MMBearerMultiplexSupport enum indicating
what kind of multiplex needs the user has:
 * none: if multiplex must not be used.
 * requested: if multiplex should be used if available.
 * required: if multiplex must be used.

The underlying implementations will take care of accepting or
rejecting the setting depending on the system and modem capabilities.
2021-03-10 10:59:19 +01:00
Aleksander Morgado
c92dc21a18 api: new ID_MM_PORT_TYPE_QMI and ID_MM_PORT_TYPE_MBIM udev hints
It is no longer true that all QMI ports are exposed by the qmi_wwan
driver and that all MBIM ports are exposed by the cdc_mbim driver.
There are other generic setups that allow exposing these types of
ports using different drivers, and usually we can also know the type
of port in advance via other means. Therefore, allow adding udev port
type hints for QMI and MBIM ports as well.
2020-11-09 18:41:57 +01:00
Aleksander Morgado
3bda0562b9 build: don't remove ModemManager-names.h on 'clean'
The ModemManager-names.h header file is generated on git builds, and
shipped within the release tarball, so treat it as a maintainer
managed file that should only be removed on 'maintainer-clean'.

This allows us to avoid requiring xsltproc to build release tarballs.
2020-11-08 10:09:32 +01:00
Stephan Gerhold
a174edb74d api: expose ignored ports as MM_MODEM_PORT_TYPE_IGNORED
At the moment, ignored ports show up as (unknown) in the ports list
in mmcli. This makes it look like something went wrong while probing.

Actually ModemManager already tracks unknown and ignored ports separately
(MM_PORT_TYPE_UNKNOWN vs MM_PORT_TYPE_IGNORED) but the API always exposes
them as MM_MODEM_PORT_TYPE_UNKNOWN.

Add MM_MODEM_PORT_TYPE_IGNORED and use this for ignored ports so they
show up as (ignored) instead in mmcli.
2020-10-30 09:26:24 +01:00
Aleksander Morgado
68917f502e api: new 'attached RLOS' registration state
Reporting the state when the UE attaches to access restricted local
operator services.
2020-04-09 12:38:50 +00:00
Aleksander Morgado
1cfd5daf9b api: new 5GNR access technology 2020-04-09 12:38:50 +00:00
Aleksander Morgado
5db3fa88e9 api: new 5G mode 2020-04-09 12:38:50 +00:00
Aleksander Morgado
7354dc928f api: new 5GNR capability 2020-04-09 12:38:50 +00:00
Aleksander Morgado
0cd76bf1c4 api: deprecate MM_MODEM_CAPABILITY_LTE_ADVANCED
It's not used anywhere.
2020-04-09 12:38:49 +00:00
Aleksander Morgado
f157d02fc6 include,errors: define +CME ERROR code 151 equal to 171
When the MT detects an attempt to disconnect the last PDN or when the
network returns a response message with cause value #49, the "Last PDN
disconnection not allowed" error is returned.

The numeric error code was changed from 151 to 171 in 3GPP Rel-11, and
therefore there are devices out there that would conform to Rel-10 or
below and that would report +CME ERROR code 151 instead of 171. Given
that 151 isn't defined to a different meaning in the specs, let's
define it in the same way as 171.
2019-12-16 14:39:22 +01:00
Aleksander Morgado
e5ac843a7c api,compat: fix warnings during doc build
We just move the MM_DISABLE_DEPRECATED check to after the
MM_DEPRECATED symbol definition, because gtkdoc-scan gets pretty
confused, likely due to the symbol ending with the "_DEPRECATED"
suffix.

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/91
2019-10-24 14:20:38 +02:00
Aleksander Morgado
cf14fba5b7 docs,api: provide per-version indices 2019-10-24 13:02:37 +02:00
Aleksander Morgado
e3a1364ddc core: allow flagging ports as 'audio'
Instead of flagging them as 'ignored' so that they aren't probed, we
can also flag them as 'audio' now, so that the logic knows which port
to report as used for audio in the Call object.
2019-10-15 13:19:10 +02:00
Aleksander Morgado
c8d715e5f0 api: set enum values not part of the API as private
So that we can avoid gtk-doc complaining about them:

  2019-10-14 10:46:59,583:common.py:ParseEnumDeclaration:427:WARNING:Cannot parse enumeration member:
  ../../../include/ModemManager-enums.h:924: warning: Value description for MMModemLocationSource::MM_MODEM_LOCATION_SOURCE_FIRST is missing in source code comment block.
  ../../../include/ModemManager-enums.h:924: warning: Value description for MMModemLocationSource::MM_MODEM_LOCATION_SOURCE_LAST is missing in source code comment block.
2019-10-14 11:05:50 +02:00
Aleksander Morgado
f6d5490eeb udev: remove ID_MM_PLATFORM_DRIVER_PROBE tag
This tag is completely redundant because users can whitelist the
platform TTY ports to use with the more generic ID_MM_DEVICE_PROCESS
tag, which is part of the explicit whitelist filter rule.
2019-08-29 20:07:03 +00:00
Aleksander Morgado
118b19bb75 udev: rename ID_MM_DEVICE_MANUAL_SCAN_ONLY to ID_MM_TTY_MANUAL_SCAN_ONLY
The udev tag that allows flagging devices that MAY be modems
(e.g. USB<->RS232 adapters) is only applicable to TTY devices, so
explicitly specify that in the tag name as well.
2019-08-29 20:07:03 +00:00
Aleksander Morgado
250639e3da udev: repurpose ID_MM_DEVICE_IGNORE and new MM_FILTER_RULE_EXPLICIT_BLACKLIST
Until now the ID_MM_DEVICE_IGNORE udev tag was being used in the
internal blacklist of devices shipped by ModemManager when running in
either DEFAULT or PARANOID filter modes. The name of the tag is
extremely misleading because it doesn't really make the full device be
ignored, the tag only applied to TTY ports.

This commit repurposes the tag so that it applies to ANY kind of
port (e.g. TTY, NET, cdc-wdm...) and also to any kind of filter type
(i.e. also applicable in STRICT mode).

The internal blacklist shipped by ModemManager, which should NOT be
used in STRICT mode, uses a new tag name, ID_MM_TTY_BLACKLIST.

The new ID_MM_DEVICE_IGNORE tag is therefore much more usable and its
name is really meaningful. If there are users or third-party projects
adding their own udev rules with the ID_MM_DEVICE_IGNORE tag name,
they should have no problem as the new rule is more restrictive than
the old one.
2019-08-29 20:07:03 +00:00
Aleksander Morgado
222874299e api,call: new Deflect() method
This method allows deflecting an incoming or waiting call to a
different number.
2019-07-11 23:20:59 +02:00
Aleksander Morgado
8b01958cb4 api,voice: new Transfer() method
This method will join all active and held calls into a single
multiparty call, and then request the network to terminate the call on
the subscriber's end and transfer the control of the call to the
parties that are still in the call.
2019-07-11 23:20:59 +02:00
Aleksander Morgado
45c548c4dd docs: add missing MMCallStateReason documentation 2019-07-11 09:41:31 +00:00
Aleksander Morgado
4132052965 docs: add missing MMCallDirection documentation 2019-07-11 09:41:31 +00:00
Aleksander Morgado
220a4cbf43 docs: add missing short description for compat section 2019-07-11 09:41:31 +00:00
Aleksander Morgado
c96b03d3a9 docs: add missing MM_CHECK_VERSION documentation 2019-07-11 09:41:31 +00:00
Aleksander Morgado
d5dc9751b6 location,agps: include support for MSB A-GPS 2019-04-09 12:24:39 +00:00
Aleksander Morgado
caa1f8fdc1 iface-modem-location: define first and last location sources
Much clearer to understand when looping through them.
2019-04-09 12:24:39 +00:00
Aleksander Morgado
b77aa7ab0e location,agps: explicitly specify that MSA A-GPS is implemented
The A-GPS based implementations we currently have assume MSA A-GPS, so
rename the MMModemLocationSource enum value to reflect that.
2019-04-09 12:24:39 +00:00
Aleksander Morgado
e3766aef5d dell,dw5821e: also report QMI PDC based update available 2019-01-03 18:53:52 +00:00
Aleksander Morgado
87712c27f5 api,firmware: MMModemFirmwareUpdateMethod as flags, not enum
Devices may require/support more than one update method, so instead of
reporting the method as a single enum value, use a set of flags
instead.
2019-01-03 18:53:52 +00:00
Aleksander Morgado
8e342cf120 api,firmware: new UpdateSettings property 2019-01-03 18:53:52 +00:00
Aleksander Morgado
dc154cf005 api,bearer: new 'BearerType' property
Until now we have only allowed to use and setup 'default bearers' (in
4G) or 'primary contexts' (in 2G/3G).

We can define a couple of additional bearer types, though:

* The 'dedicated bearers' (in 4G) or 'secondary contexts' (in 2G/3G),
  which are associated to a specific default/primary one, but which
  provide specific QoS settings configured via traffic flow templates.

* The 'initial default EPS bearer', which is a special case of default
  bearer in LTE, which is automatically created and connected when the
  modem is registered in the LTE network.

This commit introduces a new 'MMBearerType' enumeration that will be
associated to each bearer through a 'BearerType' property in the
org.freedesktop.ModemManager1.Bearer interface, showing what kind of
bearer/context this is.

By default, right now, all bearer objects created are 'default'
bearers.
2018-12-07 16:20:53 +00:00
Aleksander Morgado
17c511ec69 api,call: new state reason to report audio setup failures 2018-10-16 17:09:21 +00:00
Aleksander Morgado
2a1a0b88fb udev: define all generic tags as symbols
This prevents errors due to nasty typos in the strings.

We define all symbols in a single header file that is NOT considered
part of the API, as there is no need for MM clients to know about
these tags code-wise. These tags are only meaningful when associated
to devices in udev.

Information of each tag is included in the general API documentation.

https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/88
2018-09-25 17:55:53 +00:00
Aleksander Morgado
69ca442dd4 api: define E-UTRAN bands 49 to 64 2018-08-21 17:02:39 +00:00
Aleksander Morgado
091bf4dbd8 api: support location assistance data
Sometimes SUPL-server based A-GPS is not possible, e.g. if the module
doesn't have Internet connectivity. In such cases, the modem may
support injecting additional "assistance data" that may be downloaded
from the Internet using external means (e.g. WiFi), in order to keep
having a quick time to first fix.

We now support using this location assistance data, with the following
new API elements:

 * A new mask of supported assistance data types is provided in the
   SupportedAssistanceData property.

 * A new list of URLs from where the aassistance data may be
   downloaded is also provided in a new AssistanceDataServers
   property.

 * A new InjectAssistanceData() method is provided, to perform the
   data injection in the module once it's been downloaded to the host
   system.
2018-08-21 13:26:08 +00:00
Aleksander Morgado
588d6144a7 doc: fix explanation of MM_CALL_STATE_RINGING_{IN|OUT}
They were reversed; ringing in applies to incoming calls, ringing out
applies to outgoing calls.
2018-06-10 14:47:39 +02:00
Dan Williams
aecc3e99a0 include: fix up whitespace 2018-05-24 10:00:10 -05:00
Dan Williams
b074a2b4a4 include: add more 3GPP errors
From 3GPP TS 27.007 version 11.6.0 Release 11, sections 9.2.1,
9.2.2.1, 9.2.2.2, and 9.2.2.3.
2018-05-22 12:03:28 -05:00
Aleksander Morgado
0f377f943e API: don't depend on GLib in ModemManager headers
We should only depend on GLib on the libmm-glib headers. Otherwise,
packages using just the core headers (e.g. ModemManagerQt) would also
need to build-depend on GLib and we don't want to enforce that.

    cd ~/buildroot/output/build/kde-modemmanager-qt-v5.36.0/src && ~/buildroot/output/host/usr/bin/arm-cortexa9_neon-linux-gnueabihf-g++  .... -fPIC -o CMakeFiles/KF5ModemManagerQt_static.dir/bearer.cpp.o -c ~/buildroot/output/build/kde-modemmanager-qt-v5.36.0/src/bearer.cpp
    In file included from ~/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include/ModemManager/ModemManager.h:41:0,
                     from ~/buildroot/output/build/kde-modemmanager-qt-v5.36.0/src/generictypes.h:27,
                     from ~/buildroot/output/build/kde-modemmanager-qt-v5.36.0/src/generictypes.cpp:23:
    ~/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include/ModemManager/ModemManager-compat.h:23:18: fatal error: glib.h: No such file or directory
    compilation terminated.
2018-02-05 20:23:49 +01:00
Ville Skyttä
90b89bb9f4 *: Spelling fixes 2018-01-25 09:52:12 +01:00
Aleksander Morgado
d4aaa436d9 modem-3gpp: allow loading and changing EPS UE mode of operation
The UE modes of operation for LTE are defined in 3GPP TS 24.301 (e.g.
section 4.3 in v10.3.0):
  * PS mode 1: EPS only, 'voice centric'
  * PS mode 2: EPS only, 'data centric'
  * CS/PS mode 1: EPS and non-EPS, 'voice centric'
  * CS/PS mode 2: EPS and non-EPS, 'data centric'

The mode specifies, among other things, how the UE should behave w.r.t
CS fallback depending on the capabilities reported by the network.
2018-01-20 15:41:07 +01:00
Aleksander Morgado
f0bb6ef856 api: add MM_DISABLE_DEPRECATED guards around deprecated symbols
When this symbol is defined, e.g. via CFLAGS, building a program that
uses the ModemManager API will fail if the program references
deprecated symbols.

For now we just use it to keep gtk-doc-scan happy and avoid
unnecessary warnings.
2017-09-07 10:55:17 +02:00
Aleksander Morgado
ede5fe6ddb api: define additional LTE frequency bands 2017-09-07 10:55:16 +02:00
Aleksander Morgado
84ac581f3f api: consolidate CDMA frequency enumerations
Define new symbols with easier names, just based on the Band Class.
2017-09-07 10:55:14 +02:00
Aleksander Morgado
b407678433 api: define additional UMTS frequency bands 2017-09-07 10:54:52 +02:00
Aleksander Morgado
7fb3aeacd3 api: new MM_BAND_UTRAN_ enumerations for WCDMA bands
Flag as deprecated the old names, and define new ones based on the
defined UTRAN band numbers, equivalent to what was done for LTE bands.
2017-09-07 10:54:52 +02:00