| 
 | 
  1 #ifndef _LOG_H_ 
8 ?, Y1 ]! m4 h3 J% p; I* X7 i6 F  2 #define _LOG_H_; M2 @  [) @) F) h5 Y$ U: I 
  3   m& Z$ b4 [- P5 }6 H3 G 
  4 /* 0: printf; 1: UART1 */. [4 I9 L2 w( c) n6 {9 H5 k 
  5 #define OUTPUT_TO_UART1 1 
/ x* i" \/ h" o6 Y2 T4 U: q6 J  6  
' S+ r$ I* H2 r. v% q5 k$ J  7 /* Switch Log Output */ 
; S- G# m: J' d' J  8 #if OUTPUT_TO_UART1 
* y% @5 d/ N' p, e5 {  9     /* For UART1 Initial */ 
$ ^( T, z6 Y# ~) v 10     #include <stdlib.h> 
# T9 l4 f7 n6 S( \' A 11     #include "hw_types.h"  " D/ P* [6 a/ B( F% K, w) k 
 12     #include "hw_syscfg0_C6748.h" 
2 [) ^- U- Z/ ~% h7 C. q 13     #include "soc_C6748.h" 
6 g( w2 A9 d! W1 i3 Q 14     #include "psc.h"               1 R. D! \5 e5 Z2 W, Q 
 15     #include "gpio.h"                
" |' X, D$ `" r1 M: q: f 16     #include "uart.h"  f/ C- c8 O) l9 f9 d 
 17     #include "uartStdio.h" 
' O/ e2 P& I; `9 P" { 18  
7 m/ j+ `4 L1 V1 |9 P* P 19     #define OUTPUT UARTprintf5 u/ W* {7 J4 @% p8 A4 s' ^6 u6 a7 O 
 20 #else' F3 i3 ^/ J. O  X7 Y0 \0 G 
 21     #include <stdio.h> 
. q3 A4 U/ y# N2 k- p* t) X 22     #include <stdbool.h>* ~" t+ M0 ]# f( a 
 23  
4 Y" Q, N6 M# } 24     #define OUTPUT printf 
* g$ @; `" s0 H5 |7 U- X 25 #endif 
* ]4 N6 `4 A+ [: G: T 26  
: O$ d" {" B0 I* c4 Z 27 /* Log init */ 
9 J4 o8 C% N, s+ D, N 28 #if OUTPUT_TO_UART1 
( {2 x# [/ `/ K* U 29     #define LOG_INIT() do {                                     \; ?8 x1 z& u7 g" L) M" |3 C& ^ 
 30         PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO,           \' A" W) w8 g% V 
 31                          PSC_POWERDOMAIN_ALWAYS_ON,             \ 
; B/ F/ M- M! d$ ^) i 32                          PSC_MDCTL_NEXT_ENABLE);                \ 
5 ]2 {  [, D" Q- k 33         GPIOBank6Pin12PinMuxSetup();                            \" \' \0 Q9 y$ a, h% R, m 
 34         GPIOBank6Pin13PinMuxSetup();                            \ 
6 J3 L8 z% ^! ~6 d# l4 }0 |+ I) L( l$ _ 35         GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  \, p/ L8 x! W6 A 
 36         GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  \ 
! G7 S- z8 d7 K& g1 p& O8 t2 ~ 37         UARTStdioInit();                                        \ 
9 O9 W1 ~3 h3 K4 ]' V' G 38     } while (0) 
4 ^5 q) ]4 X* l4 i9 C 39 #else. E- z: z9 s9 m& s  N; {1 s. K 
 40     #define LOG_INIT() do { } while (0) 
* H% H) P" ]$ z  x 41 #endif3 j* G3 c: m% g% t 
 42 0 m4 z/ k/ \1 u$ x% U6 B. s 
 43 /* Log Output */ 
. r5 B7 b# t4 z) L3 Q$ n/ j7 ? 44 #define LOG_INFO(format, ...)      \# G! h3 Q, j6 X) j: V0 | 
 45     do {                           \; A7 F9 Z. ]( l' {! U 
 46         OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \3 D5 k6 m1 n( g) k+ y) e  t 
 47     } while (0)0 F  b4 V. p9 h 
 48 0 C* A/ v+ n  {# N 
 49 #define LOG_ERROR(format, ...)     \ 
' m7 n& S+ F" @( ~+ h5 _ 50     do {                           \ 
8 V4 r# n! }- ~& Y" |2 z 51         OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \ 
& F) I6 X3 s, O: N' [4 _ 52     } while (0)& _8 e+ s- B& E( C' M4 ` 
 53 . a% l" q! f9 N* i, t 
 54 #define LOG_DEBUG(format, ...)     \ 
/ \, e3 T" y# D, y" t# c$ D 55     do {                           \ 
3 y. l# w9 C- S$ m; n( t/ S2 P 56         OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \ 
$ z) ?9 i" b3 u 57     } while (0)# }8 t6 n3 E8 r 
 58  
& @$ o4 A2 k# Y* o% o& W- U9 S 59 #define LOG_WARN(format, ...)      \ 
( V* L3 n1 ~+ J$ G 60     do {                           \ 
) I- @: C4 K$ L& s 61         OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \4 b0 e3 G$ |" z9 R% v  v+ s1 ~ 
 62     } while (0) 
. u6 H& H4 [- U  `% G' N2 v* `: V 63  
! I8 y- n$ g  @4 x$ i, N 64 #define LOG_TRACE(format, ...)     \ 
* R2 O0 V0 S' ^4 t 65     do {                           \' ?# @1 y) n* o4 m3 }" ]: N7 {/ ? 
 66         OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \0 U9 \3 A7 v) m: `" e& Q 
 67     } while (0) 
5 b  c# Q: o% I7 a. ~ 68  
  J  u4 e) x* W  X& ?" j  V 69 #define LOG_FATAL(format, ...)     \1 p( v3 E1 }3 R; E 
 70     do {                           \& ?" P( ~' G! K! g 
 71         OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \ 
0 u" T0 Q! W! Y$ G& R6 c# P8 S  k! O 72         exit(1);                   \; u9 F% n" j7 Y( l* p: S, I) ~ 
 73     } while (0)* x$ F. X1 _0 O; B' N. Z, i' \8 g 
 74  
! K1 n* ?. j% b6 |$ a3 |; d 75 /* Assert */ 
+ @% V+ S  i" f' C' m2 O" C- h 76 #define ASSERT(EXP)                \ 
  _% A; Z/ f: X% R 77     do{                            \" Q3 ~1 _/ K) ~& ? 
 78         if (!(EXP)) {              \ 
/ W- u% |1 [7 ?, I 79             OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ );                  \ 
* q9 l$ p% U( j; Q8 J3 V! n 80             exit(1);               \, R) t& b- @4 v( t% k7 `8 {+ y 
 81         }                          \ 
4 L+ H1 ^$ Y5 u/ Z& @ 82     } while(0) 
: d2 V/ B9 ?3 E8 a! b6 n 83 % a; A1 x0 q! T0 a+ w9 I 
 84 #endif' N  R/ t2 o/ i( s 
 |   
 
 
 
 |