Commit 4cb2459b12fc9113cf1ec3072a4c427c034f4baf
1 parent
e77dfd4546
Exists in
master
queryIMEI unpipe parser on data
Showing 1 changed file with 1 additions and 1 deletions Inline Diff
lib/modem-commands.js
1 | const MUTEX_COMMAND = 'COMMAND'; | 1 | const MUTEX_COMMAND = 'COMMAND'; |
2 | // const MUTEX_SUBCOMMAND = 'SUBCOMMAND'; | 2 | // const MUTEX_SUBCOMMAND = 'SUBCOMMAND'; |
3 | 3 | ||
4 | const ParserRegex = require('@serialport/parser-regex'); | 4 | const ParserRegex = require('@serialport/parser-regex'); |
5 | 5 | ||
6 | const logger = require('komodo-sdk/logger'); | 6 | const logger = require('komodo-sdk/logger'); |
7 | const mutex = require('./mutex-common'); | 7 | const mutex = require('./mutex-common'); |
8 | const parsers = require('./serialport-parsers'); | 8 | const parsers = require('./serialport-parsers'); |
9 | 9 | ||
10 | let port; | 10 | let port; |
11 | 11 | ||
12 | function writeToPort(data) { | 12 | function writeToPort(data) { |
13 | return new Promise((resolve) => { | 13 | return new Promise((resolve) => { |
14 | port.write(data, (err, bytesWritten) => { | 14 | port.write(data, (err, bytesWritten) => { |
15 | if (err) logger.warn(`ERROR: ${err.toString()}`); | 15 | if (err) logger.warn(`ERROR: ${err.toString()}`); |
16 | 16 | ||
17 | logger.verbose('OUTGOING', { bytesWritten, data: data.toString() }); | 17 | logger.verbose('OUTGOING', { bytesWritten, data: data.toString() }); |
18 | resolve(bytesWritten); | 18 | resolve(bytesWritten); |
19 | }); | 19 | }); |
20 | }); | 20 | }); |
21 | } | 21 | } |
22 | 22 | ||
23 | exports.sleep = function sleep(ms) { | 23 | exports.sleep = function sleep(ms) { |
24 | return new Promise((resolve) => { | 24 | return new Promise((resolve) => { |
25 | setTimeout(() => { | 25 | setTimeout(() => { |
26 | resolve(); | 26 | resolve(); |
27 | }, ms || 0); | 27 | }, ms || 0); |
28 | }); | 28 | }); |
29 | }; | 29 | }; |
30 | 30 | ||
31 | 31 | ||
32 | exports.setPort = function setPort(val) { | 32 | exports.setPort = function setPort(val) { |
33 | port = val; | 33 | port = val; |
34 | }; | 34 | }; |
35 | 35 | ||
36 | exports.querySignalQuality = function querySignalQuality() { | 36 | exports.querySignalQuality = function querySignalQuality() { |
37 | return new Promise(async (resolve) => { | 37 | return new Promise(async (resolve) => { |
38 | if (!mutex.tryLock(MUTEX_COMMAND, 'querySignalQuality')) { | 38 | if (!mutex.tryLock(MUTEX_COMMAND, 'querySignalQuality')) { |
39 | resolve(false); | 39 | resolve(false); |
40 | return; | 40 | return; |
41 | } | 41 | } |
42 | 42 | ||
43 | await writeToPort('AT+CSQ\r'); | 43 | await writeToPort('AT+CSQ\r'); |
44 | mutex.unlock(MUTEX_COMMAND, 'querySignalQuality'); | 44 | mutex.unlock(MUTEX_COMMAND, 'querySignalQuality'); |
45 | resolve(true); | 45 | resolve(true); |
46 | }); | 46 | }); |
47 | }; | 47 | }; |
48 | 48 | ||
49 | exports.queryCOPS = function querySignalQuality() { | 49 | exports.queryCOPS = function querySignalQuality() { |
50 | return new Promise(async (resolve) => { | 50 | return new Promise(async (resolve) => { |
51 | await mutex.lock(MUTEX_COMMAND, 'queryCOPS'); | 51 | await mutex.lock(MUTEX_COMMAND, 'queryCOPS'); |
52 | await writeToPort('AT+COPS?\r'); | 52 | await writeToPort('AT+COPS?\r'); |
53 | mutex.unlock(MUTEX_COMMAND, 'queryCOPS'); | 53 | mutex.unlock(MUTEX_COMMAND, 'queryCOPS'); |
54 | resolve(true); | 54 | resolve(true); |
55 | }); | 55 | }); |
56 | }; | 56 | }; |
57 | 57 | ||
58 | exports.queryIMEI = function queryIMEI() { | 58 | exports.queryIMEI = function queryIMEI() { |
59 | return new Promise(async (resolve) => { | 59 | return new Promise(async (resolve) => { |
60 | const parser = new ParserRegex({ regex: parsers.PARSER_WAIT_FOR_OK_OR_ERROR_REGEX }); | 60 | const parser = new ParserRegex({ regex: parsers.PARSER_WAIT_FOR_OK_OR_ERROR_REGEX }); |
61 | parser.on('data', (data) => { | 61 | parser.on('data', (data) => { |
62 | logger.verbose('INCOMING', { parser: 'parserIMEI', data: data.toString() }); | 62 | logger.verbose('INCOMING', { parser: 'parserIMEI', data: data.toString() }); |
63 | port.unpipe(parser); | ||
63 | mutex.unlock(MUTEX_COMMAND, 'queryIMEI'); | 64 | mutex.unlock(MUTEX_COMMAND, 'queryIMEI'); |
64 | resolve(); | 65 | resolve(); |
65 | }); | 66 | }); |
66 | 67 | ||
67 | await mutex.lock(MUTEX_COMMAND, 'queryIMEI'); | 68 | await mutex.lock(MUTEX_COMMAND, 'queryIMEI'); |
68 | 69 | ||
69 | port.pipe(parser); | 70 | port.pipe(parser); |
70 | await writeToPort('AT+CGSN\r'); | 71 | await writeToPort('AT+CGSN\r'); |
71 | port.unpipe(parser); | ||
72 | }); | 72 | }); |
73 | }; | 73 | }; |