Commit fad8552593ea413b7330012ef4266eeb9ab816ce
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, |
modem-tester.js
... | ... | @@ -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); |