Commit Graph
246 Commits
Author SHA1 Message Date
Ben Chan 3d800c2f49 compat: add compatibility definitions for old MM_MODEM_BAND_EUTRAN_* values
Those Roman numeral suffixes in MM_MODEM_BAND_EUTRAN_* were replaced
with 1, 2, 3, ..., etc. This patch adds a compatibility header,
ModemManager-compat.h, to alias the old MM_MODEM_BAND_EUTRAN_* values to
the new values.
2017-06-28 18:21:25 +02:00
Ben Chan 292f2402d0 libmm-glib,voice: port mm_modem_voice_list_calls to use GTask 2017-06-25 09:47:58 +02:00
Ben Chan 9bf9d036ec libmm-glib,voice: port mm_modem_voice_create_call to use GTask 2017-06-25 09:47:58 +02:00
Ben Chan 135fc84cf1 libmm-glib,messaging: port mm_modem_messaging_list to use GTask 2017-06-25 09:47:58 +02:00
Ben Chan 498400d943 libmm-glib,messaging: port mm_modem_messaging_create to use GTask 2017-06-25 09:47:58 +02: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 19794d0846 libmm-glib,manager: port mm_manager_scan_devices to use GTask 2017-06-23 10:26:53 +02:00
Ben Chan 2f3d9642f6 libmm-glib,manager: port mm_manager_set_logging to use GTask 2017-06-23 10:26:52 +02:00
Ben Chan 56ec672669 libmm-glib,simple: port mm_modem_simple_connect to use GTask 2017-06-23 10:26:50 +02:00
Ben Chan 9920f868eb libmm-glib,voice: fix object unref in list_call_context_complete_and_free 2017-06-23 10:09:08 +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 8c1bc84af8 libmm-glib,messaging: fix object unref in list_sms_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 91613543d5 libmm-glib: set clear func by default in the MMModemPortInfo array
So that we don't leak the port names allocated within each
MMModemPortInfo.

    ==261== 672 bytes in 84 blocks are definitely lost in loss record 7,314 of 7,383
    ==261== at 0x402C51E: malloc (vg_replace_malloc.c:299)
    ==261== by 0x4484878: g_malloc (gmem.c:94)
    ==261== by 0x449D51D: g_strdup (gstrfuncs.c:363)
    ==261== by 0x44B5B73: g_variant_dup_string (gvariant.c:1529)
    ==261== by 0x44B945E: g_variant_valist_get_nnp (gvariant.c:4775)
    ==261== by 0x44B945E: g_variant_valist_get_leaf (gvariant.c:4945)
    ==261== by 0x44B945E: g_variant_valist_get (gvariant.c:5126)
    ==261== by 0x44B922C: g_variant_valist_get (gvariant.c:5161)
    ==261== by 0x44B9FC9: g_variant_get_va (gvariant.c:5388)
    ==261== by 0x44BA3C5: g_variant_get_child (gvariant.c:5486)
    ==261== by 0x6613FA8: mm_common_ports_variant_to_garray (mm-common-helpers.c:238)
    ==261== by 0x6601AB9: ensure_internal_ports (mm-modem.c:766)
    ==261== by 0x6603E42: mm_modem_peek_ports (mm-modem.c:825)
    ==261== by 0x65CD94D: owns_port (nm-modem-broadband.c:196)

Reported-by: Piotr Figiel <p.figiel@camlintechnologies.com>
2017-02-10 10:29:52 +01:00
Piotr Figiel 255e4c769b libmm-glib: fix leaking bearer_path string
==261== 482 bytes in 12 blocks are definitely lost in loss record 7,290 of 7,383
    ==261== at 0x402C51E: malloc (vg_replace_malloc.c:299)
    ==261== by 0x4484878: g_malloc (gmem.c:94)
    ==261== by 0x449D51D: g_strdup (gstrfuncs.c:363)
    ==261== by 0x44B5B73: g_variant_dup_string (gvariant.c:1529)
    ==261== by 0x44B945E: g_variant_valist_get_nnp (gvariant.c:4775)
    ==261== by 0x44B945E: g_variant_valist_get_leaf (gvariant.c:4945)
    ==261== by 0x44B945E: g_variant_valist_get (gvariant.c:5126)
    ==261== by 0x44B922C: g_variant_valist_get (gvariant.c:5161)
    ==261== by 0x44B9FC9: g_variant_get_va (gvariant.c:5388)
    ==261== by 0x44BA1DB: g_variant_get (gvariant.c:5335)
    ==261== by 0x664E2EF: mm_gdbus_modem_simple_call_connect_finish (mm-gdbus-modem.c:22451)
    ==261== by 0x6608A08: simple_connect_ready (mm-modem-simple.c:154)
    ==261== by 0x429136F: g_task_return_now (gtask.c:1107)
    ==261== by 0x4291A69: g_task_return (gtask.c:1165)
