예제 #1
0
int CitBinder::setCitAutoTestFlag(int data)
{
 int result = 0;
 F_ID sncit_nvram_fd;
   int file_lid = AP_CFG_REEB_PRODUCT_INFO_LID;
   int i = 0,rec_sizem,rec_size,rec_num,loacation;
   loacation = data;
   PRODUCT_INFO snCitParam;
 //LOGI("setCitAutoTestFlag  loacation = %d",loacation);
   
   memset(&snCitParam,0,sizeof(snCitParam));
   sncit_nvram_fd = NVM_GetFileDesc(file_lid, &rec_size, &rec_num, ISREAD);
   result = read(sncit_nvram_fd.iFileDesc, &snCitParam , rec_size*rec_num);
   if(result)
    {
   		snCitParam.barcode[loacation]=1;
        //LOGI("setCitAutoTestFlag  succeseed");
  	}
  	else
  	{
  		//LOGE("setCitAutoTestFlag fail");
    }
   //LOGI("SNcit.flag  snCitParam.barcode[]= %d",snCitParam.barcode[loacation]);
    NVM_CloseFileDesc(sncit_nvram_fd);
   sncit_nvram_fd = NVM_GetFileDesc(file_lid, &rec_size, &rec_num, ISWRITE);
   result = write(sncit_nvram_fd.iFileDesc, &snCitParam , rec_size*rec_num);
         NVM_CloseFileDesc(sncit_nvram_fd);
//   FileOp_BackupToBinRegion_All();
	//LOGI("setCitAutoTestFlag done %d\n",loacation);
   return result;
}
예제 #2
0
///////////////////////////////////////gs_cali add start//////////////////////////////
int gs_save_cali(int x, int y, int z)
{
	 //LOGI("gs_save_calix=%d,y=%d,z=%d",x,y,z);

	int file_lid = AP_CFG_RDCL_HWMON_ACC_LID;//iFileACCCaliID;
	F_ID nvram_fid;
	NVRAM_HWMON_ACC_STRUCT cali;
	int rec_size;
	int rec_num;
	int Ret = 0;
	/*
	cali.offset[0] = x;
	cali.offset[1] = y;
	cali.offset[2] = z;
*/
   cali.offset[0] = x*65536/9807;
    cali.offset[1] = y*65536/9807 ;
    cali.offset[2] = z*65536/9807; 
	 //LOGI("gcali.offset[0] =%d,  cali.offset[1] =%d,   cali.offset[2]=%d",cali.offset[0] , cali.offset[1] ,cali.offset[2]);
	nvram_fid = NVM_GetFileDesc(file_lid, &rec_size, &rec_num,ISWRITE);

	if (nvram_fid.iFileDesc < 0) {
		 //LOGE("Unable to open NVRAM file!");
		return -1;
	}
	
	 //LOGI("open NVRAM success!, rec_num=%d, rec_size=%d",rec_size,rec_num);

	Ret = write(nvram_fid.iFileDesc, &cali, rec_size*rec_num);//write NVRAM
	
	if (Ret < 0) {
		 //LOGE("write NVRAM error!");
		return -1;
	}

      //LOGI("write NVRAM success! Ret=%d",Ret);
	NVM_CloseFileDesc(nvram_fid);


#if 0
	nvram_fid = NVM_GetFileDesc(file_lid, &rec_size, &rec_num, 1);
	if (nvram_fid.iFileDesc < 0) {
		//LOGE("Unable to open NVRAM file!");
		return -1;
	}
	
	Ret = read(nvram_fid.iFileDesc, &cali, rec_size*rec_num);//read NVRAM
	if (Ret < 0) {
		//LOGE("write NVRAM error!");
		return -1;
	}
	//LOGI("read NVRAM success!, cali x/y/z: %d %d %d",cali.offset[0],cali.offset[1],cali.offset[2]);
	NVM_CloseFileDesc(nvram_fid);
#endif 
//        FileOp_BackupToBinRegion_All();	
	//LOGI("FileOp_BackupToBinRegion_All()");
	return 0;
}
//-----------------------------------------------------------------------------
bool META_Editor_ReadFile_OP(FT_AP_Editor_read_req *pReq)
{
	FT_AP_Editor_read_cnf kCnf;
	F_INFO kFileInfo;
	int iNvmRecSize = 0, iReadSize;
	F_ID iFD;
	char* pBuffer = NULL;
	bool IsRead =true;

	memset(&kCnf, 0, sizeof(FT_AP_Editor_read_cnf));
	kCnf.header.id 		= pReq->header.id + 1;
	kCnf.header.token 	= pReq->header.token;
	kCnf.file_idx 		= pReq->file_idx;
	kCnf.para 			= pReq->para;
	
	iFD = NVM_GetFileDesc(pReq->file_idx,&(kFileInfo.i4RecSize),&(kFileInfo.i4RecNum),IsRead);
	if (iFD.iFileDesc == -1) 
    {
		NVRAM_LOG("Error AP_Editor_ReadFile can't open file: file index-%d, %d\n", pReq->file_idx, iNvmRecSize);
		kCnf.status = META_FAILED;
		WriteDataToPC(&kCnf, sizeof(FT_AP_Editor_read_cnf), NULL, 0);
		return false;		
	}
	iNvmRecSize = kFileInfo.i4RecSize;
    
	if (pReq->para > kFileInfo.i4RecNum) 
    {
		NVRAM_LOG("Error AP_Editor_ReadFile para: %d, %d\n", pReq->file_idx, pReq->para);
		NVM_CloseFileDesc(iFD);
		kCnf.status = META_FAILED;
		WriteDataToPC(&kCnf, sizeof(FT_AP_Editor_read_cnf), NULL, 0);
		return false;
	}

    /* Open NVRAM realted files */
	pBuffer = (char*)malloc(iNvmRecSize);
	lseek(iFD.iFileDesc, (pReq->para - 1) * iNvmRecSize, SEEK_CUR);
	iReadSize=read(iFD.iFileDesc, pBuffer, iNvmRecSize);
	if(iNvmRecSize != iReadSize){
		NVRAM_LOG("Error AP_Editor_ReadFile :Read size not match:iReadSize(%d),iNvmRecSize(%d),error:%s\n",iReadSize,iNvmRecSize,strerror(errno));
		NVM_CloseFileDesc(iFD);
		kCnf.status = META_FAILED;
		WriteDataToPC(&kCnf, sizeof(FT_AP_Editor_read_cnf), NULL, 0);
		return false;
	}
		
	NVM_CloseFileDesc(iFD);

	kCnf.read_status = META_STATUS_SUCCESS;
	kCnf.status = META_SUCCESS;

	WriteDataToPC(&kCnf, sizeof(FT_AP_Editor_read_cnf), pBuffer, iNvmRecSize);

	NVRAM_LOG("AP_Editor_ReadFile result: file_idx ~ %d para ~ %d read ~ %d\n", pReq->file_idx, pReq->para, iReadSize);
	free(pBuffer);

	return true;
}
예제 #4
0
/******************************************************************************
 * Functions
 *****************************************************************************/
