Commit beba81d88625590172223aff46fb008136030ad4
1 parent
37d0dbf8ab
Exists in
master
SMS error
Showing 2 changed files with 12 additions and 4 deletions Side-by-side Diff
lib/modem-commands/index.js
... | ... | @@ -247,10 +247,16 @@ exports.sendSMS = function sendSMS(destination, msg) { |
247 | 247 | return new Promise(async (resolve) => { |
248 | 248 | async function responseHandler(data) { |
249 | 249 | logger.verbose('SMS sent callback called', { data }); |
250 | + | |
251 | + if (data.indexOf('ERROR') >= 0 || data.indexOf('+CMS ERROR') >= 0 || data.indexOf('+CMGS') >= 0) { | |
252 | + logger.verbose('SMS sent'); | |
253 | + parsers.setSmsSentCallback(null); | |
254 | + mutex.unlock(MUTEX_COMMAND, 'sendSMS'); | |
255 | + resolve(data.indexOf('ERROR') >= 0 ? null : data.toString().trim()); | |
256 | + } | |
250 | 257 | } |
251 | 258 | |
252 | 259 | await mutex.lock(MUTEX_COMMAND, 'sendSMS'); |
253 | - parsers.setSmsSentCallback(responseHandler); | |
254 | 260 | |
255 | 261 | if (!destination || !destination.trim()) { |
256 | 262 | resolve(false); |
... | ... | @@ -273,10 +279,10 @@ exports.sendSMS = function sendSMS(destination, msg) { |
273 | 279 | submit.getType().setSrr(0); |
274 | 280 | |
275 | 281 | await sendCMGSPdu(Math.floor(submit.toString().length / 2) - 1); |
276 | - await writeToPortAndWaitForOkOrError(`${submit.toString()}${CTRLZ}`, MUTEX_SUBCOMMAND); | |
282 | + // await writeToPortAndWaitForOkOrError(`${submit.toString()}${CTRLZ}`, MUTEX_SUBCOMMAND); | |
277 | 283 | |
278 | - mutex.unlock(MUTEX_COMMAND, 'sendSMS'); | |
279 | - resolve(true); | |
284 | + parsers.setSmsSentCallback(responseHandler); | |
285 | + await writeToPort(`${submit.toString()}${CTRLZ}`, MUTEX_SUBCOMMAND); | |
280 | 286 | }); |
281 | 287 | }; |
282 | 288 |
lib/serialport-parsers.js
... | ... | @@ -150,6 +150,8 @@ parserReadline.on('data', (data) => { |
150 | 150 | const pduType = pduParsed.getType(); |
151 | 151 | logger.verbose('Got a PDU SMS-DELIVER', { pduType }); |
152 | 152 | onPduDeliver(data, pduParsed); |
153 | + } else if (data.toString().trim() === 'ERROR') { | |
154 | + if (typeof smsSentCallback === 'function') smsSentCallback(data.toString()); | |
153 | 155 | } else if (isResultCodeIs(data, 'CSQ')) { |
154 | 156 | logger.verbose('Got a signal quality report', { data: data.toString() }); |
155 | 157 | onCSQ(data); |