2017-02-08 18:38:03 +01:00
Ben Chan 31655bb5a5 glib: remove invocations of g_type_init()
g_type_init() has been deprecated (and also marked with the attribute
'deprecated') since glib 2.36 as the type system is automatically
initialized. Since the minimum version of glib required by ModemManager
is 2.36, calling g_type_init() isn't necessarily in the ModemManager
code.
2017-02-03 10:05:14 +01: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 17a90b8fa6 libmm-glib,call-properties: fix wrong enum returned
https://bugs.freedesktop.org/show_bug.cgi?id=98220
2016-10-13 12:08:21 +02:00
Aleksander Morgado 292914cf65 iface-modem: always sort supported and current bands before exposing them 2016-10-12 13:24:09 +02:00
Aleksander Morgado 9b3549e375 api,signal: new RSCP item 2016-10-12 13:24:08 +02:00
Aleksander Morgado 58c955f5f2 core: allow building and running without udev
Instead of relying on the udev daemon and GUDev to manage the devices reported
by the kernel, we can now run ModemManager relying solely on the kernel events
reported via the new ReportKernelEvent() API. Therefore, the '--no-auto-scan'
option is implicit for the ModemManager daemon when udev is disabled in the
build.

Additionally, a new custom implementation of the kernel device object is
provided, which uses sysfs to load the properties and attributes required in
each kernel device, instead of using a GUdevDevice.

