/*
 * Copyright 2018 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef _SOUND_TRIGGER_HW_IAXXX_H_
#define _SOUND_TRIGGER_HW_IAXXX_H_

#define HOTWORD_AUDIO_MODEL  "7038ddc8-30f2-11e6-b0ac-40a8f03d3f15"
#define SENSOR_MANAGER_MODEL "5c0c296d-204c-4c2b-9f85-e50746caf914"
#define AMBIENT_AUDIO_MODEL  "6ac81359-2dc2-4fea-a0a0-bd378ed6da4f"
#define CHRE_AUDIO_MODEL     "57caddb1-acdb-4dce-8cb0-2e95a2313aee"
#define ENTITY_AUDIO_MODEL   "12caddb1-acdb-4dce-8cb0-2e95a2313aee"
#define WAKEUP_MODEL         "e3e60ef3-a81e-4b8b-8c47-6e47b1a672b8"

#endif //_SOUND_TRIGGER_HW_IAXXX_H_
