13 #include "NetworkCommunication/FRCComm.h"
16 bool Error::m_stackTraceEnabled =
false;
17 bool Error::m_suspendOnErrorEnabled =
false;
22 , m_originatingObject(NULL)
29 void Error::Clone(
Error &error)
31 m_code = error.m_code;
32 m_message = error.m_message;
33 m_filename = error.m_filename;
34 m_function = error.m_function;
35 m_lineNumber = error.m_lineNumber;
36 m_originatingObject = error.m_originatingObject;
37 m_timestamp = error.m_timestamp;
40 Error::Code Error::GetCode()
const
43 const char * Error::GetMessage()
const
44 {
return m_message.c_str(); }
46 const char * Error::GetFilename()
const
47 {
return m_filename.c_str(); }
49 const char * Error::GetFunction()
const
50 {
return m_function.c_str(); }
52 uint32_t Error::GetLineNumber()
const
53 {
return m_lineNumber; }
55 const ErrorBase* Error::GetOriginatingObject()
const
56 {
return m_originatingObject; }
58 double Error::GetTime()
const
59 {
return m_timestamp; }
61 void Error::Set(Code code,
const char* contextMessage,
const char* filename,
const char*
function, uint32_t lineNumber,
const ErrorBase* originatingObject)
64 m_message = contextMessage;
65 m_filename = filename;
66 m_function =
function;
67 m_lineNumber = lineNumber;
68 m_originatingObject = originatingObject;
69 m_timestamp = GetTime();
73 if (m_suspendOnErrorEnabled) taskSuspend(0);
79 char *error =
new char[256];
80 char *error_with_code =
new char[256];
85 snprintf(error, 256,
"%s: status = %d (0x%08X) %s ...in %s() in %s at line %d\n",
86 m_code < 0 ?
"ERROR" :
"WARNING", (int32_t)m_code, (uint32_t)m_code, m_message.c_str(),
87 m_function.c_str(), m_filename.c_str(), m_lineNumber);
88 sprintf(error_with_code,
"<Code>%ld %s", (int32_t)m_code, error);
90 snprintf(error, 256,
"ERROR: %s ...in %s() in %s at line %d\n", m_message.c_str(),
91 m_function.c_str(), m_filename.c_str(), m_lineNumber);
92 strcpy(error_with_code, error);
97 setErrorData(error_with_code, strlen(error_with_code), 100);
99 delete [] error_with_code;
102 printf(
"\n\n>>>>%s", error);
106 if (m_stackTraceEnabled)
108 printf(
"-----------<Stack Trace>----------------\n");
120 m_originatingObject = NULL;