From b77537954016b76f0e03f3f8f2a90d68c6e3a76a Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Tue, 3 Sep 2019 18:57:36 +0700
Subject: [PATCH] queryIMSI

---
 lib/modem-commands.js | 18 ++++++++++++++++++
 modem-tester.js       |  6 +++++-
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/lib/modem-commands.js b/lib/modem-commands.js
index 740c82b..2237f43 100644
--- a/lib/modem-commands.js
+++ b/lib/modem-commands.js
@@ -73,3 +73,21 @@ exports.queryIMEI = function queryIMEI() {
         await writeToPort('AT+CGSN\r');
     });
 };
+
+exports.queryIMSI = function queryIMSI() {
+    return new Promise(async (resolve) => {
+        const parser = new ParserRegex({ regex: parsers.PARSER_WAIT_FOR_OK_OR_ERROR_REGEX });
+        parser.on('data', (data) => {
+            logger.verbose('INCOMING', { parser: 'parserIMSI', data: data.toString() });
+            port.unpipe(parser);
+            mutex.unlock(MUTEX_COMMAND, 'queryIMSI');
+            modemInfo.imsi = data.toString().trim();
+            resolve(modemInfo.imsi);
+        });
+
+        await mutex.lock(MUTEX_COMMAND, 'queryIMSI');
+
+        port.pipe(parser);
+        await writeToPort('AT+CIMI\r');
+    });
+};
diff --git a/modem-tester.js b/modem-tester.js
index 49f4ad1..a36ac49 100644
--- a/modem-tester.js
+++ b/modem-tester.js
@@ -51,7 +51,6 @@ port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (err) =>
 
     const commands = [
         'AT&FE0\r',
-        'AT+CIMI\r',
         'AT+CMGF=0\r',
         'AT+CNMI=1,2,0,1,0\r',
     ];
@@ -75,8 +74,13 @@ port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (err) =>
 
     const imei = await modemCommands.queryIMEI();
     logger.info(`**** IMEI: ${imei}`);
+
+    const imsi = await modemCommands.queryIMSI();
+    logger.info(`**** IMSI: ${imsi}`);
+
     const cops = await modemCommands.queryCOPS();
     logger.info(`**** COPS: ${cops}`);
+
     const signalQuality = await modemCommands.querySignalQuality();
     logger.info(`**** Signal Quality: ${signalQuality}`);
 
-- 
1.9.0