⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ctcust.c

📁 free sources for gsm
💻 C
📖 第 1 页 / 共 5 页
字号:
Name:    CTExampleArray
Desc:    Example of function with multiple parameters.
Params:  -
Returns: -
Caveats:
*/

static void CTExampleArray( void )
   {
   char  ShortString[10];

   CTSendStringResponse( "ExampleArrayFunc:\n" );
   CTSendStringResponse( "The first two parameters you entered multiplied by each other:" );
   GSMsprintf( ShortString, "%d\n", DummyArray[0] * DummyArray[1] );
   CTSendStringResponse( ShortString );
   CTSendStringResponse( "ExampleArrayFunc:DONE\n" );
   return;
   }

/*------------------------------------------------------------------------*/
/*
Name: ExampleCmdLineFunc
Desc: Example of function with string parameters.
      Please notice the structure of CTTokenList.
Params:  -
Returns: -
Caveats:
*/

static void CTExampleCmdLine( CTTokenList * CTCmd )
   {
   INT8  i;
   STRING str = GSM_NEW_STRING( 50 );

   CTSendStringResponse( "ExampleCmdLineFunc:\n" );
   CTSendStringResponse( "This type of function evaluates the tokens separated by commas in any way desired.\n" );
   CTSendStringResponse( "These are the parameters you entered:\n" );

   for ( i = 1; i < CTCmd->NumTokens; i++ )
      {
      GSMsprintf( str, "%s\n", CTCmd->Token[i] );
      CTSendStringResponse( str );
      }

   GSMFree( str );

   CTSendStringResponse( "ExampleCmdLineFunc:DONE\n" );
   return;
   }

#if  (_CAM_IC_ == UH_CAMIC_CLC_HERA)
/**Mtis_L1 2004.08.16 kdheon for sublcd preview */
BOOLEAN CTGetUnsigned( char *pszStr, UINT32 * pdwVal, UINT32 dwMin, UINT32 dwMax )
   {
   static const UINT8 HexDigit[] = "0123456789ABCDEF";
   BOOLEAN bHex = FALSE;
   char *pC = pszStr;
   UINT32 dwVal = 0,
         dwDigit,
         dwRadix,
         dwOverflow;

   while ( *pC && ( *pC < '0' ) && ( *pC > '9' ) )
      pC++;

   if ( ( *pC == '0' ) && ( ( pC[1] == 'x' ) || ( pC[1] == 'X' ) ) )
      {
      pC += 2;
      bHex = TRUE;
      }

   dwRadix = ( bHex ? 16 : 10 );
   dwOverflow = 0xffffffff / dwRadix;

   while ( *pC )
      {
      if ( dwVal >= dwOverflow )/* overflow ? */
         return FALSE;

      if ( bHex && ( *pC >= 'a' ) && ( *pC <= 'f' ) )
         *pC = 'A' + ( *pC - 'a' );

      for ( dwDigit = 0; dwDigit < dwRadix; dwDigit++ )
         if ( *pC == HexDigit[dwDigit] )
            break;

      if ( dwDigit >= dwRadix ) /* invalid char ? */
         return FALSE;

      dwVal = dwVal * dwRadix + dwDigit;
      pC++;
      }

   if ( ( dwMin != dwMax ) && ( ( dwVal < dwMin ) || ( dwVal > dwMax ) ) )
      return FALSE;

   *pdwVal = dwVal;
   return TRUE;
   }

/**Mtis_L1 2004.08.16 kdheon for sublcd preview */
void PrintMemory (PRINTDEV device, UINT32 Rdsize, UINT32 PrintAddr, UINT8 LongEN)
{
	int i,j;
	UINT16* DumpContextBufPtr;
	UINT32* WordReadPtr;
	UINT16* HWordReadPtr;
	UINT16* tmpDumpctxt = NULL;
	//UINT8* DumpChar;

	DumpContextBufPtr = (UINT16*)GSMMalloc(Rdsize);
	tmpDumpctxt = (UINT16*) DumpContextBufPtr;


	GSMmemset(DumpContextBufPtr, 0, Rdsize);
     memcpy(DumpContextBufPtr, PrintAddr, Rdsize);
	WordReadPtr = (UINT32*)DumpContextBufPtr;
	HWordReadPtr = DumpContextBufPtr;
	//DumpChar = (UINT8*)DumpContextBufPtr;

	for (i = 0; i < (Rdsize/16); i++)
	{
			GSMcprintf(device, "0x%08X :  ", (UINT32)PrintAddr + ( i * 0x10 ));
		if (LongEN)
		{
			
		   	for (j = 0; j < 4; j++) 
		   	  {
	            	GSMcprintf(device, "%08X ", *WordReadPtr++);
	             }
		}
		else
		{
		   	for (j = 0; j < 8; j++) 
		   	  {
	            	GSMcprintf(device, "%04X ", *HWordReadPtr++);
	             }

		}
          /*
            	GSMcprintf(device, "\t\t\t");             
	   	for (j = 0; j < 16; j++) 
	   	  {
            	GSMcprintf(device, "%c ", *DumpChar++);
             }
          /*   
		     TRSetTransparent( device );  /* Put tracer in transparent mode */
            	GSMcprintf(device, "\n");
          if ( (i % 50)  == 0)
            WDResetWatchdogTimer();

      }

      GSMFree( tmpDumpctxt );      

}