The udev rule files are kept in place, and a simple custom parser is provided
which preloads all rules in memory once and then applies them to the different
kernel objects reported via ReportKernelEvent(), e.g. to set port type hints.
A simple unit test setup is prepared to validate the udev rules during the
`check' Makefile target.
2016-09-29 15:43:05 +02:00
Aleksander Morgado c4a584416a core: allow disabling auto-scan and notifying ports one by one via API
This commit enables a new core ModemManager daemon option, so that automatic
detection of available modems is totally disabled: '--no-auto-scan'. Note that
this option also replaces the previously used '--test-no-auto-scan' option,
which was only used during tests.

Along with the new ModemManager option, a new ReportKernelEvent() method in
the API is defined, which allows notifying the daemon of which interfaces it
should be accessing, as well as the main details of each interface. The only
mandatory parameters in the new method are 'action' (add/remove), 'name' (the
name of the interface) and 'subsystem' (the subsystem of the interface).

The mmcli tool has support for using the new api method via several new options:

 * The '--report-kernel-event' option allows specifying device ports one by
   one, and is a direct mapping of the ReportKernelEvent() method:
     $ sudo mmcli --report-kernel-event="action=add,name=wwan0,subsystem=net"
     $ sudo mmcli --report-kernel-event="action=add,name=cdc-wdm0,subsystem=usbmisc"

 * The '--report-kernel-event-auto-scan' option uses udev monitoring to notify
   events automatically to the daemon. This allows to operate in a way
   equivalent to the default daemon operation (with implicit auto-scan).

Worth noting that the ReportKernelEvent() method is only usable when
'--no-auto-scan' is explicitly used in the daemon. An error will be reported if
the method is tried while standard udev monitoring is enabled (implicit if
auto scan isn't explicitly disabled in the daemon).

If mmcli is going to be used only to report 'real time' events, an optional
'--initial-kernel-events=[PATH]' may be given in the ModemManager call to
automatically process a set of port kernel events one by one on boot. The file
may e.g. contain:
  action=add,name=wwan0,subsystem=net
  action=add,name=cdc-wdm0,subsystem=usbmisc
2016-09-29 15:43:05 +02:00
Aleksander Morgado 3047522b2e api,signal: Ec/Io is in dB, not dBm 2016-08-10 09:05:47 +02:00
Aleksander Morgado 7460793caa libmm-glib,helpers: don't warn when trying to read invalid match info index
We may want to use the mm_get_()_from_match_info() calls to read optional items,
so that the method returns FALSE if the item index doesn't apply. So, avoid the
implicit warning issued by g_return_val_if_fail().
2016-08-10 09:04:54 +02:00
Aleksander Morgado ccc148fe9b libmm-glib,common-helpers: fix reading boolean from string
The "0" case wasn't being handled properly:
  $ sudo mmcli -m 0 --create-bearer="apn=,allow-roaming=0"
  Error parsing properties string: 'Cannot get boolean from string '0''
2016-04-19 14:02:13 +02:00
Brian Norris 34961f20a6 libmm-glib: fix enum conversion warning/error
mm-modem-oma.c:400:51: error: implicit conversion from enumeration type 'MMOmaSessionType' to different enumeration type 'MMOmaFeature'
      [-Werror,-Wenum-conversion]
    g_return_val_if_fail (MM_IS_MODEM_OMA (self), MM_OMA_SESSION_TYPE_UNKNOWN);
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/glib-2.0/glib/gmessages.h:382:11: note: expanded from macro 'g_return_val_if_fail'
         return (val);                                                  \
         ~~~~~~  ^~~

This should be MMOmaFeature, not MMOmaSessionType. The end result is the same,
as both are 0.
2016-03-25 11:14:00 +01:00
Aleksander Morgado d7a643b16a libmm-glib,modem-voice: fix unknown methods in documentation
html/MMCallProperties.html:141: warning: no link for: 'mm-modem-voice-create' -> (<code class="function">mm_modem_voice_create()</code>).
    html/MMCallProperties.html:141: warning: no link for: 'mm-modem-voice-create-sync' -> (<code class="function">mm_modem_voice_create_sync()</code>).
    html/MMModemVoice.html:379: warning: no link for: 'mm-modem-voice-delete-finish' -> (<code class="function">mm_modem_voice_delete_finish()</code>).
    html/MMModemVoice.html:380: warning: no link for: 'mm-modem-voice-delete-sync' -> (<code class="function">mm_modem_voice_delete_sync()</code>).
2016-03-16 18:26:33 +01:00
Aleksander Morgado 4055488fd0 libmm-glib,modem-location: fix unknown method in documentation
html/MMModemLocation.html:516: warning: no link for: 'mm-modem-dup-supl-server' -> (<code class="function">mm_modem_dup_supl_server()</code>).
2016-03-16 18:13:18 +01:00
Aleksander Morgado 93bf189fa2 build,libmm-glib: built headers shouldn't be included in dist 2016-03-15 19:15:25 +01:00
Aleksander Morgado eeb9e2bdcc build: end all multiline list variables with $(NULL)
So that appending a new item in the list only inserts one new line (i.e. the
last $(NULL) is the last item always).
2016-03-15 19:15:25 +01:00
Aleksander Morgado 3bac0a17f5 build,libmm-glib: fix gdbus-codegen rules
The rule with multiple targets means that for each of the target the command
specified is run; not that a single run of the command generates all the targets
specified.

So, generate the .c file with the command, and make the .h and the .xml files
a side-effect of the .c generation.
2016-03-15 19:15:25 +01:00
Dan Williams 0512a820cd libmm-glib: make C++ happy by not using 'class' 2016-01-20 17:06:33 -06:00
Aleksander Morgado 6c35878f12 location: support updating the GPS refresh time
The default setup uses a refresh time of 30s, which means that even if the GPS
location updates are received at a higher frequency, the DBus interface will
still expose at most one update every 30s.

This patch includes a new "SetGpsRefreshTime()" method in the Location
interface, which takes a single 'u' parameter, specifying the refresh rate to
use, in seconds. This method also allows 0 being passed, which will make the
implementation to publish the GPS location updates are soon as ModemManager
detects them.

Along with the new method, a "GpsRefreshTime" read-only property is exposed
to specify the refresh time in effect.

The new method and property will only be applicable if the device has GPS
capabilities.

https://bugs.freedesktop.org/show_bug.cgi?id=89924
2015-12-19 12:22:30 +01:00
Aleksander Morgado 730123598a libmm-glib: retrieve stats from the bearer
The MMBearer object is updated to provide getter methods to retrieve the new
MMBearerStats object.
2015-12-07 14:20:54 +01:00
Aleksander Morgado 27c6f15873 libmm-glib: new helper object to handle bearer stats
The new MMBearerStats object provides a simple API to interact with the new
dictionary containing the bearer connection stats.
2015-12-07 14:20:54 +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
Krzysztof Kotlenga 0ca68657fb libmm-glib, simple: add missing introspection annotations to disconnect() 2015-09-16 22:16:37 +02:00
Aleksander Morgado 707a2ef417 libmm-glib,docs: fix missing documentations 2015-08-02 12:05:51 +02:00
Aleksander Morgado c4c3afa865 libmm-glib,call: add missing 'dtmf' variable description 2015-08-02 12:02:32 +02:00
Marco Bascetta 74325b547a core,libmm-glib,cli,voice: Replaced 'SendTone' method and 'ToneReceived' signal with 'SendDtmf' and 'DtmfReceived' 2015-08-02 10:39:48 +02:00
Marco Bascetta 2ac5d620c4 libmm-glib,cli: Replaced 'list call' with 'list calls' 2015-08-02 10:39:48 +02:00
Aleksander Morgado d00fe0d628 libmm-glib,voice: minor coding style fixes 2015-08-02 10:39:47 +02:00
Marco Bascetta 8edead9193 api,voice: added DTMF interface specification 2015-08-02 10:39:47 +02:00
Riccardo Vangelisti ecbd146d5a fixes: added voice support in libmm-glib MMManager, also fixed wrong number of parameters in mm-call-list class init 2015-08-02 10:39:12 +02:00
Riccardo Vangelisti 5c9e2488bf build: added voice call include in libmm-glib and modified Makefile.am 2015-08-02 10:39:12 +02:00
Riccardo Vangelisti 0bf4ad6b66 libmm-glib: added support for Modem.Voice and Call interfaces 2015-08-02 10:39:12 +02:00