Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
It turns out we really do have to wait for the modem to return the
">" prompt before sending the message data, otherwise a number of
modems will complain about the data and fail the message. Fix that
by sending the first bit of the CMGS, waiting for the ">", and then
sending the rest.
This also switches all modems over to PDU mode by default if they
support it, since it's more compatible and most recent modems don't
even bother to support text mode anyway.
|
|
Off-by-one, fix it.
|
|
|
|
|
|
If there's no modem-specific power-down command, the port would be
closed prematurely, perhaps leaving unsolicited messages enabled.
Make sure that doesn't happen by ensuring that cleanup commands
complete.
|
|
These ports require QMI commands to start, and MM < 0.7 doesn't
support QMI, so we can't use these yet. They get recognized as
ether ports, but since we can't drive them as ether ports yet,
wierd things happen.
|
|
Tell clients that the reason we're disconnecting isn't some random
hiccup, but that roaming isn't allowed and we're now roaming, and
thus the modem is getting disconnected.
|
|
|
|
|
|
|
|
They seem to give the raw value of the SNR, but we already do signal quality
reporting using ^RSSI, so not useful.
|
|
Just prefix the existing error instead.
|
|
'str' is already freed when launching the warning, use the 'a' value instead.
|
|
|
|
The Novatel USB551L uses these to send data to the device, but the data
is QMUX.
|
|
|
|
|
|
Since QC stopped distributing the database files, we can't easily
decode the TLV names unless we start parsing the C headers.
|
|
Not all devices present a network interface, and on these devices
we need to fall back to PPP using the standard setup commands. But
they appear to support the Icera custom commands for access technology
and such, so still use those.
Hopefully fixes ZTE MF665C.
|
|
|
|
|
|
|
|
Switches UML290 mode between 4G/LTE, 3G/EVDO/1X, and auto.
|
|
|
|
|
|
|
|
Broken by b22b2d99db57e4cec8e6c3074dd20acd6845cb62 which changed the
return types of the qcdm_result_get_*() function, but I forgot to
update the usage of these functions in mm-generic-cdma.c, so they
were assuming failure when in fact the HDR subsystem state request
was successful.
|
|
|
|
It is leftover from times when D-Bus default limit was 32. Now, it is 8192, see
http://cgit.freedesktop.org/dbus/dbus/commit/?id=8d3d8ff55739eebd84d0d53a20a025329feafc3b
|
|
This patch fixes undesired disconnection attempts during modem disabling. The
new `hso_has_cid()' allows to check whether there is a valid CID stored before
trying to get it with `hso_get_cid()', as this last method ensures that a valid
CID number is returned, even if there is none.
Relevant logs of the issue:
modem-manager[24085]: hso_get_cid: runtime check failed: (cid >= 0)
modem-manager[24085]: hso_get_cid: runtime check failed: (cid >= 0)
modem-manager[24085]: (ttyHS4): --> 'AT_OWANCALL=0,0,1<CR>'
modem-manager[24085]: (ttyHS4): <-- '<CR><LF>ERROR<CR><LF>'
modem-manager[24085]: Got failure code 100: Unknown error
|
|
The `physdev' stored in the probe is the sysfs path of the parent device, that
owning all ports. We need to build the setup file path using the port's sysfs
path instead.
|
|
If the command we're sending doesn't have a callback, don't try
to call NULL. Triggered if the port got closed (because the modem
crashed, or refcounting errors or whatever) with some code like this:
mm_at_serial_port_queue_command (MM_AT_SERIAL_PORT (port), "+CREG=0", 3, NULL, NULL);
|
|
(dcbw)
Some packets are much larger and require a lot more escaping than
we thought so we need larger buffers here to be able to handle
all packets. In this case, SMS receipt.
|
|
When using the either DHCP or STATIC IpMethods the modem manager
or device itself negotiates / establishes the PPP session so NM
passes the authentication preferences through.
Signed-off-by: Andrew Bird <ajb@spheresystems.co.uk>
|
|
Built-in echo removal conflicts with _OWANCALL unsolicited messages, which are
not coming prefixed with <CR><LF>.
Fixes LP#953294
|
|
|
|
|
|
In the future we'll just default to PDU mode.
|
|
g_match_info_fetch() returns always a heap-allocated string which should be
freed by the caller.
|
|
|
|
Make port roles more flexible. We have modems that do PPP
on interfaces other than the primary interface, and that
wasn't possible with the old code. So clean up all that
logic and move the port organization code into the core
so we can reduce code in the plugins.
In the new world order, the plugins say whether the port
is a QCDM port, an AT port, or ignored. If it's an AT
port the plugins get to tag it as primary, secondary, or
PPP, or any combination of the 3. This allows for modems
where PPP should really be done on the secondary port
(Huawei E220, Sierra devices) so that the primary port
stays open for command and status.
Modem subclasses no longer get asked to handle port grabbing
themselves. Instead, that's now done by the generic classes
(MMGenericCdma and MMGenericGsm) and the plugins are notified
when a port is grabbed so they can add unsolicited response
handlers for it. After all ports are grabbed by the generic
classes, they get "organized", which assigns various ports
to the roles of PRIMARY, SECONDARY, DATA, and QCDM based
on specific rules and hints that the plugin provided (which
are expressed as MMAtPortFlags). The plugins then have
a chance to perform fixups on the primary port if they choose.
The plugin code is responsible for determining the port
hints (ie MMAtPortFlags) at probe time, instead of having
a combination of the plugin and the modem class do the
job. This simplifies things greatly for the plugins at
the expense of more complicated logic in the core.
|
|
So that the final conf file is updated if the original one gets modified.
|
|
|
|
The string passed to utils_bin2hexstr() needs to be freed afterwards.
|
|
|
|
|
|
Seems that launching AT+CSQF when not registered ends up timing out. AT+CSQF
is meant to be the fast version to get the signal quality, and is expected to
return instantly with the last cached signal quality value. But if we never
got registered, there is no such cached value, so it probably waits to get the
first one.
|