TInt CSecMgrStore::ReadCounter(TExecutableID& aExecID) { HBufC *configFile = HBufC::NewLC(KMaxName); TPtr ptr(configFile->Des()); TInt ret(GetConfigFile (ptr)); if ( KErrNone==ret) { if ( !BaflUtils::FileExists(iFsSession,*configFile)) { aExecID = (TExecutableID)KCRUIdSecMgr.iUid; BaflUtils::EnsurePathExistsL (iFsSession, *configFile); CleanupStack::PopAndDestroy (configFile); return WriteCounter (aExecID); } CFileStore* store = CPermanentFileStore::OpenLC (iFsSession, *configFile, EFileRead); RStoreReadStream instream; instream.OpenLC (*store, store->Root ()); aExecID = instream.ReadInt32L (); CleanupStack::PopAndDestroy (&instream); CleanupStack::PopAndDestroy (store); } CleanupStack::PopAndDestroy (configFile); return ret; }
/// /// Verifies material consumption. // int MaterialMonitorSim::UpdateConsumption(unsigned char ucCartridgeNum, unsigned int uiComsumption, unsigned int *uiNewVolume) { UniqueLock uniqueLock(m_mtx); try { int returnValue = IDTLIB_SUCCESS; if (uiNewVolume == NULL) { returnValue = CONSUMPTION_NULL_PARAMS; LOG_EXT(LEVEL_ERROR, "Invalid parameters (error code 0x" << hex << (short)returnValue << ")."); return returnValue; } if (!m_bInitialized) { returnValue = HW_NOT_INITIALIZED; LOG_EXT(LEVEL_ERROR, "Hardware not initialized (error code 0x" << hex << (short)returnValue << ")."); return returnValue; } int behaviorReturnValue = GetUpdateConsumptionBehavior(ucCartridgeNum, uiComsumption, uiNewVolume); LOG_EXT(LEVEL_INFO, "Cartridge #" << (unsigned short)ucCartridgeNum << " material consumption started..."); if (!IsCartridgeOn(ucCartridgeNum, m_authenticated) || behaviorReturnValue == CARTRIDGE_NOT_AUTHENTICATED) { returnValue = CARTRIDGE_NOT_AUTHENTICATED; LOG_EXT(LEVEL_ERROR, "Cartridge #"<< (unsigned short)ucCartridgeNum << " not authenticated (error code 0x" << hex << (short)returnValue << ")."); return returnValue; } LOG_EXT(LEVEL_INFO, "Switching to cartridge #"<< (unsigned short)ucCartridgeNum << "..."); if (((m_behavior != NULL) && !IsCartridgeOn(ucCartridgeNum, m_behavior->Status)) || behaviorReturnValue == FCB_SELECT_CHANNEL_FAILED) { returnValue = FCB_SELECT_CHANNEL_FAILED; LOG_EXT(LEVEL_ERROR, "Error switching to cartridge #"<< (unsigned short)ucCartridgeNum << " (error code 0x" << hex << (short)returnValue << ")."); return returnValue; } LOG_EXT(LEVEL_INFO, "Getting current volume..."); returnValue = ReadCounter(ucCartridgeNum, uiNewVolume); if (returnValue != IDTLIB_SUCCESS) { if (returnValue == INVALID_VOLUME_SIGNATURE || behaviorReturnValue == INVALID_VOLUME_SIGNATURE) { LOG_EXT(LEVEL_ERROR, "Error verifying signature (error code 0x" << hex << (short)returnValue << ")."); } else { LOG_EXT(LEVEL_ERROR, "Error reading counter (error code 0x" << hex << (short)returnValue << ")."); } return returnValue; } if (*uiNewVolume < uiComsumption || behaviorReturnValue == MATERIAL_OVERCONSUMPTION) { returnValue = MATERIAL_OVERCONSUMPTION; LOG_EXT(LEVEL_ERROR, "Invalid consumption (error code 0x" << hex << (short)returnValue << ")."); return returnValue; } returnValue = behaviorReturnValue; if (returnValue == IDTLIB_SUCCESS) { LOG_EXT(LEVEL_INFO, "Decreasing volume by " << uiComsumption << "..."); *uiNewVolume -= uiComsumption; WriteCounter(ucCartridgeNum, *uiNewVolume); LOG_EXT(LEVEL_INFO, "Cartridge #" << (unsigned short)ucCartridgeNum << " material consumption ended successfully. Current volume: " << *uiNewVolume << "."); } else { LOG_EXT(LEVEL_ERROR, "Error updating consumption (error code 0x" << hex << (short)returnValue << ")."); } return returnValue; } catch (exception& e) { LOG_EXT(LEVEL_ERROR, "Exception caught: " << e.what() << "."); return EXCEPTION_CAUGHT; } }