84 Commits
Author SHA1 Message Date
Lukas Voegl 436081648b api,modem: new 'IgnoredPorts' property
Expose a new list of 'IgnoredPorts' via D-Bus and therefore remove the use of `MM_MODEM_PORT_TYPE_IGNORED`

Signed-off-by: Lukas Voegl <lvoegl@tdt.de>
2025-04-25 09:37:16 +02:00
Lukas Voegl 8cd1c1bdb9 api,modem: new 'Physdev' property
Signed-off-by: Lukas Voegl <lvoegl@tdt.de>
2023-09-18 10:53:12 +02:00
Aleksander Morgado dbeeb98745 libmm-glib,modem: new methods to get list of cell infos 2022-01-18 09:00:10 +00:00
Aleksander Morgado d2b620c5fa libmm-glib,modem: fix warning when loading SIM slots
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/465
2021-11-22 13:04:52 +00:00
Aleksander Morgado 21c775703c libmm-glib: fix license in sources
The libmm-glib library is LGPLv2+, not GPLv2+.
2021-11-16 17:54:26 +01:00
Aleksander Morgado d7acc276e5 libmm-glib,modem: use helper macros to manage the monitored properties 2021-07-01 23:38:04 +02:00
Aleksander Morgado afc7e5f902 libmm-glib: use single mutex in each type to sync access
There is truly no need for a per-property mutex, using a global one
for the whole object is equally fine.
2021-07-01 15:18:44 +02:00
Aleksander Morgado 12613eac87 libmm-glib,modem: move deprecated methods to compat source 2021-06-25 19:01:06 +02:00
Aleksander Morgado 059f13ffd3 libmm-glib,modem: add missing input argument checks 2021-06-24 15:43:33 +02:00
Aleksander Morgado 21ff48ed7d libmm-glib: drop default timeout checks in Command()
The g_dbus_proxy_get_default_timeout() is by default -1 unless
explicitly updated, so the check doesn't make any sense really. We
didn't see any warning produced because mmcli provides an explicit
timeout of 30s, so it was never the default -1.
2021-05-18 14:51:05 +02:00
Aleksander Morgado 05b9ab7c25 api,modem: new 'MaxActiveMultiplexedBearers' property
In addition to the amount of bearers a user may connect without
multiplexing enabled (the default until now), we now also expose the
maximum number of bearers a user may connect after enabling
multiplexing over one single network interface (if supported).

The method responsible for creating the MMBearerList is now also
subclassable, so that implementations supporting multiplexing can
provide their own version with their own thresholds.
2021-03-10 10:59:22 +01:00
Aleksander Morgado 35e20a48c8 api,modem: deprecate the 'MaxBearers' property
This property was never initialized with a correct value, we would
always use the same value as used for MaxActiveBearers, which isn't
technically right. Just suggest to ignore this property, and flag
it as deprecated.

In addition to deprecating the API property, we will internally no
longer limit the amount of bearer objects that may be created with
different connection settings. The bearer object exposed in DBus is a
representation of the connection that may be setup, and so we can hold
as many representations as we want as long as the amount of connected
bearers doesn't exceed the maximum amount for each modem.

Leaving around the disconnected modems also serves another purpose.
Each bearer holds information about the amount of times a connection
with it has been attempted, and the amount of data transferred through
it. If we use the Simple.Connect() method to connect the modem using
different bearer settings, we won't lose the information of the past
connection attempts with different settings.
2021-03-10 10:59:22 +01:00
Aleksander Morgado 924cf1af3c api,modem: new 'SetPrimarySimSlot' method
This new method allows changing the SIM slot considered as primary,
when the modem supports multiple SIM slots.

The generic handling of this method will make sure that the modem
object and all its SIM objects are re-probed from scratch as soon as a
successful SIM slot switch happens.

Implementations may report MM_CORE_ERROR_EXISTS when the switch
doesn't need to happen (e.g. if the requested SIM slot is already the
active one).
2020-08-28 14:59:06 +00:00
Aleksander Morgado e7409b6898 api,modem: new 'SimSlots' and 'PrimarySimSlot' properties
The 'SimSlots' property exposes an array of SIM object paths, with one
array item for each available SIM slot in the system. If a valid SIM
card is found in a given slot, the path of the SIM object will be
exposed in the array item; if no valid SIM card is found, the empty
object path ("/") will be exposed instead.

The 'PrimarySimSlot' property exposes which of the SIM slots available
in the system is the one configured as being primary. In a Multi-SIM
Single-Standby setup, the primary slot will be the one corresponding
to the single active SIM in the system. In a Multi-SIM Multi-Standby
setup, the primary slot will be the one configured to act as primary
(e.g. the one that will be used for the data connection) among all the
active SIM cards found.
2020-08-28 14:59:06 +00:00
Aleksander Morgado 08d23dd64d docs,libmm-glib: provide per-version indices 2019-10-28 10:28:31 +01:00
Aleksander Morgado 52b67dc7c3 api,modem: new 'CarrierConfigurationRevision' property
Which reports the version of the currently active carrier
configuration.

