summaryrefslogtreecommitdiff
path: root/FreeRTOS-Plus/Test/CMock/vendor/c_exception/test/support/CExceptionConfig.h
diff options
context:
space:
mode:
Diffstat (limited to 'FreeRTOS-Plus/Test/CMock/vendor/c_exception/test/support/CExceptionConfig.h')
-rw-r--r--FreeRTOS-Plus/Test/CMock/vendor/c_exception/test/support/CExceptionConfig.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/FreeRTOS-Plus/Test/CMock/vendor/c_exception/test/support/CExceptionConfig.h b/FreeRTOS-Plus/Test/CMock/vendor/c_exception/test/support/CExceptionConfig.h
new file mode 100644
index 000000000..66cb87e7b
--- /dev/null
+++ b/FreeRTOS-Plus/Test/CMock/vendor/c_exception/test/support/CExceptionConfig.h
@@ -0,0 +1,46 @@
+#ifndef _EXCEPTION_H
+#define _EXCEPTION_H
+
+#include "unity.h"
+
+extern volatile int TestingTheFallback;
+extern volatile int TestingTheFallbackId;
+
+//Optionally define the exception type (something like an int which can be directly assigned)
+#define CEXCEPTION_T int
+
+// Optionally define the reserved value representing NO EXCEPTION
+#define CEXCEPTION_NONE (1234)
+
+// Optionally define a special handler for unhandled exceptions
+#define CEXCEPTION_NO_CATCH_HANDLER(id) \
+{ \
+ if (!TestingTheFallback) \
+ { \
+ TEST_FAIL_MESSAGE("Unexpected Exception!"); \
+ } \
+ else \
+ { \
+ TestingTheFallbackId = id; \
+ TestingTheFallback--; \
+ } \
+}
+
+// Multi-Tasking environments will need a couple of macros defined to make this library
+// properly handle multiple exception stacks. You will need to include and required
+// definitions, then define the following macros:
+// EXCEPTION_GET_ID - returns the id of the current task indexed 0 to (numtasks - 1)
+// EXCEPTION_NUM_ID - returns the number of tasks that might be returned
+//
+// For example, Quadros might include the following implementation:
+#ifndef TEST
+#include "OSAPI.h"
+#define CEXCEPTION_GET_ID (KS_GetTaskID())
+#define CEXCEPTION_NUM_ID (NTASKS + 1)
+#endif
+
+//This could be a good place to define/include some error ID's:
+#define ERROR_ID_EVERYTHING_IS_BROKEN (0x88)
+#define ERROR_ID_ONLY_THIS_IS_BROKEN (0x77)
+
+#endif // _EXCEPTION_H