亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? kslib.c

?? 三星4510開發板Sdns100上代的演示程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*************************************************************************/
/*                                                                       */
/* FILE NAME                                      VERSION                */
/*                                                                       */
/*      kslib.c                    		 KS32C50100   : version 1.0 */
/*                                                                       */
/* COMPONENT                                                             */
/*                                                                       */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/*                                                                       */
/* AUTHOR                                                                */
/*                                                                       */
/*                                                                       */
/* DATA STRUCTURES                                                       */
/*                                                                       */
/*                                                                       */
/* FUNCTIONS                                                             */
/*                                                                       */
/*      Diagnostic code for command line interface.                      */
/*                                                                       */
/* DEPENDENCIES                                                          */
/*                                                                       */
/*                                                                       */
/* HISTORY                                                               */
/*                                                                       */
/*************************************************************************/
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "std.h"
#include "snds.h"
#include "memory.h"
#include "flash.h"
#include "down.h"
#include "pollio.h"
#include "uart.h"
#include "isr.h"
#include "lcd.h"
#include "dma.h"
#include "iic.h"
#include "timer.h"
#include "system.h"
#include "mac.h"
#include "kslib.h"
#include "dhry.h"
#include "sysconf.h"
#include "hdlc100.h"

DIAGCMD gDiagCmdTable[MAX_NUMOF_COMMAND] = {
"help",		HelpCmdLi,	4, "Help of command line interface. \0",
"ls",		ListOfCmd,	2, "List of command line interface COMMAND.\0",
"mc",		MCopyCli,	2, "Memory copy source to destinination\0",
"mf",		MFillCli,	2, "Memory pattern fill to Target Address\0",
"md",		MDumpCli,	2, "Memory dump\0",
"search",	MSearchCli,	6, "Memory search\0",
"compare",	MCompCli,	7, "Memory Compare\0",
"memtest",	MemTestCli,	7, "Memory read/write test\0",
"dmatest",	DmaTestCli,	7, "DMA test for long/short/byte\0",
"dcopy",	DCopyCli,	5, "DMA copy source to destinination\0",
"cache",	CacheCmdLi,	5, "Cache ON/OFF \0",
"mac",		MacCmdLi,	3, "MAC Test Function, Use [mac help] command\0",
"hdlc",		HdlcCmdLi,	3, "HDLC Test Function, Use [hdlc help] command\0",
"iic",		IicCmdLi,	3, "I2C read/write test command\0",
"march",	MarchTestCmdLi,	5, "Internal SRAM 10N March test\0",
"all",		AllTestCmdLi,	3, "All SNDS board function test\0",
"down",		DownPgmCmdLi,	4, "Download User Program\0",
"fuse",		FusePgmCmdLi,	4, "Fusing EEPROM\0",
"go",		GoPgmCmdLi,	2, "Start download user program\0",
"start",	StartCmdLi,	5, "Start User Program (Area : 0x1000000) \0",
"boot",		BootCmdLi,	4, "Boot pSOS at ROM Bank 1 user EEPROM\0",
"reset",	ResetCmdLi,	5, "Reset SNDS, Jump to Reset handler\0",
"exit",		ExitCmdLi,	4, "Exit command line interface to MENU mode\0",
"history",	HistoryCmdLi,	6, "Show commands executed recently\0"
} ;


extern TIME tm0,tm1 ;
void ClrAllErrRpt(void);
AllErrorReport AllErrorRpt={0.0,0,0,0,0,0} ;
U32 AllTestResult = 0 ;


void EtcTest(void) 
{
	DiagCmdLi() ;

}

/* 
 * Function : DiagCmdLi(void)
 * Description : Command Line Interface Diag
 */
