Commit fad8552593ea413b7330012ef4266eeb9ab816ce

Authored by Adhidarma Hadiwinoto
1 parent 3522ae5bc9
Exists in master

Perbaikan waitForOkOrError

Showing 3 changed files with 17 additions and 5 deletions Side-by-side Diff

lib/modem-commands.js
1 1 const MUTEX_COMMAND = 'COMMAND';
  2 +exports.MUTEX_COMMAND = MUTEX_COMMAND;
  3 +
2 4 const MUTEX_SUBCOMMAND = 'SUBCOMMAND';
  5 +exports.MUTEX_SUBCOMMAND = MUTEX_SUBCOMMAND;
3 6  
4 7 const ParserReadline = require('@serialport/parser-readline');
5 8 const ParserRegex = require('@serialport/parser-regex');
... ... @@ -117,7 +120,7 @@ exports.queryIMEI = function queryIMEI(lockName) {
117 120 logger.verbose('INCOMING', { data: data.toString(), parser: 'parserIMEI' });
118 121 port.unpipe(parser);
119 122 mutex.unlock(lockName || MUTEX_COMMAND, 'queryIMEI');
120   - modemInfo.imei = data.toString().trim();
  123 + modemInfo.imei = data.toString().trim() || null;
121 124 logger.info('IMEI extracted', { imei: modemInfo.imei });
122 125 resolve(modemInfo.imei);
123 126 });
... ... @@ -136,7 +139,7 @@ exports.queryIMSI = function queryIMSI(lockName) {
136 139 logger.verbose('INCOMING', { data: data.toString(), parser: 'parserIMSI' });
137 140 port.unpipe(parser);
138 141 mutex.unlock(lockName || MUTEX_COMMAND, 'queryIMSI');
139   - modemInfo.imsi = data.toString().trim();
  142 + modemInfo.imsi = data.toString().trim() || null;
140 143 logger.info('IMSI extracted', { imsi: modemInfo.imsi });
141 144 resolve(modemInfo.imsi);
142 145 });
... ... @@ -157,3 +160,11 @@ exports.queryIMEIAndIMSI = async function queryIMEIAndIMSI() {
157 160 await mutex.unlock(MUTEX_COMMAND, 'queryIMEIAndIMSI');
158 161 return { imei, imsi };
159 162 };
  163 +
  164 +exports.initATCommands = async function initATCommands() {
  165 + await mutex.lock(MUTEX_COMMAND, 'INIT MODEM');
  166 + await this.writeToPortAndWaitForOkOrError('ATE0\r', MUTEX_SUBCOMMAND);
  167 + await this.writeToPortAndWaitForOkOrError('AT+CMGF=0\r', MUTEX_SUBCOMMAND);
  168 + await this.writeToPortAndWaitForOkOrError('AT+CNMI=1,2,0,1,0\r', MUTEX_SUBCOMMAND);
  169 + mutex.unlock(MUTEX_COMMAND, 'INIT MODEM');
  170 +};
lib/serialport-parsers.js
1 1 const PARSER_READLINE_DELIMITER = '\r\n';
2   -const PARSER_WAIT_FOR_OK_OR_ERROR_REGEX = /\r\n(?:OK|ERROR)\r\n/;
  2 +const PARSER_WAIT_FOR_OK_OR_ERROR_REGEX = /\n(?:OK|ERROR)\r\n/;
3 3  
4 4 const moment = require('moment');
5 5 const nodePdu = require('node-pdu');
... ... @@ -77,8 +77,8 @@ function onCOPS(data) {
77 77 });
78 78  
79 79 modemInfo.cops = cops;
80   - modemInfo.networkId = networkId;
81   - modemInfo.networkName = networkName;
  80 + modemInfo.networkId = networkId || null;
  81 + modemInfo.networkName = networkName || null;
82 82  
83 83 return {
84 84 cops, mode, format, networkId, networkName,
... ... @@ -30,6 +30,7 @@ const port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (er
30 30 logger.info('Modem state', modemInfo);
31 31  
32 32 setInterval(async () => {
  33 + await modemCommands.initATCommands();
33 34 await modemCommands.queryIMEIAndIMSI();
34 35 await modemCommands.queryCOPSAndSignalQuality();
35 36 logger.info('Modem state', modemInfo);