|
|
1 #ifndef _LOG_H_
/ B- Y+ Z( a4 g 2 #define _LOG_H_1 w7 ]' }4 U: S% O
3
2 C7 N% W, W ~4 }- V 4 /* 0: printf; 1: UART1 */
9 Q2 _# C, K+ u/ _ 5 #define OUTPUT_TO_UART1 18 N. T1 r8 \$ A6 x& A. k
6 & p' C, s/ u a
7 /* Switch Log Output */
! t, @% o0 c7 ]3 |' G6 O 8 #if OUTPUT_TO_UART1- f/ B- n4 l; L" L" x8 r3 q
9 /* For UART1 Initial */ h: j8 K2 X. n) | i* a' Z- P0 f
10 #include <stdlib.h>
# W$ @3 Q9 D( ]% x/ ~# L 11 #include "hw_types.h"
7 L0 O5 F, s, |# C; H7 R0 w 12 #include "hw_syscfg0_C6748.h"
3 e( r6 U* _2 C0 a4 Y# v! w 13 #include "soc_C6748.h"+ e( d6 s' \ t- X
14 #include "psc.h" 6 u4 P. `! n5 ` [' ~) L
15 #include "gpio.h" . }7 h8 X) D9 N% `! S. \/ }
16 #include "uart.h"2 E. J4 D8 x4 ?0 B! B
17 #include "uartStdio.h"! L7 K' X) H' N9 d: v
18
. E- _) O7 `- Z( H 19 #define OUTPUT UARTprintf6 j! t u( [ ]! |
20 #else
) H) v" u7 r, Q1 D" r. T1 l& ? 21 #include <stdio.h>$ W5 ?+ K2 P* ]/ G9 |' _1 Q, R; X
22 #include <stdbool.h>' r, R) f1 L% l4 O; _) i/ ?
23
: _0 M1 {. U* d5 H; z, U f 24 #define OUTPUT printf
. v1 t9 w+ {- I" w 25 #endif% d5 c& R3 h0 o
26 ; y# ]0 J& B. N- c
27 /* Log init */
* k' U# I' r( H R 28 #if OUTPUT_TO_UART1
7 h; N. Z" R3 q+ `2 { 29 #define LOG_INIT() do { \
: S6 Q4 w. U# X 30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \% E% K4 Y' q% r* O! @) M
31 PSC_POWERDOMAIN_ALWAYS_ON, \
: h* D: {5 C- a# O4 G! w: Z% b 32 PSC_MDCTL_NEXT_ENABLE); \' a5 G E ~% J- n! C
33 GPIOBank6Pin12PinMuxSetup(); \0 {9 E0 A6 j" D' k1 O" a
34 GPIOBank6Pin13PinMuxSetup(); \
5 R: S; D- Y8 J% {1 U 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \
) M- q/ {4 D. ^* Z 36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \, ~' C- q1 s* b
37 UARTStdioInit(); \
$ F/ C9 h7 s6 k 38 } while (0)" U( A W& V$ N! U+ \; P8 T
39 #else
6 a. G! W+ Z0 Q. X3 P2 l& M0 X: y 40 #define LOG_INIT() do { } while (0)
- X/ p+ }3 [1 F' S 41 #endif
8 E- J7 A/ _ r, U- G( g! { 42
/ c! @+ s5 u7 A7 e6 J 43 /* Log Output */
) e, z& i3 M; Z1 |1 k 44 #define LOG_INFO(format, ...) \
: E k1 ~0 H8 i9 o5 p 45 do { \! E7 I+ f- O( F2 E# S* E# ^
46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \5 T2 a% u* _4 p$ p
47 } while (0)
$ e; C; g% g) Q& w9 i9 x9 s" Z 48
, W5 @6 e' u) g! P ~+ j+ M 49 #define LOG_ERROR(format, ...) \) G8 w% H9 V; S! m
50 do { \
4 `7 R4 e; K! @! W 51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
. a" i) D# L% Q 52 } while (0)6 t1 ?! X/ |$ n1 E7 R" f, |/ M
53 ; x8 y9 u8 U1 D+ L
54 #define LOG_DEBUG(format, ...) \8 I1 [2 j0 W3 f
55 do { \( ?4 T5 ?% w e5 P; S
56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \9 J. y/ @# t! J; n$ I. c' \
57 } while (0)1 ]5 B- a1 X8 T) B! ^& Q3 M+ b) q
58 ( x% t1 O7 O( m! P1 r& \
59 #define LOG_WARN(format, ...) \
6 ~: u. F$ m6 X8 d( h 60 do { \6 s- R* A U$ Z( m: S6 Z. W! K+ [
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \ z# g3 Z! B3 m8 d% }0 @* y
62 } while (0)* \1 V8 ^' _" U0 {
63 % L: e5 K2 m0 o( W E
64 #define LOG_TRACE(format, ...) \, z' [* Z1 a8 t7 F
65 do { \
9 \; A8 B3 a/ N9 b( A5 f) M7 e 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \7 R& N& G. O8 n& ]. v$ t, D& ]
67 } while (0)- ?- c0 O/ o5 P' E7 r
68
. W& O4 f- M' E; v5 h9 H 69 #define LOG_FATAL(format, ...) \# y, Y; x6 p% E; a) @) F/ ~
70 do { \
3 ^8 T6 G* L; l 71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
5 V: O$ q& Z7 ? 72 exit(1); \4 B: Q, z9 X$ ?
73 } while (0)( U. F* x0 s5 H6 o. n
74 ' D! o O7 X- C1 U! H
75 /* Assert */
' b% g- d# J9 l' P! T/ G' p2 N" s 76 #define ASSERT(EXP) \
+ ? N" Y6 G. y) w* t 77 do{ \
5 L2 K$ u# |) ] F% U2 q2 g 78 if (!(EXP)) { \
) [3 B0 T; j. Q5 @ X3 A5 \* W 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \2 `3 `' u0 M3 r& [ ^+ j
80 exit(1); \; C5 d! q- ^+ U5 Y
81 } \
$ b/ Q! V& B* N 82 } while(0)$ b4 n2 p1 p* O& c& e4 s6 `
83
. u6 r7 V& w0 P# G: a 84 #endif- R! O. s, S$ B# O7 z/ S
|
|