Commit Graph
1370 Commits
Author SHA1 Message Date
Aleksander Morgado c2eac91b78 sim: handle SendPin() and SendPuk() calls 2012-03-15 14:14:23 +01:00
Aleksander Morgado 995e7ace07 sim: handle EnablePin() calls 2012-03-15 14:14:23 +01:00
Aleksander Morgado b29a8ba44f sim: handle ChangePin() calls 2012-03-15 14:14:23 +01:00
Aleksander Morgado 23dd4d7e82 sim: allow re-launching initialization
It may happen that we cannot load property values when the SIM is locked, so
we need to enable re-launching initialization in the object API.
2012-03-15 14:14:23 +01:00
Aleksander Morgado ff0136ed04 sim: load OperatorName during init 2012-03-15 14:14:23 +01:00
Aleksander Morgado e3e3b32b0a sim: load OperatorIdentifier during init 2012-03-15 14:14:23 +01:00
Aleksander Morgado bdd1d23ed2 sim: load IMSI during init 2012-03-15 14:14:23 +01:00
Aleksander Morgado 87823387f4 sim: load SIM Identifier during init 2012-03-15 14:14:23 +01:00
Aleksander Morgado e40d32ac94 core: new MMSim object, inherits from MmGdbusSim 2012-03-15 14:14:23 +01:00
Aleksander Morgado 1453f352bc iface-modem: relaunch init when being unlocked 2012-03-15 14:14:23 +01:00
Aleksander Morgado ca15a10629 iface-modem: new `State' property, bound to the one in the MmGDbusModem skeleton 2012-03-15 14:14:23 +01:00
Aleksander Morgado 48babcf976 iface-modem: load SupportedModes' and SupportedBands' during init 2012-03-15 14:14:23 +01:00
Aleksander Morgado 7a20ad46d8 iface-modem: load UnlockRequired' and UnlockRetries' during init
And also allow being loaded upon user request, with
`mm_iface_modem_unlock_check()'.
2012-03-15 14:14:23 +01:00
Aleksander Morgado 9852433095 iface-modem: load EquipmentIdentifier' and DeviceIdentifier' during init 2012-03-15 14:14:22 +01:00
Aleksander Morgado 7a9b0d9fac iface-modem: load Manufacturer', Model' and `Revision' during init 2012-03-15 14:14:22 +01:00
Aleksander Morgado b35be61415 iface-modem: load MaxBearers' and MaxActiveBearers' during init 2012-03-15 14:14:22 +01:00
Aleksander Morgado b6539e9e13 iface-modem: load ModemCapabilities' and CurrentCapabilities' during init
When the interface gets initialized, start loading modem and current
capabilities.
2012-03-15 14:14:22 +01:00
Aleksander Morgado 88e6b0e4e6 iface-modem: set Device', Driver' and `Plugin' during init
Values taken from the MMBaseModem object, which are not expected to change
during the lifetime of the Modem object.
2012-03-15 14:14:22 +01:00
Aleksander Morgado 9e7cd2a345 core: new MMIfaceModem interface
This interface controls the availability of the DBus Modem interface, and
implements the actions that may be performed in the interface.
2012-03-15 14:14:22 +01:00
Aleksander Morgado 8069c751a0 base-modem: new enable()' and disable()' async methods
Users will be able to enable or disable modems using the DBus interface. We will
chain up the `Enable(boolean)' call from the DBus interface to these new methods
in the base modem class.
2012-03-15 14:14:22 +01:00
Aleksander Morgado b00c409978 base-modem: new virtual initialize() method
Whenever the first AT port is grabbed, we launch the initialize() method, which
must have been implemented by the corresponding modem subclass.
2012-03-15 14:14:22 +01:00
Aleksander Morgado 677e04be95 base-modem: new property to keep the Connection object 2012-03-15 14:14:22 +01:00
Aleksander Morgado d32b006cce base-modem: new properties for vendor and product IDs
These will be set during modem object creation.
2012-03-15 14:14:22 +01:00
Aleksander Morgado d5a0efc659 base-modem: getters for primary/secondary/qcdm ports 2012-03-15 14:14:22 +01:00
Aleksander Morgado 4a096c8c56 base-modem: set v1 serial parser always
CDMA modems used to use the v1_e1 serial parser; but we'll try to setup a common
one in all modems.
2012-03-15 14:14:22 +01:00
Aleksander Morgado 0d53a72d41 base-modem: new properties to handle Device, Driver and Plugin
They will be set when constructing the object.
2012-03-15 14:14:22 +01:00
Aleksander Morgado b6cb5bd6da base-modem: ported all port grabbing/releasing logic to the base object 2012-03-15 14:14:22 +01:00
Aleksander Morgado f39923c97d base-modem: expect a GDBusMethodInvocation as context of the auth request 2012-03-15 14:14:22 +01:00
Aleksander Morgado 9a72ac80d0 core: new MMBaseModem abstract type
Basically, a replacement of the MMModemBase type, being prepared to handle
multimode devices.

This object derives from a MmGdbusObjectSkeleton, which makes it suitable to be
controlled within the GDBusObjectManagerServer.
2012-03-15 14:14:21 +01:00
Aleksander Morgado f15daaf587 core: new AT command and sequence processors
This setup, allows:
 - Running a single command and processing its result.
 - Running a set of N commands, providing a global result after all have
   been executed.
 - Running a set of N commands out of M (N<M), where the global result is
   obtained without having executed all configured commands. This is useful
   when probing, for example.
2012-03-15 14:14:21 +01:00
Aleksander Morgado 07640b0c74 manager: make it export the Object Manager interface 2012-03-15 14:14:21 +01:00
Aleksander Morgado 0cc17ed82f manager: let it be initable
The MMManager object creation may fail due to environment reasons (i.e. no
plugins found, or problems exporting DBus interfaces), so we can use the
initable interface to properly handle those situations.
2012-03-15 14:14:21 +01:00
Aleksander Morgado bc78453d79 manager: keep the GDBus connection reference in a 'connection' property 2012-03-15 14:14:21 +01:00
Aleksander Morgado 68fcfa4530 manager: use G_TYPE_INSTANCE_GET_PRIVATE() just to create the private struct
A new 'priv' pointer is added in the MMManager struct, which will contain the
address of the private structure.
2012-03-15 14:14:21 +01:00
Aleksander Morgado 60c7f7d9ee core: implement the Manager1 DBus interface, based on GDBus
The MMManager object now derives from the gdbus-codegen-generated
MmGdbusOrgFreedesktopModemManager1Skeleton object, and implements the handlers
for the SetLogging() and ScanDevices() DBus methods.

The main program is also modified to be based on GDBus.
2012-03-15 14:14:21 +01:00
Aleksander Morgado a6d9bad4bd plugin-base: properly handle Core errors 2012-03-15 14:14:21 +01:00
Aleksander Morgado 1e6b29bcca plugin-base: clear internally tracked probe if port unsupported
If the port is supported by the plugin, leave the probe in the internal HT until
the port gets grabbed afterwards.
2012-03-15 14:14:21 +01:00
Aleksander Morgado d9b2b6f8ec manager: clear cached port probe when device is removed 2012-03-15 14:14:21 +01:00
Aleksander Morgado 95ade9c617 plugin-base: remove `MM_PLUGIN_SUPPORTS_PORT_IN_PROGRESS' status
Support checks are fully asynchronous and result is always reported when the
check is considered ready, so in-progress replies to
`mm_plugin_supports_port_finish()' don't make any sense.
2012-03-15 14:14:21 +01:00
Aleksander Morgado 2b20955489 plugin-base: don't report numeric support level in the [0-100] range
There is no single case where more than one plugin may end up wanting to support
a given port, and therefore there is no need to report the numeric support level
when reporting SUPPORTED.
2012-03-15 14:14:21 +01:00
Aleksander Morgado a1d2f20021 plugin-base: avoid trying to probe 'net' devices
Some devices support 'net' devices, which cannot be AT or QCDM probed.

If the port being checked for support corresponds to an already existing modem,
the port will be reported as SUPPORTED.

If this is the first port of the modem being checked for support, we will just
DEFER the support check until we get a modem created.
2012-03-15 14:14:21 +01:00
Aleksander Morgado db356bb20b plugin-base: keep a MMPluginSupportsResult in the async result
Instead of just a boolean, provide a MMPluginSupportsResult, so that we can pass
it as is during `supports_port_finish()'.
2012-03-15 14:14:21 +01:00
Aleksander Morgado 2588c17ad3 generic: rewrite the plugin to use the new port probing 2012-03-15 14:14:21 +01:00
Aleksander Morgado afd386738d plugin-base: improve the logic to check whether vendor or product probing needed
If the plugin does a Vendor ID check and it passes, it doesn't need Vendor
string probing.

