Commit beba81d88625590172223aff46fb008136030ad4

Authored by Adhidarma Hadiwinoto
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);