/**Mtis_L1 2004.08.16 kdheon for sublcd preview */
void Dump_Memory(UINT8* dumpaddr, UINT32 ReadSize, UINT8 LongEN, UINT8* InitStr)
{
	PRINTDEV device;
     extern CHIP_SET_TYPE Chip_Set;
	extern void TRSafePutChar( char Char );
	UINT8 i;

	//GSMClearTrace(  );           /* Stop tracing, as this results in system calls */

	/*If you wish to use GSMPrintf, You Can Point This Function "GSMPutChar"*/
	device = TRSafePutChar;

      TRSafeInitTracePort( Chip_Set );  /* Make sure UART is initialized properly */
      TRSafeEmptyTRPutBuffer( device );  /* If connected to OptiTrace, dump any traces
                                             that may be still queued in TRPutBuffer */
      TRSetTransparent( device );  /* Put tracer in transparent mode */

      if (InitStr != NULL)
          GSMcprintf(device, InitStr);
      
 	 GSMcprintf(device, "\n!!Memory Dump Start\n");
	 PrintMemory(device, ReadSize, dumpaddr, LongEN);
	 GSMcprintf(device, "... Memory Dump : End \n\n");
}

/*---------------------------- Global Functions: -------------------------*/
/*
Name:    CTHERADeviceControl
Desc:   Control the "CL851S64" ASIC (HERA)
Params:  -
Returns: 
Caveats:
*/

typedef enum
{
    CAM_DEVICE_INIT,
    CAM_PREVIEW,
    CAM_PREVIEW_OFF,
    CAM_SINGLECAPTURE,
    CAM_MULTISHOT,
    CAM_SPLITSHOT,
    CAM_FRAMESHOT,
    CAM_MPEG4_RECORD,
    CAM_MPEG4_RECORD_STOP,
    CAM_MPEG4_PLAY,
    CAM_MPEG4_PLAY_STOP,
    CAM_MP3_PLAY,
    CAM_MP3_STOP,
    CAM_DEVICE_DEINIT,
    CAM_REG_READ,
    CAM_REG_WRITE,
    CAM_API_WRITE
}  CAM_MODE;

