Commit 4d1b59244711037ed1edb83daf868e898b9c9ce2

Authored by Adhidarma Hadiwinoto
1 parent 9883a918f3
Exists in master

perbaikan nama queryCOPS

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 ParserReadline = require('@serialport/parser-readline'); 4 const ParserReadline = require('@serialport/parser-readline');
5 const ParserRegex = require('@serialport/parser-regex'); 5 const ParserRegex = require('@serialport/parser-regex');
6 6
7 const logger = require('komodo-sdk/logger'); 7 const logger = require('komodo-sdk/logger');
8 const mutex = require('./mutex-common'); 8 const mutex = require('./mutex-common');
9 const parsers = require('./serialport-parsers'); 9 const parsers = require('./serialport-parsers');
10 const modemInfo = require('./modem-info'); 10 const modemInfo = require('./modem-info');
11 11
12 let port; 12 let port;
13 13
14 function writeToPort(data) { 14 function writeToPort(data) {
15 return new Promise((resolve) => { 15 return new Promise((resolve) => {
16 port.write(data, (err, bytesWritten) => { 16 port.write(data, (err, bytesWritten) => {
17 if (err) logger.warn(`ERROR: ${err.toString()}`); 17 if (err) logger.warn(`ERROR: ${err.toString()}`);
18 18
19 logger.verbose('OUTGOING', { data: data.toString(), bytesWritten, err }); 19 logger.verbose('OUTGOING', { data: data.toString(), bytesWritten, err });
20 resolve(bytesWritten); 20 resolve(bytesWritten);
21 }); 21 });
22 }); 22 });
23 } 23 }
24 24
25 exports.writeToPortAndWaitForReadline = function writeToPortAndWaitForReadline(cmd, lockName) { 25 exports.writeToPortAndWaitForReadline = function writeToPortAndWaitForReadline(cmd, lockName) {
26 return new Promise(async (resolve) => { 26 return new Promise(async (resolve) => {
27 const parser = new ParserReadline({ delimiter: parsers.PARSER_READLINE_DELIMITER }); 27 const parser = new ParserReadline({ delimiter: parsers.PARSER_READLINE_DELIMITER });
28 parser.on('data', (data) => { 28 parser.on('data', (data) => {
29 port.unpipe(parser); 29 port.unpipe(parser);
30 mutex.unlock(lockName || MUTEX_COMMAND, cmd.trim()); 30 mutex.unlock(lockName || MUTEX_COMMAND, cmd.trim());
31 resolve(data); 31 resolve(data);
32 }); 32 });
33 33
34 await mutex.lock(lockName || MUTEX_COMMAND, cmd.trim()); 34 await mutex.lock(lockName || MUTEX_COMMAND, cmd.trim());
35 port.pipe(parser); 35 port.pipe(parser);
36 await writeToPort(cmd); 36 await writeToPort(cmd);
37 }); 37 });
38 }; 38 };
39 39
40 exports.writeToPortAndWaitForOkOrError = function writeToPortAndWaitForOkOrError(cmd, lockName) { 40 exports.writeToPortAndWaitForOkOrError = function writeToPortAndWaitForOkOrError(cmd, lockName) {
41 return new Promise(async (resolve) => { 41 return new Promise(async (resolve) => {
42 const parser = new ParserRegex({ regex: /(?:OK|ERROR)\r\n/ }); 42 const parser = new ParserRegex({ regex: /(?:OK|ERROR)\r\n/ });
43 parser.on('data', (data) => { 43 parser.on('data', (data) => {
44 port.unpipe(parser); 44 port.unpipe(parser);
45 mutex.unlock(lockName || MUTEX_COMMAND, cmd.trim()); 45 mutex.unlock(lockName || MUTEX_COMMAND, cmd.trim());
46 resolve(data); 46 resolve(data);
47 }); 47 });
48 48
49 await mutex.lock(lockName || MUTEX_COMMAND, cmd.trim()); 49 await mutex.lock(lockName || MUTEX_COMMAND, cmd.trim());
50 port.pipe(parser); 50 port.pipe(parser);
51 await writeToPort(cmd); 51 await writeToPort(cmd);
52 }); 52 });
53 }; 53 };
54 54
55 exports.sleep = function sleep(ms) { 55 exports.sleep = function sleep(ms) {
56 return new Promise((resolve) => { 56 return new Promise((resolve) => {
57 setTimeout(() => { 57 setTimeout(() => {
58 resolve(); 58 resolve();
59 }, ms || 0); 59 }, ms || 0);
60 }); 60 });
61 }; 61 };
62 62
63 63
64 exports.setPort = function setPort(val) { 64 exports.setPort = function setPort(val) {
65 port = val; 65 port = val;
66 }; 66 };
67 67
68 exports.querySignalQuality = function querySignalQuality() { 68 exports.querySignalQuality = function querySignalQuality() {
69 return new Promise(async (resolve) => { 69 return new Promise(async (resolve) => {
70 if (!mutex.tryLock(MUTEX_COMMAND, 'querySignalQuality')) { 70 if (!mutex.tryLock(MUTEX_COMMAND, 'querySignalQuality')) {
71 resolve(false); 71 resolve(false);
72 return; 72 return;
73 } 73 }
74 74
75 await writeToPort('AT+CSQ\r'); 75 await writeToPort('AT+CSQ\r');
76 mutex.unlock(MUTEX_COMMAND, 'querySignalQuality'); 76 mutex.unlock(MUTEX_COMMAND, 'querySignalQuality');
77 resolve(true); 77 resolve(true);
78 }); 78 });
79 }; 79 };
80 80
81 exports.queryCOPS = function querySignalQuality() { 81 exports.queryCOPS = function queryCOPS() {
82 return new Promise(async (resolve) => { 82 return new Promise(async (resolve) => {
83 await mutex.lock(MUTEX_COMMAND, 'queryCOPS'); 83 await mutex.lock(MUTEX_COMMAND, 'queryCOPS');
84 await writeToPort('AT+COPS?\r'); 84 await writeToPort('AT+COPS?\r');
85 mutex.unlock(MUTEX_COMMAND, 'queryCOPS'); 85 mutex.unlock(MUTEX_COMMAND, 'queryCOPS');
86 resolve(true); 86 resolve(true);
87 }); 87 });
88 }; 88 };
89 89
90 exports.queryIMEI = function queryIMEI() { 90 exports.queryIMEI = function queryIMEI() {
91 return new Promise(async (resolve) => { 91 return new Promise(async (resolve) => {
92 const parser = new ParserRegex({ regex: parsers.PARSER_WAIT_FOR_OK_OR_ERROR_REGEX }); 92 const parser = new ParserRegex({ regex: parsers.PARSER_WAIT_FOR_OK_OR_ERROR_REGEX });
93 parser.on('data', (data) => { 93 parser.on('data', (data) => {
94 logger.verbose('INCOMING', { data: data.toString(), parser: 'parserIMEI' }); 94 logger.verbose('INCOMING', { data: data.toString(), parser: 'parserIMEI' });
95 port.unpipe(parser); 95 port.unpipe(parser);
96 mutex.unlock(MUTEX_COMMAND, 'queryIMEI'); 96 mutex.unlock(MUTEX_COMMAND, 'queryIMEI');
97 modemInfo.imei = data.toString().trim(); 97 modemInfo.imei = data.toString().trim();
98 resolve(modemInfo.imei); 98 resolve(modemInfo.imei);
99 }); 99 });
100 100
101 await mutex.lock(MUTEX_COMMAND, 'queryIMEI'); 101 await mutex.lock(MUTEX_COMMAND, 'queryIMEI');
102 102
103 port.pipe(parser); 103 port.pipe(parser);
104 await writeToPort('AT+CGSN\r'); 104 await writeToPort('AT+CGSN\r');
105 }); 105 });
106 }; 106 };
107 107
108 exports.queryIMSI = function queryIMSI() { 108 exports.queryIMSI = function queryIMSI() {
109 return new Promise(async (resolve) => { 109 return new Promise(async (resolve) => {
110 const parser = new ParserRegex({ regex: parsers.PARSER_WAIT_FOR_OK_OR_ERROR_REGEX }); 110 const parser = new ParserRegex({ regex: parsers.PARSER_WAIT_FOR_OK_OR_ERROR_REGEX });
111 parser.on('data', (data) => { 111 parser.on('data', (data) => {
112 logger.verbose('INCOMING', { data: data.toString(), parser: 'parserIMSI' }); 112 logger.verbose('INCOMING', { data: data.toString(), parser: 'parserIMSI' });
113 port.unpipe(parser); 113 port.unpipe(parser);
114 mutex.unlock(MUTEX_COMMAND, 'queryIMSI'); 114 mutex.unlock(MUTEX_COMMAND, 'queryIMSI');
115 modemInfo.imsi = data.toString().trim(); 115 modemInfo.imsi = data.toString().trim();
116 resolve(modemInfo.imsi); 116 resolve(modemInfo.imsi);
117 }); 117 });
118 118
119 await mutex.lock(MUTEX_COMMAND, 'queryIMSI'); 119 await mutex.lock(MUTEX_COMMAND, 'queryIMSI');
120 120
121 port.pipe(parser); 121 port.pipe(parser);
122 await writeToPort('AT+CIMI\r'); 122 await writeToPort('AT+CIMI\r');
123 }); 123 });
124 }; 124 };
125 125