modem-commands.js 970 Bytes
const MUTEX_COMMAND = 'COMMAND';
// const MUTEX_SUBCOMMAND = 'SUBCOMMAND';

const logger = require('komodo-sdk/logger');
const mutex = require('./mutex-common');
// const parsers = require('./serialport-parsers');

let port;

function writeToPort(data) {
    return new Promise((resolve) => {
        port.write(data, (err, bytesWritten) => {
            if (err) logger.warn(`ERROR: ${err.toString()}`);

            logger.verbose('OUTGOING', { bytesWritten, data: data.toString() });
            resolve(bytesWritten);
        });
    });
}

exports.setPort = function setPort(val) {
    port = val;
};

exports.querySignalQuality = function querySignalQuality() {
    return new Promise(async (resolve) => {
        if (!mutex.tryLock(MUTEX_COMMAND, 'querySignalQuality')) {
            resolve(false);
            return;
        }

        await writeToPort('AT+CSQ\r');
        mutex.unlock(MUTEX_COMMAND, 'querySignalQuality');
        resolve(true);
    });
};