int OemCamDrv::readOem(CAMERA_DUAL_CAMERA_SENSOR_ENUM a_eSensorType,
                          unsigned long u4SensorID,
                          CAMERA_DATA_TYPE_ENUM nvRamId,
	                      void *a_pNvramData,
	                      unsigned long a_u4NvramDataSize,
	                      int a_version)
{

    logI("readOem ln=%d sensorDev=%d id=%d",__LINE__, a_eSensorType, nvRamId);
    Mutex::Autolock _l(gLock);
    readCommonOem();
    if(gIsOemExist==0)
    {
        int err;
        NvramDrvBase* nvDrv;
    	nvDrv = NvramDrvBase::createInstance();
    	err  = nvDrv->readDefaultData (
    			(CAMERA_DUAL_CAMERA_SENSOR_ENUM)a_eSensorType, u4SensorID, nvRamId,
    			a_pNvramData	);
    	nvDrv->destroyInstance();
    	return 0;
    }
logI("readOem ln=%d",__LINE__);
    //=====================================
    if(nvRamId == CAMERA_OEM_COMMON)
    {
        memcpy(a_pNvramData, &gCamCommon, sizeof(OEM_CAMERA_COMMON));
        return 0;
    }
logI("readOem ln=%d",__LINE__);

    char fname[e_MaxPathSize+20];

    strcpy(fname, gOemItemDres[nvRamId].path);

    if(gOemItemDres[nvRamId].sensorDevRelation==e_SensorRelation)
    {
        if(a_eSensorType == DUAL_CAMERA_MAIN_SENSOR)
            strcat(fname, "_main");
        else if(a_eSensorType == DUAL_CAMERA_SUB_SENSOR)
            strcat(fname, "_sub");
        else //if(a_eSensorType == DUAL_CAMERA_MAIN2_SENSOR)
            strcat(fname, "_main2");

    }



    int id=0;
     getSensorID(a_eSensorType, id);

logI("readOem getSensorID ln=%d id=%d",__LINE__,id);


    if(gOemItemDres[nvRamId].componentRelation == e_SensorRelation)
    {
        if(a_eSensorType == DUAL_CAMERA_MAIN_SENSOR)
        {
            int i;
            int oemId=0;
            char s[20];
            for(i=0;i<10;i++)
            {
                if( id ==  gCamCommon.OemMainSensorId[i])
                {
                    oemId=i;
                    break;
                }
            }
            sprintf(s,"_%d",oemId);
            strcat(fname, s);
        }
        else if(a_eSensorType == DUAL_CAMERA_SUB_SENSOR)
        {
            int i;
            int oemId=0;
            char s[20];
            for(i=0;i<10;i++)
            {
                if( id ==  gCamCommon.OemSubSensorId[i])
                {
                    oemId=i;
                    break;
                }
            }
            sprintf(s,"_%d",oemId);
            strcat(fname, s);
        }
    }

logI("readOem ln=%d nvRamId=%d fname=%s",__LINE__,nvRamId, fname);

    FILE* fp;
    fp = fopen(fname, "rb");
    if(fp==0)
    {
        int err;
        NvramDrvBase* nvDrv;
    	nvDrv = NvramDrvBase::createInstance();
    	err  = nvDrv->readDefaultData (
    			(CAMERA_DUAL_CAMERA_SENSOR_ENUM)a_eSensorType, u4SensorID, nvRamId,
    			a_pNvramData	);
    	nvDrv->destroyInstance();
        return 0;
    }
logI("readOem ln=%d",__LINE__);

    fread(a_pNvramData, 1, a_u4NvramDataSize, fp);
    fclose(fp);
logI("readOem ln=%d",__LINE__);
    return 0;
}