summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/modem.c36
-rw-r--r--src/ofono.h3
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);