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

#include "exo_hal_io_al_common.h"

//GEN2
ahw_io_map temp_sensor_mcp9843_obc;
ahw_io_map gpio_expander_mcp23008_edge_1_gen_2;
ahw_io_map temp_sensor_mcp9843_edge_1;
ahw_io_map gpio_expander_mcp23008_edge_2_gen_2;
ahw_io_map temp_sensor_mcp9843_edge_2;
ahw_io_map gpio_expander_mcp23008_edge_3_gen_2;
ahw_io_map gpio_expander_mcp23008_edge_4_gen_2;
ahw_io_map temp_sensor_mcp9843_ps_gen_2;
ahw_io_map hsc_adm1176_payload_brd_in_supply;
ahw_io_map psm_ina230_ps_gen_2;
ahw_io_map gpio_expander_pcal6408_ps;
ahw_io_map gpio_expander_mcp23008_nic_1;
ahw_io_map gpio_expander_mcp23008_nic_2;
ahw_io_map gpio_expander_mcp23008_nic_3;
ahw_io_map temp_sensor_mcp9843_nic_1;
ahw_io_map gpio_expander_mcp23008_ssd_1;
ahw_io_map gpio_expander_mcp23008_ssd_2;
ahw_io_map temp_sensor_mcp9843_ssd_1;
ahw_io_map temp_sensor_mcp9843_ssd_2;
ahw_io_map temp_sensor_mcp9843_ssd_3;
ahw_io_map temp_sensor_mcp9843_ssd_4;
ahw_io_map gpio_expander_mcp23008_back_plane;
ahw_io_map psm_ina230_core_brd_a;
ahw_io_map gpio_expander_mcp23008_power_board_1;
ahw_io_map psm_ina_230_core_brd_b;
ahw_io_map gpio_expander_mcp23008_power_board_2;
ahw_io_map hsc_adm1176_ps_1_in_supply;
ahw_io_map psm_ina230_ps_1;
ahw_io_map adc_ad7291_ps_1;
ahw_io_map hsc_adm1176_ps_2_in_supply;
ahw_io_map psm_ina230_ps_2;
ahw_io_map adc_ad7291_ps_2;
ahw_io_map hsc_adm1176_edge_1_in_supply;
ahw_io_map psm_ina230_edge_1;
ahw_io_map hsc_adm1176_edge_1_heat_coil;
ahw_io_map hsc_adm1176_edge_2_in_supply;
ahw_io_map psm_ina230_edge_2_in_supply;
ahw_io_map hsc_adm1176_edge_2_heat_coil;
ahw_io_map hsc_adm1176_io_brd_in_supply;
ahw_io_map psm_ina230_io_brd_in_suppy;
ahw_io_map hsc_adm1176_io_brd_heat_coil_top_1;
ahw_io_map hsc_adm1176_io_brd_heat_coil_top_2;
ahw_io_map adc_ad7291_oring_circuit;
ahw_io_map hsc_adm1176_io_brd_heat_coil_bottom_1;
ahw_io_map hsc_adm1176_io_brd_heat_coil_bottom_2;

ahw_io_map ext_mem_mt25ql512_qspi;
ahw_io_map uart_expander_max14830_obc;
ahw_io_map ext_mem_mt28ew128_fmc;
ahw_io_map ext_mem_m24_eeprom_1;
ahw_io_map ext_mem_m24_eeprom_2;

ahw_io_map *ahw_io_lookup_tble[MAX_AH_INST_ID];
void *intf_inst_hdle_ptr[MAX_IO_INST_ID];

/**
 * @brief This API is AHW IO lookup table
 */
