/*************************************************  
  File name     : hal_interface_ota.c
  Module        : hal ota library interface typedefs
  Author        : 
  Version       :
  Created on    : 2020-10-20
  Description   :
      Data structure and function definitions required by 
      the ota interface
    
  Modify History:   
  1. Date:        Author:         Modification:
  2020-10-20    amir.liang         create
*************************************************/
#include "pal.h"
#include "hal_interface.h"
#include "hal_interface_ota.h"
#include "hal_product_config.h"


#ifndef HAL_CFG_OTA_TYPE
#error HAL_CFG_OTA_TYPE undefined !!! Go to "hal_gernerate_product_config_h.sh" settings
#endif

#if (HAL_CFG_OTA_TYPE == HAL_CFG_OTA_TYPE_T31)
#include "t31_ota.h"
#elif (HAL_CFG_OTA_TYPE == HAL_CFG_OTA_TYPE_MCU)

#elif (HAL_CFG_OTA_TYPE == HAL_CFG_OTA_TYPE_BBM_T8350)
#include "rk3326_ota.h"
#elif (HAL_CFG_OTA_TYPE == HAL_CFG_OTA_TYPE_BATTERY_CAMERA)
#include "battery_cam_ota.h"
#endif

ST_HAL_OTA_INTERFACE otaInterface[] = 
{

    #if (HAL_CFG_OTA_TYPE == HAL_CFG_OTA_TYPE_BBM_T8350)
	{
		.pfnInit = bbm_t8350_ota_init,
		.pfnDeinit = bbm_t8350_ota_deinit,
		.pfnGetPackageTable = bbm_t8350_ota_get_package_table,
		.pfnOtaUpgrade = bbm_t8350_ota_upgrade,
		.pfnOtaOpenPartition = NULL;
	},
    #elif (HAL_CFG_OTA_TYPE == HAL_CFG_OTA_TYPE_T31)
    {
        .pfnInit = t31_ota_init,
        .pfnDeinit = t31_ota_deinit,
        .pfnGetPackageTable = t31_ota_get_package_table,
        .pfnOtaUpgrade = t31_ota_upgrade
        .pfnOtaOpenPartition = t31_ota_open_partition;
    },
    #elif (HAL_CFG_OTA_TYPE == HAL_CFG_OTA_TYPE_MCU)
    {
        .pfnInit = NULL,
        .pfnDeinit = NULL,
        .pfnGetPackageTable = NULL,
        .pfnOtaUpgrade = NULL,
        .pfnOtaOpenPartition = NULL
    },
    #elif (HAL_CFG_OTA_TYPE == HAL_CFG_OTA_TYPE_BATTERY_CAMERA)
    {
        .pfnInit = battery_cam_ota_init,
        .pfnDeinit = battery_cam_ota_deinit,
        .pfnGetPackageTable = battery_cam_ota_get_package_table,
        .pfnOtaUpgrade = battery_cam_ota_upgrade,
        .pfnOtaOpenPartition = battery_cam_ota_open_partition
    },
    #endif
};

ST_HAL_OTA_INTERFACE* HAL_OTA_GetInterface(int32_t channel)
{

#if (HAL_CFG_OTA_TYPE == HAL_TYPE_NONE)
    return NULL;
#else
    HAL_ITF_INDEX idx = HAL_SELF;
    if (channel == HAL_CHANNEL_SELF)
    {
        idx = HAL_SELF;
    }
    else
    {
        // 需要从NV获取通道号Channel对应的设备类型对应的hal
        //idx = HAL_REMOTE_SUB1G;
        return NULL;
    }
    return &otaInterface[0];
#endif

}