void DiagCmdLi(void) 
{
	U32 error;
	U32 comlen;
	U32 CmdOffset = 0 ;
	//char commandline[MAX_LENGTHOF_COMMANDLINE]; // Up to 256 character 
	CMDPOOL commandpool[MAX_COMMAND_LIST],*pCmd=commandpool;

	int i ;

	InitSnds() ;   /* SNDS100 Board initialized */
	InitCommandPool(commandpool) ;

	Print("\n >>> ------------------------------------------- <<<") ;
	Print("\r >>> SNDS Command Line Interface for Diagonistic <<<") ;
        Print("\r >>> SNDS100 B'd Rev 1.0 for NetMCU,Diag Ver 1.0 <<<");
        Print("\r >>> Samsung Electronic Co. NETWORK DIV.         <<<");
        Print("\r >>>  >>>>>>>  Updated date is  1999.05.04       <<<");
	Print("\r >>> ------------------------------------------- <<<\n") ;

	while(CMDLI_TRUE)
	{
		ClearLcdDisplay() ;
		lPrint("CMD LINE I/F ... ") ;
		Print("SNDS(%d)> ",CmdOffset); // diag prompt 


		// Clear Command Line
		for(i=0;i<MAX_LENGTHOF_COMMANDLINE;i++) pCmd->commandline[i] = '\0';

		while(ReadCommand(pCmd,&CmdOffset));
		// if command length is over 256 bytes .
		comlen = pCmd->comlen & ~IS_USED;
		if(comlen > MAX_LENGTHOF_COMMANDLINE) 
		{
			ReportError(ERROR_TOO_LONG_COMMAND);
			continue;
		}
		error = RunCommand(pCmd);
		//if(error) ReportError(error);
		CmdOffset++ ;
		pCmd=pCmd->nextcmd;
	}
}	

void InitCommandPool(CMDPOOL *commandpool) 
{
	CMDPOOL *pCmd,*pStart,*pEnd,*prevCmd;
	int i,j;

	pCmd=commandpool;
	pStart=commandpool;
	pEnd=commandpool+MAX_COMMAND_LIST;
	for(i=0;i<MAX_COMMAND_LIST;i++)
	{
		// Clear Command Line
		for(j=0;j<MAX_LENGTHOF_COMMANDLINE;j++) pCmd->commandline[j] = '\0';
		pCmd->prevcmd = (i==0) ? pEnd : prevCmd ;
		prevCmd = pCmd;
		pCmd->nextcmd = (i==MAX_COMMAND_LIST-1) ? pStart : pCmd+1 ;
		pCmd++;
	}
}

U32 HistoryCmdLi(U8 argc, char (*argv)[MAX_LENGTHOF_ARGS],CMDPOOL *pCmd)
{
	U32 cnt=1,lcnt=10;
	//CMDPOOL *pCurCmd;

	while(lcnt--) {
		if(!(pCmd->prevcmd->comlen&IS_USED)) break; 
		pCmd=pCmd->prevcmd;
		Print("\r [%d]  %s\b",cnt++,pCmd->commandline);
	}
	/*
	lcnt = cnt ;
	for(cnt=1;cnt<=lcnt;cnt++) {
		Print("\r %d  -> %s\b",cnt,pCmd->commandline);
		pCmd=pCmd->nextcmd;
	}
	*/
	Print("\r");
	//size = hexstrtohex(argv[2], sizeofstr(argv[2]));
	return NO_ERROR;
}

CMDPOOL *ReadCommand(CMDPOOL *pCmd,U32 *CmdOffset)
{
	char ch;

	static U32 cur_pos=0;
	static U32 flag=0;
	static CMDPOOL *pCurCmd;

	if(!flag) pCurCmd=pCmd;

	switch(ch=get_ch(cur_pos)) {

		case '-' : 
		case '+' : 
			if(ch=='-') pCmd=pCmd->prevcmd;
			else pCmd=pCmd->nextcmd;
			return SearchCommand(pCmd,CmdOffset,&flag) ;

		case CR :  
		case BSP :
		case ' ' : 
		default : 
			return UpdateCommand(pCurCmd,pCmd,&cur_pos,&flag,CmdOffset,ch);
				  
	}
}