We also update the firmware 'version' reported in the firmware
settings so that carrier-specific upgrades can be performed (e.g. when
the firmware stays the same but the MCFG is updated).
2019-04-02 12:14:03 +02:00
Aleksander Morgado 94cf7f0ceb iface-modem: new carrier config support
During initialization phase we will allow querying the modem for the
details of which carrier-specific configuration is being used, and
will expose a description string in the API.

In addition to showing the current configuration, we will also allow
automatically switching the configuration based on the SIM card
detected in the device. In order to allow this, plugins/modems will
need to provide the expected mapping between carrier config
description and MCCMNC. This mapping cannot be generic, because
different manufacturers may use different description strings.
2019-04-02 12:11:25 +02:00
Guido Günther f24d8279bc docs: mm_modem_get_sim is async
Signed-off-by: Guido Günther <guido.gunther@puri.sm>
2018-08-27 10:55:19 -05:00
Enrico Mioso f01d88bf91 libmm-glib: reference dup_equipment_identifier instead of dup_plugin
Fix the comment.
2018-06-29 09:34:37 +02:00
Aleksander Morgado 5dff6ce594 libmm-glib,modem: fix introspection annotation for bearer list 2018-03-13 12:53:37 +01:00
Ben Chan 9c6a1ebb1e libmm-glib: add helpers for loading hardware revision 2017-09-20 09:56:23 -07:00
Ben Chan aebc1f3f6c libmm-glib,modem: port mm_modem_list_bearers to use GTask 2017-06-25 09:45:18 +02:00
Ben Chan 23206d794a libmm-glib,modem: port mm_modem_create_bearer to use GTask 2017-06-23 22:32:08 +02:00
Ben Chan d84bb54e77 libmm-glib,modem: port mm_modem_get_sim to use GTask 2017-06-23 22:32:08 +02:00
Ben Chan 2327ebddf1 libmm-glib: use g_list_copy_deep for deep copying a GList 2017-06-23 22:32:07 +02:00
Ben Chan c927c0236e libmm-glib,modem: fix object unref in list_bearers_context_complete_and_free 2017-06-23 10:09:08 +02:00
Ben Chan 78e6ba5688 libmm-glib: remove explicit GDestroyNotify cast on g_object_unref
g_object_unref is in form of  `void (*)(gpointer)`, which matches the
GDestroyNotify signature. An explicit GDestroyNotify cast on
g_object_unref is thus not needed.
2017-03-29 10:22:34 +02:00
Aleksander Morgado 2f12d96fe4 libmm-glib,modem: init/clear ports mutex 2017-01-04 13:45:38 +01:00
Thomas Haller 094fea5392 libmm-glib: fix memleak of MMModem's ports
Fixes: 3206e95663
2017-01-04 13:36:31 +01:00
Aleksander Morgado 51447bd06b libmm-glib: don't create a SIM object if empty path (/) given
Instead, we'll return NULL and an error set.
2015-09-24 20:43:15 +02:00
Aleksander Morgado 707a2ef417 libmm-glib,docs: fix missing documentations 2015-08-02 12:05:51 +02:00
Ben Chan 830ef27bac libmm-glib: fix a memory leak of GMutex 2014-06-03 10:51:31 +02:00
Dan Williams e3bebc85c4 libmm-glib: deep-copy ports array in ensure_internal_ports() (bgo #724900)
ensure_internal_ports() didn't deep-copy the ports array, which
meant that anything calling mm_modem_port_info_array_free() was
freeing the internal memory owned by MMModem if it retrieved
the array with mm_modem_get_ports().

https://bugzilla.gnome.org/show_bug.cgi?id=724900
2014-02-27 13:06:04 -06:00
Ben Chan e438221258 libmm-glib: add methods to retrieve 'Bearers' property in Modem interface 2013-11-22 08:35:41 +01:00
Aleksander Morgado 7f442b777c introspection,api: new 'Bearers' property in the Modem interface
https://bugzilla.gnome.org/show_bug.cgi?id=712276
2013-11-21 10:50:49 +01:00
Aleksander Morgado 5dc6db1962 libmm-glib: fix some more introspection annotations 2013-10-24 17:38:36 +02:00
Aleksander Morgado e1c0621b09 libmm-glib: fix several introspection annotations 2013-10-24 17:16:33 +02:00
Christian Persch 0abba497ab libmm-glib: Fix and add introspection annotations
Bug #705641.
2013-08-14 13:30:35 +02:00
Aleksander Morgado 3206e95663 api,introspection: new 'Ports' property in the Modem interface
We will expose a new 'Ports' property listing all ports currently known by a
given modem. Ports which are not used but are detected as being part of the
modem will be listed with an 'unknown' port type.

This change uses the new 'MMModemPortType' enum and the new 'MMModemPortInfo'
helper struct to handle these values in libmm-glib. The already available
'MMPortType' enum hasn't been re-used for the interface because it contains
values that we don't need (e.g. IGNORED).

The port list is now also included in the modem information command of mmcli:

$ sudo mmcli -m 0

/org/freedesktop/ModemManager1/Modem/0 (device id '97b7b99e3e2bea103880545b619fb05a3cc81b26')
  -------------------------
  System   |         device: '/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4'
           |        drivers: 'qcserial, qmi_wwan'
           |         plugin: 'Gobi'
           |   primary port: 'cdc-wdm0'
           |          ports: 'ttyUSB0 (qcdm), ttyUSB1 (at), cdc-wdm0 (qmi), wwp0s29u1u4 (net)'

https://bugzilla.gnome.org/show_bug.cgi?id=702678
2013-06-24 19:44:57 +02:00
Aleksander Morgado a902e6859e api,introspection: new 'SetCurrentCapabilities' method
For those modems which expose a valid 'SupportedCapabilities' property with more
than one item in the list, we'll allow switching between them.
2013-06-05 19:15:15 +02:00
Aleksander Morgado 700ebc5c07 api,introspection: rename 'ModemCapabilities' to 'SupportedCapabilities'
And also make it a list of masks, specifying which are the specific combinations
supported, not just one mask with all.

E.g.:
  -------------------------
  Hardware |   manufacturer: 'Sierra Wireless, Incorporated'
           |          model: 'MC7710'
           |       revision: 'SWI9200X_03.05.19.04ap r5475 carmd-en-10527 2012/09/17 17:57:14'
           |      supported: 'gsm-umts
           |                  gsm-umts, lte'
           |        current: 'gsm-umts, lte'
           |   equipment id: '358178040668164'
2013-06-05 19:15:15 +02:00
Aleksander Morgado 1c67d050cb api,introspection: merge 'AllowedModes' and 'SupportedMode' into 'CurrentModes'
We now have a single 'CurrentModes' property which contains both values in a
tuple with signature "(uu)".

Also, rename 'SetAllowedModes()' to 'SetCurrentModes()', and update the list of
arguments expected to have a single "(uu)" tuple.
2013-06-05 19:15:14 +02:00
Aleksander Morgado 45ceba7692 api,introspection: 'SupportedModes' is now a list of possible combinations
Instead of just a mask of MMModemMode values, we now provide a list of the
allowed and preferred mode combinations supported by the modem. E.g.:

$> sudo mmcli -m 0
  -------------------------
  Modes    |      supported: 'allowed: 2g; preferred: none
           |                  allowed: 3g; preferred: none
           |                  allowed: 2g, 3g; preferred: none
           |                  allowed: 2g, 3g; preferred: 2g
           |                  allowed: 2g, 3g; preferred: 3g
           |                  allowed: 4g; preferred: none
           |                  allowed: 2g, 3g, 4g; preferred: none'
2013-06-05 19:15:14 +02:00
Aleksander Morgado 212d00c529 api,instrospection: rename 'Bands' to 'CurrentBands'
... and 'SetBands()' to 'SetCurrentBands()'.

We'll keep the 'Current' keyword in those properties which also have
'Supported' values.
2013-06-05 19:15:14 +02:00
Aleksander Morgado bd360aa029 libmm-glib,modem: handle the new 'SupportedIpFamilies' property 2013-06-05 19:15:13 +02:00
Aleksander Morgado a12be165d1 libmm-glib,modem: avoid accessing an already freed GArray
We cannot g_array_unref() the GArray when get()-ing bands as that will clear
the contents of the GArray, even if there are references around. Instead, just
dup the array contents when returning.
2013-05-23 18:00:03 +02:00
Aleksander Morgado 75d20c15d4 api: notify in the interface about the reason why the modem is FAILED
We currently implement 'SIM missing' and 'SIM error', which are probably the
most common ones.
2013-02-22 16:35:56 +01:00
Aleksander Morgado 091c47d695 libmm-glib,modem: new methods to handle the power state 2013-01-11 10:05:46 +01:00
Aleksander Morgado 79fdddccbf api,modem: new 'PrimaryPort' property
We do need to specify which is the primary port being used for controlling the
modem. This allows us to match the device with an already existing bluetooth
device in NetworkManager.
2012-10-19 00:58:36 +02:00
Aleksander Morgado c250fa3797 libmm-glib: remove the `libmm-common.h' header
Both the ModemManager daemon and the mmcli will now include `libmm-glib.h' only.

We also handle two new special `_LIBMM_INSIDE_MM' and `LIBMM_INSIDE_MMCLI'
symbols, which if included before the `libmm-glib.h' library allow us to:

 * Don't include the libmm-glib high level API in the ModemManager daemon, as
   the object names would clash with those in the core.

 * Define some of the methods of helper objects to be included only if compiling
   ModemManager daemon or the mmcli.
2012-10-04 10:17:12 +02:00