void ahw_io_lookup_table_updt(void)
{


    //GEN2
    ahw_io_lookup_tble[TEMP_SENSOR_MCP9843_OBC] = &temp_sensor_mcp9843_obc;
    ahw_io_lookup_tble[GPIO_EXPANDER_MCP23008_EDGE_1_GEN_2] = &gpio_expander_mcp23008_edge_1_gen_2;
    ahw_io_lookup_tble[TEMP_SENSOR_MCP9843_EDGE_1] = &temp_sensor_mcp9843_edge_1;
    ahw_io_lookup_tble[GPIO_EXPANDER_MCP23008_EDGE_2_GEN_2] = &gpio_expander_mcp23008_edge_2_gen_2;
    ahw_io_lookup_tble[TEMP_SENSOR_MCP9843_EDGE_2] = &temp_sensor_mcp9843_edge_2;
    ahw_io_lookup_tble[GPIO_EXPANDER_MCP23008_EDGE_3_GEN_2] = &gpio_expander_mcp23008_edge_3_gen_2;
    ahw_io_lookup_tble[GPIO_EXPANDER_MCP23008_EDGE_4_GEN_2] = &gpio_expander_mcp23008_edge_4_gen_2;
    ahw_io_lookup_tble[TEMP_SENSOR_MCP9843_PS_GEN_2] = &temp_sensor_mcp9843_ps_gen_2;
    ahw_io_lookup_tble[HSC_ADM1176_PAYLOAD_BRD_IN_SUPPLY] = &hsc_adm1176_payload_brd_in_supply;
    ahw_io_lookup_tble[PSM_INA230_PS_GEN_2] = &psm_ina230_ps_gen_2;
    ahw_io_lookup_tble[GPIO_EXPANDER_PCAL6408A_PS_GEN2] = &gpio_expander_pcal6408_ps;
    ahw_io_lookup_tble[GPIO_EXPANDER_MCP23008_NIC_1] = &gpio_expander_mcp23008_nic_1;
    ahw_io_lookup_tble[GPIO_EXPANDER_MCP23008_NIC_2] = &gpio_expander_mcp23008_nic_2;
    ahw_io_lookup_tble[GPIO_EXPANDER_MCP23008_NIC_3] = &gpio_expander_mcp23008_nic_3;
    ahw_io_lookup_tble[TEMP_SENSOR_MCP9843_NIC_1] = &temp_sensor_mcp9843_nic_1;
    ahw_io_lookup_tble[GPIO_EXPANDER_MCP23008_SSD_1] = &gpio_expander_mcp23008_ssd_1;
    ahw_io_lookup_tble[GPIO_EXPANDER_MCP23008_SSD_2] = &gpio_expander_mcp23008_ssd_2;
    ahw_io_lookup_tble[TEMP_SENSOR_MCP9843_SSD_1] = &temp_sensor_mcp9843_ssd_1;
    ahw_io_lookup_tble[TEMP_SENSOR_MCP9843_SSD_2] = &temp_sensor_mcp9843_ssd_2;
    ahw_io_lookup_tble[TEMP_SENSOR_MCP9843_SSD_3] = &temp_sensor_mcp9843_ssd_3;
    ahw_io_lookup_tble[TEMP_SENSOR_MCP9843_SSD_4] = &temp_sensor_mcp9843_ssd_4;
    ahw_io_lookup_tble[GPIO_EXPANDER_MCP23008_BACK_PLANE] = &gpio_expander_mcp23008_back_plane;
    ahw_io_lookup_tble[PSM_INA230_CORE_BRD_A] = &psm_ina230_core_brd_a;
    ahw_io_lookup_tble[GPIO_EXPANDER_MCP23008_POWER_BOARD_1] = &gpio_expander_mcp23008_power_board_1;
    ahw_io_lookup_tble[PSM_INA230_CORE_BRD_B] = &psm_ina_230_core_brd_b;
    ahw_io_lookup_tble[GPIO_EXPANDER_MCP23008_POWER_BOARD_2] = &gpio_expander_mcp23008_power_board_2;
    ahw_io_lookup_tble[HSC_ADM1176_PS_1_IN_SUPPLY] = &hsc_adm1176_ps_1_in_supply;
    ahw_io_lookup_tble[PSM_INA230_PS_1] = &psm_ina230_ps_1;
    ahw_io_lookup_tble[ADC_AD7291_PS_1] = &adc_ad7291_ps_1;
    ahw_io_lookup_tble[HSC_ADM1176_PS_2_IN_SUPPLY] = &hsc_adm1176_ps_2_in_supply;
    ahw_io_lookup_tble[PSM_INA230_PS_2] = &psm_ina230_ps_2;
    ahw_io_lookup_tble[ADC_AD7291_PS_2] = &adc_ad7291_ps_2;
    ahw_io_lookup_tble[HSC_ADM1176_EDGE_1_IN_SUPPLY] = &hsc_adm1176_edge_1_in_supply;
    ahw_io_lookup_tble[PSM_INA230_EDGE_1] = &psm_ina230_edge_1;
    ahw_io_lookup_tble[HSC_ADM1176_EDGE_1_HEAT_COIL] = &hsc_adm1176_edge_1_heat_coil;
    ahw_io_lookup_tble[HSC_ADM1176_EDGE_2_IN_SUPPLY] = &hsc_adm1176_edge_2_in_supply;
    ahw_io_lookup_tble[PSM_INA230_EDGE_2_IN_SUPPLY] = &psm_ina230_edge_2_in_supply;
    ahw_io_lookup_tble[HSC_ADM1176_EDGE_2_HEAT_COIL] = &hsc_adm1176_edge_2_heat_coil;
    ahw_io_lookup_tble[HSC_ADM1176_IO_BRD_IN_SUPPLY] = &hsc_adm1176_io_brd_in_supply;
    ahw_io_lookup_tble[PSM_INA230_IO_BRD_IN_SUPPLY] = &psm_ina230_io_brd_in_suppy;
    ahw_io_lookup_tble[HSC_ADM1176_IO_BRD_HEAT_COIL_TOP_1] = &hsc_adm1176_io_brd_heat_coil_top_1;
    ahw_io_lookup_tble[HSC_ADM1176_IO_BRD_HEAT_COIL_TOP_2] = &hsc_adm1176_io_brd_heat_coil_top_2;
    ahw_io_lookup_tble[ADC_AD7291_ORING_CIRCUIT] = &adc_ad7291_oring_circuit;
    ahw_io_lookup_tble[HSC_ADM1176_IO_BRD_HEAT_COIL_BOTTOM_1] = &hsc_adm1176_io_brd_heat_coil_bottom_1;
    ahw_io_lookup_tble[HSC_ADM1176_IO_BRD_HEAT_COIL_BOTTOM_2] = &hsc_adm1176_io_brd_heat_coil_bottom_2;

    ahw_io_lookup_tble[EXT_MEM_MT25QL512_QSPI] = &ext_mem_mt25ql512_qspi;
    ahw_io_lookup_tble[UART_EXPANDER_MAX14830_OBC] = &uart_expander_max14830_obc;
    ahw_io_lookup_tble[EXT_MEM_MT28EW128_FMC] = &ext_mem_mt28ew128_fmc;
    ahw_io_lookup_tble[EXT_MEM_M24C16_EEPROM_1] = &ext_mem_m24_eeprom_1;
    ahw_io_lookup_tble[EXT_MEM_M24C16_EEPROM_2] = &ext_mem_m24_eeprom_2;

    /******************************  GEN2  **********************************/
    temp_sensor_mcp9843_obc.ahw_id = TEMP_SENSOR_MCP9843_OBC;
    temp_sensor_mcp9843_obc.ahw_type = TEMP_SENSOR;
    temp_sensor_mcp9843_obc.io_instance_id = IOAL_INST_I2C4;
    temp_sensor_mcp9843_obc.slv_addr = 0x36;

    gpio_expander_mcp23008_edge_1_gen_2.ahw_id = GPIO_EXPANDER_MCP23008_EDGE_1_GEN_2;
    gpio_expander_mcp23008_edge_1_gen_2.ahw_type = GPIO_EXPANDER;
    gpio_expander_mcp23008_edge_1_gen_2.io_instance_id = IOAL_INST_I2C4;
    gpio_expander_mcp23008_edge_1_gen_2.slv_addr = 0x48;

    temp_sensor_mcp9843_edge_1.ahw_id = TEMP_SENSOR_MCP9843_EDGE_1;
    temp_sensor_mcp9843_edge_1.ahw_type = TEMP_SENSOR;
    temp_sensor_mcp9843_edge_1.io_instance_id = IOAL_INST_I2C4;
    temp_sensor_mcp9843_edge_1.slv_addr = 0x3C;

    gpio_expander_mcp23008_edge_2_gen_2.ahw_id = GPIO_EXPANDER_MCP23008_EDGE_2_GEN_2;
    gpio_expander_mcp23008_edge_2_gen_2.ahw_type = GPIO_EXPANDER;
    gpio_expander_mcp23008_edge_2_gen_2.io_instance_id = IOAL_INST_I2C4;
    gpio_expander_mcp23008_edge_2_gen_2.slv_addr = 0x4E;

    temp_sensor_mcp9843_edge_2.ahw_id = TEMP_SENSOR_MCP9843_EDGE_2;
    temp_sensor_mcp9843_edge_2.ahw_type = TEMP_SENSOR;
    temp_sensor_mcp9843_edge_2.io_instance_id = IOAL_INST_I2C4;
    temp_sensor_mcp9843_edge_2.slv_addr = 0x3E;

    gpio_expander_mcp23008_edge_3_gen_2.ahw_id = GPIO_EXPANDER_MCP23008_EDGE_3_GEN_2;
    gpio_expander_mcp23008_edge_3_gen_2.ahw_type = GPIO_EXPANDER;
    gpio_expander_mcp23008_edge_3_gen_2.io_instance_id = IOAL_INST_I2C4;
    gpio_expander_mcp23008_edge_3_gen_2.slv_addr = 0x4A;

    gpio_expander_mcp23008_edge_4_gen_2.ahw_id = GPIO_EXPANDER_MCP23008_EDGE_4_GEN_2;
    gpio_expander_mcp23008_edge_4_gen_2.ahw_type = GPIO_EXPANDER;
    gpio_expander_mcp23008_edge_4_gen_2.io_instance_id = IOAL_INST_I2C4;
    gpio_expander_mcp23008_edge_4_gen_2.slv_addr = 0x4C;

    temp_sensor_mcp9843_ps_gen_2.ahw_id = TEMP_SENSOR_MCP9843_PS_GEN_2;
    temp_sensor_mcp9843_ps_gen_2.ahw_type = TEMP_SENSOR;
    temp_sensor_mcp9843_ps_gen_2.io_instance_id = IOAL_INST_I2C4;
    temp_sensor_mcp9843_ps_gen_2.slv_addr = 0x32;

    hsc_adm1176_payload_brd_in_supply.ahw_id = HSC_ADM1176_PAYLOAD_BRD_IN_SUPPLY;
    hsc_adm1176_payload_brd_in_supply.ahw_type = HOT_SWP_CNTLR;
    hsc_adm1176_payload_brd_in_supply.io_instance_id = IOAL_INST_I2C4;
    hsc_adm1176_payload_brd_in_supply.slv_addr = 0X80;

    psm_ina230_ps_gen_2.ahw_id = PSM_INA230_PS_GEN_2;
    psm_ina230_ps_gen_2.ahw_type = POWER_SENSOR;
    psm_ina230_ps_gen_2.io_instance_id = IOAL_INST_I2C4;
    psm_ina230_ps_gen_2.slv_addr = 0x82;

    gpio_expander_pcal6408_ps.ahw_id = GPIO_EXPANDER_PCAL6408A_PS_GEN2;
    gpio_expander_pcal6408_ps.ahw_type = GPIO_EXPANDER;
    gpio_expander_pcal6408_ps.io_instance_id = IOAL_INST_I2C4;
    gpio_expander_pcal6408_ps.slv_addr = 0x42;

    gpio_expander_mcp23008_nic_1.ahw_id = GPIO_EXPANDER_MCP23008_NIC_1;
    gpio_expander_mcp23008_nic_1.ahw_type = GPIO_EXPANDER;
    gpio_expander_mcp23008_nic_1.io_instance_id = IOAL_INST_I2C2;
    gpio_expander_mcp23008_nic_1.slv_addr = 0x4E;

    gpio_expander_mcp23008_nic_2.ahw_id = GPIO_EXPANDER_MCP23008_NIC_2;
    gpio_expander_mcp23008_nic_2.ahw_type = GPIO_EXPANDER;
    gpio_expander_mcp23008_nic_2.io_instance_id = IOAL_INST_I2C2;
    gpio_expander_mcp23008_nic_2.slv_addr = 0x46;

    gpio_expander_mcp23008_nic_3.ahw_id = GPIO_EXPANDER_MCP23008_NIC_3;
    gpio_expander_mcp23008_nic_3.ahw_type = GPIO_EXPANDER;
    gpio_expander_mcp23008_nic_3.io_instance_id = IOAL_INST_I2C2;
    gpio_expander_mcp23008_nic_3.slv_addr = 0x42;

    temp_sensor_mcp9843_nic_1.ahw_id = TEMP_SENSOR_MCP9843_NIC_1;
    temp_sensor_mcp9843_nic_1.ahw_type = TEMP_SENSOR;
    temp_sensor_mcp9843_nic_1.io_instance_id = IOAL_INST_I2C2; //
    temp_sensor_mcp9843_nic_1.slv_addr = 0x34;

    gpio_expander_mcp23008_ssd_1.ahw_id = GPIO_EXPANDER_MCP23008_SSD_1;
    gpio_expander_mcp23008_ssd_1.ahw_type = GPIO_EXPANDER;
    gpio_expander_mcp23008_ssd_1.io_instance_id = IOAL_INST_I2C1;
    gpio_expander_mcp23008_ssd_1.slv_addr = 0x4E;

    gpio_expander_mcp23008_ssd_2.ahw_id = GPIO_EXPANDER_MCP23008_SSD_2;
    gpio_expander_mcp23008_ssd_2.ahw_type = GPIO_EXPANDER;
    gpio_expander_mcp23008_ssd_2.io_instance_id = IOAL_INST_I2C1;
    gpio_expander_mcp23008_ssd_2.slv_addr = 0x40;

    temp_sensor_mcp9843_ssd_1.ahw_id = TEMP_SENSOR_MCP9843_SSD_1;
    temp_sensor_mcp9843_ssd_1.ahw_type = TEMP_SENSOR;
    temp_sensor_mcp9843_ssd_1.io_instance_id = IOAL_INST_I2C1;
    temp_sensor_mcp9843_ssd_1.slv_addr = 0x36;

    temp_sensor_mcp9843_ssd_2.ahw_id = TEMP_SENSOR_MCP9843_SSD_2;
    temp_sensor_mcp9843_ssd_2.ahw_type = TEMP_SENSOR;
    temp_sensor_mcp9843_ssd_2.io_instance_id = IOAL_INST_I2C1;
    temp_sensor_mcp9843_ssd_2.slv_addr = 0x32;

    temp_sensor_mcp9843_ssd_3.ahw_id = TEMP_SENSOR_MCP9843_SSD_3;
    temp_sensor_mcp9843_ssd_3.ahw_type = TEMP_SENSOR;
    temp_sensor_mcp9843_ssd_3.io_instance_id = IOAL_INST_I2C1;
    temp_sensor_mcp9843_ssd_3.slv_addr = 0x3E;

    temp_sensor_mcp9843_ssd_4.ahw_id = TEMP_SENSOR_MCP9843_SSD_4;
    temp_sensor_mcp9843_ssd_4.ahw_type = TEMP_SENSOR;
    temp_sensor_mcp9843_ssd_4.io_instance_id = IOAL_INST_I2C1;
    temp_sensor_mcp9843_ssd_4.slv_addr = 0x30;

    gpio_expander_mcp23008_back_plane.ahw_id = GPIO_EXPANDER_MCP23008_BACK_PLANE;
    gpio_expander_mcp23008_back_plane.ahw_type = GPIO_EXPANDER;
    gpio_expander_mcp23008_back_plane.io_instance_id = IOAL_INST_I2C2;
    gpio_expander_mcp23008_back_plane.slv_addr = 0x40;

    psm_ina230_core_brd_a.ahw_id = PSM_INA230_CORE_BRD_A;
    psm_ina230_core_brd_a.ahw_type = CURRENT_MONITER_SENSOR;
    psm_ina230_core_brd_a.io_instance_id = IOAL_INST_I2C3;
    psm_ina230_core_brd_a.slv_addr = 0x82;

    gpio_expander_mcp23008_power_board_1.ahw_id = GPIO_EXPANDER_MCP23008_POWER_BOARD_1;
    gpio_expander_mcp23008_power_board_1.ahw_type = GPIO_EXPANDER;
    gpio_expander_mcp23008_power_board_1.io_instance_id = IOAL_INST_I2C3;
    gpio_expander_mcp23008_power_board_1.slv_addr = 0x40;

    psm_ina_230_core_brd_b.ahw_id = PSM_INA230_CORE_BRD_B;
    psm_ina_230_core_brd_b.ahw_type = CURRENT_MONITER_SENSOR;
    psm_ina_230_core_brd_b.io_instance_id = IOAL_INST_I2C3;
    psm_ina_230_core_brd_b.slv_addr = 0x80;

    gpio_expander_mcp23008_power_board_2.ahw_id = GPIO_EXPANDER_MCP23008_POWER_BOARD_2;
    gpio_expander_mcp23008_power_board_2.ahw_type = GPIO_EXPANDER;
    gpio_expander_mcp23008_power_board_2.io_instance_id = IOAL_INST_I2C3;
    gpio_expander_mcp23008_power_board_2.slv_addr = 0x4E;

    hsc_adm1176_ps_1_in_supply.ahw_id = HSC_ADM1176_PS_1_IN_SUPPLY;
    hsc_adm1176_ps_1_in_supply.ahw_type = HOT_SWP_CNTLR;
    hsc_adm1176_ps_1_in_supply.io_instance_id = IOAL_INST_I2C3;
    hsc_adm1176_ps_1_in_supply.slv_addr = 0x94;

    psm_ina230_ps_1.ahw_id = PSM_INA230_PS_1;
    psm_ina230_ps_1.ahw_type = POWER_SENSOR;
    psm_ina230_ps_1.io_instance_id = IOAL_INST_I2C3;
    psm_ina230_ps_1.slv_addr = 0x84;

    adc_ad7291_ps_1.ahw_id = ADC_AD7291_PS_1;
    adc_ad7291_ps_1.ahw_type = DATA_ACQ_DVC;
    adc_ad7291_ps_1.io_instance_id = IOAL_INST_I2C3;
    adc_ad7291_ps_1.slv_addr = 0x56;

    hsc_adm1176_ps_2_in_supply.ahw_id = HSC_ADM1176_PS_2_IN_SUPPLY;
    hsc_adm1176_ps_2_in_supply.ahw_type = HOT_SWP_CNTLR;
    hsc_adm1176_ps_2_in_supply.io_instance_id = IOAL_INST_I2C3;
    hsc_adm1176_ps_2_in_supply.slv_addr = 0x9C;

    psm_ina230_ps_2.ahw_id = PSM_INA230_PS_2;
    psm_ina230_ps_2.ahw_type = POWER_SENSOR;
    psm_ina230_ps_2.io_instance_id = IOAL_INST_I2C3;
    psm_ina230_ps_2.slv_addr = 0x86;

    adc_ad7291_ps_2.ahw_id = ADC_AD7291_PS_2;
    adc_ad7291_ps_2.ahw_type = DATA_ACQ_DVC;
    adc_ad7291_ps_2.io_instance_id = IOAL_INST_I2C3;
    adc_ad7291_ps_2.slv_addr = 0x54;

    hsc_adm1176_edge_1_in_supply.ahw_id = HSC_ADM1176_EDGE_1_IN_SUPPLY;
    hsc_adm1176_edge_1_in_supply.ahw_type = HOT_SWP_CNTLR;
    hsc_adm1176_edge_1_in_supply.io_instance_id = IOAL_INST_I2C3;
    hsc_adm1176_edge_1_in_supply.slv_addr = 0x9E;

    psm_ina230_edge_1.ahw_id = PSM_INA230_EDGE_1;
    psm_ina230_edge_1.ahw_type = POWER_SENSOR;
    psm_ina230_edge_1.io_instance_id = IOAL_INST_I2C3;
    psm_ina230_edge_1.slv_addr = 0x92;

    hsc_adm1176_edge_1_heat_coil.ahw_id = HSC_ADM1176_EDGE_1_HEAT_COIL;
    hsc_adm1176_edge_1_heat_coil.ahw_type = HOT_SWP_CNTLR;
    hsc_adm1176_edge_1_heat_coil.io_instance_id = IOAL_INST_I2C3;
    hsc_adm1176_edge_1_heat_coil.slv_addr = 0x8A;

    hsc_adm1176_edge_2_in_supply.ahw_id = HSC_ADM1176_EDGE_2_IN_SUPPLY;
    hsc_adm1176_edge_2_in_supply.ahw_type = HOT_SWP_CNTLR;
    hsc_adm1176_edge_2_in_supply.io_instance_id = IOAL_INST_I2C3;
    hsc_adm1176_edge_2_in_supply.slv_addr = 0x8E;

    psm_ina230_edge_2_in_supply.ahw_id = PSM_INA230_EDGE_2_IN_SUPPLY;
    psm_ina230_edge_2_in_supply.ahw_type = POWER_SENSOR;
    psm_ina230_edge_2_in_supply.io_instance_id = IOAL_INST_I2C3;
    psm_ina230_edge_2_in_supply.slv_addr = 0x88;

    hsc_adm1176_edge_2_heat_coil.ahw_id = HSC_ADM1176_EDGE_2_HEAT_COIL;
    hsc_adm1176_edge_2_heat_coil.ahw_type = HOT_SWP_CNTLR;
    hsc_adm1176_edge_2_heat_coil.io_instance_id = IOAL_INST_I2C3;
    hsc_adm1176_edge_2_heat_coil.slv_addr = 0x8C;

    hsc_adm1176_io_brd_in_supply.ahw_id = HSC_ADM1176_IO_BRD_IN_SUPPLY;
    hsc_adm1176_io_brd_in_supply.ahw_type = HOT_SWP_CNTLR;
    hsc_adm1176_io_brd_in_supply.io_instance_id = IOAL_INST_I2C3;
    hsc_adm1176_io_brd_in_supply.slv_addr = 0x98;

    psm_ina230_io_brd_in_suppy.ahw_id = PSM_INA230_IO_BRD_IN_SUPPLY;
    psm_ina230_io_brd_in_suppy.ahw_type = POWER_SENSOR;
    psm_ina230_io_brd_in_suppy.io_instance_id = IOAL_INST_I2C3;
    psm_ina230_io_brd_in_suppy.slv_addr = 0x80;

    hsc_adm1176_io_brd_heat_coil_top_1.ahw_id = HSC_ADM1176_IO_BRD_HEAT_COIL_TOP_1;
    hsc_adm1176_io_brd_heat_coil_top_1.ahw_type = HOT_SWP_CNTLR;
    hsc_adm1176_io_brd_heat_coil_top_1.io_instance_id = IOAL_INST_I2C3;
    hsc_adm1176_io_brd_heat_coil_top_1.slv_addr = 0x9A;

    hsc_adm1176_io_brd_heat_coil_top_2.ahw_id = HSC_ADM1176_IO_BRD_HEAT_COIL_TOP_2;
    hsc_adm1176_io_brd_heat_coil_top_2.ahw_type = HOT_SWP_CNTLR;
    hsc_adm1176_io_brd_heat_coil_top_2.io_instance_id = IOAL_INST_I2C3;
    hsc_adm1176_io_brd_heat_coil_top_2.slv_addr = 0x96;

    adc_ad7291_oring_circuit.ahw_id = ADC_AD7291_ORING_CIRCUIT;
    adc_ad7291_oring_circuit.ahw_type = DATA_ACQ_DVC;
    adc_ad7291_oring_circuit.io_instance_id = IOAL_INST_I2C3;
    adc_ad7291_oring_circuit.slv_addr = 0x5E;

    hsc_adm1176_io_brd_heat_coil_bottom_1.ahw_id = HSC_ADM1176_IO_BRD_HEAT_COIL_BOTTOM_1;
    hsc_adm1176_io_brd_heat_coil_bottom_1.ahw_type = HOT_SWP_CNTLR;
    hsc_adm1176_io_brd_heat_coil_bottom_1.io_instance_id = IOAL_INST_I2C3;
    hsc_adm1176_io_brd_heat_coil_bottom_1.slv_addr = 0x80;

    hsc_adm1176_io_brd_heat_coil_bottom_2.ahw_id = HSC_ADM1176_IO_BRD_HEAT_COIL_BOTTOM_2;
    hsc_adm1176_io_brd_heat_coil_bottom_2.ahw_type = HOT_SWP_CNTLR;
    hsc_adm1176_io_brd_heat_coil_bottom_2.io_instance_id = IOAL_INST_I2C3;
    hsc_adm1176_io_brd_heat_coil_bottom_2.slv_addr = 0x9A;

    /** External Memory **/
    // NOR flash MX25l512 with qspi interface
    ext_mem_mt25ql512_qspi.ahw_id = EXT_MEM_MT25QL512_QSPI;
    ext_mem_mt25ql512_qspi.ahw_type = EXT_FLASH_MEMORY;
    ext_mem_mt25ql512_qspi.io_instance_id = IOAL_INST_QSPI1;

    ext_mem_mt28ew128_fmc.ahw_id = EXT_MEM_MT28EW128_FMC;
	ext_mem_mt28ew128_fmc.ahw_type = EXT_FLASH_MEMORY;
	ext_mem_mt28ew128_fmc.io_instance_id = IOAL_INST_FMC_NOR1;

    uart_expander_max14830_obc.ahw_id = UART_EXPANDER_MAX14830_OBC;
	uart_expander_max14830_obc.ahw_type = UART_EXPANDER;
	uart_expander_max14830_obc.io_instance_id = IOAL_INST_SPI1;

	ext_mem_m24_eeprom_1.ahw_id = EXT_MEM_M24C16_EEPROM_1;
	ext_mem_m24_eeprom_1.ahw_type = EXT_FLASH_MEMORY;
	ext_mem_m24_eeprom_1.io_instance_id = IOAL_INST_I2C1;
	ext_mem_m24_eeprom_1.slv_addr = 0xA0;

	ext_mem_m24_eeprom_2.ahw_id = EXT_MEM_M24C16_EEPROM_2;
	ext_mem_m24_eeprom_2.ahw_type = EXT_FLASH_MEMORY;
	ext_mem_m24_eeprom_2.io_instance_id = IOAL_INST_I2C2;
	ext_mem_m24_eeprom_2.slv_addr = 0xA0;

}
