/**
 * Copyright 2019-2021 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: 481c597935dd92cb71e1685c24b6e3f09d2edafc
 *
 * DO NOT MODIFY THIS FILE
 *
 */

#ifndef AOC_INTERFACE_H_
#define AOC_INTERFACE_H_


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


/**
 * System timer tick [hz].  All time counts will be based on tick running at this frequency.
 *
 * UUID: 9f35293fa3c259327efc47cd2d68f7af
 */
#define AOC_TIMER_FREQUENCY 4096000.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_MEM_MAP_REGION_ID = 43, /* [0x002b] ->  struct CMD_MEM_MAP_REGION */
  CMD_DBG_MEM_INVAL_ACCESS_ID = 46, /* [0x002e] ->  struct CMD_CORE_GENERIC */
  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_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_AUDIO_OUTPUT_SET_GET_PARAM_BULK_ID = 213, /* [0x00d5] ->  struct CMD_AUDIO_OUTPUT_SET_GET_PARAM_BULK */
  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_AUDIO_INPUT_GET_INCALL_MUSIC_ID = 281, /* [0x0119] ->  struct CMD_AUDIO_INPUT_INCALL_MUSIC */
  CMD_AUDIO_INPUT_GET_DSP_IDENTIFIER_ID = 282, /* [0x011a] ->  struct CMD_AUDIO_INPUT_DSP_IDENTIFIER */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_START_ID = 283, /* [0x011b] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_STOP_ID = 284, /* [0x011c] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_TEST_TRIGGER_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_INPUT_AMBIENT_MUSIC_BREAK_WRITE_MODEL_ID = 287, /* [0x011f] ->  struct CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_WRITE_MODEL */
  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_INPUT_MIC_RECORD_AP_START_PREPARE_ID = 292, /* [0x0124] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MIC_RECORD_AP_START_DATA_ID = 293, /* [0x0125] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_MIC_MMAP_ENABLE_ID = 294, /* [0x0126] ->  struct CMD_AUDIO_INPUT_AP_INPUT_START */
  CMD_AUDIO_INPUT_MIC_MMAP_DISABLE_ID = 295, /* [0x0127] ->  struct CMD_HDR */
  CMD_AUDIO_INPUT_GET_CHRE_GAIN_ID = 296, /* [0x0128] ->  struct CMD_AUDIO_INPUT_GET_CHRE_GAIN */
  CMD_AUDIO_INPUT_SET_CHRE_GAIN_ID = 297, /* [0x0129] ->  struct CMD_AUDIO_INPUT_SET_CHRE_GAIN */
  CMD_AUDIO_INPUT_HOTWORD_GET_CLEANER_POST_GAIN_ID = 298, /* [0x012a] ->  struct CMD_AUDIO_INPUT_HOTWORD_GET_CLEANER_POST_GAIN */
  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 */
};