If the plugin does a Vendor ID check and it fails:
  - If Vendor strings reported, it needs Vendor probing.
  - If Vendor strings not reported, fail as unsupported.

If the plugin does a Product ID check and it passes, it doesn't need Product
string probing.

If the plugin does a Product ID check and it fails:
  - If Product strings reported, it needs Product probing.
  - If Product strings not reported, fail as unsupported.
2012-03-15 14:14:21 +01:00
Aleksander Morgado 0646fc9d99 plugin-base: apply post-probing filtering
Once probing is finished, the plugin will check whether the port is supported
or not based on the following filters:
 - Capabilities
 - Reported Vendor string
 - Reported Product string
2012-03-15 14:14:21 +01:00
Aleksander Morgado f92fbcc906 plugin-base: apply pre-probing filtering
Before any real probing is launched in the port, the plugin will check whether
it can skip the request based on the following filters:
 - Subsystems
 - Drivers
 - udev-reported Vendor ID
 - udev-reported Product ID
 - udev-reported Tags
2012-03-15 14:14:21 +01:00
Aleksander Morgado a67d5dc1b8 plugin-base: make the plugin base use the new port probing mechanism
The previous 'MMPluginBaseSupportsTask' object is more or less equivalent to the
new `MMPortProbe' in terms of what information it contains. The main difference
being that the new `MMPortProbe' object handles internally the whole probing
flow as needed: only the needed probing sequences are done. For example, vendor
or product string probing will only be performed if a plugin requests it.
2012-03-15 14:14:21 +01:00
Aleksander Morgado 7b687b4aae build: temporarily disable compilation of plugins 2012-03-15 14:14:21 +01:00
Aleksander Morgado c112e19896 port-probe: properly handle Core errors
Fixes compilation of the Port Probe object.
2012-03-15 14:14:20 +01:00
Aleksander Morgado 963eb873e1 plugin-base: new 'allowed-udev-tags' property
The plugins can set this property to filter support check requests by the
availability of a given udev tag in the port. The value given to the property
should be a NULL-terminated array of C strings, e.g.:

    const gchar *tags[] = { "ID_MM_X22X_TAGGED", NULL };
2012-03-15 14:14:20 +01:00