def get_state_all_devices_android(devices): """Returns state information about all the devices connected to the host. """ state = get_state() if not devices: return state # Add a few values that were poped from dimensions. cpu_type = get_cpu_type() cpu_bitness = get_cpu_bitness() state[u'cpu'] = [ cpu_type, cpu_type + u'-' + cpu_bitness, ] state[u'cores'] = [unicode(get_num_processors())] state[u'gpu'] = get_gpu()[0] machine_type = get_machine_type() if machine_type: state[u'machine_type'] = [machine_type] keys = ( u'board.platform', u'build.fingerprint', u'build.id', u'build.version.sdk', u'product.board', u'product.cpu.abi') def fn(device): if not device.is_valid: return {u'state': 'unauthenticated'} properties = device.cache.build_props if not properties: return {u'state': 'unavailable'} return { u'battery': device.GetBattery(), u'build': {key: properties[u'ro.'+key] for key in keys}, u'cpu': device.GetCPUScale(), u'disk': device.GetDisk(), u'imei': device.GetIMEI(), u'ip': device.GetIPs(), u'max_uid': device.GetLastUID(), u'other_packages': platforms.android.get_unknown_apps(device), u'serial': device.serial, u'state': u'available', u'temp': device.GetTemperatures(), u'uptime': device.GetUptime(), } start = time.time() state[u'devices'] = { device.port_path: out for device, out in zip(devices, parallel.pmap(fn, devices)) } logging.info( 'get_state_all_devices_android() (device part) took %gs' % round(time.time() - start, 1)) return state
def get_state(devices): """Returns state information about all the devices connected to the host. """ keys = (u'board.platform', u'build.product', u'build.fingerprint', u'build.id', u'build.type', u'build.version.sdk', u'product.board', u'product.cpu.abi', u'product.device') def fn(device): if not device.is_valid or device.failure: return {u'state': device.failure or 'unavailable'} properties = device.cache.build_props if not properties: return {u'state': 'unavailable'} no_sd_card = properties.get(u'ro.product.model', '') in ['Chromecast'] return { u'battery': device.GetBattery(), u'build': {key: properties.get(u'ro.' + key, '<missing>') for key in keys}, u'cpu': device.GetCPUScale(), u'disk': device.GetDisk(), u'imei': device.GetIMEI(), u'ip': device.GetIPs(), u'max_uid': device.GetLastUID(), u'mem': device.GetMemInfo(), u'other_packages': get_unknown_apps(device), u'port_path': device.port_path, u'processes': device.GetProcessCount(), u'state': (u'available' if no_sd_card or device.IsFullyBooted()[0] else u'booting'), u'temp': device.GetTemperatures(), u'uptime': device.GetUptime(), } start = time.time() state = { u'devices': { device.serial: out for device, out in zip(devices, parallel.pmap(fn, devices)) } } logging.info('get_state() (device part) took %gs' % round(time.time() - start, 1)) return state