WIFI Cal Data 설정하기
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);
...
루틴 설명
해당 파일의 존재 유무에 따라 각각 프로젝트 별로 분기하여 파일을 읽어들이도록 하였다.