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; }