static int read_write(unsigned int *data)
{
	int result;
	F_ID test_nvram_id;
	int file_lid = AP_CFG_REEB_PRODUCT_INFO_LID;
	int test_fd;
	int rec_size=0 , rec_num = 0;
	bool IsRead = true,IsWrite = false;

	FLPLOGD("--@read:\n");
	test_nvram_id = NVM_GetFileDesc(file_lid, &rec_size, &rec_num,IsRead);//IsRead=true
	if(test_nvram_id.iFileDesc < 0){
		FLPLOGE("--@NVM_GetFileDesc failed\n");
		return -1;
	}
	result = read(test_nvram_id.iFileDesc,&test_struct,rec_num*rec_size);
	if(result != rec_num*rec_size){
		FLPLOGE("--@Get file failed\n");
		return -1;
	}
	//读取nvram的数据
	FLPLOGD("--@---------read---------\n");
	//FLPLOGD("--@perso1[0]:%d\n",test_struct.trace_nvram_data.info_name_perso1[0]);
	FLPLOGD("--@perso1[0]:%d\n",test_struct.ps_cali_nvram_data[0]);
	FLPLOGD("--@------------------\n");
	if(!NVM_CloseFileDesc(test_nvram_id))
	{
		FLPLOGE("NVM_CloseFileDesc failed\n");
	}

	FLPLOGD("write:\n");
    test_nvram_id = NVM_GetFileDesc(file_lid, &rec_size, &rec_num,IsWrite);//IsWrite=false
    if(test_nvram_id.iFileDesc < 0){
        FLPLOGE("NVM_GetFileDesc failed\n");
        return -1;
    }
       // test_struct.ps_cali_nvram_data[0] = *data;
   // test_struct.trace_nvram_data.info_name_perso1[0] = *data;
		test_struct.ps_cali_nvram_data[0] = *data & 0xff;
		test_struct.ps_cali_nvram_data[1] = (*data & 0xff00) >> 8;
    FLPLOGD("--------write----------\n");
	//FLPLOGD("--@perso1[0]:%d\n",test_struct.trace_nvram_data.info_name_perso1[0]);
	FLPLOGD("--@perso1[0]:%d\n",test_struct.ps_cali_nvram_data[0]);
	FLPLOGD("--@------------------\n");
    result = write(test_nvram_id.iFileDesc,&test_struct,rec_num*rec_size);
    if(result != rec_num*rec_size){
        FLPLOGE("write file failed\n");
        return -1;
    }
    if(!NVM_CloseFileDesc(test_nvram_id))
    {
        FLPLOGE("NVM_CloseFileDesc failed\n");
		return -1;
    }
    return 0;
}
//-----------------------------------------------------------------------------
FT_AP_Editor_write_cnf	META_Editor_WriteFile_OP(
	FT_AP_Editor_write_req *pReq,
    char *peer_buf,
    unsigned short peer_len)
{
	FT_AP_Editor_write_cnf kCnf;
	F_INFO kFileInfo;
	int iNvmRecSize = 0, iWriteSize;
	F_ID iFD;
	bool IsRead = false;

	memset(&kCnf, 0, sizeof(FT_AP_Editor_write_cnf));
	kCnf.file_idx 		= pReq->file_idx;
	kCnf.para 			= pReq->para;
	
	if ((peer_buf == NULL) || (peer_len == 0)) {
		NVRAM_LOG("Error AP_Editor_WriteFile Peer Buffer Error\n");
		kCnf.status = META_FAILED;
		return kCnf;
	}
	
	iFD = NVM_GetFileDesc(pReq->file_idx,&(kFileInfo.i4RecSize),&(kFileInfo.i4RecNum),IsRead);
	if (iFD.iFileDesc == -1) {
		NVRAM_LOG("Error AP_Editor_WriteFile can't open file: file index-%d, %d\n", 
			pReq->file_idx, iNvmRecSize);
		kCnf.status = META_FAILED;
		return kCnf;
	}
	iNvmRecSize = kFileInfo.i4RecSize;
	if ((pReq->para > kFileInfo.i4RecNum) || (peer_len > kFileInfo.i4RecSize)) {
		NVRAM_LOG("Error AP_Editor_WriteFile para: %d, %d, %d\n", pReq->file_idx, pReq->para, peer_len);
		NVM_CloseFileDesc(iFD);
		kCnf.status = META_FAILED;
		return kCnf;

	}
	lseek(iFD.iFileDesc, (pReq->para - 1) * iNvmRecSize, SEEK_CUR);
	iWriteSize = write(iFD.iFileDesc, peer_buf, iNvmRecSize);
	if(iNvmRecSize != iWriteSize){
		NVRAM_LOG("Error AP_Editor_WriteFile :Write size not match:iWriteSize(%d),iNvmRecSize(%d),error:%s\n",iWriteSize,iNvmRecSize,strerror(errno));
		NVM_CloseFileDesc(iFD);
		kCnf.status = META_FAILED;
		return kCnf;
	}
	NVM_CloseFileDesc(iFD);

	kCnf.write_status = META_STATUS_SUCCESS;
	kCnf.status = META_SUCCESS;

	NVRAM_LOG("AP_Editor_WriteFile result: file_idx-%d para-%d write-%d\n", pReq->file_idx, pReq->para, iWriteSize);
	NVRAM_LOG("AddBackupFileNum Begin");
	NVM_AddBackupFileNum(pReq->file_idx);
	NVRAM_LOG("AddBackupFileNum End");
	return kCnf;
}
예제 #6
0
static int read_offset(unsigned int *data)
{
	int result;
	F_ID test_nvram_id;
	int file_lid = AP_CFG_REEB_PRODUCT_INFO_LID;
	int test_fd;
	int rec_size=0 , rec_num = 0;
	bool IsRead = true,IsWrite = false;
//	PSCALILOGD("--@read:\n");
	test_nvram_id = NVM_GetFileDesc(file_lid, &rec_size, &rec_num,IsRead);//IsRead=true
	if(test_nvram_id.iFileDesc < 0){
	//	PSCALILOGD("--@NVM_GetFileDesc failed\n");
		return -1;
	}
	result = read(test_nvram_id.iFileDesc,&test_struct,rec_num*rec_size);
	if(result != rec_num*rec_size){
	//	PSCALILOGD("--@Get file failed\n");
		return -1;
	}
	//*data = test_struct.ps_cali_nvram_data[0];
	
	//*data = test_struct.trace_nvram_data.info_name_perso1[0];
	*data = test_struct.ps_cali_nvram_data[0] & 0xff;
	*data = ((test_struct.ps_cali_nvram_data[1] & 0xff) << 8) |*data;
//	PSCALILOGD("--@---------read---------\n");
	//PSCALILOGD("--@perso1[0]:%d\n",test_struct.trace_nvram_data.info_name_perso1[0]);
	//PSCALILOGD("--@------------------\n");
	if(!NVM_CloseFileDesc(test_nvram_id))
	{
		//PSCALILOGD("NVM_CloseFileDesc failed\n");
		return -1;
	}
    return 0;
}
예제 #7
0
int CitBinder::setPsCali_close(int data)
{

   	int result = 0;
	F_ID ps_nvram_fd = {0};
	int rec_size = 0;
	int rec_num = 0;
	LOGV("setPsCali_close data: %d,%d,%d\n",data );
	ps_nvram_fd = NVM_GetFileDesc(AP_CFG_CUSTOM_FILE_CUSTOM1_LID, &rec_size, &rec_num, ISWRITE);
//	//LOGE("[LONG][ALS/PS]read:FD %d rec_size %d rec_num %d\n", ps_nvram_fd.iFileDesc, rec_size, rec_num);

	g_ps_nvram.offset[0]=data;
	//g_ps_nvram.offset[1]=ps_cali_temp->far_away;
	//g_ps_nvram.offset[2]=ps_cali_temp->valid;

////LOGE("[LONG][ALS/PS]read: %d,%d,%d\n", g_ps_nvram.offset[0],g_ps_nvram.offset[1],g_ps_nvram.offset[2]);

	if (rec_size != write(ps_nvram_fd.iFileDesc, &g_ps_nvram, rec_size)){
		//LOGE("[LONG][ALS/PS]write to NVRAM ERR\r\n");
		return -1;
	}	
	//LOGE("[LONG][ALS/PS]read: %d,%d,%d\n", g_ps_nvram.offset[0],g_ps_nvram.offset[1],g_ps_nvram.offset[2]);
	NVM_CloseFileDesc(ps_nvram_fd);

//	FileOp_BackupToBinRegion_All();	
	//LOGE("setPsCali_close  FileOp_BackupToBinRegion_All");
  	 return result;

}
예제 #8
0
int
NvramDrv::writeNvramData(
	CAMERA_DUAL_CAMERA_SENSOR_ENUM a_eSensorType,
    CAMERA_DATA_TYPE_ENUM a_eNvramDataType,
	void *a_pNvramData
)
{
	F_ID rNvramFileID;
	int i4FileInfo;
	int i4RecSize;
    int i4RecNum;

    NVRAM_DRV_LOG("[writeNvramData] sensor type = %d; NVRAM data type = %d\n", a_eSensorType, a_eNvramDataType);

	switch (a_eNvramDataType) {
	case CAMERA_NVRAM_DATA_ISP:
		i4FileInfo = AP_CFG_RDCL_CAMERA_PARA_LID;
		break;
	case CAMERA_NVRAM_DATA_3A:
		i4FileInfo = AP_CFG_RDCL_CAMERA_3A_LID;
		break;
	case CAMERA_NVRAM_DATA_SHADING:
		i4FileInfo = AP_CFG_RDCL_CAMERA_SHADING_LID;
		break;
	case CAMERA_NVRAM_DATA_LENS:
		i4FileInfo = AP_CFG_RDCL_CAMERA_LENS_LID;
		break;
	case CAMERA_NVRAM_DATA_STROBE:
		i4FileInfo = AP_CFG_RDCL_CAMERA_DEFECT_LID;
		break;
	default:
	    NVRAM_DRV_ERR("writeNvramData(): incorrect data type\n");
		return NVRAM_WRITE_PARAMETER_ERROR;
		break;
	}

#ifdef NVRAM_SUPPORT

    rNvramFileID = NVM_GetFileDesc(i4FileInfo, &i4RecSize, &i4RecNum, ISWRITE);
	if (rNvramFileID.iFileDesc == INVALID_HANDLE_VALUE) {
	    NVRAM_DRV_ERR("writeNvramData(): create NVRAM file fail\n");
		return NVRAM_CAMERA_FILE_ERROR;
	}

	if (a_eSensorType == DUAL_CAMERA_MAIN_SECOND_SENSOR) {
	    lseek(rNvramFileID.iFileDesc, i4RecSize, SEEK_SET);
	}

	if (a_eSensorType == DUAL_CAMERA_SUB_SENSOR) {
	    lseek(rNvramFileID.iFileDesc, i4RecSize*2, SEEK_SET);
	}

    write(rNvramFileID.iFileDesc, a_pNvramData, i4RecSize);

	NVM_CloseFileDesc(rNvramFileID);
#endif

    return NVRAM_NO_ERROR;
}
예제 #9
0
unsigned char CitBinder::getFlag(int data)
{
   int result = 0;
  //LOGI("data= %d",data);
   F_ID sncit_nvram_fd;
   int file_lid = AP_CFG_REEB_PRODUCT_INFO_LID;
   int i = 0,rec_sizem,rec_size,rec_num ;
   unsigned char ret=0 , num = 1;
   PRODUCT_INFO snCitParam;
   memset(&snCitParam,0,sizeof(snCitParam));

   sncit_nvram_fd = NVM_GetFileDesc(file_lid, &rec_size, &rec_num, ISREAD);

   result = read(sncit_nvram_fd.iFileDesc, &snCitParam , rec_size*rec_num);
//   if(result)
 //LOGI("SNcit.flag read success result = %d",result);
//   else
   	//LOGE("sn cit setflag fail");

   NVM_CloseFileDesc(sncit_nvram_fd);
for(i = 0;i <data ;i++)    {   
   //LOGI("i= %d",i);
 if(snCitParam.barcode[i]==1) {
   //LOGI("SNcit.flag  snCitParam.barcode[%d]= %d",i,snCitParam.barcode[i]);
  int j =0; 
   unsigned char  num = 1;
   for( j;j<data-i-1;j++)  {

       num = num *2 ;
   }
   //LOGI("SNcit.flag num= %d",num);
   ret = ret +num;

   //LOGI("SNcit.flag  ret= %d",ret);
}

}/*

   NVM_CloseFileDesc(sncit_nvram_fd);
   if(snCitParam.barcode[0]==1)
     	ret=1;
   if(snCitParam.barcode[1]==1)
     	ret=2+ret;
   if(snCitParam.barcode[2]==1)
     	ret=4+ret; 	
   if(snCitParam.barcode[3]==1)
     	ret=8+ret;
	//LOGI("ret =%d\n",ret);
   return ret;*/
	//LOGI("ret =%d\n",ret);

   return ret;
}
예제 #10
0
int CitBinder::setFirstPwrOn_Flag()
{
   int result = 0;

   //int sncit_nvram_fd = 0;
   F_ID sncit_nvram_fd;
//   int file_lid = AP_CFG_CUSTOM_FILE_CUSTOM2_LID;
   int file_lid = 0;
   int i = 0,rec_sizem,rec_size,rec_num;
   int snCitParam;
   memset(&snCitParam,0,sizeof(snCitParam));
   
   sncit_nvram_fd = NVM_GetFileDesc(file_lid, &rec_size, &rec_num, ISREAD);
   result = read(sncit_nvram_fd.iFileDesc, &snCitParam , rec_size*rec_num);
 //LOGI("setFirstPwrOn_Flag snCitParam = %d",snCitParam);
//LOGI("setFirstPwrOn_Flag result = %d",result);
   if(result)
    {
//LOGI("setFirstPwrOn_Flag 11111");
   		snCitParam=1;
  	}
  	else
  	{
//LOGI("setFirstPwrOn_Flag 222222");
  		//LOGE("sn cit setflag fail");
    }

 //LOGI("setFirstPwrOn_Flag snCitParam 2 = %d",snCitParam);
//LOGI("setFirstPwrOn_Flag result 2 = %d",result);
       NVM_CloseFileDesc(sncit_nvram_fd);

   sncit_nvram_fd = NVM_GetFileDesc(file_lid, &rec_size, &rec_num, ISWRITE);
   result = write(sncit_nvram_fd.iFileDesc, &snCitParam , rec_size*rec_num);
       NVM_CloseFileDesc(sncit_nvram_fd);

//      setresult=FileOp_BackupToBinRegion_All();
   //LOGI("setFirstPwrOn_Flag--write resul= %d----FileOp_BackupToBinRegion_All %d",result,setresult);
   return result;
}
int  SetHeadphoneCompFltCustParamToNV(AUDIO_ACF_CUSTOM_PARAM_STRUCT *audioParam)
{

    // write to NV ram
    F_ID audio_nvram_fd;
    int file_lid = AP_CFG_RDCL_FILE_HEADPHONE_COMPFLT_LID;
    int i = 0,rec_sizem,rec_size,rec_num,result;

    audio_nvram_fd = NVM_GetFileDesc(file_lid, &rec_size, &rec_num, ISWRITE);
    result = write(audio_nvram_fd.iFileDesc, audioParam, rec_size*rec_num);
    NVM_CloseFileDesc(audio_nvram_fd);

    return result;
}
int  GetAudioCompFltCustParamFromNV(AUDIO_ACF_CUSTOM_PARAM_STRUCT *audioParam)
{
   int result = 0;

   F_ID audio_nvram_fd;
   int file_lid = AP_CFG_RDCL_FILE_AUDIO_COMPFLT_LID;
   int i = 0, rec_sizem, rec_size, rec_num;
   if(!checkNvramReady())
   {
       LOGW("checkNvramReady fail");
   }

   audio_nvram_fd = NVM_GetFileDesc(file_lid, &rec_size, &rec_num, ISREAD);
   result = read(audio_nvram_fd.iFileDesc, audioParam, rec_size*rec_num);
   NVM_CloseFileDesc(audio_nvram_fd);

   return result;
}
static int read_NVRAM()
{
    //int gps_nvram_fd = 0;
    F_ID gps_nvram_fd;
    int rec_size;
    int rec_num;
    int i;


    memset(&stGPSReadback, 0, sizeof(stGPSReadback));

	gps_nvram_fd = NVM_GetFileDesc(AP_CFG_CUSTOM_FILE_GPS_LID, &rec_size, &rec_num, ISREAD);
	if(gps_nvram_fd.iFileDesc > 0)/*>0 means ok*/
	{
    	if(read(gps_nvram_fd.iFileDesc, &stGPSReadback , rec_size*rec_num) < 0)
			MND_ERR("read NVRAM error, %s\n", strerror(errno));;
        NVM_CloseFileDesc(gps_nvram_fd);
    
		if(strlen(stGPSReadback.dsp_dev) != 0)
		{
    
             MND_MSG("GPS NVRam (%d * %d) : \n", rec_size, rec_num);
             MND_MSG("dsp_dev : %s\n", stGPSReadback.dsp_dev);
           
		}
         else
         {
             MND_ERR("GPS NVRam mnl_config.dev_dsp == NULL \n");
			 return -1;
         }
     }
     else
     {
         MND_ERR("GPS NVRam gps_nvram_fd == %d \n", gps_nvram_fd);
		 return -1;
     }
	if(strcmp(stGPSReadback.dsp_dev, "/dev/stpgps") == 0)
	{
		MND_ERR("not 3332 UART port\n");
		return 1;
	}
	return 0;
}
예제 #14
0
unsigned int CitBinder::getFirstPwrOn_Flag()
{
   int result = 0;

  // int sncit_nvram_fd = 0;
   F_ID sncit_nvram_fd;
//   int file_lid = AP_CFG_CUSTOM_FILE_CUSTOM2_LID;
   int file_lid = 0;
   int i = 0,rec_sizem,rec_size,rec_num;
   unsigned int ret=0;
   //unsigned char barcode[64];
   int snCitParam;
   memset(&snCitParam,0,sizeof(snCitParam));

   sncit_nvram_fd = NVM_GetFileDesc(file_lid, &rec_size, &rec_num, ISREAD);

   result = read(sncit_nvram_fd.iFileDesc, &snCitParam , rec_size*rec_num);
   if(result)
{
	int temp = 0;
   //LOGI("getFirstPwrOn_Flag SNcit.flag = %d",snCitParam);
   //LOGI("getFirstPwrOn_Flag SNcit.flag result = %d",result);
   
}else
{ 
	int temp = 0;
  	//LOGE("sn cit setflag fail");
}
   NVM_CloseFileDesc(sncit_nvram_fd);

   if (snCitParam != 0) 
{
//LOGI("getFirstPwrOn_Flag 11111");
   ret =1;
}
else 
{
//LOGI("getFirstPwrOn_Flag 222222");
   ret = 0;
}
   return ret;
}
예제 #15
0
int CitBinder::setPsCali_valid(int data)
{
   	int result = 0;
	F_ID ps_nvram_fd = {0};
	int rec_size = 0;
	int rec_num = 0;

	ps_nvram_fd = NVM_GetFileDesc(AP_CFG_CUSTOM_FILE_CUSTOM1_LID, &rec_size, &rec_num, ISWRITE);

	g_ps_nvram.offset[2]=data;
	if (rec_size != write(ps_nvram_fd.iFileDesc, &g_ps_nvram, rec_size)){
		//LOGE("[LONG][ALS/PS]write to NVRAM ERR\r\n");
		return -1;
	}	
	NVM_CloseFileDesc(ps_nvram_fd);

	//LOGE("setPsCali_vali  FileOp_BackupToBinRegion_All");
//	FileOp_BackupToBinRegion_All();	

  	 return result;
}
예제 #16
0
/*****************************************************************************
 * FUNCTION
 *  mtk_gps_sys_init
 * DESCRIPTION
 *
 * PARAMETERS
 *
 * RETURNS
 *
 *****************************************************************************/
