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

📄 debugtask.c

📁 epson usb2.0 控制芯片 S1R72V05 固件程序。
💻 C
📖 第 1 页 / 共 5 页
字号:
		/* Initialization of string for saving */
		memset( string , 0x00, sizeof( string ) );
		watch_print.watchLong = 0;
		/* Arrange string to output */
		switch ( Watch_Area.watchMember[i].size )
		{

			case DBG_VALUE_SIZE_BYTE:

				/* Transfer address contents */
				watch_print.watchChar.watchChar1  =  *(Watch_Area.watchMember[i].address);
				/* Output 6 spaces */
				PrintOut("      ");
				break;

			case DBG_VALUE_SIZE_WORD:

				/* Transfer address contents */
				watch_print.watchChar.watchChar1  =  *( Watch_Area.watchMember[i].address );
				watch_print.watchChar.watchChar2  =  *( Watch_Area.watchMember[i].address + 1);
				/* Output 4 spaces */
				PrintOut("    ");
				break;

			case DBG_VALUE_SIZE_DWORD:

				/* Transfer address contents */
				watch_print.watchChar.watchChar1  =  *( Watch_Area.watchMember[i].address );
				watch_print.watchChar.watchChar2  =  *( Watch_Area.watchMember[i].address + 1);
				watch_print.watchChar.watchChar3  =  *( Watch_Area.watchMember[i].address + 2);
				watch_print.watchChar.watchChar4  =  *( Watch_Area.watchMember[i].address + 3);
				break;

			default:
				break;
		}

		/* Initialization of string for saving */
		memset( string , 0x00, sizeof( string ) );
		/* Output address contents in hexadecimal */
		ValChangeStr ( string , watch_print.watchLong , Watch_Area.watchMember[i].size , PRINT_HEXA_MODE );
		PrintOut( string );
		/* Output address contents in decimal */
		PrintOut(" ( ");
		StrChangeHex( &value , string , Watch_Area.watchMember[i].size );
		/* Initialization of string for saving */
		memset( string , 0x00, sizeof( string ) );
		/* Output address contents in decimal */
		ValChangeStr( string , value , DBG_VALUE_SIZE_DWORD , PRINT_DECIMAL_MODE );
		PrintOut( string );
		PrintOut(" )");

	}

	return result;
}
/*
//=============================================================================
// Function_Name: FuncCmdProcWTC
// description	: Command ( watch clear ) process
// argument		: ???
// return		: ???
// flag			: ???
// global		: ???
//=============================================================================
*/
LONG  FuncCmdProcWTC( LONG extra )
{
	LONG	result =  DBG_STATUS_SUCCESS;
	int		i,j;
	CHAR	string[DBG_STR_MAX];
	ULONG	value;


	value = 0;	// Cope with warning for the optimization.

	/* Output memory state */
	for( i = 0 ; ; i++ )
	{
		if( *Watch_Area.watchMember[i].name == '\0' )
		{
			break;
		}
		/* Output contents */
		PrintOut("\r\n");
		PrintOut( Watch_Area.watchMember[i].name );
		PrintOut(" = ");
		/* Clear memory contents with 0 */
		for (j = 0 ; j < Watch_Area.watchMember[i].size ; j++)
		{
			/* Clear memory contents with 0 */
			*(Watch_Area.watchMember[i].address + j )  =  0x00;
		}
		/* Initialization of string for saving */
		memset( string , 0x00, sizeof( string ) );
		/* Arrange string to output */
		switch ( Watch_Area.watchMember[i].size )
		{
			case DBG_VALUE_SIZE_BYTE:

				/* Transfer address contents */
				watch_print.watchChar.watchChar1  =  *(Watch_Area.watchMember[i].address);
				/* Output 6 spaces */
				PrintOut("      ");
				break;

			case DBG_VALUE_SIZE_WORD:

				/* Transfer address contents */
				watch_print.watchChar.watchChar1  =  *( Watch_Area.watchMember[i].address );
				watch_print.watchChar.watchChar2  =  *( Watch_Area.watchMember[i].address + 1);
				/* Output 4 spaces */
				PrintOut("    ");
				break;

			case DBG_VALUE_SIZE_DWORD:

				/* Transfer address contents */
				watch_print.watchChar.watchChar1  =  *( Watch_Area.watchMember[i].address );
				watch_print.watchChar.watchChar2  =  *( Watch_Area.watchMember[i].address + 1);
				watch_print.watchChar.watchChar3  =  *( Watch_Area.watchMember[i].address + 2);
				watch_print.watchChar.watchChar4  =  *( Watch_Area.watchMember[i].address + 3);
				break;
			default:
				break;
		}
		/* Output address contents in hexadecimal */
		ValChangeStr ( string , watch_print.watchLong , Watch_Area.watchMember[i].size , PRINT_HEXA_MODE );
		PrintOut( string );
		/* Output address contents in decimal */
		PrintOut(" ( ");
		StrChangeHex( &value , string , Watch_Area.watchMember[i].size );
		/* Initialization of string for saving */
		memset( string , 0x00, sizeof( string ) );
		ValChangeStr( string , value , DBG_VALUE_SIZE_DWORD , PRINT_DECIMAL_MODE );
		PrintOut( string );
		PrintOut(" )");

	}

	return result;
}
/*
//=============================================================================
// Function_Name: FuncCmdProcFlow
// description	: Command ( Flow ) process
// argument		: ???
// return		: ???
// flag			: ???
// global		: ???
//=============================================================================
*/
LONG  FuncCmdProcFlow( LONG extra )
{
	LONG  result =	DBG_STATUS_SUCCESS;

	/* Flow switch */
	FlowToggle = !FlowToggle;
	/* Flow level */
	FlowLevel  =  CurrentData.dataMember.rcvAddress;
	/* Output state */
	if( FlowToggle == TRUE )
	{
		/* Set to ON */
		PrintOut("-----  FLOW : ON   -----");
	}
	else
	{
		/* Set to OFF */
		PrintOut("-----  FLOW : OFF  -----");
	}

	return result;
}
/*
//=============================================================================
// Function_Name: FuncCmdProcHelp
// description	: Command ( help ) process
// argument		: ???
// return		: ???
// flag			: ???
// global		: ???
//=============================================================================
*/
LONG  FuncCmdProcHelp( LONG extra )
{
	LONG  result =	DBG_STATUS_SUCCESS;
	int   i;

	/* Output command table */
	for( i = 0; ; i++ )
	{
		if( g_Tbl_CmdInfo[ i ].pString == NULL )
		{
			break;				// Finish in table end
		}

		/* Output command string except NULL string */
		if( *g_Tbl_CmdInfo[ i ].pString  !=  '\0' )
		{
			/* Output command name */
			PrintOut("     ");
			PrintOut( g_Tbl_CmdInfo[ i ].pString );
		}
		else
		{
			PrintOut("\r\n ");
		}

		/* Output command extra information 1 */
		PrintOut(" ");
		PrintOut( g_Tbl_CmdInfo[ i ].info1 );
		/* Output command extra information 2 */
		PrintOut("	");
		PrintOut( g_Tbl_CmdInfo[ i ].info2 );
		PrintOut("\r\n");
	}

	return result;
}
/*
//=============================================================================
// Function_Name: FuncCmdProcIDEMode
// description	: Command ( IDE MODE ) process
// argument		: ???
// return		: ???
// flag			: ???
// global		: ???
//=============================================================================
*/
LONG  FuncCmdProcIDEMode( LONG extra )
{
	LONG  result =	DBG_STATUS_SUCCESS;

	return result;
}
/*
//=============================================================================
// Function_Name: ErrOutput
// description	: Error string output function
// argument		: ???
// return		: ???
// flag			: ???
// global		: ???
//=============================================================================
*/
BOOL  ErrOutput( LONG  inStatus )
{
	PrintOut("\r\n");
	switch( inStatus )
	{
		case DBG_STATUS_UNSUCCESSFUL:
			/* General error */
			PrintOut("..ERROR..");
			break;

		case DBG_STATUS_INVALID_COMMAND:
			/* Command error */
			PrintOut("..INVALID COMMAND..");
			break;

		case DBG_STATUS_INVALID_ADDRESS:
			/* Address error */
			PrintOut("..INVALID ADDRESS..");
			break;

		case DBG_STATUS_INVALID_DATA:
			/* Data error */
			PrintOut("..INVALID DATA..");
			break;

		case DBG_STATUS_PARAM_ERROR:
			/* parameter error */
			PrintOut("..PARAMETER ERROR..");
			break;
	}

	/* Command initialization in case of error */
	memset( &CurrentData , 0x00, sizeof( DATA_COMPOSITION ) );

	return TRUE;
}

