aboutsummaryrefslogtreecommitdiff
path: root/plugins/option
AgeCommit message (Collapse)Author
2014-07-06bearer: rename 'MMBearer' to 'MMBaseBearer'Aleksander Morgado
Just so that we don't have same header names in src/ and /libmm-glib.
2014-07-04option,hso: add missing GPS unamanged capabilityAleksander Morgado
2014-07-02option,hso: print port type before parsingAleksander Morgado
2014-07-02option,hso: allow 'unmanaged' GPS setupAleksander Morgado
2014-06-23port: store parent sysfs path in each MMPortAleksander Morgado
2014-06-13broadband-bearer: pass the IP family to subclasses when getting IP configDan Williams
Subclasses may need to know which IP families were used for the setup so they can return the correct IP configuration. We can't just use the MMBearer default_ip_family becuase that isn't the family that was actually used during the connection.
2014-05-21plugins: remove unnecessary MM_BASE_MODEM() castsBen Chan
2014-05-20option,hso: minor coding style fixesBen Chan
2014-02-13ports: rename 'MMAtSerialPort' to 'MMPortSerialAt'Aleksander Morgado
2014-02-13ports: rename 'MMGpsSerialPort' to 'MMPortSerialGps'Aleksander Morgado
2014-02-13ports: rename 'MMSerialPort' to 'MMPortSerial'Aleksander Morgado
2013-09-23bearer: consolidate unsolicited connection status reportsAleksander Morgado
Originally developed by: Ben Chan <benchan@chromium.org> This patch replaces mm_bearer_report_disconnection() with a more generic mm_bearer_report_connection_status(), which allows reporting any connection status of a bearer. This further allows getting rid of those custom report_connection_status functions in plugic specific bearer subclasses. Note that while plugin-specific implementations can receive multiple 'MMBearerConnectionStatus' values, the generic implementation is only allowed to receive DISCONNECTED. Plugins need to make sure that they process all the other status values, and only report DISCONNECTED to the parent when required. MBM: The MBM bearer implementation of report_connection_status() expects either CONNECTED or DISCONNECTED. If any of these is received and there is an ongoing connection attempt, the corresponding operation will be completed. If there is no connection attempt, we will just handle the DISCONNECTED state, calling the parent method to notify that the modem got network-disconnected. Icera: The Icera bearer implementation of report_connection_status() expects either CONNECTED, CONNECT FAILED or DISCONNECTED. If any of these is received and there is an ongoing connection or disconnection attempt, the corresponding operation will be completed. If there is no connection or disconnection attempt, we will just handle the CONNECT FAILED and DISCONNECTED states, calling the parent method (always with DISCONNECTED) to notify that the modem got network-disconnected. Option/HSO: The Option/HSO bearer implementation of report_connection_status() expects either CONNECTED, CONNECTION FAILED or DISCONNECTED. If any of these is received and there is an ongoing connection or disconnection attempt, the corresponding operation will be completed. If there is no connection or disconnection attempt, we will just handle the CONNECTION FAILED and DISCONNECTED states, calling the parent method (always with DISCONNECTED) to notify that the modem got network-disconnected. Huawei: The Huawei bearer implementation of report_connection_status() expects either CONNECTED or DISCONNECTED. These messages are not used to process pending connection or disconnection attempts; so if they are received while one of these is on-going, it will just be ignored. CONNECTED reports are also ignored, so we will just handle the DISCONNECTED state, calling the parent method to notify that the modem got network-disconnected. Altair-LTE: The Altair-LTE bearers will only report DISCONNECTED on network-disconnected cases. There is no custom report_connection_status(). Novatel-LTE: The Novatel-LTE bearers will only report DISCONNECTED on network-disconnected cases. There is no custom report_connection_status().
2013-06-24broadband-bearer-hso: IPv4 prefix is always /32Dan Williams
The modem doesn't give us a prefix in the OWANDATA response, but it's always /32. This didn't get set previously because NetworkManager always just used /32 for the 'static' configuration, but NM isn't the only user of MM, and only MM knows for sure that the prefix should be /32.
2013-06-24hso: if IPv6 bearer type requested, create a generic bearerAleksander Morgado
Option/HSO modems don't seem to support IPv6 when using the net interface. So if IPv6 is requested, create a generic bearer. $ sudo mmcli -m 0 --simple-connect="apn=internet,ip-type=ipv6" successfully connected the modem $ sudo mmcli -b 0 Bearer '/org/freedesktop/ModemManager1/Bearer/0' ------------------------- Status | connected: 'yes' | suspended: 'no' | interface: 'ttyHS3' | IP timeout: '20' ------------------------- Properties | apn: 'internet' | roaming: 'allowed' | IP type: 'ipv6' | user: 'none' | password: 'none' | number: 'none' | Rm protocol: 'unknown' ------------------------- IPv4 configuration | method: 'ppp' ------------------------- IPv6 configuration | method: 'unknown' $ sudo mmcli -m 0 --simple-disconnect successfully disconnected all bearers in the modem https://bugzilla.gnome.org/show_bug.cgi?id=702472
2013-06-05api,introspection: merge 'AllowedModes' and 'SupportedMode' into 'CurrentModes'Aleksander Morgado
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-05api,introspection: 'SupportedModes' is now a list of possible combinationsAleksander Morgado
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-03-28option: don't apply both vendor and product filters at the same timeAleksander Morgado
The probing logic expects either one or the other right now. In this case, it is just simpler to include the Nozomi-related VID in the vendor filter, and remove the product filter.
2013-03-28option: ignore PH_SIM facility lock in 'nozomi' based modemsAleksander Morgado
https://bugzilla.gnome.org/show_bug.cgi?id=696593
2013-02-18bearer,3gpp: dial operation specifies which data port to useAleksander Morgado
Instead of deciding in advance which data port to use, we let the dialling operation gather it. For the generic dialling logic, ATD-based, always an 'AT' port will be used as data port, even if we grabbed a 'net' port. Those plugins that can work with 'net' ports will grab the specific 'net' port themselves.
2013-01-14hso: remove duplicated codeAleksander Morgado
2012-12-24hso: new helper code to debug GPS related issuesAleksander Morgado
Disabled in normal compilation, can be enabled to debug issues.
2012-12-12icera,hso: don't wait to get connected if the primary port is removedAleksander Morgado
If the primary port is gone (e.g. when going to sleep) and we are just in the middle of a connection attempt, we won't be able to receive any unsolicited message regarding the status of the attempt. So, if we detect that the port is forced to get closed, we'll just treat it as a connection failure. http://code.google.com/p/chromium-os/issues/detail?id=35391
2012-11-27hso: DIAG ports aren't always DIAGDan Williams
The 'hso' driver tags Icera-based modems' proprietary protocol port as a DIAG port, but since they aren't Qualcomm-based, it's not a DIAG port. Just turn off AT probing and let QCDM probing fail the port instead of assuming it's a DIAG port.
2012-11-27icera,hso: don't disconnect() cancellable in the cancellation callbackAleksander Morgado
The logic gets completely stuck when this happens: Stack trace below: #0 0x77661424 in __kernel_vsyscall () #1 0x77337c3c in pthread_cond_wait () #2 0x773cebaa in g_cond_wait () from /usr/lib/libglib-2.0.so.0 #3 0x774c03cc in g_cancellable_disconnect () from /usr/lib/libgio-2.0.so.0 #4 0x76955d36 in connect_cancelled_cb (cancellable=0x78e055a0, self=0x78e0b590) #5 0x77460982 in g_cclosure_marshal_VOID__VOIDv () from /usr/lib/libgobject-2.0.so.0 #6 0x7745ed8a in ?? () from /usr/lib/libgobject-2.0.so.0 #7 0x77478435 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0 #8 0x77478eb3 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0 #9 0x774c01eb in g_cancellable_cancel () from /usr/lib/libgio-2.0.so.0 #10 0x776a0eab in mm_bearer_disconnect (self=0x78e0b590, callback=0x776c5980 <disconnect_ready>, #11 0x776c57de in disconnect_next_bearer (ctx=0x78e12870) at mm-iface-modem-simple.c:898 #12 0x776c58d2 in disconnect_auth_ready (self=0x78df3048, res=0x78e06210, ctx=0x78e12870) #13 0x774fed25 in g_simple_async_result_complete () from /usr/lib/libgio-2.0.so.0 #14 0x776a8c4e in authorize_ready (authp=0x78db68d0, res=0x76801638, simple=0x78e06210) #15 0x774fed25 in g_simple_async_result_complete () from /usr/lib/libgio-2.0.so.0 #16 0x774fee3e in ?? () from /usr/lib/libgio-2.0.so.0 #17 0x7738a7a2 in ?? () from /usr/lib/libglib-2.0.so.0 #18 0x7738ce83 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #19 0x7738d248 in ?? () from /usr/lib/libglib-2.0.so.0 #20 0x7738d6eb in g_main_loop_run () from /usr/lib/libglib-2.0.so.0 #21 0x77696a7d in main (argc=2, argv=0x7fbb1f04) at main.c:158 http://code.google.com/p/chromium-os/issues/detail?id=36448
2012-11-09option,hso: early check of port type hints to avoid probingsAleksander Morgado
Instead of getting the port type hints while grabbing each probed port, we now run a custom init operation in the probing which already gives us the port type, and therefore allows us to completely skip port probings. Also now added hints for 'Diag' (QCDM) ports and AT/'Modem' ports (I guess it's the one for PPP if we don't have a net port, which is unlikely anyway in HSO). This makes the probing of an Option/HSO modem almost instant.
2012-11-02core,plugins: don't assume 'CS' supported when '2G' supportedAleksander Morgado
We will not report 'CS' as a supported mode every time '2G' is supported. This actually was forcing all plugins to handle a 'CS' fallback when they didn't have CS-specific mode setup. So, to simplify things, we will only report 'CS' as supported for those plugins which actually allow to select 'CS' mode (e.g. the 'wavecom' plugin).
2012-10-30option,hso: don't reset connection if cancelled, wait to get connected beforeAleksander Morgado
If we are requested to cancel the connection, we first need to wait for the connection attempt to finish before issuing the disconnect command, as otherwise the modem just returns an error saying that it cannot perform the operation and at the end we end up with the modem connected but ModemManager thinking that it isn't.
2012-10-07hso: use user-specified allowed authentication methodsAleksander Morgado
If none of the specified methods is supported, an error is returned. Also quote user and password using `mm_at_serial_port_quote_string()'.
2012-10-04libmm-glib: remove the `libmm-common.h' headerAleksander Morgado
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-09-14libmm-common: added common utils from coreAleksander Morgado
Moved the utils to play with binary to hex strings into libmm-common.
2012-09-14option,hso: properly parse returned IMEIAleksander Morgado
2012-08-30hso: fix error handling in PIN retry countsAleksander Morgado
2012-08-24api,introspection: report list of drivers, not just oneAleksander Morgado
Different ports of the same modem may get handled by different drivers. We therefore need to provide a list of drivers (new `Modem.Drivers' property with signature 'as') instead of just one (removed `Modem.Driver' property with signature 's'). $ sudo mmcli -m 0 | grep drivers | drivers: 'qcserial, qmi_wwan'
2012-08-24base-modem-at: add 'raw' handling to `mm_base_modem_at_command_full()'Aleksander Morgado
2012-08-23broadband-bearer: pass down the data port to the 3GPP dialling stepAleksander Morgado
Plugins may require specific dialling commands depending on the port type.
2012-08-06hso: avoid highly unlikely use of already unref-ed bearerAleksander Morgado
In the connection sequence, we make sure that the Bearer object is valid by keeping a reference in the Dial3gppContext (actually, another one kept by the GSimpleAsyncResult as well). But we are considering here the case where the connection context is completed and freed by an unsolicited message handler before we get the reply to the AT command, so to properly ensure that the bearer object is still valid when we try to check if the context is in the priv struct, we need to keep an extra ref around.
2012-08-06hso: avoid trying to use an already freed contextAleksander Morgado
In the connection sequence, we keep the context in the private info of the Bearer object, so that we can complete and free it when we receive OWANCALL unsolicited messages. Now, the reply of the OWANCALL itself may get processed as an unsolicited message, so effectively we're processing and finishing the connection/disconnection context *before* we process the reply of the AT command. This patch ensures that we do not try to re-use the connection context after it has been processed by the unsolicited messages handler.
2012-08-06hso: fix small error in unlock retries checkingDan Williams
_OERCN only reports PIN and PUK, so we only check for two values.
2012-08-06hso: implement unlock retries checkingDan Williams
2012-08-06port-probe: rename _get_port() to _peek_port() as there is no ownership transferAleksander Morgado
2012-08-06core: merge `MMPluginBase' and `MMPlugin'Aleksander Morgado
There's no real point in maintaining a separate `MMPlugin' interface, as all the plugins will inherit from `MMPluginBase', so just merge them and simplify everything.
2012-08-06core: compile all ports before creating the modem objectAleksander Morgado
Before this, we only exported the modem to DBus when all ports were organized, in order to make sure that we select as primary port the one we really want and not the first AT port grabbed. Given that to get all the ports organized we also needed to wait to get all the ports grabbed, we can now also defer the creation of the modem object until all the ports get grabbed. This allows us to create different types of objects based on the ports available (e.g. we can now create QMI-supported modem objects if we see a QMI port around).
2012-07-19hso: use common integer string parsersAleksander Morgado
2012-07-19hso: unsolicited %IPDPACT may come before the AT command replyAleksander Morgado
2012-07-19hso: plug memleak when finishing dialling with errorAleksander Morgado
2012-07-19hso: fix cid to report toAleksander Morgado
2012-05-06bearer: simplify handling of the bearer configurationAleksander Morgado
The base MMBearer object will receive the MMBearerProperties configuration, which contains every generic and plugin-specific set up. Not every configuration parameter will be used by every implementation (e.g. not every bearer needs user/password). The Bearer object will expose every configuration parameter received in its `Properties' property in the interface, even if it's not really used.
2012-04-10bearer: allow subclasses to report disconnectionAleksander Morgado
The new `mm_bearer_report_disconnection()' allows subclasses to notify about being disconnected, so that every layer of inheritance can chain its own code to reset the connection status. This commit partially disables the logic included in commit 981222. Now subclasses (actually, no one) are not allowed to g_object_set() the MM_BEARER_STATUS property.
2012-03-29broadband: ensure 3GPP location info gets updated when enabling the sourceAleksander Morgado
Whenever 3GPP location source gets enabled, we'll launch new registration status checks (to get updated LAC/CI) and new operator code/name checks (to get updated MCC/MNC). Additional changes were needed in the HSO plugin, so that the specific location gathering enabling implemented by the HSO modem chains up parent's one first.
2012-03-29hso: include support for the raw GPS location sourceAleksander Morgado