int parse_ini_cfg_file(const char* filePath)
{
    const int MaxFileSz = OPTIMUS_DOWNLOAD_SLOT_SZ;
    char* CfgFileLoadAddr = (char*)OPTIMUS_DOWNLOAD_TRANSFER_BUF_ADDR;
    int rcode = 0;
    const int MaxLines = 1024;//
    char* lines[MaxLines];
    int   validLineNum = 0;
   
    init_config_para(&g_sdcBurnPara);

    validLineNum = parse_ini_file_2_valid_lines(filePath, CfgFileLoadAddr, MaxFileSz, lines);
    if(!validLineNum){
        err("error in parse ini file\n");
        return __LINE__;
    }

    rcode = optimus_ini_trans_lines_2_usr_params((const char* *)lines, validLineNum, 
                                                    optimus_aml_sdc_ini_check_set_valid, 
                                                    optimus_aml_sdc_burn_ini_parse_usr_cfg);
    if(rcode){
            err("Fail in get cfg from %s\n", filePath);
            return __LINE__;
    }

    rcode = check_cfg_burn_parts(&g_sdcBurnPara);
    if(rcode){
        err("Fail in check burn parts.\n");
        return __LINE__;
    }

    print_sdc_burn_para(&g_sdcBurnPara);

    return 0;
}
int parse_ini_cfg_file(const char* filePath)
{
    const int MaxFileSz = OPTIMUS_DOWNLOAD_SLOT_SZ;
    u8* CfgFileLoadAddr = (u8*)OPTIMUS_DOWNLOAD_TRANSFER_BUF_ADDR;
    int rcode = 0;
   
    init_config_para(&g_sdcBurnPara);

    rcode = parse_ini_file(filePath, CfgFileLoadAddr, MaxFileSz);
    if(rcode){
        err("error in parse ini file\n");
        return __LINE__;
    }

    rcode = check_cfg_burn_parts(&g_sdcBurnPara);
    if(rcode){
        err("Fail in check burn parts.\n");
        return __LINE__;
    }

    print_sdc_burn_para(&g_sdcBurnPara);

    return 0;
}