bte_logmsg.c revision 45faad0ff5deeb0c676356345d99398cc4ab695a
1/****************************************************************************
2**
3**  Name:       bte_logmsg.c
4**
5**  Function    This file contains helper functions for bte logging
6**
7**  Copyright (c) 2011-2012, Broadcom Corp., All Rights Reserved.
8**  Broadcom Bluetooth Core. Proprietary and confidential.
9**
10*****************************************************************************/
11#include <stdio.h>
12#include <string.h>
13#include <stdarg.h>
14#include <time.h>
15#include <sys/time.h>
16#include "bt_target.h"
17#include "gki.h"
18
19#define BT_USE_TRACES   TRUE
20
21#if MMI_INCLUDED == TRUE
22#include "mmi.h"
23#endif
24
25volatile UINT8 bte_target_mode;
26
27#if BT_USE_TRACES == TRUE
28
29#ifdef __CYGWIN__
30#undef RPC_INCLUDED
31#define RPC_INCLUDED TRUE
32
33/*******************************************************************************
34**
35** Function:    LogMsg
36**
37** Description: log a message
38**
39** Returns:     none
40**
41*******************************************************************************/
42void
43LogMsg(UINT32 maskTraceSet, const char *strFormat, ...)
44{
45    va_list ap;
46    char buffer[256];
47    struct timeval tv;
48    struct timezone tz;
49    struct tm *tm;
50    time_t t;
51
52
53    gettimeofday(&tv, &tz);
54    time(&t);
55    tm = localtime(&t);
56
57    sprintf(buffer, "%02d:%02d:%02d.%03d ", tm->tm_hour, tm->tm_min, tm->tm_sec,
58        tv.tv_usec / 1000);
59    pth_write(2, buffer, strlen(buffer));
60
61    va_start(ap, strFormat);
62    vsprintf(buffer, strFormat, ap);
63    pth_write(2, buffer, strlen(buffer));
64    pth_write(2, "\n", 1);
65    va_end(ap);
66}
67
68/*******************************************************************************
69**
70** Function:    ScrLog
71**
72** Description: log a message
73**
74** Returns:     none
75**
76*******************************************************************************/
77void
78ScrLog(UINT32 maskTraceSet, const char *strFormat, ...)
79{
80    va_list ap;
81    char buffer[256];
82    struct timeval tv;
83    struct timezone tz;
84    struct tm *tm;
85    time_t t;
86
87    gettimeofday(&tv, &tz);
88    time(&t);
89    tm = localtime(&t);
90
91    sprintf(buffer, "%02d:%02d:%02d.%03d ", tm->tm_hour, tm->tm_min, tm->tm_sec,
92        tv.tv_usec / 1000);
93    pth_write(2, buffer, strlen(buffer));
94
95    va_start(ap, strFormat);
96    vsprintf(buffer, strFormat, ap);
97    pth_write(2, buffer, strlen(buffer));
98    pth_write(2, "\n", 1);
99    va_end(ap);
100}
101#endif
102
103/********************************************************************************
104**
105**    Function Name:   LogMsg_0
106**
107**    Purpose:  Encodes a trace message that has no parameter arguments
108**
109**    Input Parameters:  maskTraceSet: tester trace type.
110**                       strFormat: displayable string.
111**    Returns:
112**                      Nothing.
113**
114*********************************************************************************/
115void LogMsg_0 (UINT32 maskTraceSet, const char *strFormat)
116{
117    if (bte_target_mode == BTE_MODE_APPL)
118    {
119#if RPC_INCLUDED == TRUE
120        LogMsg(maskTraceSet, strFormat);
121#else
122        return; /* No RPC */
123#endif
124    }
125    else if (bte_target_mode == BTE_MODE_SAMPLE_APPS)  /* Using demo sample apps */
126    {
127#if RPC_INCLUDED == TRUE
128        LogMsg(maskTraceSet, strFormat);
129#elif MMI_INCLUDED == TRUE
130        if (mmi_debug_traces)
131            MMI_Echo(strFormat);
132#endif
133    }
134
135#if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE)
136    LogMsg(maskTraceSet, strFormat);
137#endif
138
139#if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE)
140    else if (bte_target_mode == BTE_MODE_DONGLE)
141        bte_hcisl_send_traces(maskTraceSet, strFormat);
142#endif
143
144
145}
146
147/********************************************************************************
148**
149**    Function Name:   LogMsg_1
150**
151**    Purpose:  Encodes a trace message that has one parameter argument
152**
153**    Input Parameters:  maskTraceSet: tester trace type.
154**                       strFormat: displayable string.
155**    Returns:
156**                      Nothing.
157**
158*********************************************************************************/
159void LogMsg_1 (UINT32 maskTraceSet, const char *strFormat, UINT32 p1)
160{
161    if (bte_target_mode == BTE_MODE_APPL)
162    {
163#if RPC_INCLUDED == TRUE
164        LogMsg (maskTraceSet, strFormat, p1);
165#else
166        return; /* No RPC */
167#endif
168    }
169    else if (bte_target_mode == BTE_MODE_SAMPLE_APPS)  /* Using demo sample apps */
170    {
171#if RPC_INCLUDED == TRUE
172        LogMsg (maskTraceSet, strFormat, p1);
173#elif MMI_INCLUDED == TRUE
174        if (mmi_debug_traces)
175            MMI_Echo(strFormat, p1);
176#endif
177    }
178
179#if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE)
180    LogMsg (maskTraceSet, strFormat, p1);
181#endif
182
183#if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE)
184    else if (bte_target_mode == BTE_MODE_DONGLE)
185        bte_hcisl_send_traces(maskTraceSet, strFormat, p1);
186#endif
187}
188
189/********************************************************************************
190**
191**    Function Name:   LogMsg_2
192**
193**    Purpose:  Encodes a trace message that has two parameter arguments
194**
195**    Input Parameters:  maskTraceSet: tester trace type.
196**                       strFormat: displayable string.
197**    Returns:
198**                      Nothing.
199**
200*********************************************************************************/
201void LogMsg_2 (UINT32 maskTraceSet, const char *strFormat, UINT32 p1, UINT32 p2)
202{
203    if (bte_target_mode == BTE_MODE_APPL)
204    {
205#if RPC_INCLUDED == TRUE
206        LogMsg (maskTraceSet, strFormat, p1, p2);
207#else
208        return; /* No RPC */
209#endif
210    }
211    else if (bte_target_mode == BTE_MODE_SAMPLE_APPS)  /* Using demo sample apps */
212    {
213#if RPC_INCLUDED == TRUE
214        LogMsg (maskTraceSet, strFormat, p1, p2);
215#elif MMI_INCLUDED == TRUE
216        if (mmi_debug_traces)
217            MMI_Echo(strFormat, p1, p2);
218#endif
219    }
220
221#if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE)
222    LogMsg (maskTraceSet, strFormat, p1, p2);
223#endif
224
225#if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE)
226    else if (bte_target_mode == BTE_MODE_DONGLE)
227        bte_hcisl_send_traces(maskTraceSet, strFormat, p1, p2);
228#endif
229}
230
231/********************************************************************************
232**
233**    Function Name:   LogMsg_3
234**
235**    Purpose:  Encodes a trace message that has three parameter arguments
236**
237**    Input Parameters:  maskTraceSet: tester trace type.
238**                       strFormat: displayable string.
239**    Returns:
240**                      Nothing.
241**
242*********************************************************************************/
243void LogMsg_3 (UINT32 maskTraceSet, const char *strFormat, UINT32 p1, UINT32 p2, UINT32 p3)
244{
245    if (bte_target_mode == BTE_MODE_APPL)
246    {
247#if RPC_INCLUDED == TRUE
248        LogMsg (maskTraceSet, strFormat, p1, p2, p3);
249#else
250        return; /* No RPC */
251#endif
252    }
253    else if (bte_target_mode == BTE_MODE_SAMPLE_APPS)  /* Using demo sample apps */
254    {
255#if RPC_INCLUDED == TRUE
256        LogMsg (maskTraceSet, strFormat, p1, p2, p3);
257#elif MMI_INCLUDED == TRUE
258        if (mmi_debug_traces)
259            MMI_Echo(strFormat, p1, p2, p3);
260#endif
261    }
262
263#if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE)
264    LogMsg (maskTraceSet, strFormat, p1, p2, p3);
265#endif
266
267#if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE)
268    else if (bte_target_mode == BTE_MODE_DONGLE)
269        bte_hcisl_send_traces(maskTraceSet, strFormat, p1, p2, p3);
270#endif
271}
272
273/********************************************************************************
274**
275**    Function Name:   LogMsg_4
276**
277**    Purpose:  Encodes a trace message that has four parameter arguments
278**
279**    Input Parameters:  maskTraceSet: tester trace type.
280**                       strFormat: displayable string.
281**    Returns:
282**                      Nothing.
283**
284*********************************************************************************/
285void LogMsg_4 (UINT32 maskTraceSet, const char *strFormat, UINT32 p1, UINT32 p2,
286               UINT32 p3, UINT32 p4)
287{
288    if (bte_target_mode == BTE_MODE_APPL)
289    {
290#if RPC_INCLUDED == TRUE
291        LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4);
292#else
293        return; /* No RPC */
294#endif
295    }
296    else if (bte_target_mode == BTE_MODE_SAMPLE_APPS)  /* Using demo sample apps */
297    {
298#if RPC_INCLUDED == TRUE
299        LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4);
300#elif MMI_INCLUDED == TRUE
301        if (mmi_debug_traces)
302            MMI_Echo(strFormat, p1, p2, p3, p4);
303#endif
304    }
305
306#if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE)
307    LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4);
308#endif
309
310#if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE)
311    else if (bte_target_mode == BTE_MODE_DONGLE)
312        bte_hcisl_send_traces(maskTraceSet, strFormat, p1, p2, p3, p4);
313#endif
314}
315
316/********************************************************************************
317**
318**    Function Name:   LogMsg_5
319**
320**    Purpose:  Encodes a trace message that has five parameter arguments
321**
322**    Input Parameters:  maskTraceSet: tester trace type.
323**                       strFormat: displayable string.
324**    Returns:
325**                      Nothing.
326**
327*********************************************************************************/
328void LogMsg_5 (UINT32 maskTraceSet, const char *strFormat, UINT32 p1, UINT32 p2,
329               UINT32 p3, UINT32 p4, UINT32 p5)
330{
331    if (bte_target_mode == BTE_MODE_APPL)
332    {
333#if RPC_INCLUDED == TRUE
334        LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4, p5);
335#else
336        return; /* No RPC */
337#endif
338    }
339    else if (bte_target_mode == BTE_MODE_SAMPLE_APPS)  /* Using demo sample apps */
340    {
341#if RPC_INCLUDED == TRUE
342        LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4, p5);
343#elif MMI_INCLUDED == TRUE
344        if (mmi_debug_traces)
345            MMI_Echo(strFormat, p1, p2, p3, p4, p5);
346#endif
347    }
348
349#if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE)
350    LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4, p5);
351#endif
352
353#if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE)
354    else if (bte_target_mode == BTE_MODE_DONGLE)
355        bte_hcisl_send_traces(maskTraceSet, strFormat, p1, p2, p3, p4, p5);
356#endif
357}
358
359/********************************************************************************
360**
361**    Function Name:   LogMsg_6
362**
363**    Purpose:  Encodes a trace message that has six parameter arguments
364**
365**    Input Parameters:  maskTraceSet: tester trace type.
366**                       strFormat: displayable string.
367**    Returns:
368**                      Nothing.
369**
370*********************************************************************************/
371void LogMsg_6 (UINT32 maskTraceSet, const char *strFormat, UINT32 p1, UINT32 p2,
372               UINT32 p3, UINT32 p4, UINT32 p5, UINT32 p6)
373{
374    if (bte_target_mode == BTE_MODE_APPL)
375    {
376#if RPC_INCLUDED == TRUE
377        LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4, p5, p6);
378#else
379        return; /* No RPC */
380#endif
381    }
382    else if (bte_target_mode == BTE_MODE_SAMPLE_APPS)  /* Using demo sample apps */
383    {
384#if RPC_INCLUDED == TRUE
385        LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4, p5, p6);
386#elif MMI_INCLUDED == TRUE
387        if (mmi_debug_traces)
388            MMI_Echo(strFormat, p1, p2, p3, p4, p5, p6);
389#endif
390    }
391
392
393#if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE)
394    LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4, p5, p6);
395#endif
396
397#if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE)
398    else if (bte_target_mode == BTE_MODE_DONGLE)
399        bte_hcisl_send_traces(maskTraceSet, strFormat, p1, p2, p3, p4, p5, p6);
400#endif
401
402}
403
404#endif /* BT_USE_TRACES */
405
406