xyControl
0.1
Quadrotor Flight Controller on AVR Basis
Main Page
Modules
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Groups
include
debug.h
Go to the documentation of this file.
1
/*
2
* debug.h
3
*
4
* Copyright (c) 2013, Thomas Buck <xythobuz@me.com>
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
*
11
* - Redistributions of source code must retain the above copyright notice,
12
* this list of conditions and the following disclaimer.
13
*
14
* - Redistributions in binary form must reproduce the above copyright
15
* notice, this list of conditions and the following disclaimer in the
16
* documentation and/or other materials provided with the distribution.
17
*
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
22
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
*/
30
#ifndef _debug_h
31
#define _debug_h
32
33
#include <avr/wdt.h>
34
#include <
serial.h
>
35
#include <stdio.h>
36
64
#define DEBUGOUT(x) printf("!%s\n", x)
67
#define ASSERTFUNC(x) ({ \
68
if (!(x)) { \
69
if (DEBUG != 0) { \
70
printf("\nError: %s:%i in %s(): Assert '%s' failed!\n", __FILE__, __LINE__, __func__, #x); \
71
wdt_enable(WDTO_1S); \
72
while (!serialTxBufferEmpty()) \
73
wdt_reset(); \
74
while(1); \
75
} else { \
76
wdt_enable(WDTO_15MS); \
77
while(1); \
78
} \
79
} \
80
})
81
82
// Macro Magic
83
// Controls Debug Output with DEBUG definition.
84
// Define DEBUG before including this file!
85
// Disables all debug output if NODEBUG is defined
86
87
#ifndef NODEBUG
88
#define assert(x) ASSERTFUNC(x)
89
#else
90
#define assert(ignore)
91
#endif
92
93
#if (!(defined(NODEBUG))) && (DEBUG >= 1)
94
#define debugPrint(x) DEBUGOUT(x)
95
#else
96
#define debugPrint(ignore)
97
#endif
98
99
#endif // _DEBUG_H
100
Generated by
1.8.3.1