modem: Simplify the modem lockdown modification

This commit is contained in:
Marcel Holtmann 2011-01-26 09:51:41 +01:00
parent 8637e31d1d
commit ed99980cd3
1 changed files with 28 additions and 27 deletions

View File

@ -796,6 +796,7 @@ static DBusMessage *set_property_lockdown(struct ofono_modem *modem,
{ {
DBusConnection *conn = ofono_dbus_get_connection(); DBusConnection *conn = ofono_dbus_get_connection();
ofono_bool_t lockdown; ofono_bool_t lockdown;
dbus_bool_t powered;
const char *caller; const char *caller;
int err; int err;
@ -815,47 +816,47 @@ static DBusMessage *set_property_lockdown(struct ofono_modem *modem,
if (modem->lockdown == lockdown) if (modem->lockdown == lockdown)
return dbus_message_new_method_return(msg); return dbus_message_new_method_return(msg);
if (lockdown) { if (lockdown == FALSE) {
dbus_bool_t powered; lockdown_remove(modem);
goto done;
}
modem->lock_owner = g_strdup(caller); modem->lock_owner = g_strdup(caller);
modem->lock_watch = g_dbus_add_disconnect_watch(conn, modem->lock_watch = g_dbus_add_disconnect_watch(conn,
modem->lock_owner, lockdown_disconnect, modem->lock_owner, lockdown_disconnect,
modem, NULL); modem, NULL);
if (modem->lock_watch == 0) { if (modem->lock_watch == 0) {
g_free(modem->lock_owner); g_free(modem->lock_owner);
modem->lock_owner = NULL; modem->lock_owner = NULL;
return __ofono_error_failed(msg);
}
modem->lockdown = lockdown;
if (modem->powered == FALSE)
goto done;
err = set_powered(modem, FALSE);
if (err < 0) {
if (err != -EINPROGRESS) {
lockdown_remove(modem);
return __ofono_error_failed(msg); return __ofono_error_failed(msg);
} }
modem->lockdown = lockdown; modem->pending = dbus_message_ref(msg);
modem->timeout = g_timeout_add_seconds(20,
if (!modem->powered)
goto done;
err = set_powered(modem, FALSE);
if (err < 0) {
if (err != -EINPROGRESS) {
lockdown_remove(modem);
return __ofono_error_failed(msg);
}
modem->pending = dbus_message_ref(msg);
modem->timeout = g_timeout_add_seconds(20,
set_powered_timeout, modem); set_powered_timeout, modem);
return NULL; return NULL;
} }
powered = FALSE; powered = FALSE;
ofono_dbus_signal_property_changed(conn, modem->path, ofono_dbus_signal_property_changed(conn, modem->path,
OFONO_MODEM_INTERFACE, OFONO_MODEM_INTERFACE,
"Powered", DBUS_TYPE_BOOLEAN, "Powered", DBUS_TYPE_BOOLEAN,
&powered); &powered);
} else
lockdown_remove(modem);
done: done:
g_dbus_send_reply(conn, msg, DBUS_TYPE_INVALID); g_dbus_send_reply(conn, msg, DBUS_TYPE_INVALID);