Hello,
Please find the changes in order to correct call forwarding states.
Changes from v4:
- Check the CFU in order to find whether querying is needed.
- End querying once CFU is active.
- Cache TYPE_ALL queries on supplementary services path.
Regards,
Oleg
Oleg Zhurakivskyy (5):
call-forwarding: Streamline number assignment
call-forwarding: Don't query cfs if CFU is active
call-forwarding: End querying once CFU is active
call-forwarding: Cache ss TYPE_ALL queries
TODO: Remove completed call forwarding state task
TODO | 17 -----------------
src/call-forwarding.c | 14 ++++++++------
2 files changed, 8 insertions(+), 23 deletions(-)
--
1.7.5.4
Show replies by date
---
src/call-forwarding.c | 5 +----
1 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/src/call-forwarding.c b/src/call-forwarding.c
index 5acbd67..7b0a10e 100644
--- a/src/call-forwarding.c
+++ b/src/call-forwarding.c
@@ -405,10 +405,7 @@ static void set_new_cond_list(struct ofono_call_forwarding *cf,
if (lc == NULL)
continue;
- if (new_cfu)
- number = "";
- else
- number = phone_number_to_string(
+ number = new_cfu ? "" : phone_number_to_string(
&lc->phone_number);
ofono_dbus_signal_property_changed(conn, path,
--
1.7.5.4
---
src/call-forwarding.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/src/call-forwarding.c b/src/call-forwarding.c
index 7b0a10e..343f958 100644
--- a/src/call-forwarding.c
+++ b/src/call-forwarding.c
@@ -565,7 +565,8 @@ static DBusMessage *cf_get_properties(DBusConnection *conn,
DBusMessage *msg,
struct ofono_modem *modem = __ofono_atom_get_modem(cf->atom);
if ((cf->flags & CALL_FORWARDING_FLAG_CACHED) ||
- ofono_modem_get_online(modem) == FALSE)
+ ofono_modem_get_online(modem) == FALSE ||
+ is_cfu_enabled(cf))
return cf_get_properties_reply(msg, cf);
if (cf->driver->query == NULL)
--
1.7.5.4
---
src/call-forwarding.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/src/call-forwarding.c b/src/call-forwarding.c
index 343f958..3df009b 100644
--- a/src/call-forwarding.c
+++ b/src/call-forwarding.c
@@ -542,7 +542,9 @@ static void get_query_cf_callback(const struct ofono_error *error, int
total,
cf->flags |= CALL_FORWARDING_FLAG_CACHED;
}
- if (cf->query_next == CALL_FORWARDING_TYPE_NOT_REACHABLE) {
+ if (cf->query_next == CALL_FORWARDING_TYPE_NOT_REACHABLE ||
+ (cf->query_next == CALL_FORWARDING_TYPE_UNCONDITIONAL &&
+ is_cfu_enabled(cf))) {
__ofono_dbus_pending_reply(&cf->pending,
cf_get_properties_reply(cf->pending, cf));
return;
--
1.7.5.4
---
src/call-forwarding.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/src/call-forwarding.c b/src/call-forwarding.c
index 3df009b..8cad35e 100644
--- a/src/call-forwarding.c
+++ b/src/call-forwarding.c
@@ -1174,6 +1174,8 @@ static gboolean cf_ss_control(int type, const char *sc,
switch (cf->ss_req->cf_type) {
case CALL_FORWARDING_TYPE_ALL:
+ if (cf->ss_req->ss_type == SS_CONTROL_TYPE_QUERY)
+ cf->flags |= CALL_FORWARDING_FLAG_CACHED;
cf->query_next = CALL_FORWARDING_TYPE_UNCONDITIONAL;
cf->query_end = CALL_FORWARDING_TYPE_NOT_REACHABLE;
break;
--
1.7.5.4
---
TODO | 17 -----------------
1 files changed, 0 insertions(+), 17 deletions(-)
diff --git a/TODO b/TODO
index 1fef651..9948117 100644
--- a/TODO
+++ b/TODO
@@ -213,23 +213,6 @@ Supplementary Services
Priority: Low
Complexity: C8
-- Call forwarding state handling change
-
- At the moment call forwarding states are not always correct. Any active
- conditional call forwarding should become quiescent while unconditional call
- forwarding is activate. If call forwarding unconditional is subsequently
- deactivated, all the quiescent forwardings should become operative again.
- I.e. No conditional call forwarding string should be returned while
- unconditional call forwarding is active even if they exist.
-
- If there is an successful attempt to activate/deactivate conditional call
- forwarding while unconditional call forwarding is active the conditional cache
- flag should cleared.
-
- Priority: High
- Complexity: C1
- Owner: Nicolas Bertrand <nicolas.bertrand(a)linux.intel.com>
-
Voicecall
=========
--
1.7.5.4