/*
//=============================================================================
// Function_Name: CheckCapitalAndSmall
// description	: Sameness judgement of upper case letter / lower case letter
// argument		: Comparison origin character ( source )
//				  Comparison destination character ( destination )
// return		: TRUE		Confirm agree in sameness
//				  FALSE		Don't agree in sameness
//
// 	Identity upper case letter and lower case letter, carry out character comparison.
//=============================================================================
*/
BOOL  CheckCapitalAndSmall( UCHAR Src, UCHAR Dest )
{
	BOOL	result;  // Return value

	if( !(((Src >= 'A') && (Src <= 'Z')) ||
		  ((Src >= 'a') && (Src <= 'z'))) )
	{
		/* It is not letter */
		if((Src >= '0') && (Src <= '9'))
		{
			/* Digit */
			if(Src == Dest)
			{
				result = TRUE;
			}
			else
			{
				result = FALSE;
			}
		}
		else
		{
			/* It is not letter/digit permitted */
			/* Symbol */
			if(Src == Dest)
			{
				result = TRUE;
			}
			else
			{
				result = FALSE;
			}
		}
	}
	else
	{
		/* Letter */
		/* At least, is it agreed with first collum of ASCII code? */
		if((Src & 0x0F) == (Dest & 0x0F))
		{
			/* Is 2nd collum of ASCII code even number or odd number? */
			if((Src & 0x10) == (Dest & 0x10))
			{
				result = TRUE;
			}
			else
			{
				result = FALSE;
			}
		}
		else
		{
			result = FALSE;
		}
	}

	return	result;
}
/*
//=============================================================================
// Function_Name: StrChangeHex
// description	: Numeric value change process
// argument		: ???
// return		: ???
// flag			: ???
// global		: ???
//=============================================================================
*/
LONG StrChangeHex( ULONG* pHexConvValue, CHAR* pStr , UCHAR  size )
{
	int	strSize;
	int	i;
	LONG  result = DBG_STATUS_SUCCESS;

	i = 0;
	// Remove spaces of start
	while( *(pStr + i) == ' ' )
	{
		i++;
	}
	/* Inputted string */
	strSize = strlen( (CHAR *)pStr );
	/* Subtract start spaces' worth from string size */
	strSize -=	i;
	/* Subtract 1 byte for NULL byte */

	// Return error if the string size is 0
	if( strSize == 0 )
	{
		result = DBG_STATUS_NOINPUT;
		return result;
	}

	// Return error if string size is greater than specified size
	if( strSize > size )
	{
		result = DBG_STATUS_UNSUCCESSFUL;
		return result;
	}
	// Judgement of hexadecimal
	for( ; i < strSize; i++ )
	{
		if( !isxdigit( *(pStr + i) ) )
		{
			result = DBG_STATUS_UNSUCCESSFUL;
			return result;
		}
	}

	// Hexadecimal change
	*pHexConvValue = strtoul( (CHAR *)pStr, NULL, 16 );
	return	result;
}

