cdl读配置文件

1、读配置文件

InitDllParam--

        return ReloadINIConfig(dutType, config)--

           return CDataSet::GetInstance()->ReloadALLConfig(dutType, config)--

              ReloadConfigUsingFileName(strConfig, dutType, bobRead)--

 

  if (-1 != strConfig.Find("SIM_GN25L95"))
    {
        CConfigInfo::GetInstance()->KeepInfo("CDutSIMGN25L95::ReloadConfig");
        bobType = DLL_BOB_SIM_GN25L95;
        bReturn = CDutSIMGN25L95::ReloadConfig(strConfig);
    }
BOOL CDutGN25L95::ReloadConfig(CString strConfig)
{
    g_ReadGN25L95Set = TRUE;
    CString fileName = g_GN25L95;
    CConfigInfo::DelInstance ();
    CConfigInfo::g_bobtype = DLL_BOB_GN25L95;
    if (FALSE == CConfigInfo::GetInstance()->GetAllConfig(strConfig, g_AllConfig))
    {
        MessageBox("配置文件加载失败");
        return FALSE;
    }
    return TRUE;
}

 

  GetAllConfig

typedef struct AllConfig//4/3
{
    vector <AllConfigItem>       AllConfigItem_by_BOSA;
    CString                      BOSA_type;
}AllConfig;

typedef struct AllConfigItem//4/3
{
    SetUpConfig       BoardInfo_APC_Config;
    MODLUT            MODLUT_Config;//279511用
    MODLUT            Modlut_Config;//Semtech芯片用
    vector<DDMIReport>DDMI_Config;
    CString           Json_Config;
    RXPowerSet        RxStandard_Config;
    SLosCfg           UX3360Los_Config;
    //vector<CString>   Save_Reg_Config;
    CRSSISet          APDLut_Config;
    CString           PonType;
    CString           ProductType;
    CString           ChipType;
    CString           BoardCode;
    CString           ChipType2;//20230504 @@@configXfile=传递的第二个驱动芯片型号,用于279511和25L95兼容产测
}AllConfigItem;

 

BOOL CConfigInfo::GetAllConfig(CString strConfig, vector<AllConfig>& vec)//4/3
{
    CString ExcelfileName = "";
    int pos = -1;
    vector<CString> AllBOSA_ConfigfileName_vec;//当前目录所有配置文件
    AllBOSA_ConfigfileName_vec.clear();
    AllConfig AllConfig_cell;
    vector<AllConfigItem> AllConfigItem_vec;//包含使用该BOSA(即该配置文件)的所有产品型号的配置信息,就是AllConfig_cell的一部分,临时变量
    AllConfigItem_vec.clear();
    vec.clear();
    if (FALSE == Get_AllBOSA_ConfigfileName(AllBOSA_ConfigfileName_vec))
    {
        WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig  查找配置文件失败");
        return FALSE;
    }
    for (size_t i = 0; i < AllBOSA_ConfigfileName_vec.size(); i++)//每个配置文件
    {
        ExcelfileName = AllBOSA_ConfigfileName_vec[i].Mid(AllBOSA_ConfigfileName_vec[i].Find(AllBOSA_ConfigfileName_vec[i]) + m_configPath.GetLength());
        pos = ExcelfileName.Find("_CONFIG");
        if (-1 == pos)
        {
            WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig  _CONFIG no found, Check ExcelfileName, error");
            return FALSE;
        }
        else if (3 == pos)
        {
            AllConfig_cell.BOSA_type = ExcelfileName.Left(3);
        }
        else
        {
            AllConfig_cell.BOSA_type = ExcelfileName.Left(4);
        }
        if (FALSE == GetAllConfig_BOSA(strConfig, AllBOSA_ConfigfileName_vec[i], AllConfigItem_vec))
        {
            WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig  获取%s的配置数据失败", AllBOSA_ConfigfileName_vec[i]);
            return FALSE;
        }
        else
        {
            WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig  获取%s的配置数据成功", AllBOSA_ConfigfileName_vec[i]);
            WriteLog(LOG_INFO, "\n\n\n\n\n");
        }
        AllConfig_cell.AllConfigItem_by_BOSA = AllConfigItem_vec;
        vec.push_back(AllConfig_cell);//将这个bosa的配置文件扫描的结果放进vec
        AllConfigItem_vec.clear();
    }
    WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig  succ");
    return TRUE;
}

 

