diff gsm-fw/gpf/misc/printtofile.c @ 320:397b22c607c8

gsm-fw/gpf/misc/*.c: import from Leonardo semi-src
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sat, 12 Apr 2014 07:59:49 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsm-fw/gpf/misc/printtofile.c	Sat Apr 12 07:59:49 2014 +0000
@@ -0,0 +1,228 @@
+/* 
++------------------------------------------------------------------------------
+|  File:       printToFile.c
++------------------------------------------------------------------------------
+|  Copyright 2002 Texas Instruments Berlin, AG 
+|                 All rights reserved. 
+| 
+|                 This file is confidential and a trade secret of Texas 
+|                 Instruments Berlin, AG 
+|                 The receipt of or possession of this file does not convey 
+|                 any rights to reproduce or disclose its contents or to 
+|                 manufacture, use, or sell anything it may describe, in 
+|                 whole, or in part, without the specific written consent of 
+|                 Texas Instruments Berlin, AG. 
++----------------------------------------------------------------------------- 
+| Purpose:     This module implements some stream output functions.
++----------------------------------------------------------------------------- 
+*/ 
+
+#ifndef __PRINTTOFILE_C__
+#define __PRINTTOFILE_C__
+#endif
+ 
+#ifndef _TARGET_
+
+/*==== INCLUDES ===================================================*/
+
+#include "printtofile.h"
+
+#include "typedefs.h"
+#ifndef _LINUX_
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include "windows.h"
+#include "vsi.h"
+#include "time.h"
+#include <sys/types.h>
+#include <sys/timeb.h>
+#endif /* _LINUX_ */
+
+/*==== TYPES ======================================================*/
+
+
+/*==== CONSTANTS ==================================================*/
+
+
+/*==== EXTERNALS ==================================================*/
+
+
+/*==== VARIABLES ==================================================*/
+
+#ifndef _LINUX_
+static HANDLE mutEx;
+#endif /* _LINUX_ */
+
+/*==== FUNCTIONS ==================================================*/
+
+#ifndef RUN_INT_RAM
+/*
++------------------------------------------------------------------------------
+|  Function     :  PrintToFile
++------------------------------------------------------------------------------
+|  Description  :  print to file xx and do a printf() with ident. arguments
+|
+|  Parameters   :  const char *format, ... variable parameter list
+|
+|  Return       :  printf retval
+|                  
++------------------------------------------------------------------------------
+*/
+void initPrintToFile()
+{
+#ifdef _LINUX_
+  return;
+#else /* _LINUX_ */
+#ifndef _TARGET_
+#ifdef _DEBUG
+  FILE *fp;
+#endif
+
+  if ( (mutEx = OpenMutex (MUTEX_ALL_ACCESS, FALSE, "PrintToFile")) == NULL )
+  {
+    mutEx = CreateMutex( NULL, FALSE, "PrintToFile");
+#ifdef _DEBUG
+    fp = fopen("\\gpf\\BIN\\debug\\tstlog.txt", "w");
+    PrintToFile("\n\nStart logging:\n");
+#endif
+  }
+
+  if (mutEx == 0)
+  {
+    printf("PrintToFile semaphore creation failed!\n");
+  }
+#endif /* _LINUX_ */
+#endif
+}
+#endif
+
+#ifndef RUN_INT_RAM
+/*
++------------------------------------------------------------------------------
+|  Function     :  PrintToFile
++------------------------------------------------------------------------------
+|  Description  :  print to file xx and do a printf() with ident. arguments
+|
+|  Parameters   :  const char *format, ... variable parameter list
+|
+|  Return       :  printf retval
+|                  
++------------------------------------------------------------------------------
+*/
+int PrintToFile(const char *format, ... )
+{
+  int retval = 0;
+#ifndef _LINUX_
+#ifndef _TARGET_
+  va_list unamedArgumentList;
+  char* nextChar;
+  int ival;
+  char* sval;
+#ifdef _DEBUG
+  FILE *fp;
+  struct _timeb timebuf;
+  time_t seconds;
+  unsigned long int t;
+#endif
+  
+  if ( WaitForSingleObject (mutEx, INFINITE) == WAIT_FAILED )
+  {
+    printf("PrintToFile semaphore request failed! Is TST.exe up & running?\n");
+    return -1;
+  }
+  va_start(unamedArgumentList, format);
+#ifdef _DEBUG
+  fp = fopen("\\gpf\\BIN\\debug\\tstlog.txt", "a");
+  if ( fp != 0 )
+  {
+    time( &seconds );                   // seconds after 1.1.70 GMT
+    _ftime( &timebuf );
+    t = (unsigned long int)(seconds * 1000) + timebuf.millitm;
+
+    /*lint -e668 */
+    /*lint -e559 */
+#ifdef _TOOLS_
+  fprintf(fp, "TST   (%u): ", (unsigned int)t);
+#else
+  fprintf(fp, "Stack (%u): ", (unsigned int)t);
+#endif
+  }
+#endif /* _DEBUG */
+
+  /*lint -e662 */
+  for (nextChar = (char*) format; *nextChar; nextChar++)
+  {
+    if (*nextChar != '%')
+    {
+      putchar(*nextChar);
+#ifdef _DEBUG
+      if (fp != 0)
+      {
+        fputc(*nextChar,fp);
+      }
+#endif
+      continue;
+    }
+
+    switch (*++nextChar)
+    {
+      case 'd':
+        ival = va_arg(unamedArgumentList, int);
+        printf("%d", ival);
+#ifdef _DEBUG
+        if (fp != 0)
+        {
+          fprintf(fp, "%d", ival);
+        }
+#endif
+        break;
+      case 'x':
+        ival = va_arg(unamedArgumentList, int);
+        printf("%x", ival);
+#ifdef _DEBUG
+        if (fp != 0)
+        {
+          fprintf(fp, "%x", ival);
+        }
+#endif
+        break;
+      case 's':
+        for(sval = va_arg(unamedArgumentList, char*); *sval; sval++)
+        {
+          putchar(*sval);
+#ifdef _DEBUG
+          if (fp != 0)
+          {
+            fputc(*sval,fp);
+          }
+#endif
+        }
+        break;
+     default:
+        putchar(*nextChar);
+#ifdef _DEBUG
+        if (fp != 0)
+        {
+          fputc(*nextChar,fp);
+        }
+#endif
+        break;
+    }
+  }
+  /*lint +e662 */
+  va_end(unamedArgumentList);
+#ifdef _DEBUG
+  if (fp != 0)
+  {
+    fclose(fp);
+  }
+#endif
+  ReleaseMutex(mutEx);
+#endif /* !_LINUX_ */
+#endif /* _TARGET_ */
+  return retval;
+}
+#endif
+#endif