hi list, R4084 is committed for some changes about retrieving phone information. Thanks for Sudharshan S and Paulius Zaleckas.

Regards,

Erin


Index: include/gsmd/gsmd.h
===================================================================
--- include/gsmd/gsmd.h	(revision 4082)
+++ include/gsmd/gsmd.h	(working copy)
@@ -73,7 +73,6 @@
 #define GSMD_FLAG_SMS_FMT_TEXT	0x0002	/* TODO Use TEXT rather than PDU mode */
 
 #define GSMD_ATCMD_TIMEOUT	60	/* If doesn get respond within 60 secs, discard */
-#define GSMD_MAX_INFO_LEN	64	/* by the standard it should be 2048, way too much :) */
 
 struct gsmd {
 	unsigned int flags;
Index: src/gsmd/usock.c
===================================================================
--- src/gsmd/usock.c	(revision 4082)
+++ src/gsmd/usock.c	(working copy)
@@ -618,12 +618,10 @@
 	struct gsmd_user *gu = ctx;
 
 	DEBUGP("cmd = '%s', resp: '%s'\n", cmd->buf, resp);
-	if (strncmp(resp, "+CGMI: ", 7))
-		return -EINVAL;
-	resp += 7;
+	if (!strncmp(resp, "+CGMI: ", 7))
+		resp += 7;
 	return gsmd_ucmd_submit(gu, GSMD_MSG_PHONE, GSMD_PHONE_GET_MANUF,
 			cmd->id, strlen(resp) + 1, resp);
-	return 0;
 }
 
 static int gsmd_get_model_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
@@ -631,12 +629,10 @@
 	struct gsmd_user *gu = ctx;
 
 	DEBUGP("cmd = '%s', resp: '%s'\n", cmd->buf, resp);
-	if (strncmp(resp, "+CGMM: ", 7))
-		return -EINVAL;
-	resp += 7;
+	if (!strncmp(resp, "+CGMM: ", 7))
+		resp += 7;
 	return gsmd_ucmd_submit(gu, GSMD_MSG_PHONE, GSMD_PHONE_GET_MODEL,
 			cmd->id, strlen(resp) + 1, resp);
-	return 0;
 }
 
 static int gsmd_get_revision_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
@@ -644,12 +640,10 @@
 	struct gsmd_user *gu = ctx;
 
 	DEBUGP("cmd = '%s', resp: '%s'\n", cmd->buf, resp);
-	if (strncmp(resp, "+CGMR: ", 7))
-		return -EINVAL;
-	resp += 7;
+	if (!strncmp(resp, "+CGMR: ", 7))
+		resp += 7;
 	return gsmd_ucmd_submit(gu, GSMD_MSG_PHONE, GSMD_PHONE_GET_REVISION,
 			cmd->id, strlen(resp) + 1, resp);
-	return 0;
 }
 
 static int gsmd_get_serial_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
@@ -657,12 +651,10 @@
 	struct gsmd_user *gu = ctx;
 
 	DEBUGP("cmd = '%s', resp: '%s'\n", cmd->buf, resp);
-	if (strncmp(resp, "+CGSN: ", 7))
-		return -EINVAL;
-	resp += 7;
+	if (!strncmp(resp, "+CGSN: ", 7))
+		resp += 7;
 	return gsmd_ucmd_submit(gu, GSMD_MSG_PHONE, GSMD_PHONE_GET_SERIAL,
 			cmd->id, strlen(resp) + 1, resp);
-	return 0;
 }
 
 static int usock_rcv_phone(struct gsmd_user *gu, struct gsmd_msg_hdr *gph, 
@@ -878,7 +870,7 @@
 		/* In case we're not registered, return an empty string */
 		buf[0] = '\0';
 	}
-	else if ( er->num_tokens == 3 &&
+	else if ( er->num_tokens >= 3 &&
 			er->tokens[0].type == GSMD_ECMD_RTT_NUMERIC &&
 			er->tokens[1].type == GSMD_ECMD_RTT_NUMERIC &&
 			er->tokens[2].type == GSMD_ECMD_RTT_STRING ) {
Index: src/util/shell.c
===================================================================
--- src/util/shell.c	(revision 4082)
+++ src/util/shell.c	(working copy)
@@ -392,28 +392,23 @@
 
 static int phone_msghandler(struct lgsm_handle *lh, struct gsmd_msg_hdr *gmh)
 {
-	char *payload;
+	char *payload  = (char *)gmh + sizeof(*gmh);
 	int *intresult = (void *)gmh + sizeof(*gmh);
 
 	switch (gmh->msg_subtype) {
 	case GSMD_PHONE_GET_IMSI:
-		payload = (char *)gmh + sizeof(*gmh);
 		printf("imsi <%s>\n", payload);
 		break;
 	case GSMD_PHONE_GET_MANUF:
-		payload = (char *)gmh + sizeof(*gmh);
 		printf("manufacturer: %s\n", payload);
 		break;
 	case GSMD_PHONE_GET_MODEL:
-		payload = (char *)gmh + sizeof(*gmh);
 		printf("model: %s\n", payload);
 		break;
 	case GSMD_PHONE_GET_REVISION:
-		payload = (char *)gmh + sizeof(*gmh);
 		printf("revision: %s\n", payload);
 		break;
 	case GSMD_PHONE_GET_SERIAL:
-		payload = (char *)gmh + sizeof(*gmh);
 		printf("serial: %s\n", payload);
 		break;
 	case GSMD_PHONE_POWERUP:

Reply via email to