亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产欧美一区视频| 日韩电影在线免费| 成人av午夜影院| 亚洲卡通动漫在线| 成人黄页毛片网站| 亚洲丶国产丶欧美一区二区三区| av在线播放成人| 一片黄亚洲嫩模| 日韩一区二区视频在线观看| 国产电影精品久久禁18| 亚洲成人在线免费| 久久久久一区二区三区四区| 国产真实乱偷精品视频免| 国产精品久久久久久久久图文区| 欧美在线综合视频| 国产精品一区二区免费不卡| 国产女同互慰高潮91漫画| 97精品超碰一区二区三区| 亚洲成人三级小说| 国产精品你懂的在线| 欧美色综合网站| 国产露脸91国语对白| 婷婷六月综合亚洲| 亚洲人妖av一区二区| 日韩三级精品电影久久久| 成人激情电影免费在线观看| 精品一区二区三区免费毛片爱| 亚洲人成网站色在线观看| 欧美大肚乱孕交hd孕妇| 99国产欧美久久久精品| 国产精品的网站| 欧美精品一区二区三区蜜臀 | 26uuu国产一区二区三区| 色菇凉天天综合网| 韩国女主播一区| 婷婷成人综合网| 一区二区欧美在线观看| 夜夜精品视频一区二区| 亚洲男同性恋视频| 亚洲欧洲av一区二区三区久久| 日韩欧美一区在线观看| 91麻豆精品国产无毒不卡在线观看| 波多野结衣亚洲| 99久久久国产精品免费蜜臀| 99久久伊人精品| 国产原创一区二区三区| 国产精品一区二区视频| 91在线精品一区二区三区| 韩国女主播成人在线| 黄页视频在线91| 国产91丝袜在线18| 不卡一卡二卡三乱码免费网站| av不卡免费在线观看| 9i看片成人免费高清| 欧美亚洲综合另类| 日韩免费看的电影| 欧美麻豆精品久久久久久| 精品国产青草久久久久福利| 欧美精品一区二区三区高清aⅴ | 国产成人av一区二区三区在线观看| 韩国av一区二区三区| 国产精品1024| 91传媒视频在线播放| 7777精品伊人久久久大香线蕉 | 91精品福利在线| 日韩一区二区三区免费看| 欧美大黄免费观看| 日韩精品国产精品| 欧美亚洲丝袜传媒另类| 国产日韩精品一区| 激情五月播播久久久精品| 欧美精品aⅴ在线视频| 三级久久三级久久久| 国产精品欧美一区喷水| 国产精品亚洲视频| 欧美视频一区二区三区在线观看| 欧美精品久久一区二区三区| 国产午夜精品久久| 精品中文字幕一区二区小辣椒| 国产精品综合网| 日韩欧美www| 国产成人免费xxxxxxxx| 国产日韩精品一区二区浪潮av| 国产高清不卡一区二区| 精品国产乱子伦一区| 青椒成人免费视频| 欧美xxxxx牲另类人与| 亚洲成av人片在线观看无码| 欧美午夜宅男影院| 亚洲欧美综合另类在线卡通| 国产精品综合二区| 久久精品一二三| 欧美做爰猛烈大尺度电影无法无天| 99久久婷婷国产| 国产成人亚洲综合a∨婷婷| 欧美日本国产视频| 天天综合色天天综合色h| 欧美性高清videossexo| 日本免费在线视频不卡一不卡二| 欧美日韩免费高清一区色橹橹| 一级中文字幕一区二区| 色8久久人人97超碰香蕉987| 亚洲成人黄色小说| 精品久久久久久久人人人人传媒| 91丨porny丨在线| 久久久久久久久久电影| 精品一区二区久久久| 国产调教视频一区| av电影在线不卡| 亚洲永久精品国产| 精品美女被调教视频大全网站| 国产激情视频一区二区在线观看| 中文字幕一区二区三区av| 欧美这里有精品| 另类小说一区二区三区| 亚洲少妇30p| 亚洲成人免费观看| 色婷婷综合激情| 国产原创一区二区| 亚洲精品va在线观看| 日韩精品中文字幕一区二区三区| 成人短视频下载| 国产69精品久久久久毛片| 日本91福利区| 亚洲va天堂va国产va久| 亚洲三级视频在线观看| 国产精品久久久久精k8| 国产精品毛片久久久久久久| 2023国产精品| 中文字幕制服丝袜成人av| 欧美日韩一区二区在线观看| 国产成人精品在线看| 日本aⅴ亚洲精品中文乱码| 日韩美女视频一区二区| 国产午夜一区二区三区| 欧美另类久久久品| 亚洲一区二区在线视频| 欧美日韩精品一区二区三区四区| 亚洲线精品一区二区三区八戒| 最新中文字幕一区二区三区| 欧美一级艳片视频免费观看| 在线一区二区视频| 91免费在线播放| 91丨porny丨国产| 成人av网站免费观看| 国产精品一区三区| 国产一区不卡在线| 国产成人精品亚洲日本在线桃色| 久久成人久久鬼色| 日韩av不卡在线观看| 日韩和欧美一区二区| 麻豆成人久久精品二区三区红 | 91美女在线看| 亚洲人成7777| 精品国产露脸精彩对白| 精品美女在线播放| 国产亚洲精品福利| 国产精品区一区二区三区| 国产精品色在线| 亚洲国产美国国产综合一区二区| 一区二区三区毛片| 日韩影院免费视频| 国产伦精品一区二区三区免费 | 爽好多水快深点欧美视频| 免费在线成人网| 91在线小视频| 91精品国产高清一区二区三区| 欧美videossexotv100| 国产精品福利电影一区二区三区四区| 久久久不卡网国产精品一区| 911精品国产一区二区在线| 国产成人精品影视| 日本欧美肥老太交大片| 国产乱码精品一区二区三区忘忧草 | 欧美色倩网站大全免费| 精品处破学生在线二十三| 一区在线播放视频| 乱一区二区av| 欧美日本免费一区二区三区| 久久久一区二区三区捆绑**| 国产精品久久综合| 激情图区综合网| 欧美日韩一区二区在线视频| 国产精品亲子伦对白| 国内外成人在线| 日韩欧美国产一区二区三区| 一区二区在线观看视频| 国产精品77777| 欧美mv日韩mv国产网站app| 天天综合日日夜夜精品| 在线观看免费亚洲| 亚洲免费毛片网站| 91浏览器入口在线观看| 亚洲丝袜精品丝袜在线| caoporen国产精品视频| 日本一区二区电影| 成人av电影在线观看| 国产精品久久久久aaaa樱花| 成人精品电影在线观看| 亚洲欧洲精品成人久久奇米网|