Age | Commit message (Collapse) | Author |
|
string"
This reverts commit d89b9064afa991d5cc7737fa9b0b1b55c0e31158.
We already print the raw buffer when sending/receiving the message in QmiDevice,
which is actually better as we end up priting it *before* parsing it, so it's
much better for debugging purposes.
|
|
|
|
|
|
Try to handle buggy firmware, or just make the library more robust, by
validating the read TLV before really reading it. If a TLV is not considered
valid, we just skip it for now.
E.g.: the "Detailed Service Status" TLV (0x21) in the "NAS Get Serving System"
message is supposed to be a sequence of 5 bytes, but some models (e.g. ZTE MF683)
end up sending only the first 4 bytes.
|
|
|
|
|
|
|
|
|
|
This will help us debug issues in the message translation.
|
|
|
|
|
|
IPv6 addresses are always sent in network byte order. Oddly,
IPv4 addresses appear to be sent as LE uint32s rather than
BE/network byte order.
|
|
Some values are sent by the firmware in big endian byte order,
specifically IP addresses, which are sent in network byte order
(ie, big endian). Add the ability to specify the byte order
the firmware handles the value as, and convert that to host
byte order when reading/writing QMI buffers.
|
|
We allow passing a GCancellable to every async operation with the clients. Now,
if the cancellable gets cancelled and the operation can be ABORT-ed, then we
do it.
|
|
If we don't disconnect the signal handler when we clear the private
QmiClientCtl, we may end up in the situation where we try to use the
already disposed QmiDevice object.
|
|
|
|
|
|
Messages can now be tagged with a special 'abort' keyword, so that whenever the
message times out we issue a new ABORT command to cancel the specific timed out
request.
This support is currently only available for the NAS and WDS services, which are
the ones supporting ABORT for their long-running operations.
|
|
|
|
|
|
|
|
|
|
|
|
Message traces have been very useful when debugging issues in the protocol, and
we should avoid requiring a full recompilation in order to get them enabled.
Instead, we provide two new API methods, `qmi_utils_(get|set)_traces_enabled()',
which allow specifying whether traces should be dumped with g_debug() or not.
|
|
|
|
|
|
|
|
These methods are (should only be) used only by the library.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Among the tons of fixes done here, we now generate some per-service .sections
file which we then concatenate to build the final libqmi-glib-sections.txt file.
|
|
Also simplify the build by using BUILT_SOURCES to avoid needing to specify
custom dependency rules.
|
|
|
|
|
|
|
|
Seems that SINR and IO, even if they are supposedly only meaningful in EV-DO,
may still be given for other networks.
[27 Sep 2012, 11:17:36] [Debug] [/dev/cdc-wdm0] Received message...
>>>>>> QMUX:
>>>>>> length = 49
>>>>>> flags = 0x80
>>>>>> service = "nas"
>>>>>> client = 6
>>>>>> QMI:
>>>>>> flags = "response"
>>>>>> transaction = 1
>>>>>> tlv_length = 37
>>>>>> message = "Get Signal Strength" (0x0020)
>>>>>> TLV:
>>>>>> type = "Result" (0x02)
>>>>>> length = 4
>>>>>> value = 00:00:00:00
>>>>>> translated = SUCCESS
>>>>>> TLV:
>>>>>> type = "Signal Strength" (0x01)
>>>>>> length = 2
>>>>>> value = A8:05
>>>>>> translated = [ strength = '-88' radio_interface = '5' ]
>>>>>> TLV:
>>>>>> type = "RSSI List" (0x11)
>>>>>> length = 4
>>>>>> value = 01:00:58:05
>>>>>> translated = { [0] = '[ rssi = '88' radio_interface = '5' ] '}
>>>>>> TLV:
>>>>>> type = "ECIO List" (0x12)
>>>>>> length = 4
>>>>>> value = 01:00:FC:05
>>>>>> translated = { [0] = '[ ecio = '252' radio_interface = '5' ] '}
>>>>>> TLV:
>>>>>> type = "IO" (0x13)
>>>>>> length = 4
>>>>>> value = 96:FF:FF:FF
>>>>>> translated = -106
>>>>>> TLV:
>>>>>> type = "SINR" (0x14)
>>>>>> length = 1
>>>>>> value = 08
>>>>>> translated = 8
|
|
|
|
Some architectures require that the value of a pointer is aligned in memory.
Given that we're reading from a raw buffer, the integers in it may not end up
aligned so we cannot safely cast any address to a valid 16/32/64 bit integer
value. Handle this by copying the integer from the raw buffer directly into the
output variable, which is of course properly aligned. Also added new test cases
to check this.
Thanks to:
Shawn J. Goff <shawnjgoff@gmail.com>
for reporting the issue and his endless tests.
|
|
Can be run e.g. like:
$> sudo qmicli -d /dev/cdc-wdm0 --dms-select-stored-image="modem1,pri2"
|
|
Can be run e.g. like:
$> sudo qmicli -d /dev/cdc-wdm0 --dms-delete-stored-image="pri2"
The passed index is the one given by a previous `--dms-list-stored-images'
action. Please note that if you delete a given image, the listed indexes will
change, so if you want to delete multiple images you'll need to first list
stored images and grab the index and then use that bew index to delete the new
image.
Also, don't try this command many times or you'll run out of images to delete!
|
|
|
|
|
|
|
|
|
|
|