# Copyright (c) 2018-2020, 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.

attribute vendor_hal_alarm_qti;
attribute vendor_hal_alarm_qti_client;
attribute vendor_hal_alarm_qti_server;

attribute vendor_hal_iop;
attribute vendor_hal_iop_client;
attribute vendor_hal_iop_server;

attribute vendor_hal_soter;
attribute vendor_hal_soter_client;
attribute vendor_hal_soter_server;

attribute vendor_hal_sensorscalibrate_qti;
attribute vendor_hal_sensorscalibrate_qti_client;
attribute vendor_hal_sensorscalibrate_qti_server;

attribute vendor_hal_scve;
attribute vendor_hal_scve_client;
attribute vendor_hal_scve_server;

attribute vendor_hal_pasrmanager;
attribute vendor_hal_pasrmanager_client;
attribute vendor_hal_pasrmanager_server;

attribute vendor_hal_qseecom;
attribute vendor_hal_qseecom_client;
attribute vendor_hal_qseecom_server;

attribute vendor_hal_secureprocessor;
attribute vendor_hal_secureprocessor_client;
attribute vendor_hal_secureprocessor_server;

attribute vendor_hal_seccam;
attribute vendor_hal_seccam_client;
attribute vendor_hal_seccam_server;

attribute vendor_hal_vpp;
attribute vendor_hal_vpp_client;
attribute vendor_hal_vpp_server;

attribute vendor_hal_qconfig;
attribute vendor_hal_qconfig_client;
attribute vendor_hal_qconfig_server;

attribute vendor_hal_esepowermanager;
attribute vendor_hal_esepowermanager_client;
attribute vendor_hal_esepowermanager_server;

attribute vendor_hal_factory_qti;
attribute vendor_hal_factory_qti_client;
attribute vendor_hal_factory_qti_server;

attribute vendor_hal_cvp;
attribute vendor_hal_cvp_client;
attribute vendor_hal_cvp_server;

attribute vendor_hal_wigig;
attribute vendor_hal_wigig_client;
attribute vendor_hal_wigig_server;

attribute vendor_hal_wigig_npt;
attribute vendor_hal_wigig_npt_client;
attribute vendor_hal_wigig_npt_server;

attribute vendor_hal_fstman;
attribute vendor_hal_fstman_client;
attribute vendor_hal_fstman_server;

attribute vendor_hal_wifilearner;
attribute vendor_hal_wifilearner_client;
attribute vendor_hal_wifilearner_server;

attribute vendor_hal_srvctracker;
attribute vendor_hal_srvctracker_client;
attribute vendor_hal_srvctracker_server;

attribute vendor_spunvm_file_type;

attribute vendor_hal_bluetooth_dun;
attribute vendor_hal_bluetooth_dun_client;
attribute vendor_hal_bluetooth_dun_server;

attribute vendor_hal_qccvndhal;
attribute vendor_hal_qccvndhal_client;
attribute vendor_hal_qccvndhal_server;

attribute vendor_qtiloopback;
attribute vendor_qtiloopback_server;
attribute vendor_qtiloopback_client;

attribute vendor_hal_debugutils;
attribute vendor_hal_debugutils_client;
attribute vendor_hal_debugutils_server;

attribute vendor_hal_wifimyftm;
attribute vendor_hal_wifimyftm_client;
attribute vendor_hal_wifimyftm_server;

attribute vendor_hal_mem_pasrmanager;
attribute vendor_hal_mem_pasrmanager_client;
attribute vendor_hal_mem_pasrmanager_server;
