Commit Graph
23 Commits
Author SHA1 Message Date
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 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
Riccardo Vangelisti c3bec1537b mmcli: added Modem.Voice and Call support 2015-08-02 10:39:12 +02:00
Aleksander Morgado f9489a06be mmcli: add command completion 2015-01-25 21:49:01 +01:00
Aleksander Morgado 7751f2d6ed mmcli,oma: support for the new OMA interface 2013-09-09 10:20:40 +02:00
Aleksander Morgado d294232025 mmcli: new actions to use the 'Signal' interface 2013-08-21 12:33:09 +02:00
Aleksander Morgado b6d628b3a1 build: merge libmm-common into libmm-glib
It's pointless to have libmm-common around, just merge it into libmm-glib and
make ModemManager depend on libmm-glib directly. At the end, the non-common
stuff in libmm-glib is really minimal.
2012-10-04 10:17:05 +02:00
Aleksander Morgado c07a3832dd cli: new --firmware-list' and --firmware-select' actions 2012-10-04 10:17:05 +02:00
Aleksander Morgado 1df1fe4f4a mmcli: new Time-specific actions 2012-03-16 14:53:22 +01:00
Aleksander Morgado 0833934f11 cli: added Messaging-specific actions 2012-03-15 14:15:01 +01:00
Aleksander Morgado 6ff1543c32 cli: added SMS-specific actions 2012-03-15 14:15:01 +01:00
Aleksander Morgado f8cb1269e3 cli: include Location-related actions 2012-03-15 14:14:52 +01:00
Aleksander Morgado bb88a63a72 cli: add CDMA-related option group, and enable activation request 2012-03-15 14:14:51 +01:00
Aleksander Morgado 21d3aed125 cli: implement actions from the Simple interface 2012-03-15 14:14:37 +01:00
Aleksander Morgado 88e8c4835b cli: implement SIM related actions 2012-03-15 14:14:36 +01:00
Aleksander Morgado 6583bd61e1 cli: implement 3GPP related actions 2012-03-15 14:14:36 +01:00
Aleksander Morgado 6081919744 libmm-common: make it installable
We'll install libmm-common and its headers, which will be used by libmm-glib
and the ModemManager daemon.
2012-03-15 14:14:34 +01:00
Aleksander Morgado 85b14b0008 cli: new Bearer related options 2012-03-15 14:14:34 +01:00
Aleksander Morgado 1257ecd136 cli: start to port Modem actions to use the new libmm-glib 2012-03-15 14:14:26 +01:00
Aleksander Morgado fcadc0f841 cli: add commands to get info from modem 2012-03-15 14:14:25 +01:00
Aleksander Morgado d8c2a63927 cli: split into different option groups, in different files 2012-03-15 14:14:25 +01:00
Aleksander Morgado 8f450d82b6 cli: initial cli implementation 2012-03-15 14:14:25 +01:00