From 1d6334a9bf44e972f534cb11fd6552c5329477be Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <me@adhisimon.org> Date: Mon, 9 Sep 2019 16:28:12 +0700 Subject: [PATCH] Coba sms error --- lib/modem-commands/index.js | 7 ++++++- lib/serialport-parsers.js | 11 ++++++++++- modem-tester.js | 2 ++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/modem-commands/index.js b/lib/modem-commands/index.js index 84d8046..50b24ae 100644 --- a/lib/modem-commands/index.js +++ b/lib/modem-commands/index.js @@ -245,7 +245,12 @@ function sendCMGSPdu(pduLength) { exports.sendSMS = function sendSMS(destination, msg) { return new Promise(async (resolve) => { + async function responseHandler(data) { + logger.verbose('SMS sent callback called', { data }); + } + await mutex.lock(MUTEX_COMMAND, 'sendSMS'); + parsers.setSmsSentCallback(responseHandler); if (!destination || !destination.trim()) { resolve(false); @@ -268,7 +273,7 @@ exports.sendSMS = function sendSMS(destination, msg) { submit.getType().setSrr(0); await sendCMGSPdu(Math.floor(submit.toString().length / 2) - 1); - await writeToPort(`${submit.toString()}${CTRLZ}`); + await writeToPortAndWaitForOkOrError(`${submit.toString()}${CTRLZ}`, MUTEX_SUBCOMMAND); mutex.unlock(MUTEX_COMMAND, 'sendSMS'); resolve(true); diff --git a/lib/serialport-parsers.js b/lib/serialport-parsers.js index 0a777f9..157d721 100644 --- a/lib/serialport-parsers.js +++ b/lib/serialport-parsers.js @@ -29,6 +29,12 @@ function setUssdCallback(cb) { } exports.setUssdCallback = setUssdCallback; +let smsSentCallback = null; +function setSmsSentCallback(cb) { + smsSentCallback = cb; +} +exports.setSmsSentCallback = setSmsSentCallback; + function isAlphaNumeric(str) { const len = str.length; // eslint-disable-next-line no-plusplus @@ -156,12 +162,15 @@ parserReadline.on('data', (data) => { logger.verbose('Got a new message notification report', { data: data.toString() }); } else if (isResultCodeIs(data, 'CUSD')) { logger.verbose('Got a USSD command response', { data: data.toString() }); - if (ussdCallback && typeof ussdCallback === 'function') { + if (typeof ussdCallback === 'function') { logger.verbose('Calling USSD callback'); ussdCallback(data.toString()); } else { logger.verbose('Skip unwanted USSD response'); } + } else if (isResultCodeIs(data, 'CMGS')) { + logger.verbose('Got CMGS report', { data: data.toString() }); + if (typeof smsSentCallback === 'function') smsSentCallback(data.toString()); } }); diff --git a/modem-tester.js b/modem-tester.js index 7eaadef..bf9bb00 100644 --- a/modem-tester.js +++ b/modem-tester.js @@ -36,6 +36,8 @@ const port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (er // await modemCommands.sendSMS('628128364883', `coba pakai pdu ${new Date()}`); // await modemCommands.sendSMS('+6282210008543', `coba pakai pdu ${new Date()}`); // await modemCommands.sendSMS('6281809903333', `coba pakai pdu ${new Date()}`); + await modemCommands.sendSMS('999', `coba pakai pdu ${new Date()}`); + // const ussdResponse = await modemCommands.executeUSSD('*888#', 2); // logger.info('USSD RESPONSE', { ussdResponse }); -- 1.9.0