From e003ea830e2f493c4958a0d4c7d9693431aa9cf3 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sat, 8 May 2010 02:00:07 +0000 Subject: [PATCH] Use the correct error code when parsing +CME and +CMS errors --- src/gsm.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/gsm.c b/src/gsm.c index baf28a7..8361c51 100644 --- a/src/gsm.c +++ b/src/gsm.c @@ -962,6 +962,8 @@ static int _gsm_trigger_cme_error(GSM * gsm, char const * result, int code; char * p; size_t i; + GSMError error = GSM_ERROR_UNKNOWN; + GSMCommand * gsmc; #ifdef DEBUG fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, result); @@ -975,9 +977,10 @@ static int _gsm_trigger_cme_error(GSM * gsm, char const * result, if(_gsm_cme_errors[i].code == code) break; if(_gsm_cme_errors[i].error == NULL) - return 1; - /* FIXME implement errors */ - return gsm_event(gsm, GSM_EVENT_TYPE_ERROR, GSM_ERROR_UNKNOWN, + return 1; /* XXX report an error anyway? */ + if(gsm->queue != NULL && (gsmc = gsm->queue->data) != NULL) + error = gsm_command_get_error(gsmc); + return gsm_event(gsm, GSM_EVENT_TYPE_ERROR, error, _(_gsm_cme_errors[i].error)); } @@ -988,6 +991,8 @@ static int _gsm_trigger_cms_error(GSM * gsm, char const * result) int code; char * p; size_t i; + GSMError error = GSM_ERROR_UNKNOWN; + GSMCommand * gsmc; #ifdef DEBUG fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, result); @@ -999,9 +1004,10 @@ static int _gsm_trigger_cms_error(GSM * gsm, char const * result) if(_gsm_cms_errors[i].code == code) break; if(_gsm_cms_errors[i].error == NULL) - return 1; - /* FIXME implement errors */ - return gsm_event(gsm, GSM_EVENT_TYPE_ERROR, GSM_ERROR_UNKNOWN, + return 1; /* XXX report an error anyway? */ + if(gsm->queue != NULL && (gsmc = gsm->queue->data) != NULL) + error = gsm_command_get_error(gsmc); + return gsm_event(gsm, GSM_EVENT_TYPE_ERROR, error, _(_gsm_cms_errors[i].error)); }