CMDPOOL *UpdateCommand(CMDPOOL *pCurCmd,CMDPOOL *pCmd,U32 *cur_pos,U32 *flag,U32 *CmdOffset,char ch)
{

	switch(ch) {
		case CR : 
			if(!*flag) PutPrompt(pCmd,CmdOffset,3);
			else {
				GetSelectedCommand(pCurCmd,pCmd,cur_pos);
				AnalyzeCommand(pCurCmd);
				Print("\r");
				pCurCmd->comlen |= IS_USED ;
				*flag=*cur_pos=0;
				return NULL;
			}
			break;

		case BSP :
			GetSelectedCommand(pCurCmd,pCmd,cur_pos);
			if(*cur_pos>=0) pCurCmd->commandline[(*cur_pos)--]='\0';
			break;

		case ' ':
			if(!*flag) {
				pCurCmd = ReadCommand(pCmd,CmdOffset);
				break;
			}

		default : 
			GetSelectedCommand(pCurCmd,pCmd,cur_pos);
			pCurCmd->commandline[(*cur_pos)++]=ch;
			pCurCmd->comlen++ ;	
			*flag = 1;
	}
	return pCmd;
}

void GetSelectedCommand(CMDPOOL *pCurCmd,CMDPOOL *pCmd,U32 *cur_pos)
{
	if(pCurCmd!=pCmd) {
		strcpy(pCurCmd->commandline,pCmd->commandline);
		*cur_pos = pCmd->comlen;
		pCurCmd->comlen = pCmd->comlen ;	
		pCmd=pCurCmd;
	}
}

void AnalyzeCommand(CMDPOOL *pCurCmd)
{
	char replace[10];
	char digit;
	U32	match_flag;
	CMDPOOL *pCmd=pCurCmd->prevcmd;
	int cnt;

	if(*pCurCmd->commandline=='!') // | *pCmd->commmandline='^')
	{
		//cnt = atol(pCurCmd->commandline+1);
		digit = *(pCurCmd->commandline+1);
		digit = (digit=='!') ? '0' : digit ;
		if(digit<'0' | digit>'9'){
			if(!SearchMatchedCommand(pCurCmd))
				Print("\rCan't find command which has such pattern");
		}
		else {
			//cnt = cnt -'0';
			cnt = digit -'0';
			while(cnt--) pCmd=pCmd->prevcmd;
			strcpy(pCurCmd->commandline,pCmd->commandline);
		}
	}
	else if(*pCurCmd->commandline=='^'){
		if(pCmd->comlen&IS_USED) SplitPattern(pCurCmd);
		else Print("\rNo previous command to replace!!!");
	}

}


CMDPOOL *SearchCommand(CMDPOOL *pCmd,U32 *CmdOffset,U32 *flag)
{
	if(pCmd->comlen & IS_USED) {
		*flag = 1;
		pCmd=PutPrompt(pCmd,CmdOffset,0);
	}
	else {
		*flag = 0;
		pCmd=PutPrompt(pCmd,CmdOffset,1);
	}

	return pCmd;
}

U32 SearchMatchedCommand(CMDPOOL *pCurCmd)
{
	char pattern[10];
	CMDPOOL *pCmd=pCurCmd->prevcmd;

	strcpy(pattern,pCurCmd->commandline+1);
	while(pCmd!=pCurCmd) {
		if(!(pCmd->comlen&IS_USED)) break; 
		if(strncmp(pattern,pCmd->commandline,strlen(pattern))==0)
		{
			strcpy(pCurCmd->commandline,pCmd->commandline);
			return 1;
		} 
		else pCmd=pCmd->prevcmd;
	}
	return 0;
}

void SplitPattern(CMDPOOL *pCurCmd)
{
	char pattern[10];
	char replace[10];
	char *src=pattern;
	char *dst=replace;
	char *command=pCurCmd->commandline+1;
	U32 i=0;

	while(*command!='^')
		*src++=*command++;
	command++;
	while(*command!='\0')
		*dst++=*command++;

	*dst=*src='\0';

	command=pCurCmd->prevcmd->commandline;

	while(*command!='\0')
	{
		if(strncmp(pattern,command,strlen(pattern))==0)
		{
			*command='\0';
			break;
		}
		command++;i++;
	}
	command=pCurCmd->prevcmd->commandline;
	src=i+command+strlen(pattern);
	command=pCurCmd->commandline;
	strcpy(command,pCurCmd->prevcmd->commandline);
	strcat(command,replace);
	strcat(command,src);
	
	Print("\r%s",command);
}