/**
 * 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,
};

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: 182253d37f2c1abf0b3d7e7d663b6a15
 *   CMD_AUDIO_INPUT_HOTWORD_DISABLE_AEC_ID, UUID: 60d38364d6e3a56db52b4ae6ef3330ee
 *   CMD_AUDIO_INPUT_AP_INPUT_STOP_ID, UUID: 0088d99e35729a48dd6c5aa2aaeddc9f
 *   CMD_AUDIO_INPUT_MODEM_INPUT_STOP_ID, UUID: a1ab309b642fe763e33e7277cac596a1
 *   CMD_AUDIO_INPUT_BT_CAPTURE_START_ID, UUID: 05d5076beb3f512e815d86d738a63a87
 *   CMD_AUDIO_INPUT_BT_CAPTURE_STOP_ID, UUID: 0ef0b4f3c977d0977c5fbc357f08f8ef
 *   CMD_AUDIO_INPUT_BT_DECODER_START_ID, UUID: a611b2c4ab2970528b30a3c0e70a33cb
 *   CMD_AUDIO_INPUT_BT_DECODER_STOP_ID, UUID: 04ac830ab65f08085b25e64d453ba9d0
 *   CMD_AUDIO_INPUT_IN_CALL_SELECT_START_ID, UUID: dbfe4fb7b69f6258d15ea3fae0275a8b
 *   CMD_AUDIO_INPUT_IN_CALL_SELECT_STOP_ID, UUID: 5380851321b19297144c6eaf7f6978dd
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_START_ID, UUID: 8628164eb555884b4359db0d11cd6873
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_STOP_ID, UUID: 87bfb8e1ee154e195f9c06054ab0ffbc
 *   CMD_AUDIO_INPUT_HOTWORD_START_ID, UUID: 872bab980499adfc8b6e89b8ce9f083d
 *   CMD_AUDIO_INPUT_HOTWORD_STOP_ID, UUID: 90d92460104e4bc6c2d9c9a0f635b5c9
 *   CMD_AUDIO_INPUT_MIC_LOOPBACK_STOP_ID, UUID: 956c8b0572bea5028c3d287470f19f78
 *   CMD_AUDIO_INPUT_SPATIAL_START_ID, UUID: c5ec7d4f20a9b728a462b9f75033248b
 *   CMD_AUDIO_OUTPUT_DECODE_FLUSH_RB_ID, UUID: d7a97be0acc6977054e71ae789399552
 *   CMD_AUDIO_INPUT_SPATIAL_STOP_ID, UUID: 24568000e9e7dd150ef3308355fea3f3
 *   CMD_AUDIO_INPUT_HOTWORD_TEST_TRIGGER_ID, UUID: 9746e5b68493fb62e5657dc95f02d8ef
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_START_ID, UUID: 4b4f36fc4e960129eafaee1229513ce7
 *   CMD_AUDIO_OUTPUT_TELEPHONY_MODEM_START_ID, UUID: a288d7ade0d6a83f4c1a3cdc089f0175
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_STOP_ID, UUID: eb63319b965fd0ef7cf92badac1f31fa
 *   CMD_AUDIO_OUTPUT_TELEPHONY_MODEM_STOP_ID, UUID: be6942f18e280b2d32df8d1cfdc4209e
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_TEST_TRIGGER_ID, UUID: 5ab2c20fadf665f9f7864f90ebc61d41
 *   CMD_AUDIO_OUTPUT_TELEPHONY_VOIP_START_ID, UUID: 5451db39e4d52034f9af6332c91e779e
 *   CMD_AUDIO_OUTPUT_TELEPHONY_VOIP_STOP_ID, UUID: d09698e3a18a70ee0898784ac83c9461
 *   CMD_AUDIO_OUTPUT_SPKR_ANDROID_AEC_START_ID, UUID: 8181842725eccdc35129617f1862a99b
 *   CMD_AUDIO_INPUT_HOTWORD_LOAD_MODEL_ID, UUID: 5174cbec9e355e784647a3ec659cdcb7
 *   CMD_AUDIO_OUTPUT_SPKR_ANDROID_AEC_STOP_ID, UUID: 55c019bebb2a49d2a2abb88027c22664
 *   CMD_AUDIO_INPUT_HOTWORD_UNLOAD_MODEL_ID, UUID: 4a9677a691b8a28f9dce2261162ad0d3
 *   CMD_AUDIO_OUTPUT_USB_HIFI_PLAYBACK_START_ID, UUID: bd2520f782b29ef241b74a181da5ee14
 *   CMD_AUDIO_OUTPUT_USB_HIFI_PLAYBACK_STOP_ID, UUID: e16e93926a5319c1cad648897d2df85c
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_LOAD_MODEL_ID, UUID: 6ced0beb0a24e72dea365f21c4f0496e
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_UNLOAD_MODEL_ID, UUID: 3c62ed13ccb63dbc3497979fe2675741
 *   CMD_AUDIO_INPUT_HOTWORD_FORCE_TRIGGER_ID, UUID: f9bcadaaf8598168c55971d4fc2617a7
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_FORCE_TRIGGER_ID, UUID: 614e114381773fb2a26e98288f3ed7f1
 *   CMD_AUDIO_OUTPUT_DEC_RESET_CURRENT_GAIN_ID, UUID: 5e8dcf3702acc87b417f3c121d571133
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_START_ID, UUID: 640f83411256c0f1f69e9c6cbc2fa07a
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_STOP_ID, UUID: 4c9d1207d95a977307d0c44ccee882d6
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_TEST_TRIGGER_ID, UUID: bfa2af7cf0a0c847f0411043cd7316e6
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_LOAD_MODEL_ID, UUID: 55044d8ad459b1ed1999544c12a57164
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_BREAK_UNLOAD_MODEL_ID, UUID: 7f65b22115be360389ad1b84cabb6ab2
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_START_PREPARE_ID, UUID: 757b4e18d672bf13ef099d8ccc5022d6
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_START_DATA_ID, UUID: 074314af03870944e35d50452be3a4c4
 *   CMD_AUDIO_INPUT_MIC_MMAP_DISABLE_ID, UUID: 98e9913a9dc69449f323f0404a5f7a6a
 *   CMD_AUDIO_INPUT_WNR_START_ID, UUID: aa3092e5cab3366e01cc4a148109312f
 *   CMD_AUDIO_INPUT_WNR_STOP_ID, UUID: 38ed6344985d21036dd376cddb5ac54c
 *   CMD_AUDIO_INPUT_SPATIAL_CAPTURE_START_ID, UUID: 19901e5eb6b5b5694eb3bc4e05bf3820
 *   CMD_AUDIO_INPUT_SPATIAL_CAPTURE_STOP_ID, UUID: 936b010cde4c786ca6e8d8acec5d87f8
 *   CMD_AUDIO_INPUT_MIC_RAW_DISABLE_ID, UUID: 8a69e9fc1f800c59dab90e17d5bff69d
 *   CMD_AUDIO_INPUT_USB_HIFI_CAPTURE_START_ID, UUID: a2a1d1f5e0b78f3a354702231cf3864c
 *   CMD_AUDIO_INPUT_USB_HIFI_CAPTURE_STOP_ID, UUID: eafda54e83fb87fb126f6f43f240603c
 *   CMD_AUDIO_INPUT_DIRECT_ULTRASONIC_CAPTURE_ENABLE_ID, UUID: 4b25eda20b296847ce7613aa74f9d608
 *   CMD_AUDIO_INPUT_DIRECT_ULTRASONIC_CAPTURE_DISABLE_ID, UUID: 8407ede115d8b317b38c2fe384c07f5b
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_ENABLE_AEC_ID, UUID: 68430d51ecedb2e353784ad560beda7b
 *   CMD_AUDIO_INPUT_MIC_RECORD_AP_DISABLE_AEC_ID, UUID: 786af50b0d48615eeb0c037a05462ac1
 */
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: 7f3783aedbae03854d3cb2851aa07b40
 *   CMD_SYS_STATS_ID, UUID: 6dafca1b50ff4f7aacc4006c0e104b7e
 *   CMD_DBG_WATCHDOG_TRIGGER_ID, UUID: 2fad4cb475c496c9f76c32dca4c0136a
 *   CMD_DBG_TREE_ID, UUID: da949c27a8bc2dc785655f91075aca1a
 *   CMD_DBG_CONTROLLERS_ID, UUID: 71bc548e4d11016c86ef267c16a161d9
 *   CMD_DBG_FILTERS_ID, UUID: 63cb8f092494b957fcd93039d904613f
 *   CMD_DBG_PIPES_ID, UUID: d3a52cad717826918f484ef64874d181
 *   CMD_DBG_POOLS_ID, UUID: d1c958027b2ed6f8a4bfab4e29deb01f
 *   CMD_DBG_RINGS_ID, UUID: 26ff9e044e65510775291abe87405fbc
 *   CMD_DBG_IPCS_ID, UUID: 7b9075e0318eba314f60f62fe53cda03
 *   CMD_DBG_FSM_ID, UUID: b082cbc3dd47affcbed81f2f6a8bdc26
 *   CMD_DBG_TASKS_ID, UUID: 821763f8cd27aa29b90a86ef77bb794c
 *   CMD_DBG_TIMER_ID, UUID: ac7f67e633131cfd09d18498faaa66d0
 *   CMD_DBG_INTCNTRL_ID, UUID: d35af9493e8b7346f322651855961d21
 *   CMD_DBG_IPC_SPACES_ID, UUID: f89239963c881425d919527452eedcc7
 *   CMD_DBG_IPC_CHANNELS_ID, UUID: 47239853e10637d6ff8121e84fd692fd
 *   CMD_DBG_MEM_INVAL_ACCESS_ID, UUID: fd9b475fbe112649efbffaad13bc91e2
 */
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: 85e7278dbc868c35ff2c8a3dcc0d8447
 */
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: 83c7fd9ba41a12ead4920ddbe02ce8fb
 */
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: 80822072da6458b080f488c1b16ab008
 */
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: a55b87f7dced9dc940f821514344afb0
 */
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: d3bacb0018cda42370e66d13020c60b8
 */
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: a64551efd22e0590c51862fbdae982d0
 */
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: d01577d896b1ce3c5406f93768bbccb4
 */
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: 2b508f8f52029e2f70505c9055ca50ce
 */
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: 432fd371a0d5419f2d4e3e66f1b3f296
 *   CMD_DBG_TIMESTAMP_ID, UUID: a3776fb0d645d229eb361f7667ad22b2
 */
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: 7188029a1fbb346bc53225b3afe5b030
 *   CMD_SYS_LOGIC_TRACE_SCHEME_GET_ID, UUID: fbb537085ace7493c9ee3208ceaf8bdb
 */
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: b68f8b693a8e2f56412d3c9fd0764f3f
 */
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: d9802e9e0e84b713e0efe86f3b2c7d29
 */
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: 6636d2dceee1973b26d4033d28e5ff1c
 */
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: 84ed33f0d9a49a2e41bfc9f716205c0e
 */
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: a0053bf6a498c6e83468ef77d59c669e
 */
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: 67540c4b228399c23f5f6b21a2e1a5aa
 */
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_MEM_MAP_REGION_ID, UUID: 6fb53cb69db0955c4eeebe869e588b0a
 */
