emulator: Force indicator event implementation
authorFrédéric Danis <frederic.danis@linux.intel.com>
Wed, 14 Mar 2012 16:00:52 +0000 (17:00 +0100)
committerDenis Kenzior <denkenz@gmail.com>
Wed, 21 Mar 2012 00:20:22 +0000 (19:20 -0500)
src/emulator.c
src/ofono.h

index 0f1ceca..e7c7d41 100644 (file)
@@ -1245,3 +1245,26 @@ start_ring:
        em->callsetup_source = g_timeout_add_seconds(RING_TIMEOUT,
                                                        notify_ring, em);
 }
+
+void __ofono_emulator_set_indicator_forced(struct ofono_emulator *em,
+                                               const char *name, int value)
+{
+       int i;
+       struct indicator *ind;
+       char buf[20];
+
+       ind = find_indicator(em, name, &i);
+
+       if (ind == NULL || value < ind->min || value > ind->max)
+               return;
+
+       ind->value = value;
+
+       if (em->events_mode == 3 && em->events_ind && em->slc && ind->active) {
+               if (!g_at_server_command_pending(em->server)) {
+                       sprintf(buf, "+CIEV: %d,%d", i, ind->value);
+                       g_at_server_send_unsolicited(em->server, buf);
+               } else
+                       ind->deferred = TRUE;
+       }
+}
index a42e153..a6f1af1 100644 (file)
@@ -494,6 +494,9 @@ void __ofono_gprs_provision_free_settings(
                                int count);
 
 #include <ofono/emulator.h>
+void __ofono_emulator_set_indicator_forced(struct ofono_emulator *em,
+                                               const char *name, int value);
+
 #include <ofono/gnss.h>
 #include <ofono/cdma-sms.h>
 #include <ofono/cdma-netreg.h>