# Audio HAL

Directory structure of the audio HAL related code.

Run `common/all-versions/copyHAL.sh` to create a new version of the audio HAL
based on an existing one.

## Directory Structure

* `2.0` — version 2.0 of the core HIDL API. Note that `.hal` files
  can not be moved into the `core` directory because that would change
  its namespace and include path.
   - `config` — the XSD schema for the Audio Policy Manager
     configuration file.
* `4.0` — version 4.0 of the core HIDL API.
* ...
* `common` — common types for audio core and effect HIDL API.
   - `2.0` — version 2.0 of the common types HIDL API.
   - `4.0` — version 4.0.
   - ...
   - `7.0` — version 7.0.
      - `example` — example implementation of the core and effect
        V7.0 API. It represents a "fake" audio HAL that doesn't
        actually communicate with hardware.
   - `all-versions` — code common to all version of both core and effect API.
      - `default` — shared code of the default implementation.
         - `service` — vendor HAL service for hosting the default
           implementation.
      - `test` — utilities used by tests.
      - `util` — utilities used by both implementation and tests.
* `core` — VTS tests and the default implementation of the core API
  (not HIDL API, it's in `audio/N.M`).
   - `7.0` — code specific to version V7.0 of the core HIDL API
   - `all-versions` — the code is common between all versions,
     version-specific parts are enclosed into conditional directives
     of preprocessor or reside in dedicated files.
       - `default` — code that wraps the legacy API (from
         `hardware/libhardware`).
         - `util` — utilities for the default implementation.
       - `vts` VTS tests for the core HIDL API.
* `effect` — same for the effect HIDL API.
   - `2.0`
      - `config` — the XSD schema for the Audio Effects configuration file.
   - `4.0`
   - ...
   - `all-versions`
       - `default` — code that wraps the legacy API (from
         `hardware/libhardware`).
         - `util` — utilities for the default implementation.
       - `vts` VTS tests for the effect HIDL API.
* `policy` — Configurable Audio Policy schemes.
   - `1.0` — note that versions of CAP are not linked to the versions
     of audio HAL.
      - `vts` — VTS tests for validating actual configuration files.
      - `xml` — XSD schemas for CAP configuration files.