Commit a966890fcaae6c914243088d8fb2d97be9ac65fc
1 parent
a563e601a7
Exists in
master
MODEM-TESTER eslinted
Showing 1 changed file with 1 additions and 28 deletions Inline Diff
modem-tester.js
1 | const SerialPort = require('serialport'); | 1 | const SerialPort = require('serialport'); |
2 | 2 | ||
3 | const config = require('komodo-sdk/config'); | 3 | const config = require('komodo-sdk/config'); |
4 | const logger = require('komodo-sdk/logger'); | 4 | const logger = require('komodo-sdk/logger'); |
5 | 5 | ||
6 | 6 | ||
7 | const ParserInterByteTimeout = require('@serialport/parser-inter-byte-timeout'); | 7 | const ParserInterByteTimeout = require('@serialport/parser-inter-byte-timeout'); |
8 | 8 | ||
9 | const parsers = require('./lib/serialport-parsers'); | 9 | const parsers = require('./lib/serialport-parsers'); |
10 | const modemCommands = require('./lib/modem-commands'); | 10 | const modemCommands = require('./lib/modem-commands'); |
11 | 11 | ||
12 | const parserInterByteTimeout = new ParserInterByteTimeout({ interval: 1000 }); | 12 | const parserInterByteTimeout = new ParserInterByteTimeout({ interval: 1000 }); |
13 | parserInterByteTimeout.on('data', (data) => { | 13 | parserInterByteTimeout.on('data', (data) => { |
14 | logger.verbose('INCOMING', { parser: 'parserInterByteTimeout', data: data.toString() }); | 14 | logger.verbose('INCOMING', { parser: 'parserInterByteTimeout', data: data.toString() }); |
15 | }); | 15 | }); |
16 | 16 | ||
17 | let port; | 17 | const port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (err) => { |
18 | |||
19 | function sleep(ms) { | ||
20 | return new Promise((resolve) => { | ||
21 | setTimeout(() => { | ||
22 | resolve(); | ||
23 | }, ms || 0); | ||
24 | }); | ||
25 | } | ||
26 | |||
27 | function writeToPort(data) { | ||
28 | return new Promise((resolve) => { | ||
29 | port.write(data, (err, bytesWritten) => { | ||
30 | if (err) logger.warn(`ERROR: ${err.toString()}`); | ||
31 | |||
32 | logger.verbose('OUTGOING', { bytesWritten, data: data.toString() }); | ||
33 | resolve(bytesWritten); | ||
34 | }); | ||
35 | }); | ||
36 | } | ||
37 | |||
38 | async function writeToPortDelayed(data, ms) { | ||
39 | await sleep(ms || 500); | ||
40 | const result = writeToPort(data); | ||
41 | return result; | ||
42 | } | ||
43 | |||
44 | port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (err) => { | ||
45 | if (err) { | 18 | if (err) { |
46 | logger.warn(`Error opening modem. ${err}. Terminating modem ${config.modem.device}.`); | 19 | logger.warn(`Error opening modem. ${err}. Terminating modem ${config.modem.device}.`); |
47 | process.exit(1); | 20 | process.exit(1); |
48 | } | 21 | } |
49 | 22 | ||
50 | await modemCommands.writeToPortAndWaitForOkOrError('AT\r'); | 23 | await modemCommands.writeToPortAndWaitForOkOrError('AT\r'); |
51 | await modemCommands.writeToPortAndWaitForOkOrError('AT&FE0\r'); | 24 | await modemCommands.writeToPortAndWaitForOkOrError('AT&FE0\r'); |
52 | await modemCommands.writeToPortAndWaitForOkOrError('AT+CMGF=0\r'); | 25 | await modemCommands.writeToPortAndWaitForOkOrError('AT+CMGF=0\r'); |
53 | await modemCommands.writeToPortAndWaitForOkOrError('AT+CNMI=1,2,0,1,0\r'); | 26 | await modemCommands.writeToPortAndWaitForOkOrError('AT+CNMI=1,2,0,1,0\r'); |
54 | 27 | ||
55 | const imei = await modemCommands.queryIMEI(); | 28 | const imei = await modemCommands.queryIMEI(); |
56 | logger.info(`**** IMEI: ${imei}`); | 29 | logger.info(`**** IMEI: ${imei}`); |
57 | 30 | ||
58 | const imsi = await modemCommands.queryIMSI(); | 31 | const imsi = await modemCommands.queryIMSI(); |
59 | logger.info(`**** IMSI: ${imsi}`); | 32 | logger.info(`**** IMSI: ${imsi}`); |
60 | 33 | ||
61 | const cops = await modemCommands.queryCOPS(); | 34 | const cops = await modemCommands.queryCOPS(); |
62 | logger.info(`**** COPS: ${cops}`); | 35 | logger.info(`**** COPS: ${cops}`); |
63 | 36 | ||
64 | const signalQuality = await modemCommands.querySignalQuality(); | 37 | const signalQuality = await modemCommands.querySignalQuality(); |
65 | logger.info(`**** Signal Quality: ${signalQuality}`); | 38 | logger.info(`**** Signal Quality: ${signalQuality}`); |
66 | 39 | ||
67 | setInterval(() => { | 40 | setInterval(() => { |
68 | modemCommands.querySignalQuality(); | 41 | modemCommands.querySignalQuality(); |
69 | }, (config && config.interval_beetwen_signal_strength_ms) || 30000); | 42 | }, (config && config.interval_beetwen_signal_strength_ms) || 30000); |
70 | }); | 43 | }); |
71 | 44 | ||
72 | parsers.setPort(port); | 45 | parsers.setPort(port); |
73 | modemCommands.setPort(port); | 46 | modemCommands.setPort(port); |
74 | 47 | ||
75 | if (config && config.modem_tester && config.modem_tester.parser === 'regex') { | 48 | if (config && config.modem_tester && config.modem_tester.parser === 'regex') { |
76 | logger.info('Using parserWaitForOkOrError'); | 49 | logger.info('Using parserWaitForOkOrError'); |
77 | port.pipe(parsers.parserWaitForOkOrError); | 50 | port.pipe(parsers.parserWaitForOkOrError); |
78 | } else if (config && config.modem_tester && config.modem_tester.parser === 'interbyte') { | 51 | } else if (config && config.modem_tester && config.modem_tester.parser === 'interbyte') { |
79 | logger.info('Using parserInterByteTimeout'); | 52 | logger.info('Using parserInterByteTimeout'); |
80 | port.pipe(parserInterByteTimeout); | 53 | port.pipe(parserInterByteTimeout); |
81 | } else { | 54 | } else { |
82 | logger.info('Using parserReadline'); | 55 | logger.info('Using parserReadline'); |
83 | port.pipe(parsers.parserReadline); | 56 | port.pipe(parsers.parserReadline); |
84 | } | 57 | } |
85 | 58 |