Пример #1
0
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
Пример #2
0
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