Commit c5e93b5ea3be4e4be09c1b73b129c39a9a31f4e9

Authored by Adhidarma Hadiwinoto
1 parent beb8f058af
Exists in master

queryIMEIAndIMSI

Showing 3 changed files with 21 additions and 9 deletions Side-by-side Diff

lib/modem-commands.js
... ... @@ -92,9 +92,11 @@ exports.queryCOPS = function queryCOPS(lockName) {
92 92 });
93 93 };
94 94  
95   -exports.queryCOPSAndSignalQuality = function queryCOPSAndSignalQuality() {
  95 +exports.queryCOPSAndSignalQuality = function queryCOPSAndSignalQuality(skipOnLocked) {
96 96 return new Promise(async (resolve) => {
97   - if (!mutex.tryLock(MUTEX_COMMAND, 'queryCOPSAndSignalQuality')) {
  97 + if (!skipOnLocked) {
  98 + await mutex.lock(MUTEX_COMMAND);
  99 + } else if (!mutex.tryLock(MUTEX_COMMAND, 'queryCOPSAndSignalQuality')) {
98 100 resolve(false);
99 101 return;
100 102 }
... ... @@ -107,38 +109,47 @@ exports.queryCOPSAndSignalQuality = function queryCOPSAndSignalQuality() {
107 109 });
108 110 };
109 111  
110   -exports.queryIMEI = function queryIMEI() {
  112 +exports.queryIMEI = function queryIMEI(lockName) {
111 113 return new Promise(async (resolve) => {
112 114 const parser = new ParserRegex({ regex: parsers.PARSER_WAIT_FOR_OK_OR_ERROR_REGEX });
113 115 parser.on('data', (data) => {
114 116 logger.verbose('INCOMING', { data: data.toString(), parser: 'parserIMEI' });
115 117 port.unpipe(parser);
116   - mutex.unlock(MUTEX_COMMAND, 'queryIMEI');
  118 + mutex.unlock(lockName || MUTEX_COMMAND, 'queryIMEI');
117 119 modemInfo.imei = data.toString().trim();
118 120 resolve(modemInfo.imei);
119 121 });
120 122  
121   - await mutex.lock(MUTEX_COMMAND, 'queryIMEI');
  123 + await mutex.lock(lockName || MUTEX_COMMAND, 'queryIMEI');
122 124  
123 125 port.pipe(parser);
124 126 await writeToPort('AT+CGSN\r');
125 127 });
126 128 };
127 129  
128   -exports.queryIMSI = function queryIMSI() {
  130 +exports.queryIMSI = function queryIMSI(lockName) {
129 131 return new Promise(async (resolve) => {
130 132 const parser = new ParserRegex({ regex: parsers.PARSER_WAIT_FOR_OK_OR_ERROR_REGEX });
131 133 parser.on('data', (data) => {
132 134 logger.verbose('INCOMING', { data: data.toString(), parser: 'parserIMSI' });
133 135 port.unpipe(parser);
134   - mutex.unlock(MUTEX_COMMAND, 'queryIMSI');
  136 + mutex.unlock(lockName || MUTEX_COMMAND, 'queryIMSI');
135 137 modemInfo.imsi = data.toString().trim();
136 138 resolve(modemInfo.imsi);
137 139 });
138 140  
139   - await mutex.lock(MUTEX_COMMAND, 'queryIMSI');
  141 + await mutex.lock(lockName || MUTEX_COMMAND, 'queryIMSI');
140 142  
141 143 port.pipe(parser);
142 144 await writeToPort('AT+CIMI\r');
143 145 });
144 146 };
  147 +
  148 +exports.queryIMEIAndIMSI = async function queryIMEIAndIMSI() {
  149 + await mutex.lock(MUTEX_COMMAND, 'queryIMEIAndIMSI');
  150 +
  151 + await this.queryIMEI(MUTEX_SUBCOMMAND);
  152 + await this.queryIMSI(MUTEX_SUBCOMMAND);
  153 +
  154 + await mutex.unlock(MUTEX_SUBCOMMAND, 'queryIMEIAndIMSI');
  155 +};
lib/serialport-parsers.js
... ... @@ -60,7 +60,7 @@ function onCOPS(data) {
60 60 const [mode, format, networkId] = cops.split(',');
61 61 const networkName = networkId ? dbCops[networkId] || networkId : null;
62 62  
63   - logger.verbose('COPS extracted', {
  63 + logger.info('COPS extracted', {
64 64 cops, mode, format, networkId, networkName,
65 65 });
66 66  
... ... @@ -34,6 +34,7 @@ const port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (er
34 34 await modemCommands.queryCOPSAndSignalQuality();
35 35  
36 36 setInterval(() => {
  37 + modemCommands.queryIMEIAndIMSI();
37 38 modemCommands.queryCOPSAndSignalQuality();
38 39 }, (config && config.interval_beetwen_signal_strength_ms) || 30000);
39 40 });