return err;
}
-static int modem_set_powered(struct modem_data *modem)
+static int modem_set_powered(struct modem_data *modem, connman_bool_t powered)
{
- DBG("%s", modem->path);
+ int err;
- modem->set_powered = TRUE;
+ DBG("%s powered %d", modem->path, powered);
- return set_property(modem, modem->path,
+ modem->set_powered = powered;
+
+ err = set_property(modem, modem->path,
OFONO_MODEM_INTERFACE,
"Powered", DBUS_TYPE_BOOLEAN,
- &modem->set_powered,
+ &powered,
NULL);
-}
-
-static int modem_set_unpowered(struct modem_data *modem)
-{
- DBG("%s", modem->path);
- modem->set_powered = FALSE;
+ if (powered == FALSE && err == -EINPROGRESS)
+ return 0;
- return set_property(modem, modem->path,
- OFONO_MODEM_INTERFACE,
- "Powered", DBUS_TYPE_BOOLEAN,
- &modem->set_powered,
- NULL);
+ return err;
}
static connman_bool_t has_interface(uint8_t interfaces,
DBG("%s Powered %d", modem->path, modem->powered);
if (modem->powered == FALSE)
- modem_set_powered(modem);
+ modem_set_powered(modem, TRUE);
} else if (g_str_equal(key, "Online") == TRUE) {
dbus_message_iter_get_basic(&value, &modem->online);
return;
if (modem->powered == FALSE)
- modem_set_powered(modem);
+ modem_set_powered(modem, TRUE);
else if (has_interface(modem->interfaces, OFONO_API_SIM) == TRUE)
sim_get_properties(modem);
else
if (modem->ignore == TRUE)
return;
- modem_set_unpowered(modem);
+ modem_set_powered(modem, FALSE);
}
static void remove_modem(gpointer data)