/** * Common error routines for wpi_assertEqual_impl and wpi_assertNotEqual_impl * This should not be called directly; it should only be used by wpi_assertEqual_impl * and wpi_assertNotEqual_impl. */ void wpi_assertEqual_common_impl(int valueA, int valueB, const char *equalityType, const char *message, const char *fileName, UINT32 lineNumber, const char *funcName) { // Error string buffer char error[256]; // If an error message was specified, include it // Build error string if(message != NULL) { sprintf(error, "Assertion failed: \"%s\", \"%d\" %s \"%d\" in %s() in %s at line %d\n", message, valueA, equalityType, valueB, funcName, fileName, lineNumber); } else { sprintf(error, "Assertion failed: \"%d\" %s \"%d\" in %s() in %s at line %d\n", valueA, equalityType, valueB, funcName, fileName, lineNumber); } // Print to console and send to remote dashboard printf("\n\n>>>>%s", error); setErrorData(error, strlen(error), 100); wpi_handleTracing(); if (suspendOnAssertEnabled) taskSuspend(0); }
/** * Assert implementation. * This allows breakpoints to be set on an assert. * The users don't call this, but instead use the wpi_assert macros in Utility.h. */ bool wpi_assert_impl(bool conditionValue, const char *conditionText, const char *message, const char *fileName, UINT32 lineNumber, const char *funcName) { if (!conditionValue) { // Error string buffer char error[256]; // If an error message was specified, include it // Build error string if(message != NULL) { sprintf(error, "Assertion failed: \"%s\", \"%s\" failed in %s() in %s at line %d\n", message, conditionText, funcName, fileName, lineNumber); } else { sprintf(error, "Assertion failed: \"%s\" in %s() in %s at line %d\n", conditionText, funcName, fileName, lineNumber); } // Print to console and send to remote dashboard printf("\n\n>>>>%s", error); setErrorData(error, strlen(error), 100); wpi_handleTracing(); if (suspendOnAssertEnabled) taskSuspend(0); } return conditionValue; }
void MecanumDrive::CheckForRestartedMotor( CANJaguar& motor, const char * strDescription ) { if ( m_currControlMode != CANJaguar::kSpeed ) // kSpeed is the default { if ( motor.GetPowerCycled() ) { Wait(0.10); // Wait 100 ms InitMotor( motor ); char error[256]; sprintf(error, "\n\n>>>>%s %s", strDescription, "Jaguar Power Cycled - re-initializing"); printf(error); setErrorData(error, strlen(error), 100); } } }
void wpi_fatal_impl(const INT32 statusCode, const char *statusString, const char *fileName, UINT32 lineNumber, const char *funcName) { // Error string buffer char error[256]; // Build error strings sprintf(error, "Fatal error \"%s\" in %s() in %s at line %d\n", statusString, funcName, fileName, lineNumber); // Print to console and send to remote dashboard printf("\n\n>>>>%s", error); setErrorData(error, strlen(error), 100); wpi_handleTracing(); }
/** * Assert status clean implementation. * This allows breakpoints to be set on an assert. * This allows the fatal status to be printed. * The users don't call this, but instead use the wpi_assertCleanStatus macro in Utility.h. */ void wpi_assertCleanStatus_impl(INT32 status, const char *fileName, UINT32 lineNumber, const char *funcName) { if (status != 0) { // Error string buffers char error[256]; char error_with_code[256]; // Build error strings sprintf(error, "%s: status == %d (0x%08X) in %s() in %s at line %d\n", status < 0 ? "ERROR" : "WARNING", status, (UINT32)status, funcName, fileName, lineNumber); sprintf(error_with_code,"<Code>%d %s", status, error); // Print to console and send to remote dashboard printf("\n\n>>>>%s", error); setErrorData(error_with_code, strlen(error_with_code), 100); wpi_handleTracing(); if (suspendOnAssertEnabled) taskSuspend(0); } }
void Error::Report() { // Error string buffers char *error = new char[256]; char *error_with_code = new char[256]; // Build error strings if (m_code != -1) { snprintf(error, 256, "%s: status = %d (0x%08X) %s ...in %s() in %s at line %d\n", m_code < 0 ? "ERROR" : "WARNING", (INT32)m_code, (UINT32)m_code, m_message.c_str(), m_function.c_str(), m_filename.c_str(), m_lineNumber); sprintf(error_with_code,"<Code>%d %s", (INT32)m_code, error); } else { snprintf(error, 256, "ERROR: %s ...in %s() in %s at line %d\n", m_message.c_str(), m_function.c_str(), m_filename.c_str(), m_lineNumber); strcpy(error_with_code, error); } // TODO: Add logging to disk // Send to the DriverStation setErrorData(error_with_code, strlen(error_with_code), 100); delete [] error_with_code; // Print to console printf("\n\n>>>>%s", error); delete [] error; #if ! defined(DISABLE_STACK_TRACE) if (m_stackTraceEnabled) { printf("-----------<Stack Trace>----------------\n"); wpi_selfTrace(); } #endif }
int HALSetErrorData(const char *errors, int errorsLength, int wait_ms) { return setErrorData(errors, errorsLength, wait_ms); }