UNPKG

rubick

Version:

tools for mtc

81 lines (72 loc) 2.31 kB
/** * Created by hongzhiyuan on 2017/4/14. */ "use strict" let co = require('co'); let fs = require('fs'); let adb = require('../../utils/adb'); let sleep = require('co-sleep'); let os = require('os'); let platform = os.platform(); let logger = require('../../log').init('rubick'); let Device = require('./base'); let _instance = null; class DeviceManager { constructor() { if (!_instance) { _instance = this; } this.devices = {}; this.logs = []; return _instance; } init() { logger.info('DeviceManager Start'); co(function* (self) { yield self.getDevices(); }(this)); } getDevices() { logger.info('get devices'); return co(function* (self) { let devices = yield adb.listDevices(); let devicesOn = {}; for (let device of devices) { logger.info(device); let deviceId = device.id; if (deviceId in self.devices) { self.devices[deviceId].adbStatus = device.type; } else { let deviceInstance = Device.getInstance('android', device.id, device.type); self.devices[deviceId] = deviceInstance; } devicesOn[deviceId] = true; } logger.info(self.devices); for (let deviceId of Object.keys(self.devices)) { if (!(deviceId in devicesOn) && (self.devices[deviceId].adbStatus !== 'unexists')) { self.devices[deviceId].adbStatus = 'unexists'; } } }(this)); } getDevice(serial) { if (this.devices.has(serial) && this.devices[serial].adbStatus === 'device') { return this.devices[serial]; } else { return null; } } addDevice(device) { this.devices[device.serial] = device; } all() { let result = []; logger.info(this.devices); for (let deviceId of Object.keys(this.devices)) { result.push(this.devices[deviceId].toJSON()); } return result; } } module.exports = DeviceManager;