Enabling call waiting fixes incoming calls on the Openmoko Freerunner
This commit is contained in:
parent
8a729628c8
commit
795134ce1c
@ -375,6 +375,14 @@ int gsm_set_call_presentation(GSM * gsm, int set)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* gsm_set_call_waiting */
|
||||||
|
int gsm_set_call_waiting(GSM * gsm, int unsollicited, int mode)
|
||||||
|
{
|
||||||
|
return gsm_modem_set_call_waiting(gsm->modem, (unsollicited != 0) ? TRUE
|
||||||
|
: FALSE, (mode != 0) ? TRUE : FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* gsm_set_extended_errors */
|
/* gsm_set_extended_errors */
|
||||||
int gsm_set_extended_errors(GSM * gsm, int extended)
|
int gsm_set_extended_errors(GSM * gsm, int extended)
|
||||||
{
|
{
|
||||||
|
@ -316,6 +316,7 @@ void gsm_set_callback(GSM * gsm, GSMCallback callback, gpointer data);
|
|||||||
|
|
||||||
unsigned int gsm_get_retry(GSM * gsm);
|
unsigned int gsm_get_retry(GSM * gsm);
|
||||||
int gsm_set_call_presentation(GSM * gsm, int set);
|
int gsm_set_call_presentation(GSM * gsm, int set);
|
||||||
|
int gsm_set_call_waiting(GSM * gsm, int unsollicited, int mode);
|
||||||
int gsm_set_extended_ring_reports(GSM * gsm, int extended);
|
int gsm_set_extended_ring_reports(GSM * gsm, int extended);
|
||||||
int gsm_set_functional(GSM * gsm, int functional);
|
int gsm_set_functional(GSM * gsm, int functional);
|
||||||
int gsm_set_line_presentation(GSM * gsm, int set);
|
int gsm_set_line_presentation(GSM * gsm, int set);
|
||||||
|
12
src/modem.c
12
src/modem.c
@ -563,6 +563,18 @@ int gsm_modem_set_call_presentation(GSMModem * gsmm, gboolean set)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* gsm_modem_set_call_waiting */
|
||||||
|
int gsm_modem_set_call_waiting(GSMModem * gsmm, gboolean unsollicited,
|
||||||
|
gboolean mode)
|
||||||
|
{
|
||||||
|
char cmd[] = "AT+CCWA=X,X";
|
||||||
|
|
||||||
|
cmd[8] = unsollicited ? '1' : '0';
|
||||||
|
cmd[10] = mode ? '1' : '0';
|
||||||
|
return (gsm_queue(gsmm->gsm, cmd) != NULL) ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* gsm_modem_set_echo */
|
/* gsm_modem_set_echo */
|
||||||
int gsm_modem_set_echo(GSMModem * gsmm, gboolean echo)
|
int gsm_modem_set_echo(GSMModem * gsmm, gboolean echo)
|
||||||
{
|
{
|
||||||
|
@ -75,6 +75,8 @@ int gsm_modem_send_message(GSMModem * gsmm, char const * number,
|
|||||||
char const * text);
|
char const * text);
|
||||||
|
|
||||||
int gsm_modem_set_call_presentation(GSMModem * gsmm, gboolean set);
|
int gsm_modem_set_call_presentation(GSMModem * gsmm, gboolean set);
|
||||||
|
int gsm_modem_set_call_waiting(GSMModem * gsmm, gboolean unsollicited,
|
||||||
|
gboolean mode);
|
||||||
int gsm_modem_set_echo(GSMModem * gsmm, gboolean echo);
|
int gsm_modem_set_echo(GSMModem * gsmm, gboolean echo);
|
||||||
int gsm_modem_set_extended_errors(GSMModem * gsmm, gboolean extended);
|
int gsm_modem_set_extended_errors(GSMModem * gsmm, gboolean extended);
|
||||||
int gsm_modem_set_extended_ring_reports(GSMModem * gsmm, gboolean extended);
|
int gsm_modem_set_extended_ring_reports(GSMModem * gsmm, gboolean extended);
|
||||||
|
@ -2179,6 +2179,7 @@ static int _phone_gsm_event(GSMEvent * event, gpointer data)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
gsm_set_call_presentation(phone->gsm, TRUE);
|
gsm_set_call_presentation(phone->gsm, TRUE);
|
||||||
|
gsm_set_call_waiting(phone->gsm, TRUE, TRUE);
|
||||||
gsm_set_extended_ring_reports(phone->gsm, TRUE);
|
gsm_set_extended_ring_reports(phone->gsm, TRUE);
|
||||||
gsm_set_operator_mode(phone->gsm,
|
gsm_set_operator_mode(phone->gsm,
|
||||||
GSM_OPERATOR_MODE_AUTOMATIC);
|
GSM_OPERATOR_MODE_AUTOMATIC);
|
||||||
|
Loading…
Reference in New Issue
Block a user