static void CTHERADeviceControl (CTTokenList * CTCmd)
{
   CAM_MODE CamMode;
   extern UINT32 Get_Register(UINT32 Address);
   extern void Set_Register(UINT32 Address, UINT32 Data);
   extern void   Cmd_WriteHeraCommand(U16 command, U16 parameter);
   UINT8 strbuff[256];
   UINT8 strbuff2[256];
   UINT8 InitStr[256];
   
  if(GSMstrcmp( "init", CTCmd->Token[1]) == 0)
   CamMode = CAM_DEVICE_INIT;
  else if(GSMstrcmp( "preview", CTCmd->Token[1]) == 0)
   CamMode = CAM_PREVIEW;
  else if(GSMstrcmp( "previewoff", CTCmd->Token[1]) == 0)
   CamMode = CAM_PREVIEW_OFF;   
  else if(GSMstrcmp( "singleshot", CTCmd->Token[1]) == 0)
   CamMode = CAM_SINGLECAPTURE;
  else if(GSMstrcmp( "multishot", CTCmd->Token[1]) == 0)
   CamMode = CAM_MULTISHOT;
  else if(GSMstrcmp( "splitshot", CTCmd->Token[1]) == 0)
   CamMode = CAM_SPLITSHOT;
  else if(GSMstrcmp( "frameshot", CTCmd->Token[1]) == 0)
   CamMode = CAM_FRAMESHOT;
  else if(GSMstrcmp( "mpeg4record", CTCmd->Token[1]) == 0)
   CamMode = CAM_MPEG4_RECORD;
  else if(GSMstrcmp( "mpeg4recordstop", CTCmd->Token[1]) == 0)
   CamMode = CAM_MPEG4_RECORD_STOP;
  else if(GSMstrcmp( "mpeg4play", CTCmd->Token[1]) == 0)
   CamMode = CAM_MPEG4_PLAY;
  else if(GSMstrcmp( "mpeg4playstop", CTCmd->Token[1]) == 0)
   CamMode = CAM_MPEG4_PLAY_STOP;
  else if(GSMstrcmp( "mp3play", CTCmd->Token[1]) == 0)
   CamMode = CAM_MP3_PLAY;
  else if(GSMstrcmp( "mp3stop", CTCmd->Token[1]) == 0)
   CamMode = CAM_MP3_STOP;   
  else if(GSMstrcmp( "exit", CTCmd->Token[1]) == 0)
   CamMode = CAM_DEVICE_DEINIT;
  else if(GSMstrcmp( "readreg", CTCmd->Token[1]) == 0)
   CamMode = CAM_REG_READ;
  else if(GSMstrcmp( "writereg", CTCmd->Token[1]) == 0)
   CamMode = CAM_REG_WRITE;
  else if(GSMstrcmp( "writeapi", CTCmd->Token[1]) == 0)
    CamMode=CAM_API_WRITE;
  else
  {
      CTSendStringResponse( "UNKNOWN Cam Command" );
      return;
  }

  switch(CamMode)
  {
      case CAM_DEVICE_INIT:
      {
         CTSendStringResponse( "Camera Device Init " );
         uiCameraOn();
      }
      break;
#if 0
      case CAM_PREVIEW:
      {
          if(GSMstrcmp( "main", CTCmd->Token[2]) == 0)
          {
             /*Mtis_L1 kdheon 2004.08.19 sublcd preview debug */          
             SetCurLCD(MAIN_LCD);
             if(GSMstrcmp( "jpeg", CTCmd->Token[3]) == 0)
                CamSetPreview(0/*JPEG*/,2, 0); // QVGA Preview
             else if(GSMstrcmp( "mpeg", CTCmd->Token[3]) == 0)
                CamSetPreview(1/*MPEG*/,2, 0); // QVGA Preview
             CamPreviewOn();
          }
             /*Mtis_L1 kdheon 2004.08.19 sublcd preview debug */
          else if (GSMstrcmp( "sub", CTCmd->Token[2]) == 0)
          {
             SetCurLCD(SUB_LCD);
             CamSetPreview(0,2, 0); // QVGA Preview
             CamPreviewOn();
          }
          else
          {
               CTSendStringResponse( "Camera Preview Parameter Error" );
               return;
          }
      }
#endif
      break;
      case CAM_PREVIEW_OFF:
      {
         CamPreviewEnd();
         CTSendStringResponse( "Camera Preview OFF" );
      }
      break;      
      case CAM_SINGLECAPTURE:
      {
#if defined(__LCD_COLOR_240x320__) 
         #define SAVE_SIZE 240 * 320 * 2
#else
         #define SAVE_SIZE 176 * 160 * 2         
#endif
         extern CAM_ERROR CamCaptureSingle(void );
         extern CamBitmap_t SJpeg;
         extern UINT8 *CamGramImage;
         UINT8 Readbuff[SAVE_SIZE];
         int status;
         
         CamCaptureSingle();
         /*JPEG READ DATA Dump*/
         GSMstrcpy(InitStr, "\n\nJPEG Read Data :\n");
         Dump_Memory(SJpeg.data, SAVE_SIZE, FALSE, InitStr);
         /*RGB READ DATA Dump*/         
         GSMstrcpy(InitStr, "\n\nRGB Read Data :\n");
         Dump_Memory((UINT8*)CamGramImage, SAVE_SIZE, FALSE, InitStr);         
         /*Save Samsung NandFlash*/         
         nffsChangeDir(nffs_dir[CAMERA]);
         status = nffsWriteFile("test.jpeg", CamGramImage, SAVE_SIZE);
         if(status)
            GSMprintf("### nffsWriteFile FAIL!!\n");
         nffsChangeDir("/");
         CTSendStringResponse( "NandSave : Done" );
         /*Saved Nand DATA Dump*/      
         if (nffsChangeDir(nffs_dir[CAMERA]))
            GSMprintf("### nffsReadFile FAIL!!\n");
         nffsReadFile("test.jpeg", Readbuff, SAVE_SIZE);
         GSMstrcpy(InitStr, "\n\nSaved NandData :\n");
         Dump_Memory((UINT8*)Readbuff, SAVE_SIZE, FALSE, InitStr);
      }
      break;
      case CAM_MULTISHOT:
      {
         // To do
      }
      break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -