diff options
-rw-r--r-- | src/modem.c | 36 | ||||
-rw-r--r-- | src/ofono.h | 3 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/modem.c b/src/modem.c index a7bf4f56..d1886c94 100644 --- a/src/modem.c +++ b/src/modem.c @@ -2102,3 +2102,39 @@ ofono_bool_t ofono_modem_get_emergency_mode(struct ofono_modem *modem) { return modem->emergency != 0; } + +void __ofono_modem_inc_emergency_mode(struct ofono_modem *modem) +{ + DBusConnection *conn = ofono_dbus_get_connection(); + dbus_bool_t emergency = TRUE; + + if (++modem->emergency > 1) + return; + + ofono_dbus_signal_property_changed(conn, modem->path, + OFONO_MODEM_INTERFACE, + "Emergency", DBUS_TYPE_BOOLEAN, + &emergency); +} + +void __ofono_modem_dec_emergency_mode(struct ofono_modem *modem) +{ + DBusConnection *conn = ofono_dbus_get_connection(); + dbus_bool_t emergency = FALSE; + + if (modem->emergency == 0) { + ofono_error("emergency mode is already deactivated!!!"); + return; + } + + if (modem->emergency > 1) + goto out; + + ofono_dbus_signal_property_changed(conn, modem->path, + OFONO_MODEM_INTERFACE, + "Emergency", DBUS_TYPE_BOOLEAN, + &emergency); + +out: + modem->emergency--; +} diff --git a/src/ofono.h b/src/ofono.h index 1bee56db..7e39022d 100644 --- a/src/ofono.h +++ b/src/ofono.h @@ -217,6 +217,9 @@ void __ofono_modem_remove_powered_watch(struct ofono_modem *modem, void __ofono_modem_sim_reset(struct ofono_modem *modem); +void __ofono_modem_inc_emergency_mode(struct ofono_modem *modem); +void __ofono_modem_dec_emergency_mode(struct ofono_modem *modem); + #include <ofono/call-barring.h> gboolean __ofono_call_barring_is_busy(struct ofono_call_barring *cb); |