All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/1] Add telephony_str_to_error to decode error code
@ 2010-05-12  8:12 Zhenhua Zhang
  2010-05-12  8:12 ` [PATCH v2 1/1] " Zhenhua Zhang
  0 siblings, 1 reply; 4+ messages in thread
From: Zhenhua Zhang @ 2010-05-12  8:12 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 123 bytes --]

Please ignore my previous patch. It's the update version to fix a bug in array size.

Thanks Gu Yang to point out that.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v2 1/1] Add telephony_str_to_error to decode error code
  2010-05-12  8:12 [PATCH v2 0/1] Add telephony_str_to_error to decode error code Zhenhua Zhang
@ 2010-05-12  8:12 ` Zhenhua Zhang
  2010-05-12 19:02   ` Denis Kenzior
  0 siblings, 1 reply; 4+ messages in thread
From: Zhenhua Zhang @ 2010-05-12  8:12 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 2705 bytes --]

Use to decode a final error string to error code.
---
 drivers/atmodem/atutil.c |    7 +++----
 src/common.c             |   41 +++++++++++++++++++++++++++++++++++++++++
 src/common.h             |    1 +
 3 files changed, 45 insertions(+), 4 deletions(-)

diff --git a/drivers/atmodem/atutil.c b/drivers/atmodem/atutil.c
index 5a409b8..5b0f3fd 100644
--- a/drivers/atmodem/atutil.c
+++ b/drivers/atmodem/atutil.c
@@ -34,16 +34,15 @@
 
 #include "atutil.h"
 #include "vendor.h"
+#include "common.h"
 
 void decode_at_error(struct ofono_error *error, const char *final)
 {
 	if (!strcmp(final, "OK")) {
 		error->type = OFONO_ERROR_TYPE_NO_ERROR;
 		error->error = 0;
-	} else {
-		error->type = OFONO_ERROR_TYPE_FAILURE;
-		error->error = 0;
-	}
+	} else
+		telephony_str_to_error(final, error);
 }
 
 gint at_util_call_compare_by_status(gconstpointer a, gconstpointer b)
diff --git a/src/common.c b/src/common.c
index 4eaff5e..b693dd9 100644
--- a/src/common.c
+++ b/src/common.c
@@ -290,6 +290,47 @@ const char *telephony_error_to_str(const struct ofono_error *error)
 	return "Unknown error";
 }
 
+static gboolean search_entry(const char *str, struct error_entry *e,
+						int maxentries,
+						enum ofono_error_type type,
+						struct ofono_error *error)
+{
+	int i;
+
+	for (i = 0; i < maxentries; i++) {
+		if (!strcmp(e[i].str, str)) {
+			error->type = type;
+			error->error = e[i].error;
+			return TRUE;
+		}
+	}
+
+	return FALSE;
+}
+
+void telephony_str_to_error(const char *str, struct ofono_error *error)
+{
+	int maxentries;
+
+	maxentries = sizeof(cme_errors) / sizeof(struct error_entry);
+	if (search_entry(str, cme_errors, maxentries, OFONO_ERROR_TYPE_CME,
+					error))
+		return;
+
+	maxentries = sizeof(cms_errors) / sizeof(struct error_entry);
+	if (search_entry(str, cms_errors, maxentries, OFONO_ERROR_TYPE_CMS,
+					error))
+		return;
+
+	maxentries = sizeof(ceer_errors) / sizeof(struct error_entry);
+	if (search_entry(str, ceer_errors, maxentries, OFONO_ERROR_TYPE_CEER,
+					error))
+		return;
+
+	error->type = OFONO_ERROR_TYPE_FAILURE;
+	error->error = 0;
+}
+
 int mmi_service_code_to_bearer_class(int code)
 {
 	int cls = 0;
diff --git a/src/common.h b/src/common.h
index c43e46d..ec917d1 100644
--- a/src/common.h
+++ b/src/common.h
@@ -123,6 +123,7 @@ enum pin_type {
 };
 
 const char *telephony_error_to_str(const struct ofono_error *error);
+void telephony_str_to_error(const char *str, struct ofono_error *error);
 
 gboolean valid_phone_number_format(const char *number);
 const char *phone_number_to_string(const struct ofono_phone_number *ph);
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 1/1] Add telephony_str_to_error to decode error code
  2010-05-12  8:12 ` [PATCH v2 1/1] " Zhenhua Zhang
@ 2010-05-12 19:02   ` Denis Kenzior
  2010-05-13  2:09     ` Zhang, Zhenhua
  0 siblings, 1 reply; 4+ messages in thread
From: Denis Kenzior @ 2010-05-12 19:02 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 802 bytes --]

Hi Zhenhua,

> +static gboolean search_entry(const char *str, struct error_entry *e,
> +						int maxentries,
> +						enum ofono_error_type type,
> +						struct ofono_error *error)
> +{
> +	int i;
> +
> +	for (i = 0; i < maxentries; i++) {
> +		if (!strcmp(e[i].str, str)) {
> +			error->type = type;
> +			error->error = e[i].error;
> +			return TRUE;
> +		}
> +	}
> +
> +	return FALSE;
> +}

This doesn't really make sense, the errors from the modem usually come in the 
form of +CMS ERROR: 123 assuming we enabled +CMEE=1.  If we enabled +CMEE=2 
then the numeric error code gets converted to a string.  The former is 
preferable as the string might be different from what oFono has.  What you're 
matching here will always result in an unknown error.

Regards,
-Denis

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [PATCH v2 1/1] Add telephony_str_to_error to decode error code
  2010-05-12 19:02   ` Denis Kenzior
@ 2010-05-13  2:09     ` Zhang, Zhenhua
  0 siblings, 0 replies; 4+ messages in thread
From: Zhang, Zhenhua @ 2010-05-13  2:09 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 943 bytes --]

Hi Denis,

Denis Kenzior wrote:
> Hi Zhenhua,
> 
>> +static gboolean search_entry(const char *str, struct error_entry
>> *e, +						int maxentries, +						enum
> ofono_error_type type,
>> +						struct
> ofono_error *error)
>> +{
>> +	int i;
>> +
>> +	for (i = 0; i < maxentries; i++) {
>> +		if (!strcmp(e[i].str, str)) {
>> +			error->type = type;
>> +			error->error = e[i].error;
>> +			return TRUE;
>> +		}
>> +	}
>> +
>> +	return FALSE;
>> +}
> 
> This doesn't really make sense, the errors from the modem
> usually come in the form of +CMS ERROR: 123 assuming we
> enabled +CMEE=1.  If we enabled +CMEE=2 then the numeric error
> code gets converted to a string.  The former is preferable as
> the string might be different from what oFono has.  What
> you're matching here will always result in an unknown error.
> 
> Regards,
> -Denis

My wrong. I will resend the patch soon.

Regards,
Zhenhua


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-05-13  2:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-12  8:12 [PATCH v2 0/1] Add telephony_str_to_error to decode error code Zhenhua Zhang
2010-05-12  8:12 ` [PATCH v2 1/1] " Zhenhua Zhang
2010-05-12 19:02   ` Denis Kenzior
2010-05-13  2:09     ` Zhang, Zhenhua

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.