BOOL CConfigInfo::GetAllConfig_BOSA(CString strConfig, CString Filename, vector<AllConfigItem>& AllConfigItem_vec)//4/3
{
    AllConfigItem_vec.clear();
    AllConfigItem AllConfigItem_by_Product;
    CString file = Filename;
    vector<CString> AllProductName_vector;
    AllProductName_vector.clear();
    vector<CString> AllConfigItem_vector;
    AllConfigItem_vector.clear();
    CString AllProductColumnName = "";
    CString AllConfigItemName = "";
    CString ColumnName = "";
    CString strTmp = "";
    CString Content = "";  
    CString DecodeValue = "";
    int Max_Row = 0;
    int Max_Column = 0;
    int configitem_column = 0;
    WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA  开始读取%s的所有配置信息", file);
    //if (-1 == ::GetFileAttributes(file))//获取Windows文件属性
    //{
    //    WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA file:%s can't be read, error", file);
    //    return FALSE;
    //}
    if (FALSE == InitExcelApp())//zhin
    {
        WriteLog(LOG_ERROR, "Init excel app fail");
        return FALSE;
    }
    //file = "D:\\MAT\\MAT_Start\\28433\\DeskSoft\\Products\\MTE_FM_CPE\\MTE_FM_CPE\\CPE_DESK_SOFT\\HT-2in1V01.03.16B2\\ConfigBOB\\NKEY_CONFIG.xlsx";
    if (FALSE == ConfirmParaFile(file))
    {
        WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA ConfirmParaFile: %s , error", file);
        return FALSE;
    }


    SetUpConfig data_SetUpConfig;
    vector<DDMIReport> data_DDMIReport;
    CString           Data_JsonConfig;
    CRSSISet data_CRSSISet;
    RXPowerSet data_RXPowerSet;
    SLosCfg    data_ux3360Los;
    MODLUT data_MODLUT;//279511用
    MODLUT data_Modlut;//Semtech用
    vector<CString> data_SaveReg;

    if (0 == Max_Row)//找excel文件行数
    {
        Max_Row = GetTableLine();
        if (Max_Row <= 0)
        {
            WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA %s Max_Row <= 0", file);
            CloseParaFile();
            ExitExcelApp();
            return FALSE;
        }
        WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA  %s的最大行数:%d", file, Max_Row);
    }
    if (0 == Max_Column)//找excel文件列数
    {
        Max_Column = GetTableMaxColumn();
        if (Max_Column <= 0)
        {
            WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA %s Max_Column<=0", file);
            CloseParaFile();
            ExitExcelApp();
            return FALSE;
        }
        WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA  %s的最大列数:%d", file, Max_Column);
    }
    if (0 == configitem_column)//找到指标符号所在列
    {
        configitem_column = GetTableColumn_contain("指标符号");//Excel中列号从1开始
        if (-1 == configitem_column)
        {
            WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA %s未找到指标符号列", file);
            CloseParaFile();
            ExitExcelApp();
            return FALSE;
        }
        WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA  %s的指标符号所在列:%d", file, configitem_column);
    }
    if (0 == AllProductName_vector.size())//找到所有产品列名
    {     
        for (int j = 7; j <= Max_Column; j++)
        {
            if (FALSE == GetTableColumnName(j, ColumnName))
            {
                WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA  获取第%d列列名失败", j);
                CloseParaFile();
                ExitExcelApp();
                return FALSE;
            }
            AllProductName_vector.push_back(ColumnName);
            strTmp.Format("%s; ", ColumnName);
            AllProductColumnName += strTmp;
        }
        WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA  %s的所有产品型号为:%s", file, AllProductColumnName);
    }
    if (0 == AllConfigItem_vector.size())//配置文件所有指标符号的集合
    {
        for (int lineno = 2; lineno <= Max_Row; lineno++)
        {
            if (FALSE == ReadConfigNameFromExcel(lineno, configitem_column, Content))
            {
                CloseParaFile();
                ExitExcelApp();
                return FALSE;
            }
            if ("" != Content && TRUE == CDataSet::g_bTWaiXieCALL_FZteCALL)
            {
                if (FALSE == Decode(Content, DecodeValue))
                {
                    return FALSE;
                }
                Content = DecodeValue;
            }
            AllConfigItem_vector.push_back(Content);
            strTmp.Format("%s; ", Content);
            AllConfigItemName += strTmp;
        }
        WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA  %s的所有指标符号为:%s", file, AllConfigItemName);
    }
    for (size_t i = 0; i < AllProductName_vector.size(); i++)
    {
        WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA  开始读取%s中信息%s产品型号的配置信息", file, AllProductName_vector[i]);
        //获取三温程序或者产线传递的信息,根据三温程序或者产线传递的信息去每个bosa配置文件的所有列中匹配,以找到对应的产品型号
        if (-1 != strConfig.Find("PON"))//三温程序传递ex:XGPON_GN28L95,所内调试根据PonType和ChipType 来在每个bosa的数据中寻找
        {
            AllConfigItem_by_Product.PonType = strConfig.Left(strConfig.Find("_"));
            AllConfigItem_by_Product.ChipType = strConfig.Mid(strConfig.Find("_") + 1);
            WriteLog(LOG_INFO, "当前为所内调试,三温程序传递信息为:%s_%s", AllConfigItem_by_Product.PonType, AllConfigItem_by_Product.ChipType);
        }
        else//产线传递ex://strConfig = "F7610U_GN28L97_127307051002";,产线根据127307051002等关键词来在每个bosa的数据中寻找,并校验ChipType
        {     
            AllConfigItem_by_Product.ProductType = strConfig.Left(strConfig.Find("_"));
            strTmp = strConfig.Mid(strConfig.Find("_") + 1);
            AllConfigItem_by_Product.ChipType = strTmp.Left(strTmp.Find("_"));
            AllConfigItem_by_Product.BoardCode = strTmp.Mid(strTmp.Find("_") + 1);
            WriteLog(LOG_INFO, "当前为产线测试,产线程序传递信息为:%s_%s_%s", AllConfigItem_by_Product.ProductType, AllConfigItem_by_Product.ChipType, AllConfigItem_by_Product.BoardCode);
        }
        //读取该单板型号的单板信息与APC方案
        if (FALSE == ReadSetUpConfig(file, AllConfigItem_vector, i+7, data_SetUpConfig))
        {
            WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA  ReadSetUpConfig error");
            CloseParaFile();
            ExitExcelApp();
            return FALSE;
        }
        AllConfigItem_by_Product.BoardInfo_APC_Config = data_SetUpConfig;
        //读取该单板型号的APOLUT信息
        if (FALSE == ReadRSSIRangeVecotr(file, AllConfigItem_vector, i + 7, data_CRSSISet))
        {
            WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA  ReadRSSIRangeVecotr error");
            CloseParaFile();
            ExitExcelApp();
            return FALSE;
        }
        AllConfigItem_by_Product.APDLut_Config = data_CRSSISet;
        //读取该单板型号的电流功率等信息
        if (FALSE == ReadCPEConfig(file, AllConfigItem_vector, i + 7, data_DDMIReport, Data_JsonConfig))
        {
            WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA  ReadCPEConfig error");
            CloseParaFile();
            ExitExcelApp();
            return FALSE;
        }
        AllConfigItem_by_Product.DDMI_Config = data_DDMIReport;
        AllConfigItem_by_Product.Json_Config = Data_JsonConfig;

      
        int col = i + 7;
        CString strDrive_Type = GetExcelInfoStr(file, AllConfigItem_vector, col, "DRIVER类型", "");//3/7
        DLL_BOB_TYPE eModlutbobtype = getBobType(strDrive_Type);


        if (/*DLL_BOB_ZX279511 == g_bobtype || */DLL_BOB_UX3360 == eModlutbobtype || DLL_BOB_UX3326 == eModlutbobtype 
            || DLL_BOB_UX3361 == eModlutbobtype|| DLL_BOB_UX3322 == eModlutbobtype || DLL_BOB_UX3326S == eModlutbobtype
            || DLL_BOB_UX3368 == eModlutbobtype || DLL_BOB_TSO40201 == eModlutbobtype || DLL_BOB_TSO40402 == eModlutbobtype)//先这样处理吧 DLL_BOB_TSO40201没有modlut
        {
            //读取279511单板型号的MODLUT信息
            if (FALSE == ReadMODLUTConfig(file, AllConfigItem_vector, i + 7, data_MODLUT))
            {
                WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA  ReadMODLUTConfig error");
                CloseParaFile();
                ExitExcelApp();
                return FALSE;
            }
            AllConfigItem_by_Product.MODLUT_Config = data_MODLUT;
        }
        else
        {
            //读取Semtech单板型号的Modlut信息
            if (FALSE == ReadModLutConfig(file, AllConfigItem_vector, i + 7, data_Modlut))
            {
                WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA  ReadModLutConfig error");
                CloseParaFile();
                ExitExcelApp();
                return FALSE;
            }
            AllConfigItem_by_Product.Modlut_Config = data_Modlut;
        }
        //读取该单板型号的RX标定信息
        if (FALSE == ReadRxStandardConfig(file, AllConfigItem_vector, i + 7, data_RXPowerSet))
        {
            WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA  ReadRxStandardConfig error");
            CloseParaFile();
            ExitExcelApp();
            return FALSE;
        }
        AllConfigItem_by_Product.RxStandard_Config = data_RXPowerSet;
        //读取该单板型号的需要保存到LOS步进信息,当前只有3360芯片的单板有
        if (FALSE == ReadLosAdjustCfg(file, AllConfigItem_vector, i + 7, data_ux3360Los))
        {
            WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA  ReadLosAdjustCfg error");
            CloseParaFile();
            ExitExcelApp();
            return FALSE;
        }
        AllConfigItem_by_Product.UX3360Los_Config = data_ux3360Los;
        //读取该单板型号的需要保存到寄存器信息
        //if (FALSE == ReadRegBack(file, AllConfigItem_vector, i + 7, data_SaveReg))
        //{
        //    WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA  ReadRegBack error");
        //    return FALSE;
        //}
        //AllConfigItem_by_Product.Save_Reg_Config = data_SaveReg;
 
        //最后将该单板型号的所有配置数据压入vector向量
        AllConfigItem_vec.push_back(AllConfigItem_by_Product);
    }
    CloseParaFile();
    ExitExcelApp();
    return TRUE;
}

 

读取后的内存结构图:

 

g_AllConfig[m_Bosa_index].AllConfigItem_by_BOSA[m_Product_index].BoardInfo_APC_Config

                    配置文件位置                     

 

2、找配置时           

接下来再看   CDUTSocket::SearchConfig(   具体怎么找的

        for (Product_index = 0; Product_index < vec[Bosa_index].AllConfigItem_by_BOSA.size(); Product_index++)
        {
            //if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardCode == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BoardCode
            CString mBoardCode = vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardCode;
            WriteLog(LOG_INFO, "CDUTSocket::SearchConfig Bosa_index[%d]  [%s] [%s]", Product_index, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BoardCode, mBoardCode);
            WriteLog(LOG_INFO, "duttype [%d] [%d]", m_DutParaIn.m_dutType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon);
            WriteLog(LOG_INFO, "bobtype [%d] [%d]", m_DutParaIn.m_bobType,vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BobChip);

            if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BoardCode.Find(mBoardCode)>=0
                && m_DutParaIn.m_dutType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon
                && m_DutParaIn.m_bobType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BobChip)
            {
                m_Res.SetResultDesc("在%s的配置文件中找到当前单板部件编码:%s和PON类型:%d的配置信息, 索引成功", vec[Bosa_index].BOSA_type, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardCode, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon);
                SWProduct_index = Product_index;
                break;
            }
        }

