Nicer event handling upon startup

This commit is contained in:
Pierre Pronchery 2012-09-01 02:59:17 +00:00
parent 82ad7bce4e
commit 19492e41fc
3 changed files with 21 additions and 12 deletions

View File

@ -161,6 +161,7 @@ static int _sofia_start(ModemPlugin * modem, unsigned int retry)
char const * p;
char const * q;
nua_handle_t * handle;
ModemEvent mevent;
#ifdef DEBUG
fprintf(stderr, "DEBUG: %s()\n", __func__);
@ -212,11 +213,20 @@ static int _sofia_start(ModemPlugin * modem, unsigned int retry)
snprintf(us.us_str, sizeof(us.us_str), "%s%s@%s", "sip:", p, q);
nua_register(handle, SIPTAG_FROM_STR(us.us_str), TAG_END());
}
else
{
/* report that we are not registering */
memset(&mevent, 0, sizeof(mevent));
mevent.type = MODEM_EVENT_TYPE_REGISTRATION;
mevent.registration.mode = MODEM_REGISTRATION_MODE_DISABLED;
mevent.registration.status
= MODEM_REGISTRATION_STATUS_NOT_SEARCHING;
helper->event(helper->modem, &mevent);
}
/* set (and verify) parameters */
nua_set_params(sofia->nua, NUTAG_ENABLEMESSAGE(1),
NUTAG_ENABLEINVITE(1),
NUTAG_AUTOALERT(1),
NUTAG_AUTOANSWER(0),
TAG_END());
NUTAG_AUTOALERT(1), NUTAG_AUTOANSWER(0), TAG_END());
nua_get_params(sofia->nua, TAG_ANY(), TAG_END());
return 0;
}

View File

@ -941,9 +941,13 @@ int phone_event(Phone * phone, PhoneEvent * event)
MODEM_EVENT_TYPE_AUTHENTICATION);
break;
case PHONE_EVENT_TYPE_STARTING:
if(ret == 0 && (ret = modem_start(phone->modem)) == 0)
phone_event_type(phone,
PHONE_EVENT_TYPE_STARTED);
if(ret == 0)
{
ret = modem_start(phone->modem);
phone_event_type(phone, (ret == 0)
? PHONE_EVENT_TYPE_STARTED
: PHONE_EVENT_TYPE_STOPPED);
}
break;
case PHONE_EVENT_TYPE_STOPPING:
if(ret == 0 && phone->modem != NULL

View File

@ -265,13 +265,8 @@ static int _panel_event(Panel * panel, PhoneEvent * event)
_panel_set_signal_level(panel, 0.0 / 0.0);
_panel_set_status(panel, FALSE, FALSE);
break;
case PHONE_EVENT_TYPE_STARTED:
_panel_set_operator(panel, -1, "Connecting...");
_panel_set_signal_level(panel, 0.0 / 0.0);
_panel_set_status(panel, FALSE, FALSE);
break;
case PHONE_EVENT_TYPE_STARTING:
_panel_set_operator(panel, -1, "Starting...");
_panel_set_operator(panel, -1, "Connecting...");
_panel_set_signal_level(panel, 0.0 / 0.0);
_panel_set_status(panel, FALSE, FALSE);
break;