base-call: implement Deflect() with +CTFR
This commit is contained in:
@@ -1129,6 +1129,53 @@ call_accept (MMBaseCall *self,
|
|||||||
task);
|
task);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/* Deflect the call */
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
call_deflect_finish (MMBaseCall *self,
|
||||||
|
GAsyncResult *res,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
return g_task_propagate_boolean (G_TASK (res), error);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
call_deflect_ready (MMBaseModem *modem,
|
||||||
|
GAsyncResult *res,
|
||||||
|
GTask *task)
|
||||||
|
{
|
||||||
|
GError *error = NULL;
|
||||||
|
|
||||||
|
mm_base_modem_at_command_finish (modem, res, &error);
|
||||||
|
if (error)
|
||||||
|
g_task_return_error (task, error);
|
||||||
|
else
|
||||||
|
g_task_return_boolean (task, TRUE);
|
||||||
|
g_object_unref (task);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
call_deflect (MMBaseCall *self,
|
||||||
|
const gchar *number,
|
||||||
|
GAsyncReadyCallback callback,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
GTask *task;
|
||||||
|
gchar *cmd;
|
||||||
|
|
||||||
|
task = g_task_new (self, NULL, callback, user_data);
|
||||||
|
|
||||||
|
cmd = g_strdup_printf ("+CTFR=%s", number);
|
||||||
|
mm_base_modem_at_command (self->priv->modem,
|
||||||
|
cmd,
|
||||||
|
20,
|
||||||
|
FALSE,
|
||||||
|
(GAsyncReadyCallback)call_deflect_ready,
|
||||||
|
task);
|
||||||
|
g_free (cmd);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* Hangup the call */
|
/* Hangup the call */
|
||||||
|
|
||||||
@@ -1442,6 +1489,8 @@ mm_base_call_class_init (MMBaseCallClass *klass)
|
|||||||
klass->start_finish = call_start_finish;
|
klass->start_finish = call_start_finish;
|
||||||
klass->accept = call_accept;
|
klass->accept = call_accept;
|
||||||
klass->accept_finish = call_accept_finish;
|
klass->accept_finish = call_accept_finish;
|
||||||
|
klass->deflect = call_deflect;
|
||||||
|
klass->deflect_finish = call_deflect_finish;
|
||||||
klass->hangup = call_hangup;
|
klass->hangup = call_hangup;
|
||||||
klass->hangup_finish = call_hangup_finish;
|
klass->hangup_finish = call_hangup_finish;
|
||||||
klass->send_dtmf = call_send_dtmf;
|
klass->send_dtmf = call_send_dtmf;
|
||||||
|
Reference in New Issue
Block a user