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