int forceReadNoLock(CAMERA_DATA_TYPE_ENUM nvRamId, int sensorDev) { int err; int u4SensorID; err = getSensorID((CAMERA_DUAL_CAMERA_SENSOR_ENUM)sensorDev, u4SensorID); if(err!=0) return err; void* buf; err = getMem(nvRamId, (CAMERA_DUAL_CAMERA_SENSOR_ENUM)sensorDev, buf); if(err!=0) return err; int nvSize; err = getNvSize(nvRamId, nvSize); if(err!=0) return err; NvramDrvBase* nvDrv; nvDrv = NvramDrvBase::createInstance(); err = nvDrv->readNvram ( (CAMERA_DUAL_CAMERA_SENSOR_ENUM)sensorDev, u4SensorID, nvRamId, buf, nvSize ); nvDrv->destroyInstance(); return err; }
MRESULT NvramDrvMgrCtx:: uninit() { if ( m_pNvramDrv ) { m_pNvramDrv->destroyInstance(); m_pNvramDrv = NULL; } m_u4SensorID = 0; m_eSensorEnum = DUAL_CAMERA_NONE_SENSOR; return S_NVRAM_OK; }
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; }