UNPKG

huawei-wingle-4g

Version:

This is a module NodeJS allowing to drive Huawei Wingle 4G. This module can :

272 lines 11 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const NetworkStatus_1 = require("../../model/home/NetworkStatus"); const log4js_1 = __importDefault(require("log4js")); const StringUtils_1 = require("../../utils/StringUtils"); const NET_WORK_TYPE_EX_GSM = '1'; const NET_WORK_TYPE_EX_GPRS = '2'; const NET_WORK_TYPE_EX_EDGE = '3'; const NET_WORK_TYPE_EX_IS95A = '21'; const NET_WORK_TYPE_EX_IS95B = '22'; const NET_WORK_TYPE_EX_CDMA_1x = '23'; const NET_WORK_TYPE_EX_HYBRID_CDMA_1x = '27'; const NET_WORK_TYPE_EX_EVDO_REV_0 = '24'; const NET_WORK_TYPE_EX_EVDO_REV_A = '25'; const NET_WORK_TYPE_EX_EVDO_REV_B = '26'; const NET_WORK_TYPE_EX_HYBRID_EVDO_REV_0 = '28'; const NET_WORK_TYPE_EX_HYBRID_EVDO_REV_A = '29'; const NET_WORK_TYPE_EX_HYBRID_EVDO_REV_B = '30'; const NET_WORK_TYPE_EX_EHRPD_REL_0 = '31'; const NET_WORK_TYPE_EX_EHRPD_REL_A = '32'; const NET_WORK_TYPE_EX_EHRPD_REL_B = '33'; const NET_WORK_TYPE_EX_HYBRID_EHRPD_REL_0 = '34'; const NET_WORK_TYPE_EX_HYBRID_EHRPD_REL_A = '35'; const NET_WORK_TYPE_EX_HYBRID_EHRPD_REL_B = '36'; const NET_WORK_TYPE_EX_WCDMA = '41'; const NET_WORK_TYPE_EX_HSDPA = '42'; const NET_WORK_TYPE_EX_HSUPA = '43'; const NET_WORK_TYPE_EX_HSPA = '44'; const NET_WORK_TYPE_EX_HSPA_PLUS = '45'; const NET_WORK_TYPE_EX_DC_HSPA_PLUS = '46'; const NET_WORK_TYPE_EX_TD_SCDMA = '61'; const NET_WORK_TYPE_EX_TD_HSDPA = '62'; const NET_WORK_TYPE_EX_TD_HSUPA = '63'; const NET_WORK_TYPE_EX_TD_HSPA = '64'; const NET_WORK_TYPE_EX_TD_HSPA_PLUS = '65'; const NET_WORK_TYPE_EX_LTE = '101'; const NET_WORK_TYPE_GSM = '1'; const NET_WORK_TYPE_GPRS = '2'; const NET_WORK_TYPE_EDGE = '3'; const NET_WORK_TYPE_1xRTT = '13'; const NET_WORK_TYPE_1xEVDV = '15'; const NET_WORK_TYPE_WCDMA = '4'; const NET_WORK_TYPE_TDSCDMA = '8'; const NET_WORK_TYPE_EVDO_REV_0 = '10'; const NET_WORK_TYPE_EVDO_REV_A = '11'; const NET_WORK_TYPE_EVDO_REV_B = '12'; const NET_WORK_TYPE_HSDPA = '5'; const NET_WORK_TYPE_HSUPA = '6'; const NET_WORK_TYPE_HSPA = '7'; const NET_WORK_TYPE_HSPA_PLUS = '9'; const NET_WORK_TYPE_HSPA_PLUS_64QAM = '17'; const NET_WORK_TYPE_HSPA_PLUS_MIMO = '18'; const NET_WORK_TYPE_LTE = '19'; const DISCONNECTED_STATUS = [ '2', '3', '5', '8', '20', '21', '23', '27', '28', '29', '30', '31', '32', '33', '65538', '65539', '65567', '65568', '131073', '131074', '131076', '131078', '7', '11', '14', '37', '131079', '131080', '131081', '131082', '131083', '131084', '131085', '131086', '131087', '131088', '131089', '905', '12', '13', '902', '112', '114', '113', '115' ]; const CONNECTING_STATUS = '900'; const DISCONNECTING_STATUS = '903'; const CONNECTED_STATUS = '901'; const STATISTIC_TRAFFIC_EXCEEDED_LIMITED = '201'; class NetworktExtractor { constructor(connection) { this.connection = connection; this.logger = log4js_1.default.getLogger(StringUtils_1.substringAfter(__filename, 'huawei-wingle-4g')); } activeLog(activeLog) { this.logger.level = activeLog ? 'debug' : 'OFF'; this.connection.activeLog(activeLog); } getNetwork() { return __awaiter(this, void 0, void 0, function* () { yield this.connection.openHomePage(); const statusDocument = yield this.connectStatus(); const operator = yield this.getOperator(); this.logger.debug(`Operator : ${operator}`); const type = this.getType(statusDocument); this.logger.debug(`Type : ${type}`); const signal = this.getSignal(statusDocument); const status = NetworktExtractor.getNetworkStatus(statusDocument); this.logger.debug(`Status : ${status}`); return { type, operator, signal, status }; }); } getOperator() { return __awaiter(this, void 0, void 0, function* () { const response = yield this.connection.get('/api/net/current-plmn'); const document = response.document; let operatorElement = document.querySelector('ShortName'); let operator = operatorElement === null || operatorElement === void 0 ? void 0 : operatorElement.textContent; if (!operator) { operatorElement = document.querySelector('FullName'); operator = operatorElement === null || operatorElement === void 0 ? void 0 : operatorElement.textContent; } if (!operator) { throw new Error('Unable to find network operator'); } return operator; }); } connectStatus() { return __awaiter(this, void 0, void 0, function* () { const response = yield this.connection.get('/api/monitoring/status'); return response.document; }); } getType(document) { const currentNetworkTypeExElement = document.querySelector('CurrentNetworkTypeEx'); const currentNetworkTypeEx = currentNetworkTypeExElement === null || currentNetworkTypeExElement === void 0 ? void 0 : currentNetworkTypeExElement.textContent; if (currentNetworkTypeEx) { switch (currentNetworkTypeEx) { case NET_WORK_TYPE_EX_GSM: case NET_WORK_TYPE_EX_GPRS: case NET_WORK_TYPE_EX_EDGE: case NET_WORK_TYPE_EX_IS95A: case NET_WORK_TYPE_EX_IS95B: case NET_WORK_TYPE_EX_CDMA_1x: case NET_WORK_TYPE_EX_HYBRID_CDMA_1x: return '2G'; case NET_WORK_TYPE_EX_EVDO_REV_0: case NET_WORK_TYPE_EX_EVDO_REV_A: case NET_WORK_TYPE_EX_EVDO_REV_B: case NET_WORK_TYPE_EX_HYBRID_EVDO_REV_0: case NET_WORK_TYPE_EX_HYBRID_EVDO_REV_A: case NET_WORK_TYPE_EX_HYBRID_EVDO_REV_B: case NET_WORK_TYPE_EX_EHRPD_REL_0: case NET_WORK_TYPE_EX_EHRPD_REL_A: case NET_WORK_TYPE_EX_EHRPD_REL_B: case NET_WORK_TYPE_EX_HYBRID_EHRPD_REL_0: case NET_WORK_TYPE_EX_HYBRID_EHRPD_REL_A: case NET_WORK_TYPE_EX_HYBRID_EHRPD_REL_B: case NET_WORK_TYPE_EX_WCDMA: case NET_WORK_TYPE_EX_HSDPA: case NET_WORK_TYPE_EX_HSUPA: case NET_WORK_TYPE_EX_HSPA: case NET_WORK_TYPE_EX_HSPA_PLUS: case NET_WORK_TYPE_EX_DC_HSPA_PLUS: case NET_WORK_TYPE_EX_TD_SCDMA: case NET_WORK_TYPE_EX_TD_HSDPA: case NET_WORK_TYPE_EX_TD_HSUPA: case NET_WORK_TYPE_EX_TD_HSPA: case NET_WORK_TYPE_EX_TD_HSPA_PLUS: return '3G'; case NET_WORK_TYPE_EX_LTE: return '4G'; default: throw new Error(`Unable to determinate network generation from raw current network type ex : ${currentNetworkTypeEx}'`); } } const currentNetworkTypeElement = document.querySelector('CurrentNetworkType'); const currentNetworkType = currentNetworkTypeElement === null || currentNetworkTypeElement === void 0 ? void 0 : currentNetworkTypeElement.textContent; switch (currentNetworkType) { case NET_WORK_TYPE_GSM: case NET_WORK_TYPE_GPRS: case NET_WORK_TYPE_EDGE: case NET_WORK_TYPE_1xRTT: case NET_WORK_TYPE_1xEVDV: return '2G'; case NET_WORK_TYPE_WCDMA: case NET_WORK_TYPE_TDSCDMA: case NET_WORK_TYPE_EVDO_REV_0: case NET_WORK_TYPE_EVDO_REV_A: case NET_WORK_TYPE_EVDO_REV_B: case NET_WORK_TYPE_HSDPA: case NET_WORK_TYPE_HSUPA: case NET_WORK_TYPE_HSPA: case NET_WORK_TYPE_HSPA_PLUS: case NET_WORK_TYPE_HSPA_PLUS_64QAM: case NET_WORK_TYPE_HSPA_PLUS_MIMO: return '3G'; case NET_WORK_TYPE_LTE: return '4G'; default: throw new Error(`Unable to determinate network generation from raw current network type : ${currentNetworkType}'`); } } getSignal(document) { let signalElement = document.querySelector('SignalStrength'); let signal = signalElement === null || signalElement === void 0 ? void 0 : signalElement.textContent; if (!signal) { signalElement = document.querySelector('SignalIcon'); signal = signalElement === null || signalElement === void 0 ? void 0 : signalElement.textContent; } if (!signal) { throw new Error('Unable to retrieve signal'); } const strength = +signal; this.logger.debug(`Signal strength : ${strength}`); const total = 5; this.logger.debug(`Signal total : ${total}`); return { strength, total }; } static getNetworkStatus(document) { const connectionStatusElement = document.querySelector('ConnectionStatus'); const connectionStatus = connectionStatusElement === null || connectionStatusElement === void 0 ? void 0 : connectionStatusElement.textContent; if (!connectionStatus) { throw new Error('Unable to retrieve network state'); } if (DISCONNECTED_STATUS.includes(connectionStatus)) { return NetworkStatus_1.NetworkStatus.DISCONNECTED; } switch (connectionStatus) { case STATISTIC_TRAFFIC_EXCEEDED_LIMITED: return NetworkStatus_1.NetworkStatus.STATISTIC_TRAFFIC_EXCEEDED_LIMITED; case CONNECTING_STATUS: return NetworkStatus_1.NetworkStatus.CONNECTING; case DISCONNECTING_STATUS: return NetworkStatus_1.NetworkStatus.DISCONNECTING; case CONNECTED_STATUS: return NetworkStatus_1.NetworkStatus.CONNECTED; default: return NetworkStatus_1.NetworkStatus.DISCONNECTED; } } } exports.default = NetworktExtractor; //# sourceMappingURL=NetworkExtractor.js.map