diff --git a/lib/bootstrap.js b/lib/bootstrap.js new file mode 100644 index 0000000..045e531 --- /dev/null +++ b/lib/bootstrap.js @@ -0,0 +1,44 @@ +/** + * Modul modem bootstrap + * @module bootstrap + * @since 2019-09-25 + */ + +const SerialPort = require('serialport'); + +const config = require('komodo-sdk/config'); +const logger = require('komodo-sdk/logger'); + +const parsers = require('./serialport-parsers'); +const modemCommands = require('./modem-commands'); +const modemInfo = require('./modem-info'); + +const port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (err) => { + if (err) { + logger.warn(`Error opening modem. ${err}. Terminating modem ${config.modem.device}.`); + process.exit(1); + } + + await modemCommands.writeToPortAndWaitForOkOrError(`${modemCommands.CTRLZ}AT&FE0\r`); + await modemCommands.initATCommands(); + await modemCommands.queryManufacturer(); + await modemCommands.queryModel(); + await modemCommands.queryIMEIAndIMSI(); + await modemCommands.queryCOPSAndSignalQuality(); + + logger.info('Modem state', modemInfo); + + setInterval(async () => { + await modemCommands.initATCommands(); + await modemCommands.queryManufacturer(); + await modemCommands.queryModel(); + await modemCommands.queryIMEIAndIMSI(); + await modemCommands.queryCOPSAndSignalQuality(); + logger.info('Modem state', modemInfo); + }, config.interval_beetwen_signal_strength_ms || 30000); +}); + +global.MODEM_PORT = port; +parsers.setPort(port); +modemCommands.setPort(port); +port.pipe(parsers.parserReadline); diff --git a/lib/modem-commands/index.js b/lib/modem-commands/index.js index d34dc58..6daa717 100644 --- a/lib/modem-commands/index.js +++ b/lib/modem-commands/index.js @@ -5,6 +5,7 @@ const MUTEX_SUBCOMMAND = 'SUBCOMMAND'; exports.MUTEX_SUBCOMMAND = MUTEX_SUBCOMMAND; const CTRLZ = '\u001a'; +exports.CTRLZ = CTRLZ; const pdu = require('node-pdu'); const uuidv1 = require('uuid/v1'); diff --git a/lib/modem.js b/lib/modem.js index 31a66bc..d79ecaf 100644 --- a/lib/modem.js +++ b/lib/modem.js @@ -1,4 +1,8 @@ -'use strict'; +/** + * Modem module. + * @module + * @deprecated going to move to module:bootstrap + */ const DEFAULT_SLEEP_AFTER_SEND_SMS_MS = 2000; const INTERVAL_BEETWEN_SIGNAL_STRENGTH_MS = 30000;