From e77dfd454654c8ae786e7ba0e7981601a7ee35b1 Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <me@adhisimon.org> Date: Tue, 3 Sep 2019 18:43:42 +0700 Subject: [PATCH] queryIMEI --- lib/modem-commands.js | 21 ++++++++++++++++++++- lib/serialport-parsers.js | 3 +++ modem-tester.js | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/modem-commands.js b/lib/modem-commands.js index a8921f3..b00f724 100644 --- a/lib/modem-commands.js +++ b/lib/modem-commands.js @@ -1,9 +1,11 @@ const MUTEX_COMMAND = 'COMMAND'; // const MUTEX_SUBCOMMAND = 'SUBCOMMAND'; +const ParserRegex = require('@serialport/parser-regex'); + const logger = require('komodo-sdk/logger'); const mutex = require('./mutex-common'); -// const parsers = require('./serialport-parsers'); +const parsers = require('./serialport-parsers'); let port; @@ -52,3 +54,20 @@ exports.queryCOPS = function querySignalQuality() { resolve(true); }); }; + +exports.queryIMEI = function queryIMEI() { + 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: 'parserIMEI', data: data.toString() }); + mutex.unlock(MUTEX_COMMAND, 'queryIMEI'); + resolve(); + }); + + await mutex.lock(MUTEX_COMMAND, 'queryIMEI'); + + port.pipe(parser); + await writeToPort('AT+CGSN\r'); + port.unpipe(parser); + }); +}; diff --git a/lib/serialport-parsers.js b/lib/serialport-parsers.js index 222e510..b62e4d4 100644 --- a/lib/serialport-parsers.js +++ b/lib/serialport-parsers.js @@ -125,5 +125,8 @@ parserWaitForOkOrError.on('data', (data) => { }); +exports.PARSER_READLINE_DELIMITER = PARSER_READLINE_DELIMITER; +exports.PARSER_WAIT_FOR_OK_OR_ERROR_REGEX = PARSER_WAIT_FOR_OK_OR_ERROR_REGEX; + exports.parserReadline = parserReadline; exports.parserWaitForOkOrError = parserWaitForOkOrError; diff --git a/modem-tester.js b/modem-tester.js index accae59..7a091e8 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+CGSN\r', 'AT+CIMI\r', 'AT+CMGF=0\r', 'AT+CNMI=1,2,0,1,0\r', @@ -74,6 +73,7 @@ port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (err) => } } + await modemCommands.queryIMEI(); await modemCommands.queryCOPS(); await modemCommands.querySignalQuality(); -- 1.9.0