# This file describes the properties of a given virtual device configuration file.
#
# Note: Most top-level properties are boolean that control whether a feature is
#       present or not. Sub-features that depend on it are ignored if their
#       parent is set to 'false' or 'no'
#
# This file is parsed by 'android/scripts/gen-hw-config.py' to generate
# 'android/avd/hw-config-defs.h'. The latter is a special header containing
# macro statements that is used several times:
#
#  - once to define the fields of the AndroidHwConfig structure
#    (see android/avd/hw-config.h)
#
#  - once to implement the hardware configuration loader
#    (see android/avd/hw-config.h)
#
# It is also packaged by the SDK and parsed by tools to let the developers
# create AVDs.
#
# NOTE: if you remove items from this file, be sure that you do not break
#       the emulator build.
#

# CPU Architecture
name        = hw.cpu.arch
type        = string
default     = arm
abstract    = CPU Architecture
description = The CPU Architecture to emulator

# CPU Model
# Leave it empty, and the default value will be computed from
# hw.cpu.arch. This is only useful for experimentation for now.
name        = hw.cpu.model
type        = string
default     =
abstract    = CPU model
description = The CPU model (QEMU-specific string)

# SMP count: Number of processors to emulate when SMP is supported.
# Must be > 0.
name        = hw.cpu.ncore
type        = integer
default     = 2
abstract    = SMP CPU core count
description = Number of cores in a simulated SMP CPU.

# Ram size
# Default value will be computed based on screen pixels
# or skin version
name        = hw.ramSize
type        = integer
default     = 0
abstract    = Device ram size
description = The amount of physical RAM on the device, in megabytes.

# Touch screen type
name        = hw.screen
type        = string
enum        = touch, multi-touch, no-touch
default     = multi-touch
abstract    = Touch screen type
description = Defines type of the screen.

# Hardware main keys (back/home)
name        = hw.mainKeys
type        = boolean
default     = yes
abstract    = Hardware Back/Home keys
description = Whether there are hardware back/home keys on the device.

# Trackball support
name        = hw.trackBall
type        = boolean
default     = yes
abstract    = Track-ball support
description = Whether there is a trackball on the device.

# Keyboard support (qwerty/azerty)
name        = hw.keyboard
type        = boolean
default     = no
abstract    = Keyboard support
description = Whether the device has a QWERTY keyboard.

# Keyboard lid support
# (I.e. can the qwerty keyboard be closed/hidden or opened/visible)
# this will be ignored if hw.keyboard is false
#
# NOTE: As a special case, the default value will be 'false' if the
#       AVD targets API level 12 or higher. See hwConfig_init()
#       in external/qemu/android/avd/hw-config.c for more details.
#
name        = hw.keyboard.lid
type        = boolean
default     = yes
abstract    = Keyboard lid support
description = Whether the QWERTY keyboard can be opened/closed.

# The name of the hardware charmap for this device.
#
# NOTE: This should always be the default 'qwerty2' unless you have
#        modified the system image accordingly. This name is sent to
#        the kernel at boot time. Using an incorrect name will result
#        in an unusable machine.
name        = hw.keyboard.charmap
type        = string
default     = qwerty2
abstract    = Keyboard charmap name
description = Name of the system keyboard charmap file.

# DPad keys
name        = hw.dPad
type        = boolean
default     = yes
abstract    = DPad support
description = Whether the device has DPad keys

# Rotary input
name        = hw.rotaryInput
type        = boolean
default     = no
abstract    = Rotary input support
description = Whether the device has rotary input

# GSM Modem support
name        = hw.gsmModem
type        = boolean
default     = yes
abstract    = GSM modem support
description = Whether there is a GSM modem in the device.

# GPS support
name        = hw.gps
type        = boolean
default     = yes
abstract    = GPS support
description = Whether there is a GPS in the device.

# Battery
name        = hw.battery
type        = boolean
default     = yes
abstract    = Battery support
description = Whether the device can run on a battery.

# Accelerometer (used for auto-rotation)
name        = hw.accelerometer
type        = boolean
default     = yes
abstract    = Accelerometer
description = Whether there is an accelerometer in the device.

# Gyroscope (used for VR)
name        = hw.gyroscope
type        = boolean
default     = yes
abstract    = Gyroscope
description = Whether there is a gyroscope in the device.

# Audio input
name        = hw.audioInput
type        = boolean
default     = yes
abstract    = Audio recording support
description = Whether the device can record audio

# Audio output
name        = hw.audioOutput
type        = boolean
default     = yes
abstract    = Audio playback support
description = Whether the device can play audio

# SDCard support
name        = hw.sdCard
type        = boolean
default     = yes
abstract    = SD Card support
description = Whether the device supports insertion/removal of virtual SD Cards.

