diff --git a/src/emulator.c b/src/emulator.c index 0f1ceca0..e7c7d413 100644 --- a/src/emulator.c +++ b/src/emulator.c @@ -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; + } +} diff --git a/src/ofono.h b/src/ofono.h index a42e153f..a6f1af16 100644 --- a/src/ofono.h +++ b/src/ofono.h @@ -494,6 +494,9 @@ void __ofono_gprs_provision_free_settings( int count); #include +void __ofono_emulator_set_indicator_forced(struct ofono_emulator *em, + const char *name, int value); + #include #include #include