aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mm-base-call.c6
-rw-r--r--src/mm-base-call.h4
-rw-r--r--src/mm-broadband-modem.c6
-rw-r--r--src/mm-iface-modem-voice.c30
-rw-r--r--src/mm-iface-modem-voice.h4
5 files changed, 26 insertions, 24 deletions
diff --git a/src/mm-base-call.c b/src/mm-base-call.c
index b3c6aeb5..ae84afa6 100644
--- a/src/mm-base-call.c
+++ b/src/mm-base-call.c
@@ -932,10 +932,14 @@ call_send_dtmf (MMBaseCall *self,
/*****************************************************************************/
MMBaseCall *
-mm_base_call_new (MMBaseModem *modem)
+mm_base_call_new (MMBaseModem *modem,
+ MMCallDirection direction,
+ const gchar *number)
{
return MM_BASE_CALL (g_object_new (MM_TYPE_BASE_CALL,
MM_BASE_CALL_MODEM, modem,
+ "direction", direction,
+ "number", number,
NULL));
}
diff --git a/src/mm-base-call.h b/src/mm-base-call.h
index 9ae021ad..0ef3ffcf 100644
--- a/src/mm-base-call.h
+++ b/src/mm-base-call.h
@@ -92,7 +92,9 @@ struct _MMBaseCallClass {
GType mm_base_call_get_type (void);
/* This one can be overriden by plugins */
-MMBaseCall *mm_base_call_new (MMBaseModem *modem);
+MMBaseCall *mm_base_call_new (MMBaseModem *modem,
+ MMCallDirection direction,
+ const gchar *number);
void mm_base_call_export (MMBaseCall *self);
void mm_base_call_unexport (MMBaseCall *self);
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c
index 93a3a3e0..ddbb8205 100644
--- a/src/mm-broadband-modem.c
+++ b/src/mm-broadband-modem.c
@@ -7115,9 +7115,11 @@ modem_voice_enable_unsolicited_events (MMIfaceModemVoice *self,
/* Create CALL (Voice interface) */
static MMBaseCall *
-modem_voice_create_call (MMIfaceModemVoice *self)
+modem_voice_create_call (MMIfaceModemVoice *self,
+ MMCallDirection direction,
+ const gchar *number)
{
- return mm_base_call_new (MM_BASE_MODEM (self));
+ return mm_base_call_new (MM_BASE_MODEM (self), direction, number);
}
/*****************************************************************************/
diff --git a/src/mm-iface-modem-voice.c b/src/mm-iface-modem-voice.c
index 9c15323d..286e96d9 100644
--- a/src/mm-iface-modem-voice.c
+++ b/src/mm-iface-modem-voice.c
@@ -39,19 +39,19 @@ mm_iface_modem_voice_bind_simple_status (MMIfaceModemVoice *self,
/*****************************************************************************/
static MMBaseCall *
-create_call (MMIfaceModemVoice *self)
+create_incoming_call (MMIfaceModemVoice *self,
+ const gchar *number)
{
g_assert (MM_IFACE_MODEM_VOICE_GET_INTERFACE (self)->create_call != NULL);
- return MM_IFACE_MODEM_VOICE_GET_INTERFACE (self)->create_call (self);
+ return MM_IFACE_MODEM_VOICE_GET_INTERFACE (self)->create_call (self, MM_CALL_DIRECTION_INCOMING, number);
}
static MMBaseCall *
-create_call_from_properties (MMIfaceModemVoice *self,
- MMCallProperties *properties,
- GError **error)
+create_outgoing_call_from_properties (MMIfaceModemVoice *self,
+ MMCallProperties *properties,
+ GError **error)
{
- MMBaseCall *call;
const gchar *number;
/* Don't create CALL from properties if either number is missing */
@@ -66,14 +66,7 @@ create_call_from_properties (MMIfaceModemVoice *self,
/* Create a call object as defined by the interface */
g_assert (MM_IFACE_MODEM_VOICE_GET_INTERFACE (self)->create_call != NULL);
- call = MM_IFACE_MODEM_VOICE_GET_INTERFACE (self)->create_call (self);
- g_object_set (call,
- "state", mm_call_properties_get_state (properties),
- "state-reason", mm_call_properties_get_state_reason (properties),
- "direction", mm_call_properties_get_direction (properties),
- "number", number,
- NULL);
- return call;
+ return MM_IFACE_MODEM_VOICE_GET_INTERFACE (self)->create_call (self, MM_CALL_DIRECTION_OUTGOING, number);
}
/*****************************************************************************/
@@ -103,11 +96,10 @@ mm_iface_modem_voice_incoming_call (MMIfaceModemVoice *self)
}
mm_dbg ("Creating new incoming call...");
- call = create_call (self);
+ call = create_incoming_call (self, NULL);
g_object_set (call,
- "state", MM_CALL_STATE_RINGING_IN,
- "state-reason", MM_CALL_STATE_REASON_INCOMING_NEW,
- "direction", MM_CALL_DIRECTION_INCOMING,
+ "state", MM_CALL_STATE_RINGING_IN,
+ "state-reason", MM_CALL_STATE_REASON_INCOMING_NEW,
NULL);
/* Start its validity timeout */
@@ -302,7 +294,7 @@ handle_create_auth_ready (MMBaseModem *self,
return;
}
- call = create_call_from_properties (MM_IFACE_MODEM_VOICE (self), properties, &error);
+ call = create_outgoing_call_from_properties (MM_IFACE_MODEM_VOICE (self), properties, &error);
if (!call) {
g_object_unref (properties);
g_dbus_method_invocation_take_error (ctx->invocation, error);
diff --git a/src/mm-iface-modem-voice.h b/src/mm-iface-modem-voice.h
index 1c16a42b..df3d399f 100644
--- a/src/mm-iface-modem-voice.h
+++ b/src/mm-iface-modem-voice.h
@@ -78,7 +78,9 @@ struct _MMIfaceModemVoice {
GError **error);
/* Create CALL objects */
- MMBaseCall * (* create_call) (MMIfaceModemVoice *self);
+ MMBaseCall * (* create_call) (MMIfaceModemVoice *self,
+ MMCallDirection direction,
+ const gchar *number);
};
GType mm_iface_modem_voice_get_type (void);