| 
 | 
  1 #ifndef _LOG_H_3 ^% `) C  X+ I8 a) Z 
  2 #define _LOG_H_) l! G. B- L7 m3 b+ w4 I7 Y 
  3 6 K$ ?; h: e9 Y 
  4 /* 0: printf; 1: UART1 */ 
, E, }2 i, T! n7 V  5 #define OUTPUT_TO_UART1 1 
$ o, H, @$ f- ^9 h+ y, `8 m8 n  6  
% k; t$ b1 h' P: p; w  7 /* Switch Log Output */ 
1 O+ x  K6 L2 E/ C# R  8 #if OUTPUT_TO_UART1 
, }: f' w8 z% T4 b2 k) V5 v  9     /* For UART1 Initial */ 
8 e2 d  j* x- ?( w) c6 W. N 10     #include <stdlib.h> 
8 H% W9 w% [! p# } 11     #include "hw_types.h"   
/ ~; H" a  I! g7 |- w 12     #include "hw_syscfg0_C6748.h"9 f4 [, r$ v" M2 b( L/ q 
 13     #include "soc_C6748.h" 
6 }1 Q  u; }& Y" N' O% T1 W 14     #include "psc.h"                
/ h& y0 p  k7 e) u 15     #include "gpio.h"               , g: |: p1 m$ m9 ~; q9 a- n* L0 O 
 16     #include "uart.h"- {) M! v6 X. @- d! Z; T 
 17     #include "uartStdio.h"5 m! |4 ?+ \3 o+ Z+ ^. G; ` 
 18  
  f1 j; a9 {# c8 N7 k 19     #define OUTPUT UARTprintf7 a  m0 `* ]1 C. E 
 20 #else 
2 [: b* I" j9 s/ l( | 21     #include <stdio.h> 
+ I5 [* j+ W, @ 22     #include <stdbool.h> 
8 T, @( I. X' X( M7 C$ G 23  
4 a5 Q6 Y% o6 t' j 24     #define OUTPUT printf- s1 U( E/ p- A. D2 w 
 25 #endif) I7 {& i) N/ | 
 26 9 Z( w4 r  o' ]# O9 j 
 27 /* Log init */ 
; |9 f( c+ r' s  c# y! w6 e3 n 28 #if OUTPUT_TO_UART1 
( A2 N7 V: x% i1 |9 u' y 29     #define LOG_INIT() do {                                     \8 G' t$ ^8 k( t- [) ^- l9 g# F 
 30         PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO,           \$ B# ?+ R5 H* | 
 31                          PSC_POWERDOMAIN_ALWAYS_ON,             \ 
' B$ n# w. y3 `) V& I: { 32                          PSC_MDCTL_NEXT_ENABLE);                \ 
9 w! X+ l/ S: X5 r, a4 r3 n 33         GPIOBank6Pin12PinMuxSetup();                            \  W8 A) q5 K  v" b" ?7 p 
 34         GPIOBank6Pin13PinMuxSetup();                            \ 
. |% x# n. v1 H6 f* W; ]8 C" B6 M" Y 35         GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  \ 
' D1 p+ U0 \; E& W 36         GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  \3 g; S( p) ]9 ?4 K/ L- M& G6 y 
 37         UARTStdioInit();                                        \ 
# e8 X! m" q$ b: _1 u- R+ J 38     } while (0) 
0 J6 Z% u; c  J( Z/ R& o6 I 39 #else$ U% v! G  w# ?+ `7 ^3 J: k9 @ 
 40     #define LOG_INIT() do { } while (0) 
- M0 C% m  E3 M; _, g  j! J 41 #endif 
+ ]9 m+ P/ K- K3 d! w7 R 42 ! g) d! l" N8 u, K 
 43 /* Log Output */ 
! u2 k* i7 r  c 44 #define LOG_INFO(format, ...)      \0 }: L% `% ]1 X* p, a 
 45     do {                           \2 ?* v( r- \! ~' B; [* y 
 46         OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \ 
7 Y0 }* ]6 K: \! [ 47     } while (0) 
& \2 j3 V+ e  y/ T 48 8 R- n' T$ a  x 
 49 #define LOG_ERROR(format, ...)     \ 
, N4 n. @$ a' D, m5 h 50     do {                           \ 
5 k- s' h$ w: o. I 51         OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \$ y1 T6 ]/ M; @# U2 n 
 52     } while (0) 
2 D3 F# r2 u( w5 x" r 53 5 o- z! H0 _- B: Z/ M 
 54 #define LOG_DEBUG(format, ...)     \ 
! b9 N  y0 s$ Y) C$ |2 k3 ^ 55     do {                           \ 
; U+ V, h4 D) @ 56         OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \ 
1 b$ y: {8 I1 r 57     } while (0)) Y% |$ {! M2 H* h+ ]4 {! t 
 58 + \. p4 l1 O9 k 
 59 #define LOG_WARN(format, ...)      \ 
+ Z# L+ k* V9 R8 A 60     do {                           \ 
1 c) b* m( d) @5 E5 ` 61         OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \ 
9 E( q, \6 y: O5 X9 [ 62     } while (0)( ^) W  e( z3 `; Y7 W6 t! | 
 63  
, X7 o* n+ \+ v$ e" |7 Z# s$ z 64 #define LOG_TRACE(format, ...)     \ 
+ T5 T" Z  W' t( E3 N8 W 65     do {                           \' C. o2 w! N! G 
 66         OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \8 [/ L: k1 H* N" A9 D8 Z" C2 l& A' q 
 67     } while (0)+ u0 z3 i' Z+ P' g! b 
 68  
! s7 J6 e6 J- f" ]* d7 ], \ 69 #define LOG_FATAL(format, ...)     \ 
/ o0 r+ ^# i6 `% F6 \, k9 n 70     do {                           \ 
4 m1 \* Q, u4 O* U/ w& @7 ~ 71         OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \0 g7 `2 w- [; Z7 l/ |3 `5 t9 T 
 72         exit(1);                   \' m! E8 O: D7 W% d" b% U 
 73     } while (0)- F5 a' V. v& M( \) O 
 74 6 @6 _( ?& w+ k' P# j 
 75 /* Assert */ 
! v7 J% M7 M  z5 H- B2 A0 k 76 #define ASSERT(EXP)                \' G9 w2 P: ^! E/ X% c- b 
 77     do{                            \6 \( u( u' b) d& m* v 
 78         if (!(EXP)) {              \# Z# G: l7 H5 L 
 79             OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ );                  \4 q+ \/ v0 J9 y! [" I1 |; @% K& B 
 80             exit(1);               \- t. K8 ?; O* q- u9 X 
 81         }                          \ 
9 G2 O" e7 S& N! f0 y 82     } while(0)1 k/ L; L+ F- ]; B 
 83 ( c( Z3 s  o1 E2 E' P! V8 P 
 84 #endif/ @7 H* u) W2 h/ g2 V3 t) { 
 |   
 
 
 
 |