mirror of git://git.sysmocom.de/ofono
Simplify ofono_modem_set_powered() logic
This commit is contained in:
parent
2f9af8c105
commit
8ae8deb44f
49
src/modem.c
49
src/modem.c
|
@ -752,6 +752,7 @@ static GDBusSignalTable modem_signals[] = {
|
||||||
void ofono_modem_set_powered(struct ofono_modem *modem, ofono_bool_t powered)
|
void ofono_modem_set_powered(struct ofono_modem *modem, ofono_bool_t powered)
|
||||||
{
|
{
|
||||||
DBusConnection *conn = ofono_dbus_get_connection();
|
DBusConnection *conn = ofono_dbus_get_connection();
|
||||||
|
dbus_bool_t dbus_powered = powered;
|
||||||
|
|
||||||
if (modem->timeout > 0) {
|
if (modem->timeout > 0) {
|
||||||
g_source_remove(modem->timeout);
|
g_source_remove(modem->timeout);
|
||||||
|
@ -771,33 +772,35 @@ void ofono_modem_set_powered(struct ofono_modem *modem, ofono_bool_t powered)
|
||||||
|
|
||||||
modem->powered_pending = powered;
|
modem->powered_pending = powered;
|
||||||
|
|
||||||
if (modem->powered != powered) {
|
if (modem->powered == powered)
|
||||||
dbus_bool_t dbus_powered = powered;
|
goto out;
|
||||||
modem->powered = powered;
|
|
||||||
|
|
||||||
if (modem->driver == NULL) {
|
modem->powered = powered;
|
||||||
ofono_error("Calling ofono_modem_set_powered on a"
|
|
||||||
"modem with no driver is not valid, "
|
|
||||||
"please fix the modem driver.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ofono_dbus_signal_property_changed(conn, modem->path,
|
if (modem->driver == NULL) {
|
||||||
OFONO_MODEM_INTERFACE,
|
ofono_error("Calling ofono_modem_set_powered on a"
|
||||||
"Powered", DBUS_TYPE_BOOLEAN,
|
"modem with no driver is not valid, "
|
||||||
&dbus_powered);
|
"please fix the modem driver.");
|
||||||
|
return;
|
||||||
if (powered) {
|
|
||||||
modem_change_state(modem, MODEM_STATE_PRE_SIM);
|
|
||||||
|
|
||||||
/* Force SIM Ready for devies with no sim atom */
|
|
||||||
if (__ofono_modem_find_atom(modem,
|
|
||||||
OFONO_ATOM_TYPE_SIM) == NULL)
|
|
||||||
sim_state_watch(OFONO_SIM_STATE_READY, modem);
|
|
||||||
} else
|
|
||||||
modem_change_state(modem, MODEM_STATE_POWER_OFF);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ofono_dbus_signal_property_changed(conn, modem->path,
|
||||||
|
OFONO_MODEM_INTERFACE,
|
||||||
|
"Powered", DBUS_TYPE_BOOLEAN,
|
||||||
|
&dbus_powered);
|
||||||
|
|
||||||
|
if (powered) {
|
||||||
|
modem_change_state(modem, MODEM_STATE_PRE_SIM);
|
||||||
|
|
||||||
|
/* Force SIM Ready for devies with no sim atom */
|
||||||
|
if (__ofono_modem_find_atom(modem,
|
||||||
|
OFONO_ATOM_TYPE_SIM) == NULL)
|
||||||
|
sim_state_watch(OFONO_SIM_STATE_READY, modem);
|
||||||
|
} else
|
||||||
|
modem_change_state(modem, MODEM_STATE_POWER_OFF);
|
||||||
|
|
||||||
|
out:
|
||||||
|
|
||||||
if (powering_down && powered == FALSE) {
|
if (powering_down && powered == FALSE) {
|
||||||
modems_remaining -= 1;
|
modems_remaining -= 1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue