MFG 모드에서 WIFI 테스트 시, 읽어들여야 하는 WIFI Cal Data file 의 이름을 프로젝트 별로 분기하는 방법에 대해 설명한다.
문제 상황
삼성에서 각 프로젝트 별로 파일 이름을 다르게 사용하고 있으며, 기존에는 로드하는 파일이름(/lib/firmware/mrvl/WlanCalData_ext.conf)이 하나로 정해져 있다.
NX1 | /lib/firmware/mrvl/WlanCalData_ext.conf |
NX500 | /lib/firmware/mrvl/WlanCalData_ext_nx500.conf |
NX MINI2 | /lib/firmware/mrvl/WlanCalData_ext_mini2.conf |
해결 방법
이에 대한 해결책으로 MRVLDut/MRVL_RF_API.cpp 파일을 아래와 같이 수정하였다.
/* * function : MRVL_RFT_TxGain * description : set tx power gain. * 11b : 17 * 11g : 14 * 11n : 13 * ss at command : AT+WIFITEST=0,0,3,17 */ int MRVL_RFT_TxGain_set(int Pwr4Pa) { int status=0, PathId=0,chanOffset=0; int totalLen=0; FILE* hFile; BOOL rateG=1; // default set to 11G DWORD mChNumber= gChannelNumber; // default set to Ch.6 int ht40ChNumber= gChannelNumber; // default set to Ch.6 int ht80ChNumber= gChannelNumber; // default set to Ch.6 int mDataRate=TxDataRate_Tbl[mPcktPifsSettings.dataRateIndex]; char temp[MAX_LENGTH]="/lib/firmware/mrvl/WlanCalData_ext.conf"; // // 추가 시작 if (0 == access(temp, F_OK)) LOGE("Load %s for NX1\n", temp); else { sprintf(temp, "/lib/firmware/mrvl/WlanCalData_ext_nx500.conf"); if (0 == access(temp, F_OK)) LOGE("Load %s for NX500\n", temp); else { sprintf(temp, "/lib/firmware/mrvl/WlanCalData_ext_mini2.conf"); if (0 == access(temp, F_OK)) LOGE("Load %s for MINI2\n", temp); else LOGE("Fail load WlanCalData file\n"); } } // 추가 끝 LOGE("[%s] enter \n", __func__); gTxGain = Pwr4Pa; LOGE("MRVL_RFT_TxGain gBandWidth: 0x%X , Pwr4Pa=%d \n",gBandWidth, Pwr4Pa); //status = DutIf_SetRfChannel_new(parm1, chanOffset); //status = DutIf_SetRfChannel_new(Channel); ...
루틴 설명
해당 파일의 존재 유무에 따라 각각 프로젝트 별로 분기하여 파일을 읽어들이도록 하였다.