When going into firmware upgrade mode, the modem comes back with
different IDs than in normal use. We should make sure we cancel the
reset sequence when that happens, and not start a new one.
Cancel reset if modem is back before reset sequence is started.
When upgrading the modem through fwupd, it will enter fastboot.
Therefore, it disappears from the USB bus for a few ms.
However, the eg25-manager considers this as an issue and
resets the modem a bit later during the upgrade process.
To avoid this, cancel the reset sequence if the modem is already
back before the reset sequence is started. This will take less than 3
seconds.
Executing a reset each time the modem is unbound is a bit too extreme:
the modem sometimes recovers by itself and only needs a "soft" reset
sequence (unbind/bind).
This commit introduces a short timer (2s) so we the modem can settle in.
If reset fails after this time, the modem is probably completely broken,
or already rebooting, so we can safely issue a reset AT command.
If a user created a custom config file and we added new fields in a
newer version, `eg25-manager` will crash by assuming all config files
are complete and up-to-date.
Moreover, creating a custom config, even to change only one option,
required copying a complete default config file and then editing the
relevant field(s). This could lead to issues when upgrading, as default
values of fields unrelated to the user change could be modified and not
applied to the user config.
This patch addresses both these issues by:
* making sure at least one config file exists
* requiring only the "default" config file (the one under `/usr/share`)
to include all the required fields
* trying to use user config for each field, falling back to the default
config file if the field isn't present in the user config
* exiting with a meaningful error message in case the default config
file is missing a required field or section
That way, it will be possible to have a minimal user config file
containing only the field(s) needing a different value than the default
one, falling back to the values in the default config file.
Fixes#23
This commit prepares the use of device-specific configuration files.
These files should be named after the device-tree `compatible` string
with the `toml` extension.
`eg25-manager` will search for config files in
`<prefix>/etc/eg25-manager` first (or `/etc/eg25-manager` if prefix is
`/usr`), then in `<prefix>/share/eg25-manager`.
Most of the modem issues follow a (incomplete) USB device reset. Instead
of relying solely on the existing timer, this patch adds a udev monitor
which resets the modem as soon as its associated USB device is reset,
which greatly improves recovery time.