---
src/modem.c | 36 ++++++++++++++++++++++++++++++++++++
src/ofono.h | 3 +++
2 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/src/modem.c b/src/modem.c
index 0aef463..72937a3 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -2050,3 +2050,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 511be8a..a80af4f 100644
--- a/src/ofono.h
+++ b/src/ofono.h
@@ -212,6 +212,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);
--
1.7.0.4