diff --git a/src/modem.c b/src/modem.c index 177fd03..586827a 100644 --- a/src/modem.c +++ b/src/modem.c @@ -143,13 +143,19 @@ int gsm_modem_call_contact(GSMModem * gsmm, GSMCallType calltype, /* gsm_modem_call_hangup */ +static void _modem_call_hangup_callback(GSM * gsm); + int gsm_modem_call_hangup(GSMModem * gsmm) { char const cmd[] = "ATH"; - /* XXX probably should query the call status after that */ return gsm_queue_full(gsmm->gsm, GSM_PRIORITY_HIGH, cmd, - GSM_ERROR_HANGUP_FAILED, NULL); + GSM_ERROR_HANGUP_FAILED, _modem_call_hangup_callback); +} + +static void _modem_call_hangup_callback(GSM * gsm) +{ + gsm_is_phone_active(gsm); } diff --git a/src/phone.c b/src/phone.c index 114b0f6..199a4ec 100644 --- a/src/phone.c +++ b/src/phone.c @@ -1676,8 +1676,10 @@ static int _gsm_event_phone_activity(Phone * phone, GSMPhoneActivity activity) phone_show_call(phone, TRUE, PHONE_CALL_ESTABLISHED); break; case GSM_PHONE_ACTIVITY_READY: + phone_show_call(phone, FALSE); + break; case GSM_PHONE_ACTIVITY_UNKNOWN: - break; /* nothing to do */ + break; /* what should we do? */ case GSM_PHONE_ACTIVITY_RINGING: phone_show_call(phone, TRUE, PHONE_CALL_OUTGOING, NULL, NULL);