CMDPOOL *PutPrompt(CMDPOOL *pCmd,U32 *CmdOffset,U32 mode)
{
	switch(mode) {
		case 1 :
			Print("\rNo more command!!!");
			break;
		case 2 :
			Print("\rNo next command!!!");
			break;
	}
	switch(mode) {
		case 1 :
		case 2 :
			Print("\b "); 
		case 3 :
			(*CmdOffset)++;
	}
	Print("\rSNDS(%d)> ",*CmdOffset); 
	switch(mode) {
		case 0 :
			Print("%s ",pCmd->commandline); 
			put_byte('\b');
		case 3 :
			pCmd=ReadCommand(pCmd,CmdOffset);
	}
	return pCmd;
}


/* 
 * Function : U32 RunCommand(char *commandline, U32 comlinelen)
 * Description : Command Running
 */
U32 RunCommand(CMDPOOL *pCmd)
{
	U32 comindex;		
	U32 argc  ;
	char argv[MAX_NUMOF_ARGS][MAX_LENGTHOF_ARGS] = {{0,},};

	argc = ParseCommandLine(argv,pCmd->commandline); // return arguments number
	comindex = LookUpCommand(argv[0]); // argv[0] is command 

	if (gDiagCmdTable[comindex].cmd_action == NULL)
		return ERROR_BAD_COMMAND; 
		// return error code, command not found 

	// Run the command & return error code
	return (gDiagCmdTable[comindex].cmd_action)(argc,argv,pCmd); 
}


/*
 * Function :  LookUpCommand
 * Description : Search the command and return the index of the command.
 */
U32 LookUpCommand(char* cmd)
{
	U32 tableindex = 0;
	while( tableindex < MAX_NUMOF_COMMAND)
	{
		if ((gDiagCmdTable[tableindex].cmd_action != NULL)&&
			(!str_ncmp(cmd, gDiagCmdTable[tableindex].cmd_name , gDiagCmdTable[tableindex].cmd_length)))
			break;
		tableindex++;
	}
	return tableindex;
}

/*
 * 	Function :  ParseCommandLine
 *	Description : 
 */
U32 ParseCommandLine(char (*argv)[MAX_LENGTHOF_ARGS],char *commandline)
{
	U32 count = 1;
	U32 offset = 0;
	U32 i,j;
	char cmd;

	for(j = 0 ; j < MAX_NUMOF_ARGS ; j++)
	{
		for(i = 0 ; i < MAX_LENGTHOF_ARGS ; i++)
		{
			if((cmd = commandline[offset]) == SPACE)
			{
				offset++;
				count++;
				argv[j][i] = '\0';
				break;
			}


			switch(cmd)
			{
			case NL: argv[j][i] = '\0';
				 return count;
			case CR: argv[j][i] = '\0';
				 return count;
			default: argv[j][i] = cmd;
				 // Clear Used command line buffer
			 	 //commandline[offset] = NL ;
			 	 offset++;
				 break;
			}
		}
	}

	return count ;
}


/*
 * 	Function :  ReportError
 *	Description :
 */
void ReportError(U32 err)
{
	Print("Error Code :%x\n",err);
}

/*
 * 	Function :  str_ncmp
 *	Description : String Compare
 */
U32 str_ncmp(char* str1 , char* str2 , U32 n)
{
	U32 i = 0;
	while(i < n)
	{	
		if(str1[i] != str2[i]) return  1;
		i++;
	}
	return	0;
}

/*
 * 	Function :  strtoint
 *	Description : String Value to Interger Value
 */
U32 strtoint(char *str, U32 count)
{
	U32 temp;
	U32 total = 0 ;
	
	while(count)
	{
		temp = *str++ - '0'; 
		total += temp * power(10,count-1);
		count--;
	}
	return total; 
}

/*
 * 	Function :  hexstrtohex
 *	Description : String Value to HEX Value
 */
