F´ Flight Software - C/C++ Documentation  NASA-v1.6.0
A framework for building embedded system applications to NASA flight quality standards.
LogAssert.cpp
Go to the documentation of this file.
1 /*
2  * LogAssert.cpp
3  *
4  * Created on: Sep 9, 2016
5  * Author: tcanham
6  * Note: this file was originally a log assert file, under Fw::Types. It now made generic
7  * to log asserts to Fw::Logger
8  */
9 
10 #include <Fw/Logger/LogAssert.hpp>
11 #include <Fw/Logger/Logger.hpp>
12 
13 #if FW_ASSERT_LEVEL == FW_NO_ASSERT
14 
15 #else
16 
17 #if FW_ASSERT_LEVEL == FW_FILEID_ASSERT
18 #define fileIdFs "Assert file ID %d: Line: %d "
19 #define ASSERT_CAST static_cast<POINTER_CAST>
20 #else
21 #define fileIdFs "Assert file \"%s\": Line: %d "
22 #define ASSERT_CAST reinterpret_cast<POINTER_CAST>
23 #endif
24 
25 
26 namespace Fw {
27 
29 
30  }
31 
33  }
34 
36  FILE_NAME_ARG file,
37  NATIVE_UINT_TYPE lineNo,
38  NATIVE_UINT_TYPE numArgs,
39  AssertArg arg1,
40  AssertArg arg2,
41  AssertArg arg3,
42  AssertArg arg4,
43  AssertArg arg5,
44  AssertArg arg6
45  ) {
46  // Assumption is that file (when string) goes back to static macro in the code and will persist
47  switch (numArgs) {
48  case 0:
49  Fw::Logger::logMsg(fileIdFs,ASSERT_CAST(file),lineNo,0,0,0,0);
50  break;
51  case 1:
52  Fw::Logger::logMsg(fileIdFs " %d\n",ASSERT_CAST(file),lineNo,arg1,0,0,0);
53  break;
54  case 2:
55  Fw::Logger::logMsg(fileIdFs " %d %d\n",ASSERT_CAST(file),lineNo,arg1,arg2,0,0);
56  break;
57  case 3:
58  Fw::Logger::logMsg(fileIdFs " %d %d %d\n",ASSERT_CAST(file),lineNo,arg1,arg2,arg3,0);
59  break;
60  case 4:
61  Fw::Logger::logMsg(fileIdFs " %d %d %d %d\n",ASSERT_CAST(file),lineNo,arg1,arg2,arg3,arg4);
62  break;
63  default: // can't fit remainder of arguments in log message
64  Fw::Logger::logMsg(fileIdFs " %d %d %d %d +\n",ASSERT_CAST(file),lineNo,arg1,arg2,arg3,arg4);
65  break;
66  }
67 
68  }
69 
70  void LogAssertHook::printAssert(const CHAR* msg) {
71  // do nothing since reportAssert() sends message
72  }
73 
75  }
76 
77 } // namespace Fw
78 
79 #endif
Fw::LogAssertHook::LogAssertHook
LogAssertHook()
Fw::LogAssertHook::~LogAssertHook
virtual ~LogAssertHook()
CHAR
char CHAR
Definition: BasicTypes.hpp:99
NATIVE_UINT_TYPE
unsigned int NATIVE_UINT_TYPE
native unsigned integer type declaration
Definition: BasicTypes.hpp:30
Fw::LogAssertHook::doAssert
void doAssert()
Fw::Logger::logMsg
static void logMsg(const char *fmt, POINTER_CAST a0=0, POINTER_CAST a1=0, POINTER_CAST a2=0, POINTER_CAST a3=0, POINTER_CAST a4=0, POINTER_CAST a5=0, POINTER_CAST a6=0, POINTER_CAST a7=0, POINTER_CAST a8=0, POINTER_CAST a9=0)
Definition: Logger.cpp:18
Fw::LogAssertHook::printAssert
void printAssert(const CHAR *msg)
Fw::LogAssertHook::reportAssert
void reportAssert(FILE_NAME_ARG file, NATIVE_UINT_TYPE lineNo, NATIVE_UINT_TYPE numArgs, AssertArg arg1, AssertArg arg2, AssertArg arg3, AssertArg arg4, AssertArg arg5, AssertArg arg6)
AssertArg
#define AssertArg
Definition: FpConfig.hpp:47
Logger.hpp
Fw
Definition: Buffer.cpp:21
LogAssert.hpp