name        = hw.sdCard.path
type        = string
default     =
abstract    = SD Card image path

name        = hw.logcatOutput.path
type        = string
default     =
abstract    = Logcat Output File Path

# Cache partition
name        = disk.cachePartition
type        = boolean
default     = yes
abstract    = Cache partition support
description = Whether we use a /cache partition on the device.

name        = disk.cachePartition.path
type        = string
default     =
abstract    = Cache partition
description = Cache partition to use on the device. Ignored if disk.cachePartition is not 'yes'.

name        = disk.cachePartition.size
type        = diskSize
abstract    = Cache partition size
default     = 66MB

name        = test.quitAfterBootTimeOut
type        = integer
default     = -1
abstract    = Quit emulator after guest boots completely, or after time out. Default: end of universe.

# LCD width
name        = hw.lcd.width
type        = integer
default     = 320
abstract    = LCD pixel width

name        = hw.lcd.height
type        = integer
default     = 640
abstract    = LCD pixel height

name        = hw.lcd.depth
type        = integer
enum        = 16, 32
default     = 16
abstract    = LCD color depth
description = Color bit depth of emulated framebuffer.

# LCD density
name        = hw.lcd.density
type        = integer
enum        = 120, 160, 240, 213, 320
default     = 160
abstract    = Abstracted LCD density
description = A value used to roughly describe the density of the LCD screen for automatic resource/asset selection.

# LCD backlight - Enable/Disable LCD backlight simulation
# default = no  : Disabled
# default = yes : Enabled
name        = hw.lcd.backlight
type        = boolean
default     = yes
abstract    = LCD backlight
description = Enable/Disable LCD backlight simulation,yes-enabled,no-disabled.

# Hardware OpenGLES emulation support
#
name        = hw.gpu.enabled
type        = boolean
default     = no
abstract    = GPU emulation
description = Enable/Disable emulated OpenGLES GPU

name        = hw.gpu.mode
type        = string
default     = auto
enum        = auto, host, mesa
abstract    = GPU emulation mode
description = This value determines how GPU emulation is implemented.

name        = hw.gpu.blacklisted
type        = string
default     = no
enum        = no, yes
abstract    = GPU on-blacklist mode
description = This value determines if the GPU is considered blacklisted. Testing purposes only.

# Configures the initial orientation: portrait or landscape
#
name        = hw.initialOrientation
type        = string
enum        = portrait, landscape
default     = portrait
abstract    = Initial screen orientation
description = Setup initial screen orientation, can be rotated later on.

# Configures camera facing back
#
name        = hw.camera.back
type        = string
enum        = emulated, none, webcam0, ...
default     = emulated
abstract    = Configures camera facing back
description = Must be 'emulated' for a fake camera, 'webcam<N>' for a web camera, or 'none' if back camera is disabled.

# Configures camera facing front
#
name        = hw.camera.front
type        = string
enum        = emulated, none, webcam0, ...
default     = none
abstract    = Configures camera facing front
description = Must be 'emulated' for a fake camera, 'webcam<N>' for a web camera, or 'none' if front camera is disabled.

# Maximum VM heap size
# Higher values are required for high-dpi devices
# Default will depend on RAM size.
name        = vm.heapSize
type        = integer
default     = 0
abstract    = Max VM application heap size
description = The maximum heap size a Dalvik application might allocate before being killed by the system. Value is in megabytes.

# Light sensor
name        = hw.sensors.light
type        = boolean
default     = yes
abstract    = Light support
description = Whether there is a light sensor in the device

# Pressure sensor
name        = hw.sensors.pressure
type        = boolean
default     = yes
abstract    = Pressure support
description = Whether there is a pressure sensor in the device

# Humidity sensor
name        = hw.sensors.humidity
type        = boolean
default     = yes
abstract    = Humidity support
description = Whether there is a relative humidity sensor in the device

# Proximity sensor
name        = hw.sensors.proximity
type        = boolean
default     = yes
abstract    = Proximity support
description = Whether there is an proximity in the device.

# Magnetic field sensor
name        = hw.sensors.magnetic_field
type        = boolean
default     = yes
abstract    = Magnetic field support
description = Provides magnetic field sensor values.

# Uncalibrated magnetometer (used for VR)
name        = hw.sensors.magnetic_field_uncalibrated
type        = boolean
default     = yes
abstract    = Uncalibrated magnetic field suport
description = Provides uncalibrated magnetic field sensor values.

# Uncalibrated gyroscope
name        = hw.sensors.gyroscope_uncalibrated
type        = boolean
default     = yes
abstract    = Uncalibrated gyroscope support
description = Provides uncalibrated gyroscope sensor values.

