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: