|  | 
| 1 #ifndef _LOG_H_ / H8 [) {, q$ u, ]+ I1 X  2 #define _LOG_H_" [+ s% r9 H. j9 _! M
 3 ! |, Q6 |1 A) J
 4 /* 0: printf; 1: UART1 */( m2 a" |1 F, e+ G* l
 5 #define OUTPUT_TO_UART1 1
 2 b* o/ h$ g3 {( y3 [  6   d9 O3 O; Z- E( x0 K  r6 |# `  {
 7 /* Switch Log Output */
 . g1 q6 s( u4 l! }& w  8 #if OUTPUT_TO_UART1
 + ]/ c( Q$ J4 T3 J) l  9     /* For UART1 Initial */
 + s) k% V' D1 X 10     #include <stdlib.h>* b! O& j0 |- O, n6 U6 Q
 11     #include "hw_types.h"
 3 j* i4 _# P5 [% b 12     #include "hw_syscfg0_C6748.h"; N6 f5 V- [# C2 B* P
 13     #include "soc_C6748.h"
 4 n" T* i4 l  q- |4 x 14     #include "psc.h"               2 L7 ^. [; T" R
 15     #include "gpio.h"               " U: {7 d  \) M3 R& K& [/ r
 16     #include "uart.h"% G, {" n2 L- x: o7 v# i
 17     #include "uartStdio.h"" O% B/ _5 ]/ s/ ^
 18 8 F! I, D2 {# F
 19     #define OUTPUT UARTprintf
 ) ~/ T+ C. v3 `& ^3 w- x" P, P 20 #else
 5 w5 ^7 \4 ^  `/ l9 e5 b8 e4 F, f 21     #include <stdio.h>
 8 b5 b* U  e8 M3 h# k* k+ ~ 22     #include <stdbool.h>8 C* p  F% q+ n; h9 W
 23 / A/ \3 R( X% u6 g- ^. _0 V( y+ X4 z
 24     #define OUTPUT printf: O" a1 D. Q) K) V
 25 #endif7 r6 u2 f4 W* H6 ]4 V( [  ~8 [; J! O* K
 26
 . R1 ]2 x7 T: T" W 27 /* Log init */3 F0 G+ p* e" R! X
 28 #if OUTPUT_TO_UART1# u$ p) F* G  k( C( ?! c; }+ y
 29     #define LOG_INIT() do {                                     \( Z+ z, z, l" c" G9 X, |
 30         PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO,           \8 N- v2 u8 O: t% d& r2 u6 e
 31                          PSC_POWERDOMAIN_ALWAYS_ON,             \) k6 H# b( s( Y, b; t6 h
 32                          PSC_MDCTL_NEXT_ENABLE);                \0 `4 |7 n  F8 e' h& c$ [% x0 y
 33         GPIOBank6Pin12PinMuxSetup();                            \
 * k) N/ U; Z  v7 M! K 34         GPIOBank6Pin13PinMuxSetup();                            \4 n( ]4 K8 ~! W8 ]# [& M9 v6 B
 35         GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  \0 I! z4 b1 l" c; @' F: D
 36         GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  \/ A& W/ O$ L: N( T6 [
 37         UARTStdioInit();                                        \% z+ Q3 A& t, X1 e5 I7 d0 Y3 q  R
 38     } while (0)* V% L- j% Q6 w- }+ {& R: w& o) Y
 39 #else7 C$ ~* J% M' f1 r/ A: [
 40     #define LOG_INIT() do { } while (0)" M+ O* k. _0 L# a5 B) o2 t
 41 #endif( I) I  ~1 p! q
 42 ; {' a$ j9 x( o' H; U
 43 /* Log Output */
 9 p9 ]! q+ ^* G5 N 44 #define LOG_INFO(format, ...)      \! o4 a* N7 x) x5 d! d! r
 45     do {                           \
 / B3 K) K9 M1 g: c* `- Y 46         OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
 " i$ d5 Q: r/ Q# m; B 47     } while (0)+ E7 Y9 [. l1 {
 48
 6 [; _  U- H. { 49 #define LOG_ERROR(format, ...)     \
 t, h. K8 {$ ^, W0 U 50     do {                           \
 - b% t# u8 f2 L) i 51         OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \9 P) X* P0 S' U6 t
 52     } while (0)
 3 r; p; ^' L3 U: E- B8 ^' { 53 . Y" ?% ]6 w$ z' g+ `; C9 w
 54 #define LOG_DEBUG(format, ...)     \7 Y1 }+ G) ]4 |8 x' V
 55     do {                           \
 3 t7 L; g, n4 { 56         OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \2 k* x* H, N! y: F( L
 57     } while (0)
 + L' c' i' z# [: C" f' i, X 58   h# e1 H  R- N" f
 59 #define LOG_WARN(format, ...)      \
 ) m' B2 F2 K# q 60     do {                           \* F! `/ e; A1 X1 l1 ~7 Q- @4 Z
 61         OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
 4 D+ D: y- [1 V' ^ 62     } while (0)1 o( P/ Q2 |7 J3 H
 63 * l7 \6 b4 s1 }; g3 t
 64 #define LOG_TRACE(format, ...)     \3 J+ ~; O1 F3 n! Y6 K
 65     do {                           \1 U* X8 A% ^7 V/ r1 P
 66         OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \* w9 m5 o$ I: F& ^3 z5 r, z9 P
 67     } while (0)
 3 T; C0 j8 r! u6 G( }0 C6 h 68   P0 z* G  r0 G: S" Q/ ?
 69 #define LOG_FATAL(format, ...)     \6 D* U* e; i$ j
 70     do {                           \
 ( [5 m1 I! U. r, `8 @. F 71         OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \# t4 f5 t; s. i4 _1 H* I
 72         exit(1);                   \
 $ O; n6 \7 f, O* h" O4 z 73     } while (0)5 m" |3 w8 [; D( N& a: C$ Q) U' ^
 74
 ( `# w8 b& u% x 75 /* Assert */- ~: m  b) S: [! p5 K
 76 #define ASSERT(EXP)                \  L- x+ G. }, E( C4 Q  e
 77     do{                            \
 / D" [3 x! A: l4 M9 r* D! v- D8 C0 G 78         if (!(EXP)) {              \
 ' h3 Z9 e) o* M; V 79             OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ );                  \
 4 c& T! s/ x/ e+ U! k0 O5 M 80             exit(1);               \- u0 ]0 }7 C8 |5 i8 c3 ^
 81         }                          \- q( J5 o* K8 I7 j
 82     } while(0)
 ) {* {( E% ^5 }) }6 X 83
 7 B! b7 [1 I  s1 u+ J$ V 84 #endif
 + P+ V% e4 V- j; `+ i% g
 | 
 |