# Orientation sensor
name        = hw.sensors.orientation
type        = boolean
default     = yes
abstract    = Orientation support
description = Provides orientation sensor values.

# Temperature sensor
name        = hw.sensors.temperature
type        = boolean
default     = yes
abstract    = Temperature support
description = Provides temperature sensor values.

# File system
name        = hw.useext4
type        = boolean
default     = yes
abstract    = Deprecated option. Ignored.
description = Used to specify the Ext4 partition image type. This is now autodetected.

# Chrome OS devices
name        = hw.arc
type        = boolean
default     = no
abstract    = Chrome OS device (App Runtime for Chrome)
description = The emulated device is a Chrome OS machine.

# Autologin for Chrome OS devices
name        = hw.arc.autologin
type        = boolean
default     = no
abstract    = Auto login for Chrome OS devices
description = Used to enable auto login into Chrome OS devices

# Kernel image.
#
# kernel.path        specified the path to the kernel image
# kernel.parameters  specifies the string of kernel boot parameters.
#
name        = kernel.path
type        = string
default     =
abstract    = Path to the kernel image
description = Path to the kernel image.

name        = kernel.parameters
type        = string
default     =
abstract    = kernel boot parameters string.

name        = kernel.newDeviceNaming
type        = string
enum        = autodetect, yes, no
default     = autodetect
abstract    = Does the kernel require a new device naming scheme?
description = Used to specify whether the kernel requires a new device naming scheme. Typically for Linux 3.10 and above.

name        = kernel.supportsYaffs2
type        = string
enum        = autodetect, yes, no
default     = autodetect
abstract    = Does the kernel supports YAFFS2 partitions?
description = Used to specify whether the kernel supports YAFFS2 partition images. Typically before 3.10 only.

# Path to the ramdisk image.
name        = disk.ramdisk.path
type        = string
default     =
abstract    = Path to the ramdisk image
description = Path to the ramdisk image.

# System partition image(s).
#
# disk.systemPartition.path points to the read/write system partition image.
#   if empty, a temporary file will be created, initialized with the content
#   of .initPath
#
# disk.systemPartition.initPath is only used when .path is empty. It must
# then point to a read-only initialization system image file.
#
# disk.systemPartition.size is the ideal size of the system partition. The
# size is ignored if the actual system partition image is larger. Otherwise,
# it indicates the maximum size the disk image file can grow to.
#
name        = disk.systemPartition.path
type        = string
default     =
abstract    = Path to runtime system partition image

name        = disk.systemPartition.initPath
type        = string
default     =
abstract    = Initial system partition image

name        = disk.systemPartition.size
type        = diskSize
default     = 0
abstract    = Ideal size of system partition

# Vendor partition image(s).

name        = disk.vendorPartition.path
type        = string
default     =
abstract    = Path to runtime vendor partition image

name        = disk.vendorPartition.initPath
type        = string
default     =
abstract    = Initial vendor partition image

name        = disk.vendorPartition.size
type        = diskSize
default     = 0
abstract    = Ideal size of vendor partition

# Path to the data partition.
name        = disk.dataPartition.path
type        = string
default     = <temp>
abstract    = Path to data partition file
description = Path to data partition file. Cannot be empty. Special value <temp> means using a temporary file. If disk.dataPartition.initPath is not empty, its content will be copied to the disk.dataPartition.path file at boot-time.

# Initial path to the data partition.
name        = disk.dataPartition.initPath
type        = string
default     =
abstract    = Initial data partition
description = If not empty, its content will be copied to the disk.dataPartition.path file at boot-time.

# Data partition size.
name        = disk.dataPartition.size
type        = diskSize
default     = 0
abstract    = Ideal size of data partition

# Path to the data partition.
name        = disk.encryptionKeyPartition.path
type        = string
default     =
abstract    = Path to encryption key partition file
description = Path to encryption key partition file. Should be at least 16K bytes empty disk without any filesystem on it.

# Path to the snapshots storage file.
name        = disk.snapStorage.path
type        = string
default     =
abstract    = Path to snapshot storage
description = Path to a 'snapshot storage' file, where all snapshots are stored.

# Is the AVD compatible with Google Play?
name        = PlayStore.enabled
type        = boolean
default     = no
abstract    = PlayStore
description = Does the device supports Google Play?

# Android AVD name
# This is set automatically before launching a core.
#
name        = avd.name
type        = string
default     = <build>
abstract    = Name of the AVD being run

# Force cold boot
# Don't use snapshots for quick booting but boot from scratch instead
#
name        = fastboot.forceColdBoot
type        = boolean
default     = no
abstract    = Always use cold boot
description = If set, AVD will always use the full cold boot instead of snapshot-based quick boot process