DebugInit.c
上传用户:lqx1163
上传日期:2014-08-13
资源大小:9183k
文件大小:13k
源码类别:

MTK

开发平台:

C/C++

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*******************************************************************************
  36.  * Filename:
  37.  * ---------
  38.  *  DebugInit.c
  39.  *
  40.  * Project:
  41.  * --------
  42.  *  MAUI
  43.  *
  44.  * Description:
  45.  * ------------
  46.  *  
  47.  *
  48.  * Author:
  49.  * -------
  50.  *  
  51.  *
  52.  *==============================================================================
  53.  *             HISTORY
  54.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  55.  *------------------------------------------------------------------------------
  56.  * removed!
  57.  *
  58.  *------------------------------------------------------------------------------
  59.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  60.  *==============================================================================
  61.  *******************************************************************************/
  62. /**
  63.  * Copyright Notice
  64.  * ?2002 - 2003, Pixtel Communications, Inc., 1489 43rd Ave. W.,
  65.  * Vancouver, B.C. V6M 4K8 Canada. All Rights Reserved.
  66.  *  (It is illegal to remove this copyright notice from this software or any
  67.  *  portion of it)
  68.  */
  69. /**************************************************************
  70.    FILENAME : DebugInit.c
  71.    PURPOSE     : To put all trace related functionality in common place
  72.    REMARKS     : nil
  73.    AUTHOR      : Vijay Vaidya
  74.    DATE     : Sep' 4, 2002
  75. **************************************************************/
  76. #include "stdC.h"
  77. #include "DebugInitDef.h"
  78. #ifdef MMI_ON_HARDWARE_P
  79. #include "kal_trace.h"
  80. #include "gv.h"
  81. #include "tst_def.h"
  82. #endif /* MMI_ON_HARDWARE_P */ 
  83. #ifdef DEBUG_ASSERT
  84. BOOL g_mmi_frm_enable_debug_assert = MMI_FALSE;
  85. #endif 
  86. #ifdef DEBUG_FILE
  87. extern FILE *fpDebugTrace;
  88. #endif 
  89. #ifdef MMI_ON_WIN32
  90. #ifdef DEBUG_WINDOW
  91. extern void DebugWindowAlloc();
  92. extern void DisplayToDebugwindow(S8 *);
  93. #endif /* DEBUG_WINDOW */ 
  94. #endif /* MMI_ON_WIN32 */ 
  95. #ifdef MMI_ON_HARDWARE_P
  96. extern void custom_print(kal_char *string);
  97. #endif 
  98. /*****************************************************************************
  99.  * FUNCTION
  100.  *  get_current_module_id
  101.  * DESCRIPTION
  102.  *  Initialize trace mechanism
  103.  *  
  104.  *  This sets up the desired trace for debugging at predefined levels
  105.  * PARAMETERS
  106.  *  void
  107.  * RETURNS
  108.  *  void
  109.  *****************************************************************************/
  110. #ifdef MMI_ON_HARDWARE_P
  111. kal_mutexid mmi_mutex_trace;
  112. #define TRACE_MUTEX_BEGIN        kal_take_mutex(mmi_mutex_trace);
  113. #define TRACE_MUTEX_END       kal_give_mutex(mmi_mutex_trace);
  114. #define GET_CURRENT_MODULE_ID    get_current_module_id()
  115. #else /* MMI_ON_HARDWARE_P */ 
  116. #define TRACE_MUTEX_BEGIN
  117. #define TRACE_MUTEX_END
  118. #define GET_CURRENT_MODULE_ID    MOD_MMI
  119. #endif /* MMI_ON_HARDWARE_P */ 
  120. #ifdef MMI_ON_HARDWARE_P
  121. static module_type get_current_module_id(void)
  122. {
  123.     /*----------------------------------------------------------------*/
  124.     /* Local Variables                                                */
  125.     /*----------------------------------------------------------------*/
  126.     /*----------------------------------------------------------------*/
  127.     /* Code Body                                                      */
  128.     /*----------------------------------------------------------------*/
  129.     switch (stack_get_active_module_id())
  130.     {
  131.     #ifdef __J2ME__
  132.         case MOD_J2ME:
  133.             return MOD_J2ME;
  134.         case MOD_JASYN:
  135.             return MOD_JASYN;
  136.     #endif /* __J2ME__ */ 
  137.         default:
  138.             return MOD_MMI;
  139.     }
  140. }
  141. #endif /* MMI_ON_HARDWARE_P */ 
  142. /*****************************************************************************
  143.  * FUNCTION
  144.  *  DebugInit
  145.  * DESCRIPTION
  146.  *  
  147.  * PARAMETERS
  148.  *  void
  149.  * RETURNS
  150.  *  void
  151.  *****************************************************************************/
  152. void DebugInit()
  153. {
  154.     /*----------------------------------------------------------------*/
  155.     /* Local Variables                                                */
  156.     /*----------------------------------------------------------------*/
  157.     /*----------------------------------------------------------------*/
  158.     /* Code Body                                                      */
  159.     /*----------------------------------------------------------------*/
  160. #ifdef MMI_ON_WIN32
  161. #ifdef DEBUG_FILE
  162.     if (!(fpDebugTrace = fopen("DebugTraceFile", "w")))
  163.     {
  164.         exit(1);
  165.     }
  166. #endif /* DEBUG_FILE */ 
  167. #ifdef MMI_ON_WIN32
  168. #ifdef DEBUG_WINDOW
  169.     DebugWindowAlloc();
  170. #endif 
  171. #endif /* MMI_ON_WIN32 */ 
  172. #endif /* MMI_ON_WIN32 */ 
  173. }
  174. /*****************************************************************************
  175.  * FUNCTION
  176.  *  kal_disable_trace
  177.  * DESCRIPTION
  178.  *  To display/print to the debug trace window/file
  179.  * PARAMETERS
  180.  *  mod_id          [IN]        
  181.  *  trc_class       [IN]        
  182.  *  Variable(?)     [IN]        Arguments with format being the first one
  183.  * RETURNS
  184.  *  void
  185.  *****************************************************************************/
  186. /* MTK Elvis  it may cause MMI-task stack to overflow */
  187. S8 nPrintableStr[1000]; /* Assumed..this can chane if need to dump more bytes */
  188. /* MTK end */
  189. #ifdef MMI_ON_HARDWARE_P
  190. extern kal_bool tst_ft_mode;
  191. extern kal_uint8 tst_module_filter_g[];
  192. extern kal_uint8 tst_trace_filter_g[];
  193. MMI_BOOL kal_disable_trace(module_type mod_id, trace_class_enum trc_class)
  194. {
  195.     /*----------------------------------------------------------------*/
  196.     /* Local Variables                                                */
  197.     /*----------------------------------------------------------------*/
  198.     kal_uint32 tmp_filter;
  199.     /*----------------------------------------------------------------*/
  200.     /* Code Body                                                      */
  201.     /*----------------------------------------------------------------*/
  202.     if (tst_ft_mode == KAL_TRUE)
  203.     {
  204.         return MMI_TRUE;
  205.     }
  206.     if ((tst_module_filter_g[mod_id / 8] & (0x01 << (mod_id % 8))) == 0)
  207.     {
  208.         return MMI_TRUE;
  209.     }
  210.     tmp_filter = (tst_trace_filter_g[mod_id * 2]) + (tst_trace_filter_g[mod_id * 2 + 1] << 8);
  211.     if ((tmp_filter & (0x01 << trc_class)) == 0)
  212.     {
  213.         return MMI_TRUE;
  214.     }
  215.     return MMI_FALSE;
  216. }
  217. #endif /* MMI_ON_HARDWARE_P */ 
  218. /*****************************************************************************
  219.  * FUNCTION
  220.  *  Trace2
  221.  * DESCRIPTION
  222.  *  
  223.  * PARAMETERS
  224.  *  fmt             [IN]        
  225.  *  arg_type        [?]         
  226.  * RETURNS
  227.  *  void
  228.  *****************************************************************************/
  229. void Trace2(U32 fmt, S8 *arg_type, ...)
  230. {
  231.     /*----------------------------------------------------------------*/
  232.     /* Local Variables                                                */
  233.     /*----------------------------------------------------------------*/
  234.     va_list MyList;
  235.     int ival;
  236.     /*----------------------------------------------------------------*/
  237.     /* Code Body                                                      */
  238.     /*----------------------------------------------------------------*/
  239.     ival = fmt;
  240. #ifdef MMI_ON_HARDWARE_P
  241.     if (kal_disable_trace(GET_CURRENT_MODULE_ID, TRACE_FUNC + ival))
  242.     {
  243.         return;
  244.     }
  245. #endif /* MMI_ON_HARDWARE_P */ 
  246.     TRACE_MUTEX_BEGIN va_start(MyList, arg_type);
  247.     vsprintf(nPrintableStr, arg_type, MyList);
  248.     va_end(MyList);
  249. #ifdef MMI_ON_WIN32
  250. #ifdef DEBUG_FILE
  251.     if (fpDebugTrace)
  252.     {
  253.         fputs(nPrintableStr, fpDebugTrace);
  254.     }
  255. #endif /* DEBUG_FILE */ 
  256. #ifdef MMI_ON_WIN32
  257. #ifdef DEBUG_WINDOW
  258.     DisplayToDebugwindow(nPrintableStr);
  259.     DisplayToDebugwindow("n");
  260. #endif /* DEBUG_WINDOW */ 
  261. #endif /* MMI_ON_WIN32 */ 
  262. #endif /* MMI_ON_WIN32 */ 
  263. #ifdef MMI_ON_HARDWARE_P
  264.     if (ival <= MAX_MMI_TRACE_LOG_TYPE)
  265.     {
  266.         kal_wap_trace(GET_CURRENT_MODULE_ID, TRACE_FUNC + ival, nPrintableStr);
  267.     }
  268. #endif /* MMI_ON_HARDWARE_P */ 
  269. TRACE_MUTEX_END}
  270. /*****************************************************************************
  271.  * FUNCTION
  272.  *  Trace3
  273.  * DESCRIPTION
  274.  *  
  275.  * PARAMETERS
  276.  *  fmt             [IN]        
  277.  *  arg_type        [IN]        
  278.  * RETURNS
  279.  *  void
  280.  *****************************************************************************/
  281. void Trace3(U32 fmt, U32 arg_type, ...)
  282. {
  283. #ifdef MMI_ON_WIN32
  284.     /*----------------------------------------------------------------*/
  285.     /* Local Variables                                                */
  286.     /*----------------------------------------------------------------*/
  287.     va_list MyList;
  288.     int ival;
  289.     /*----------------------------------------------------------------*/
  290.     /* Code Body                                                      */
  291.     /*----------------------------------------------------------------*/
  292.     ival = fmt;
  293.     va_start(MyList, arg_type);
  294.     vsprintf(nPrintableStr, get_trace_table(arg_type), MyList);
  295.     va_end(MyList);
  296. #ifdef DEBUG_FILE
  297.     if (fpDebugTrace)
  298.     {
  299.         fputs(nPrintableStr, fpDebugTrace);
  300.     }
  301. #endif /* DEBUG_FILE */ 
  302. #ifdef DEBUG_WINDOW
  303.     DisplayToDebugwindow(nPrintableStr);
  304.     DisplayToDebugwindow("n");
  305. #endif /* DEBUG_WINDOW */ 
  306. #endif /* MMI_ON_WIN32 */ 
  307. }
  308. /*****************************************************************************
  309.  * FUNCTION
  310.  *  Trace
  311.  * DESCRIPTION
  312.  *  To display/print to the debug trace window/file
  313.  * PARAMETERS
  314.  *  fmt             [?]         
  315.  *  Variable(?)     [IN]        Arguments with format being the first one
  316.  * RETURNS
  317.  *  void
  318.  *****************************************************************************/
  319. void Trace(S8 *fmt, ...)
  320. {
  321.     /*----------------------------------------------------------------*/
  322.     /* Local Variables                                                */
  323.     /*----------------------------------------------------------------*/
  324.     va_list MyList;
  325.     /*----------------------------------------------------------------*/
  326.     /* Code Body                                                      */
  327.     /*----------------------------------------------------------------*/
  328. #ifdef MMI_ON_HARDWARE_P
  329.     if (kal_disable_trace(GET_CURRENT_MODULE_ID, TRACE_INFO))
  330.     {
  331.         return;
  332.     }
  333. #endif /* MMI_ON_HARDWARE_P */ 
  334.     TRACE_MUTEX_BEGIN va_start(MyList, fmt);
  335.     vsprintf(nPrintableStr, fmt, MyList);
  336.     va_end(MyList);
  337. #ifdef MMI_ON_WIN32
  338. #ifdef DEBUG_FILE
  339.     if (fpDebugTrace)
  340.     {
  341.         fputs(nPrintableStr, fpDebugTrace);
  342.     }
  343. #endif /* DEBUG_FILE */ 
  344. #ifdef MMI_ON_WIN32
  345. #ifdef DEBUG_WINDOW
  346.     DisplayToDebugwindow(nPrintableStr);
  347.     DisplayToDebugwindow("n");
  348. #endif /* DEBUG_WINDOW */ 
  349. #endif /* MMI_ON_WIN32 */ 
  350. #endif /* MMI_ON_WIN32 */ 
  351. #ifdef MMI_ON_HARDWARE_P
  352.     kal_wap_trace(GET_CURRENT_MODULE_ID, TRACE_INFO, nPrintableStr);
  353. #endif 
  354. TRACE_MUTEX_END}
  355. /*
  356.  * void DebugClose()
  357.  * {
  358.  * fclose(fpDebugTrace);
  359.  * }
  360.  */