summaryrefslogtreecommitdiff
path: root/src/gsmd/usock.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gsmd/usock.c')
-rw-r--r--src/gsmd/usock.c25
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;
}
personal git repositories of Harald Welte. Your mileage may vary