GetCPEConfig --

          SearchConfigFromAllConfig(Bosa_index, Product_index)--

                    SearchConfig(g_AllConfig, Bosa_ind

 

 

ConfigDut接口时这两个参数

    InPara.m_bobType        = bobType;

    InPara.m_dutType        = dutType;


补充完整的查找

BOOL CDUTSocket::SearchConfig(vector<AllConfig>& vec, size_t& Bosa_index, size_t& Product_index, size_t& SWBosa_index, size_t& SWProduct_index)
{
    Bosa_index = vec.size();
    CString strTmpBosaSN = m_BOSASN_LEFT;
    if (WMC_SANWEN == m_DutParaIn.m_WorkMode)
    {
        vector<CString> vecBtn;
        CString strShowDesc = "";
        for (size_t i = 0; i < vec.size(); i++)
        {
            strShowDesc.Format("BOSA SN:%s ", vec[i].BOSA_type);
            vecBtn.push_back(strShowDesc);
        }
        if (vecBtn.size() <= 0)
        {
            m_Res.SetResultDesc(FALSE, "请检查配置文件,当前环境中不包含BOSA的配置文件");
            return FALSE;
        }
        vecBtn.push_back("不知道.建议联系PO进行确认");
        AFX_MANAGE_STATE(AfxGetStaticModuleState());
        CDialogAPD apcLut(vecBtn, "当前环境中包含以下BOSA的配置文件");
        if (apcLut.DoModal() == IDOK)
        {
            if (apcLut.Index + 1 == vecBtn.size())
            {
                m_Res.SetResultDesc("选择不确定,用户选择退出");
            }
            Bosa_index = apcLut.Index;
            SWBosa_index = Bosa_index;
            m_Res.SetResultDesc("用户选择[%s]", vecBtn[Bosa_index]);
        }
        else
        {
            m_Res.SetResultDesc(FALSE, "用户选择×掉窗口");
            return FALSE;
        }
        for (Product_index = 0; Product_index < vec[Bosa_index].AllConfigItem_by_BOSA.size(); Product_index++)
        {
            CString PonType = vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].PonType;
            CString m_Pon_Type = vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon_Type;
            CString ChipType = vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType;
            CString m_Drive_Type = vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type;

            WriteLog(LOG_INFO, "CDUTSocket::SearchConfig Bosa_index[%d]  ", Product_index);
            WriteLog(LOG_INFO, "PonType[%s]  m_Pon_Type[%s]  "    , PonType, m_Pon_Type);
            WriteLog(LOG_INFO, "ChipType[%s]  m_Drive_Type[%s]  ", ChipType, m_Drive_Type);

            if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].PonType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon_Type
                && vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type)
            {
                SWProduct_index = Product_index;
                m_Res.SetResultDesc("在%s的配置文件中找到单板型号:%s_%s的配置信息", vec[Bosa_index].BOSA_type, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].PonType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType);
                break;
            }
        }
        if (Product_index == vec[Bosa_index].AllConfigItem_by_BOSA.size())
        {
            m_Res.SetResultDesc(FALSE, "未在%s的配置文件中找到当前单板型号的配置信息", vec[Bosa_index].BOSA_type);
            return FALSE;
        }
    }
    else
    {
        for (size_t i = 0; i < vec.size(); i++)
        {
            if (strTmpBosaSN == vec[i].BOSA_type)
            {
                Bosa_index = i;
                SWBosa_index = Bosa_index;
                m_Res.SetResultDesc("找到%s的配置文件", strTmpBosaSN);
                break;
            }
        }
        if (Bosa_index == vec.size())
        {
            m_Res.SetResultDesc(FALSE, "未找到%s的配置文件", strTmpBosaSN);
            m_Res.SetItem("Search_Index_Failed", "索引指标时未找到当前BOSA的配置文件");
            return FALSE;
        }
        for (Product_index = 0; Product_index < vec[Bosa_index].AllConfigItem_by_BOSA.size(); Product_index++)
        {
            //if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardCode == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BoardCode
            CString mBoardCode = vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardCode;
            WriteLog(LOG_INFO, "CDUTSocket::SearchConfig Bosa_index[%d]  [%s] [%s]", Product_index, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BoardCode, mBoardCode);
            WriteLog(LOG_INFO, "duttype [%d] [%d]", m_DutParaIn.m_dutType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon);
            WriteLog(LOG_INFO, "bobtype [%d] [%d]", m_DutParaIn.m_bobType,vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BobChip);

            if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BoardCode.Find(mBoardCode)>=0
                && m_DutParaIn.m_dutType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon
                && m_DutParaIn.m_bobType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BobChip)
            {
                m_Res.SetResultDesc("在%s的配置文件中找到当前单板部件编码:%s和PON类型:%d的配置信息, 索引成功", vec[Bosa_index].BOSA_type, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardCode, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon);
                SWProduct_index = Product_index;
                break;
            }
        }
        if (Product_index == vec[Bosa_index].AllConfigItem_by_BOSA.size())
        {
            m_Res.SetResultDesc(FALSE, "未在%s的配置文件中找到当前单板部件编码:%s, 索引失败", vec[Bosa_index].BOSA_type, vec[Bosa_index].AllConfigItem_by_BOSA[0].BoardCode);
            m_Res.SetItem("Search_Index_Failed", "索引指标时未在当前BOSA的配置文件中找到目标指标列");
            m_Res.SetResultDesc(FALSE, "当前初始化dll PON类型为%d", m_DutParaIn.m_dutType);
            m_Res.SetResultDesc(FALSE, "当前初始化dll 驱动芯片类型为%d", m_DutParaIn.m_bobType);
            return FALSE;
        }


        if (m_DutParaIn.m_dutType != DLL_GEPON_OLTGPON && m_DutParaIn.m_dutType != DLL_GEPON_OLTXGSPON){
            //校验软件读取的CPUname与配置文件中对应产品所在列的CPUname是否相同
            if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_PonMac != m_cputype)
            {
                m_Res.SetResultDesc(FALSE, "软件读取的CPUname:%d与配置文件中对应产品所在列的CPUname:%d冲突", m_cputype, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_PonMac);
                m_Res.SetItem("Search_Index_Failed", "索引指标后校验PonMac冲突");
                return FALSE;
            }
        }
        //校核产线传递的驱动芯片型号和配置文件中对应产品所在列的驱动芯片型号是否相同
        if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type)
        {
            m_Res.SetResultDesc("%s中的驱动芯片:%s,与产线传递信息: %s相同,校验成功", vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ProductType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType);
        }
        else if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType2 == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type)
        {
            m_Res.SetResultDesc("%s中的驱动芯片:%s,与产线传递信息: %s相同,校验成功", vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ProductType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType2);
        }
        else
        {
            m_Res.SetResultDesc(FALSE, "%s中的驱动芯片:%s,与产线传递型号: %s冲突,校验失败", vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ProductType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType);
            m_Res.SetItem("Search_Index_Failed", "索引指标后校验驱动芯片型号冲突");
            return FALSE;
        }
        //校核配置文件名中的BOSA型号和配置文件中对应产品所在列的BOSA型号、软件读取型号是否相同
        if (vec[Bosa_index].BOSA_type == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BosaSn && vec[Bosa_index].BOSA_type == m_BOSASN_LEFT)
        {
            m_Res.SetResultDesc("%s中的BOSA型号:%s,与配置文件名中型号、软件读取型号相同,校验成功", vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ProductType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BosaSn);
        }
        else
        {
            m_Res.SetResultDesc(FALSE, "%s中的BOSA型号:%s,与配置文件名中型号、软件读取型号冲突,校验失败", vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ProductType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BosaSn);
            m_Res.SetItem("Search_Index_Failed", "索引指标后校验BOSA型号冲突");
            return FALSE;
        }
    }
    return TRUE;
}

 

posted @ 2025-06-16 11:30  cnchengv  阅读(20)  评论(0)    收藏  举报