diff options
Diffstat (limited to 'src/gsmd')
-rw-r--r-- | src/gsmd/usock.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/gsmd/usock.c b/src/gsmd/usock.c index a07fd6f..5b7edd4 100644 --- a/src/gsmd/usock.c +++ b/src/gsmd/usock.c @@ -1317,6 +1317,26 @@ static int phonebook_list_storage_cb(struct gsmd_atcmd *cmd, return 0; } +static int get_imsi_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp) +{ + struct gsmd_user *gu = ctx; + struct gsmd_ucmd *ucmd; + + DEBUGP("resp: %s\n", resp); + + ucmd = gsmd_ucmd_fill(strlen(resp)+1, GSMD_MSG_PHONEBOOK, + GSMD_PHONEBOOK_GET_IMSI, 0); + if (!ucmd) + return -ENOMEM; + + strcpy(ucmd->buf, resp); + + usock_cmd_enqueue(ucmd, gu); + + return 0; +} + + static int usock_rcv_phonebook(struct gsmd_user *gu, struct gsmd_msg_hdr *gph,int len) { @@ -1491,6 +1511,11 @@ static int usock_rcv_phonebook(struct gsmd_user *gu, usock_cmd_enqueue(ucmd, gu); break; + + case GSMD_PHONEBOOK_GET_IMSI: + cmd = atcmd_fill("AT+CIMI", 7 + 1, &get_imsi_cb, gu, 0); + break; + default: return -EINVAL; } |