mirror of
https://gitlab.com/mobian1/eg25-manager.git
synced 2025-09-01 16:52:02 +02:00
udev: cancel reset if modem is already back
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.
This commit is contained in:
committed by
Arnaud Ferraris
parent
9cf51b9529
commit
61c89a003a
23
src/udev.c
23
src/udev.c
@@ -12,17 +12,26 @@ static void udev_event_cb(GUdevClient *client, gchar *action, GUdevDevice *devic
|
||||
{
|
||||
struct EG25Manager *manager = data;
|
||||
|
||||
if (strcmp(action, "unbind") != 0 ||
|
||||
manager->modem_state == EG25_STATE_RESETTING ||
|
||||
!manager->modem_usb_id) {
|
||||
if (!manager->modem_usb_id)
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(g_udev_device_get_name(device), manager->modem_usb_id) == 0 &&
|
||||
manager->reset_timer == 0) {
|
||||
g_message("Lost modem, resetting...");
|
||||
g_timeout_add_seconds(2, G_SOURCE_FUNC(modem_reset), manager);
|
||||
strcmp(action, "add") == 0 && manager->schedule_reset_timer != 0) {
|
||||
g_message("Modem recovered before reset sequence was triggered, cancel reset.");
|
||||
g_source_remove(manager->schedule_reset_timer);
|
||||
manager->schedule_reset_timer = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(action, "unbind") != 0 ||
|
||||
manager->modem_state == EG25_STATE_RESETTING ||
|
||||
manager->complete_reset_timer != 0 ||
|
||||
strcmp(g_udev_device_get_name(device), manager->modem_usb_id) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
g_message("Lost modem, resetting...");
|
||||
manager->schedule_reset_timer = g_timeout_add_seconds(3, G_SOURCE_FUNC(modem_reset), manager);
|
||||
}
|
||||
|
||||
void udev_init (struct EG25Manager *manager, toml_table_t *config[])
|
||||
|
Reference in New Issue
Block a user