struct CMD_MEM_MAP_REGION {
  struct CMD_CORE_GENERIC parent;
  uint32_t handle;
  uint32_t base;
  uint32_t size;
  uint8_t mapped;
} __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: 6bd35b8cffeec1206902c14eb5f9e401
 */
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: cec4f3b03bdd0a37f4c4353e26ba2502
 */
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: 5147459e76383f48f7e007fa6075e0da
 */
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: c77d1d596c29725d591d56cf8b0196af
 */
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,
};

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: 2262b7f54dbb7e9541bdfbd852d90601
 */
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 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: d800eb409b3d37ae286675ce5c7c073f
 */
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: 4030346301bb91faf04e5b0e76f68e34
 */
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: e91a955e15cde47288937c7a1df2b283
 */
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: b5959fe6522417f55ab8fe812a5cac17
 */
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: 5a1a3c4ea1d7585eaace3f747cdb3474
 */
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_HEADPHONE,
  ASNK_BT,
  ASNK_MODEM,
  ASNK_USB,
  AUDIO_OUTPUT_SINKS,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SINK_ID, UUID: 0f2debf12df3ba43f621846250335763
 */
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: eded0c8fc6d0419a50dd1239bea3e6c5
 */
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: 5c0ef76ebf767ff152a5cd6567525fab
 *   CMD_AUDIO_OUTPUT_BIND2_ID, UUID: 6f829e35d85a8080709ee7adf8d9c66c
 */
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: 053176d6d8c217a8876f8a2ed2c1705c
 */
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: 9aa958e99020e71530839a1ead12343b
 */
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: 12f4cb0122b8189edee6a849df5af66f
 */
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,
};

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: 16592ca6b3d36e2baac2b6bf8da12476
 */
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: 449f41b26885ab2522007fe7fa5aa926
 */
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: 5f0290d132825732db2a1557835f0599
 */
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: 39d7ce4e208ddc8e9421ed86e85debb9
 */
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: f5a3647963762119f5076649d7631251
 */
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: 16c6943a6b978a8b0879b998a31797c9
 */
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: 1a70d4d5d8a39b987f16e4a95fa37bd5
 */
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: 2b6ffada0fb04f029e778cc4d0e3579b
 */
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: 99319135e0aeb804e09a24230a80e4f9
 */
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: f7e34f17de0d45674818cf59e1ee45d1
 */
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_GAIN_DB,
  ASP_ID_VP_MCPS,
  ASP_NUM_MODULE,
};

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

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_GET_MODULES_ID, UUID: ec69f58a5bdcf60c017bbfc2f6522e5d
 */
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: 70b00e17b8bfcef76c266849ef34f5bc
 */
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: f5f12e29f6351f64261f249d7120bf06
 */
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: 0c04d4f9bb990e962496d353a23dfe78
 *   CMD_AUDIO_OUTPUT_GET_EP_TOT_SAMPLES_ID, UUID: a06aacfb2c7820db5fe6e8b64ba8d1e1
 */
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: 35bec2bcb579fc921a33c20cc89c1f1e
 */
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: 0e0b64422532950afff5c633b0a72934
 */
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: 50c75bfad866a2b59154985975c13224
 */
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: 5b4acee2025d0d177b203a976d8d64cc
 */
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: 6429894e56111611f097f000b67b955c
 */
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: fe1511140cf3c3bf121f1daf2cdc759b
 */
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: 863035538d10041c2fb643ecef15dde1
 */
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: 6c2a66b93bbedf1e25763f3132dc3649
 */
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: 0260f2f42a5dccfb501c2669034bbcdc
 */
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: fb50c4e28b0a4c9bf9afb1f4ab6489b8
 */
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: e5f60f3dc17265e1261a01f9b0c2413b
 */
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: 41dca108d52f1bf2b7676c2cc15a6787
 */
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: 2c349697419bc8cd01b2913b550de132
 */
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: e54ce57246b85c10640dd4716240633b
 */
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: b6be8f72fb37f16351cd293b12d642d4
 */
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: 1a20c5e03c9d371d74ecf6b5ea500c4d
 */
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: 1b85bceff8be2a9bae9fee20ad5d370e
 */
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: a39e5a5fe46f81f13bee42af6b09e2df
 */
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: 731bbf5eeaddd79be5d0afc154b4c610
 */
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: a7c11a3eeb18927e80f593421c1ef8d9
 *   CMD_AUDIO_INPUT_AMBIENT_MUSIC_DETECTED_ID, UUID: 129b8be8cf44f27c8dc7c9c08bca3455
 */
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: 2ce5bca29ee5de4adf6e55ba34b9e0b7
 */
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: 28c0b7335f0bfd1f67dbe011ca7a074e
 */
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: 1dcca12214ab40d63b0f31c59dfa9bbd
 */
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: 958a79e735297c53160984847d71c640
 */
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: d6471b8dfcf56e245e540d6b03a2de66
 */
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: 1fc9f60225c548a17d330db1bbe37633
 */
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: 347131f1b70abb073e7359214b30712a
 */
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: be5a9f893d41a0aaabcef151332fcc68
 */
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: c743a2d8608d2149ff07c5878e1929d8
 */
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: 191041a2fbf942888143f525ab00a3d4
 */
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,
  AUDIO_OUTPUT_BT_A2DP_ENC_CODEC_APTXHD,
  AUDIO_OUTPUT_BT_A2DP_ENC_CODEC_LDAC,
  AUDIO_OUTPUT_BT_A2DP_ENC_CODEC_LC3,
};

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: 5b91bbc1de58574678cb87d7ba322069
 */
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: dc4d4681a32160320c989fd3132050b1
 */
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: 04f947c5b7b2ea06f7d99a0203a1de91
 */
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: b708955666049ba0a3efaf0d173a8ece
 */
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: 64ddeb68762705ea7d6e8f3b730920af
 */
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: de7257628c22a1048be588bdcb0cebdb
 */
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: 99dc7c77ea6b82170111cc583df382bb
 */
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: a69f7ebaa159929ca7f89ba328ef1c2f
 */
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: c38e0ceb5d263db65008d8e6827d8344
 */
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: b09b9d8bc0b766e9e7c4135b05bbe3b9
 */
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: 5637c202f6d7740dc3133afb2e7fc966
 */
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: 61076d197aff2715508b276e92f0518a
 */
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: d5728c966cc9209dc2f026a842ff9083
 */
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: 78677de128573fbfb196c40dda4e0320
 */
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: 7f98e80d90d06391c85ad23634c19543
 */
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: 86bdc053fc5196cb0b71fa55627ddd01
 *   CMD_AUDIO_INPUT_SET_AP_MIC_INDEX_ID, UUID: 71a84667791cb11a998cba7f29d3f8b3
 */
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: 6c9a6d35edbe31ce65e6e391b85e6921
 *   CMD_AUDIO_INPUT_MIC_MMAP_ENABLE_ID, UUID: f8f6ec7705b2f28ea42c3e0a0b08d134
 *   CMD_AUDIO_INPUT_MIC_RAW_ENABLE_ID, UUID: a015e7f10a66fd567b22b0186cc223ac
 */
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: adfbbefedefbd5e62f3a99efcad7e355
 */
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: 6a8b9542abaa264e76ab8bde2af481de
 *   CMD_AUDIO_OUTPUT_GET_TELE_CAPTURE_ID, UUID: 8d92dbfb08a71f8b4476f314c852bdbe
 */
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,
};

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: 0871ab37ee3b57b41b87954b18392471
 */
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: 1301e8b47b5658afe0ac3967a834725c
 */
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: c4006b36d945df2f40a301866aec3d6b
 */
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: e5cd0414009648e0a1d233f81a27cb50
 */
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: 8180c621a68e9c87853af316994371c9
 */
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: 233f8bba63f6b63a767ccabc983c0939
 */
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: 84da65a45383f30bae0a23933ad971c5
 */
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: da2720525875c120187f8fc4db4aeaef
 */
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: 73e0beef4261e3223c2896ec0caec493
 */
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: 0c154febfc95c027beeafe05dfe25136
 */
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: aad03ef3b9a58abc130fef3e371b5bd9
 */
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_TOT,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SET_TELE_CAPT_ID, UUID: fab6a9b0c01a1b056e56d6e35411cacd
 *   CMD_AUDIO_OUTPUT_GET_TELE_CAPT_ID, UUID: f7a8eed68b93f43cdec0ab40f173c693
 */
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: e1975a3c8ead55cbf2bc09063f163049
 *   CMD_AUDIO_INPUT_GET_INCALL_MUSIC_ID, UUID: 7f57d7e121e0a72ef23d8b8790b90194
 */
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: 2a1e68a1c7a21fdc68043f7026a34e4a
 */
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: 2509ef218579e86f419390b701efa7a9
 */
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: dad0a767c6316a3816f8c5800b92fd84
 */
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: b8bcabe208ad85d4e883ac130f6633f2
 */
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: 20b12d638baeec9bbc67238e46914d24
 */
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: 876763e51cec34d72df0a2b9d7f01f8b
 *   CMD_AUDIO_INPUT_GET_INCALL_MUSIC_CHAN_ID, UUID: 46b25687591dd15187c12f72ee68d4a7
 */
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: 2a2b7438e16876658321cc7e8c4f2351
 *   CMD_AUDIO_OUTPUT_DEC_CH_GAIN_GET_ID, UUID: 10e507dc9a267119a9b6e412017de080
 */
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: 1fc00bf86111936348eb44a8a1bd21ab
 *   CMD_AUDIO_OUTPUT_GET_INCALL_MUSIC_ID, UUID: 34d249fdff0e5122c2ec9dd2b952c8a9
 */
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: 90690cdeeed110278c34ab2ce5b1e847
 *   CMD_AUDIO_OUTPUT_GET_INCALL_MUSIC_CHAN_ID, UUID: 626a829447c50a2a2d04c72e505c7332
 */
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_HEADPHONE,
  SINK_BT,
  SINK_USB,
  SINK_MODEM,
  SINK_TOT,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_SINK2_ID, UUID: 90b192119b471f4bf2353ac4f0ac8a86
 */
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: 4a7c58e61a4dcfeb287abad929846f3e
 */
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: fb16063fd13ec28c5a5647fbbfeade63
 */
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: 51d2a45c0146277706368cca97361c72
 */
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: 0832c388c866af5f8b91a962d99ff273
 */
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: 94cf5cad30280a4ec7853ea7e7a01ca2
 */
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: e274c1b9a40fda14faea5c182840f33d
 */
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,
};

/**
 * Structure associated with the following commands:
 *
 *   CMD_AUDIO_OUTPUT_DSP_MODE_SET_ID, UUID: 6475d43f33dbdd5e32d38d284bafa476
 *   CMD_AUDIO_OUTPUT_DSP_MODE_GET_ID, UUID: 045a7d63e23987268f2cf9e79896428c
 */
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: 28f0f531d9df8239a69ecc3144864106
 */
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: 9212b73d3346ace571f370610f20166a
 */
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: b3431de3ef89bdef6541ff11aaa38cfc
 */
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: 16449c7c7a5570c831d12156789b1f89
 */
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 app_id;
  uint8_t valid;
} __attribute__((packed));

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

/**
 * Structure associated with the following commands:
 *
 *   CMD_UDFPS_SET_CLOCK_SOURCE_ID, UUID: eebc5a468fbad45d18406f737c2830ee
 */
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: 318797ef187189b88b26a1e30d5a1984
 */
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));

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: 227a04e5c2af674048667cb5a57c4fc1
 */
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) {
  static uint8_t cmd_cntr_ = 0;

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


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

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

