summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGustavo F. Padovan <padovan@profusion.mobi>2010-11-12 17:56:10 -0200
committerDenis Kenzior <denkenz@gmail.com>2010-11-15 07:39:16 -0600
commit8ae8deb44ff828ed358693d56b2007c8206e309e (patch)
tree13bbb0fa6a1b5b5d0ec761e5eef383e3b617ac69 /src
parent2f9af8c105d05f3dea2d6d549ec6a0f778d122cc (diff)
downloadofono-8ae8deb44ff828ed358693d56b2007c8206e309e.tar.bz2
Simplify ofono_modem_set_powered() logic
Diffstat (limited to 'src')
-rw-r--r--src/modem.c47
1 files changed, 25 insertions, 22 deletions
diff --git a/src/modem.c b/src/modem.c
index 37764613..3fb68092 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -752,6 +752,7 @@ static GDBusSignalTable modem_signals[] = {
void ofono_modem_set_powered(struct ofono_modem *modem, ofono_bool_t powered)
{
DBusConnection *conn = ofono_dbus_get_connection();
+ dbus_bool_t dbus_powered = powered;
if (modem->timeout > 0) {
g_source_remove(modem->timeout);
@@ -771,32 +772,34 @@ void ofono_modem_set_powered(struct ofono_modem *modem, ofono_bool_t powered)
modem->powered_pending = powered;
- if (modem->powered != powered) {
- dbus_bool_t dbus_powered = powered;
- modem->powered = powered;
+ if (modem->powered == powered)
+ goto out;
- if (modem->driver == NULL) {
- ofono_error("Calling ofono_modem_set_powered on a"
- "modem with no driver is not valid, "
- "please fix the modem driver.");
- return;
- }
+ modem->powered = powered;
- ofono_dbus_signal_property_changed(conn, modem->path,
- OFONO_MODEM_INTERFACE,
- "Powered", DBUS_TYPE_BOOLEAN,
- &dbus_powered);
+ if (modem->driver == NULL) {
+ ofono_error("Calling ofono_modem_set_powered on a"
+ "modem with no driver is not valid, "
+ "please fix the modem driver.");
+ return;
+ }
- if (powered) {
- modem_change_state(modem, MODEM_STATE_PRE_SIM);
+ ofono_dbus_signal_property_changed(conn, modem->path,
+ OFONO_MODEM_INTERFACE,
+ "Powered", DBUS_TYPE_BOOLEAN,
+ &dbus_powered);
- /* 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);
- }
+ 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) {
modems_remaining -= 1;