U32 hexstrtohex(char *str, U32 count)
{
	U32 temp;
	U32 total = 0 ;
		
	while(count)
	{
		count--;
		if(('0'<=(*str))&&((*str) <= '9'))
		{
			temp = *str - '0';
		    total += temp << (4*count);
		    temp = 0;
		}
		else if(('a'<=(*str))&&((*str) <= 'f'))
		{
			switch(*str)
			{
				case 'a': temp = 10; break;
				case 'b': temp = 11; break;
				case 'c': temp = 12; break;
				case 'd': temp = 13; break;
				case 'e': temp = 14; break;
				case 'f': temp = 15; break;
				default: break;
			}
			total +=temp << (4*count);
			temp = 0;
		}
		str++;
	}
	return total;
}

/*
 * 	Function :  sizeofstr
 *	Description : Size of String
 */
U32 sizeofstr(char *str)
{
	U32 size = 0;
	while((*str != '\0')&&(*str != NL)&&(*str != CR))
	{
		str++;
		size++;
	}
	return size;
}

/*
 * 	Function :  power
 *	Description : 
 */
U32 power(U32 base, U32 cha)
{
	U32 i ,temp;
	temp = 1;
	i=0;
	while(i < cha)
	{
		temp = base * temp;
		i++;
	}
	return temp;
}

/*
 * 	Function :  PrintHelpMessage
 *	Description :   
 */
