... when a USSD notification is received. Some networks
send 0 (no further user action required) after the response
timeout expires. That should result in the user input form
getting removed from the ME screen.
---
 src/ussd.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/ussd.c b/src/ussd.c
index 99fa753..84f64c6 100644
--- a/src/ussd.c
+++ b/src/ussd.c
@@ -512,6 +512,20 @@ void ofono_ussd_notify(struct ofono_ussd *ussd, int 
status, int dcs,
 
                ussd_change_state(ussd, new_state);
                goto free;
+       } else if (ussd->state == USSD_STATE_USER_ACTION &&
+                               status != OFONO_USSD_STATUS_ACTION_REQUIRED) {
+               ussd_change_state(ussd, USSD_STATE_IDLE);
+
+               if (status == OFONO_USSD_STATUS_NOTIFY && str && str[0]) {
+                       const char *path = __ofono_atom_get_path(ussd->atom);
+
+                       g_dbus_emit_signal(conn, path,
+                               OFONO_SUPPLEMENTARY_SERVICES_INTERFACE,
+                               "NotificationReceived", DBUS_TYPE_STRING,
+                               &str, DBUS_TYPE_INVALID);
+               }
+
+               goto free;
        } else {
                ofono_error("Received an unsolicited USSD but can't handle.");
                DBG("USSD is: status: %d, %s", status, str);
-- 
1.9.1

_______________________________________________
ofono mailing list
ofono@ofono.org
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to