diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2018-06-15 00:04:15 +0200 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2018-10-16 17:09:21 +0000 |
commit | fc0feee65481f7edf1118e8dd74a5352901f677f (patch) | |
tree | 6da08a5018f26f725f852240c64a6aa7aedd8640 /src | |
parent | f71e120fb7e120c615e83a3803f20a0bd69b659e (diff) |
huawei,call: handle in-call URCs in the call object itself
Instead of handling the URCs in the modem object and using the
MMIfaceModem as a bridge to report the status read from the URC to a
call obtained from the MMCallList... just handle the URCs in the call
object itself.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-call-list.c | 93 | ||||
-rw-r--r-- | src/mm-call-list.h | 7 | ||||
-rw-r--r-- | src/mm-iface-modem-voice.c | 93 | ||||
-rw-r--r-- | src/mm-iface-modem-voice.h | 5 |
4 files changed, 1 insertions, 197 deletions
diff --git a/src/mm-call-list.c b/src/mm-call-list.c index 91ccc8d0..81100640 100644 --- a/src/mm-call-list.c +++ b/src/mm-call-list.c @@ -109,99 +109,6 @@ mm_call_list_get_first_ringing_in_call (MMCallList *self) return NULL; } -MMBaseCall * -mm_call_list_get_first_ringing_out_call (MMCallList *self) -{ - MMBaseCall *call = NULL; - GList *l; - - for (l = self->priv->list; l; l = g_list_next (l)) { - MMCallState state; - - g_object_get (MM_BASE_CALL (l->data), - "state", &state, - NULL); - - if (state == MM_CALL_STATE_RINGING_IN || - state == MM_CALL_STATE_RINGING_OUT) { - call = MM_BASE_CALL (l->data); - break; - } - } - - return call; -} - -MMBaseCall * -mm_call_list_get_first_outgoing_dialing_call (MMCallList *self) -{ - MMBaseCall *call = NULL; - GList *l; - - for (l = self->priv->list; l; l = g_list_next (l)) { - MMCallState state; - MMCallDirection direction; - - g_object_get (MM_BASE_CALL (l->data), - "state", &state, - "direction", &direction, - NULL); - - if (direction == MM_CALL_DIRECTION_OUTGOING && - state == MM_CALL_STATE_DIALING) { - call = MM_BASE_CALL (l->data); - break; - } - } - - return call; -} - -MMBaseCall * -mm_call_list_get_first_non_terminated_call (MMCallList *self) -{ - MMBaseCall *call = NULL; - GList *l; - - for (l = self->priv->list; l; l = g_list_next (l)) { - MMCallState state; - - g_object_get (MM_BASE_CALL (l->data), - "state", &state, - NULL); - - if (state != MM_CALL_STATE_TERMINATED) { - call = MM_BASE_CALL (l->data); - break; - } - } - - return call; -} - -gboolean -mm_call_list_send_dtmf_to_active_calls (MMCallList *self, - const gchar *dtmf) -{ - gboolean signaled = FALSE; - GList *l; - - for (l = self->priv->list; l; l = g_list_next (l)) { - MMCallState state; - - g_object_get (MM_BASE_CALL (l->data), - "state", &state, - NULL); - - if (state == MM_CALL_STATE_ACTIVE) { - signaled = TRUE; - mm_base_call_received_dtmf (MM_BASE_CALL (l->data), dtmf); - } - } - - return signaled; -} - /*****************************************************************************/ static guint diff --git a/src/mm-call-list.h b/src/mm-call-list.h index 53102d06..0cf75238 100644 --- a/src/mm-call-list.h +++ b/src/mm-call-list.h @@ -68,11 +68,6 @@ gboolean mm_call_list_delete_call (MMCallList *self, const gchar *call_path, GError **error); -MMBaseCall *mm_call_list_get_first_ringing_in_call (MMCallList *self); -MMBaseCall *mm_call_list_get_first_ringing_out_call (MMCallList *self); -MMBaseCall *mm_call_list_get_first_outgoing_dialing_call (MMCallList *self); -MMBaseCall *mm_call_list_get_first_non_terminated_call (MMCallList *self); -gboolean mm_call_list_send_dtmf_to_active_calls (MMCallList *self, - const gchar *dtmf); +MMBaseCall *mm_call_list_get_first_ringing_in_call (MMCallList *self); #endif /* MM_CALL_LIST_H */ diff --git a/src/mm-iface-modem-voice.c b/src/mm-iface-modem-voice.c index 9cab1cdd..de7ead98 100644 --- a/src/mm-iface-modem-voice.c +++ b/src/mm-iface-modem-voice.c @@ -123,99 +123,6 @@ mm_iface_modem_voice_update_incoming_call_number (MMIfaceModemVoice *self, return updated; } -gboolean -mm_iface_modem_voice_call_dialing_to_ringing (MMIfaceModemVoice *self) -{ - gboolean updated = FALSE; - MMBaseCall *call = NULL; - MMCallList *list = NULL; - - g_object_get (MM_BASE_MODEM (self), - MM_IFACE_MODEM_VOICE_CALL_LIST, &list, - NULL); - - if (list) { - call = mm_call_list_get_first_outgoing_dialing_call (list); - - if (call) { - mm_base_call_change_state (call, MM_CALL_STATE_RINGING_OUT, MM_CALL_STATE_REASON_OUTGOING_STARTED); - updated = TRUE; - } else { - mm_dbg ("Outgoing dialing call does not exist"); - } - } - - return updated; -} - -gboolean -mm_iface_modem_voice_call_ringing_to_active (MMIfaceModemVoice *self) -{ - gboolean updated = FALSE; - MMBaseCall *call = NULL; - MMCallList *list = NULL; - - g_object_get (MM_BASE_MODEM (self), - MM_IFACE_MODEM_VOICE_CALL_LIST, &list, - NULL); - - if (list) { - call = mm_call_list_get_first_ringing_out_call (list); - - if (call) { - mm_base_call_change_state (call, MM_CALL_STATE_ACTIVE, MM_CALL_STATE_REASON_ACCEPTED); - updated = TRUE; - } else { - mm_dbg ("Ringing call does not exist"); - } - } - - return updated; -} - -gboolean -mm_iface_modem_voice_network_hangup (MMIfaceModemVoice *self) -{ - gboolean updated = FALSE; - MMBaseCall *call = NULL; - MMCallList *list = NULL; - - g_object_get (MM_BASE_MODEM (self), - MM_IFACE_MODEM_VOICE_CALL_LIST, &list, - NULL); - - if (list) { - call = mm_call_list_get_first_non_terminated_call (list); - - if (call) { - mm_base_call_change_state (call, MM_CALL_STATE_TERMINATED, MM_CALL_STATE_REASON_TERMINATED); - updated = TRUE; - } else { - mm_dbg ("No call to hangup"); - } - } - - return updated; -} - -gboolean -mm_iface_modem_voice_received_dtmf (MMIfaceModemVoice *self, - gchar *dtmf) -{ - gboolean updated = FALSE; - MMCallList *list = NULL; - - g_object_get (MM_BASE_MODEM (self), - MM_IFACE_MODEM_VOICE_CALL_LIST, &list, - NULL); - - if (list) { - updated = mm_call_list_send_dtmf_to_active_calls (list, dtmf); - } - - return updated; -} - /*****************************************************************************/ typedef struct { diff --git a/src/mm-iface-modem-voice.h b/src/mm-iface-modem-voice.h index 229ebb5d..21278ff2 100644 --- a/src/mm-iface-modem-voice.h +++ b/src/mm-iface-modem-voice.h @@ -123,11 +123,6 @@ gboolean mm_iface_modem_voice_update_incoming_call_number (MMIfaceModemVoi gchar *number, guint type, guint validity); -gboolean mm_iface_modem_voice_call_dialing_to_ringing (MMIfaceModemVoice *self); -gboolean mm_iface_modem_voice_call_ringing_to_active (MMIfaceModemVoice *self); -gboolean mm_iface_modem_voice_network_hangup (MMIfaceModemVoice *self); -gboolean mm_iface_modem_voice_received_dtmf (MMIfaceModemVoice *self, - gchar *dtmf); /* Look for a new valid multipart reference */ guint8 mm_iface_modem_voice_get_local_multipart_reference (MMIfaceModemVoice *self, |