blob: 66cb87e7b389cc8160b8df5f33e852497aa527d1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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
|