亚洲欧美第一页_禁久久精品乱码_粉嫩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久久香蕉国产日韩欧美9色| 日韩高清不卡在线| 久久久亚洲综合| 日韩午夜三级在线| 欧美电影影音先锋| 69堂成人精品免费视频| 欧美卡1卡2卡| 欧美一区二区精品| 日韩欧美一卡二卡| 精品粉嫩超白一线天av| 久久亚洲一区二区三区明星换脸 | 国产人成亚洲第一网站在线播放 | 亚洲色图视频网站| 亚洲人成在线观看一区二区| 亚洲黄网站在线观看| 亚洲免费av高清| 一片黄亚洲嫩模| 天天综合色天天| 久久国产精品第一页| 精品在线免费视频| 成人中文字幕合集| 99久久伊人精品| 色哟哟一区二区在线观看| 在线国产电影不卡| 欧美一区二区三区视频在线观看| 精品理论电影在线| 国产精品久久久久久久第一福利| 亚洲欧美日韩国产一区二区三区| 亚洲超碰精品一区二区| 青青青伊人色综合久久| 激情小说亚洲一区| 99久精品国产| 91精品欧美福利在线观看| 日韩久久精品一区| 国产精品免费久久| 亚洲午夜av在线| 精品一区二区成人精品| www.亚洲色图.com| 欧美另类z0zxhd电影| 2024国产精品| 亚洲女同一区二区| 美女网站视频久久| av激情综合网| 51精品久久久久久久蜜臀| 久久精品无码一区二区三区| 亚洲男人的天堂一区二区 | 在线看日本不卡| 日韩欧美色综合| 亚洲色图色小说| 美国欧美日韩国产在线播放| 风间由美一区二区三区在线观看 | 狠狠狠色丁香婷婷综合激情| av不卡在线播放| 日韩片之四级片| 亚洲三级视频在线观看| 久久国产精品无码网站| 色悠悠亚洲一区二区| 精品国产制服丝袜高跟| 一区二区三区中文字幕电影| 国产一区二区三区在线观看精品 | 一本一道久久a久久精品| 欧美mv日韩mv国产网站app| 亚洲色图19p| 秋霞电影网一区二区| 91网站最新地址| 亚洲精品一线二线三线| 亚洲国产另类精品专区| 国产乱子轮精品视频| 91传媒视频在线播放| 久久久亚洲精品一区二区三区| 亚洲综合图片区| 粉嫩aⅴ一区二区三区四区| 欧美精品xxxxbbbb| 亚洲啪啪综合av一区二区三区| 九一久久久久久| 9191成人精品久久| 亚洲最快最全在线视频| 国产精华液一区二区三区| 制服丝袜av成人在线看| 亚洲精品国产品国语在线app| 国产制服丝袜一区| 日韩一区二区电影在线| 一区二区三区四区av| 成人av在线资源| 国产午夜精品久久久久久免费视| 免费日本视频一区| 欧美日韩电影在线| 亚洲国产精品尤物yw在线观看| 成人精品国产一区二区4080| 久久嫩草精品久久久精品一| 久久国产尿小便嘘嘘尿| 51精品视频一区二区三区| 午夜欧美视频在线观看| 在线这里只有精品| 国产精品久久三区| 丁香另类激情小说| 亚洲国产成人午夜在线一区| 国产永久精品大片wwwapp| 欧美一区二区三区小说| 亚洲精品中文在线影院| 色综合一个色综合| 亚洲婷婷综合色高清在线| 成人动漫一区二区在线| 中文字幕不卡的av| 国产麻豆91精品| 国产午夜精品一区二区三区四区| 久久99久久精品| 日韩一区二区三区三四区视频在线观看| 亚洲综合免费观看高清完整版| 色视频成人在线观看免| 亚洲精品成人悠悠色影视| 国产成人免费视频网站高清观看视频 | 日韩av中文在线观看| 欧美日韩国产精品成人| 天堂av在线一区| 91精品国产麻豆| 激情综合网最新| 国产午夜精品久久久久久久| 成人精品视频一区二区三区尤物| 国产精品热久久久久夜色精品三区| 国产suv精品一区二区三区| 中日韩免费视频中文字幕| 粉嫩嫩av羞羞动漫久久久| 国产精品欧美一区喷水| 91老司机福利 在线| 亚洲色图制服诱惑| 欧美裸体一区二区三区| 午夜精品久久久久久久久久| 欧美一级久久久| 极品少妇xxxx精品少妇| 中文字幕+乱码+中文字幕一区| 99re免费视频精品全部| 亚洲成人动漫av| 日韩精品一区国产麻豆| 国产福利不卡视频| 一区二区三区日本| 日韩欧美国产一区二区三区 | 成人丝袜18视频在线观看| 亚洲视频网在线直播| 欧美精品三级在线观看| 久久精品国产精品亚洲综合| 国产午夜精品一区二区| 欧美无乱码久久久免费午夜一区| 免费黄网站欧美| 国产日韩精品久久久| 欧美在线看片a免费观看| 久久精品国产99国产| 中文字幕在线不卡视频| 欧美久久免费观看| 国产馆精品极品| 亚洲国产综合在线| 久久久综合精品| 欧美日韩一区视频| 懂色中文一区二区在线播放| 日一区二区三区| 国产精品伦理一区二区| 欧美肥妇bbw| 97久久超碰精品国产| 久久精品久久精品| 一区二区三区91| 久久一区二区三区四区| 精品视频在线视频| 国产69精品久久777的优势| 日韩精品电影在线观看| 综合亚洲深深色噜噜狠狠网站| 在线播放/欧美激情| 99久久er热在这里只有精品15| 青青青伊人色综合久久| 一区二区三区在线观看网站| 国产三级欧美三级| 日韩一区二区精品在线观看| 色天使久久综合网天天| 国产福利一区二区三区在线视频| 日韩影院在线观看| 伊人性伊人情综合网| 久久久国产一区二区三区四区小说 | 91国产丝袜在线播放| 国产成人免费xxxxxxxx| 日韩综合小视频| 亚洲男同性视频| 国产精品美女久久福利网站| 日韩美女视频一区二区在线观看| 欧美日韩在线播放| 欧美亚洲禁片免费| 91在线观看污| 国产成人av在线影院| 麻豆国产一区二区| 污片在线观看一区二区| 亚洲精品高清在线观看| 国产精品久久精品日日| 久久久久久99久久久精品网站| 欧美一区二区视频在线观看2020 | 久久人人爽爽爽人久久久| 欧美一区二区视频在线观看| 欧美亚男人的天堂| 日本乱人伦aⅴ精品| 91麻豆国产自产在线观看| 成人av网站免费| 综合网在线视频| 中文字幕av一区二区三区高 |