|
|
1 #ifndef _LOG_H_: y2 s! A$ B) n% f
2 #define _LOG_H_
; f2 k& f8 s3 g. E1 q2 r 3
% E3 |8 c* x) c8 W5 z 4 /* 0: printf; 1: UART1 */
# G+ V0 W. r6 D' B6 G' c' n% s 5 #define OUTPUT_TO_UART1 1
! x& ]5 B5 M) n3 e+ q$ p 6
* B& N d" e" @4 S' N7 C2 H 7 /* Switch Log Output */0 J4 l3 i7 d0 M; v6 L
8 #if OUTPUT_TO_UART19 c) j3 ?( C1 t
9 /* For UART1 Initial */) M& R! {: p! o, J3 p
10 #include <stdlib.h>
9 V' R0 D7 B* S- S$ j 11 #include "hw_types.h" e. c$ }) F! }8 I1 O) C8 m
12 #include "hw_syscfg0_C6748.h"$ _. w$ {) e1 C& l* ?/ U: ?# f
13 #include "soc_C6748.h"
2 o4 h* u% U% A; D 14 #include "psc.h"
# A+ ?7 m( U7 z+ p- X 15 #include "gpio.h" 0 T+ F, M6 P! o8 c' u: G
16 #include "uart.h"
0 f. ?* S9 D7 i. l/ H 17 #include "uartStdio.h"
4 d: L; t! ]9 z) Y( B 18
5 [! T& M; Q8 z- j4 U( _" W& v 19 #define OUTPUT UARTprintf5 {& s& a" s3 A( \: W$ F
20 #else4 O- Z! W2 j: `" {
21 #include <stdio.h>
* c; ]+ _4 D c" h 22 #include <stdbool.h>5 f8 ~# W* v$ U- W3 m* }5 H1 J$ w
23 0 f. } Y6 G2 w) E- i* m/ M$ E) @
24 #define OUTPUT printf
# W: p# D6 \2 z- C% {( X' u 25 #endif
5 E6 v3 I- i' b% S( r6 _, }, F 26
' b a. z+ p7 S% m 27 /* Log init */! K6 j% C! s$ A2 L# Q
28 #if OUTPUT_TO_UART1
5 h0 F! s7 Q# }1 J: F7 j7 O7 e 29 #define LOG_INIT() do { \" Q) F u9 I9 |/ Z
30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \
" O' s1 [7 |0 T7 d% x# v 31 PSC_POWERDOMAIN_ALWAYS_ON, \6 J4 H6 Y4 r0 ~' S [
32 PSC_MDCTL_NEXT_ENABLE); \' f4 u) F, U3 }2 E
33 GPIOBank6Pin12PinMuxSetup(); \
& v$ V: P. C* |5 `% | 34 GPIOBank6Pin13PinMuxSetup(); \2 W# c% N2 C7 r7 x, X
35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \4 y- u$ Z& A! q) X! a* X8 T) g
36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \
' J3 V. U. i0 u5 W+ |: R: R 37 UARTStdioInit(); \1 ^: u8 l/ `* i S
38 } while (0), P& W' u; t, q: X* l7 {: L1 t# X
39 #else
# A2 t7 f* B8 ]" q/ s 40 #define LOG_INIT() do { } while (0)
0 s, f/ |* D# X 41 #endif
G: Y" _9 j( f 42
" Q; C) f7 `& w 43 /* Log Output */8 c$ J2 s& ~3 `. r( H" ^5 t$ C) C% `
44 #define LOG_INFO(format, ...) \
6 p8 S* h5 w4 x$ Q" C 45 do { \. F, p* Z9 R4 }; l6 K( W) N* j) v
46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \: C1 j0 @& P, D9 Q' a
47 } while (0) Y9 t( ~" {* F4 j
48 7 l! h! L$ m& E ]7 e
49 #define LOG_ERROR(format, ...) \; C; B8 {. s, C4 X7 L
50 do { \
) ~0 a5 ?3 u. } 51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
9 ^0 ?' C3 c+ {8 m1 e0 J 52 } while (0); U% d+ i3 i. A" I* V
53 % A3 L7 ]7 j! T
54 #define LOG_DEBUG(format, ...) \
* E3 e8 P* i$ ^* O/ Q 55 do { \
6 `* F( g" J9 U) U 56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
0 \% F2 N2 O& D0 R' V+ n 57 } while (0)
. B# z. I; v, X9 ~8 k 58
: O( l# e M9 R" k6 \ 59 #define LOG_WARN(format, ...) \! I" T( C7 X0 Z: P
60 do { \
' ]2 o" v8 }- B6 ] 61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
; B$ O2 U. j# W$ a# { 62 } while (0)6 J) I, f! g3 z& a$ x
63 # i7 p% [0 e# ]; h, f
64 #define LOG_TRACE(format, ...) \
( ?& q( R4 m3 ^! t 65 do { \
" U- v- O" w$ Q( u' o5 h 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
9 a2 c1 ?% a" Y- a- h) M5 N 67 } while (0)
# u& R! u1 L- f8 T0 J 68 4 d& W! O, g5 m
69 #define LOG_FATAL(format, ...) \. o g8 i! b9 `; f+ W
70 do { \2 V1 x8 v: B7 z' {( h# F
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
+ Y4 \/ p- Q8 j5 ~# R 72 exit(1); \/ Q; b, p1 N$ e8 W; Z4 r. _
73 } while (0)
- A! A2 x& D, K6 L 74 4 p- ^4 y' A5 R. V
75 /* Assert */
% J# r& F$ n8 D- h1 I5 U- t7 A0 V6 W 76 #define ASSERT(EXP) \! t8 U! C6 v' Z! Y
77 do{ \
# O5 g' e% f, H- ^& O3 q 78 if (!(EXP)) { \
: }, F( a. {8 M; k4 L; n9 p 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \4 l7 Z$ `4 r+ ]2 g
80 exit(1); \! q: l y! V# G( Y8 W" W, W9 |
81 } \
1 v& W+ ?3 f6 E: A2 O 82 } while(0)- g7 V* Q4 u; a$ M+ Z6 j/ [
83
|/ B) G3 \* y1 H N" |+ D 84 #endif
. w+ l( U& r$ E' S |
|