Commit 47910cce60174f617789aad87a054a56a7131227
1 parent
4d1b592447
Exists in
master
queryCOPSAndSignalQuality
Showing 2 changed files with 27 additions and 6 deletions Side-by-side Diff
lib/modem-commands.js
1 | 1 | const MUTEX_COMMAND = 'COMMAND'; |
2 | -// const MUTEX_SUBCOMMAND = 'SUBCOMMAND'; | |
2 | +const MUTEX_SUBCOMMAND = 'SUBCOMMAND'; | |
3 | 3 | |
4 | 4 | const ParserReadline = require('@serialport/parser-readline'); |
5 | 5 | const ParserRegex = require('@serialport/parser-regex'); |
... | ... | @@ -23,12 +23,17 @@ function writeToPort(data) { |
23 | 23 | } |
24 | 24 | |
25 | 25 | exports.writeToPortAndWaitForReadline = function writeToPortAndWaitForReadline(cmd, lockName) { |
26 | + let resolved = false; | |
27 | + | |
26 | 28 | return new Promise(async (resolve) => { |
27 | 29 | const parser = new ParserReadline({ delimiter: parsers.PARSER_READLINE_DELIMITER }); |
28 | 30 | parser.on('data', (data) => { |
29 | 31 | port.unpipe(parser); |
30 | 32 | mutex.unlock(lockName || MUTEX_COMMAND, cmd.trim()); |
31 | - resolve(data); | |
33 | + if (!resolved) { | |
34 | + resolved = true; | |
35 | + resolve(data); | |
36 | + } | |
32 | 37 | }); |
33 | 38 | |
34 | 39 | await mutex.lock(lockName || MUTEX_COMMAND, cmd.trim()); |
... | ... | @@ -78,11 +83,26 @@ exports.querySignalQuality = function querySignalQuality() { |
78 | 83 | }); |
79 | 84 | }; |
80 | 85 | |
81 | -exports.queryCOPS = function queryCOPS() { | |
86 | +exports.queryCOPS = function queryCOPS(lockName) { | |
82 | 87 | return new Promise(async (resolve) => { |
83 | - await mutex.lock(MUTEX_COMMAND, 'queryCOPS'); | |
88 | + await mutex.lock(lockName || MUTEX_COMMAND, 'queryCOPS'); | |
84 | 89 | await writeToPort('AT+COPS?\r'); |
85 | - mutex.unlock(MUTEX_COMMAND, 'queryCOPS'); | |
90 | + mutex.unlock(lockName || MUTEX_COMMAND, 'queryCOPS'); | |
91 | + resolve(true); | |
92 | + }); | |
93 | +}; | |
94 | + | |
95 | +exports.queryCOPSAndSignalQuality = function queryCOPSAndSignalQuality() { | |
96 | + return new Promise(async (resolve) => { | |
97 | + if (!mutex.tryLock(MUTEX_COMMAND, 'queryCOPSAndSignalQuality')) { | |
98 | + resolve(false); | |
99 | + return; | |
100 | + } | |
101 | + | |
102 | + await this.writeToPortAndWaitForReadline('AT+COPS?\r', MUTEX_SUBCOMMAND); | |
103 | + await this.writeToPortAndWaitForReadline('AT+CSQ\r', MUTEX_SUBCOMMAND); | |
104 | + | |
105 | + mutex.unlock(MUTEX_COMMAND, 'queryCopsAndSignalQuality'); | |
86 | 106 | resolve(true); |
87 | 107 | }); |
88 | 108 | }; |
modem-tester.js
... | ... | @@ -38,7 +38,8 @@ const port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (er |
38 | 38 | logger.info(`**** Signal Quality: ${signalQuality}`); |
39 | 39 | |
40 | 40 | setInterval(() => { |
41 | - modemCommands.querySignalQuality(); | |
41 | + // modemCommands.querySignalQuality(); | |
42 | + modemCommands.queryCOPSAndSignalQuality(); | |
42 | 43 | }, (config && config.interval_beetwen_signal_strength_ms) || 30000); |
43 | 44 | }); |
44 | 45 |