<!-- Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above
      copyright notice, this list of conditions and the following
      disclaimer in the documentation and/or other materials provided
      with the distribution.
    * Neither the name of The Linux Foundation nor the names of its
      contributors may be used to endorse or promote products derived
      from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<manifest version="1.0" type="framework">
    <!-- atfwd -->
    <hal format="hidl">
        <name>vendor.qti.hardware.radio.atcmdfwd</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>IAtCmdFwd</name>
            <instance>AtCmdFwdService</instance>
        </interface>
    </hal>
    <!--Sigma hal-->
    <hal format="hidl">
        <name>vendor.qti.hardware.sigma_miracast</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>Isigma_miracast</name>
            <instance>sigmahal</instance>
        </interface>
    </hal>
    <!-- System Helper HAL Service -->
    <hal format="hidl">
        <name>vendor.qti.hardware.systemhelper</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>ISystemEvent</name>
            <instance>default</instance>
        </interface>
        <interface>
            <name>ISystemResource</name>
            <instance>default</instance>
        </interface>
   </hal>
    <!--QDMA hal-->
    <hal format="hidl">
        <name>vendor.qti.hardware.qccsyshal</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>IQccsyshal</name>
            <instance>qccsyshal</instance>
        </interface>
    </hal>
</manifest>
