williamr@4: /* williamr@4: * Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@4: * williamr@4: * Contributors: williamr@4: * williamr@4: * Description: williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: williamr@4: #ifndef __TFLOGGER_H__ williamr@4: #define __TFLOGGER_H__ williamr@4: williamr@4: // CONSTANTS williamr@4: #ifndef _DEBUG williamr@4: williamr@4: // UREL BUILD: williamr@4: #define TF_LOGGING_METHOD 0 // No logging in UREL builds williamr@4: williamr@4: #else williamr@4: williamr@4: // UDEB BUILD: williamr@4: #define TF_LOGGING_METHOD 3 // 0 = No logging, williamr@4: // 1 = Flogger, williamr@4: // 2 = RDebug williamr@4: // 3 = CommsDebug williamr@4: #endif williamr@4: williamr@4: williamr@4: #if TF_LOGGING_METHOD > 0 williamr@4: #define TF_LOGGING_ENABLED // This is for backward compatibility williamr@4: #endif williamr@4: williamr@4: // FUNCTION PROTOTYPES williamr@4: #if TF_LOGGING_METHOD == 1 // Flogger williamr@4: williamr@4: #include williamr@4: _LIT(KTfLogFolder,"TF"); williamr@4: _LIT(KTfLogFile,"TFLOG.TXT"); williamr@4: williamr@4: #elif TF_LOGGING_METHOD == 2 // RDebug williamr@4: williamr@4: #include williamr@4: williamr@4: #elif TF_LOGGING_METHOD == 3 // CommsDebug williamr@4: williamr@4: #include williamr@4: williamr@4: #endif williamr@4: williamr@4: williamr@4: /* williamr@4: ----------------------------------------------------------------------------- williamr@4: williamr@4: LOGGING MACROs williamr@4: williamr@4: USE THESE MACROS IN YOUR CODE ! williamr@4: williamr@4: ----------------------------------------------------------------------------- williamr@4: */ williamr@4: williamr@4: #if TF_LOGGING_METHOD == 1 // Flogger williamr@4: williamr@4: #define TFLOGTEXT(AAA) RFileLogger::Write(KTfLogFolder(),KTfLogFile(),EFileLoggingModeAppend, AAA) williamr@4: #define TFLOGSTRING(AAA) /*lint --e{717}, --e{1534} */ do { _LIT(tempLogDes,AAA); RFileLogger::Write(KTfLogFolder(),KTfLogFile(),EFileLoggingModeAppend,tempLogDes()); } while (0) williamr@4: #define TFLOGSTRING2(AAA,BBB) /*lint --e{717}, --e{1534} */ do { _LIT(tempLogDes,AAA); RFileLogger::WriteFormat(KTfLogFolder(),KTfLogFile(),EFileLoggingModeAppend,TRefByValue(tempLogDes()),BBB); } while (0) williamr@4: #define TFLOGSTRING3(AAA,BBB,CCC) /*lint --e{717}, --e{1534} */ do { _LIT(tempLogDes,AAA); RFileLogger::WriteFormat(KTfLogFolder(),KTfLogFile(),EFileLoggingModeAppend,TRefByValue(tempLogDes()),BBB,CCC); } while (0) williamr@4: #define TFLOGSTRING4(AAA,BBB,CCC,DDD) /*lint --e{717}, --e{1534} */ do { _LIT(tempLogDes,AAA); RFileLogger::WriteFormat(KTfLogFolder(),KTfLogFile(),EFileLoggingModeAppend,TRefByValue(tempLogDes()),BBB,CCC,DDD); } while (0) williamr@4: williamr@4: williamr@4: #elif TF_LOGGING_METHOD == 2 // RDebug williamr@4: williamr@4: #define TFLOGTEXT(AAA) RDebug::Print(AAA) williamr@4: #define TFLOGSTRING(AAA) /*lint --e{717}, --e{1534} */ do { _LIT(tempLogDes,AAA); RDebug::Print(tempLogDes); } while (0) williamr@4: #define TFLOGSTRING2(AAA,BBB) /*lint --e{717}, --e{1534} */ do { _LIT(tempLogDes,AAA); RDebug::Print(tempLogDes, BBB); } while (0) williamr@4: #define TFLOGSTRING3(AAA,BBB,CCC) /*lint --e{717}, --e{1534} */ do { _LIT(tempLogDes,AAA); RDebug::Print(tempLogDes, BBB, CCC); } while (0) williamr@4: #define TFLOGSTRING4(AAA,BBB,CCC,DDD) /*lint --e{717}, --e{1534} */ do { _LIT(tempLogDes,AAA); RDebug::Print(tempLogDes, BBB, CCC, DDD); } while (0) williamr@4: williamr@4: williamr@4: #elif TF_LOGGING_METHOD == 3 // CommsDebug williamr@4: _LIT8(KTSYSubSystem, "tsy"); williamr@4: #ifdef TF_SAT_LOGGING williamr@4: _LIT8(KTSYCompnt, "sattsy"); williamr@4: #else williamr@4: _LIT8(KTSYCompnt, "ctsy"); williamr@4: #endif williamr@4: williamr@4: #define TFLOGTEXT(AAA) __FLOG_STATIC0(KTSYSubSystem,KTrpCompnt,(AAA)) williamr@4: #define TFLOGSTRING(AAA) /*lint --e{717}, --e{1534} */ do { _LIT(tempLogDes,AAA); __FLOG_STATIC0(KTSYSubSystem,KTSYCompnt, tempLogDes); } while (0) williamr@4: #define TFLOGSTRING2(AAA,BBB) /*lint --e{717}, --e{1534} */ do { _LIT(tempLogDes,AAA); __FLOG_STATIC1(KTSYSubSystem,KTSYCompnt, tempLogDes, BBB); } while (0) williamr@4: #define TFLOGSTRING3(AAA,BBB,CCC) /*lint --e{717}, --e{1534} */ do { _LIT(tempLogDes,AAA); __FLOG_STATIC2(KTSYSubSystem,KTSYCompnt, tempLogDes, BBB, CCC); } while (0) williamr@4: #define TFLOGSTRING4(AAA,BBB,CCC,DDD) /*lint --e{717}, --e{1534} */ do { _LIT(tempLogDes,AAA); __FLOG_STATIC3(KTSYSubSystem,KTSYCompnt, tempLogDes, BBB, CCC, DDD); } while (0) williamr@4: williamr@4: #else // TF_LOGGING_METHOD == 0 or invalid williamr@4: williamr@4: #define TFLOGTEXT(AAA) // Example: TFLOGTEXT(own_desc); williamr@4: #define TFLOGSTRING(AAA) // Example: TFLOGSTRING("Test"); williamr@4: #define TFLOGSTRING2(AAA,BBB) // Example: TFLOGSTRING("Test %i", aValue); williamr@4: #define TFLOGSTRING3(AAA,BBB,CCC) // Example: TFLOGSTRING("Test %i %i", aValue1, aValue2); williamr@4: #define TFLOGSTRING4(AAA,BBB,CCC,DDD) // Example: TFLOGSTRING("Test %i %i %i", aValue1, aValue2, aValue3); williamr@4: williamr@4: #endif // TF_LOGGING_METHOD williamr@4: williamr@4: #if TF_LOGGING_METHOD == 1 || TF_LOGGING_METHOD == 2 williamr@4: williamr@4: // Note, #x and __FILE__ must be stored to char string first, making them 16bit williamr@4: // strings with _LIT will not work in all compilers. williamr@4: williamr@4: #define TF_ASSERT(x) /*lint --e{717} */ do { if (!(x)) { const TUint8 tempX8[] = #x; \ williamr@4: TBuf tempX; \ williamr@4: tempX.Copy(TPtrC8(tempX8)); const TUint8 tempF8[] = __FILE__; TBuf tempF;\ williamr@4: tempF.Copy(TPtrC8(tempF8)); \ williamr@4: TFLOGSTRING4("TSY: ASSERT FAILED: %S, file %S, line %d", &tempX, &tempF, __LINE__ ); } } while(0) williamr@4: williamr@4: #define TF_ASSERT_NOT_REACHED() /*lint --e{717} */ do { const TUint8 tempF8[] = __FILE__;\ williamr@4: TBuf tempF; tempF.Copy(TPtrC8(tempF8));\ williamr@4: TFLOGSTRING3("TSY: ASSERT FAILED: unreachable code, file %S, line %d", &tempF, __LINE__ ); } while (0) williamr@4: williamr@4: #else // TF_LOGGING_METHOD == 0 or invalid williamr@4: williamr@4: #define TF_ASSERT(x) williamr@4: #define TF_ASSERT_NOT_REACHED() williamr@4: williamr@4: #endif // TF_LOGGING_METHOD == 1 || TF_LOGGING_METHOD == 2 williamr@4: williamr@4: williamr@4: #endif // __TFLOGGER_H__ williamr@4: williamr@4: // End of File