| 
 | 
  1 #ifndef _LOG_H_; z4 ?+ J* |" o. y7 R 
  2 #define _LOG_H_6 P9 U! o# U" F: ~* p 
  3  
) f2 z) o7 G" Q/ d  4 /* 0: printf; 1: UART1 */) R  X$ F  B3 k1 H$ c7 n7 I 
  5 #define OUTPUT_TO_UART1 1 
! Y  I) ^: Q7 d- f# B  6 % C! i' D4 p" h. w& l3 H 
  7 /* Switch Log Output */, B* f  n% ?3 ^9 X6 E( X 
  8 #if OUTPUT_TO_UART1 
* x3 ^3 k- y/ |& s  9     /* For UART1 Initial */& v. ~& ?5 x" ?0 K, P* p 
 10     #include <stdlib.h> 
) U4 a! @( v7 K1 o 11     #include "hw_types.h"   
0 L( S2 U' R3 e$ C! B9 v/ \ 12     #include "hw_syscfg0_C6748.h"# K' K3 x/ F8 H 
 13     #include "soc_C6748.h" 
8 D- a$ K  y3 ]  N1 J+ d( b2 ~ 14     #include "psc.h"                
" M& r) w+ S4 G0 Y# U 15     #include "gpio.h"                
5 E! H" h, i6 k: K9 c  [% x 16     #include "uart.h": o: O! u( Y; i' K! v! A+ v 
 17     #include "uartStdio.h"/ B- g* P: _: M2 O9 ~ 
 18 1 C1 g' l: i  D* k4 l 
 19     #define OUTPUT UARTprintf 
% s4 c, y/ d. v! |& g 20 #else; V" m6 I) B  s 
 21     #include <stdio.h>/ K* S8 b/ W$ o- }' } 
 22     #include <stdbool.h> 
4 a5 w9 |% W" K2 Y& D5 Z 23  
6 m3 a% u8 Z2 L 24     #define OUTPUT printf 
1 |6 N9 d( S' v# Q: ] 25 #endif! G) w) {# @* O" U$ ^ 
 26  
$ D% q, Y7 T" Z: I( g+ F 27 /* Log init */7 ]/ W1 O: F1 ]5 ] 
 28 #if OUTPUT_TO_UART1 
7 `% J  b! `8 f% e' m 29     #define LOG_INIT() do {                                     \$ N& w1 s/ |# `0 b0 ~; D 
 30         PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO,           \ 
# l4 W; j* y2 b, ? 31                          PSC_POWERDOMAIN_ALWAYS_ON,             \! |) i' \. w8 S; X( G6 O 
 32                          PSC_MDCTL_NEXT_ENABLE);                \ 
5 U1 S/ J/ S1 X, o: b/ I 33         GPIOBank6Pin12PinMuxSetup();                            \ 
+ ^# c0 p6 W% X& W) r0 ^ 34         GPIOBank6Pin13PinMuxSetup();                            \ 
/ u' c8 w  G0 O4 i5 o1 f6 w5 q0 @ 35         GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  \: O4 v% z/ f% I; e5 B' m# | 
 36         GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  \& `0 h1 [8 w" K% p$ R7 d* I9 e 
 37         UARTStdioInit();                                        \. U* h0 G& D* n 
 38     } while (0)) Y: U8 d( C0 w- p 
 39 #else 
. P. m: j6 Q2 n5 X. D& y2 p 40     #define LOG_INIT() do { } while (0)3 A+ ]7 \6 s% P 
 41 #endif$ c) {& J3 w5 v- s# p9 h2 A 
 42 / y$ H% r) W+ b1 H" R3 K 
 43 /* Log Output */1 W% R0 ~) {# G$ Q" o 
 44 #define LOG_INFO(format, ...)      \ 
& R' M. ?& b9 V+ N4 V. o. a: b 45     do {                           \" z0 J" I9 }+ x- H 
 46         OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \, N2 N$ z* Y( X: }0 K4 K 
 47     } while (0) 
  h2 F* Y! U5 J1 @ 48  
0 V# Y( o: ~/ R" ~0 \3 g, y: H 49 #define LOG_ERROR(format, ...)     \/ J4 H. R7 |- ]7 J$ h. e5 o# } 
 50     do {                           \ 
/ w+ m) Q6 e6 ^0 c" z2 G 51         OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \' v9 H3 u4 i( |# U) \5 {' e 
 52     } while (0) 
+ Y( v# ~( h* l, a 53 ! u$ r$ v! v! V$ S# B; Z( X 
 54 #define LOG_DEBUG(format, ...)     \ 
' w  C* m+ F/ F 55     do {                           \8 V8 z9 P& W" }- w% p 
 56         OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \& h9 E& C+ M  O) v; f 
 57     } while (0)* l6 r% F6 e- u! ]5 | 
 58 + \8 b0 }; i3 W; ]* S9 V 
 59 #define LOG_WARN(format, ...)      \ 
7 X1 |9 r0 X; ^: Y9 X8 z 60     do {                           \ 
% [# g5 ]+ @1 r8 H( M 61         OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \+ p+ X2 i+ k' |8 T' ^3 j 
 62     } while (0)0 Y3 j0 i& A+ A3 ^ 
 63  
( A* M8 e1 D2 E' [5 [/ I# x 64 #define LOG_TRACE(format, ...)     \ 
# t( Z  J, r8 z0 m 65     do {                           \ 
, ~  j" z/ U* v  t 66         OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \& Z% c# s" L2 o/ o 
 67     } while (0)6 O+ R3 D7 S# B% O0 s# [( c2 } 
 68  
8 N/ h- G7 E' u6 E! ?0 {1 ` 69 #define LOG_FATAL(format, ...)     \$ W7 f7 M. T/ b3 J. m 
 70     do {                           \ 
7 O" G5 \  e( q# _/ B 71         OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \& {3 M0 u0 l& Y6 I. L- V' I 
 72         exit(1);                   \ 
! h6 v. v! |0 u2 o) T6 [. u* o# s 73     } while (0)# C( ?$ A% Y/ N 
 74 1 b8 K+ w. H$ c* _) W1 w0 Z/ i( u 
 75 /* Assert */7 q  P6 e# y8 B 
 76 #define ASSERT(EXP)                \  z6 [* y, Z0 J$ s- H) y 
 77     do{                            \. e! e" @1 n( _ 
 78         if (!(EXP)) {              \* X  x# g( s: h( v  C: j 
 79             OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ );                  \ 
% z5 Q( o6 \6 R7 f" F- b 80             exit(1);               \3 \7 O" w6 z* E+ @3 S3 z0 q 
 81         }                          \" E$ w" Y/ W7 |8 J! R  B 
 82     } while(0) 
& A" T5 s% }7 ~ 83  
' V' H* V! Q+ r; v$ ]1 t 84 #endif 
. p; Q/ m; N) G  L( r6 W |   
 
 
 
 |