Here is the revision of the latest patch i've submited.
- Now handling +CME ERRORS
- Added more detailled descriptions from +CME ERRORS
- Added specs sources
Vincent.
Alexander Malysh a écrit :
commited to cvs.
Thanks,
Alex
Am 17.06.2009 um 14:26 schrieb Vincent CHAVANIS:
This one should fit.
Vincent.
Alexander Malysh a écrit :
sorry, but still the same:
+ case 0:
+ /*
+ * Default the code to 0 then when you extract the value from the
+ * modem response message and no code is found, 0 will result.
+ */
+ return "Modem returned ERROR but no error code - possibly
unsupported or invalid command?";
indents are 4 spaces instead of 2.
Thanks,
Alex
Am 17.06.2009 um 13:24 schrieb Vincent CHAVANIS:
yep, you're right.
new file attached.
without blank comments, and text cleaned.
Vincent.
Alexander Malysh a écrit :
Hi Vincent,
some comments:
+ error(0, "AT2[%s]: [%d/%ld] Initialization of device
failed.", octstr_get_cstr(privdata->name),
+ error_count, privdata->max_error_count);
this is not very informative for kannel user. Please write out
something like Init failed errors X from max errors X.
please kill comments like this:
+ /*
+ */
please fix indentation, we use 4 spaces...
Thanks,
Alex
Am 17.06.2009 um 12:56 schrieb Vincent CHAVANIS:
From an old thread
(http://www.mail-archive.com/[email protected]/msg07693.html)
Alex moved the at2_error_string into smsc_at.c
2004-09-18 Alexander Malysh <amalysh at kannel.org>
* gw/smsc/smsc_at.c: added new function 'at2_error_string' and
teached
smsc_at to use it.
But some error codes are missing.
1472:2009-06-16 16:00:59.0442 [2255] [8] ERROR: AT2[WAVECOM]:
Generic error: +CME ERROR: 515
2710:2009-06-16 23:35:40.0142 [2255] [8] ERROR: AT2[WAVECOM]: CMS
ERROR: +CMS ERROR: 513
2711:2009-06-16 23:35:40.0142 [2255] [8] ERROR: AT2[WAVECOM]: CMS
ERROR: Error number unknown. Ask google and add it. (513)
Each code is more or less detailled on comments
I think this should be left as it as there are no documentation on
it.
This patch also prints the counter before the reset-string.
Vincent.
<smsc_at2_error_string_patch_v2.txt>
--
Telemaque - 06560 SOPHIA-ANTIPOLIS - (FR)
Service Technique/Reseau - NOC
Direction du Developpement xMS+
http://www.telemaque.fr/
[email protected]
Tel : +33 4 92 90 99 84 (fax 9142)
<smsc_at2_error_string_patch_v3.txt>
--
Telemaque - 06560 SOPHIA-ANTIPOLIS - (FR)
Service Technique/Reseau - NOC
Direction du Developpement xMS+
http://www.telemaque.fr/
[email protected]
Tel : +33 4 92 90 99 84 (fax 9142)
--- /gateway-cvs/gw/smsc/smsc_at.c 2009-06-18 09:30:57.000000000 +0200
+++ /gateway/gw/smsc/smsc_at.c 2009-06-18 16:49:01.000000000 +0200
@@ -786,12 +786,16 @@
privdata->pin_ready = 1;
continue;
}
- if (octstr_search(line, octstr_imm("+CMS ERROR"), 0) != -1) {
+ if (octstr_search(line, octstr_imm("+CMS ERROR"), 0) != -1 ||
+ octstr_search(line, octstr_imm("+CME ERROR"), 0) != -1) {
int errcode;
- error(0, "AT2[%s]: CMS ERROR: %s",
octstr_get_cstr(privdata->name),
+ error(0, "AT2[%s]: CMx ERROR: %s",
octstr_get_cstr(privdata->name),
octstr_get_cstr(line));
if (sscanf(octstr_get_cstr(line), "+CMS ERROR: %d", &errcode)
== 1)
- error(0, "AT2[%s]: CMS ERROR: %s (%d)",
octstr_get_cstr(privdata->name),
+ error(0, "AT2[%s]: +CMS ERROR: %s (%d)",
octstr_get_cstr(privdata->name),
+ at2_error_string(errcode), errcode);
+ else if (sscanf(octstr_get_cstr(line), "+CME ERROR: %d",
&errcode) == 1)
+ error(0, "AT2[%s]: +CME ERROR: %s (%d)",
octstr_get_cstr(privdata->name),
at2_error_string(errcode), errcode);
ret = 1;
goto end;
@@ -2895,6 +2899,19 @@
static const char *at2_error_string(int code)
{
+ /*
+ * +CMS ERRORS
+ * 0...127 from GSM 04.11 Annex E-2 values
+ * 128...255 from GSM 03.40 subclause 9.2.3.22
+ * 300...511 from GSM 07.05 subclause 3.2.5
+ * 512+ are manufacturer specific according to GSM 07.05 subclause 3.2.5
+ *
+ * +CME ERRORS
+ * CME Error codes from GSM 07.07 section 9.2
+ * GPP TS 27.007 /2/
+ * GPRS-related errors - (GSM 04.08 cause codes)
+ *
+ */
switch (code) {
case 0:
/*
@@ -2908,7 +2925,9 @@
* Station cannot be reached because, although the number is in a
* valid format, it is not currently assigned (allocated).
*/
- return "Unassigned (unallocated) number";
+ return "Unassigned (unallocated) number (+CMS) or No connection to
phone (+CME)";
+ case 2:
+ return "Phone-adaptor link reserved";
case 3:
/*
* This can be a lot of things, depending upon the command, but in
general
@@ -2921,6 +2940,8 @@
* it relates to invaid parameters being passed.
*/
return "Operation / Parameter(s) not supported";
+ case 5:
+ return "PH-SIM PIN required";
case 8:
/*
* This cause indicates that the MS has tried to send a mobile
originating
@@ -2940,6 +2961,10 @@
return "SIM PUK required";
case 13:
return "SIM failure";
+ case 14:
+ return "SIM busy";
+ case 15:
+ return "SIM wrong";
case 16:
return "Incorrect password";
case 17:
@@ -2947,7 +2972,7 @@
* This cause is sent to the MS if the MSC cannot service an MS
generated
* request because of PLMN failures, e.g. problems in MAP.
*/
- return "Network failure";
+ return "Network failure (+CMS) or SIM PIN2 required (+CME)";
case 18:
return "SIM PUK2 required";
case 20:
@@ -2959,7 +2984,7 @@
* the short message since the equipment sending this cause is neither
* busy nor incompatible.
*/
- return "Short message transfer rejected";
+ return "Short message transfer rejected (+CMS) or Invalid Index
(+CME)";
case 22:
/*
* This cause is sent if the service request cannot be actioned
because
@@ -2967,9 +2992,13 @@
* this cause indicates that the mobile station cannot store the
* incoming short message due to lack of storage capacity.
*/
- return "Congestion or Memory capacity exceeded";
+ return "Congestion (+CMS) or Memory capacity exceeded (+CME)";
+ case 23:
+ return "Memory failure";
case 24:
return "Text string too long"; /* +CPBW, +CPIN, +CPIN2, +CLCK, +CPWD */
+ case 25:
+ return "Invalid characters in text string";
case 26:
return "Dial string too long"; /* +CPBW, ATD, +CCFC */
case 27:
@@ -3001,7 +3030,9 @@
* (i.e. IMSI or directory number is not allocated to a subscriber).
* Also means "No network service" for +VTS, +COPS=?, +CLCK, +CCFC,
+CCWA, +CUSD
*/
- return "Unknown subscriber or No network service";
+ return "Unknown subscriber (+CMS) or No network service (+CME)";
+ case 31:
+ return "Network timeout";
case 32:
return "Network not allowed - emergency calls only"; /* +COPS */
case 38:
@@ -3021,19 +3052,27 @@
* the Mobile Station may wish to try another short message transfer
* attempt almost immediately.
*/
- return "Temporary failure";
+ return "Temporary failure (+CMS) or Network personalization PUK
required (+CME)";
case 42:
/*
* This cause indicates that the short message service cannot be
serviced
* because of high traffic.
*/
- return "Congestion";
+ return "Congestion (+CMS) or Network subset personalization PIN
required (+CME)";
+ case 43:
+ return "Network subset personalization PUK required";
+ case 44:
+ return "Service provider personalization PIN required";
+ case 45:
+ return "Service provider personalization PUK required";
+ case 46:
+ return "Corporate personalization PIN required";
case 47:
/*
* This cause is used to report a resource unavailable event only when
no
* other cause applies.
*/
- return "Resources unavailable, unspecified";
+ return "Resources unavailable, unspecified (+CMS) or Corporate
personalization PUK required (+CME)";
case 50:
/*
* This cause indicates that the requested short message service could
not
@@ -3093,6 +3132,8 @@
* order for the equipment sending the cause to process the message.
*/
return "Information element non-existent or not implemented";
+ case 100:
+ return "Unknown";
case 103:
return "Illegal MS (#3)"; /* +CGATT */
case 106:
@@ -3105,7 +3146,7 @@
* cause applies.
* Also means "PLMN not allowed (#11)" for +CGATT
*/
- return "Protocol error, unspecified or PLMN not allowed (#11)";
+ return "Protocol error, unspecified (+CMS) or PLMN not allowed (#11)
(+CME)";
case 112:
return "Location area not allowed (#12)"; /* +CGATT */
case 113:
@@ -3182,51 +3223,71 @@
case 255:
return "Unspecified error cause";
case 300:
- return "ME failure";
+ /*
+ * Mobile equipment refers to the mobile device that communicates with
+ * the wireless network. Usually it is a mobile phone or GSM/GPRS
modem.
+ * The SIM card is defined as a separate entity and is not part of
mobile equipment.
+ */
+ return "Mobile equipment (ME) failure";
case 301:
- return "SMS service of ME reserved";
+ /*
+ * See +CMS error code 300 for the meaning of mobile equipment.
+ */
+ return "SMS service of mobile equipment (ME) is reserved";
case 302:
- return "Operation not allowed";
+ return "The operation to be done by the AT command is not allowed";
case 303:
- return "Operation not supported";
+ return "The operation to be done by the AT command is not supported";
case 304:
- return "Invalid PDU mode parameter";
+ return "One or more parameter values assigned to the AT command are
invalid";
case 305:
- return "Invalid text mode parameter";
+ return "One or more parameter values assigned to the AT command are
invalid";
case 310:
- return "SIM not inserted";
+ return "There is no SIM card";
case 311:
- return "SIM PIN required";
+ /*
+ * The AT command +CPIN (command name in text: Enter PIN)
+ * can be used to send the PIN to the SIM card.
+ */
+ return "The SIM card requires a PIN to operate";
case 312:
- return "PH-SIM PIN required";
+ /*
+ * The AT command +CPIN (command name in text: Enter PIN)
+ * can be used to send the PH-SIM PIN to the SIM card.
+ */
+ return "The SIM card requires a PH-SIM PIN to operate";
case 313:
- return "SIM failure";
+ return "SIM card failure";
case 314:
- return "SIM busy";
+ return "The SIM card is busy";
case 315:
- return "SIM wrong";
+ return "The SIM card is wrong";
case 316:
- return "SIM PUK required";
+ /*
+ * The AT command +CPIN (command name in text: Enter PIN)
+ * can be used to send the PUK to the SIM card.
+ */
+ return "The SIM card requires a PUK to operate";
case 317:
- return "SIM PIN2 required";
+ return "The SIM card requires a PIN2 to operate";
case 318:
- return "SIM PUK2 required";
+ return "The SIM card requires a PUK2 to operate";
case 320:
- return "Memory failure";
+ return "Memory/message storage failure";
case 321:
- return "Invalid memory index -> don't worry, just memory
fragmentation.";
+ return "The memory/message storage index assigned to the AT command is
invalid";
case 322:
- return "Memory full";
+ return "The memory/message storage is out of space";
case 330:
- return "SMSC address unknown";
+ return "The SMS center (SMSC) address is unknown";
case 331:
- return "No network service";
+ return "No network service is available";
case 332:
- return "Network timeout";
+ return "Network timeout occurred";
case 340:
- return "NO +CNMA ACK EXPECTED";
+ return "There is no need to send message ack by the AT command +CNMA";
case 500:
- return "Unknown error. -> maybe Sim storage is full? I'll have a look
at it.";
+ return "An unknown error occurred";
case 512:
/*
* Resulting from +CMGS, +CMSS
@@ -3293,14 +3354,14 @@
/*
* Resulting from +WOPEN
*/
- return "The embedded application is activated so the objects flash are
not erased.";
+ return "The embedded application is activated so the objects flash are
not erased";
case 533:
/*
* Resulting from +ATD*99,+GACT,+CGDATA
*/
return "Missing or unknown APN";
default:
- return "Error number unknown. Ask google and add it.";
+ return "Error number unknown. Ask google and add it";
}
}