/*
//=============================================================================
// Function_Name: ValChangeStr
// description	: String change process
// argument		: ???
// return		: ???
// flag			: ???
// global		: ???
//=============================================================================
*/
VOID  ValChangeStr( CHAR* str , ULONG  Val , UCHAR type , UCHAR mode)
{
	int i,j;								// Index
	int strLen;							// Length of string
	LONG quot;							// For saving quotient
	LONG rem;							// For saving the rest
	char c[ DBG_VALUE_SIZE_DWORD + 1 ];		// For saving string

	/* Initialize saving string */
	memset( c , 0x00 , sizeof(c) );

	for ( i = type - 1 ; i >=  0 ; i-- )
	{
		/* Case of output format is decimal */
		if( mode ==  PRINT_DECIMAL_MODE )
		{
			/* Save the quotient devided by 10 */
			quot = Val	/ 10;
			/* Save the rest devided by 10 */
			rem = Val  % 10;
		}
		else if( mode ==  PRINT_HEXA_MODE )
		/* Case of output format is hexadecimal */
		{
			/* Save the quotient devided by 10h */
			quot = Val	/ 0x10;
			/* Save the rest devided by 1h */
			rem = Val  % 0x10;
		}
		else
		{
			quot = 0;
			rem = 0;
		}

		if( quot == 0 && rem == 0 && mode ==  PRINT_DECIMAL_MODE )
		{

⌨️ 快捷键说明

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