modem-info.js 963 Bytes
const MAX_LAST_DATA_AGE_MS = 2 * 60 * 1000;
const INTERVAL_BETWEEN_IDLE_CHECK_MS = 30 * 1000;

const config = require('komodo-sdk/config');
const logger = require('komodo-sdk/logger');

const modemInfo = {
    device: config.modem.device,
    manufacturer: null,
    model: null,
    imei: null,
    imsi: null,
    cops: null,
    networkId: null,
    networkName: null,
    signalStrength: null,
    signalStrengthTs: null,
    signalStrengthTsReadable: null,
    startTime: new Date(),
    lastWriteTs: null,
    lastReadTs: null,
};

if (!config.disable_idle_check) {
    setInterval(() => {
        const deltaMs = new Date() - Math.max(modemInfo.lastWriteTs, modemInfo.startTime);
        if (deltaMs >= (config.max_last_data_age_ms || MAX_LAST_DATA_AGE_MS)) {
            logger.warn(`Modem idle for ${deltaMs} ms. Modem stucked? Terminating!`);
            process.exit(1);
        }
    }, INTERVAL_BETWEEN_IDLE_CHECK_MS);
}

module.exports = modemInfo;