/**
 * Copyright 2019-2024 Google LLC
 *
 * 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
 *
 * https://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.
 *
 * \file aoc-interface.h
 *
 * Autogenerated AoC interface matching AoC source code
 * associated with the following source code:
 *
 *   hash: f5eec4d1361abf890797c938f8df2e833b8c3be5
 *
 * DO NOT MODIFY THIS FILE
 *
 */

#ifndef AOC_INTERFACE_H_
#define AOC_INTERFACE_H_


#ifdef __KERNEL__
  #include <linux/kernel.h>
  #include <linux/atomic.h>
#else
  #include <stdint.h>
#endif


/**
 * System timer tick [hz].  All time counts will be based on tick running at this frequency.
 *
 * UUID: 6accf8e101dbb74339802e493e1afdb2
 */
#define AOC_TIMER_FREQUENCY 24576000.0


/**
 * List of supported commands.
 */
enum AOC_COMMAND {
  CMD_RING_BIND_ID = 5, /* [0x0005] ->  struct CMD_RING_BIND */
  CMD_SYS_VERSION_GET_ID = 6, /* [0x0006] ->  struct CMD_SYS_VERSION_GET */
  CMD_SYS_BANNER_ID = 7, /* [0x0007] ->  struct CMD_CORE_GENERIC */
  CMD_SYS_STATS_TOT_ID = 8, /* [0x0008] ->  struct CMD_SYS_STATS_TOT */
  CMD_SYS_STATS_INFO_GET_ID = 9, /* [0x0009] ->  struct CMD_SYS_STATS_INFO_GET */
  CMD_SYS_STATS_TIMED_GET_ID = 10, /* [0x000a] ->  struct CMD_SYS_STATS_TIMED_GET */
  CMD_SYS_STATS_DATA_GET_ID = 11, /* [0x000b] ->  struct CMD_SYS_STATS_DATA_GET */
  CMD_SYS_STATS_ID = 12, /* [0x000c] ->  struct CMD_CORE_GENERIC */
  CMD_SYS_LOGIC_TRACE_ENABLE_ID = 13, /* [0x000d] ->  struct CMD_ENABLE */
  CMD_SYS_LOGIC_TRACE_SCHEME_SET_ID = 14, /* [0x000e] ->  struct CMD_CORE_LOGIC_TRACE_SCHEME */
  CMD_SYS_LOGIC_TRACE_SCHEME_GET_ID = 15, /* [0x000f] ->  struct CMD_CORE_LOGIC_TRACE_SCHEME */
  CMD_DBG_WATCHDOG_TRIGGER_ID = 16, /* [0x0010] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_TREE_ID = 17, /* [0x0011] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_INFO_ID = 18, /* [0x0012] ->  struct CMD_DBG_INFO */
  CMD_DBG_HEAP_ID = 19, /* [0x0013] ->  struct CMD_DBG_HEAP */
  CMD_DBG_LEVEL_GET_ID = 21, /* [0x0015] ->  struct CMD_DBG_LEVEL_GET */
  CMD_DBG_CONTROLLERS_ID = 22, /* [0x0016] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_FILTERS_ID = 23, /* [0x0017] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_PIPES_ID = 24, /* [0x0018] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_POOLS_ID = 25, /* [0x0019] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_RINGS_ID = 26, /* [0x001a] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_IPCS_ID = 27, /* [0x001b] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_FSM_ID = 28, /* [0x001c] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_TASKS_ID = 29, /* [0x001d] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_POWERMAN_ID = 30, /* [0x001e] ->  struct CMD_DBG_POWERMAN */
  CMD_DBG_TIMER_ID = 31, /* [0x001f] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_LOG_ID = 32, /* [0x0020] ->  struct CMD_DBG_LOG */
  CMD_DBG_TIMESTAMP_ID = 33, /* [0x0021] ->  struct CMD_ENABLE */
  CMD_DBG_INTCNTRL_ID = 34, /* [0x0022] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_IPC_SPACES_ID = 35, /* [0x0023] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_IPC_CHANNELS_ID = 36, /* [0x0024] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_MEM_SET_ID = 37, /* [0x0025] ->  struct CMD_DBG_MEM_SET */
  CMD_DBG_MEM_DUMP_ID = 38, /* [0x0026] ->  struct CMD_DBG_MEM_DUMP */
  CMD_DBG_MEM_INVAL_ACCESS_ID = 45, /* [0x002d] ->  struct CMD_CORE_GENERIC */
  CMD_DBG_MCPS_ID = 47, /* [0x002f] ->  struct CMD_DBG_MCPS */
  CMD_DBG_SCRIB_ID = 50, /* [0x0032] ->  struct CMD_DBG_SCRIB */
  CMD_DBG_PRIVATE_ID = 51, /* [0x0033] ->  struct CMD_DBG_PRIVATE */
  CMD_UMFW_STAT_MSG_ID = 52, /* [0x0034] ->  struct CMD_UMFW_STAT_MSG */
  CMD_DBG_HEAP_V2_ID = 54, /* [0x0036] ->  struct CMD_DBG_HEAP_V2 */
  CMD_IPC_NOTIF_ENABLE_ID = 100, /* [0x0064] ->  struct CMD_IPC_NOTIF_ENABLE */
  CMD_AUDIO_OUTPUT_SINK_ID = 200, /* [0x00c8] ->  struct CMD_AUDIO_OUTPUT_SINK */
  CMD_DIAG_CORE_POWER_ID = 200, /* [0x00c8] ->  struct CMD_DIAG_CORE_POWER */
  CMD_AUDIO_OUTPUT_SOURCE_ID = 201, /* [0x00c9] ->  struct CMD_AUDIO_OUTPUT_SOURCE */
  CMD_DIAG_MONITOR_MODE_ID = 201, /* [0x00c9] ->  struct CMD_DIAG_MONITOR_MODE */
  CMD_AOCX_PROCESSOR_ENABLE_ID = 201, /* [0x00c9] ->  struct CMD_AOCX_PROCESSOR_ENABLE */
  CMD_AUDIO_OUTPUT_BIND_ID = 202, /* [0x00ca] ->  struct CMD_AUDIO_OUTPUT_BIND */
  CMD_UWB_GET_RESET_GPIO_ID = 202, /* [0x00ca] ->  struct CMD_UWB_GET_RESET_GPIO */
  CMD_AUDIO_INPUT_MIC_POWER_ON_ID = 203, /* [0x00cb] ->  struct CMD_AUDIO_INPUT_MIC_POWER_ON */
  CMD_AUDIO_OUTPUT_WAV_PLAYBACK_ID = 203, /* [0x00cb] ->  struct CMD_AUDIO_OUTPUT_WAV_PLAYBACK */
  CMD_UWB_SET_RESET_GPIO_ID = 203, /* [0x00cb] ->  struct CMD_UWB_SET_RESET_GPIO */
  CMD_AUDIO_INPUT_MIC_POWER_OFF_ID = 204, /* [0x00cc] ->  struct CMD_AUDIO_INPUT_MIC_POWER_OFF */
  CMD_AUDIO_OUTPUT_GAIN_ID = 204, /* [0x00cc] ->  struct CMD_AUDIO_OUTPUT_GAIN */
  CMD_UWB_GET_RESET_GPIO_DIRECTION_ID = 204, /* [0x00cc] ->  struct CMD_UWB_GET_RESET_GPIO_DIRECTION */
  CMD_AUDIO_INPUT_MIC_GET_POWER_STATE_ID = 205, /* [0x00cd] ->  struct CMD_AUDIO_INPUT_MIC_GET_POWER_STATE */
  CMD_AUDIO_OUTPUT_FX_EQ_ID = 205, /* [0x00cd] ->  struct CMD_AUDIO_OUTPUT_FX_EQ */
  CMD_UWB_SET_RESET_GPIO_DIRECTION_ID = 205, /* [0x00cd] ->  struct CMD_UWB_SET_RESET_GPIO_DIRECTION */
  CMD_AUDIO_INPUT_HOTWORD_ENABLE_AEC_ID = 206, /* [0x00ce] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_EP_SETUP_ID = 206, /* [0x00ce] ->  struct CMD_AUDIO_OUTPUT_EP_SETUP */
  CMD_GET_MEMORY_EXCEPTION_DATA_COUNT_ID = 206, /* [0x00ce] ->  struct CMD_GET_MEMORY_EXCEPTION_DATA_COUNT */
  CMD_AUDIO_INPUT_HOTWORD_DISABLE_AEC_ID = 207, /* [0x00cf] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_DECODE_ID = 207, /* [0x00cf] ->  struct CMD_AUDIO_OUTPUT_DECODE */
  CMD_GET_MEMORY_EXCEPTION_DATA_ID = 207, /* [0x00cf] ->  struct CMD_GET_MEMORY_EXCEPTION_DATA */
  CMD_AUDIO_OUTPUT_AEC_NOTIFY_ID = 208, /* [0x00d0] ->  struct CMD_AUDIO_OUTPUT_AEC_NOTIFY */
  CMD_AUDIO_INPUT_AP_INPUT_START_ID = 208, /* [0x00d0] ->  struct CMD_AUDIO_INPUT_AP_INPUT_START */
  CMD_GET_MEMORY_VOTES_DATA_COUNT_ID = 208, /* [0x00d0] ->  struct CMD_GET_MEMORY_VOTES_DATA_COUNT */
  CMD_AUDIO_OUTPUT_SET_PARAMETER_ID = 209, /* [0x00d1] ->  struct CMD_AUDIO_OUTPUT_SET_PARAMETER */
  CMD_AUDIO_INPUT_AP_INPUT_STOP_ID = 209, /* [0x00d1] ->  struct CMD_HDR */
  CMD_GET_MEMORY_VOTES_DATA_ID = 209, /* [0x00d1] ->  struct CMD_GET_MEMORY_VOTES_DATA */
  CMD_AUDIO_INPUT_MODEM_INPUT_START_ID = 210, /* [0x00d2] ->  struct CMD_AUDIO_INPUT_MODEM_INPUT_START */
  CMD_AUDIO_OUTPUT_SET_PARAMETER_BULK_ID = 210, /* [0x00d2] ->  struct CMD_AUDIO_OUTPUT_SET_PARAMETER_BULK */
  CMD_UDFPS_SET_CLOCK_SOURCE_ID = 210, /* [0x00d2] ->  struct CMD_UDFPS_SET_CLOCK_SOURCE */
  CMD_AUDIO_INPUT_MODEM_INPUT_STOP_ID = 211, /* [0x00d3] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_GET_PARAMETER_ID = 211, /* [0x00d3] ->  struct CMD_AUDIO_OUTPUT_GET_PARAMETER */
  CMD_UDFPS_GET_CLOCK_FREQUENCY_ID = 211, /* [0x00d3] ->  struct CMD_UDFPS_GET_CLOCK_FREQUENCY */
  CMD_AUDIO_OUTPUT_GET_PARAMETER_BULK_ID = 212, /* [0x00d4] ->  struct CMD_AUDIO_OUTPUT_GET_PARAMETER_BULK */
  CMD_MEM_MAP_REGION_ID = 212, /* [0x00d4] ->  struct CMD_MEM_MAP_REGION */
  CMD_AUDIO_OUTPUT_SET_GET_PARAM_BULK_ID = 213, /* [0x00d5] ->  struct CMD_AUDIO_OUTPUT_SET_GET_PARAM_BULK */
  CMD_AP_STATE_TRANSITION_ID = 213, /* [0x00d5] ->  struct CMD_AP_STATE_TRANSITION */
  CMD_AUDIO_INPUT_BT_CAPTURE_START_ID = 214, /* [0x00d6] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_GET_BLOCKS_ID = 214, /* [0x00d6] ->  struct CMD_AUDIO_OUTPUT_GET_BLOCKS */
  CMD_AUDIO_INPUT_BT_CAPTURE_STOP_ID = 215, /* [0x00d7] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_GET_MODULES_ID = 215, /* [0x00d7] ->  struct CMD_AUDIO_OUTPUT_GET_MODULES */
  CMD_AUDIO_INPUT_BT_DECODER_START_ID = 216, /* [0x00d8] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_RESYNC_AUDIO_SINK_ID = 216, /* [0x00d8] ->  struct CMD_AUDIO_OUTPUT_RESYNC_AUDIO_SINK */
  CMD_AUDIO_INPUT_BT_DECODER_STOP_ID = 217, /* [0x00d9] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_BT_DECODER_ENABLE_OUTPUT_ID = 218, /* [0x00da] ->  struct CMD_AUDIO_INPUT_BT_ENABLE_OUTPUT */
  CMD_AUDIO_INPUT_BT_DECODER_DISABLE_OUTPUT_ID = 219, /* [0x00db] ->  struct CMD_AUDIO_INPUT_BT_DISABLE_OUTPUT */
  CMD_AUDIO_INPUT_IN_CALL_SELECT_START_ID = 220, /* [0x00dc] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_IN_CALL_SELECT_STOP_ID = 221, /* [0x00dd] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_IN_CALL_SELECT_ENABLE_OUTPUT_ID = 222, /* [0x00de] ->  struct CMD_AUDIO_INPUT_IN_CALL_SELECT_ENABLE_OUTPUT */
  CMD_AUDIO_INPUT_IN_CALL_SELECT_DISABLE_OUTPUT_ID = 223, /* [0x00df] ->  struct CMD_AUDIO_INPUT_IN_CALL_SELECT_DISABLE_OUTPUT */
  CMD_AUDIO_INPUT_MIC_RECORD_AP_SET_PARAMS_ID = 224, /* [0x00e0] ->  struct CMD_AUDIO_INPUT_MIC_RECORD_AP_SET_PARAMS */
  CMD_AUDIO_OUTPUT_CFG_HAPTICS_ID = 224, /* [0x00e0] ->  struct CMD_AUDIO_OUTPUT_CFG_HAPTICS */
  CMD_AUDIO_INPUT_MIC_RECORD_AP_START_ID = 225, /* [0x00e1] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_CFG_SIGGEN_ID = 225, /* [0x00e1] ->  struct CMD_AUDIO_OUTPUT_CFG_SIGGEN */
  CMD_AUDIO_INPUT_MIC_RECORD_AP_STOP_ID = 226, /* [0x00e2] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_HOTWORD_START_ID = 227, /* [0x00e3] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_HOTWORD_STOP_ID = 228, /* [0x00e4] ->  struct CMD_HDR */
  CMD_USB_CONTROL_GET_XHCI_VERSION_ID = 228, /* [0x00e4] ->  struct CMD_USB_CONTROL_GET_XHCI_VERSION */
  CMD_AUDIO_INPUT_MIC_LOOPBACK_START_ID = 229, /* [0x00e5] ->  struct CMD_AUDIO_INPUT_ENABLE_MIC_LOOPBACK */
  CMD_AUDIO_INPUT_MIC_LOOPBACK_STOP_ID = 230, /* [0x00e6] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_GET_EP_CUR_SAMPLES_ID = 230, /* [0x00e6] ->  struct CMD_AUDIO_OUTPUT_GET_EP_SAMPLES */
  CMD_AUDIO_OUTPUT_GET_EP_TOT_SAMPLES_ID = 231, /* [0x00e7] ->  struct CMD_AUDIO_OUTPUT_GET_EP_SAMPLES */
  CMD_AUDIO_INPUT_SPATIAL_START_ID = 231, /* [0x00e7] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_DECODE_FLUSH_RB_ID = 232, /* [0x00e8] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_SPATIAL_STOP_ID = 232, /* [0x00e8] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_GET_DSP_STATE_ID = 233, /* [0x00e9] ->  struct CMD_AUDIO_OUTPUT_GET_DSP_STATE */
  CMD_AUDIO_INPUT_SET_PARAMETER_ID = 233, /* [0x00e9] ->  struct CMD_AUDIO_INPUT_SET_PARAMETER */
  CMD_AUDIO_OUTPUT_GET_SINK_PROCESSING_STATE_ID = 234, /* [0x00ea] ->  struct CMD_AUDIO_OUTPUT_GET_SINK_PROCESSING_STATE */
  CMD_AUDIO_INPUT_SET_PARAMETER_BULK_ID = 234, /* [0x00ea] ->  struct CMD_AUDIO_INPUT_SET_PARAMETER_BULK */
  CMD_USB_CONTROL_SETUP_ID = 235, /* [0x00eb] ->  struct CMD_USB_CONTROL_SETUP */
  CMD_AUDIO_INPUT_GET_PARAMETER_ID = 235, /* [0x00eb] ->  struct CMD_AUDIO_INPUT_GET_PARAMETER */
  CMD_USB_CONTROL_STATUS_GET_ID = 236, /* [0x00ec] ->  struct CMD_USB_CONTROL_STATUS_GET */
  CMD_AUDIO_INPUT_GET_PARAMETER_BULK_ID = 236, /* [0x00ec] ->  struct CMD_AUDIO_INPUT_GET_PARAMETER_BULK */
  CMD_AUDIO_INPUT_SET_GET_PARAM_BULK_ID = 237, /* [0x00ed] ->  struct CMD_AUDIO_INPUT_SET_GET_PARAM_BULK */
  CMD_USB_CONTROL_GET_DEVICE_CONTEXT_ID = 238, /* [0x00ee] ->  struct CMD_USB_CONTROL_GET_DEVICE_CONTEXT */
  CMD_AUDIO_INPUT_GET_BLOCKS_ID = 238, /* [0x00ee] ->  struct CMD_AUDIO_INPUT_GET_BLOCKS */
  CMD_USB_CONTROL_GET_TR_DEQ_PTR_ID = 239, /* [0x00ef] ->  struct CMD_USB_CONTROL_GET_TR_DEQ_PTR */
  CMD_AUDIO_INPUT_GET_MODULES_ID = 239, /* [0x00ef] ->  struct CMD_AUDIO_INPUT_GET_MODULES */
  CMD_USB_CONTROL_NOTIFY_CONN_STAT_ID = 240, /* [0x00f0] ->  struct CMD_USB_CONTROL_NOTIFY_CONN_STAT */
  CMD_AUDIO_INPUT_HOTWORD_TEST_TRIGGER_ID = 240, /* [0x00f0] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_HOTWORD_DETECTED_ID = 241, /* [0x00f1] ->  struct CMD_AUDIO_INPUT_AMBIENT_MUSIC_DETECTED */
  CMD_AUDIO_OUTPUT_FACTORY_TEST_ID = 241, /* [0x00f1] ->  struct CMD_AUDIO_OUTPUT_FACTORY_TEST */
  CMD_AUDIO_OUTPUT_BT_A2DP_ENC_CFG_ID = 242, /* [0x00f2] ->  struct CMD_AUDIO_OUTPUT_BT_A2DP_ENC_CFG */
  CMD_USB_CONTROL_GET_DCBAA_PTR_ID = 243, /* [0x00f3] ->  struct CMD_USB_CONTROL_GET_DCBAA_PTR */
  CMD_USB_CONTROL_GET_ISOC_TR_INFO_ID = 244, /* [0x00f4] ->  struct CMD_USB_CONTROL_GET_ISOC_TR_INFO */
  CMD_AUDIO_OUTPUT_GET_SINKS_BITMAPS_ID = 245, /* [0x00f5] ->  struct CMD_AUDIO_OUTPUT_GET_SINKS_BITMAPS */
  CMD_AUDIO_INPUT_GET_MIC_STATUS_ID = 246, /* [0x00f6] ->  struct CMD_AUDIO_INPUT_GET_MIC_STATUS */
  CMD_AUDIO_OUTPUT_USB_CONFIG_ID = 246, /* [0x00f6] ->  struct CMD_AUDIO_OUTPUT_USB_CONFIG */
  CMD_AUDIO_INPUT_GET_MIC_CLOCK_FREQUENCY_ID = 247, /* [0x00f7] ->  struct CMD_AUDIO_INPUT_GET_MIC_CLOCK_FREQUENCY */
  CMD_AUDIO_OUTPUT_SET_SIDETONE_ID = 247, /* [0x00f7] ->  struct CMD_AUDIO_OUTPUT_SET_SIDETONE */
  CMD_AUDIO_INPUT_GET_MIC_LOW_POWER_HW_GAIN_ID = 248, /* [0x00f8] ->  struct CMD_AUDIO_INPUT_GET_MIC_LOW_POWER_HW_GAIN */
  CMD_AUDIO_OUTPUT_GET_SIDETONE_ID = 248, /* [0x00f8] ->  struct CMD_AUDIO_OUTPUT_GET_SIDETONE */
  CMD_AUDIO_INPUT_GET_MIC_HIGH_POWER_HW_GAIN_ID = 249, /* [0x00f9] ->  struct CMD_AUDIO_INPUT_GET_MIC_HIGH_POWER_HW_GAIN */
  CMD_AUDIO_OUTPUT_SET_SIDETONE_EQ_ID = 249, /* [0x00f9] ->  struct CMD_AUDIO_OUTPUT_SET_SIDETONE_EQ */
  CMD_AUDIO_INPUT_GET_MIC_CURRENT_HW_GAIN_ID = 250, /* [0x00fa] ->  struct CMD_AUDIO_INPUT_GET_MIC_CURRENT_HW_GAIN */
  CMD_AUDIO_OUTPUT_GET_SIDETONE_EQ_ID = 250, /* [0x00fa] ->  struct CMD_AUDIO_OUTPUT_GET_SIDETONE_EQ */
  CMD_AUDIO_INPUT_GET_MIC_DC_BLOCKER_ID = 251, /* [0x00fb] ->  struct CMD_AUDIO_INPUT_GET_MIC_DC_BLOCKER */
  CMD_AUDIO_OUTPUT_SET_TELE_CAPTURE_ID = 251, /* [0x00fb] ->  struct CMD_AUDIO_OUTPUT_TELE_CAPTURE */
  CMD_AUDIO_INPUT_SET_MIC_DC_BLOCKER_ID = 252, /* [0x00fc] ->  struct CMD_AUDIO_INPUT_SET_MIC_DC_BLOCKER */
  CMD_AUDIO_OUTPUT_GET_TELE_CAPTURE_ID = 252, /* [0x00fc] ->  struct CMD_AUDIO_OUTPUT_TELE_CAPTURE */
  CMD_AUDIO_INPUT_SET_MIC_LOW_POWER_HW_GAIN_ID = 253, /* [0x00fd] ->  struct CMD_AUDIO_INPUT_SET_MIC_LOW_POWER_HW_GAIN */
  CMD_AUDIO_OUTPUT_DECODER_CFG_ID = 253, /* [0x00fd] ->  struct CMD_AUDIO_OUTPUT_DECODER_CFG */
  CMD_AUDIO_INPUT_SET_MIC_HIGH_POWER_HW_GAIN_ID = 254, /* [0x00fe] ->  struct CMD_AUDIO_INPUT_SET_MIC_HIGH_POWER_HW_GAIN */
  CMD_AUDIO_OUTPUT_SET_TELE_CAPT_ID = 254, /* [0x00fe] ->  struct CMD_AUDIO_OUTPUT_TELE_CAPT */
  CMD_AUDIO_OUTPUT_GET_TELE_CAPT_ID = 255, /* [0x00ff] ->  struct CMD_AUDIO_OUTPUT_TELE_CAPT */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_START_ID = 256, /* [0x0100] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_TELEPHONY_MODEM_START_ID = 256, /* [0x0100] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_STOP_ID = 257, /* [0x0101] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_TELEPHONY_MODEM_STOP_ID = 257, /* [0x0101] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_TEST_TRIGGER_ID = 258, /* [0x0102] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_TELEPHONY_VOIP_START_ID = 258, /* [0x0102] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_DETECTED_ID = 259, /* [0x0103] ->  struct CMD_AUDIO_INPUT_AMBIENT_MUSIC_DETECTED */
  CMD_AUDIO_OUTPUT_TELEPHONY_VOIP_STOP_ID = 259, /* [0x0103] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_HOTWORD_WRITE_MODEL_ID = 260, /* [0x0104] ->  struct CMD_AUDIO_INPUT_HOTWORD_WRITE_MODEL */
  CMD_AUDIO_OUTPUT_SPKR_ANDROID_AEC_START_ID = 260, /* [0x0104] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_HOTWORD_LOAD_MODEL_ID = 261, /* [0x0105] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_SPKR_ANDROID_AEC_STOP_ID = 261, /* [0x0105] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_HOTWORD_UNLOAD_MODEL_ID = 262, /* [0x0106] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_USB_HIFI_PLAYBACK_START_ID = 262, /* [0x0106] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_WRITE_MODEL_ID = 263, /* [0x0107] ->  struct CMD_AUDIO_INPUT_AMBIENT_MUSIC_WRITE_MODEL */
  CMD_AUDIO_OUTPUT_USB_HIFI_PLAYBACK_STOP_ID = 263, /* [0x0107] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_LOAD_MODEL_ID = 264, /* [0x0108] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_DEC_CH_GAIN_SET_ID = 264, /* [0x0108] ->  struct CMD_AUDIO_OUTPUT_DEC_CH_GAIN */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_UNLOAD_MODEL_ID = 265, /* [0x0109] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_DEC_CH_GAIN_GET_ID = 265, /* [0x0109] ->  struct CMD_AUDIO_OUTPUT_DEC_CH_GAIN */
  CMD_AUDIO_INPUT_GET_AP_MIC_INDEX_ID = 266, /* [0x010a] ->  struct CMD_AUDIO_INPUT_GET_AP_MIC_INDEX */
  CMD_AUDIO_OUTPUT_SET_INCALL_MUSIC_ID = 266, /* [0x010a] ->  struct CMD_AUDIO_OUTPUT_INCALL_MUSIC */
  CMD_AUDIO_INPUT_HOTWORD_FORCE_TRIGGER_TIMESTAMP_ID = 267, /* [0x010b] ->  struct CMD_AUDIO_INPUT_HOTWORD_FORCE_TRIGGER_TIMESTAMP */
  CMD_AUDIO_OUTPUT_SET_INCALL_MUSIC_CHAN_ID = 267, /* [0x010b] ->  struct CMD_AUDIO_OUTPUT_INCALL_MUSIC_CHAN */
  CMD_AUDIO_INPUT_HOTWORD_FORCE_TRIGGER_ID = 268, /* [0x010c] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_GET_INCALL_MUSIC_ID = 268, /* [0x010c] ->  struct CMD_AUDIO_OUTPUT_INCALL_MUSIC */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_FORCE_TRIGGER_ID = 269, /* [0x010d] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_GET_INCALL_MUSIC_CHAN_ID = 269, /* [0x010d] ->  struct CMD_AUDIO_OUTPUT_INCALL_MUSIC_CHAN */
  CMD_AUDIO_INPUT_HOTWORD_SRC_GET_SAMPLE_RATE_ID = 270, /* [0x010e] ->  struct CMD_AUDIO_INPUT_HOTWORD_SRC_GET_SAMPLE_RATE */
  CMD_AUDIO_OUTPUT_SINK2_ID = 270, /* [0x010e] ->  struct CMD_AUDIO_OUTPUT_SINK2 */
  CMD_AUDIO_INPUT_HOTWORD_SRC_GET_BIT_DEPTH_ID = 271, /* [0x010f] ->  struct CMD_AUDIO_INPUT_HOTWORD_SRC_GET_BIT_DEPTH */
  CMD_AUDIO_OUTPUT_BIND2_ID = 271, /* [0x010f] ->  struct CMD_AUDIO_OUTPUT_BIND */
  CMD_AUDIO_INPUT_HOTWORD_SRC_GET_CHANNEL_ID = 272, /* [0x0110] ->  struct CMD_AUDIO_INPUT_HOTWORD_SRC_GET_CHANNEL */
  CMD_USB_CONTROL_SET_DCBAA_PTR_ID = 272, /* [0x0110] ->  struct CMD_USB_CONTROL_SET_DCBAA_PTR */
  CMD_AUDIO_INPUT_HOTWORD_SRC_GET_INPUT_PATH_ID = 273, /* [0x0111] ->  struct CMD_AUDIO_INPUT_HOTWORD_SRC_GET_INPUT_PATH */
  CMD_USB_CONTROL_SET_ISOC_TR_INFO_ID = 273, /* [0x0111] ->  struct CMD_USB_CONTROL_SET_ISOC_TR_INFO */
  CMD_AUDIO_INPUT_HOTWORD_GET_ERASER_PRE_GAIN_ID = 274, /* [0x0112] ->  struct CMD_AUDIO_INPUT_HOTWORD_GET_ERASER_PRE_GAIN */
  CMD_AUDIO_OUTPUT_USB_CONFIG_V2_ID = 274, /* [0x0112] ->  struct CMD_AUDIO_OUTPUT_USB_CONFIG_V2 */
  CMD_AUDIO_INPUT_HOTWORD_SET_ERASER_PRE_GAIN_ID = 275, /* [0x0113] ->  struct CMD_AUDIO_INPUT_HOTWORD_SET_ERASER_PRE_GAIN */
  CMD_USB_CONTROL_NOTIFY_CONN_STAT_V2_ID = 275, /* [0x0113] ->  struct CMD_USB_CONTROL_NOTIFY_CONN_STAT_V2 */
  CMD_AUDIO_INPUT_HOTWORD_GET_ERASER_POST_GAIN_ID = 276, /* [0x0114] ->  struct CMD_AUDIO_INPUT_HOTWORD_GET_ERASER_POST_GAIN */
  CMD_AUDIO_INPUT_HOTWORD_SET_ERASER_POST_GAIN_ID = 277, /* [0x0115] ->  struct CMD_AUDIO_INPUT_HOTWORD_SET_ERASER_POST_GAIN */
  CMD_AUDIO_OUTPUT_DSP_MODE_SET_ID = 277, /* [0x0115] ->  struct CMD_AUDIO_OUTPUT_DSP_MODE */
  CMD_AUDIO_INPUT_HOTWORD_GET_NON_ERASER_GAIN_ID = 278, /* [0x0116] ->  struct CMD_AUDIO_INPUT_HOTWORD_GET_NON_ERASER_GAIN */
  CMD_AUDIO_OUTPUT_DSP_MODE_GET_ID = 278, /* [0x0116] ->  struct CMD_AUDIO_OUTPUT_DSP_MODE */
  CMD_AUDIO_INPUT_HOTWORD_SET_NON_ERASER_GAIN_ID = 279, /* [0x0117] ->  struct CMD_AUDIO_INPUT_HOTWORD_SET_NON_ERASER_GAIN */
  CMD_AUDIO_OUTPUT_DEC_RESET_CURRENT_GAIN_ID = 279, /* [0x0117] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_SET_INCALL_MUSIC_ID = 280, /* [0x0118] ->  struct CMD_AUDIO_INPUT_INCALL_MUSIC */
  CMD_USB_CONTROL_SET_OFFLOAD_STATE_ID = 280, /* [0x0118] ->  struct CMD_USB_CONTROL_SET_OFFLOAD_STATE */
  CMD_AUDIO_INPUT_GET_INCALL_MUSIC_ID = 281, /* [0x0119] ->  struct CMD_AUDIO_INPUT_INCALL_MUSIC */
  CMD_AUDIO_OUTPUT_VOICE_CCA_START_ID = 281, /* [0x0119] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_GET_DSP_IDENTIFIER_ID = 282, /* [0x011a] ->  struct CMD_AUDIO_INPUT_DSP_IDENTIFIER */
  CMD_AUDIO_OUTPUT_VOICE_CCA_STOP_ID = 282, /* [0x011a] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_START_ID = 283, /* [0x011b] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_DECODER_CFG_GAPLESS_ID = 283, /* [0x011b] ->  struct CMD_AUDIO_OUTPUT_DECODER_CFG */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_STOP_ID = 284, /* [0x011c] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_DECODER_GAPLESS_METADATA_ID = 284, /* [0x011c] ->  struct CMD_AUDIO_OUTPUT_DECODER_GAPLESS_METADATA */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_TEST_TRIGGER_ID = 285, /* [0x011d] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_DECODER_GAPLESS_PARTIAL_DRAIN_ID = 285, /* [0x011d] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_DETECTED_ID = 286, /* [0x011e] ->  struct CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_DETECTED */
  CMD_AUDIO_OUTPUT_DECODER_GAPLESS_DEINIT_ID = 286, /* [0x011e] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_WRITE_MODEL_ID = 287, /* [0x011f] ->  struct CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_WRITE_MODEL */
  CMD_USB_CONTROL_SEND_FEEDBACK_EP_INFO_ID = 287, /* [0x011f] ->  struct CMD_USB_CONTROL_SEND_FEEDBACK_EP_INFO */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_LOAD_MODEL_ID = 288, /* [0x0120] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_UNLOAD_MODEL_ID = 289, /* [0x0121] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_TELEPHONY_RTP_START_ID = 289, /* [0x0121] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_TELEPHONY_RTP_STOP_ID = 290, /* [0x0122] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_VOICE_ENABLE_CCA_ON_VOIP_ID = 291, /* [0x0123] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MIC_RECORD_AP_START_PREPARE_ID = 292, /* [0x0124] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_VOICE_DISABLE_CCA_ON_VOIP_ID = 292, /* [0x0124] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MIC_RECORD_AP_START_DATA_ID = 293, /* [0x0125] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_MEL_STATE_ID = 293, /* [0x0125] ->  struct CMD_AUDIO_OUTPUT_MEL_STATE */
  CMD_AUDIO_INPUT_MIC_MMAP_ENABLE_ID = 294, /* [0x0126] ->  struct CMD_AUDIO_INPUT_AP_INPUT_START */
  CMD_AUDIO_OUTPUT_MEL_SET_RS2_ID = 294, /* [0x0126] ->  struct CMD_AUDIO_OUTPUT_MEL_RS2 */
  CMD_AUDIO_INPUT_MIC_MMAP_DISABLE_ID = 295, /* [0x0127] ->  struct CMD_HDR */
  CMD_AUDIO_OUTPUT_MEL_GET_RS2_ID = 295, /* [0x0127] ->  struct CMD_AUDIO_OUTPUT_MEL_RS2 */
  CMD_AUDIO_INPUT_GET_CHRE_GAIN_ID = 296, /* [0x0128] ->  struct CMD_AUDIO_INPUT_GET_CHRE_GAIN */
  CMD_AUDIO_OUTPUT_MEL_TRIGGER_ID = 296, /* [0x0128] ->  struct CMD_AUDIO_OUTPUT_MEL_TRIGGER */
  CMD_AUDIO_INPUT_SET_CHRE_GAIN_ID = 297, /* [0x0129] ->  struct CMD_AUDIO_INPUT_SET_CHRE_GAIN */
  CMD_AUDIO_OUTPUT_MEL_GET_VALUE_ID = 297, /* [0x0129] ->  struct CMD_AUDIO_OUTPUT_MEL_GET_VALUE */
  CMD_AUDIO_INPUT_HOTWORD_GET_CLEANER_POST_GAIN_ID = 298, /* [0x012a] ->  struct CMD_AUDIO_INPUT_HOTWORD_GET_CLEANER_POST_GAIN */
  CMD_AUDIO_OUTPUT_EP_SETUP2_ID = 298, /* [0x012a] ->  struct CMD_AUDIO_OUTPUT_EP_SETUP2 */
  CMD_AUDIO_INPUT_HOTWORD_SET_CLEANER_POST_GAIN_ID = 299, /* [0x012b] ->  struct CMD_AUDIO_INPUT_HOTWORD_SET_CLEANER_POST_GAIN */
  CMD_AUDIO_INPUT_WNR_START_ID = 301, /* [0x012d] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_WNR_STOP_ID = 302, /* [0x012e] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_SPATIAL_CAPTURE_START_ID = 303, /* [0x012f] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_SPATIAL_CAPTURE_STOP_ID = 304, /* [0x0130] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MIC_RAW_ENABLE_ID = 305, /* [0x0131] ->  struct CMD_AUDIO_INPUT_AP_INPUT_START */
  CMD_AUDIO_INPUT_MIC_RAW_DISABLE_ID = 306, /* [0x0132] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_USB_HIFI_CAPTURE_START_ID = 307, /* [0x0133] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_USB_HIFI_CAPTURE_STOP_ID = 308, /* [0x0134] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_SET_INCALL_MUSIC_CHAN_ID = 309, /* [0x0135] ->  struct CMD_AUDIO_INPUT_INCALL_MUSIC_CHAN */
  CMD_AUDIO_INPUT_GET_INCALL_MUSIC_CHAN_ID = 310, /* [0x0136] ->  struct CMD_AUDIO_INPUT_INCALL_MUSIC_CHAN */
  CMD_AUDIO_INPUT_MMAP_ENABLE_2_ID = 313, /* [0x0139] ->  struct CMD_AUDIO_INPUT_MMAP_ENABLE_2 */
  CMD_AUDIO_INPUT_RAW_ENABLE_2_ID = 314, /* [0x013a] ->  struct CMD_AUDIO_INPUT_RAW_ENABLE_2 */
  CMD_AUDIO_INPUT_SET_AP_MIC_INDEX_ID = 319, /* [0x013f] ->  struct CMD_AUDIO_INPUT_GET_AP_MIC_INDEX */
  CMD_AUDIO_INPUT_DIRECT_ULTRASONIC_CAPTURE_ENABLE_ID = 320, /* [0x0140] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_DIRECT_ULTRASONIC_CAPTURE_DISABLE_ID = 321, /* [0x0141] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MIC_RECORD_AP_ENABLE_AEC_ID = 322, /* [0x0142] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MIC_RECORD_AP_DISABLE_AEC_ID = 323, /* [0x0143] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MODEM_INPUT_START_2_ID = 324, /* [0x0144] ->  struct CMD_AUDIO_INPUT_MODEM_INPUT_START_2 */
  CMD_AUDIO_INPUT_HOTWORD_SELECT_AEC_REF_ID = 325, /* [0x0145] ->  struct CMD_AUDIO_INPUT_FEEDBACK_SRC_SELECT_REF */
  CMD_AUDIO_INPUT_ULTRASONIC_CAPTURE_START_ID = 326, /* [0x0146] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_ULTRASONIC_CAPTURE_STOP_ID = 327, /* [0x0147] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_ULTRASONIC_AP_SET_PARAMS_ID = 328, /* [0x0148] ->  struct CMD_AUDIO_INPUT_MIC_RECORD_AP_SET_PARAMS */
  CMD_AUDIO_INPUT_ULTRASONIC_AP_START_ID = 329, /* [0x0149] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MEDIA_COMMANDS_START_ID = 330, /* [0x014a] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MEDIA_COMMANDS_STOP_ID = 331, /* [0x014b] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MEDIA_COMMANDS_TEST_TRIGGER_ID = 332, /* [0x014c] ->  struct CMD_AUDIO_INPUT_AMBIENT_MUSIC_DETECTED */
  CMD_AUDIO_INPUT_MEDIA_COMMANDS_DETECTED_ID = 333, /* [0x014d] ->  struct CMD_AUDIO_INPUT_AMBIENT_MUSIC_DETECTED */
  CMD_AUDIO_INPUT_MEDIA_COMMANDS_WRITE_MODEL_ID = 334, /* [0x014e] ->  struct CMD_AUDIO_INPUT_MEDIA_COMMANDS_WRITE_MODEL */
  CMD_AUDIO_INPUT_MEDIA_COMMANDS_LOAD_MODEL_ID = 335, /* [0x014f] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MEDIA_COMMANDS_UNLOAD_MODEL_ID = 336, /* [0x0150] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_HOTWORD_SET_AP_OFFLOAD_ID = 339, /* [0x0153] ->  struct CMD_AUDIO_INPUT_HOTWORD_SET_AP_OFFLOAD */
  CMD_AUDIO_INPUT_CAPTURE_INJECTION_START_ID = 340, /* [0x0154] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_CAPTURE_INJECTION_STOP_ID = 341, /* [0x0155] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_HOTWORD_ENABLE_PRIMARY_MIC_SWAP_ID = 342, /* [0x0156] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_HOTWORD_DISABLE_PRIMARY_MIC_SWAP_ID = 343, /* [0x0157] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_SET_CHRE_SRC_AEC_TIMEOUT_ID = 345, /* [0x0159] ->  struct CMD_AUDIO_INPUT_SET_CHRE_SRC_AEC_TIMEOUT */
  CMD_AUDIO_INPUT_SET_CHRE_SRC_PDM_GAIN_ID = 346, /* [0x015a] ->  struct CMD_AUDIO_INPUT_SET_CHRE_SRC_PDM_GAIN */
  CMD_AUDIO_INPUT_SET_CHRE_SRC_AEC_GAIN_ID = 347, /* [0x015b] ->  struct CMD_AUDIO_INPUT_SET_CHRE_SRC_AEC_GAIN */
  CMD_AUDIO_INPUT_HOTWORD_ENABLE_NEURAL_AEC_ID = 350, /* [0x015e] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_HOTWORD_DISABLE_NEURAL_AEC_ID = 351, /* [0x015f] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_HOTWORD_ENABLE_HOTWORD_TAP_ID = 352, /* [0x0160] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_HOTWORD_DISABLE_HOTWORD_TAP_ID = 353, /* [0x0161] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_HOTWORD_GET_BUFFER_TIMESTAMP_ID = 354, /* [0x0162] ->  struct CMD_AUDIO_INPUT_HOTWORD_GET_BUFFER_TIMESTAMP */
  CMD_AUDIO_INPUT_MIC_COMPENSATION_ENABLE_ID = 355, /* [0x0163] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MIC_COMPENSATION_DISABLE_ID = 356, /* [0x0164] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MIC_RECORD_AP_SET_PARAMS2_ID = 359, /* [0x0167] ->  struct CMD_AUDIO_INPUT_MIC_RECORD_AP_SET_PARAMS2 */
  CMD_AUDIO_INPUT_ULTRASONIC_AP_SET_PARAMS2_ID = 360, /* [0x0168] ->  struct CMD_AUDIO_INPUT_MIC_RECORD_AP_SET_PARAMS2 */
};

