Commit caac94e43576e766a9a97dfb48f5b27f16fe7b29

Authored by Adhidarma Hadiwinoto
1 parent 949103a578
Exists in master

modemInfo integrated

Showing 3 changed files with 22 additions and 4 deletions Side-by-side Diff

lib/modem-commands.js
... ... @@ -117,6 +117,7 @@ exports.queryIMEI = function queryIMEI(lockName) {
117 117 port.unpipe(parser);
118 118 mutex.unlock(lockName || MUTEX_COMMAND, 'queryIMEI');
119 119 modemInfo.imei = data.toString().trim();
  120 + logger.info('IMEI extracted', { imei: modemInfo.imei });
120 121 resolve(modemInfo.imei);
121 122 });
122 123  
... ... @@ -135,6 +136,7 @@ exports.queryIMSI = function queryIMSI(lockName) {
135 136 port.unpipe(parser);
136 137 mutex.unlock(lockName || MUTEX_COMMAND, 'queryIMSI');
137 138 modemInfo.imsi = data.toString().trim();
  139 + logger.info('IMSI extracted', { imsi: modemInfo.imsi });
138 140 resolve(modemInfo.imsi);
139 141 });
140 142  
... ... @@ -148,8 +150,9 @@ exports.queryIMSI = function queryIMSI(lockName) {
148 150 exports.queryIMEIAndIMSI = async function queryIMEIAndIMSI() {
149 151 await mutex.lock(MUTEX_COMMAND, 'queryIMEIAndIMSI');
150 152  
151   - await this.queryIMEI(MUTEX_SUBCOMMAND);
152   - await this.queryIMSI(MUTEX_SUBCOMMAND);
  153 + const imei = await this.queryIMEI(MUTEX_SUBCOMMAND);
  154 + const imsi = await this.queryIMSI(MUTEX_SUBCOMMAND);
153 155  
154 156 await mutex.unlock(MUTEX_COMMAND, 'queryIMEIAndIMSI');
  157 + return { imei, imsi };
155 158 };
lib/serialport-parsers.js
1 1 const PARSER_READLINE_DELIMITER = '\r\n';
2 2 const PARSER_WAIT_FOR_OK_OR_ERROR_REGEX = /\r\n(?:OK|ERROR)\r\n/;
3 3  
  4 +const moment = require('moment');
4 5 const pdu = require('node-pdu');
5 6 const ParserReadline = require('@serialport/parser-readline');
6 7 const ParserRegex = require('@serialport/parser-regex');
... ... @@ -8,6 +9,7 @@ const ParserRegex = require('@serialport/parser-regex');
8 9 const logger = require('komodo-sdk/logger');
9 10  
10 11 const dbCops = require('./db-cops');
  12 +const modemInfo = require('./modem-info');
11 13  
12 14 let port;
13 15  
... ... @@ -35,8 +37,15 @@ function onCSQ(data) {
35 37 const val = data.toString().trim().match(/\+CSQ:\s*(.*)/);
36 38 if (!val || !val[1]) return null;
37 39  
  40 + const [, signalStrength] = val;
  41 +
38 42 logger.info('Signal quality extracted', { signalQuality: val[1] });
39   - return val[1];
  43 +
  44 + modemInfo.signalStrength = signalStrength;
  45 + modemInfo.signalStrengthTs = new Date();
  46 + modemInfo.signalStrengthTsReadable = moment(modemInfo.signalStrengthTs).format('YYYY-MM-DD HH:mm:ss');
  47 +
  48 + return signalStrength;
40 49 }
41 50  
42 51 function onPduDeliver(data, parsedData) {
... ... @@ -64,6 +73,10 @@ function onCOPS(data) {
64 73 cops, mode, format, networkId, networkName,
65 74 });
66 75  
  76 + modemInfo.cops = cops;
  77 + modemInfo.networkId = networkId;
  78 + modemInfo.networkName = networkName;
  79 +
67 80 return {
68 81 cops, mode, format, networkId, networkName,
69 82 };
... ... @@ -3,11 +3,11 @@ const SerialPort = require('serialport');
3 3 const config = require('komodo-sdk/config');
4 4 const logger = require('komodo-sdk/logger');
5 5  
6   -
7 6 const ParserInterByteTimeout = require('@serialport/parser-inter-byte-timeout');
8 7  
9 8 const parsers = require('./lib/serialport-parsers');
10 9 const modemCommands = require('./lib/modem-commands');
  10 +const modemInfo = require('./lib/modem-info');
11 11  
12 12 const parserInterByteTimeout = new ParserInterByteTimeout({ interval: 1000 });
13 13 parserInterByteTimeout.on('data', (data) => {
... ... @@ -27,10 +27,12 @@ const port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (er
27 27  
28 28 await modemCommands.queryIMEIAndIMSI();
29 29 await modemCommands.queryCOPSAndSignalQuality();
  30 + logger.info('Modem state', modemInfo);
30 31  
31 32 setInterval(() => {
32 33 modemCommands.queryIMEIAndIMSI();
33 34 modemCommands.queryCOPSAndSignalQuality();
  35 + logger.info('Modem state', modemInfo);
34 36 }, (config && config.interval_beetwen_signal_strength_ms) || 30000);
35 37 });
36 38