| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
In certain sysmocom proprietary versions of the wavecom modem,
we have a non-blocking operator scan command called AT@COPS=?,
which we can use instead of AT+COPS=?.
The wavecom vendor plugin checks at start time if the command is
available. If yes, iti s used in case a libgsm client is asking for an
operator scan, instead of the standard AT+COPS=? variant.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The parameters were uint16_t and we asked the libc to make a
store of uint32_t. So 16bit were written to the wrong part of
the struct and on ARM this is causing unaligned memory access.
Use the %hx to make a uint16_t store and avoid the above issue.
GDB
#0 0x4d4d0a20 in _IO_vfscanf () from /lib/libc.so.6
(gdb) bt
#0 0x4d4d0a20 in _IO_vfscanf () from /lib/libc.so.6
#1 0x4d4d5d54 in __isoc99_vsscanf () from /lib/libc.so.6
#2 0x4d4d5cd0 in __isoc99_sscanf () from /lib/libc.so.6
#3 0x400a597c in ?? () from /usr/lib/gsmd/libgsmd-vendor_wavecom.so
Cannot access memory at address 0x3
Clang:
vendor_wavecom.c:114:21: warning: format specifies type 'unsigned int *' but the argument has
type 'u_int16_t *' (aka 'unsigned short *') [-Wformat]
sscanf(tok, "%x", &aux->u.cell_info.ci);
~~ ^~~~~~~~~~~~~~~~~~~~
%hx
|
|
|
|
|
| |
In some cases the modem might be stuck once we start up, so it's best to
re-initialize it at gsmd startup.
|
|
|
|
|
|
| |
This avoids having to have another client program which then passes
messages from gsmd into gpsd. Rather, gpsd can directly receive the
messages via UDP.
|
| |
|
|
|
|
|
|
| |
we simply convert the sysmocom specific unsolicited messages into
an usock event which is transported to the client[s] who subscribed
to it.
|
| |
|
|
|