| 
 | 
  1 #ifndef _LOG_H_* Q! X. ?2 c8 `8 q; ~ 
  2 #define _LOG_H_ 
% q" \# ^+ c- B3 j6 \+ H* d6 X# |: Q  3 9 [3 w" h; ^$ E6 [8 i( g 
  4 /* 0: printf; 1: UART1 */ 
, ^/ ^/ e" E6 V  5 #define OUTPUT_TO_UART1 1 
, z! K2 ^. s6 p5 _  ~) f  6  
3 z; E: w  U1 a9 u4 g: y4 w  7 /* Switch Log Output */6 f$ h( k8 \  k" m! K 
  8 #if OUTPUT_TO_UART1 
0 W) X) |! [) _. y+ d4 V+ I7 @7 H  9     /* For UART1 Initial */ 
& p9 K+ m+ F8 s; Y+ R 10     #include <stdlib.h> 
7 b. B9 J2 T8 Z6 G8 a. ^/ q 11     #include "hw_types.h"   
; {5 i: A( L. L; f3 |% h3 n 12     #include "hw_syscfg0_C6748.h" 
% ?8 T! r# |9 Z6 d6 y# E. s$ } 13     #include "soc_C6748.h" 
! {  a2 K* |( O1 ~; } 14     #include "psc.h"                
3 y3 a+ l/ U- |; C- B8 V  q 15     #include "gpio.h"               & L; D" R# @; W$ y( ]( U 
 16     #include "uart.h" 
* @, c- d+ ]- p# \2 R1 @ 17     #include "uartStdio.h" 
1 k  |$ ]' D0 L7 f 18 2 j; R( o8 z' m) n# B0 t 
 19     #define OUTPUT UARTprintf* g* Q4 Y5 L" V4 P 
 20 #else 
) q5 k- N3 \% g' q 21     #include <stdio.h>4 Y# |- L! l* S3 c) D 
 22     #include <stdbool.h> 
0 f/ M( E) ], F* Z3 U 23 % g- s' ?! m) U, R2 M$ U% i- v 
 24     #define OUTPUT printf 
) E- [0 G# {8 |1 F$ n/ G6 S 25 #endif 
" A4 p% u4 i# g; ?( d4 ~9 f+ } 26  
; e: y# `% s( k9 m! z 27 /* Log init */ 
4 O5 q  d. H6 b7 A' { 28 #if OUTPUT_TO_UART1. w) }& `+ C: X/ ~1 I& R5 o% U! E7 E 
 29     #define LOG_INIT() do {                                     \7 \! V4 L5 b1 K' r; N! ?; N 
 30         PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO,           \& ]/ g2 l- O5 F3 Y3 ?1 M 
 31                          PSC_POWERDOMAIN_ALWAYS_ON,             \7 }/ s# P: H1 E' \9 m 
 32                          PSC_MDCTL_NEXT_ENABLE);                \( w7 X  g# o' X! O 
 33         GPIOBank6Pin12PinMuxSetup();                            \; z& o" s4 f: ]  N( p* W1 C3 g) i+ ^ 
 34         GPIOBank6Pin13PinMuxSetup();                            \ 
$ @, C; M8 u" n! h. R. k# g4 ~ 35         GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  \ 
% E  Y( |; k8 }& O- B 36         GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  \ 
) D5 A  p& t( ?2 } 37         UARTStdioInit();                                        \3 _5 j. ^/ g9 l) u& R, E! S# |  \3 [ 
 38     } while (0)0 n  J0 c- e' c; T7 [" n) y 
 39 #else8 E% W/ m6 b. {' V. v: n2 N! ~, N 
 40     #define LOG_INIT() do { } while (0)5 u1 S6 f; K" Z3 c( N2 t: k- X 
 41 #endif 
+ o  ~! z! {3 J* }& `3 \/ ^2 [ 42 3 S9 @: j  P0 t: ~( ]& p 
 43 /* Log Output */, e) H% w  K, P6 Z) R$ q  [6 s 
 44 #define LOG_INFO(format, ...)      \! {+ ?7 n2 M0 P9 Y 
 45     do {                           \! l* A! j/ f0 s/ h! R 
 46         OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \ 
: |# c- D! M9 j" l% ~ 47     } while (0) 
6 i9 q: c# H) I) o 48  
( t7 ^* D+ M6 }8 s; i7 N 49 #define LOG_ERROR(format, ...)     \ 
9 B# i% W: ?" @/ ]2 ~9 { 50     do {                           \) z" J' [  Q0 Q, Z 
 51         OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \8 ?" f; O! Q5 J1 j 
 52     } while (0) 
& [+ q7 x0 @5 @$ D6 t9 u3 s 53  
0 f' ]7 W% _' I' x8 C' b: k 54 #define LOG_DEBUG(format, ...)     \ 
) ~! k9 v+ Q6 l" b7 \! M 55     do {                           \; Y- _+ R3 a, Y) {( Q; H- n& `3 B3 l1 J 
 56         OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \ 
# G" v' u1 A; Q7 Q9 |( ~ 57     } while (0): z. k" F& j5 q6 v! p4 O& y 
 58  
/ y  d5 Y7 ^( Z 59 #define LOG_WARN(format, ...)      \- \' t" P2 [) r# |1 ^" G8 M 
 60     do {                           \6 V- w: \% Z# S+ C5 t. O; }, g# O 
 61         OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \ 
$ W  f! l6 p0 m- F% o2 G7 l 62     } while (0) 
% O- k: W/ y/ b4 V9 d 63  
0 i5 l& Q$ F* E/ P8 S 64 #define LOG_TRACE(format, ...)     \; x) B" M) E2 h1 ~/ u! Y" F 
 65     do {                           \ 
, ~3 `7 u( o7 m9 E) l# w$ O 66         OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \+ g7 T! H" i6 m. _) x' B+ g2 A+ ` 
 67     } while (0)7 W' h& ~" o$ u/ W* J 
 68  
) @" L# Y* d3 F) q0 S 69 #define LOG_FATAL(format, ...)     \ 
6 ~5 E9 j+ P  ~# K" P# p 70     do {                           \ 
3 f/ z9 N+ [! `+ a# C# c' G" T* N 71         OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \2 T* Q8 \  H/ X* [  g6 v 
 72         exit(1);                   \. m2 w7 {( T( R 
 73     } while (0) 
$ q: D" Q9 r3 y: L0 t) g 74 3 u7 k, H8 L8 _ 
 75 /* Assert */ 
; P8 S# b7 ^6 z3 r1 j3 a 76 #define ASSERT(EXP)                \ 
) K# T/ N$ ~4 S! `" x 77     do{                            \ 
0 k% B. T& V! f 78         if (!(EXP)) {              \' G6 ]1 ?6 v8 P3 v1 G( j  a 
 79             OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ );                  \ 
7 r4 [9 c: {, z) _* B4 b6 Y 80             exit(1);               \9 X/ {7 C5 S* t8 z) I: N1 z) j 
 81         }                          \ 
: n0 f  @& {6 v8 z 82     } while(0) 
/ q! I5 T$ |/ Z 83  
/ z8 j: K9 b$ l/ U2 m7 {1 @ 84 #endif 
4 X8 @6 e; I4 [" ]! h |   
 
 
 
 |