00001
00002
00003
00004
00005
00006
00014
00015
00016 #include "xuartlite_l.h"
00017 #include "xio.h"
00018 #include "string.h"
00019 #include "fat16.h"
00020 #include "term.h"
00021
00022
00023
00024 extern Fat16 FS;
00025
00026
00027 volatile char TermBuff[LINE_SIZE];
00028
00029
00030
00037 void Term_Clear()
00038 {
00039 int i;
00040 xil_printf("\r");
00041 for(i = 0; i < 40; i++)
00042 xil_printf("\n");
00043 for(i = 0; i < 40; i++)
00044 {
00045 Term_PutChar(0x1b);
00046 Term_PutChar(0x5b);
00047 Term_PutChar(0x41);
00048 }
00049 }
00050
00051
00058 void Term_Echo()
00059 {
00060 char *word;
00061
00062 word = strtok(NULL, " ");
00063
00064 while(word)
00065 {
00066 xil_printf("%s ", word);
00067 word = strtok(NULL, " ");
00068 }
00069
00070 xil_printf("\r\n");
00071 }
00072
00079 void Term_Ls()
00080 {
00081 Fat16_SDPrintDir(&FS);
00082 }
00083
00084
00091 void Term_Read()
00092 {
00093 char *word;
00094
00095 word = strtok(NULL, " ");
00096
00097 Fat16_SDReadFile(&FS, word);
00098 }
00099
00100
00109 int Term_Parse()
00110 {
00111 int i;
00112 char *word;
00113
00114 word = strtok(TermBuff, " ");
00115
00116 if(!word)
00117 return 2;
00118
00119 if( !strcmp(word, "clear") )
00120 Term_Clear();
00121
00122 else if( !strcmp(word, "echo") )
00123 Term_Echo();
00124
00125 else if( !strcmp(word, "exit") ) {
00126 xil_printf("\r\n"); return 0; }
00127
00128 else if( !strcmp(word, "read") )
00129 Term_Read();
00130
00131 else if( !strcmp(word, "ls") )
00132 Term_Ls();
00133
00134 else
00135 xil_printf("prompt: %s: command not found.\r\n", word);
00136
00137 return 1;
00138 }
00139
00140
00149 int Term_Prompt()
00150 {
00151 int len = 0, flag = 0, BuffCount = 0;
00152 char c;
00153
00154 xil_printf("> ");
00155
00156 do {
00157 c = XUartLite_RecvByte(STDIO_BASEADDR);
00158
00159 if(c == '\b')
00160 {
00161 Term_PutChar(' ');
00162
00163 if(len > 0) {
00164 Term_PutChar('\b'); --len; }
00165
00166 }
00167 else
00168 TermBuff[len++] = c;
00169
00170 } while(c != '\r');
00171
00172 TermBuff[--len] = '\0';
00173 xil_printf("\r\n");
00174
00175 return Term_Parse();
00176 }