int mtk_gps_sys_init()
{
    //int gps_nvram_fd = 0;
    F_ID gps_nvram_fd;
    int file_lid = AP_CFG_CUSTOM_FILE_GPS_LID;
    int rec_size;
    int rec_num;
    int i;
    /*create message queue*/
#if defined(LIB_MQUEUE)
    mnl_agps_mq_attr.mq_maxmsg = 72;
    mnl_agps_mq_attr.mq_msgsize = sizeof(MTK_GPS_AGPS_AGENT_MSG);
    mnl_agps_mq_attr.mq_flags   = 0;
    mnl_agps_mq_fd = mq_open (MNL_AGPS_MQ_NAME, O_CREAT|O_RDWR|O_EXCL, PMODE, &mnl_agps_mq_attr);

    if (mnl_agps_mq_fd == -1)
    {
        MNL_MSG("Fail to create mnl_agps_msg_queue, errno=%s\n",strerror(errno));
        if (errno == EEXIST) 
        {
            MNL_MSG("mnl_agps_msg_queue already exists, unlink it now ...\n");
            mq_unlink(MNL_AGPS_MQ_NAME);
        }
        return MTK_GPS_ERROR;
    } 
#else
#endif
            memset(&stGPSReadback, 0, sizeof(stGPSReadback));
            //gps_nvram_fd.iFileDesc = NVM_GetFileDesc(file_lid, &rec_size, &rec_num, ISREAD);
            #ifdef MTK_GPS_NVRAM
            gps_nvram_fd = NVM_GetFileDesc(file_lid, &rec_size, &rec_num, ISREAD);
        if(gps_nvram_fd.iFileDesc != 0)
            {
            read(gps_nvram_fd.iFileDesc, &stGPSReadback , rec_size*rec_num);
                NVM_CloseFileDesc(gps_nvram_fd);
    
                if(strlen(stGPSReadback.dsp_dev) != 0)
                {
                    gps_nvram_valid = 1;
                    //strncpy(mnl_config.dev_dsp, stGPSReadback.dsp_dev, sizeof(mnl_config.dev_dsp));
    
                    MNL_MSG("GPS NVRam (%d * %d) : \n", rec_size, rec_num);
                    //MNL_MSG("dsp_dev(mt6620:/dev/stpgps) : %s\n", stGPSReadback.dsp_dev);
                    //MNL_MSG("gps_if_type : %d\n", stGPSReadback.gps_if_type);
                    MNL_MSG("gps_tcxo_hz : %d\n", stGPSReadback.gps_tcxo_hz);
                    MNL_MSG("gps_tcxo_ppb : %d\n", stGPSReadback.gps_tcxo_ppb);
                    MNL_MSG("gps_tcxo_type : %d\n", stGPSReadback.gps_tcxo_type);
                    MNL_MSG("gps_lna_mode : %d\n", stGPSReadback.gps_lna_mode);
                    //MNL_MSG("gps_sbas_mode : %d\n", stGPSReadback.gps_sbas_mode);
                }
                else
                {
                    MNL_MSG("GPS NVRam mnl_config.dev_dsp == NULL \n");
                }
            }
            else
            {
                MNL_MSG("GPS NVRam gps_nvram_fd == NULL \n");
            }
            #endif
    return MTK_GPS_SUCCESS;
}
예제 #17
0
// wifi mac
int rmmi_eawifi_hdlr (char *addr)
{
    char output[wifi_length] = {0};
    int rec_size = 0;
    int rec_num = 0;
	unsigned char w_wifi[wifi_length];
    int ret, length = 0, i = 0;
    char* value = addr;
    printf("rmmi_eawifi_hdlr:RMMI_SET_OR_EXECUTE_MODE\n");
    nvram_fd = NVM_GetFileDesc(AP_CFG_RDEB_FILE_WIFI_LID, &rec_size, &rec_num, ISREAD);
    printf("rec_size=%d,rec_num=%d\n",rec_size,rec_num);
	if(1 != rec_num)
	{
		printf("error:unexpected record num %d\n",rec_num);
		return -1;
	}
	if(sizeof(WIFI_CFG_PARAM_STRUCT) != rec_size)
	{
		printf("error:unexpected record size %d\n",rec_size);
		return -1;
	}
	memset(&g_wifi_nvram,0,rec_num*rec_size);
	ret = read(nvram_fd.iFileDesc, &g_wifi_nvram, rec_num*rec_size);
	if(-1 == ret||rec_num*rec_size != ret)
	{
		printf("error:read wifi mac addr fail!/n");
		return -1;
	}
	printf("read wifi addr:%02x%02x%02x%02x%02x%02x\n",
            g_wifi_nvram.aucMacAddress[0], g_wifi_nvram.aucMacAddress[1], g_wifi_nvram.aucMacAddress[2], g_wifi_nvram.aucMacAddress[3], g_wifi_nvram.aucMacAddress[4],
	g_wifi_nvram.aucMacAddress[5]);
	NVM_CloseFileDesc(nvram_fd);
    if(strcmp(addr,"read")==0){
        printf("Success: only read wifi address done!\n");
        return 0;
    }
    nvram_fd = NVM_GetFileDesc(AP_CFG_RDEB_FILE_WIFI_LID, &rec_size, &rec_num, ISWRITE);
		printf("rec_size=%d,rec_num=%d\n",rec_size,rec_num);
		if(1 != rec_num)
		{
			printf("error:unexpected record num %d\n",rec_num);
			return -1;
		}
		if(sizeof(g_wifi_nvram) != rec_size)
		{
			printf("error:unexpected record size %d\n",rec_size);
			return -1;
		}
		memset(g_wifi_nvram.aucMacAddress,0,bt_length);
//   			memset(w_bt,0,bt_length);
    length = strlen(value);
    if(length != 12)
    {
	    printf("error:bt address length is not right!\n");
	    return -1;
    }
    ret = convStrtoHex(value,output,wifi_length,&length);
    if(-1 == ret)
    {
	    printf("error:convert wifi address to hex fail\n");
	    return -1;
    }
    else
    {
        printf("WIFI Address:%s\n", output);
    }
		for(i=0;i<bt_length;i++)
		{
			g_wifi_nvram.aucMacAddress[i] = output[i];
		}
		printf("write wifi addr:%02x%02x%02x%02x%02x%02x, value:%02x%02x%02x%02x%02x%02x\n",
            g_wifi_nvram.aucMacAddress[0], g_wifi_nvram.aucMacAddress[1],
            g_wifi_nvram.aucMacAddress[2], g_wifi_nvram.aucMacAddress[3],
            g_wifi_nvram.aucMacAddress[4], g_wifi_nvram.aucMacAddress[5],
            output[0], output[1], output[2], output[3], output[4], output[5]
            );
		ret = write(nvram_fd.iFileDesc, &g_wifi_nvram , rec_num*rec_size);
		if(-1 == ret||rec_num*rec_size != ret)
		{
			printf("error:write wifi addr fail!\n");
			return -1;
		}
		NVM_CloseFileDesc(nvram_fd);
		printf("Success : write wifi addr done!\n");
		if(FileOp_BackupToBinRegion_All())
		{
			printf("backup nvram data to nvram binregion success!\n");
		}
		else
		{
			printf("error:backup nvram data to nvram binregion fail!\n");
			return -1;
		}
		sync();
    return 0;
}
예제 #18
0
int rmmi_eabt_hdlr ( char *addr)
{
    char output[bt_length] = {0};
    int rec_size = 0;
    int rec_num = 0;
	unsigned char w_bt[bt_length];
    int length;
    int ret, i = 0;
    char value[13] = {0};
    memset(value, 0, sizeof(value));

    nvram_fd = NVM_GetFileDesc(AP_CFG_RDEB_FILE_BT_ADDR_LID, &rec_size, &rec_num, ISREAD);
    printf("rec_size=%d,rec_num=%d\n",rec_size,rec_num);
    if(1 != rec_num)
   {
   	printf("error:unexpected record num %d\n",rec_num);

   	return -1;
   }
   if(sizeof(g_bt_nvram) != rec_size)
   {
   	printf("error:unexpected record size %d\n",rec_size);
   	return -1;
   }
   memset(&g_bt_nvram,0,rec_num*rec_size);
   ret = read(nvram_fd.iFileDesc, &g_bt_nvram, rec_num*rec_size);
   if(-1 == ret||rec_num*rec_size != ret)
   {
   	printf("error:read bt addr fail!/n");
   	return -1;
   }
   printf("read pre bt addr:%02x%02x%02x%02x%02x%02x\n", 
                   g_bt_nvram.addr[0], g_bt_nvram.addr[1], g_bt_nvram.addr[2], g_bt_nvram.addr[3], g_bt_nvram.addr[4], g_bt_nvram.addr[5] 
   );
   NVM_CloseFileDesc(nvram_fd);
    if(strcmp(addr,"read")==0){
        printf("Success: only read bt address done!\n");
        return 0;
    }
   nvram_fd = NVM_GetFileDesc(AP_CFG_RDEB_FILE_BT_ADDR_LID, &rec_size, &rec_num, ISWRITE);
   printf("rec_size=%d,rec_num=%d\n",rec_size,rec_num);
   if(1 != rec_num)
   {
   	printf("error:unexpected record num %d\n",rec_num);
   	return -1;
   }
   if(sizeof(g_bt_nvram) != rec_size)
   {
   	printf("error:unexpected record size %d\n",rec_size);
   	return -1;
   }
   memset(g_bt_nvram.addr,0,bt_length);
   memset(w_bt,0,bt_length);
   length = strlen(addr);
   if(length != 12)
   {
	printf("error:bt address length is not right!\n");
	return -1;
    }
    ret = convStrtoHex(addr,output,bt_length,&length);
    if(-1 == ret)
    {
	printf("error:convert bt address to hex fail\n");
	return -1;
    }
    else
    {
          printf("BT Address:%s\n", output);
     }
     for(i=0;i<bt_length;i++)
     {	
   	    g_bt_nvram.addr[i] = output[i];
     }
     printf("write bt addr:%02x%02x%02x%02x%02x%02x, value:%02x%02x%02x%02x%02x%02x\n", 
                    g_bt_nvram.addr[0], g_bt_nvram.addr[1], g_bt_nvram.addr[2], g_bt_nvram.addr[3], g_bt_nvram.addr[4], g_bt_nvram.addr[5],
                    output[0], output[1], output[2], output[3], output[4], output[5]
     );
     ret = write(nvram_fd.iFileDesc, &g_bt_nvram , rec_num*rec_size);
     if(-1 == ret||rec_num*rec_size != ret)
     {
   	  printf("error:write wifi addr fail!\n");
   	  return -1;
    }
    NVM_CloseFileDesc(nvram_fd);
    printf("write bt addr success!\n");
    if(FileOp_BackupToBinRegion_All())
    {
        printf("backup nvram data to nvram binregion success!\n");
    }
    else
    {
        printf("error:backup nvram data to nvram binregion fail!\n");
   	 return -1;
    }
    sync();
    return 0;
}
예제 #19
0
int
NvramDrv::readNvramData(
	CAMERA_DUAL_CAMERA_SENSOR_ENUM a_eSensorType,
    CAMERA_DATA_TYPE_ENUM a_eNvramDataType,
	void *a_pNvramData
)
{
	F_ID rNvramFileID;
	int i4FileInfo;
	int i4RecSize;
    int i4RecNum;
//seanlin 121221 avoid camera has not inited>
//[ALPS00424402] [CCT6589] Len shading page --> Save to NVRAM --> CCT reboot failed
    if (!bCustomInit) {
        cameraCustomInit();
	    LensCustomInit();
		bCustomInit = 1;
	}
//[ALPS00424402] [CCT6589] Len shading page --> Save to NVRAM --> CCT reboot failed
//seanlin 121221 avoid camera has not inited<
    NVRAM_DRV_LOG("[readNvramData] sensor type = %d; NVRAM data type = %d\n", a_eSensorType, a_eNvramDataType);

	switch (a_eNvramDataType) {
	case CAMERA_NVRAM_DATA_ISP:
		i4FileInfo = AP_CFG_RDCL_CAMERA_PARA_LID;
		break;
	case CAMERA_NVRAM_DATA_3A:
		i4FileInfo = AP_CFG_RDCL_CAMERA_3A_LID;
		break;
	case CAMERA_NVRAM_DATA_SHADING:
		i4FileInfo = AP_CFG_RDCL_CAMERA_SHADING_LID;
		break;
	case CAMERA_NVRAM_DATA_LENS:
		i4FileInfo = AP_CFG_RDCL_CAMERA_LENS_LID;
		break;
	case CAMERA_NVRAM_DATA_STROBE:
		i4FileInfo = AP_CFG_RDCL_CAMERA_DEFECT_LID;
		break;
	default :
	    NVRAM_DRV_ERR("readNvramData(): incorrect data type\n");
		return NVRAM_READ_PARAMETER_ERROR;
		break;
	}

#ifdef NVRAM_SUPPORT

	rNvramFileID = NVM_GetFileDesc(i4FileInfo, &i4RecSize, &i4RecNum, ISREAD);
	if (rNvramFileID.iFileDesc == INVALID_HANDLE_VALUE) {
		NVRAM_DRV_ERR("readNvramData(): create NVRAM file fail\n");
		return NVRAM_CAMERA_FILE_ERROR;
	}

    if (a_eSensorType == DUAL_CAMERA_MAIN_SECOND_SENSOR) {
	    lseek(rNvramFileID.iFileDesc, i4RecSize, SEEK_SET);
	}

    if (a_eSensorType == DUAL_CAMERA_SUB_SENSOR) {
	    lseek(rNvramFileID.iFileDesc, i4RecSize*2, SEEK_SET);
	}

	read(rNvramFileID.iFileDesc, a_pNvramData, i4RecSize);

	NVM_CloseFileDesc(rNvramFileID);

#endif

    return NVRAM_NO_ERROR;
}