|
|
1 #ifndef _LOG_H_
W' k( U" Q! \& W 2 #define _LOG_H_. }- H9 H5 W9 }9 W( s
3 1 D' w5 g! [; ]( `
4 /* 0: printf; 1: UART1 */
' v8 W1 Y5 u# h& }6 H 5 #define OUTPUT_TO_UART1 1
! g. _5 g0 D7 K, {- V( e 6 ' Q, S. X1 X, _$ U; }$ n' P
7 /* Switch Log Output */
/ x. l# F2 v/ E% x% R 8 #if OUTPUT_TO_UART1, n. Z6 Y0 {. ^" [& W, F8 K
9 /* For UART1 Initial */& L9 G' ~4 r% R
10 #include <stdlib.h>; k3 N2 `: B7 d5 x! o
11 #include "hw_types.h"
( S1 x2 C$ O, [9 I* }. K 12 #include "hw_syscfg0_C6748.h"
8 |% E! d' U7 {% l% D1 v9 E |) l 13 #include "soc_C6748.h"4 Z3 i3 Y$ ?' B
14 #include "psc.h"
) c$ j# j1 b/ q; n 15 #include "gpio.h"
& A9 I' b( `6 w/ @2 @ 16 #include "uart.h"
( W, w q; e, }! _5 m 17 #include "uartStdio.h"
+ K" c2 p4 I! t- v. d 18
/ n$ s( K) f7 L7 Y' A$ Y 19 #define OUTPUT UARTprintf1 l v! _6 F+ f1 w
20 #else' J! q6 W( ~* `$ s9 Q8 [
21 #include <stdio.h>
1 X. r3 L6 |% G0 P0 V/ a 22 #include <stdbool.h>
8 M }# a' W* O3 ]1 y* d% f1 @ 23
5 T' o7 J9 n, [1 v6 O# K4 d3 a 24 #define OUTPUT printf
4 l9 j/ s- S" m1 D. d" o4 M 25 #endif
1 ]" b' e$ B# n2 @) w 26
5 q* E2 }; I, n3 B! g1 @ 27 /* Log init */, A, f+ M$ G, {
28 #if OUTPUT_TO_UART1
4 D" e# D# K. l 29 #define LOG_INIT() do { \
' \. r9 ~; P0 ?- }( m; R& ?, \$ f 30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \
- X6 k. Q2 C* M 31 PSC_POWERDOMAIN_ALWAYS_ON, \
3 q6 G( L/ D! @/ ]& m9 M2 ? 32 PSC_MDCTL_NEXT_ENABLE); \
! U3 C+ i/ E( Y n 33 GPIOBank6Pin12PinMuxSetup(); \; L n$ F0 X$ n% { o, H) e
34 GPIOBank6Pin13PinMuxSetup(); \
, J4 a6 s8 l4 x8 _9 X! Q 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \
* C6 ^/ O2 I) X& N 36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \! S- ^' y! O1 N9 z
37 UARTStdioInit(); \
- k5 b# B9 @4 f7 Z3 M 38 } while (0)6 P% c4 Y2 z3 B7 `4 ] Q
39 #else" R; R6 s9 b* v8 z. G( i
40 #define LOG_INIT() do { } while (0)
% E0 k0 i" }. _9 z& W" T% x 41 #endif
" |, K6 j2 q. o, d; v* x- } 42 4 [5 {1 _& D2 S) X; Q. Z
43 /* Log Output *// y+ L+ E0 f; U. \. l
44 #define LOG_INFO(format, ...) \" C- h- a: }0 t5 a
45 do { \1 I* C' V+ @8 [" G5 q
46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \% R+ g; P" i% j! s+ V8 E
47 } while (0)
3 d4 L2 I; O0 p! H/ ? 48 % q! I5 d* q/ G! x) w- Q1 E
49 #define LOG_ERROR(format, ...) \
2 L2 G2 V$ ^3 E" q: O- R 50 do { \9 F' x8 \2 Q2 B: I9 C* V3 p2 j& T
51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
; n. i4 W- P5 h9 G; V/ d1 O6 Q 52 } while (0); D+ Y6 L3 G6 G4 y4 \+ W* Z
53 7 p8 K1 R, Z9 n/ a
54 #define LOG_DEBUG(format, ...) \5 j% z5 j$ f( W b) X! x" J' b. {
55 do { \
& y$ i) s* J& F$ h/ M 56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \9 Z' o" I( p9 u7 ^
57 } while (0)
2 ?& Z. W5 [# Q2 l 58
; E% l! d7 D( A$ m3 [! t 59 #define LOG_WARN(format, ...) \
: @* b, o, [, Z' @% [* c2 P 60 do { \' x0 Z) `7 w: E' o- {5 o6 i6 z8 J$ O7 F
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \! Y4 z6 ]0 k- K9 g) O
62 } while (0)$ A( f2 V R8 B
63 ( G/ w6 O/ e' C( R. k
64 #define LOG_TRACE(format, ...) \9 T! K! `) \4 U0 w; \/ y! A
65 do { \
2 E' C k- N* I 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \0 t# w7 K! t# F8 @
67 } while (0)
- f4 j& D G% p# D4 S$ X 68 % p0 p& ~3 I" l1 s, a
69 #define LOG_FATAL(format, ...) \
& [$ ^3 j) T- |/ d; Y' T 70 do { \4 j k9 Y8 U% ?/ q. B& a
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \' X5 p* l5 o& E
72 exit(1); \+ N* d9 z+ F: Y- @4 D
73 } while (0)
3 c G- f/ Z; K: N! f 74
4 q/ L2 P8 M/ U: {9 B 75 /* Assert */' e. R/ q+ w% u! b* e
76 #define ASSERT(EXP) \- B7 D" M0 N: T7 N" W% K% |0 Q' U
77 do{ \
' z) n" o/ o' R) n 78 if (!(EXP)) { \/ A/ l( t6 W# P
79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
. J4 }0 `2 X/ O9 O) H 80 exit(1); \
/ U/ L0 s: s9 Z4 W$ g+ Y 81 } \8 c8 s! f! U. x+ {/ C
82 } while(0)
, H8 s6 Q B; \ 83 F1 [/ {1 g+ L: n5 N% k7 c
84 #endif4 [ r( R5 X7 h7 G% T6 `' S
|
|