Even more feedback on registration
This commit is contained in:
parent
907f7859df
commit
b89da7113b
@ -2174,6 +2174,9 @@ static gboolean _reset_settle(gpointer data)
|
|||||||
ModemPlugin * modem = data;
|
ModemPlugin * modem = data;
|
||||||
HayesCommand * command;
|
HayesCommand * command;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "DEBUG: %s()\n", __func__);
|
||||||
|
#endif
|
||||||
if((command = _hayes_command_new("ATZE0V1")) == NULL)
|
if((command = _hayes_command_new("ATZE0V1")) == NULL)
|
||||||
{
|
{
|
||||||
modem->helper->error(modem->helper->modem, error_get(), 1);
|
modem->helper->error(modem->helper->modem, error_get(), 1);
|
||||||
@ -2199,19 +2202,15 @@ static HayesCommandStatus _on_reset_callback(HayesCommand * command,
|
|||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf(stderr, "DEBUG: %s(%u)\n", __func__, status);
|
fprintf(stderr, "DEBUG: %s(%u)\n", __func__, status);
|
||||||
#endif
|
#endif
|
||||||
if(hayes->timeout != 0)
|
status = _on_request_generic(command, status, priv);
|
||||||
g_source_remove(hayes->timeout);
|
|
||||||
hayes->timeout = 0;
|
|
||||||
switch(status)
|
switch(status)
|
||||||
{
|
{
|
||||||
case HCS_PENDING: /* ignore */
|
case HCS_PENDING: /* ignore */
|
||||||
case HCS_QUEUED:
|
case HCS_QUEUED:
|
||||||
return status;
|
break;
|
||||||
case HCS_ACTIVE:
|
case HCS_ACTIVE: /* give it another chance */
|
||||||
/* a reply was obtained */
|
break;
|
||||||
if((status = _on_request_generic(command, status, priv))
|
case HCS_SUCCESS: /* we can initialize */
|
||||||
!= HCS_SUCCESS)
|
|
||||||
return status;
|
|
||||||
_hayes_set_mode(modem, HAYES_MODE_COMMAND);
|
_hayes_set_mode(modem, HAYES_MODE_COMMAND);
|
||||||
_hayes_request_type(modem,
|
_hayes_request_type(modem,
|
||||||
HAYES_REQUEST_LOCAL_ECHO_DISABLE);
|
HAYES_REQUEST_LOCAL_ECHO_DISABLE);
|
||||||
@ -2221,16 +2220,12 @@ static HayesCommandStatus _on_reset_callback(HayesCommand * command,
|
|||||||
_hayes_request_type(modem,
|
_hayes_request_type(modem,
|
||||||
HAYES_REQUEST_EXTENDED_ERRORS);
|
HAYES_REQUEST_EXTENDED_ERRORS);
|
||||||
_hayes_request_type(modem, HAYES_REQUEST_FUNCTIONAL);
|
_hayes_request_type(modem, HAYES_REQUEST_FUNCTIONAL);
|
||||||
return HCS_SUCCESS;
|
|
||||||
case HCS_TIMEOUT:
|
|
||||||
case HCS_ERROR:
|
|
||||||
break;
|
break;
|
||||||
case HCS_SUCCESS: /* should not happen */
|
case HCS_TIMEOUT: /* try again */
|
||||||
status = HCS_ERROR;
|
case HCS_ERROR:
|
||||||
|
_reset_settle(modem);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* try again */
|
|
||||||
_reset_settle(modem);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2794,13 +2789,29 @@ static HayesCommandStatus _on_request_registration_automatic(
|
|||||||
Hayes * hayes = modem->priv;
|
Hayes * hayes = modem->priv;
|
||||||
ModemEvent * event = &hayes->events[MODEM_EVENT_TYPE_REGISTRATION];
|
ModemEvent * event = &hayes->events[MODEM_EVENT_TYPE_REGISTRATION];
|
||||||
|
|
||||||
if((status = _on_request_generic(command, status, priv)) != HCS_SUCCESS)
|
status = _on_request_generic(command, status, priv);
|
||||||
return status;
|
switch(status)
|
||||||
event->registration.mode = MODEM_REGISTRATION_MODE_AUTOMATIC;
|
{
|
||||||
event->registration.status = MODEM_REGISTRATION_STATUS_SEARCHING;
|
case HCS_ACTIVE:
|
||||||
modem->helper->event(modem->helper->modem, event);
|
event->registration.mode
|
||||||
/* force a registration status */
|
= MODEM_REGISTRATION_MODE_AUTOMATIC;
|
||||||
_hayes_request_type(modem, HAYES_REQUEST_REGISTRATION);
|
event->registration.status
|
||||||
|
= MODEM_REGISTRATION_STATUS_SEARCHING;
|
||||||
|
modem->helper->event(modem->helper->modem, event);
|
||||||
|
break;
|
||||||
|
case HCS_ERROR:
|
||||||
|
case HCS_TIMEOUT:
|
||||||
|
event->registration.mode
|
||||||
|
= MODEM_REGISTRATION_MODE_UNKNOWN;
|
||||||
|
event->registration.status
|
||||||
|
= MODEM_REGISTRATION_STATUS_UNKNOWN;
|
||||||
|
modem->helper->event(modem->helper->modem, event);
|
||||||
|
break;
|
||||||
|
case HCS_SUCCESS:
|
||||||
|
/* force a registration status */
|
||||||
|
_hayes_request_type(modem, HAYES_REQUEST_REGISTRATION);
|
||||||
|
break;
|
||||||
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3947,7 +3958,6 @@ static void _on_trigger_cusd(ModemPlugin * modem, char const * answer)
|
|||||||
/* on_trigger_ext_error */
|
/* on_trigger_ext_error */
|
||||||
static void _on_trigger_ext_error(ModemPlugin * modem, char const * answer)
|
static void _on_trigger_ext_error(ModemPlugin * modem, char const * answer)
|
||||||
{
|
{
|
||||||
ModemPluginHelper * helper = modem->helper;
|
|
||||||
Hayes * hayes = modem->priv;
|
Hayes * hayes = modem->priv;
|
||||||
/* XXX ugly */
|
/* XXX ugly */
|
||||||
HayesCommand * command = (hayes->queue != NULL) ? hayes->queue->data
|
HayesCommand * command = (hayes->queue != NULL) ? hayes->queue->data
|
||||||
|
Loading…
Reference in New Issue
Block a user