From e509607c54ae1d6684ef4cca01ed398af9f97609 Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <me@adhisimon.org> Date: Tue, 3 Sep 2019 17:43:56 +0700 Subject: [PATCH] MODEM-COMMANDS: CSQ --- lib/modem-commands.js | 36 ++++++++++++++++++++++++++++++++++++ modem-tester.js | 6 +++--- 2 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 lib/modem-commands.js diff --git a/lib/modem-commands.js b/lib/modem-commands.js new file mode 100644 index 0000000..171ff2c --- /dev/null +++ b/lib/modem-commands.js @@ -0,0 +1,36 @@ +const MUTEX_COMMAND = 'COMMAND'; +// const MUTEX_SUBCOMMAND = 'SUBCOMMAND'; + +const logger = require('komodo-sdk/logger'); +const mutex = require('./mutex-common'); +// const parsers = require('./serialport-parsers'); + +let port; + +function writeToPort(data) { + return new Promise((resolve) => { + port.write(data, (err, bytesWritten) => { + if (err) logger.warn(`ERROR: ${err.toString()}`); + + logger.verbose('OUTGOING', { bytesWritten, data: data.toString() }); + resolve(bytesWritten); + }); + }); +} + +exports.setPort = function setPort(val) { + port = val; +}; + +exports.querySignalQuality = function querySignalQuality() { + return new Promise(async (resolve) => { + if (!mutex.tryLock(MUTEX_COMMAND, 'querySignalQuality')) { + resolve(false); + return; + } + + await writeToPort('AT+CSQ\r'); + mutex.unlock(MUTEX_COMMAND, 'querySignalQuality'); + resolve(true); + }); +}; diff --git a/modem-tester.js b/modem-tester.js index a37f7c6..cbe5828 100644 --- a/modem-tester.js +++ b/modem-tester.js @@ -7,6 +7,7 @@ const logger = require('komodo-sdk/logger'); const ParserInterByteTimeout = require('@serialport/parser-inter-byte-timeout'); const parsers = require('./lib/serialport-parsers'); +const modemCommands = require('./lib/modem-commands'); const parserInterByteTimeout = new ParserInterByteTimeout({ interval: 1000 }); parserInterByteTimeout.on('data', (data) => { @@ -53,7 +54,6 @@ port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (err) => 'AT+CGSN\r', 'AT+CIMI\r', 'AT+COPS?\r', - 'AT+CSQ\r', ]; @@ -75,8 +75,8 @@ port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (err) => } setInterval(() => { - writeToPort('AT+CSQ\r'); - }, 60000); + modemCommands.querySignalQuality(); + }, 30000); }); parsers.setPort(port); -- 1.9.0