/**
 * List of available notifications.
 */
enum AOC_NOTIFICATION {
  NOTIF_AUDIO_INPUT_AP_MIC_RECORD_DATA_AVAILABLE_ID = 11, /* [0x000b] ->  struct NOTIF */
};

enum DATA_TYPE {
  DATA_TYPE_CMD = 0,
  DATA_TYPE_NOTIF,
  DATA_TYPE_SIGNAL,
  DATA_TYPE_MSG,
  DATA_TYPE_CMD_NO_ACK,
};

struct CONTAINER_HDR {
  uint8_t type; /* For valid values, refer to "enum DATA_TYPE" */
  uint8_t cntr;
  uint16_t len;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_ENABLE_AEC_ID, UUID: 20a78f1f7636fd03af70078236b4d271
 *   CMD_AUDIO_INPUT_HOTWORD_DISABLE_AEC_ID, UUID: 8ef204a3efe8efb0ddc50bc49bf1fe06
 *   CMD_AUDIO_INPUT_AP_INPUT_STOP_ID, UUID: 0a8194454e7909aac5003be176e82091
 *   CMD_AUDIO_INPUT_MODEM_INPUT_STOP_ID, UUID: 1c8e98ae6fd85847b28400bec1355910
 *   CMD_AUDIO_INPUT_BT_CAPTURE_START_ID, UUID: 0a8469b5b96b5ccbf73a68d034fc69b6
 *   CMD_AUDIO_INPUT_BT_CAPTURE_STOP_ID, UUID: 6f215c20b81395c0e948481d8956d568
 *   CMD_AUDIO_INPUT_BT_DECODER_START_ID, UUID: 03bbd87e56c452d627b91e6fb135aa6d
 *   CMD_AUDIO_INPUT_BT_DECODER_STOP_ID, UUID: da9c0b00756b060bd1c4e0bb2d93d29f
 *   CMD_AUDIO_INPUT_IN_CALL_SELECT_START_ID, UUID: 017e8791508f329711806b7b1784654a
 *   CMD_AUDIO_INPUT_IN_CALL_SELECT_STOP_ID, UUID: d763ea0ff8f3385185ccf4fa40531e82
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_START_ID, UUID: 8542edc955df6bd649c5c12c92a92134
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_STOP_ID, UUID: de64e56e6aba9eb0021279db42ed6b46
 *   CMD_AUDIO_INPUT_HOTWORD_START_ID, UUID: 6e8872b5789b3c3c82392504f3febada
 *   CMD_AUDIO_INPUT_HOTWORD_STOP_ID, UUID: f6c4378bb2c94c021f9d9f4b76c2ac80
 *   CMD_AUDIO_INPUT_MIC_LOOPBACK_STOP_ID, UUID: ef3fb88005c81022b399c4c4d932973a
 *   CMD_AUDIO_INPUT_SPATIAL_START_ID, UUID: 7c247fcef1ccb6643e8372885dbbf629
 *   CMD_AUDIO_OUTPUT_DECODE_FLUSH_RB_ID, UUID: 57c67deea6d111d607d6914e29c7a32c
 *   CMD_AUDIO_INPUT_SPATIAL_STOP_ID, UUID: 7830c577ed8e2b474198d36529417649
 *   CMD_AUDIO_INPUT_HOTWORD_TEST_TRIGGER_ID, UUID: 25d16d037a41a1f85406a0029017a02a
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_START_ID, UUID: 6a5b7998d885b2f33409413aa9bdf39c
 *   CMD_AUDIO_OUTPUT_TELEPHONY_MODEM_START_ID, UUID: a2dcee61c1283d5aff021c0c5f803dc0
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_STOP_ID, UUID: 40bdd53e1632962334594cb1f0f92da5
 *   CMD_AUDIO_OUTPUT_TELEPHONY_MODEM_STOP_ID, UUID: 4a4ec74c3eda935d8a28e2a942e4a75b
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_TEST_TRIGGER_ID, UUID: b68ac180042a442f6c509069ca076784
 *   CMD_AUDIO_OUTPUT_TELEPHONY_VOIP_START_ID, UUID: 21d23b51107547ec3a083380cace825e
 *   CMD_AUDIO_OUTPUT_TELEPHONY_VOIP_STOP_ID, UUID: 367cc9dcdb4ccb5295d11ab054c37106
 *   CMD_AUDIO_OUTPUT_SPKR_ANDROID_AEC_START_ID, UUID: fdc99d0d19fdae73c0dd4f2a21c94be6
 *   CMD_AUDIO_INPUT_HOTWORD_LOAD_MODEL_ID, UUID: 32209e632ee67e9b507a066e1ce31e64
 *   CMD_AUDIO_OUTPUT_SPKR_ANDROID_AEC_STOP_ID, UUID: d148bbdd17267d54f6341e9c43848aad
 *   CMD_AUDIO_INPUT_HOTWORD_UNLOAD_MODEL_ID, UUID: be7aad055fbb5439ceab4c6c59efb3b6
 *   CMD_AUDIO_OUTPUT_USB_HIFI_PLAYBACK_START_ID, UUID: 17da3adbbbfbdbe6215b813dca17e141
 *   CMD_AUDIO_OUTPUT_USB_HIFI_PLAYBACK_STOP_ID, UUID: c3889a9de9dc360425cde2b0afdd2b2a
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_LOAD_MODEL_ID, UUID: d1121b14e655df65385b0f474fcefd7d
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_UNLOAD_MODEL_ID, UUID: bedaaff890bda7ffd077902bf913f4b9
 *   CMD_AUDIO_INPUT_HOTWORD_FORCE_TRIGGER_ID, UUID: 8d14b4097cffcca6227bbc587f8279d8
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_FORCE_TRIGGER_ID, UUID: ab98a91ea27d62bbc4a0bb77b082a139
 *   CMD_AUDIO_OUTPUT_DEC_RESET_CURRENT_GAIN_ID, UUID: 12892dadd9ba4d23eae485d3d59fccf0
 *   CMD_AUDIO_OUTPUT_VOICE_CCA_START_ID, UUID: 8d121421548f265e4f296acbf300fe33
 *   CMD_AUDIO_OUTPUT_VOICE_CCA_STOP_ID, UUID: f7982f7ff04be3cae52ab7db8f24649d
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_START_ID, UUID: 5be7b99d97f4bf06af231be04ab783ab
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_STOP_ID, UUID: edd0a66ee107ea64b8f6a0a324a7856b
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_TEST_TRIGGER_ID, UUID: 1a8f67d766cc9a1e21d6548afdc2ba57
 *   CMD_AUDIO_OUTPUT_DECODER_GAPLESS_PARTIAL_DRAIN_ID, UUID: 117682af13455a3de0f0f01a02a3d466
 *   CMD_AUDIO_OUTPUT_DECODER_GAPLESS_DEINIT_ID, UUID: a77ecb0deb43d8b2cff697ec83bd8571
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_LOAD_MODEL_ID, UUID: 3667c2affee42fed78892d05626d0a88
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_UNLOAD_MODEL_ID, UUID: d3b7cbecbc7f3c607bf090245f691002
 *   CMD_AUDIO_OUTPUT_TELEPHONY_RTP_START_ID, UUID: 9d12f53f498b427930257a6d8010478c
 *   CMD_AUDIO_OUTPUT_TELEPHONY_RTP_STOP_ID, UUID: cc499dc1692b5fe55df8fc02f9809c7f
 *   CMD_AUDIO_OUTPUT_VOICE_ENABLE_CCA_ON_VOIP_ID, UUID: 514450e55854eed2a15651067d6a3e55
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_START_PREPARE_ID, UUID: a2d983137ee5c50405f719a310c20971
 *   CMD_AUDIO_OUTPUT_VOICE_DISABLE_CCA_ON_VOIP_ID, UUID: 67226e15aef11c25557ca1130234a756
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_START_DATA_ID, UUID: eb4ca3ecc1e61d8abbdc79671dc0edbb
 *   CMD_AUDIO_INPUT_MIC_MMAP_DISABLE_ID, UUID: 02aa59769391dbf4e0bae82fbcaebb3c
 *   CMD_AUDIO_INPUT_WNR_START_ID, UUID: cdfe4c6b0cbbebb53cd4f1de4cf7d10a
 *   CMD_AUDIO_INPUT_WNR_STOP_ID, UUID: 14a6598537e19f97879eaf9cfa6fb9ba
 *   CMD_AUDIO_INPUT_SPATIAL_CAPTURE_START_ID, UUID: cded22dfdd10ab966c5b6f4c0d15b417
 *   CMD_AUDIO_INPUT_SPATIAL_CAPTURE_STOP_ID, UUID: a2132771c2f32e730de3fd3bd7f79dbe
 *   CMD_AUDIO_INPUT_MIC_RAW_DISABLE_ID, UUID: c602ddac88428952c9e8d444e2a3a927
 *   CMD_AUDIO_INPUT_USB_HIFI_CAPTURE_START_ID, UUID: 2a392f6c9f9ac788fb2a12a6e4a5dde5
 *   CMD_AUDIO_INPUT_USB_HIFI_CAPTURE_STOP_ID, UUID: 76f7a92e726aa3e997c74b399381c069
 *   CMD_AUDIO_INPUT_DIRECT_ULTRASONIC_CAPTURE_ENABLE_ID, UUID: 05c8db46e274a9083197bddbf534e637
 *   CMD_AUDIO_INPUT_DIRECT_ULTRASONIC_CAPTURE_DISABLE_ID, UUID: 2c0489afcb07c271454e4da7166223ff
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_ENABLE_AEC_ID, UUID: 249ada53f8b6ce226ba9aa73dabbf5e6
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_DISABLE_AEC_ID, UUID: 5c42e0725b9b1bbd6879fcb2d6692c90
 *   CMD_AUDIO_INPUT_ULTRASONIC_CAPTURE_START_ID, UUID: 08036d24f52fe021a2ef8419f28dbf0d
 *   CMD_AUDIO_INPUT_ULTRASONIC_CAPTURE_STOP_ID, UUID: 94b7271ea12a31a0e2400e17e9be0335
 *   CMD_AUDIO_INPUT_ULTRASONIC_AP_START_ID, UUID: 271872e1bf7b57d8c2bb10847206e888
 *   CMD_AUDIO_INPUT_MEDIA_COMMANDS_START_ID, UUID: fdc8fcf51dec427d9f0ecbd240d2cea5
 *   CMD_AUDIO_INPUT_MEDIA_COMMANDS_STOP_ID, UUID: c57e4843d5a425ef3b3404a47824ab57
 *   CMD_AUDIO_INPUT_MEDIA_COMMANDS_LOAD_MODEL_ID, UUID: 0a59d4c72b387711454fbd375d304417
 *   CMD_AUDIO_INPUT_MEDIA_COMMANDS_UNLOAD_MODEL_ID, UUID: d18c4488e716162dfc772e30376f83ac
 *   CMD_AUDIO_INPUT_CAPTURE_INJECTION_START_ID, UUID: 6ce14e7447365ee0ce8bfb7cccbb3c7a
 *   CMD_AUDIO_INPUT_CAPTURE_INJECTION_STOP_ID, UUID: 59bd69e4f8da57ee844043c426239ba0
 *   CMD_AUDIO_INPUT_HOTWORD_ENABLE_PRIMARY_MIC_SWAP_ID, UUID: 14406b26352156fc3fd45dbd2afe8f21
 *   CMD_AUDIO_INPUT_HOTWORD_DISABLE_PRIMARY_MIC_SWAP_ID, UUID: 8dcc7c59a45658053cffdef0ac6d079e
 *   CMD_AUDIO_INPUT_HOTWORD_ENABLE_NEURAL_AEC_ID, UUID: 9d485929dc61d3babd81ddff05cf9392
 *   CMD_AUDIO_INPUT_HOTWORD_DISABLE_NEURAL_AEC_ID, UUID: c8a19d5b447ce1fae9a8666883c723d7
 *   CMD_AUDIO_INPUT_HOTWORD_ENABLE_HOTWORD_TAP_ID, UUID: 26bde63caffd544e581a7293f1cf793c
 *   CMD_AUDIO_INPUT_HOTWORD_DISABLE_HOTWORD_TAP_ID, UUID: 228b2b4c01e7c126658056a596ac4e5c
 *   CMD_AUDIO_INPUT_MIC_COMPENSATION_ENABLE_ID, UUID: 1853725716f2678f9bd12f961c2ae591
 *   CMD_AUDIO_INPUT_MIC_COMPENSATION_DISABLE_ID, UUID: 279aa88afc7bdfff45529976176b3260
 */
struct CMD_HDR {
  struct CONTAINER_HDR parent;
  uint16_t id;
  int16_t reply;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_SYS_BANNER_ID, UUID: 504d490d704ac2bef2af10887b9b1ad3
 *   CMD_SYS_STATS_ID, UUID: 2ab98ec58f7c9704b4e83b93bbcefaa2
 *   CMD_DBG_WATCHDOG_TRIGGER_ID, UUID: d9ef98fe070ef538bee623643537eeed
 *   CMD_DBG_TREE_ID, UUID: 43fd27ea86c0ab0971ba99275dbec161
 *   CMD_DBG_CONTROLLERS_ID, UUID: c89caebb6b7061d1232b0dd45ff3fe13
 *   CMD_DBG_FILTERS_ID, UUID: 7c56165bc53102a4442811f0ef2b2b63
 *   CMD_DBG_PIPES_ID, UUID: c84d222dc0e7ae06be2535e426919b34
 *   CMD_DBG_POOLS_ID, UUID: d57a0ddcef560feec8e6413a7cf33c87
 *   CMD_DBG_RINGS_ID, UUID: a77f8e45e2b6f9190e18a5e980e01bdd
 *   CMD_DBG_IPCS_ID, UUID: ffa1935344543128298b05f31c2db4fa
 *   CMD_DBG_FSM_ID, UUID: 15c1570c1258ba2acdd2d4dd2e172fbe
 *   CMD_DBG_TASKS_ID, UUID: 538e9ac88022dc3bcec311eda8b8780f
 *   CMD_DBG_TIMER_ID, UUID: cfb3bd6083c745bbb3dffaa85b9123a1
 *   CMD_DBG_INTCNTRL_ID, UUID: 3613177f5b587dfdaad15524d2976726
 *   CMD_DBG_IPC_SPACES_ID, UUID: 8deb052245037bdc892886f52f4a3fd1
 *   CMD_DBG_IPC_CHANNELS_ID, UUID: 2fcedfa697ab0343863d06f3d608c10e
 *   CMD_DBG_MEM_INVAL_ACCESS_ID, UUID: da303a56481b5192393842b400259d21
 */
struct CMD_CORE_GENERIC {
  struct CMD_HDR parent;
  int32_t core;
} __attribute__((packed));

enum DbgHeapMode {
  DBG_HEAP_NONE = 0,
  DBG_HEAP_TRACE,
  DBG_HEAP_CRC_INFO,
  DBG_HEAP_CRC,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_DBG_HEAP_ID, UUID: f684800cbb1524ee1814f70099799cbe
 */
struct CMD_DBG_HEAP {
  struct CMD_CORE_GENERIC parent;
  uint32_t crc;
  uint8_t mode; /* For valid values, refer to "enum DbgHeapMode" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_RING_BIND_ID, UUID: 9c5bee4588fffe71e78024b6005102ad
 */
struct CMD_RING_BIND {
  struct CMD_HDR parent;
  int32_t pin;
  uint16_t ipc_tag;
  uint32_t write_descr;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_IPC_NOTIF_ENABLE_ID, UUID: 922f1525a44efdbab3edf48586cf3ad5
 */
struct CMD_IPC_NOTIF_ENABLE {
  struct CMD_HDR parent;
  uint32_t tag;
  uint8_t enable;
} __attribute__((packed));

#define CMD_SYS_VERSION_SIZE_MAX (64) /* UUID: 523a9f7b743ea29ea23a18c0879b0dcc */

/**
 * Structure associated with the following commands:
 *
 *   CMD_SYS_VERSION_GET_ID, UUID: 085b3c10693de3cd14a5abc2258280ce
 */
struct CMD_SYS_VERSION_GET {
  struct CMD_CORE_GENERIC parent;
  char version[CMD_SYS_VERSION_SIZE_MAX];
  char link_time[CMD_SYS_VERSION_SIZE_MAX];
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_SYS_STATS_TOT_ID, UUID: 61c84e3e09983de7c5184f81298c2024
 */
struct CMD_SYS_STATS_TOT {
  struct CMD_CORE_GENERIC parent;
  int32_t tot;
} __attribute__((packed));

enum STATS_TYPE {
  STATS_TYPE_TIMED_STATUS = 0,
  STATS_TYPE_DATA_TRANSFER,
};

#define STATS_ENTRY_LEN (7) /* UUID: 733b57b1d8a9342523a49b8c37ad2d0a */

struct STATS_ENTRY_INFO {
  char name[STATS_ENTRY_LEN];
  uint8_t type; /* For valid values, refer to "enum STATS_TYPE" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_SYS_STATS_INFO_GET_ID, UUID: e518d09ccf3b2768676f64bd744d03d6
 */
struct CMD_SYS_STATS_INFO_GET {
  struct CMD_CORE_GENERIC parent;
  int32_t index;
  struct STATS_ENTRY_INFO info;
} __attribute__((packed));

struct STATS_TIMED_STATUS {
  uint64_t counter;
  uint64_t cumulative_time;
  uint64_t timestamp_enter_last;
  uint64_t timestamp_exit_last;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_SYS_STATS_TIMED_GET_ID, UUID: e3bd9e12d29027ccbf10538e3f79063b
 */
struct CMD_SYS_STATS_TIMED_GET {
  struct CMD_CORE_GENERIC parent;
  int32_t index;
  struct STATS_TIMED_STATUS timed;
} __attribute__((packed));

struct STATS_DATA_TRANSFER {
  uint64_t counter;
  uint64_t counter_failed;
  uint64_t transfer_tx;
  uint64_t transfer_rx;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_SYS_STATS_DATA_GET_ID, UUID: e3235ddcdf9ecf229fd318b7c409b76e
 */
struct CMD_SYS_STATS_DATA_GET {
  struct CMD_CORE_GENERIC parent;
  int32_t index;
  struct STATS_DATA_TRANSFER transfer;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_SYS_LOGIC_TRACE_ENABLE_ID, UUID: fc8ef6690b1147b887acdf44c0b78ab7
 *   CMD_DBG_TIMESTAMP_ID, UUID: f0d0ab26cd620a32c7f27f8862434e7c
 */
struct CMD_ENABLE {
  struct CMD_CORE_GENERIC parent;
  uint8_t enable;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_SYS_LOGIC_TRACE_SCHEME_SET_ID, UUID: 59f22b5d76f7074cc59842557004bb5a
 *   CMD_SYS_LOGIC_TRACE_SCHEME_GET_ID, UUID: 4b0929d902bd8dfb960f5b417042982c
 */
struct CMD_CORE_LOGIC_TRACE_SCHEME {
  struct CMD_CORE_GENERIC parent;
  int8_t scheme;
} __attribute__((packed));

#define EFWObject_kNameSize (16) /* UUID: 7488eddabe0654e3f0ac58cda17a1530 */

/**
 * Structure associated with the following commands:
 *
 *   CMD_DBG_INFO_ID, UUID: 927126c1e5bdea5c6c5674d6855d6e16
 */
struct CMD_DBG_INFO {
  struct CMD_CORE_GENERIC parent;
  char string[EFWObject_kNameSize];
  uint8_t system;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_DBG_LEVEL_GET_ID, UUID: fa0736f425f7ee729ab1ed21bbe40f0b
 */
struct CMD_DBG_LEVEL_GET {
  struct CMD_CORE_GENERIC parent;
  char string[EFWObject_kNameSize];
  uint8_t system;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_DBG_POWERMAN_ID, UUID: b7759fa324678e6a7e7fbe1b24be450f
 */
struct CMD_DBG_POWERMAN {
  struct CMD_CORE_GENERIC parent;
  uint8_t standby_modify;
  uint8_t standby_on;
  uint8_t retention_modify;
  uint8_t retention_on;
  uint8_t shutdown_modify;
  uint8_t shutdown_on;
  uint8_t status;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_DBG_LOG_ID, UUID: a4b82f60bcefb799d11a46342c8fc459
 */
struct CMD_DBG_LOG {
  struct CMD_CORE_GENERIC parent;
  uint8_t reset;
  uint8_t marker;
} __attribute__((packed));

enum DbgMemMode {
  DBG_MEM_MODE_32 = 0,
  DBG_MEM_MODE_16,
  DBG_MEM_MODE_8,
  DBG_MEM_MODE_RANGE,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_DBG_MEM_SET_ID, UUID: 37b9c686489b1c896ab3e66ea084f646
 */
struct CMD_DBG_MEM_SET {
  struct CMD_CORE_GENERIC parent;
  uint32_t address;
  uint32_t value;
  uint8_t mode; /* For valid values, refer to "enum DbgMemMode" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_DBG_MEM_DUMP_ID, UUID: 214087af52dcfa3f3930c8a9a986c783
 */
struct CMD_DBG_MEM_DUMP {
  struct CMD_CORE_GENERIC parent;
  uint32_t address;
  uint32_t size;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_UMFW_STAT_MSG_ID, UUID: 6f0c398616aca7cd4d457279408a7e19
 */
struct CMD_UMFW_STAT_MSG {
  struct CMD_CORE_GENERIC parent;
  uint8_t payload[1024];
} __attribute__((packed));

enum BTDecoderOutputIndex {
  BT_MODEM_OUTPUT_INDEX = 0,
  BT_AP_OUTPUT_INDEX,
  BT_HOTWORD_OUTPUT_INDEX,
  BT_DECODER_NUM_OUTPUTS,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_BT_DECODER_ENABLE_OUTPUT_ID, UUID: 9db47f9d9aa8b675423820ef42f3c656
 */
struct CMD_AUDIO_INPUT_BT_ENABLE_OUTPUT {
  struct CMD_HDR parent;
  uint8_t output_index; /* For valid values, refer to "enum BTDecoderOutputIndex" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_BT_DECODER_DISABLE_OUTPUT_ID, UUID: 8dc3757cd2b17c6ea53f81a4df1f2526
 */
struct CMD_AUDIO_INPUT_BT_DISABLE_OUTPUT {
  struct CMD_HDR parent;
  uint8_t output_index; /* For valid values, refer to "enum BTDecoderOutputIndex" */
} __attribute__((packed));

enum InCallSelectOutputIndex {
  IN_CALL_SELECT_MODEM_IN_OUTPUT_INDEX = 0,
  IN_CALL_SELECT_MODEM_TX_OUTPUT_INDEX,
  IN_CALL_SELECT_NUM_OUTPUTS,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_IN_CALL_SELECT_ENABLE_OUTPUT_ID, UUID: d77dc2f6476fec8ea6e8f062125eeb6e
 */
struct CMD_AUDIO_INPUT_IN_CALL_SELECT_ENABLE_OUTPUT {
  struct CMD_HDR parent;
  uint8_t output_index; /* For valid values, refer to "enum InCallSelectOutputIndex" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_IN_CALL_SELECT_DISABLE_OUTPUT_ID, UUID: f3662825cd66dd6ff36425eccf6ce23b
 */
struct CMD_AUDIO_INPUT_IN_CALL_SELECT_DISABLE_OUTPUT {
  struct CMD_HDR parent;
  uint8_t output_index; /* For valid values, refer to "enum InCallSelectOutputIndex" */
} __attribute__((packed));

enum APMicProcessIndex {
  AP_MIC_PROCESS_RAW = 0,
  AP_MIC_PROCESS_SPATIAL,
  NUM_AP_MIC_PROCESS,
};

enum SampleRate {
  SR_8KHZ = 0,
  SR_16KHZ,
  SR_24KHZ,
  SR_32KHZ,
  SR_44K1HZ,
  SR_48KHZ,
  SR_96KHZ,
  SR_192KHZ,
};

#define AUDIO_CAPTURE_PDM_PDM_MAX (4) /* UUID: 4ce9e232b0ad1dc19bd98d7665bf9353 */

enum Format {
  FRMT_FLOATING_POINT = 0,
  FRMT_FIXED_POINT,
  FRMT_ULAW,
};

enum BitsPerSample {
  WIDTH_8_BIT = 0,
  WIDTH_16_BIT,
  WIDTH_24_BIT,
  WIDTH_32_BIT,
};

enum Channels {
  CH_RESERVED = 0,
  CH_MONO,
  CH_STEREO,
  CH_3,
  CH_4,
  CH_5_1,
};

struct channelMetadataUnpacked {
  uint8_t chan; /* For valid values, refer to "enum Channels" */
  uint8_t bits; /* For valid values, refer to "enum BitsPerSample" */
  uint8_t sr; /* For valid values, refer to "enum SampleRate" */
  uint8_t format; /* For valid values, refer to "enum Format" */
  uint8_t offset;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_SET_PARAMS_ID, UUID: f0b64ed4024e019884bc797a3a4f183d
 *   CMD_AUDIO_INPUT_ULTRASONIC_AP_SET_PARAMS_ID, UUID: af134d505c05101b193ccb3544e08dcf
 */
struct CMD_AUDIO_INPUT_MIC_RECORD_AP_SET_PARAMS {
  struct CMD_HDR parent;
  struct channelMetadataUnpacked requested_format;
  uint8_t pdm_mask;
  uint8_t period_ms;
  uint8_t num_periods;
  uint8_t interleaving[AUDIO_CAPTURE_PDM_PDM_MAX];
  uint8_t sample_rate; /* For valid values, refer to "enum SampleRate" */
  uint8_t mic_process_index; /* For valid values, refer to "enum APMicProcessIndex" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_MIC_LOOPBACK_START_ID, UUID: 4b17cf2442ac4af494e2f727388d8ed8
 */
struct CMD_AUDIO_INPUT_ENABLE_MIC_LOOPBACK {
  struct CMD_HDR parent;
  uint8_t sample_rate; /* For valid values, refer to "enum SampleRate" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_MIC_POWER_ON_ID, UUID: 790997fcbc5b31216a6ed4aacdfeaaf0
 */
struct CMD_AUDIO_INPUT_MIC_POWER_ON {
  struct CMD_HDR parent;
  uint8_t mic_index;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_MIC_POWER_OFF_ID, UUID: 8c6f6ab39aed0b4fc898f42aef3d4ba4
 */
struct CMD_AUDIO_INPUT_MIC_POWER_OFF {
  struct CMD_HDR parent;
  uint8_t mic_index;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_MIC_GET_POWER_STATE_ID, UUID: 88a345935cad7a95cb30ceb092d948d3
 */
struct CMD_AUDIO_INPUT_MIC_GET_POWER_STATE {
  struct CMD_HDR parent;
  uint8_t mic_index;
  uint8_t power_state;
} __attribute__((packed));

enum ModemInputIndex {
  MODEM_MIC_INPUT_INDEX = 0,
  MODEM_BT_INPUT_INDEX,
  MODEM_USB_INPUT_INDEX,
  MODEM_INCALL_INPUT_INDEX,
  MODEM_ZERO_INPUT_INDEX,
  MODEM_NUM_INPUTS,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_MODEM_INPUT_START_ID, UUID: dbbf677680a271a40193ccff8361bb3c
 */
struct CMD_AUDIO_INPUT_MODEM_INPUT_START {
  struct CMD_HDR parent;
  uint8_t mic_input_source; /* For valid values, refer to "enum ModemInputIndex" */
} __attribute__((packed));

enum AUDIO_SINKS_ID {
  ASNK_SPEAKER = 0,
  ASNK_UNUSED,
  ASNK_BT,
  ASNK_MODEM,
  ASNK_USB,
  AUDIO_OUTPUT_SINKS,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SINK_ID, UUID: f5496054472a5be703a32e46206c74ab
 */
struct CMD_AUDIO_OUTPUT_SINK {
  struct CMD_HDR parent;
  uint8_t sink; /* For valid values, refer to "enum AUDIO_SINKS_ID" */
  uint8_t mode;
  uint8_t timestamping;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SOURCE_ID, UUID: 7abd928d4b17904f7267d3ed77f6174e
 */
struct CMD_AUDIO_OUTPUT_SOURCE {
  struct CMD_HDR parent;
  uint8_t source;
  uint8_t on;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_BIND_ID, UUID: 06c96d4cc0173e6fe6bfe95c97bfe933
 *   CMD_AUDIO_OUTPUT_BIND2_ID, UUID: 8f572f5621ed71748992531b40e45148
 */
struct CMD_AUDIO_OUTPUT_BIND {
  struct CMD_HDR parent;
  uint8_t src;
  uint8_t dst;
  uint8_t bind;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_WAV_PLAYBACK_ID, UUID: 63d33aa8677ba043b76fc5e2873b7695
 */
struct CMD_AUDIO_OUTPUT_WAV_PLAYBACK {
  struct CMD_HDR parent;
  uint8_t sink;
  uint8_t on;
  uint32_t address;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_GAIN_ID, UUID: 858dde9ab4a90a99fbb98e0a991afa1f
 */
struct CMD_AUDIO_OUTPUT_GAIN {
  struct CMD_HDR parent;
  uint8_t sink;
  uint8_t channel;
  uint16_t gain;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_FX_EQ_ID, UUID: fd4102faa31419227ebb81346f250c33
 */
struct CMD_AUDIO_OUTPUT_FX_EQ {
  struct CMD_HDR parent;
  uint8_t sink;
  int8_t l;
  int8_t m;
  int8_t h;
} __attribute__((packed));

enum EntrypointMode {
  ENTRYPOINT_MODE_PLAYBACK = 0,
  ENTRYPOINT_MODE_VOICE_TX,
  ENTRYPOINT_MODE_VOICE_RX,
  ENTRYPOINT_MODE_HAPTICS,
  ENTRYPOINT_MODE_DECODE_OFFLOAD,
  ENTRYPOINT_MODE_SIGGEN,
  ENTRYPOINT_MODE_BT_RX,
  ENTRYPOINT_MODE_VOIP,
  ENTRYPOINT_MODE_HIFI,
  ENTRYPOINT_MODE_INCALL_SCREEN,
};

struct EntrypointDescriptorUnpacked {
  uint32_t address;
  uint32_t watermark;
  uint32_t length;
  struct channelMetadataUnpacked metadata;
  uint8_t channel;
  uint8_t wraparound;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_EP_SETUP_ID, UUID: e3887daa74a66ecdfa8f122abad227e1
 */
struct CMD_AUDIO_OUTPUT_EP_SETUP {
  struct CMD_HDR parent;
  struct EntrypointDescriptorUnpacked d;
  uint8_t mode; /* For valid values, refer to "enum EntrypointMode" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_DECODE_ID, UUID: fcfcb4332a3f13deecbc0320d218213c
 */
struct CMD_AUDIO_OUTPUT_DECODE {
  struct CMD_HDR parent;
  struct EntrypointDescriptorUnpacked raw_ep_descr;
  uint32_t address;
  int32_t size;
  uint8_t codec;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_AEC_NOTIFY_ID, UUID: be67c03d50fd910dd9e8ca667ea7df3e
 */
struct CMD_AUDIO_OUTPUT_AEC_NOTIFY {
  struct CMD_HDR parent;
  int32_t index;
  uint8_t on;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_RESYNC_AUDIO_SINK_ID, UUID: b4726c9713c1e7030c55900a4636f672
 */
struct CMD_AUDIO_OUTPUT_RESYNC_AUDIO_SINK {
  struct CMD_HDR parent;
  uint8_t sink;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_GET_PARAMETER_ID, UUID: 3394e985e5a4c767efd2f376a6d3f10f
 */
struct CMD_AUDIO_OUTPUT_GET_PARAMETER {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint32_t key;
  uint32_t val;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_GET_PARAMETER_BULK_ID, UUID: 1dfcc8cf130b1b42e6728cacd4e0a7d3
 */
struct CMD_AUDIO_OUTPUT_GET_PARAMETER_BULK {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint32_t rx_offset;
  uint32_t rx_address;
  uint32_t rx_size;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SET_PARAMETER_ID, UUID: fd9fdc99db9a5e7f267bc02d9f9ee5df
 */
struct CMD_AUDIO_OUTPUT_SET_PARAMETER {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint32_t key;
  uint32_t val;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SET_PARAMETER_BULK_ID, UUID: 9bded656cc615614e769112bfc76c0f8
 */
struct CMD_AUDIO_OUTPUT_SET_PARAMETER_BULK {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint32_t tx_offset;
  uint32_t tx_address;
  uint32_t tx_size;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SET_GET_PARAM_BULK_ID, UUID: 750ca7b8ed997b3f741c6f39d215f36d
 */
struct CMD_AUDIO_OUTPUT_SET_GET_PARAM_BULK {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint16_t tx_offset;
  uint16_t rx_offset;
  uint32_t tx_address;
  uint32_t rx_address;
  uint16_t tx_size;
  uint16_t rx_size;
} __attribute__((packed));

enum ASP_BLK_CMD_ID {
  ASP_CMD_ID_NONE = 0,
  ASP_CMD_ID_GET_MODULE,
  ASP_CMD_ID_GET_TAP_PT,
  ASP_CMD_ID_SET_TAP_PT,
  ASP_NUM_CMD_ID,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_GET_BLOCKS_ID, UUID: a20584bf8ec75826438fad0175a908f4
 */
struct CMD_AUDIO_OUTPUT_GET_BLOCKS {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint8_t cmd; /* For valid values, refer to "enum ASP_BLK_CMD_ID" */
  uint32_t val;
} __attribute__((packed));

enum ASP_MODULE_ID {
  ASP_ID_NONE = 0,
  ASP_ID_GAIN = 0,
  ASP_ID_BASE,
  ASP_ID_EQ = 1,
  ASP_ID_WAVES,
  ASP_ID_FM,
  ASP_ID_LIMITERTD,
  ASP_ID_AGC,
  ASP_ID_SURROUNDRECORD,
  ASP_ID_MULTICHANNEL_IIR,
  ASP_ID_MBDRC,
  ASP_ID_WAVES01,
  ASP_ID_WAVES02,
  ASP_ID_SNS,
  ASP_ID_SRC01,
  ASP_ID_SRC02,
  ASP_ID_LINEAR_GAIN,
  ASP_ID_MIXER,
  ASP_ID_IIREQ,
  ASP_ID_WNR,
  ASP_ID_AUDIO_INPUT_MULTICHANNEL_IIR,
  ASP_ID_LVM,
  ASP_ID_UNUSED_1,
  ASP_ID_UNUSED_2,
  ASP_ID_US_PROX,
  ASP_ID_DELAY,
  ASP_ID_APMG3,
  ASP_ID_POKEBOWL,
  ASP_ID_CTC,
  ASP_ID_CAF,
  ASP_ID_MEL,
  ASP_ID_GAIN_DB = 30,
  ASP_ID_VP_MCPS,
  ASP_ID_DRC,
  ASP_ID_CCA,
  ASP_ID_CCA_GAIN,
  ASP_ID_XAURAL,
  ASP_ID_DOWNMIX,
  ASP_ID_WAVES_MCPS = 38,
  ASP_ID_SPKRCOM,
  ASP_ID_PGC,
  ASP_ID_INTEGER_IIR,
  ASP_NUM_MODULE,
};

enum AUDIO_BLOCK_ID {
  AUDIO_BLOCK_ID_START = 14,
  ABLOCK_DCDOFF = 14,
  ABLOCK_PAD_15,
  ABLOCK_SPEAKER,
  ABLOCK_UNUSED,
  ABLOCK_BT,
  ABLOCK_MODEM,
  ABLOCK_USB,
  ABLOCK_CCA,
  AUDIO_BLOCK_ID_END,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_GET_MODULES_ID, UUID: 14f144af013e1a5ff4cd17fc43bd9080
 */
struct CMD_AUDIO_OUTPUT_GET_MODULES {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint8_t blk; /* For valid values, refer to "enum AUDIO_BLOCK_ID" */
  uint8_t module; /* For valid values, refer to "enum ASP_MODULE_ID" */
  uint32_t val;
} __attribute__((packed));

enum HapticsMode {
  HAPTICS_MODE_OFF = 0,
  HAPTICS_MODE_PCM,
  HAPTICS_MODE_FX,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_CFG_HAPTICS_ID, UUID: 2ad9119c66c8c48a457d6d175c532760
 */
struct CMD_AUDIO_OUTPUT_CFG_HAPTICS {
  struct CMD_HDR parent;
  uint8_t mode; /* For valid values, refer to "enum HapticsMode" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_CFG_SIGGEN_ID, UUID: 8d0a76b0197ebe638803cc5974c49ece
 */
struct CMD_AUDIO_OUTPUT_CFG_SIGGEN {
  struct CMD_HDR parent;
  uint8_t wf_type;
  uint16_t wf_period;
  uint32_t wf_amplitude;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_GET_EP_CUR_SAMPLES_ID, UUID: f8ea75dd361fe567360ab33eb1ed5904
 *   CMD_AUDIO_OUTPUT_GET_EP_TOT_SAMPLES_ID, UUID: 37f85bad8dca4be83d27b4ecc93c5bdd
 */
struct CMD_AUDIO_OUTPUT_GET_EP_SAMPLES {
  struct CMD_HDR parent;
  uint8_t source;
  uint64_t samples;
} __attribute__((packed));

enum AUDIO_OUTPUT_MODE {
  AUDIO_OUTPUT_MODE_IDLE = 0,
  AUDIO_OUTPUT_MODE_PLAYBACK,
  AUDIO_OUTPUT_MODE_VOICE,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_GET_DSP_STATE_ID, UUID: 67b5ba406a710f65fe63a9d166948f54
 */
struct CMD_AUDIO_OUTPUT_GET_DSP_STATE {
  struct CMD_HDR parent;
  uint8_t mode; /* For valid values, refer to "enum AUDIO_OUTPUT_MODE" */
} __attribute__((packed));

enum AUDIO_OUTPUT_SINK_PROCESSING_MODE {
  AUDIO_OUTPUT_SINK_PROCESSING_IDLE = 0,
  AUDIO_OUTPUT_SINK_PROCESSING_ACTIVE,
  AUDIO_OUTPUT_SINK_PROCESSING_BYPASS,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_GET_SINK_PROCESSING_STATE_ID, UUID: a02ad55bf6328b3de730fb1e04ee07e5
 */
struct CMD_AUDIO_OUTPUT_GET_SINK_PROCESSING_STATE {
  struct CMD_HDR parent;
  uint8_t sink;
  uint8_t mode; /* For valid values, refer to "enum AUDIO_OUTPUT_SINK_PROCESSING_MODE" */
} __attribute__((packed));

enum CORE_POWER_STATE {
  CORE_POWER_STATE_ON = 0,
  CORE_POWER_STATE_WFI,
  CORE_POWER_STATE_RETENTION,
  CORE_POWER_STATE_OFF,
  CORE_POWER_STATE_TOT,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_DIAG_CORE_POWER_ID, UUID: a5feea3c467350d9e9f94d900b60fbed
 */
struct CMD_DIAG_CORE_POWER {
  struct CMD_HDR parent;
  uint32_t seconds;
  uint32_t a32_power_state; /* For valid values, refer to "enum CORE_POWER_STATE" */
  uint32_t f1_power_state; /* For valid values, refer to "enum CORE_POWER_STATE" */
  uint32_t hf0_power_state; /* For valid values, refer to "enum CORE_POWER_STATE" */
  uint32_t hf1_power_state; /* For valid values, refer to "enum CORE_POWER_STATE" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_DIAG_MONITOR_MODE_ID, UUID: 1db11b446ba22db992421bdb59011751
 */
struct CMD_DIAG_MONITOR_MODE {
  struct CMD_HDR parent;
  uint32_t delay_ms;
  uint32_t iterations;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_USB_CONTROL_GET_XHCI_VERSION_ID, UUID: 91fa1fcf2402f2fd55f1fca81bdcfe32
 */
struct CMD_USB_CONTROL_GET_XHCI_VERSION {
  struct CMD_HDR parent;
  uint32_t xhci_version;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_USB_CONTROL_SETUP_ID, UUID: 6a06c2c168c0750017bb5a0de4da4445
 */
struct CMD_USB_CONTROL_SETUP {
  struct CMD_HDR parent;
  uint32_t page_size;
  uint8_t type;
  uint8_t ctx_idx;
  uint8_t spbuf_idx;
  uint8_t payload[2048];
  uint32_t length;
  uint32_t aoc_dcbaa;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_USB_CONTROL_STATUS_GET_ID, UUID: f03d16097710ea3bee61e847c978705e
 */
struct CMD_USB_CONTROL_STATUS_GET {
  struct CMD_HDR parent;
  uint32_t status;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_USB_CONTROL_GET_DEVICE_CONTEXT_ID, UUID: e0273d601b0837479d5ef24bb72a9719
 */
struct CMD_USB_CONTROL_GET_DEVICE_CONTEXT {
  struct CMD_HDR parent;
  uint16_t device_id;
  uint32_t length;
  uint8_t payload[2048];
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_USB_CONTROL_GET_TR_DEQ_PTR_ID, UUID: 3bfa87999faf40df0feef23dd94cc594
 */
struct CMD_USB_CONTROL_GET_TR_DEQ_PTR {
  struct CMD_HDR parent;
  uint16_t device_id;
  uint16_t endpoint_id;
  uint64_t tr_deq_ptr;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_USB_CONTROL_NOTIFY_CONN_STAT_ID, UUID: 2a3891f4d9667305cc1d5dcf03be8d85
 */
struct CMD_USB_CONTROL_NOTIFY_CONN_STAT {
  struct CMD_HDR parent;
  uint32_t conn_state;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_USB_CONTROL_GET_DCBAA_PTR_ID, UUID: 719daf404c6869c3e384153d481d24a8
 */
struct CMD_USB_CONTROL_GET_DCBAA_PTR {
  struct CMD_HDR parent;
  uint64_t aoc_dcbaa_ptr;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_USB_CONTROL_GET_ISOC_TR_INFO_ID, UUID: 6bb65aad89f57f762974882f0232462f
 */
struct CMD_USB_CONTROL_GET_ISOC_TR_INFO {
  struct CMD_HDR parent;
  uint16_t ep_id;
  uint16_t dir;
  uint32_t type;
  uint32_t num_segs;
  uint32_t seg_ptr;
  uint32_t max_packet;
  uint32_t deq_ptr;
  uint32_t enq_ptr;
  uint32_t cycle_state;
  uint32_t num_trbs_free;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_SET_PARAMETER_ID, UUID: 4a1ee581b64d2d1e3cf701413475a850
 */
struct CMD_AUDIO_INPUT_SET_PARAMETER {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint32_t key;
  uint32_t val;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_SET_PARAMETER_BULK_ID, UUID: ee50e9be27f515f9f666d1c698a0d8dc
 */
struct CMD_AUDIO_INPUT_SET_PARAMETER_BULK {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint32_t tx_offset;
  uint32_t tx_address;
  uint32_t tx_size;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_GET_PARAMETER_ID, UUID: af479d1fe992db232903a40f0e659e1f
 */
struct CMD_AUDIO_INPUT_GET_PARAMETER {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint32_t key;
  uint32_t val;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_GET_PARAMETER_BULK_ID, UUID: 04bb6cf8cd4290cab2f4a1d5984ad137
 */
struct CMD_AUDIO_INPUT_GET_PARAMETER_BULK {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint32_t rx_offset;
  uint32_t rx_address;
  uint32_t rx_size;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_SET_GET_PARAM_BULK_ID, UUID: b9ef3a7d4e427a79cf7272a87ea96b4a
 */
struct CMD_AUDIO_INPUT_SET_GET_PARAM_BULK {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint16_t tx_offset;
  uint16_t rx_offset;
  uint32_t tx_address;
  uint32_t rx_address;
  uint16_t tx_size;
  uint16_t rx_size;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_GET_BLOCKS_ID, UUID: 3f7e2128194abb2c2072f2b895fad9f3
 */
struct CMD_AUDIO_INPUT_GET_BLOCKS {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint8_t cmd; /* For valid values, refer to "enum ASP_BLK_CMD_ID" */
  uint32_t val;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_GET_MODULES_ID, UUID: bb179fb7dc7af74f2ea99c9dc8532998
 */
struct CMD_AUDIO_INPUT_GET_MODULES {
  struct CMD_HDR parent;
  uint8_t block;
  uint8_t component;
  uint8_t blk; /* For valid values, refer to "enum AUDIO_BLOCK_ID" */
  uint8_t module; /* For valid values, refer to "enum ASP_MODULE_ID" */
  uint32_t val;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_DETECTED_ID, UUID: b8bd613cc46f44cd5dccd428a04381b8
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_DETECTED_ID, UUID: d80140c821d48f62be47d86e60a7435d
 *   CMD_AUDIO_INPUT_MEDIA_COMMANDS_TEST_TRIGGER_ID, UUID: 2c3d11cf788e47c09375b60ef44777fc
 *   CMD_AUDIO_INPUT_MEDIA_COMMANDS_DETECTED_ID, UUID: 733c6a37d10841ee075f0a2a10a9df86
 */
struct CMD_AUDIO_INPUT_AMBIENT_MUSIC_DETECTED {
  struct CMD_HDR parent;
  uint8_t payload[32];
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_GET_MIC_STATUS_ID, UUID: b78b9461365de8f9c67645108e6f0873
 */
struct CMD_AUDIO_INPUT_GET_MIC_STATUS {
  struct CMD_HDR parent;
  uint8_t mic_id;
  uint8_t mic_active;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_GET_MIC_CLOCK_FREQUENCY_ID, UUID: fe23e6aea7fe941c7d3766553288b327
 */
struct CMD_AUDIO_INPUT_GET_MIC_CLOCK_FREQUENCY {
  struct CMD_HDR parent;
  uint32_t mic_clock_frequency_hz;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_GET_MIC_LOW_POWER_HW_GAIN_ID, UUID: 95bcfc52b22b1c8069a60cce0d79e462
 */
struct CMD_AUDIO_INPUT_GET_MIC_LOW_POWER_HW_GAIN {
  struct CMD_HDR parent;
  int32_t mic_hw_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_GET_MIC_HIGH_POWER_HW_GAIN_ID, UUID: c8c2e6acd20afb5bd95b02c30aa2aaa0
 */
struct CMD_AUDIO_INPUT_GET_MIC_HIGH_POWER_HW_GAIN {
  struct CMD_HDR parent;
  int32_t mic_hw_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_GET_MIC_CURRENT_HW_GAIN_ID, UUID: 7fdeea6d604facd25f1aebb5db6ab31c
 */
struct CMD_AUDIO_INPUT_GET_MIC_CURRENT_HW_GAIN {
  struct CMD_HDR parent;
  int32_t mic_hw_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_GET_MIC_DC_BLOCKER_ID, UUID: 1ac2b5c194cb1267b0a9d9da7ae1d6c9
 */
struct CMD_AUDIO_INPUT_GET_MIC_DC_BLOCKER {
  struct CMD_HDR parent;
  uint8_t dc_blocker_enabled;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_SET_MIC_DC_BLOCKER_ID, UUID: fce65c0f10fb73ecad035e7d0aedba90
 */
struct CMD_AUDIO_INPUT_SET_MIC_DC_BLOCKER {
  struct CMD_HDR parent;
  uint8_t dc_blocker_enabled;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_SET_MIC_LOW_POWER_HW_GAIN_ID, UUID: 4c6da404f6f1e1e02ed9a1bfa1bef436
 */
struct CMD_AUDIO_INPUT_SET_MIC_LOW_POWER_HW_GAIN {
  struct CMD_HDR parent;
  int32_t mic_hw_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_SET_MIC_HIGH_POWER_HW_GAIN_ID, UUID: e85ebf92a29e074fe969be6314303874
 */
struct CMD_AUDIO_INPUT_SET_MIC_HIGH_POWER_HW_GAIN {
  struct CMD_HDR parent;
  int32_t mic_hw_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_FACTORY_TEST_ID, UUID: 3076f387a678ce54fada1af5a83b63d6
 */
struct CMD_AUDIO_OUTPUT_FACTORY_TEST {
  struct CMD_HDR parent;
  uint32_t test;
  uint32_t iterations;
  uint32_t options;
  uint32_t options2;
  uint32_t options3;
  uint8_t sink;
} __attribute__((packed));

enum AUDIO_OUTPUT_BT_A2DP_ENC_CODEC {
  AUDIO_OUTPUT_BT_A2DP_ENC_CODEC_UNKNOWN = 0,
  AUDIO_OUTPUT_BT_A2DP_ENC_CODEC_SBC,
  AUDIO_OUTPUT_BT_A2DP_ENC_CODEC_AAC,
  AUDIO_OUTPUT_BT_A2DP_ENC_CODEC_APTX = 4,
  AUDIO_OUTPUT_BT_A2DP_ENC_CODEC_APTXHD = 8,
  AUDIO_OUTPUT_BT_A2DP_ENC_CODEC_LDAC = 16,
  AUDIO_OUTPUT_BT_BLE_ENC_CODEC_LC3 = 32,
  AUDIO_OUTPUT_BT_A2DP_ENC_CODEC_OPUS = 64,
  AUDIO_OUTPUT_BT_BLE_DEC_CODEC_LC3 = 2147483650,
  AUDIO_OUTPUT_BT_A2DP_ENC_CODEC_AAC_DYN_CHG = 4026531841,
  AUDIO_OUTPUT_BT_BLE_ENC_CODEC_LC3_DYN_CHG,
};

struct AUDIO_OUTPUT_BT_A2DP_ENC_CFG {
  uint32_t codecType; /* For valid values, refer to "enum AUDIO_OUTPUT_BT_A2DP_ENC_CODEC" */
  uint32_t bitrate;
  uint16_t peerMTU;
  uint32_t params[6];
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_BT_A2DP_ENC_CFG_ID, UUID: dbe05975a0090604729311b2993c13a0
 */
struct CMD_AUDIO_OUTPUT_BT_A2DP_ENC_CFG {
  struct CMD_HDR parent;
  struct AUDIO_OUTPUT_BT_A2DP_ENC_CFG bt_a2dp_enc_cfg;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_GET_SINKS_BITMAPS_ID, UUID: 3e8dadc99d9d30ffd9ca0359b481aefd
 */
struct CMD_AUDIO_OUTPUT_GET_SINKS_BITMAPS {
  struct CMD_HDR parent;
  uint16_t bitmap[AUDIO_OUTPUT_SINKS];
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_USB_CONFIG_ID, UUID: 1d92a552f020db5742f11a3ffd7e544c
 */
struct CMD_AUDIO_OUTPUT_USB_CONFIG {
  struct CMD_HDR parent;
  uint16_t dev_id;
  uint16_t tx_ep_num;
  uint32_t tx_sr;
  uint8_t tx_ch;
  uint8_t tx_width;
  uint8_t tx_enable;
  uint16_t rx_ep_num;
  uint32_t rx_sr;
  uint8_t rx_ch;
  uint8_t rx_width;
  uint8_t rx_enable;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SET_SIDETONE_ID, UUID: 2cab0e9482cec6aef3715810b1741d7e
 */
struct CMD_AUDIO_OUTPUT_SET_SIDETONE {
  struct CMD_HDR parent;
  int8_t volume;
  int8_t eq_num_stages;
  int8_t mic_select;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_GET_SIDETONE_ID, UUID: 3aecffd3a2b31727fdc51f80c619a2e8
 */
struct CMD_AUDIO_OUTPUT_GET_SIDETONE {
  struct CMD_HDR parent;
  int8_t volume;
  int8_t eq_num_stages;
  int8_t mic_select;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SET_SIDETONE_EQ_ID, UUID: 170dc9a272cfdce7ddc3be51336cfd31
 */
struct CMD_AUDIO_OUTPUT_SET_SIDETONE_EQ {
  struct CMD_HDR parent;
  float coeffs[6];
  uint8_t stage_num;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_GET_SIDETONE_EQ_ID, UUID: 8353407caa4726c9e13e007a4693e8d6
 */
struct CMD_AUDIO_OUTPUT_GET_SIDETONE_EQ {
  struct CMD_HDR parent;
  float coeffs[6];
  uint8_t stage_num;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_WRITE_MODEL_ID, UUID: 0d0ed5ab5392d3d50af34fbf2b152515
 */
struct CMD_AUDIO_INPUT_HOTWORD_WRITE_MODEL {
  struct CMD_HDR parent;
  uint32_t offset;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_WRITE_MODEL_ID, UUID: c4cf89e0be39c52970e3a51fc7fde8bf
 */
struct CMD_AUDIO_INPUT_AMBIENT_MUSIC_WRITE_MODEL {
  struct CMD_HDR parent;
  uint32_t offset;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_DETECTED_ID, UUID: 79e7a33c1db0ae28cd055974446e43ec
 */
struct CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_DETECTED {
  struct CMD_HDR parent;
  uint8_t payload[32];
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_WRITE_MODEL_ID, UUID: f5e3d3b21178744d127ed7621be137d4
 */
struct CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_WRITE_MODEL {
  struct CMD_HDR parent;
  uint32_t offset;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_UWB_GET_RESET_GPIO_ID, UUID: f0590c6bcc5b702e287fda529dee80f0
 */
struct CMD_UWB_GET_RESET_GPIO {
  struct CMD_HDR parent;
  uint32_t gpio_value;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_UWB_SET_RESET_GPIO_ID, UUID: f25dfde2fb0bf967c267be45c8232bb6
 */
struct CMD_UWB_SET_RESET_GPIO {
  struct CMD_HDR parent;
  uint32_t gpio_value;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_UWB_GET_RESET_GPIO_DIRECTION_ID, UUID: e273f999da994560b2a6f6933bdaff8a
 */
struct CMD_UWB_GET_RESET_GPIO_DIRECTION {
  struct CMD_HDR parent;
  uint32_t gpio_direction;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_UWB_SET_RESET_GPIO_DIRECTION_ID, UUID: 9a120e2a96942ef11b23f77583a0324c
 */
struct CMD_UWB_SET_RESET_GPIO_DIRECTION {
  struct CMD_HDR parent;
  uint32_t gpio_direction;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_GET_AP_MIC_INDEX_ID, UUID: a929df5b5bddfa49ff1ea831cfc4a720
 *   CMD_AUDIO_INPUT_SET_AP_MIC_INDEX_ID, UUID: b045a51ff156eace07a40be17d62bd57
 */
struct CMD_AUDIO_INPUT_GET_AP_MIC_INDEX {
  struct CMD_HDR parent;
  uint8_t mic_process_index; /* For valid values, refer to "enum APMicProcessIndex" */
} __attribute__((packed));

enum APInputProcessorInputIndex {
  AP_INPUT_PROCESSOR_MODEM_INPUT_INDEX = 0,
  AP_INPUT_PROCESSOR_MIC_INPUT_INDEX,
  AP_INPUT_PROCESSOR_BT_INPUT_INDEX,
  AP_INPUT_PROCESSOR_USB_INPUT_INDEX,
  AP_INPUT_PROCESSOR_ERASER_INPUT_INDEX,
  AP_INPUT_PROCESSOR_NUM_INPUTS,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_AP_INPUT_START_ID, UUID: 7db51beda9ec3f72045bcf088eff0458
 *   CMD_AUDIO_INPUT_MIC_MMAP_ENABLE_ID, UUID: c71f9a144fdcb825b7f3d41a8f750a6e
 *   CMD_AUDIO_INPUT_MIC_RAW_ENABLE_ID, UUID: 73f00d3c555976a5ee1c49de9344fb0f
 */
struct CMD_AUDIO_INPUT_AP_INPUT_START {
  struct CMD_HDR parent;
  uint8_t mic_input_source; /* For valid values, refer to "enum APInputProcessorInputIndex" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_FORCE_TRIGGER_TIMESTAMP_ID, UUID: 9246d3839c8088408789a15c4856296b
 */
struct CMD_AUDIO_INPUT_HOTWORD_FORCE_TRIGGER_TIMESTAMP {
  struct CMD_HDR parent;
  uint64_t request_aoc_ticks;
} __attribute__((packed));

enum CMD_AUDIO_OUTPUT_TELE_CAPTURE_STREAMS {
  CMD_AUDIO_OUTPUT_TELE_CAPTURE_UL = 0,
  CMD_AUDIO_OUTPUT_TELE_CAPTURE_DL,
  CMD_AUDIO_OUTPUT_TELE_CAPTURE_UL_DL,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SET_TELE_CAPTURE_ID, UUID: b8142505b012cbe9475672086308f5fd
 *   CMD_AUDIO_OUTPUT_GET_TELE_CAPTURE_ID, UUID: 0475fa5e0509e04286170bbd43166fe0
 */
struct CMD_AUDIO_OUTPUT_TELE_CAPTURE {
  struct CMD_HDR parent;
  uint8_t stream; /* For valid values, refer to "enum CMD_AUDIO_OUTPUT_TELE_CAPTURE_STREAMS" */
  uint8_t enable;
} __attribute__((packed));

#define AUDIO_OUTPUT_DECODER_CFG_OPTIONS_LEN (14) /* UUID: 9ff1a9404bee1600cfdb3e1179714312 */

enum AUDIO_OUTPUT_DECODER_FMT {
  AUDIO_OUTPUT_DECODER_UNKNOWN = 0,
  AUDIO_OUTPUT_DECODER_MP3,
  AUDIO_OUTPUT_DECODER_AAC_LC,
  AUDIO_OUTPUT_DECODER_AAC_HE,
  AUDIO_OUTPUT_DECODER_AAC_HE2,
  AUDIO_OUTPUT_DECODER_AAC_DAB,
  AUDIO_OUTPUT_DECODER_AAC_DABPLUS,
  AUDIO_OUTPUT_DECODER_OPUS,
};

struct AUDIO_OUTPUT_DECODER_CFG {
  uint32_t samplerate;
  uint8_t format; /* For valid values, refer to "enum AUDIO_OUTPUT_DECODER_FMT" */
  uint8_t channels;
  uint8_t options[AUDIO_OUTPUT_DECODER_CFG_OPTIONS_LEN];
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_DECODER_CFG_ID, UUID: ba2da19bc3bea467290ccbf43c7a7d15
 *   CMD_AUDIO_OUTPUT_DECODER_CFG_GAPLESS_ID, UUID: 98ad7841b31ff246e212d686a87668b9
 */
struct CMD_AUDIO_OUTPUT_DECODER_CFG {
  struct CMD_HDR parent;
  struct EntrypointDescriptorUnpacked raw_ep_descr;
  uint32_t address;
  int32_t size;
  struct AUDIO_OUTPUT_DECODER_CFG cfg;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_SRC_GET_SAMPLE_RATE_ID, UUID: cb3c1bfe9fe0d6be597309e557932c23
 */
struct CMD_AUDIO_INPUT_HOTWORD_SRC_GET_SAMPLE_RATE {
  struct CMD_HDR parent;
  uint8_t input_sample_rate; /* For valid values, refer to "enum SampleRate" */
  uint8_t output_sample_rate; /* For valid values, refer to "enum SampleRate" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_SRC_GET_BIT_DEPTH_ID, UUID: b389fd2bc632d44070ad4fdec03f9c6b
 */
struct CMD_AUDIO_INPUT_HOTWORD_SRC_GET_BIT_DEPTH {
  struct CMD_HDR parent;
  uint8_t bit_depth; /* For valid values, refer to "enum BitsPerSample" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_SRC_GET_CHANNEL_ID, UUID: 571cbaebd082ec6d9b509c68be16dfea
 */
struct CMD_AUDIO_INPUT_HOTWORD_SRC_GET_CHANNEL {
  struct CMD_HDR parent;
  uint8_t channels; /* For valid values, refer to "enum Channels" */
  uint8_t pdm_mask;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_SRC_GET_INPUT_PATH_ID, UUID: 2225e4b179a5dfbc0ad456c811045909
 */
struct CMD_AUDIO_INPUT_HOTWORD_SRC_GET_INPUT_PATH {
  struct CMD_HDR parent;
  uint8_t path_id;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_GET_ERASER_PRE_GAIN_ID, UUID: 64e92f18218e84369cbcd89059ebdd37
 */
struct CMD_AUDIO_INPUT_HOTWORD_GET_ERASER_PRE_GAIN {
  struct CMD_HDR parent;
  int32_t eraser_pre_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_SET_ERASER_PRE_GAIN_ID, UUID: fc399c556fc69f7c721c38e2d5052662
 */
struct CMD_AUDIO_INPUT_HOTWORD_SET_ERASER_PRE_GAIN {
  struct CMD_HDR parent;
  int32_t eraser_pre_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_GET_ERASER_POST_GAIN_ID, UUID: 6ca3160b1c5ad27b01fa343902fbea84
 */
struct CMD_AUDIO_INPUT_HOTWORD_GET_ERASER_POST_GAIN {
  struct CMD_HDR parent;
  int32_t eraser_post_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_SET_ERASER_POST_GAIN_ID, UUID: 7b13944bbccd2f1d0a9faf9dac482163
 */
struct CMD_AUDIO_INPUT_HOTWORD_SET_ERASER_POST_GAIN {
  struct CMD_HDR parent;
  int32_t eraser_post_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_GET_NON_ERASER_GAIN_ID, UUID: 93fdd0792f83c3f0889fbd5a5b725a7a
 */
struct CMD_AUDIO_INPUT_HOTWORD_GET_NON_ERASER_GAIN {
  struct CMD_HDR parent;
  int32_t non_eraser_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_SET_NON_ERASER_GAIN_ID, UUID: 5194874595245e958523a171ea2f6bad
 */
struct CMD_AUDIO_INPUT_HOTWORD_SET_NON_ERASER_GAIN {
  struct CMD_HDR parent;
  int32_t non_eraser_gain_cb;
} __attribute__((packed));

enum TeleCaptureMode {
  ANDROID_TELE_CAPTURE_MODE_OFF = 0,
  ANDROID_TELE_CAPTURE_MODE_UL,
  ANDROID_TELE_CAPTURE_MODE_DL,
  ANDROID_TELE_CAPTURE_MODE_ULDL,
  ANDROID_TELE_CAPTURE_MODE_3_MIC,
  ANDROID_TELE_CAPTURE_MODE_TOT,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SET_TELE_CAPT_ID, UUID: 942e867ea3ba1c439083a68bf4bf9f94
 *   CMD_AUDIO_OUTPUT_GET_TELE_CAPT_ID, UUID: 10aa17f6012e86309e2fd059ee03253a
 */
struct CMD_AUDIO_OUTPUT_TELE_CAPT {
  struct CMD_HDR parent;
  uint8_t ring;
  uint8_t mode; /* For valid values, refer to "enum TeleCaptureMode" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_SET_INCALL_MUSIC_ID, UUID: d97070f9802ed4b33d5f03c7a796f591
 *   CMD_AUDIO_INPUT_GET_INCALL_MUSIC_ID, UUID: 30cae4a279c54727dbbd0272edb37335
 */
struct CMD_AUDIO_INPUT_INCALL_MUSIC {
  struct CMD_HDR parent;
  uint8_t ring;
  uint8_t enable;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_GET_DSP_IDENTIFIER_ID, UUID: eeca1a8393a2d6e8a95edd61cbfae641
 */
struct CMD_AUDIO_INPUT_DSP_IDENTIFIER {
  struct CMD_HDR parent;
  uint32_t version;
  uint8_t payload[64];
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_GET_CLEANER_POST_GAIN_ID, UUID: cbd7af8666b927f82aeddcb86fc5bde5
 */
struct CMD_AUDIO_INPUT_HOTWORD_GET_CLEANER_POST_GAIN {
  struct CMD_HDR parent;
  int32_t cleaner_post_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_SET_CLEANER_POST_GAIN_ID, UUID: 6c5048c15135ce52744e1af037cef70e
 */
struct CMD_AUDIO_INPUT_HOTWORD_SET_CLEANER_POST_GAIN {
  struct CMD_HDR parent;
  int32_t cleaner_post_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_GET_CHRE_GAIN_ID, UUID: a861c0ef25f62e08f6f2a6d6ba9b7f3f
 */
struct CMD_AUDIO_INPUT_GET_CHRE_GAIN {
  struct CMD_HDR parent;
  int32_t chre_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_SET_CHRE_GAIN_ID, UUID: 8db5cdb6c1ebae6952adb452693a9bca
 */
struct CMD_AUDIO_INPUT_SET_CHRE_GAIN {
  struct CMD_HDR parent;
  int32_t chre_gain_cb;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_SET_INCALL_MUSIC_CHAN_ID, UUID: 92b41b1c667d42b82749d16a767fb384
 *   CMD_AUDIO_INPUT_GET_INCALL_MUSIC_CHAN_ID, UUID: 7e647c28e7f23a1473fc9267821f1051
 */
struct CMD_AUDIO_INPUT_INCALL_MUSIC_CHAN {
  struct CMD_HDR parent;
  uint8_t ring;
  uint8_t channel;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_DEC_CH_GAIN_SET_ID, UUID: 372207e1fa69087ada47e23a3f964954
 *   CMD_AUDIO_OUTPUT_DEC_CH_GAIN_GET_ID, UUID: 132703c51bb018bbf2c9a870e8b974d8
 */
struct CMD_AUDIO_OUTPUT_DEC_CH_GAIN {
  struct CMD_HDR parent;
  uint32_t ch_bit_mask;
  int32_t ch_gains[2];
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SET_INCALL_MUSIC_ID, UUID: ae8516b1e4237d7e7ab63c7193ef60b7
 *   CMD_AUDIO_OUTPUT_GET_INCALL_MUSIC_ID, UUID: 9924e5b1371480463653336a2b911175
 */
struct CMD_AUDIO_OUTPUT_INCALL_MUSIC {
  struct CMD_HDR parent;
  uint8_t ring;
  uint8_t enable;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SET_INCALL_MUSIC_CHAN_ID, UUID: 06ec150b46781df7093004014363bcf1
 *   CMD_AUDIO_OUTPUT_GET_INCALL_MUSIC_CHAN_ID, UUID: b712dc35a95e562dfc1f90e7df03eb33
 */
struct CMD_AUDIO_OUTPUT_INCALL_MUSIC_CHAN {
  struct CMD_HDR parent;
  uint8_t ring;
  uint8_t channel;
} __attribute__((packed));

enum SINK_ID {
  SINK_SPEAKER = 0,
  SINK_UNUSED,
  SINK_BT,
  SINK_USB,
  SINK_MODEM,
  SINK_TOT,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SINK2_ID, UUID: afcb174afe4b8670d9750e812d1c7d8a
 */
struct CMD_AUDIO_OUTPUT_SINK2 {
  struct CMD_HDR parent;
  uint8_t sink; /* For valid values, refer to "enum SINK_ID" */
  uint8_t mode;
  uint8_t timestamping;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_MMAP_ENABLE_2_ID, UUID: b7ab82241eca695a59c93379d6ef8fc4
 */
struct CMD_AUDIO_INPUT_MMAP_ENABLE_2 {
  struct CMD_HDR parent;
  uint8_t chan; /* For valid values, refer to "enum Channels" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_RAW_ENABLE_2_ID, UUID: 756ed891fa5df48204ddef41bed9e0d8
 */
struct CMD_AUDIO_INPUT_RAW_ENABLE_2 {
  struct CMD_HDR parent;
  uint8_t chan; /* For valid values, refer to "enum Channels" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_USB_CONFIG_V2_ID, UUID: b6537926b5b2d37c4c174b18427a21ea
 */
struct CMD_AUDIO_OUTPUT_USB_CONFIG_V2 {
  struct CMD_HDR parent;
  uint16_t bus_id;
  uint16_t dev_num;
  uint16_t tx_ep_num;
  uint32_t tx_format;
  uint32_t tx_sr;
  uint8_t tx_ch;
  uint8_t tx_width;
  uint8_t tx_enable;
  uint16_t rx_ep_num;
  uint32_t rx_format;
  uint32_t rx_sr;
  uint8_t rx_ch;
  uint8_t rx_width;
  uint8_t rx_enable;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_USB_CONTROL_NOTIFY_CONN_STAT_V2_ID, UUID: 815b96706de911ee94096151094dcd08
 */
struct CMD_USB_CONTROL_NOTIFY_CONN_STAT_V2 {
  struct CMD_HDR parent;
  uint16_t bus_id;
  uint16_t dev_num;
  uint16_t slot_id;
  uint32_t conn_state;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_USB_CONTROL_SET_DCBAA_PTR_ID, UUID: 062ec07be950de1a51f6672f6be16e31
 */
struct CMD_USB_CONTROL_SET_DCBAA_PTR {
  struct CMD_HDR parent;
  uint64_t aoc_dcbaa_ptr;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_USB_CONTROL_SET_ISOC_TR_INFO_ID, UUID: 332af5a31fdbaeced70194c13e177a1f
 */
struct CMD_USB_CONTROL_SET_ISOC_TR_INFO {
  struct CMD_HDR parent;
  uint16_t ep_id;
  uint16_t dir;
  uint32_t type;
  uint32_t num_segs;
  uint32_t seg_ptr;
  uint32_t max_packet;
  uint32_t deq_ptr;
  uint32_t enq_ptr;
  uint32_t cycle_state;
  uint32_t num_trbs_free;
} __attribute__((packed));

enum AudioDSPMode {
  AUDIO_DSP_MODE_AMBIENT = 0,
  AUDIO_DSP_MODE_RECORD,
  AUDIO_DSP_MODE_TELEPHONY,
  AUDIO_DSP_MODE_RESERVED_0,
  AUDIO_DSP_MODE_RESERVED_1,
  AUDIO_DSP_MODE_RESERVED_2,
  AUDIO_DSP_MODE_TELEPHONY_APMG3,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_DSP_MODE_SET_ID, UUID: 9df7cfb0c11779420f8e25164c143673
 *   CMD_AUDIO_OUTPUT_DSP_MODE_GET_ID, UUID: 33ae968607b1c6af3d5708e95dd8709e
 */
struct CMD_AUDIO_OUTPUT_DSP_MODE {
  struct CMD_HDR parent;
  uint8_t mode; /* For valid values, refer to "enum AudioDSPMode" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_GET_MEMORY_EXCEPTION_DATA_COUNT_ID, UUID: a205712df6b7c487c9c62b486dc1b056
 */
struct CMD_GET_MEMORY_EXCEPTION_DATA_COUNT {
  struct CMD_HDR parent;
  uint32_t num_memory_exception;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_GET_MEMORY_EXCEPTION_DATA_ID, UUID: 68cb4b7529be7de160dda916502bdd6f
 */
struct CMD_GET_MEMORY_EXCEPTION_DATA {
  struct CMD_HDR parent;
  uint32_t id;
  uint32_t return_address;
  uint32_t fault_address;
  char task_name[16];
  uint8_t log_index;
  uint8_t valid;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_GET_MEMORY_VOTES_DATA_COUNT_ID, UUID: 3c71e64c267c6e4a4e2e67535de0b5bd
 */
struct CMD_GET_MEMORY_VOTES_DATA_COUNT {
  struct CMD_HDR parent;
  uint32_t num_of_clients;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_GET_MEMORY_VOTES_DATA_ID, UUID: 09a0d51b06bf64fd7333c09abf73ed6a
 */
struct CMD_GET_MEMORY_VOTES_DATA {
  struct CMD_HDR parent;
  uint64_t last_on_time_ns;
  uint64_t total_time_us;
  uint32_t votes;
  uint32_t total_votes;
  uint32_t on_votes;
  uint8_t core_id;
  uint8_t app_id;
  uint8_t valid;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_MODEM_INPUT_START_2_ID, UUID: 0c7111383813f4cc270e1b7a20d07b5e
 */
struct CMD_AUDIO_INPUT_MODEM_INPUT_START_2 {
  struct CMD_HDR parent;
  uint8_t mic_input_source; /* For valid values, refer to "enum ModemInputIndex" */
  uint8_t ref_input_source; /* For valid values, refer to "enum ModemInputIndex" */
} __attribute__((packed));

enum FeedbackSrcInputIndex {
  FEEDBACK_SRC_AEC_SPKR_INPUT_INDEX = 0,
  FEEDBACK_SRC_AEC_BT_INPUT_INDEX,
  FEEDBACK_SRC_AEC_USB_INPUT_INDEX,
  FEEDBACK_SRC_NUM_INPUTS,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_SELECT_AEC_REF_ID, UUID: a5fec1494a593b4bc313fd4fca0645dd
 */
struct CMD_AUDIO_INPUT_FEEDBACK_SRC_SELECT_REF {
  struct CMD_HDR parent;
  int32_t aec_ref_index; /* For valid values, refer to "enum FeedbackSrcInputIndex" */
} __attribute__((packed));

enum UDFPS_INPUT_SOURCE {
  SOURCE_NONE = 0,
  SOURCE_OSC,
  SOURCE_DISP,
  SOURCE_TOT,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_UDFPS_SET_CLOCK_SOURCE_ID, UUID: a4c07b287b2f1b34f9d8f53b3d129cc6
 */
struct CMD_UDFPS_SET_CLOCK_SOURCE {
  struct CMD_HDR parent;
  uint8_t clock_source; /* For valid values, refer to "enum UDFPS_INPUT_SOURCE" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_UDFPS_GET_CLOCK_FREQUENCY_ID, UUID: bcaae012229513cb5c78aa608d2366af
 */
struct CMD_UDFPS_GET_CLOCK_FREQUENCY {
  struct CMD_HDR parent;
  uint32_t clock_freq_in_u32;
  uint8_t clock_source; /* For valid values, refer to "enum UDFPS_INPUT_SOURCE" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_USB_CONTROL_SET_OFFLOAD_STATE_ID, UUID: 7c3fb83ef3e4cb867213a8cecc55759e
 */
struct CMD_USB_CONTROL_SET_OFFLOAD_STATE {
  struct CMD_HDR parent;
  uint8_t offloading;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_USB_CONTROL_SEND_FEEDBACK_EP_INFO_ID, UUID: ad56add5dc20f99eea004f40c28ed0ae
 */
struct CMD_USB_CONTROL_SEND_FEEDBACK_EP_INFO {
  struct CMD_HDR parent;
  uint8_t enabled;
  uint16_t bus_id;
  uint16_t dev_num;
  uint16_t slot_id;
  uint16_t ep_num;
  uint32_t max_packet;
  uint16_t binterval;
  uint16_t brefresh;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_MEDIA_COMMANDS_WRITE_MODEL_ID, UUID: 28a42016e23074c21d1462197b9c9d59
 */
struct CMD_AUDIO_INPUT_MEDIA_COMMANDS_WRITE_MODEL {
  struct CMD_HDR parent;
  uint32_t offset;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_MEM_MAP_REGION_ID, UUID: 0e5f7c97aa5dfa4e27aea3606fee68e4
 */
struct CMD_MEM_MAP_REGION {
  struct CMD_CORE_GENERIC parent;
  uint32_t handle;
  uint32_t base;
  uint32_t size;
  uint8_t mapped;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_DECODER_GAPLESS_METADATA_ID, UUID: 71656480fba7c2512eb2c8493e71e7e6
 */
struct CMD_AUDIO_OUTPUT_DECODER_GAPLESS_METADATA {
  struct CMD_HDR parent;
  uint32_t curr_track_delay_frames;
  uint32_t curr_track_padding_frames;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_SET_AP_OFFLOAD_ID, UUID: 56f7e66fe4bff9842ca5fc4c2c5718a7
 */
struct CMD_AUDIO_INPUT_HOTWORD_SET_AP_OFFLOAD {
  struct CMD_HDR parent;
  uint8_t enable_offload;
  uint8_t num_mics;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_DBG_MCPS_ID, UUID: 1c45eb22738c03451a98b22ff078c44e
 */
struct CMD_DBG_MCPS {
  struct CMD_CORE_GENERIC parent;
  int32_t is_enabled;
  int32_t is_cumulative;
  int32_t print_now;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_DBG_SCRIB_ID, UUID: b25be6c015fb19aef6b15f76f3aff335
 */
struct CMD_DBG_SCRIB {
  struct CMD_CORE_GENERIC parent;
  int32_t override_enable;
  int32_t prescrib;
  int32_t postscrib;
  int32_t free_after_free;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_DBG_PRIVATE_ID, UUID: e338efdfe6222a0d2dd95100233654c1
 */
struct CMD_DBG_PRIVATE {
  struct CMD_CORE_GENERIC parent;
  uint8_t sub_cmd;
  uint8_t payload_size;
} __attribute__((packed));

enum ApStateTransition {
  ENTER_SLEEP = 0,
  EXIT_SLEEP,
  ENTER_SICD,
  EXIT_SICD,
  AP_STATE_TRANSITION_TOT = 20,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AP_STATE_TRANSITION_ID, UUID: a52bd38054f3e3f92eabb5c94f5d65fe
 */
struct CMD_AP_STATE_TRANSITION {
  struct CMD_HDR parent;
  uint8_t transition; /* For valid values, refer to "enum ApStateTransition" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_SET_CHRE_SRC_AEC_TIMEOUT_ID, UUID: cf9af404b8238148390eb250b535c2a9
 */
struct CMD_AUDIO_INPUT_SET_CHRE_SRC_AEC_TIMEOUT {
  struct CMD_HDR parent;
  uint32_t timeout_ms;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_SET_CHRE_SRC_PDM_GAIN_ID, UUID: 70ad1f841ce46465e2389e08938835c9
 */
struct CMD_AUDIO_INPUT_SET_CHRE_SRC_PDM_GAIN {
  struct CMD_HDR parent;
  int32_t gain_centibel;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_SET_CHRE_SRC_AEC_GAIN_ID, UUID: fde782e5f1431573bd867d163fbf43a1
 */
struct CMD_AUDIO_INPUT_SET_CHRE_SRC_AEC_GAIN {
  struct CMD_HDR parent;
  int32_t gain_centibel;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_HOTWORD_GET_BUFFER_TIMESTAMP_ID, UUID: 09e26d242004640c7e9adfeaafcc17ec
 */
struct CMD_AUDIO_INPUT_HOTWORD_GET_BUFFER_TIMESTAMP {
  struct CMD_HDR parent;
  uint64_t timestamp_ticks;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_MEL_STATE_ID, UUID: 89f53f6d95f7a78c3afebb6775c9bc27
 */
struct CMD_AUDIO_OUTPUT_MEL_STATE {
  struct CMD_HDR parent;
  uint8_t enable;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_MEL_SET_RS2_ID, UUID: 3ea25e761948837bf715b83912a8c6ba
 *   CMD_AUDIO_OUTPUT_MEL_GET_RS2_ID, UUID: 120e10d404ffa402dee05fd81086b671
 */
struct CMD_AUDIO_OUTPUT_MEL_RS2 {
  struct CMD_HDR parent;
  float rs2_value;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_MEL_TRIGGER_ID, UUID: f32ed38b051caa0836f480a6fb1d2366
 */
struct CMD_AUDIO_OUTPUT_MEL_TRIGGER {
  struct CMD_HDR parent;
  uint64_t timestamp;
  float mel_value;
  uint8_t block;
  uint8_t component;
} __attribute__((packed));

#define MAX_MEL_VALUE_SIZE (120) /* UUID: fe50b0e773e56fcc9fa7a8d1caa11e82 */

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_MEL_GET_VALUE_ID, UUID: 22e2b9f970d44ad413564d599919d13b
 */
struct CMD_AUDIO_OUTPUT_MEL_GET_VALUE {
  struct CMD_HDR parent;
  uint64_t timestamp;
  float mel_value[MAX_MEL_VALUE_SIZE];
  uint32_t count;
  uint8_t block;
  uint8_t component;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_DBG_HEAP_V2_ID, UUID: 51a1e869c913cca4ebfa24576e967786
 */
struct CMD_DBG_HEAP_V2 {
  struct CMD_CORE_GENERIC parent;
  uint32_t crc;
  uint8_t mode; /* For valid values, refer to "enum DbgHeapMode" */
  int32_t heap_num;
  uint8_t reset_cumulative;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AOCX_PROCESSOR_ENABLE_ID, UUID: 4cbb4739c0abefdee7944529c1e3bad1
 */
struct CMD_AOCX_PROCESSOR_ENABLE {
  struct CMD_HDR parent;
  uint32_t featureId;
  uint8_t enable;
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_EP_SETUP2_ID, UUID: 6fb91bb5c3cabce40df8be6ce186bcaa
 */
struct CMD_AUDIO_OUTPUT_EP_SETUP2 {
  struct CMD_HDR parent;
  uint8_t channel;
  uint32_t buffer_size;
  uint32_t period_size;
  uint8_t mode; /* For valid values, refer to "enum EntrypointMode" */
} __attribute__((packed));

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_SET_PARAMS2_ID, UUID: ed6fa32eebf27ab2f9f86303a7507896
 *   CMD_AUDIO_INPUT_ULTRASONIC_AP_SET_PARAMS2_ID, UUID: 0ba02b5209f50546e5cc682dff34ca8b
 */
struct CMD_AUDIO_INPUT_MIC_RECORD_AP_SET_PARAMS2 {
  struct CMD_HDR parent;
  uint8_t channel;
  uint32_t buffer_size;
  uint32_t period_size;
} __attribute__((packed));

struct NOTIF_HDR {
  struct CONTAINER_HDR parent;
  uint32_t id;
  uint32_t tag;
} __attribute__((packed));

#define notif_payload (36) /* UUID: 21377ce718fd3e9bec883f8fb476c056 */

/**
 * Structure associated with the following notifications:
 *
 *   NOTIF_AUDIO_INPUT_AP_MIC_RECORD_DATA_AVAILABLE_ID, UUID: 855757d797533015c32d352f66e04679
 */
struct NOTIF {
  struct NOTIF_HDR parent;
  uint8_t payload[notif_payload];
} __attribute__((packed));



/**
 * Helper function to initialize commands
 *
 * \param[out] cmd Pointer to command structure to initialize
 * \param[in] id Command ID.  Refer to \ref AOC_COMMAND
 * \param[in] length Command length (size of the command structure)
 */
static inline void AocCmdHdrSet(struct CMD_HDR * cmd, uint16_t id, uint16_t length) {
  #ifdef __KERNEL__
     static atomic_t cmd_cntr_ = ATOMIC_INIT(-1);
     cmd->parent.cntr = atomic_inc_return(&cmd_cntr_);
  #else
     static int cmd_cntr_ = 0;
     cmd->parent.cntr = cmd_cntr_++;
  #endif

  cmd->parent.type = DATA_TYPE_CMD;
  cmd->parent.len = length;
  cmd->id = id;
}


/**
 * Helper function to initialize commands that don't need to be acked
 *
 * \param[out] cmd Pointer to command structure to initialize
 * \param[in] id Command ID.  Refer to \ref AOC_COMMAND
 * \param[in] length Command length (size of the command structure)
 */
static inline void AocCmdNoAckHdrSet(struct CMD_HDR * cmd, uint16_t id, uint16_t length) {
  #ifdef __KERNEL__
     static atomic_t cmd_cntr_ = ATOMIC_INIT(-1);
     cmd->parent.cntr = atomic_inc_return(&cmd_cntr_);
  #else
     static int cmd_cntr_ = 0;
     cmd->parent.cntr = cmd_cntr_++;
  #endif

  cmd->parent.type = DATA_TYPE_CMD_NO_ACK;
  cmd->parent.len = length;
  cmd->id = id;
}


/**
 * Total number of UUID strings to check against the FW image.
 */
#define AOC_UUID_ENTRIES (285)

/**
 * UUID entry size.
 */
#define AOC_UUID_SIZE (16)


/**
 * Function to check interface compatibility
 *
 * \param[in] addr UUID table's address
 * \param[in] size UUID table's size
 *
 * \return 0 if compatibility is Ok, -1 otherwise
 */
static inline int AocInterfaceCheck(const void * addr, int size) {
  static const uint8_t uuid_array[AOC_UUID_ENTRIES][AOC_UUID_SIZE] = { 
      { 0x01, 0x7e, 0x87, 0x91, 0x50, 0x8f, 0x32, 0x97, 0x11, 0x80, 0x6b, 0x7b, 0x17, 0x84, 0x65, 0x4a},
      { 0x02, 0xaa, 0x59, 0x76, 0x93, 0x91, 0xdb, 0xf4, 0xe0, 0xba, 0xe8, 0x2f, 0xbc, 0xae, 0xbb, 0x3c},
      { 0x03, 0xbb, 0xd8, 0x7e, 0x56, 0xc4, 0x52, 0xd6, 0x27, 0xb9, 0x1e, 0x6f, 0xb1, 0x35, 0xaa, 0x6d},
      { 0x04, 0x75, 0xfa, 0x5e, 0x05, 0x09, 0xe0, 0x42, 0x86, 0x17, 0x0b, 0xbd, 0x43, 0x16, 0x6f, 0xe0},
      { 0x04, 0xbb, 0x6c, 0xf8, 0xcd, 0x42, 0x90, 0xca, 0xb2, 0xf4, 0xa1, 0xd5, 0x98, 0x4a, 0xd1, 0x37},
      { 0x05, 0xc8, 0xdb, 0x46, 0xe2, 0x74, 0xa9, 0x08, 0x31, 0x97, 0xbd, 0xdb, 0xf5, 0x34, 0xe6, 0x37},
      { 0x06, 0x2e, 0xc0, 0x7b, 0xe9, 0x50, 0xde, 0x1a, 0x51, 0xf6, 0x67, 0x2f, 0x6b, 0xe1, 0x6e, 0x31},
      { 0x06, 0xc9, 0x6d, 0x4c, 0xc0, 0x17, 0x3e, 0x6f, 0xe6, 0xbf, 0xe9, 0x5c, 0x97, 0xbf, 0xe9, 0x33},
      { 0x06, 0xec, 0x15, 0x0b, 0x46, 0x78, 0x1d, 0xf7, 0x09, 0x30, 0x04, 0x01, 0x43, 0x63, 0xbc, 0xf1},
      { 0x08, 0x03, 0x6d, 0x24, 0xf5, 0x2f, 0xe0, 0x21, 0xa2, 0xef, 0x84, 0x19, 0xf2, 0x8d, 0xbf, 0x0d},
      { 0x08, 0x5b, 0x3c, 0x10, 0x69, 0x3d, 0xe3, 0xcd, 0x14, 0xa5, 0xab, 0xc2, 0x25, 0x82, 0x80, 0xce},
      { 0x09, 0xa0, 0xd5, 0x1b, 0x06, 0xbf, 0x64, 0xfd, 0x73, 0x33, 0xc0, 0x9a, 0xbf, 0x73, 0xed, 0x6a},
      { 0x09, 0xe2, 0x6d, 0x24, 0x20, 0x04, 0x64, 0x0c, 0x7e, 0x9a, 0xdf, 0xea, 0xaf, 0xcc, 0x17, 0xec},
      { 0x0a, 0x59, 0xd4, 0xc7, 0x2b, 0x38, 0x77, 0x11, 0x45, 0x4f, 0xbd, 0x37, 0x5d, 0x30, 0x44, 0x17},
      { 0x0a, 0x81, 0x94, 0x45, 0x4e, 0x79, 0x09, 0xaa, 0xc5, 0x00, 0x3b, 0xe1, 0x76, 0xe8, 0x20, 0x91},
      { 0x0a, 0x84, 0x69, 0xb5, 0xb9, 0x6b, 0x5c, 0xcb, 0xf7, 0x3a, 0x68, 0xd0, 0x34, 0xfc, 0x69, 0xb6},
      { 0x0b, 0xa0, 0x2b, 0x52, 0x09, 0xf5, 0x05, 0x46, 0xe5, 0xcc, 0x68, 0x2d, 0xff, 0x34, 0xca, 0x8b},
      { 0x0c, 0x71, 0x11, 0x38, 0x38, 0x13, 0xf4, 0xcc, 0x27, 0x0e, 0x1b, 0x7a, 0x20, 0xd0, 0x7b, 0x5e},
      { 0x0d, 0x0e, 0xd5, 0xab, 0x53, 0x92, 0xd3, 0xd5, 0x0a, 0xf3, 0x4f, 0xbf, 0x2b, 0x15, 0x25, 0x15},
      { 0x0e, 0x5f, 0x7c, 0x97, 0xaa, 0x5d, 0xfa, 0x4e, 0x27, 0xae, 0xa3, 0x60, 0x6f, 0xee, 0x68, 0xe4},
      { 0x10, 0xaa, 0x17, 0xf6, 0x01, 0x2e, 0x86, 0x30, 0x9e, 0x2f, 0xd0, 0x59, 0xee, 0x03, 0x25, 0x3a},
      { 0x11, 0x76, 0x82, 0xaf, 0x13, 0x45, 0x5a, 0x3d, 0xe0, 0xf0, 0xf0, 0x1a, 0x02, 0xa3, 0xd4, 0x66},
      { 0x12, 0x0e, 0x10, 0xd4, 0x04, 0xff, 0xa4, 0x02, 0xde, 0xe0, 0x5f, 0xd8, 0x10, 0x86, 0xb6, 0x71},
      { 0x12, 0x89, 0x2d, 0xad, 0xd9, 0xba, 0x4d, 0x23, 0xea, 0xe4, 0x85, 0xd3, 0xd5, 0x9f, 0xcc, 0xf0},
      { 0x13, 0x27, 0x03, 0xc5, 0x1b, 0xb0, 0x18, 0xbb, 0xf2, 0xc9, 0xa8, 0x70, 0xe8, 0xb9, 0x74, 0xd8},
      { 0x14, 0x40, 0x6b, 0x26, 0x35, 0x21, 0x56, 0xfc, 0x3f, 0xd4, 0x5d, 0xbd, 0x2a, 0xfe, 0x8f, 0x21},
      { 0x14, 0xa6, 0x59, 0x85, 0x37, 0xe1, 0x9f, 0x97, 0x87, 0x9e, 0xaf, 0x9c, 0xfa, 0x6f, 0xb9, 0xba},
      { 0x14, 0xf1, 0x44, 0xaf, 0x01, 0x3e, 0x1a, 0x5f, 0xf4, 0xcd, 0x17, 0xfc, 0x43, 0xbd, 0x90, 0x80},
      { 0x15, 0xc1, 0x57, 0x0c, 0x12, 0x58, 0xba, 0x2a, 0xcd, 0xd2, 0xd4, 0xdd, 0x2e, 0x17, 0x2f, 0xbe},
      { 0x17, 0x0d, 0xc9, 0xa2, 0x72, 0xcf, 0xdc, 0xe7, 0xdd, 0xc3, 0xbe, 0x51, 0x33, 0x6c, 0xfd, 0x31},
      { 0x17, 0xda, 0x3a, 0xdb, 0xbb, 0xfb, 0xdb, 0xe6, 0x21, 0x5b, 0x81, 0x3d, 0xca, 0x17, 0xe1, 0x41},
      { 0x18, 0x53, 0x72, 0x57, 0x16, 0xf2, 0x67, 0x8f, 0x9b, 0xd1, 0x2f, 0x96, 0x1c, 0x2a, 0xe5, 0x91},
      { 0x1a, 0x8f, 0x67, 0xd7, 0x66, 0xcc, 0x9a, 0x1e, 0x21, 0xd6, 0x54, 0x8a, 0xfd, 0xc2, 0xba, 0x57},
      { 0x1a, 0xc2, 0xb5, 0xc1, 0x94, 0xcb, 0x12, 0x67, 0xb0, 0xa9, 0xd9, 0xda, 0x7a, 0xe1, 0xd6, 0xc9},
      { 0x1c, 0x45, 0xeb, 0x22, 0x73, 0x8c, 0x03, 0x45, 0x1a, 0x98, 0xb2, 0x2f, 0xf0, 0x78, 0xc4, 0x4e},
      { 0x1c, 0x8e, 0x98, 0xae, 0x6f, 0xd8, 0x58, 0x47, 0xb2, 0x84, 0x00, 0xbe, 0xc1, 0x35, 0x59, 0x10},
      { 0x1d, 0x92, 0xa5, 0x52, 0xf0, 0x20, 0xdb, 0x57, 0x42, 0xf1, 0x1a, 0x3f, 0xfd, 0x7e, 0x54, 0x4c},
      { 0x1d, 0xb1, 0x1b, 0x44, 0x6b, 0xa2, 0x2d, 0xb9, 0x92, 0x42, 0x1b, 0xdb, 0x59, 0x01, 0x17, 0x51},
      { 0x1d, 0xfc, 0xc8, 0xcf, 0x13, 0x0b, 0x1b, 0x42, 0xe6, 0x72, 0x8c, 0xac, 0xd4, 0xe0, 0xa7, 0xd3},
      { 0x20, 0xa7, 0x8f, 0x1f, 0x76, 0x36, 0xfd, 0x03, 0xaf, 0x70, 0x07, 0x82, 0x36, 0xb4, 0xd2, 0x71},
      { 0x21, 0x37, 0x7c, 0xe7, 0x18, 0xfd, 0x3e, 0x9b, 0xec, 0x88, 0x3f, 0x8f, 0xb4, 0x76, 0xc0, 0x56},
      { 0x21, 0x40, 0x87, 0xaf, 0x52, 0xdc, 0xfa, 0x3f, 0x39, 0x30, 0xc8, 0xa9, 0xa9, 0x86, 0xc7, 0x83},
      { 0x21, 0xd2, 0x3b, 0x51, 0x10, 0x75, 0x47, 0xec, 0x3a, 0x08, 0x33, 0x80, 0xca, 0xce, 0x82, 0x5e},
      { 0x22, 0x25, 0xe4, 0xb1, 0x79, 0xa5, 0xdf, 0xbc, 0x0a, 0xd4, 0x56, 0xc8, 0x11, 0x04, 0x59, 0x09},
      { 0x22, 0x8b, 0x2b, 0x4c, 0x01, 0xe7, 0xc1, 0x26, 0x65, 0x80, 0x56, 0xa5, 0x96, 0xac, 0x4e, 0x5c},
      { 0x22, 0xe2, 0xb9, 0xf9, 0x70, 0xd4, 0x4a, 0xd4, 0x13, 0x56, 0x4d, 0x59, 0x99, 0x19, 0xd1, 0x3b},
      { 0x24, 0x9a, 0xda, 0x53, 0xf8, 0xb6, 0xce, 0x22, 0x6b, 0xa9, 0xaa, 0x73, 0xda, 0xbb, 0xf5, 0xe6},
      { 0x25, 0xd1, 0x6d, 0x03, 0x7a, 0x41, 0xa1, 0xf8, 0x54, 0x06, 0xa0, 0x02, 0x90, 0x17, 0xa0, 0x2a},
      { 0x26, 0xbd, 0xe6, 0x3c, 0xaf, 0xfd, 0x54, 0x4e, 0x58, 0x1a, 0x72, 0x93, 0xf1, 0xcf, 0x79, 0x3c},
      { 0x27, 0x18, 0x72, 0xe1, 0xbf, 0x7b, 0x57, 0xd8, 0xc2, 0xbb, 0x10, 0x84, 0x72, 0x06, 0xe8, 0x88},
      { 0x27, 0x9a, 0xa8, 0x8a, 0xfc, 0x7b, 0xdf, 0xff, 0x45, 0x52, 0x99, 0x76, 0x17, 0x6b, 0x32, 0x60},
      { 0x28, 0xa4, 0x20, 0x16, 0xe2, 0x30, 0x74, 0xc2, 0x1d, 0x14, 0x62, 0x19, 0x7b, 0x9c, 0x9d, 0x59},
      { 0x2a, 0x38, 0x91, 0xf4, 0xd9, 0x66, 0x73, 0x05, 0xcc, 0x1d, 0x5d, 0xcf, 0x03, 0xbe, 0x8d, 0x85},
      { 0x2a, 0x39, 0x2f, 0x6c, 0x9f, 0x9a, 0xc7, 0x88, 0xfb, 0x2a, 0x12, 0xa6, 0xe4, 0xa5, 0xdd, 0xe5},
      { 0x2a, 0xb9, 0x8e, 0xc5, 0x8f, 0x7c, 0x97, 0x04, 0xb4, 0xe8, 0x3b, 0x93, 0xbb, 0xce, 0xfa, 0xa2},
      { 0x2a, 0xd9, 0x11, 0x9c, 0x66, 0xc8, 0xc4, 0x8a, 0x45, 0x7d, 0x6d, 0x17, 0x5c, 0x53, 0x27, 0x60},
      { 0x2c, 0x04, 0x89, 0xaf, 0xcb, 0x07, 0xc2, 0x71, 0x45, 0x4e, 0x4d, 0xa7, 0x16, 0x62, 0x23, 0xff},
      { 0x2c, 0x3d, 0x11, 0xcf, 0x78, 0x8e, 0x47, 0xc0, 0x93, 0x75, 0xb6, 0x0e, 0xf4, 0x47, 0x77, 0xfc},
      { 0x2c, 0xab, 0x0e, 0x94, 0x82, 0xce, 0xc6, 0xae, 0xf3, 0x71, 0x58, 0x10, 0xb1, 0x74, 0x1d, 0x7e},
      { 0x2f, 0xce, 0xdf, 0xa6, 0x97, 0xab, 0x03, 0x43, 0x86, 0x3d, 0x06, 0xf3, 0xd6, 0x08, 0xc1, 0x0e},
      { 0x30, 0x76, 0xf3, 0x87, 0xa6, 0x78, 0xce, 0x54, 0xfa, 0xda, 0x1a, 0xf5, 0xa8, 0x3b, 0x63, 0xd6},
      { 0x30, 0xca, 0xe4, 0xa2, 0x79, 0xc5, 0x47, 0x27, 0xdb, 0xbd, 0x02, 0x72, 0xed, 0xb3, 0x73, 0x35},
      { 0x32, 0x20, 0x9e, 0x63, 0x2e, 0xe6, 0x7e, 0x9b, 0x50, 0x7a, 0x06, 0x6e, 0x1c, 0xe3, 0x1e, 0x64},
      { 0x33, 0x2a, 0xf5, 0xa3, 0x1f, 0xdb, 0xae, 0xce, 0xd7, 0x01, 0x94, 0xc1, 0x3e, 0x17, 0x7a, 0x1f},
      { 0x33, 0x94, 0xe9, 0x85, 0xe5, 0xa4, 0xc7, 0x67, 0xef, 0xd2, 0xf3, 0x76, 0xa6, 0xd3, 0xf1, 0x0f},
      { 0x33, 0xae, 0x96, 0x86, 0x07, 0xb1, 0xc6, 0xaf, 0x3d, 0x57, 0x08, 0xe9, 0x5d, 0xd8, 0x70, 0x9e},
      { 0x36, 0x13, 0x17, 0x7f, 0x5b, 0x58, 0x7d, 0xfd, 0xaa, 0xd1, 0x55, 0x24, 0xd2, 0x97, 0x67, 0x26},
      { 0x36, 0x67, 0xc2, 0xaf, 0xfe, 0xe4, 0x2f, 0xed, 0x78, 0x89, 0x2d, 0x05, 0x62, 0x6d, 0x0a, 0x88},
      { 0x36, 0x7c, 0xc9, 0xdc, 0xdb, 0x4c, 0xcb, 0x52, 0x95, 0xd1, 0x1a, 0xb0, 0x54, 0xc3, 0x71, 0x06},
      { 0x37, 0x22, 0x07, 0xe1, 0xfa, 0x69, 0x08, 0x7a, 0xda, 0x47, 0xe2, 0x3a, 0x3f, 0x96, 0x49, 0x54},
      { 0x37, 0xb9, 0xc6, 0x86, 0x48, 0x9b, 0x1c, 0x89, 0x6a, 0xb3, 0xe6, 0x6e, 0xa0, 0x84, 0xf6, 0x46},
      { 0x37, 0xf8, 0x5b, 0xad, 0x8d, 0xca, 0x4b, 0xe8, 0x3d, 0x27, 0xb4, 0xec, 0xc9, 0x3c, 0x5b, 0xdd},
      { 0x3a, 0xec, 0xff, 0xd3, 0xa2, 0xb3, 0x17, 0x27, 0xfd, 0xc5, 0x1f, 0x80, 0xc6, 0x19, 0xa2, 0xe8},
      { 0x3b, 0xfa, 0x87, 0x99, 0x9f, 0xaf, 0x40, 0xdf, 0x0f, 0xee, 0xf2, 0x3d, 0xd9, 0x4c, 0xc5, 0x94},
      { 0x3c, 0x71, 0xe6, 0x4c, 0x26, 0x7c, 0x6e, 0x4a, 0x4e, 0x2e, 0x67, 0x53, 0x5d, 0xe0, 0xb5, 0xbd},
      { 0x3e, 0x8d, 0xad, 0xc9, 0x9d, 0x9d, 0x30, 0xff, 0xd9, 0xca, 0x03, 0x59, 0xb4, 0x81, 0xae, 0xfd},
      { 0x3e, 0xa2, 0x5e, 0x76, 0x19, 0x48, 0x83, 0x7b, 0xf7, 0x15, 0xb8, 0x39, 0x12, 0xa8, 0xc6, 0xba},
      { 0x3f, 0x7e, 0x21, 0x28, 0x19, 0x4a, 0xbb, 0x2c, 0x20, 0x72, 0xf2, 0xb8, 0x95, 0xfa, 0xd9, 0xf3},
      { 0x40, 0xbd, 0xd5, 0x3e, 0x16, 0x32, 0x96, 0x23, 0x34, 0x59, 0x4c, 0xb1, 0xf0, 0xf9, 0x2d, 0xa5},
      { 0x43, 0xfd, 0x27, 0xea, 0x86, 0xc0, 0xab, 0x09, 0x71, 0xba, 0x99, 0x27, 0x5d, 0xbe, 0xc1, 0x61},
      { 0x4a, 0x1e, 0xe5, 0x81, 0xb6, 0x4d, 0x2d, 0x1e, 0x3c, 0xf7, 0x01, 0x41, 0x34, 0x75, 0xa8, 0x50},
      { 0x4a, 0x4e, 0xc7, 0x4c, 0x3e, 0xda, 0x93, 0x5d, 0x8a, 0x28, 0xe2, 0xa9, 0x42, 0xe4, 0xa7, 0x5b},
      { 0x4b, 0x09, 0x29, 0xd9, 0x02, 0xbd, 0x8d, 0xfb, 0x96, 0x0f, 0x5b, 0x41, 0x70, 0x42, 0x98, 0x2c},
      { 0x4b, 0x17, 0xcf, 0x24, 0x42, 0xac, 0x4a, 0xf4, 0x94, 0xe2, 0xf7, 0x27, 0x38, 0x8d, 0x8e, 0xd8},
      { 0x4c, 0x6d, 0xa4, 0x04, 0xf6, 0xf1, 0xe1, 0xe0, 0x2e, 0xd9, 0xa1, 0xbf, 0xa1, 0xbe, 0xf4, 0x36},
      { 0x4c, 0xbb, 0x47, 0x39, 0xc0, 0xab, 0xef, 0xde, 0xe7, 0x94, 0x45, 0x29, 0xc1, 0xe3, 0xba, 0xd1},
      { 0x4c, 0xe9, 0xe2, 0x32, 0xb0, 0xad, 0x1d, 0xc1, 0x9b, 0xd9, 0x8d, 0x76, 0x65, 0xbf, 0x93, 0x53},
      { 0x50, 0x4d, 0x49, 0x0d, 0x70, 0x4a, 0xc2, 0xbe, 0xf2, 0xaf, 0x10, 0x88, 0x7b, 0x9b, 0x1a, 0xd3},
      { 0x51, 0x44, 0x50, 0xe5, 0x58, 0x54, 0xee, 0xd2, 0xa1, 0x56, 0x51, 0x06, 0x7d, 0x6a, 0x3e, 0x55},
      { 0x51, 0x94, 0x87, 0x45, 0x95, 0x24, 0x5e, 0x95, 0x85, 0x23, 0xa1, 0x71, 0xea, 0x2f, 0x6b, 0xad},
      { 0x51, 0xa1, 0xe8, 0x69, 0xc9, 0x13, 0xcc, 0xa4, 0xeb, 0xfa, 0x24, 0x57, 0x6e, 0x96, 0x77, 0x86},
      { 0x52, 0x3a, 0x9f, 0x7b, 0x74, 0x3e, 0xa2, 0x9e, 0xa2, 0x3a, 0x18, 0xc0, 0x87, 0x9b, 0x0d, 0xcc},
      { 0x53, 0x8e, 0x9a, 0xc8, 0x80, 0x22, 0xdc, 0x3b, 0xce, 0xc3, 0x11, 0xed, 0xa8, 0xb8, 0x78, 0x0f},
      { 0x56, 0xf7, 0xe6, 0x6f, 0xe4, 0xbf, 0xf9, 0x84, 0x2c, 0xa5, 0xfc, 0x4c, 0x2c, 0x57, 0x18, 0xa7},
      { 0x57, 0x1c, 0xba, 0xeb, 0xd0, 0x82, 0xec, 0x6d, 0x9b, 0x50, 0x9c, 0x68, 0xbe, 0x16, 0xdf, 0xea},
      { 0x57, 0xc6, 0x7d, 0xee, 0xa6, 0xd1, 0x11, 0xd6, 0x07, 0xd6, 0x91, 0x4e, 0x29, 0xc7, 0xa3, 0x2c},
      { 0x59, 0xbd, 0x69, 0xe4, 0xf8, 0xda, 0x57, 0xee, 0x84, 0x40, 0x43, 0xc4, 0x26, 0x23, 0x9b, 0xa0},
      { 0x59, 0xf2, 0x2b, 0x5d, 0x76, 0xf7, 0x07, 0x4c, 0xc5, 0x98, 0x42, 0x55, 0x70, 0x04, 0xbb, 0x5a},
      { 0x5b, 0xe7, 0xb9, 0x9d, 0x97, 0xf4, 0xbf, 0x06, 0xaf, 0x23, 0x1b, 0xe0, 0x4a, 0xb7, 0x83, 0xab},
      { 0x5c, 0x42, 0xe0, 0x72, 0x5b, 0x9b, 0x1b, 0xbd, 0x68, 0x79, 0xfc, 0xb2, 0xd6, 0x69, 0x2c, 0x90},
      { 0x61, 0xc8, 0x4e, 0x3e, 0x09, 0x98, 0x3d, 0xe7, 0xc5, 0x18, 0x4f, 0x81, 0x29, 0x8c, 0x20, 0x24},
      { 0x63, 0xd3, 0x3a, 0xa8, 0x67, 0x7b, 0xa0, 0x43, 0xb7, 0x6f, 0xc5, 0xe2, 0x87, 0x3b, 0x76, 0x95},
      { 0x64, 0xe9, 0x2f, 0x18, 0x21, 0x8e, 0x84, 0x36, 0x9c, 0xbc, 0xd8, 0x90, 0x59, 0xeb, 0xdd, 0x37},
      { 0x67, 0x22, 0x6e, 0x15, 0xae, 0xf1, 0x1c, 0x25, 0x55, 0x7c, 0xa1, 0x13, 0x02, 0x34, 0xa7, 0x56},
      { 0x67, 0xb5, 0xba, 0x40, 0x6a, 0x71, 0x0f, 0x65, 0xfe, 0x63, 0xa9, 0xd1, 0x66, 0x94, 0x8f, 0x54},
      { 0x68, 0xcb, 0x4b, 0x75, 0x29, 0xbe, 0x7d, 0xe1, 0x60, 0xdd, 0xa9, 0x16, 0x50, 0x2b, 0xdd, 0x6f},
      { 0x6a, 0x06, 0xc2, 0xc1, 0x68, 0xc0, 0x75, 0x00, 0x17, 0xbb, 0x5a, 0x0d, 0xe4, 0xda, 0x44, 0x45},
      { 0x6a, 0x5b, 0x79, 0x98, 0xd8, 0x85, 0xb2, 0xf3, 0x34, 0x09, 0x41, 0x3a, 0xa9, 0xbd, 0xf3, 0x9c},
      { 0x6a, 0xcc, 0xf8, 0xe1, 0x01, 0xdb, 0xb7, 0x43, 0x39, 0x80, 0x2e, 0x49, 0x3e, 0x1a, 0xfd, 0xb2},
      { 0x6b, 0xb6, 0x5a, 0xad, 0x89, 0xf5, 0x7f, 0x76, 0x29, 0x74, 0x88, 0x2f, 0x02, 0x32, 0x46, 0x2f},
      { 0x6c, 0x50, 0x48, 0xc1, 0x51, 0x35, 0xce, 0x52, 0x74, 0x4e, 0x1a, 0xf0, 0x37, 0xce, 0xf7, 0x0e},
      { 0x6c, 0xa3, 0x16, 0x0b, 0x1c, 0x5a, 0xd2, 0x7b, 0x01, 0xfa, 0x34, 0x39, 0x02, 0xfb, 0xea, 0x84},
      { 0x6c, 0xe1, 0x4e, 0x74, 0x47, 0x36, 0x5e, 0xe0, 0xce, 0x8b, 0xfb, 0x7c, 0xcc, 0xbb, 0x3c, 0x7a},
      { 0x6e, 0x88, 0x72, 0xb5, 0x78, 0x9b, 0x3c, 0x3c, 0x82, 0x39, 0x25, 0x04, 0xf3, 0xfe, 0xba, 0xda},
      { 0x6f, 0x0c, 0x39, 0x86, 0x16, 0xac, 0xa7, 0xcd, 0x4d, 0x45, 0x72, 0x79, 0x40, 0x8a, 0x7e, 0x19},
      { 0x6f, 0x21, 0x5c, 0x20, 0xb8, 0x13, 0x95, 0xc0, 0xe9, 0x48, 0x48, 0x1d, 0x89, 0x56, 0xd5, 0x68},
      { 0x6f, 0xb9, 0x1b, 0xb5, 0xc3, 0xca, 0xbc, 0xe4, 0x0d, 0xf8, 0xbe, 0x6c, 0xe1, 0x86, 0xbc, 0xaa},
      { 0x70, 0xad, 0x1f, 0x84, 0x1c, 0xe4, 0x64, 0x65, 0xe2, 0x38, 0x9e, 0x08, 0x93, 0x88, 0x35, 0xc9},
      { 0x71, 0x65, 0x64, 0x80, 0xfb, 0xa7, 0xc2, 0x51, 0x2e, 0xb2, 0xc8, 0x49, 0x3e, 0x71, 0xe7, 0xe6},
      { 0x71, 0x9d, 0xaf, 0x40, 0x4c, 0x68, 0x69, 0xc3, 0xe3, 0x84, 0x15, 0x3d, 0x48, 0x1d, 0x24, 0xa8},
      { 0x73, 0x3b, 0x57, 0xb1, 0xd8, 0xa9, 0x34, 0x25, 0x23, 0xa4, 0x9b, 0x8c, 0x37, 0xad, 0x2d, 0x0a},
      { 0x73, 0x3c, 0x6a, 0x37, 0xd1, 0x08, 0x41, 0xee, 0x07, 0x5f, 0x0a, 0x2a, 0x10, 0xa9, 0xdf, 0x86},
      { 0x73, 0xf0, 0x0d, 0x3c, 0x55, 0x59, 0x76, 0xa5, 0xee, 0x1c, 0x49, 0xde, 0x93, 0x44, 0xfb, 0x0f},
      { 0x74, 0x88, 0xed, 0xda, 0xbe, 0x06, 0x54, 0xe3, 0xf0, 0xac, 0x58, 0xcd, 0xa1, 0x7a, 0x15, 0x30},
      { 0x75, 0x0c, 0xa7, 0xb8, 0xed, 0x99, 0x7b, 0x3f, 0x74, 0x1c, 0x6f, 0x39, 0xd2, 0x15, 0xf3, 0x6d},
      { 0x75, 0x6e, 0xd8, 0x91, 0xfa, 0x5d, 0xf4, 0x82, 0x04, 0xdd, 0xef, 0x41, 0xbe, 0xd9, 0xe0, 0xd8},
      { 0x76, 0xf7, 0xa9, 0x2e, 0x72, 0x6a, 0xa3, 0xe9, 0x97, 0xc7, 0x4b, 0x39, 0x93, 0x81, 0xc0, 0x69},
      { 0x78, 0x30, 0xc5, 0x77, 0xed, 0x8e, 0x2b, 0x47, 0x41, 0x98, 0xd3, 0x65, 0x29, 0x41, 0x76, 0x49},
      { 0x79, 0x09, 0x97, 0xfc, 0xbc, 0x5b, 0x31, 0x21, 0x6a, 0x6e, 0xd4, 0xaa, 0xcd, 0xfe, 0xaa, 0xf0},
      { 0x79, 0xe7, 0xa3, 0x3c, 0x1d, 0xb0, 0xae, 0x28, 0xcd, 0x05, 0x59, 0x74, 0x44, 0x6e, 0x43, 0xec},
      { 0x7a, 0xbd, 0x92, 0x8d, 0x4b, 0x17, 0x90, 0x4f, 0x72, 0x67, 0xd3, 0xed, 0x77, 0xf6, 0x17, 0x4e},
      { 0x7b, 0x13, 0x94, 0x4b, 0xbc, 0xcd, 0x2f, 0x1d, 0x0a, 0x9f, 0xaf, 0x9d, 0xac, 0x48, 0x21, 0x63},
      { 0x7c, 0x24, 0x7f, 0xce, 0xf1, 0xcc, 0xb6, 0x64, 0x3e, 0x83, 0x72, 0x88, 0x5d, 0xbb, 0xf6, 0x29},
      { 0x7c, 0x3f, 0xb8, 0x3e, 0xf3, 0xe4, 0xcb, 0x86, 0x72, 0x13, 0xa8, 0xce, 0xcc, 0x55, 0x75, 0x9e},
      { 0x7c, 0x56, 0x16, 0x5b, 0xc5, 0x31, 0x02, 0xa4, 0x44, 0x28, 0x11, 0xf0, 0xef, 0x2b, 0x2b, 0x63},
      { 0x7d, 0xb5, 0x1b, 0xed, 0xa9, 0xec, 0x3f, 0x72, 0x04, 0x5b, 0xcf, 0x08, 0x8e, 0xff, 0x04, 0x58},
      { 0x7e, 0x64, 0x7c, 0x28, 0xe7, 0xf2, 0x3a, 0x14, 0x73, 0xfc, 0x92, 0x67, 0x82, 0x1f, 0x10, 0x51},
      { 0x7f, 0xde, 0xea, 0x6d, 0x60, 0x4f, 0xac, 0xd2, 0x5f, 0x1a, 0xeb, 0xb5, 0xdb, 0x6a, 0xb3, 0x1c},
      { 0x81, 0x5b, 0x96, 0x70, 0x6d, 0xe9, 0x11, 0xee, 0x94, 0x09, 0x61, 0x51, 0x09, 0x4d, 0xcd, 0x08},
      { 0x83, 0x53, 0x40, 0x7c, 0xaa, 0x47, 0x26, 0xc9, 0xe1, 0x3e, 0x00, 0x7a, 0x46, 0x93, 0xe8, 0xd6},
      { 0x85, 0x42, 0xed, 0xc9, 0x55, 0xdf, 0x6b, 0xd6, 0x49, 0xc5, 0xc1, 0x2c, 0x92, 0xa9, 0x21, 0x34},
      { 0x85, 0x57, 0x57, 0xd7, 0x97, 0x53, 0x30, 0x15, 0xc3, 0x2d, 0x35, 0x2f, 0x66, 0xe0, 0x46, 0x79},
      { 0x85, 0x8d, 0xde, 0x9a, 0xb4, 0xa9, 0x0a, 0x99, 0xfb, 0xb9, 0x8e, 0x0a, 0x99, 0x1a, 0xfa, 0x1f},
      { 0x88, 0xa3, 0x45, 0x93, 0x5c, 0xad, 0x7a, 0x95, 0xcb, 0x30, 0xce, 0xb0, 0x92, 0xd9, 0x48, 0xd3},
      { 0x89, 0xf5, 0x3f, 0x6d, 0x95, 0xf7, 0xa7, 0x8c, 0x3a, 0xfe, 0xbb, 0x67, 0x75, 0xc9, 0xbc, 0x27},
      { 0x8c, 0x6f, 0x6a, 0xb3, 0x9a, 0xed, 0x0b, 0x4f, 0xc8, 0x98, 0xf4, 0x2a, 0xef, 0x3d, 0x4b, 0xa4},
      { 0x8d, 0x0a, 0x76, 0xb0, 0x19, 0x7e, 0xbe, 0x63, 0x88, 0x03, 0xcc, 0x59, 0x74, 0xc4, 0x9e, 0xce},
      { 0x8d, 0x12, 0x14, 0x21, 0x54, 0x8f, 0x26, 0x5e, 0x4f, 0x29, 0x6a, 0xcb, 0xf3, 0x00, 0xfe, 0x33},
      { 0x8d, 0x14, 0xb4, 0x09, 0x7c, 0xff, 0xcc, 0xa6, 0x22, 0x7b, 0xbc, 0x58, 0x7f, 0x82, 0x79, 0xd8},
      { 0x8d, 0xb5, 0xcd, 0xb6, 0xc1, 0xeb, 0xae, 0x69, 0x52, 0xad, 0xb4, 0x52, 0x69, 0x3a, 0x9b, 0xca},
      { 0x8d, 0xc3, 0x75, 0x7c, 0xd2, 0xb1, 0x7c, 0x6e, 0xa5, 0x3f, 0x81, 0xa4, 0xdf, 0x1f, 0x25, 0x26},
      { 0x8d, 0xcc, 0x7c, 0x59, 0xa4, 0x56, 0x58, 0x05, 0x3c, 0xff, 0xde, 0xf0, 0xac, 0x6d, 0x07, 0x9e},
      { 0x8d, 0xeb, 0x05, 0x22, 0x45, 0x03, 0x7b, 0xdc, 0x89, 0x28, 0x86, 0xf5, 0x2f, 0x4a, 0x3f, 0xd1},
      { 0x8e, 0xf2, 0x04, 0xa3, 0xef, 0xe8, 0xef, 0xb0, 0xdd, 0xc5, 0x0b, 0xc4, 0x9b, 0xf1, 0xfe, 0x06},
      { 0x8f, 0x57, 0x2f, 0x56, 0x21, 0xed, 0x71, 0x74, 0x89, 0x92, 0x53, 0x1b, 0x40, 0xe4, 0x51, 0x48},
      { 0x91, 0xfa, 0x1f, 0xcf, 0x24, 0x02, 0xf2, 0xfd, 0x55, 0xf1, 0xfc, 0xa8, 0x1b, 0xdc, 0xfe, 0x32},
      { 0x92, 0x2f, 0x15, 0x25, 0xa4, 0x4e, 0xfd, 0xba, 0xb3, 0xed, 0xf4, 0x85, 0x86, 0xcf, 0x3a, 0xd5},
      { 0x92, 0x46, 0xd3, 0x83, 0x9c, 0x80, 0x88, 0x40, 0x87, 0x89, 0xa1, 0x5c, 0x48, 0x56, 0x29, 0x6b},
      { 0x92, 0x71, 0x26, 0xc1, 0xe5, 0xbd, 0xea, 0x5c, 0x6c, 0x56, 0x74, 0xd6, 0x85, 0x5d, 0x6e, 0x16},
      { 0x92, 0xb4, 0x1b, 0x1c, 0x66, 0x7d, 0x42, 0xb8, 0x27, 0x49, 0xd1, 0x6a, 0x76, 0x7f, 0xb3, 0x84},
      { 0x93, 0xfd, 0xd0, 0x79, 0x2f, 0x83, 0xc3, 0xf0, 0x88, 0x9f, 0xbd, 0x5a, 0x5b, 0x72, 0x5a, 0x7a},
      { 0x94, 0x2e, 0x86, 0x7e, 0xa3, 0xba, 0x1c, 0x43, 0x90, 0x83, 0xa6, 0x8b, 0xf4, 0xbf, 0x9f, 0x94},
      { 0x94, 0xb7, 0x27, 0x1e, 0xa1, 0x2a, 0x31, 0xa0, 0xe2, 0x40, 0x0e, 0x17, 0xe9, 0xbe, 0x03, 0x35},
      { 0x95, 0xbc, 0xfc, 0x52, 0xb2, 0x2b, 0x1c, 0x80, 0x69, 0xa6, 0x0c, 0xce, 0x0d, 0x79, 0xe4, 0x62},
      { 0x98, 0xad, 0x78, 0x41, 0xb3, 0x1f, 0xf2, 0x46, 0xe2, 0x12, 0xd6, 0x86, 0xa8, 0x76, 0x68, 0xb9},
      { 0x99, 0x24, 0xe5, 0xb1, 0x37, 0x14, 0x80, 0x46, 0x36, 0x53, 0x33, 0x6a, 0x2b, 0x91, 0x11, 0x75},
      { 0x9a, 0x12, 0x0e, 0x2a, 0x96, 0x94, 0x2e, 0xf1, 0x1b, 0x23, 0xf7, 0x75, 0x83, 0xa0, 0x32, 0x4c},
      { 0x9b, 0xde, 0xd6, 0x56, 0xcc, 0x61, 0x56, 0x14, 0xe7, 0x69, 0x11, 0x2b, 0xfc, 0x76, 0xc0, 0xf8},
      { 0x9c, 0x5b, 0xee, 0x45, 0x88, 0xff, 0xfe, 0x71, 0xe7, 0x80, 0x24, 0xb6, 0x00, 0x51, 0x02, 0xad},
      { 0x9d, 0x12, 0xf5, 0x3f, 0x49, 0x8b, 0x42, 0x79, 0x30, 0x25, 0x7a, 0x6d, 0x80, 0x10, 0x47, 0x8c},
      { 0x9d, 0x48, 0x59, 0x29, 0xdc, 0x61, 0xd3, 0xba, 0xbd, 0x81, 0xdd, 0xff, 0x05, 0xcf, 0x93, 0x92},
      { 0x9d, 0xb4, 0x7f, 0x9d, 0x9a, 0xa8, 0xb6, 0x75, 0x42, 0x38, 0x20, 0xef, 0x42, 0xf3, 0xc6, 0x56},
      { 0x9d, 0xf7, 0xcf, 0xb0, 0xc1, 0x17, 0x79, 0x42, 0x0f, 0x8e, 0x25, 0x16, 0x4c, 0x14, 0x36, 0x73},
      { 0x9f, 0xf1, 0xa9, 0x40, 0x4b, 0xee, 0x16, 0x00, 0xcf, 0xdb, 0x3e, 0x11, 0x79, 0x71, 0x43, 0x12},
      { 0xa0, 0x2a, 0xd5, 0x5b, 0xf6, 0x32, 0x8b, 0x3d, 0xe7, 0x30, 0xfb, 0x1e, 0x04, 0xee, 0x07, 0xe5},
      { 0xa2, 0x05, 0x71, 0x2d, 0xf6, 0xb7, 0xc4, 0x87, 0xc9, 0xc6, 0x2b, 0x48, 0x6d, 0xc1, 0xb0, 0x56},
      { 0xa2, 0x05, 0x84, 0xbf, 0x8e, 0xc7, 0x58, 0x26, 0x43, 0x8f, 0xad, 0x01, 0x75, 0xa9, 0x08, 0xf4},
      { 0xa2, 0x13, 0x27, 0x71, 0xc2, 0xf3, 0x2e, 0x73, 0x0d, 0xe3, 0xfd, 0x3b, 0xd7, 0xf7, 0x9d, 0xbe},
      { 0xa2, 0xd9, 0x83, 0x13, 0x7e, 0xe5, 0xc5, 0x04, 0x05, 0xf7, 0x19, 0xa3, 0x10, 0xc2, 0x09, 0x71},
      { 0xa2, 0xdc, 0xee, 0x61, 0xc1, 0x28, 0x3d, 0x5a, 0xff, 0x02, 0x1c, 0x0c, 0x5f, 0x80, 0x3d, 0xc0},
      { 0xa4, 0xb8, 0x2f, 0x60, 0xbc, 0xef, 0xb7, 0x99, 0xd1, 0x1a, 0x46, 0x34, 0x2c, 0x8f, 0xc4, 0x59},
      { 0xa4, 0xc0, 0x7b, 0x28, 0x7b, 0x2f, 0x1b, 0x34, 0xf9, 0xd8, 0xf5, 0x3b, 0x3d, 0x12, 0x9c, 0xc6},
      { 0xa5, 0x2b, 0xd3, 0x80, 0x54, 0xf3, 0xe3, 0xf9, 0x2e, 0xab, 0xb5, 0xc9, 0x4f, 0x5d, 0x65, 0xfe},
      { 0xa5, 0xfe, 0xc1, 0x49, 0x4a, 0x59, 0x3b, 0x4b, 0xc3, 0x13, 0xfd, 0x4f, 0xca, 0x06, 0x45, 0xdd},
      { 0xa5, 0xfe, 0xea, 0x3c, 0x46, 0x73, 0x50, 0xd9, 0xe9, 0xf9, 0x4d, 0x90, 0x0b, 0x60, 0xfb, 0xed},
      { 0xa7, 0x7e, 0xcb, 0x0d, 0xeb, 0x43, 0xd8, 0xb2, 0xcf, 0xf6, 0x97, 0xec, 0x83, 0xbd, 0x85, 0x71},
      { 0xa7, 0x7f, 0x8e, 0x45, 0xe2, 0xb6, 0xf9, 0x19, 0x0e, 0x18, 0xa5, 0xe9, 0x80, 0xe0, 0x1b, 0xdd},
      { 0xa8, 0x61, 0xc0, 0xef, 0x25, 0xf6, 0x2e, 0x08, 0xf6, 0xf2, 0xa6, 0xd6, 0xba, 0x9b, 0x7f, 0x3f},
      { 0xa9, 0x29, 0xdf, 0x5b, 0x5b, 0xdd, 0xfa, 0x49, 0xff, 0x1e, 0xa8, 0x31, 0xcf, 0xc4, 0xa7, 0x20},
      { 0xab, 0x98, 0xa9, 0x1e, 0xa2, 0x7d, 0x62, 0xbb, 0xc4, 0xa0, 0xbb, 0x77, 0xb0, 0x82, 0xa1, 0x39},
      { 0xad, 0x56, 0xad, 0xd5, 0xdc, 0x20, 0xf9, 0x9e, 0xea, 0x00, 0x4f, 0x40, 0xc2, 0x8e, 0xd0, 0xae},
      { 0xae, 0x85, 0x16, 0xb1, 0xe4, 0x23, 0x7d, 0x7e, 0x7a, 0xb6, 0x3c, 0x71, 0x93, 0xef, 0x60, 0xb7},
      { 0xaf, 0x13, 0x4d, 0x50, 0x5c, 0x05, 0x10, 0x1b, 0x19, 0x3c, 0xcb, 0x35, 0x44, 0xe0, 0x8d, 0xcf},
      { 0xaf, 0x47, 0x9d, 0x1f, 0xe9, 0x92, 0xdb, 0x23, 0x29, 0x03, 0xa4, 0x0f, 0x0e, 0x65, 0x9e, 0x1f},
      { 0xaf, 0xcb, 0x17, 0x4a, 0xfe, 0x4b, 0x86, 0x70, 0xd9, 0x75, 0x0e, 0x81, 0x2d, 0x1c, 0x7d, 0x8a},
      { 0xb0, 0x45, 0xa5, 0x1f, 0xf1, 0x56, 0xea, 0xce, 0x07, 0xa4, 0x0b, 0xe1, 0x7d, 0x62, 0xbd, 0x57},
      { 0xb2, 0x5b, 0xe6, 0xc0, 0x15, 0xfb, 0x19, 0xae, 0xf6, 0xb1, 0x5f, 0x76, 0xf3, 0xaf, 0xf3, 0x35},
      { 0xb3, 0x89, 0xfd, 0x2b, 0xc6, 0x32, 0xd4, 0x40, 0x70, 0xad, 0x4f, 0xde, 0xc0, 0x3f, 0x9c, 0x6b},
      { 0xb4, 0x72, 0x6c, 0x97, 0x13, 0xc1, 0xe7, 0x03, 0x0c, 0x55, 0x90, 0x0a, 0x46, 0x36, 0xf6, 0x72},
      { 0xb6, 0x53, 0x79, 0x26, 0xb5, 0xb2, 0xd3, 0x7c, 0x4c, 0x17, 0x4b, 0x18, 0x42, 0x7a, 0x21, 0xea},
      { 0xb6, 0x8a, 0xc1, 0x80, 0x04, 0x2a, 0x44, 0x2f, 0x6c, 0x50, 0x90, 0x69, 0xca, 0x07, 0x67, 0x84},
      { 0xb7, 0x12, 0xdc, 0x35, 0xa9, 0x5e, 0x56, 0x2d, 0xfc, 0x1f, 0x90, 0xe7, 0xdf, 0x03, 0xeb, 0x33},
      { 0xb7, 0x75, 0x9f, 0xa3, 0x24, 0x67, 0x8e, 0x6a, 0x7e, 0x7f, 0xbe, 0x1b, 0x24, 0xbe, 0x45, 0x0f},
      { 0xb7, 0x8b, 0x94, 0x61, 0x36, 0x5d, 0xe8, 0xf9, 0xc6, 0x76, 0x45, 0x10, 0x8e, 0x6f, 0x08, 0x73},
      { 0xb7, 0xab, 0x82, 0x24, 0x1e, 0xca, 0x69, 0x5a, 0x59, 0xc9, 0x33, 0x79, 0xd6, 0xef, 0x8f, 0xc4},
      { 0xb8, 0x14, 0x25, 0x05, 0xb0, 0x12, 0xcb, 0xe9, 0x47, 0x56, 0x72, 0x08, 0x63, 0x08, 0xf5, 0xfd},
      { 0xb8, 0xbd, 0x61, 0x3c, 0xc4, 0x6f, 0x44, 0xcd, 0x5d, 0xcc, 0xd4, 0x28, 0xa0, 0x43, 0x81, 0xb8},
      { 0xb9, 0xef, 0x3a, 0x7d, 0x4e, 0x42, 0x7a, 0x79, 0xcf, 0x72, 0x72, 0xa8, 0x7e, 0xa9, 0x6b, 0x4a},
      { 0xba, 0x2d, 0xa1, 0x9b, 0xc3, 0xbe, 0xa4, 0x67, 0x29, 0x0c, 0xcb, 0xf4, 0x3c, 0x7a, 0x7d, 0x15},
      { 0xbb, 0x17, 0x9f, 0xb7, 0xdc, 0x7a, 0xf7, 0x4f, 0x2e, 0xa9, 0x9c, 0x9d, 0xc8, 0x53, 0x29, 0x98},
      { 0xbc, 0xaa, 0xe0, 0x12, 0x22, 0x95, 0x13, 0xcb, 0x5c, 0x78, 0xaa, 0x60, 0x8d, 0x23, 0x66, 0xaf},
      { 0xbe, 0x67, 0xc0, 0x3d, 0x50, 0xfd, 0x91, 0x0d, 0xd9, 0xe8, 0xca, 0x66, 0x7e, 0xa7, 0xdf, 0x3e},
      { 0xbe, 0x7a, 0xad, 0x05, 0x5f, 0xbb, 0x54, 0x39, 0xce, 0xab, 0x4c, 0x6c, 0x59, 0xef, 0xb3, 0xb6},
      { 0xbe, 0xda, 0xaf, 0xf8, 0x90, 0xbd, 0xa7, 0xff, 0xd0, 0x77, 0x90, 0x2b, 0xf9, 0x13, 0xf4, 0xb9},
      { 0xc3, 0x88, 0x9a, 0x9d, 0xe9, 0xdc, 0x36, 0x04, 0x25, 0xcd, 0xe2, 0xb0, 0xaf, 0xdd, 0x2b, 0x2a},
      { 0xc4, 0xcf, 0x89, 0xe0, 0xbe, 0x39, 0xc5, 0x29, 0x70, 0xe3, 0xa5, 0x1f, 0xc7, 0xfd, 0xe8, 0xbf},
      { 0xc5, 0x7e, 0x48, 0x43, 0xd5, 0xa4, 0x25, 0xef, 0x3b, 0x34, 0x04, 0xa4, 0x78, 0x24, 0xab, 0x57},
      { 0xc6, 0x02, 0xdd, 0xac, 0x88, 0x42, 0x89, 0x52, 0xc9, 0xe8, 0xd4, 0x44, 0xe2, 0xa3, 0xa9, 0x27},
      { 0xc7, 0x1f, 0x9a, 0x14, 0x4f, 0xdc, 0xb8, 0x25, 0xb7, 0xf3, 0xd4, 0x1a, 0x8f, 0x75, 0x0a, 0x6e},
      { 0xc8, 0x4d, 0x22, 0x2d, 0xc0, 0xe7, 0xae, 0x06, 0xbe, 0x25, 0x35, 0xe4, 0x26, 0x91, 0x9b, 0x34},
      { 0xc8, 0x9c, 0xae, 0xbb, 0x6b, 0x70, 0x61, 0xd1, 0x23, 0x2b, 0x0d, 0xd4, 0x5f, 0xf3, 0xfe, 0x13},
      { 0xc8, 0xa1, 0x9d, 0x5b, 0x44, 0x7c, 0xe1, 0xfa, 0xe9, 0xa8, 0x66, 0x68, 0x83, 0xc7, 0x23, 0xd7},
      { 0xc8, 0xc2, 0xe6, 0xac, 0xd2, 0x0a, 0xfb, 0x5b, 0xd9, 0x5b, 0x02, 0xc3, 0x0a, 0xa2, 0xaa, 0xa0},
      { 0xcb, 0x3c, 0x1b, 0xfe, 0x9f, 0xe0, 0xd6, 0xbe, 0x59, 0x73, 0x09, 0xe5, 0x57, 0x93, 0x2c, 0x23},
      { 0xcb, 0xd7, 0xaf, 0x86, 0x66, 0xb9, 0x27, 0xf8, 0x2a, 0xed, 0xdc, 0xb8, 0x6f, 0xc5, 0xbd, 0xe5},
      { 0xcc, 0x49, 0x9d, 0xc1, 0x69, 0x2b, 0x5f, 0xe5, 0x5d, 0xf8, 0xfc, 0x02, 0xf9, 0x80, 0x9c, 0x7f},
      { 0xcd, 0xed, 0x22, 0xdf, 0xdd, 0x10, 0xab, 0x96, 0x6c, 0x5b, 0x6f, 0x4c, 0x0d, 0x15, 0xb4, 0x17},
      { 0xcd, 0xfe, 0x4c, 0x6b, 0x0c, 0xbb, 0xeb, 0xb5, 0x3c, 0xd4, 0xf1, 0xde, 0x4c, 0xf7, 0xd1, 0x0a},
      { 0xcf, 0x9a, 0xf4, 0x04, 0xb8, 0x23, 0x81, 0x48, 0x39, 0x0e, 0xb2, 0x50, 0xb5, 0x35, 0xc2, 0xa9},
      { 0xcf, 0xb3, 0xbd, 0x60, 0x83, 0xc7, 0x45, 0xbb, 0xb3, 0xdf, 0xfa, 0xa8, 0x5b, 0x91, 0x23, 0xa1},
      { 0xd1, 0x12, 0x1b, 0x14, 0xe6, 0x55, 0xdf, 0x65, 0x38, 0x5b, 0x0f, 0x47, 0x4f, 0xce, 0xfd, 0x7d},
      { 0xd1, 0x48, 0xbb, 0xdd, 0x17, 0x26, 0x7d, 0x54, 0xf6, 0x34, 0x1e, 0x9c, 0x43, 0x84, 0x8a, 0xad},
      { 0xd1, 0x8c, 0x44, 0x88, 0xe7, 0x16, 0x16, 0x2d, 0xfc, 0x77, 0x2e, 0x30, 0x37, 0x6f, 0x83, 0xac},
      { 0xd3, 0xb7, 0xcb, 0xec, 0xbc, 0x7f, 0x3c, 0x60, 0x7b, 0xf0, 0x90, 0x24, 0x5f, 0x69, 0x10, 0x02},
      { 0xd5, 0x7a, 0x0d, 0xdc, 0xef, 0x56, 0x0f, 0xee, 0xc8, 0xe6, 0x41, 0x3a, 0x7c, 0xf3, 0x3c, 0x87},
      { 0xd7, 0x63, 0xea, 0x0f, 0xf8, 0xf3, 0x38, 0x51, 0x85, 0xcc, 0xf4, 0xfa, 0x40, 0x53, 0x1e, 0x82},
      { 0xd7, 0x7d, 0xc2, 0xf6, 0x47, 0x6f, 0xec, 0x8e, 0xa6, 0xe8, 0xf0, 0x62, 0x12, 0x5e, 0xeb, 0x6e},
      { 0xd8, 0x01, 0x40, 0xc8, 0x21, 0xd4, 0x8f, 0x62, 0xbe, 0x47, 0xd8, 0x6e, 0x60, 0xa7, 0x43, 0x5d},
      { 0xd9, 0x70, 0x70, 0xf9, 0x80, 0x2e, 0xd4, 0xb3, 0x3d, 0x5f, 0x03, 0xc7, 0xa7, 0x96, 0xf5, 0x91},
      { 0xd9, 0xef, 0x98, 0xfe, 0x07, 0x0e, 0xf5, 0x38, 0xbe, 0xe6, 0x23, 0x64, 0x35, 0x37, 0xee, 0xed},
      { 0xda, 0x30, 0x3a, 0x56, 0x48, 0x1b, 0x51, 0x92, 0x39, 0x38, 0x42, 0xb4, 0x00, 0x25, 0x9d, 0x21},
      { 0xda, 0x9c, 0x0b, 0x00, 0x75, 0x6b, 0x06, 0x0b, 0xd1, 0xc4, 0xe0, 0xbb, 0x2d, 0x93, 0xd2, 0x9f},
      { 0xdb, 0xbf, 0x67, 0x76, 0x80, 0xa2, 0x71, 0xa4, 0x01, 0x93, 0xcc, 0xff, 0x83, 0x61, 0xbb, 0x3c},
      { 0xdb, 0xe0, 0x59, 0x75, 0xa0, 0x09, 0x06, 0x04, 0x72, 0x93, 0x11, 0xb2, 0x99, 0x3c, 0x13, 0xa0},
      { 0xde, 0x64, 0xe5, 0x6e, 0x6a, 0xba, 0x9e, 0xb0, 0x02, 0x12, 0x79, 0xdb, 0x42, 0xed, 0x6b, 0x46},
      { 0xe0, 0x27, 0x3d, 0x60, 0x1b, 0x08, 0x37, 0x47, 0x9d, 0x5e, 0xf2, 0x4b, 0xb7, 0x2a, 0x97, 0x19},
      { 0xe2, 0x73, 0xf9, 0x99, 0xda, 0x99, 0x45, 0x60, 0xb2, 0xa6, 0xf6, 0x93, 0x3b, 0xda, 0xff, 0x8a},
      { 0xe3, 0x23, 0x5d, 0xdc, 0xdf, 0x9e, 0xcf, 0x22, 0x9f, 0xd3, 0x18, 0xb7, 0xc4, 0x09, 0xb7, 0x6e},
      { 0xe3, 0x38, 0xef, 0xdf, 0xe6, 0x22, 0x2a, 0x0d, 0x2d, 0xd9, 0x51, 0x00, 0x23, 0x36, 0x54, 0xc1},
      { 0xe3, 0x88, 0x7d, 0xaa, 0x74, 0xa6, 0x6e, 0xcd, 0xfa, 0x8f, 0x12, 0x2a, 0xba, 0xd2, 0x27, 0xe1},
      { 0xe3, 0xbd, 0x9e, 0x12, 0xd2, 0x90, 0x27, 0xcc, 0xbf, 0x10, 0x53, 0x8e, 0x3f, 0x79, 0x06, 0x3b},
      { 0xe5, 0x18, 0xd0, 0x9c, 0xcf, 0x3b, 0x27, 0x68, 0x67, 0x6f, 0x64, 0xbd, 0x74, 0x4d, 0x03, 0xd6},
      { 0xe8, 0x5e, 0xbf, 0x92, 0xa2, 0x9e, 0x07, 0x4f, 0xe9, 0x69, 0xbe, 0x63, 0x14, 0x30, 0x38, 0x74},
      { 0xeb, 0x4c, 0xa3, 0xec, 0xc1, 0xe6, 0x1d, 0x8a, 0xbb, 0xdc, 0x79, 0x67, 0x1d, 0xc0, 0xed, 0xbb},
      { 0xed, 0x6f, 0xa3, 0x2e, 0xeb, 0xf2, 0x7a, 0xb2, 0xf9, 0xf8, 0x63, 0x03, 0xa7, 0x50, 0x78, 0x96},
      { 0xed, 0xd0, 0xa6, 0x6e, 0xe1, 0x07, 0xea, 0x64, 0xb8, 0xf6, 0xa0, 0xa3, 0x24, 0xa7, 0x85, 0x6b},
      { 0xee, 0x50, 0xe9, 0xbe, 0x27, 0xf5, 0x15, 0xf9, 0xf6, 0x66, 0xd1, 0xc6, 0x98, 0xa0, 0xd8, 0xdc},
      { 0xee, 0xca, 0x1a, 0x83, 0x93, 0xa2, 0xd6, 0xe8, 0xa9, 0x5e, 0xdd, 0x61, 0xcb, 0xfa, 0xe6, 0x41},
      { 0xef, 0x3f, 0xb8, 0x80, 0x05, 0xc8, 0x10, 0x22, 0xb3, 0x99, 0xc4, 0xc4, 0xd9, 0x32, 0x97, 0x3a},
      { 0xf0, 0x3d, 0x16, 0x09, 0x77, 0x10, 0xea, 0x3b, 0xee, 0x61, 0xe8, 0x47, 0xc9, 0x78, 0x70, 0x5e},
      { 0xf0, 0x59, 0x0c, 0x6b, 0xcc, 0x5b, 0x70, 0x2e, 0x28, 0x7f, 0xda, 0x52, 0x9d, 0xee, 0x80, 0xf0},
      { 0xf0, 0xb6, 0x4e, 0xd4, 0x02, 0x4e, 0x01, 0x98, 0x84, 0xbc, 0x79, 0x7a, 0x3a, 0x4f, 0x18, 0x3d},
      { 0xf0, 0xd0, 0xab, 0x26, 0xcd, 0x62, 0x0a, 0x32, 0xc7, 0xf2, 0x7f, 0x88, 0x62, 0x43, 0x4e, 0x7c},
      { 0xf2, 0x5d, 0xfd, 0xe2, 0xfb, 0x0b, 0xf9, 0x67, 0xc2, 0x67, 0xbe, 0x45, 0xc8, 0x23, 0x2b, 0xb6},
      { 0xf3, 0x2e, 0xd3, 0x8b, 0x05, 0x1c, 0xaa, 0x08, 0x36, 0xf4, 0x80, 0xa6, 0xfb, 0x1d, 0x23, 0x66},
      { 0xf3, 0x66, 0x28, 0x25, 0xcd, 0x66, 0xdd, 0x6f, 0xf3, 0x64, 0x25, 0xec, 0xcf, 0x6c, 0xe2, 0x3b},
      { 0xf5, 0x49, 0x60, 0x54, 0x47, 0x2a, 0x5b, 0xe7, 0x03, 0xa3, 0x2e, 0x46, 0x20, 0x6c, 0x74, 0xab},
      { 0xf5, 0xe3, 0xd3, 0xb2, 0x11, 0x78, 0x74, 0x4d, 0x12, 0x7e, 0xd7, 0x62, 0x1b, 0xe1, 0x37, 0xd4},
      { 0xf6, 0x84, 0x80, 0x0c, 0xbb, 0x15, 0x24, 0xee, 0x18, 0x14, 0xf7, 0x00, 0x99, 0x79, 0x9c, 0xbe},
      { 0xf6, 0xc4, 0x37, 0x8b, 0xb2, 0xc9, 0x4c, 0x02, 0x1f, 0x9d, 0x9f, 0x4b, 0x76, 0xc2, 0xac, 0x80},
      { 0xf7, 0x98, 0x2f, 0x7f, 0xf0, 0x4b, 0xe3, 0xca, 0xe5, 0x2a, 0xb7, 0xdb, 0x8f, 0x24, 0x64, 0x9d},
      { 0xf8, 0xea, 0x75, 0xdd, 0x36, 0x1f, 0xe5, 0x67, 0x36, 0x0a, 0xb3, 0x3e, 0xb1, 0xed, 0x59, 0x04},
      { 0xfa, 0x07, 0x36, 0xf4, 0x25, 0xf7, 0xee, 0x72, 0x9a, 0xb1, 0xed, 0x21, 0xbb, 0xe4, 0x0f, 0x0b},
      { 0xfc, 0x39, 0x9c, 0x55, 0x6f, 0xc6, 0x9f, 0x7c, 0x72, 0x1c, 0x38, 0xe2, 0xd5, 0x05, 0x26, 0x62},
      { 0xfc, 0x8e, 0xf6, 0x69, 0x0b, 0x11, 0x47, 0xb8, 0x87, 0xac, 0xdf, 0x44, 0xc0, 0xb7, 0x8a, 0xb7},
      { 0xfc, 0xe6, 0x5c, 0x0f, 0x10, 0xfb, 0x73, 0xec, 0xad, 0x03, 0x5e, 0x7d, 0x0a, 0xed, 0xba, 0x90},
      { 0xfc, 0xfc, 0xb4, 0x33, 0x2a, 0x3f, 0x13, 0xde, 0xec, 0xbc, 0x03, 0x20, 0xd2, 0x18, 0x21, 0x3c},
      { 0xfd, 0x41, 0x02, 0xfa, 0xa3, 0x14, 0x19, 0x22, 0x7e, 0xbb, 0x81, 0x34, 0x6f, 0x25, 0x0c, 0x33},
      { 0xfd, 0x9f, 0xdc, 0x99, 0xdb, 0x9a, 0x5e, 0x7f, 0x26, 0x7b, 0xc0, 0x2d, 0x9f, 0x9e, 0xe5, 0xdf},
      { 0xfd, 0xc8, 0xfc, 0xf5, 0x1d, 0xec, 0x42, 0x7d, 0x9f, 0x0e, 0xcb, 0xd2, 0x40, 0xd2, 0xce, 0xa5},
      { 0xfd, 0xc9, 0x9d, 0x0d, 0x19, 0xfd, 0xae, 0x73, 0xc0, 0xdd, 0x4f, 0x2a, 0x21, 0xc9, 0x4b, 0xe6},
      { 0xfd, 0xe7, 0x82, 0xe5, 0xf1, 0x43, 0x15, 0x73, 0xbd, 0x86, 0x7d, 0x16, 0x3f, 0xbf, 0x43, 0xa1},
      { 0xfe, 0x23, 0xe6, 0xae, 0xa7, 0xfe, 0x94, 0x1c, 0x7d, 0x37, 0x66, 0x55, 0x32, 0x88, 0xb3, 0x27},
      { 0xfe, 0x50, 0xb0, 0xe7, 0x73, 0xe5, 0x6f, 0xcc, 0x9f, 0xa7, 0xa8, 0xd1, 0xca, 0xa1, 0x1e, 0x82},
      { 0xff, 0xa1, 0x93, 0x53, 0x44, 0x54, 0x31, 0x28, 0x29, 0x8b, 0x05, 0xf3, 0x1c, 0x2d, 0xb4, 0xfa},
    };
  int start = 0;
  int last = size / AOC_UUID_SIZE;
  int entry;
  int rc = 0;

  /*
   * The UUIDs entries are sorted therefore moving the start of the
   * inner loop is enough to minimize the search checks
   */

  for (entry = 0; entry < AOC_UUID_ENTRIES; entry++) {
    const uint8_t * uuid = &(uuid_array[entry][0]);
    int index;

    rc = -1;

    for (index = start; index < last; index += 1) {
      const uint8_t * ptr;
      int j;

      ptr = &(((const uint8_t *)addr)[index * AOC_UUID_SIZE]);

      for (j = 0; j < AOC_UUID_SIZE; j++) {
        if (uuid[j] != ptr[j]) {
          break;
        }
      }
      if (j == AOC_UUID_SIZE) {
        if (index == start) {
          start += 1;
        }
        rc = 0;
        break;
      }
    }
    if (index == last) {
      rc = -1;
      break;
    }
  }
  return rc;
}


#endif /* AOC_INTERFACE_H_ */

