Home | History | Annotate | Download | only in main
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2001-2012 Broadcom Corporation
      4  *
      5  *  Licensed under the Apache License, Version 2.0 (the "License");
      6  *  you may not use this file except in compliance with the License.
      7  *  You may obtain a copy of the License at:
      8  *
      9  *  http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  *
     17  ******************************************************************************/
     18 
     19 /******************************************************************************
     20  *
     21  *  Contains the LogMsg wrapper routines for BTE.  It routes calls the
     22  *  appropriate application's LogMsg equivalent.
     23  *
     24  ******************************************************************************/
     25 
     26 #include <stdio.h>
     27 #include <stdlib.h>
     28 #include <string.h>
     29 #include <stdarg.h>
     30 
     31 #include "gki.h"
     32 #include "bte.h"
     33 
     34 #include "bte_appl.h"
     35 
     36 #if MMI_INCLUDED == TRUE
     37 #include "mmi.h"
     38 #endif
     39 
     40 /* always enable trace framework */
     41 
     42 #include "btu.h"
     43 #include "l2c_api.h"
     44 #if (RFCOMM_INCLUDED==TRUE)
     45 #include "port_api.h"
     46 #endif
     47 #if (OBX_INCLUDED==TRUE)
     48 #include "obx_api.h"
     49 #endif
     50 #if (AVCT_INCLUDED==TRUE)
     51 #include "avct_api.h"
     52 #endif
     53 #if (AVDT_INCLUDED==TRUE)
     54 #include "avdt_api.h"
     55 #endif
     56 #if (AVRC_INCLUDED==TRUE)
     57 #include "avrc_api.h"
     58 #endif
     59 #if (AVDT_INCLUDED==TRUE)
     60 #include "avdt_api.h"
     61 #endif
     62 #if (A2D_INCLUDED==TRUE)
     63 #include "a2d_api.h"
     64 #endif
     65 #if (BIP_INCLUDED==TRUE)
     66 #include "bip_api.h"
     67 #endif
     68 #if (BNEP_INCLUDED==TRUE)
     69 #include "bnep_api.h"
     70 #endif
     71 #if (BPP_INCLUDED==TRUE)
     72 #include "bpp_api.h"
     73 #endif
     74 #include "btm_api.h"
     75 #if (DUN_INCLUDED==TRUE)
     76 #include "dun_api.h"
     77 #endif
     78 #if (GAP_INCLUDED==TRUE)
     79 #include "gap_api.h"
     80 #endif
     81 #if (GOEP_INCLUDED==TRUE)
     82 #include "goep_util.h"
     83 #endif
     84 #if (HCRP_INCLUDED==TRUE)
     85 #include "hcrp_api.h"
     86 #endif
     87 #if (PAN_INCLUDED==TRUE)
     88 #include "pan_api.h"
     89 #endif
     90 #include "sdp_api.h"
     91 
     92 #if (BLE_INCLUDED==TRUE)
     93 #include "gatt_api.h"
     94 #include "smp_api.h"
     95 #endif
     96 
     97     /* LayerIDs for BTA, currently everything maps onto appl_trace_level */
     98 #if (BTA_INCLUDED==TRUE)
     99 #include "bta_api.h"
    100 #endif
    101 
    102 
    103 #if defined(__CYGWIN__) || defined(__linux__)
    104 #undef RPC_INCLUDED
    105 #define RPC_INCLUDED TRUE
    106 
    107 #include <sys/time.h>
    108 #include <time.h>
    109 
    110 #if (defined(ANDROID_USE_LOGCAT) && (ANDROID_USE_LOGCAT==TRUE))
    111 const char * const bt_layer_tags[] = {
    112     "bt-btif",
    113     "bt-usb",
    114     "bt-serial",
    115     "bt-socket",
    116     "bt-rs232",
    117     "bt-lc",
    118     "bt-lm",
    119     "bt-hci",
    120     "bt-l2cap",
    121     "bt-rfcomm",
    122     "bt-sdp",
    123     "bt-tcs",
    124     "bt-obex",
    125     "bt-btm",
    126     "bt-gap",
    127     "bt-dun",
    128     "bt-goep",
    129     "bt-icp",
    130     "bt-hsp2",
    131     "bt-spp",
    132     "bt-ctp",
    133     "bt-bpp",
    134     "bt-hcrp",
    135     "bt-ftp",
    136     "bt-opp",
    137     "bt-btu",
    138     "bt-gki",
    139     "bt-bnep",
    140     "bt-pan",
    141     "bt-hfp",
    142     "bt-hid",
    143     "bt-bip",
    144     "bt-avp",
    145     "bt-a2d",
    146     "bt-sap",
    147     "bt-amp",
    148     "bt-mca",
    149     "bt-att",
    150     "bt-smp",
    151     "bt-nfc",
    152     "bt-nci",
    153     "bt-idep",
    154     "bt-ndep",
    155     "bt-llcp",
    156     "bt-rw",
    157     "bt-ce",
    158     "bt-snep",
    159     "bt-ndef",
    160     "bt-nfa",
    161 };
    162 
    163 #ifndef LINUX_NATIVE
    164 #include <cutils/log.h>
    165 #define LOGI0(t,s) __android_log_write(ANDROID_LOG_INFO, t, s)
    166 #define LOGD0(t,s) __android_log_write(ANDROID_LOG_DEBUG, t, s)
    167 #define LOGW0(t,s) __android_log_write(ANDROID_LOG_WARN, t, s)
    168 #define LOGE0(t,s) __android_log_write(ANDROID_LOG_ERROR, t, s)
    169 
    170 #else
    171 #undef ANDROID_USE_LOGCAT
    172 #endif
    173 
    174 #endif
    175 
    176 
    177 //#include "btl_cfg.h"
    178 #define BTL_GLOBAL_PROP_TRC_FLAG "TRC_BTAPP"
    179 #ifndef DEFAULT_CONF_TRACE_LEVEL
    180 #define DEFAULT_CONF_TRACE_LEVEL BT_TRACE_LEVEL_WARNING
    181 #endif
    182 
    183 #ifndef BTE_LOG_BUF_SIZE
    184 #define BTE_LOG_BUF_SIZE  1024
    185 #endif
    186 #define BTE_LOG_MAX_SIZE  (BTE_LOG_BUF_SIZE - 12)
    187 
    188 
    189 //#define BTE_MAP_TRACE_LEVEL FALSE
    190 /* map by default BTE trace levels onto android trace levels */
    191 #ifndef BTE_MAP_TRACE_LEVEL
    192 #define BTE_MAP_TRACE_LEVEL TRUE
    193 #endif
    194 
    195 // #define BTE_ANDROID_INTERNAL_TIMESTAMP TRUE
    196 /* by default no internal timestamp. adb logcate -v time allows having timestamps */
    197 #ifndef BTE_ANDROID_INTERNAL_TIMESTAMP
    198 #define BTE_ANDROID_INTERNAL_TIMESTAMP FALSE
    199 #endif
    200 #if (BTE_ANDROID_INTERNAL_TIMESTAMP==TRUE)
    201 #define MSG_BUFFER_OFFSET strlen(buffer)
    202 #else
    203 #define MSG_BUFFER_OFFSET 0
    204 #endif
    205 
    206 //#define DBG_TRACE
    207 
    208 #if defined( DBG_TRACE )
    209 #define DBG_TRACE_API0( m ) BT_TRACE_0( TRACE_LAYER_HCI, TRACE_TYPE_API, m )
    210 #define DBG_TRACE_WARNING2( m, p0, p1 ) BT_TRACE_2( TRACE_LAYER_BTM, (TRACE_ORG_APPL|TRACE_TYPE_WARNING), m, p0, p1 )
    211 #else
    212 #define DBG_TRACE_API0( m )
    213 #define DBG_TRACE_WARNING2( m, p0, p1 )
    214 #endif
    215 #define DBG_TRACE_DEBUG2( m, p0, p1 ) BT_TRACE_2( TRACE_LAYER_BTM, (TRACE_ORG_APPL|TRACE_TYPE_DEBUG), m, p0, p1 )
    216 
    217 void
    218 LogMsg(UINT32 trace_set_mask, const char *fmt_str, ...)
    219 {
    220 	static char buffer[BTE_LOG_BUF_SIZE];
    221     int trace_layer = TRACE_GET_LAYER(trace_set_mask);
    222     if (trace_layer >= TRACE_LAYER_MAX_NUM)
    223         trace_layer = 0;
    224 
    225 	va_list ap;
    226 #if (BTE_ANDROID_INTERNAL_TIMESTAMP==TRUE)
    227 	struct timeval tv;
    228 	struct timezone tz;
    229 	struct tm *tm;
    230 	time_t t;
    231 
    232 	gettimeofday(&tv, &tz);
    233 	time(&t);
    234 	tm = localtime(&t);
    235 
    236     sprintf(buffer, "%02d:%02d:%02d.%03d ", tm->tm_hour, tm->tm_min, tm->tm_sec,
    237         tv.tv_usec / 1000);
    238 #endif
    239 	va_start(ap, fmt_str);
    240 	vsnprintf(&buffer[MSG_BUFFER_OFFSET], BTE_LOG_MAX_SIZE, fmt_str, ap);
    241 	va_end(ap);
    242 
    243 #if (defined(ANDROID_USE_LOGCAT) && (ANDROID_USE_LOGCAT==TRUE))
    244 #if (BTE_MAP_TRACE_LEVEL==TRUE)
    245     switch ( TRACE_GET_TYPE(trace_set_mask) )
    246     {
    247         case TRACE_TYPE_ERROR:
    248             LOGE0(bt_layer_tags[trace_layer], buffer);
    249             break;
    250         case TRACE_TYPE_WARNING:
    251             LOGW0(bt_layer_tags[trace_layer], buffer);
    252             break;
    253         case TRACE_TYPE_API:
    254         case TRACE_TYPE_EVENT:
    255             LOGI0(bt_layer_tags[trace_layer], buffer);
    256             break;
    257         case TRACE_TYPE_DEBUG:
    258             LOGD0(bt_layer_tags[trace_layer], buffer);
    259             break;
    260         default:
    261             LOGE0(bt_layer_tags[trace_layer], buffer);      /* we should never get this */
    262             break;
    263     }
    264 #else
    265     LOGI0(bt_layer_tags[trace_layer], buffer);
    266 #endif
    267 #else
    268 	write(2, buffer, strlen(buffer));
    269 	write(2, "\n", 1);
    270 #endif
    271 }
    272 
    273 void
    274 ScrLog(UINT32 trace_set_mask, const char *fmt_str, ...)
    275 {
    276 	static char buffer[BTE_LOG_BUF_SIZE];
    277 
    278 	va_list ap;
    279 	struct timeval tv;
    280 	struct timezone tz;
    281 	struct tm *tm;
    282 	time_t t;
    283     int trace_layer = TRACE_GET_LAYER(trace_set_mask);
    284     if (trace_layer >= TRACE_LAYER_MAX_NUM)
    285         trace_layer = 0;
    286 	gettimeofday(&tv, &tz);
    287 	time(&t);
    288 	tm = localtime(&t);
    289 
    290         sprintf(buffer, "%02d:%02d:%02d.%03ld ", tm->tm_hour, tm->tm_min, tm->tm_sec,
    291         tv.tv_usec / 1000);
    292 
    293 	va_start(ap, fmt_str);
    294 	vsnprintf(&buffer[strlen(buffer)], BTE_LOG_MAX_SIZE, fmt_str, ap);
    295 	va_end(ap);
    296 
    297 #if (defined(ANDROID_USE_LOGCAT) && (ANDROID_USE_LOGCAT==TRUE))
    298     LOGI0(bt_layer_tags[trace_layer], buffer);
    299 #else
    300 	write(2, buffer, strlen(buffer));
    301 	write(2, "\n", 1);
    302 #endif
    303 }
    304 
    305 /* this function should go into BTAPP_DM for example */
    306 BT_API UINT8 BTAPP_SetTraceLevel( UINT8 new_level )
    307 {
    308     if (new_level != 0xFF)
    309         appl_trace_level = new_level;
    310 
    311     return (appl_trace_level);
    312 }
    313 
    314 BT_API UINT8 BTIF_SetTraceLevel( UINT8 new_level )
    315 {
    316     if (new_level != 0xFF)
    317         btif_trace_level = new_level;
    318 
    319     return (btif_trace_level);
    320 }
    321 
    322 BTU_API UINT8 BTU_SetTraceLevel( UINT8 new_level )
    323 {
    324     if (new_level != 0xFF)
    325         btu_cb.trace_level = new_level;
    326 
    327     return (btu_cb.trace_level);
    328 }
    329 
    330 BOOLEAN trace_conf_enabled = FALSE;
    331 
    332 void bte_trace_conf(char *p_conf_name, char *p_conf_value)
    333 {
    334     tBTTRC_FUNC_MAP *p_f_map = (tBTTRC_FUNC_MAP *) &bttrc_set_level_map[0];
    335 
    336     while (p_f_map->trc_name != NULL)
    337     {
    338         if (strcmp(p_f_map->trc_name, (const char *)p_conf_name) == 0)
    339         {
    340             p_f_map->trace_level = (UINT8) atoi(p_conf_value);
    341             break;
    342         }
    343         p_f_map++;
    344     }
    345 }
    346 
    347 /********************************************************************************
    348  **
    349  **    Function Name:    BTA_SysSetTraceLevel
    350  **
    351  **    Purpose:          set or reads the different Trace Levels of layer IDs (see bt_trace.h,
    352  **                      BTTRC_ID_xxxx
    353  **
    354  **    Input Parameters: Array with trace layers to set to a given level or read. a layer ID of 0
    355  **                      defines the end of the list
    356  **                      WARNING: currently type should be 0-5! or FF for reading!!!!
    357  **
    358  **    Returns:
    359  **                      input array with trace levels for given layer id
    360  **
    361  *********************************************************************************/
    362 BT_API tBTTRC_LEVEL * BTA_SysSetTraceLevel(tBTTRC_LEVEL * p_levels)
    363 {
    364     const tBTTRC_FUNC_MAP *p_f_map;
    365     tBTTRC_LEVEL *p_l = p_levels;
    366 
    367     DBG_TRACE_API0( "BTA_SysSetTraceLevel()" );
    368 
    369     while (0 != p_l->layer_id)
    370     {
    371         p_f_map = &bttrc_set_level_map[0];
    372 
    373         while (0 != p_f_map->layer_id_start)
    374         {
    375             printf("BTA_SysSetTraceLevel - trace id in map start = %d end= %d,  paramter id = %d\r\n", p_f_map->layer_id_start, p_f_map->layer_id_end, p_l->layer_id );
    376             /* as p_f_map is ordered by increasing layer id, go to next map entry as long end id
    377              * is smaller */
    378             //if (p_f_map->layer_id_end < p_l->layer_id)
    379             //{
    380                 //p_f_map++;
    381             //}
    382             //else
    383             {
    384                 /* check if layer_id actually false into a range or if it is note existing in the  map */
    385                 if ((NULL != p_f_map->p_f) && (p_f_map->layer_id_start <= p_l->layer_id) && (p_f_map->layer_id_end >= p_l->layer_id) )
    386                 {
    387                     DBG_TRACE_DEBUG2( "BTA_SysSetTraceLevel( id:%d, level:%d ): setting/reading",
    388                             p_l->layer_id, p_l->type );
    389                     p_l->type = p_f_map->p_f(p_l->type);
    390                     break;
    391                 }
    392                 else
    393                 {
    394                     DBG_TRACE_WARNING2( "BTA_SysSetTraceLevel( id:%d, level:%d ): MISSING Set function OR ID in map!",
    395                             p_l->layer_id, p_l->type );
    396                 }
    397                 /* set/read next trace level by getting out ot map loop */
    398                 //p_l++;
    399                 //break;
    400             }
    401             p_f_map++;
    402         }
    403         //if (0 == p_f_map->layer_id_start)
    404         {
    405             DBG_TRACE_WARNING2( "BTA_SysSetTraceLevel( id:%d, level:%d ): ID NOT FOUND in map. Skip to next",
    406                     p_l->layer_id, p_l->type );
    407             p_l++;
    408         }
    409     }
    410 
    411     return p_levels;
    412 } /* BTA_SysSetTraceLevel() */
    413 
    414 /* make sure list is order by increasing layer id!!! */
    415 tBTTRC_FUNC_MAP bttrc_set_level_map[] = {
    416     {BTTRC_ID_STK_BTU, BTTRC_ID_STK_HCI, BTU_SetTraceLevel, "TRC_HCI", DEFAULT_CONF_TRACE_LEVEL},
    417     {BTTRC_ID_STK_L2CAP, BTTRC_ID_STK_L2CAP, L2CA_SetTraceLevel, "TRC_L2CAP", DEFAULT_CONF_TRACE_LEVEL},
    418 #if (RFCOMM_INCLUDED==TRUE)
    419     {BTTRC_ID_STK_RFCOMM, BTTRC_ID_STK_RFCOMM_DATA, PORT_SetTraceLevel, "TRC_RFCOMM", DEFAULT_CONF_TRACE_LEVEL},
    420 #endif
    421 #if (OBX_INCLUDED==TRUE)
    422     {BTTRC_ID_STK_OBEX, BTTRC_ID_STK_OBEX, OBX_SetTraceLevel, "TRC_OBEX", DEFAULT_CONF_TRACE_LEVEL},
    423 #endif
    424 #if (AVCT_INCLUDED==TRUE)
    425     //{BTTRC_ID_STK_AVCT, BTTRC_ID_STK_AVCT, NULL, "TRC_AVCT", DEFAULT_CONF_TRACE_LEVEL},
    426 #endif
    427 #if (AVDT_INCLUDED==TRUE)
    428     {BTTRC_ID_STK_AVDT, BTTRC_ID_STK_AVDT, AVDT_SetTraceLevel, "TRC_AVDT", DEFAULT_CONF_TRACE_LEVEL},
    429 #endif
    430 #if (AVRC_INCLUDED==TRUE)
    431     {BTTRC_ID_STK_AVRC, BTTRC_ID_STK_AVRC, AVRC_SetTraceLevel, "TRC_AVRC", DEFAULT_CONF_TRACE_LEVEL},
    432 #endif
    433 #if (AVDT_INCLUDED==TRUE)
    434     //{BTTRC_ID_AVDT_SCB, BTTRC_ID_AVDT_CCB, NULL, "TRC_AVDT_SCB", DEFAULT_CONF_TRACE_LEVEL},
    435 #endif
    436 #if (A2D_INCLUDED==TRUE)
    437     {BTTRC_ID_STK_A2D, BTTRC_ID_STK_A2D, A2D_SetTraceLevel, "TRC_A2D", DEFAULT_CONF_TRACE_LEVEL},
    438 #endif
    439 #if (BIP_INCLUDED==TRUE)
    440     {BTTRC_ID_STK_BIP, BTTRC_ID_STK_BIP, BIP_SetTraceLevel, "TRC_BIP", DEFAULT_CONF_TRACE_LEVEL},
    441 #endif
    442 #if (BNEP_INCLUDED==TRUE)
    443     {BTTRC_ID_STK_BNEP, BTTRC_ID_STK_BNEP, BNEP_SetTraceLevel, "TRC_BNEP", DEFAULT_CONF_TRACE_LEVEL},
    444 #endif
    445 #if (BPP_INCLUDED==TRUE)
    446     {BTTRC_ID_STK_BPP, BTTRC_ID_STK_BPP, BPP_SetTraceLevel, "TRC_BPP", DEFAULT_CONF_TRACE_LEVEL},
    447 #endif
    448     {BTTRC_ID_STK_BTM_ACL, BTTRC_ID_STK_BTM_SEC, BTM_SetTraceLevel, "TRC_BTM", DEFAULT_CONF_TRACE_LEVEL},
    449 #if (DUN_INCLUDED==TRUE)
    450     {BTTRC_ID_STK_DUN, BTTRC_ID_STK_DUN, DUN_SetTraceLevel, "TRC_DUN", DEFAULT_CONF_TRACE_LEVEL},
    451 #endif
    452 #if (GAP_INCLUDED==TRUE)
    453     {BTTRC_ID_STK_GAP, BTTRC_ID_STK_GAP, GAP_SetTraceLevel, "TRC_GAP", DEFAULT_CONF_TRACE_LEVEL},
    454 #endif
    455 #if (GOEP_INCLUDED==TRUE)
    456     {BTTRC_ID_STK_GOEP, BTTRC_ID_STK_GOEP, GOEP_SetTraceLevel, "TRC_GOEP", DEFAULT_CONF_TRACE_LEVEL},
    457 #endif
    458 #if (HCRP_INCLUDED==TRUE)
    459     {BTTRC_ID_STK_HCRP, BTTRC_ID_STK_HCRP, HCRP_SetTraceLevel, "TRC_HCRP", DEFAULT_CONF_TRACE_LEVEL},
    460 #endif
    461 #if (PAN_INCLUDED==TRUE)
    462     {BTTRC_ID_STK_PAN, BTTRC_ID_STK_PAN, PAN_SetTraceLevel, "TRC_PAN", DEFAULT_CONF_TRACE_LEVEL},
    463 #endif
    464 #if (SAP_SERVER_INCLUDED==TRUE)
    465     {BTTRC_ID_STK_SAP, BTTRC_ID_STK_SAP, NULL, "TRC_SAP", DEFAULT_CONF_TRACE_LEVEL},
    466 #endif
    467     {BTTRC_ID_STK_SDP, BTTRC_ID_STK_SDP, SDP_SetTraceLevel, "TRC_SDP", DEFAULT_CONF_TRACE_LEVEL},
    468 #if (BLE_INCLUDED==TRUE)
    469     {BTTRC_ID_STK_GATT, BTTRC_ID_STK_GATT, GATT_SetTraceLevel, "TRC_GATT", DEFAULT_CONF_TRACE_LEVEL},
    470     {BTTRC_ID_STK_SMP, BTTRC_ID_STK_SMP, SMP_SetTraceLevel, "TRC_SMP", DEFAULT_CONF_TRACE_LEVEL},
    471 #endif
    472 
    473 #if (BTA_INCLUDED==TRUE)
    474     /* LayerIDs for BTA, currently everything maps onto appl_trace_level.
    475      * BTL_GLOBAL_PROP_TRC_FLAG serves as flag in conf.
    476      */
    477     {BTTRC_ID_BTA_ACC, BTTRC_ID_BTAPP, BTAPP_SetTraceLevel, BTL_GLOBAL_PROP_TRC_FLAG, DEFAULT_CONF_TRACE_LEVEL},
    478 #endif
    479 
    480 #if (BT_TRACE_BTIF == TRUE)
    481     {BTTRC_ID_BTA_ACC, BTTRC_ID_BTAPP, BTIF_SetTraceLevel, "TRC_BTIF", DEFAULT_CONF_TRACE_LEVEL},
    482 #endif
    483 
    484     {0, 0, NULL, NULL, DEFAULT_CONF_TRACE_LEVEL}
    485 };
    486 
    487 const UINT16 bttrc_map_size = sizeof(bttrc_set_level_map)/sizeof(tBTTRC_FUNC_MAP);
    488 #endif
    489 
    490 /********************************************************************************
    491  **
    492  **    Function Name:     BTE_InitTraceLevels
    493  **
    494  **    Purpose:           This function can be used to set the boot time reading it from the
    495  **                       platform.
    496  **                       WARNING: it is called under BTU context and it blocks the BTU task
    497  **                       till it returns (sync call)
    498  **
    499  **    Input Parameters:  None, platform to provide levels
    500  **    Returns:
    501  **                       Newly set levels, if any!
    502  **
    503  *********************************************************************************/
    504 BT_API void BTE_InitTraceLevels( void )
    505 {
    506     /* read and set trace levels by calling the different XXX_SetTraceLevel().
    507      */
    508 #if ( BT_USE_TRACES==TRUE )
    509     if (trace_conf_enabled == TRUE)
    510     {
    511         tBTTRC_FUNC_MAP *p_f_map = (tBTTRC_FUNC_MAP *) &bttrc_set_level_map[0];
    512 
    513         while (p_f_map->trc_name != NULL)
    514         {
    515             ALOGI("BTE_InitTraceLevels -- %s", p_f_map->trc_name);
    516 
    517             if (p_f_map->p_f)
    518                 p_f_map->p_f(p_f_map->trace_level);
    519 
    520             p_f_map++;
    521         }
    522     }
    523     else
    524     {
    525         ALOGI("[bttrc] using compile default trace settings");
    526     }
    527 #endif
    528 }
    529 
    530 
    531 /********************************************************************************
    532  **
    533  **    Function Name:   LogMsg_0
    534  **
    535  **    Purpose:  Encodes a trace message that has no parameter arguments
    536  **
    537  **    Input Parameters:  trace_set_mask: tester trace type.
    538  **                       fmt_str: displayable string.
    539  **    Returns:
    540  **                      Nothing.
    541  **
    542  *********************************************************************************/
    543 void LogMsg_0(UINT32 trace_set_mask, const char *fmt_str) {
    544     LogMsg(trace_set_mask, fmt_str);
    545 }
    546 
    547 /********************************************************************************
    548  **
    549  **    Function Name:   LogMsg_1
    550  **
    551  **    Purpose:  Encodes a trace message that has one parameter argument
    552  **
    553  **    Input Parameters:  trace_set_mask: tester trace type.
    554  **                       fmt_str: displayable string.
    555  **    Returns:
    556  **                      Nothing.
    557  **
    558  *********************************************************************************/
    559 void LogMsg_1(UINT32 trace_set_mask, const char *fmt_str, UINT32 p1) {
    560 
    561     LogMsg(trace_set_mask, fmt_str, p1);
    562 }
    563 
    564 /********************************************************************************
    565  **
    566  **    Function Name:   LogMsg_2
    567  **
    568  **    Purpose:  Encodes a trace message that has two parameter arguments
    569  **
    570  **    Input Parameters:  trace_set_mask: tester trace type.
    571  **                       fmt_str: displayable string.
    572  **    Returns:
    573  **                      Nothing.
    574  **
    575  *********************************************************************************/
    576 void LogMsg_2(UINT32 trace_set_mask, const char *fmt_str, UINT32 p1, UINT32 p2) {
    577     LogMsg(trace_set_mask, fmt_str, p1, p2);
    578 }
    579 
    580 /********************************************************************************
    581  **
    582  **    Function Name:   LogMsg_3
    583  **
    584  **    Purpose:  Encodes a trace message that has three parameter arguments
    585  **
    586  **    Input Parameters:  trace_set_mask: tester trace type.
    587  **                       fmt_str: displayable string.
    588  **    Returns:
    589  **                      Nothing.
    590  **
    591  *********************************************************************************/
    592 void LogMsg_3(UINT32 trace_set_mask, const char *fmt_str, UINT32 p1, UINT32 p2,
    593         UINT32 p3) {
    594     LogMsg(trace_set_mask, fmt_str, p1, p2, p3);
    595 }
    596 
    597 /********************************************************************************
    598  **
    599  **    Function Name:   LogMsg_4
    600  **
    601  **    Purpose:  Encodes a trace message that has four parameter arguments
    602  **
    603  **    Input Parameters:  trace_set_mask: tester trace type.
    604  **                       fmt_str: displayable string.
    605  **    Returns:
    606  **                      Nothing.
    607  **
    608  *********************************************************************************/
    609 void LogMsg_4(UINT32 trace_set_mask, const char *fmt_str, UINT32 p1, UINT32 p2,
    610         UINT32 p3, UINT32 p4) {
    611     LogMsg(trace_set_mask, fmt_str, p1, p2, p3, p4);
    612 }
    613 
    614 /********************************************************************************
    615  **
    616  **    Function Name:   LogMsg_5
    617  **
    618  **    Purpose:  Encodes a trace message that has five parameter arguments
    619  **
    620  **    Input Parameters:  trace_set_mask: tester trace type.
    621  **                       fmt_str: displayable string.
    622  **    Returns:
    623  **                      Nothing.
    624  **
    625  *********************************************************************************/
    626 void LogMsg_5(UINT32 trace_set_mask, const char *fmt_str, UINT32 p1, UINT32 p2,
    627         UINT32 p3, UINT32 p4, UINT32 p5) {
    628     LogMsg(trace_set_mask, fmt_str, p1, p2, p3, p4, p5);
    629 }
    630 
    631 /********************************************************************************
    632  **
    633  **    Function Name:   LogMsg_6
    634  **
    635  **    Purpose:  Encodes a trace message that has six parameter arguments
    636  **
    637  **    Input Parameters:  trace_set_mask: tester trace type.
    638  **                       fmt_str: displayable string.
    639  **    Returns:
    640  **                      Nothing.
    641  **
    642  *********************************************************************************/
    643 void LogMsg_6(UINT32 trace_set_mask, const char *fmt_str, UINT32 p1, UINT32 p2,
    644         UINT32 p3, UINT32 p4, UINT32 p5, UINT32 p6) {
    645     LogMsg(trace_set_mask, fmt_str, p1, p2, p3, p4, p5, p6);
    646 }
    647