void PrintHelpMessage(char *cmd)
{
	U8 index;
	index = LookUpCommand(cmd);
	put_string(gDiagCmdTable[index].cmd_help);
	Print("\r") ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品免费| 亚洲成人7777| 成年人国产精品| 综合婷婷亚洲小说| 欧美撒尿777hd撒尿| 丝袜a∨在线一区二区三区不卡| 欧美日韩另类国产亚洲欧美一级| 日本欧美肥老太交大片| 久久男人中文字幕资源站| 成人国产在线观看| 一区二区三区小说| 日韩视频一区在线观看| 国产精品456露脸| 亚洲激情欧美激情| 69堂国产成人免费视频| 国产一区欧美日韩| 亚洲视频香蕉人妖| 欧美日本韩国一区二区三区视频 | 国产精品不卡在线观看| 欧美性视频一区二区三区| 奇米在线7777在线精品| 中文字幕欧美激情一区| 欧美日韩一区三区| 国产成人精品一区二| 亚洲观看高清完整版在线观看| 日韩亚洲欧美高清| 99久久99久久免费精品蜜臀| 亚洲妇女屁股眼交7| 久久久久久久av麻豆果冻| 欧美在线你懂的| 国产一区二区三区蝌蚪| 亚洲成人资源在线| 中文在线一区二区| 欧美一区二区三级| 色哟哟精品一区| 国产一区二区三区免费播放| 亚洲国产中文字幕在线视频综合| 国产三级久久久| 欧美精品777| 91亚洲精品久久久蜜桃网站| 美女久久久精品| 亚洲影院在线观看| 国产网站一区二区| 日韩欧美你懂的| 欧美揉bbbbb揉bbbbb| jlzzjlzz欧美大全| 韩国欧美一区二区| 丝袜美腿亚洲综合| 一区二区三区色| 国产精品国产三级国产aⅴ无密码| 精品精品欲导航| 欧美日韩另类国产亚洲欧美一级| 99热99精品| 粉嫩在线一区二区三区视频| 捆绑调教一区二区三区| 亚洲v精品v日韩v欧美v专区| 国产精品护士白丝一区av| 久久综合久久综合亚洲| 91精品免费在线| 欧美日韩精品免费观看视频| 欧美在线制服丝袜| 91美女片黄在线观看91美女| 波多野结衣中文字幕一区 | 一区二区三区中文字幕| 久久精品日产第一区二区三区高清版| 欧美精品视频www在线观看| 99天天综合性| 91小视频在线观看| 97久久超碰国产精品| 成人av免费在线观看| 成人一道本在线| 国产99精品国产| 国产sm精品调教视频网站| 国产成人av资源| 顶级嫩模精品视频在线看| 国产成人在线观看免费网站| 国产福利一区在线| 国产99久久久国产精品潘金 | 成人高清视频在线观看| 国产91丝袜在线18| www.成人在线| 91论坛在线播放| 91国偷自产一区二区三区成为亚洲经典 | 91视频国产观看| 色哟哟精品一区| 欧美蜜桃一区二区三区| 欧美一级国产精品| 精品久久久久久亚洲综合网| 国产亚洲一区二区在线观看| 国产精品国产三级国产三级人妇| 亚洲乱码国产乱码精品精小说 | 偷拍一区二区三区| 日本欧美韩国一区三区| 国产一区欧美一区| 99在线视频精品| 欧美日韩一区二区三区在线| 欧美一二三区精品| 国产欧美视频一区二区| 亚洲欧美日韩人成在线播放| 亚洲国产精品欧美一二99| 免费成人在线观看视频| 国产精品综合在线视频| 91在线观看一区二区| 欧美日韩国产小视频| 久久中文字幕电影| 亚洲三级在线观看| 六月丁香婷婷久久| 福利一区二区在线| 欧美综合色免费| 久久新电视剧免费观看| 综合自拍亚洲综合图不卡区| 视频一区国产视频| 国产成人免费在线| 欧美性生活影院| 国产亚洲综合在线| 亚洲第一在线综合网站| 成人一区二区三区视频在线观看| 欧美视频三区在线播放| 国产亚洲欧美日韩日本| 亚洲综合色自拍一区| 国产夫妻精品视频| 欧美日韩免费观看一区二区三区| 久久精品免费在线观看| 亚洲一区二区五区| 成人性生交大片免费看中文网站| 欧美电影影音先锋| 日韩美女视频19| 国产精品一二三区在线| 欧美另类高清zo欧美| 国产精品传媒入口麻豆| 久久精工是国产品牌吗| 91福利视频在线| 国产精品久久三| 久久99国产精品久久99果冻传媒| 在线看国产一区二区| 欧美国产一区视频在线观看| 麻豆精品视频在线观看免费 | 欧美人成免费网站| 自拍偷拍国产精品| 国产69精品久久777的优势| 精品日韩99亚洲| 日本视频中文字幕一区二区三区| 99在线精品一区二区三区| 久久久99免费| 毛片不卡一区二区| 在线成人免费视频| 一个色综合av| 日本伦理一区二区| 国产精品传媒视频| eeuss国产一区二区三区| 国产午夜精品一区二区| 精品一区二区三区的国产在线播放| 欧美日韩一区国产| 一二三区精品视频| 欧美自拍丝袜亚洲| 亚洲女人****多毛耸耸8| 97se亚洲国产综合自在线不卡| 欧美激情一区二区三区蜜桃视频 | 一本久久a久久免费精品不卡| 国产欧美日本一区视频| 国产精品一线二线三线| 337p日本欧洲亚洲大胆精品| 麻豆久久一区二区| 日韩免费福利电影在线观看| 日韩avvvv在线播放| 欧美日本在线播放| 日韩黄色一级片| 欧美一区二区三区喷汁尤物| 日韩不卡一区二区三区| 日韩欧美一级片| 国产伦理精品不卡| 国产精品三级视频| 99久久婷婷国产综合精品| 亚洲啪啪综合av一区二区三区| 99久久777色| 亚洲国产精品久久人人爱| 欧美日本一区二区三区四区 | 日韩精品一级二级 | 国产午夜精品一区二区三区视频| 国产乱色国产精品免费视频| 欧美国产精品劲爆| 色综合久久久久网| 午夜免费久久看| 精品国产不卡一区二区三区| 成人av资源在线观看| 亚洲综合精品自拍| 欧美一级国产精品| 国产成人av电影在线播放| 亚洲欧洲日本在线| 欧美在线综合视频| 久久66热偷产精品| 中文字幕亚洲综合久久菠萝蜜| 91精品91久久久中77777| 日日夜夜精品视频免费| 久久蜜桃一区二区| 色综合久久88色综合天天免费| 亚洲第一电影网| 久久久美女毛片| 欧美综合视频在线观看| 国产一区二区成人久久免费影院|