/****************************************************************************** * * Copyright (C) 2011-2012 Broadcom Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ #include <stdio.h> #include <string.h> #include <stdarg.h> #include <time.h> #include <sys/time.h> #include "bt_target.h" #include "gki.h" #define BT_USE_TRACES TRUE #if MMI_INCLUDED == TRUE #include "mmi.h" #endif volatile UINT8 bte_target_mode; #if BT_USE_TRACES == TRUE #ifdef __CYGWIN__ #undef RPC_INCLUDED #define RPC_INCLUDED TRUE /******************************************************************************* ** ** Function: LogMsg ** ** Description: log a message ** ** Returns: none ** *******************************************************************************/ void LogMsg(UINT32 maskTraceSet, const char *strFormat, ...) { va_list ap; char buffer[256]; struct timeval tv; struct timezone tz; struct tm *tm; time_t t; gettimeofday(&tv, &tz); time(&t); tm = localtime(&t); sprintf(buffer, "%02d:%02d:%02d.%03d ", tm->tm_hour, tm->tm_min, tm->tm_sec, tv.tv_usec / 1000); pth_write(2, buffer, strlen(buffer)); va_start(ap, strFormat); vsprintf(buffer, strFormat, ap); pth_write(2, buffer, strlen(buffer)); pth_write(2, "\n", 1); va_end(ap); } /******************************************************************************* ** ** Function: ScrLog ** ** Description: log a message ** ** Returns: none ** *******************************************************************************/ void ScrLog(UINT32 maskTraceSet, const char *strFormat, ...) { va_list ap; char buffer[256]; struct timeval tv; struct timezone tz; struct tm *tm; time_t t; gettimeofday(&tv, &tz); time(&t); tm = localtime(&t); sprintf(buffer, "%02d:%02d:%02d.%03d ", tm->tm_hour, tm->tm_min, tm->tm_sec, tv.tv_usec / 1000); pth_write(2, buffer, strlen(buffer)); va_start(ap, strFormat); vsprintf(buffer, strFormat, ap); pth_write(2, buffer, strlen(buffer)); pth_write(2, "\n", 1); va_end(ap); } #endif /******************************************************************************** ** ** Function Name: LogMsg_0 ** ** Purpose: Encodes a trace message that has no parameter arguments ** ** Input Parameters: maskTraceSet: tester trace type. ** strFormat: displayable string. ** Returns: ** Nothing. ** *********************************************************************************/ void LogMsg_0 (UINT32 maskTraceSet, const char *strFormat) { if (bte_target_mode == BTE_MODE_APPL) { #if RPC_INCLUDED == TRUE LogMsg(maskTraceSet, strFormat); #else return; /* No RPC */ #endif } else if (bte_target_mode == BTE_MODE_SAMPLE_APPS) /* Using demo sample apps */ { #if RPC_INCLUDED == TRUE LogMsg(maskTraceSet, strFormat); #elif MMI_INCLUDED == TRUE if (mmi_debug_traces) MMI_Echo(strFormat); #endif } #if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE) LogMsg(maskTraceSet, strFormat); #endif #if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE) else if (bte_target_mode == BTE_MODE_DONGLE) bte_hcisl_send_traces(maskTraceSet, strFormat); #endif } /******************************************************************************** ** ** Function Name: LogMsg_1 ** ** Purpose: Encodes a trace message that has one parameter argument ** ** Input Parameters: maskTraceSet: tester trace type. ** strFormat: displayable string. ** Returns: ** Nothing. ** *********************************************************************************/ void LogMsg_1 (UINT32 maskTraceSet, const char *strFormat, UINT32 p1) { if (bte_target_mode == BTE_MODE_APPL) { #if RPC_INCLUDED == TRUE LogMsg (maskTraceSet, strFormat, p1); #else return; /* No RPC */ #endif } else if (bte_target_mode == BTE_MODE_SAMPLE_APPS) /* Using demo sample apps */ { #if RPC_INCLUDED == TRUE LogMsg (maskTraceSet, strFormat, p1); #elif MMI_INCLUDED == TRUE if (mmi_debug_traces) MMI_Echo(strFormat, p1); #endif } #if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE) LogMsg (maskTraceSet, strFormat, p1); #endif #if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE) else if (bte_target_mode == BTE_MODE_DONGLE) bte_hcisl_send_traces(maskTraceSet, strFormat, p1); #endif } /******************************************************************************** ** ** Function Name: LogMsg_2 ** ** Purpose: Encodes a trace message that has two parameter arguments ** ** Input Parameters: maskTraceSet: tester trace type. ** strFormat: displayable string. ** Returns: ** Nothing. ** *********************************************************************************/ void LogMsg_2 (UINT32 maskTraceSet, const char *strFormat, UINT32 p1, UINT32 p2) { if (bte_target_mode == BTE_MODE_APPL) { #if RPC_INCLUDED == TRUE LogMsg (maskTraceSet, strFormat, p1, p2); #else return; /* No RPC */ #endif } else if (bte_target_mode == BTE_MODE_SAMPLE_APPS) /* Using demo sample apps */ { #if RPC_INCLUDED == TRUE LogMsg (maskTraceSet, strFormat, p1, p2); #elif MMI_INCLUDED == TRUE if (mmi_debug_traces) MMI_Echo(strFormat, p1, p2); #endif } #if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE) LogMsg (maskTraceSet, strFormat, p1, p2); #endif #if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE) else if (bte_target_mode == BTE_MODE_DONGLE) bte_hcisl_send_traces(maskTraceSet, strFormat, p1, p2); #endif } /******************************************************************************** ** ** Function Name: LogMsg_3 ** ** Purpose: Encodes a trace message that has three parameter arguments ** ** Input Parameters: maskTraceSet: tester trace type. ** strFormat: displayable string. ** Returns: ** Nothing. ** *********************************************************************************/ void LogMsg_3 (UINT32 maskTraceSet, const char *strFormat, UINT32 p1, UINT32 p2, UINT32 p3) { if (bte_target_mode == BTE_MODE_APPL) { #if RPC_INCLUDED == TRUE LogMsg (maskTraceSet, strFormat, p1, p2, p3); #else return; /* No RPC */ #endif } else if (bte_target_mode == BTE_MODE_SAMPLE_APPS) /* Using demo sample apps */ { #if RPC_INCLUDED == TRUE LogMsg (maskTraceSet, strFormat, p1, p2, p3); #elif MMI_INCLUDED == TRUE if (mmi_debug_traces) MMI_Echo(strFormat, p1, p2, p3); #endif } #if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE) LogMsg (maskTraceSet, strFormat, p1, p2, p3); #endif #if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE) else if (bte_target_mode == BTE_MODE_DONGLE) bte_hcisl_send_traces(maskTraceSet, strFormat, p1, p2, p3); #endif } /******************************************************************************** ** ** Function Name: LogMsg_4 ** ** Purpose: Encodes a trace message that has four parameter arguments ** ** Input Parameters: maskTraceSet: tester trace type. ** strFormat: displayable string. ** Returns: ** Nothing. ** *********************************************************************************/ void LogMsg_4 (UINT32 maskTraceSet, const char *strFormat, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4) { if (bte_target_mode == BTE_MODE_APPL) { #if RPC_INCLUDED == TRUE LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4); #else return; /* No RPC */ #endif } else if (bte_target_mode == BTE_MODE_SAMPLE_APPS) /* Using demo sample apps */ { #if RPC_INCLUDED == TRUE LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4); #elif MMI_INCLUDED == TRUE if (mmi_debug_traces) MMI_Echo(strFormat, p1, p2, p3, p4); #endif } #if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE) LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4); #endif #if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE) else if (bte_target_mode == BTE_MODE_DONGLE) bte_hcisl_send_traces(maskTraceSet, strFormat, p1, p2, p3, p4); #endif } /******************************************************************************** ** ** Function Name: LogMsg_5 ** ** Purpose: Encodes a trace message that has five parameter arguments ** ** Input Parameters: maskTraceSet: tester trace type. ** strFormat: displayable string. ** Returns: ** Nothing. ** *********************************************************************************/ void LogMsg_5 (UINT32 maskTraceSet, const char *strFormat, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4, UINT32 p5) { if (bte_target_mode == BTE_MODE_APPL) { #if RPC_INCLUDED == TRUE LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4, p5); #else return; /* No RPC */ #endif } else if (bte_target_mode == BTE_MODE_SAMPLE_APPS) /* Using demo sample apps */ { #if RPC_INCLUDED == TRUE LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4, p5); #elif MMI_INCLUDED == TRUE if (mmi_debug_traces) MMI_Echo(strFormat, p1, p2, p3, p4, p5); #endif } #if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE) LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4, p5); #endif #if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE) else if (bte_target_mode == BTE_MODE_DONGLE) bte_hcisl_send_traces(maskTraceSet, strFormat, p1, p2, p3, p4, p5); #endif } /******************************************************************************** ** ** Function Name: LogMsg_6 ** ** Purpose: Encodes a trace message that has six parameter arguments ** ** Input Parameters: maskTraceSet: tester trace type. ** strFormat: displayable string. ** Returns: ** Nothing. ** *********************************************************************************/ void LogMsg_6 (UINT32 maskTraceSet, const char *strFormat, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4, UINT32 p5, UINT32 p6) { if (bte_target_mode == BTE_MODE_APPL) { #if RPC_INCLUDED == TRUE LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4, p5, p6); #else return; /* No RPC */ #endif } else if (bte_target_mode == BTE_MODE_SAMPLE_APPS) /* Using demo sample apps */ { #if RPC_INCLUDED == TRUE LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4, p5, p6); #elif MMI_INCLUDED == TRUE if (mmi_debug_traces) MMI_Echo(strFormat, p1, p2, p3, p4, p5, p6); #endif } #if (defined(TRACE_TASK_INCLUDED) && TRACE_TASK_INCLUDED == TRUE) LogMsg (maskTraceSet, strFormat, p1, p2, p3, p4, p5, p6); #endif #if (defined(DONGLE_MODE_INCLUDED) && DONGLE_MODE_INCLUDED == TRUE) else if (bte_target_mode == BTE_MODE_DONGLE) bte_hcisl_send_traces(maskTraceSet, strFormat, p1, p2, p3, p4, p5, p6); #endif } #endif /* BT_USE_TRACES */