📄 main.c
字号:
#include "stdio.h"
#include "stdlib.h"
#include "type.h"
#include "filesystem.h"
#include "flash.h"
#include "main.h"
uint8 sysTemp[64];
/*******************************************************************************************/
void main()
{
uint8 usrkey;
uint16 usrTemp;
uint16 usr_dirID = 0;
uint16 usr_fileID;
uint16 usr_fileLen;
uint8 usr_auth;
uint8 usr_type;
uint8 list_mode;
uint8 i;
while(1)
{
printf("\n\nFile Menu:\n");
printf("-------------------------------------------------------------\n");
printf( " C[h]Dir [L]ist Create[D]ir Create[F]ile Create[A]pp\n"
" DelD[i]r D[e]leteFile FileIni[T] \n"
" [O]pen [R]ead [W]rite [C]lose\n"
" Cr[y]ptMenu Set[u]pMenu E[x]it\n" );
putchar('\n');
printf("please input your selection:");
usrkey = getch();
printf("%c",usrkey);
putchar('\n');
switch (usrkey)
{
case 'l':
usr_dirID = 0;
printf(" file list:\n");
printf(" dirID fileID length auth type");
list_mode = 0;
while (1)
{
if(list_mode == 2) break;
FILEList(list_mode);
list_mode = 1;
for(i=0;i<64;i++)
{
switch(i % 8)
{
case 0: // dirID
putchar('\n');
printf(" %02x",sysTemp[i]);
break;
case 1:
printf("%02x",sysTemp[i]);
break;
case 2: // fileID
printf(" %02x",sysTemp[i]);
break;
case 3:
printf("%02x",sysTemp[i]);
break;
case 4: // 长度
printf(" %02d",(sysTemp[i] * 256 + sysTemp[i +1] ) / 100);
break;
case 5:
printf("%02d",(sysTemp[i -1] * 256 + sysTemp[i] ) % 100);
break;
case 6: // 权限
printf(" %d",sysTemp[i]);
break;
case 7:
//printf(" %d",sysTemp[i]);
switch (sysTemp[i])
{
case 0:
printf(" FREE");
break;
case 1:
printf(" DIR");
break;
case 2:
printf(" DATA");
break;
case 3:
printf(" MD5");
break;
case 4:
printf(" TEA");
break;
}
if(sysTemp[i] == FREE_TYPE)
{
list_mode = 2;
}
break;
}
if (list_mode == 2)
{
break;
}
}
break;
}
break;
case 't':
FILEInit();
break;
case 'f':
// 输入文件ID,默认是在根目录下面创建 所以usr_dirID 不需要输入
printf("please input the fileID:");
scanf("%x",&usr_fileID);
fileHost->fileID[0] = usr_fileID >> 8;
fileHost->fileID[1] = usr_fileID & 0x00ff;
// 输入文件类型
printf("please input the file type(2:DATA 3:MD5 4:TEA):");
scanf("%d",&usr_type);
fileHost->type = usr_type;
if(usr_type == FILE_TYPE) //数据文件
{
printf("please input your file Length:");
scanf("%d",&usr_fileLen);
fileHost->length[0] = usr_fileLen >> 8;
fileHost->length[1] = usr_fileLen & 0x00ff;
// 确定文件权限
}
else if (usr_type == MD5_TYPE) //MD5文件
{
fileHost->length[0] = 0;
fileHost->length[1] = 16; // 默认长度16
// 确定文件权限
}
else if (usr_type == TEA_TYPE) //TEA文件
{
fileHost->length[0] = 0;
fileHost->length[1] = 16; // 默认长度16
// 确定文件权限
}
if(FILECreateItem())
{
printf("Create file failed!\n");
}
else
{
printf("Create file OK!\n");
}
break;
case 'd': // 创建目录
// 输入目录ID
printf("please input the dirID:");
scanf("%x",&usr_dirID);
if(usr_dirID == 0)
{
printf("index error!");
break;
}
fileHost->dirID[0] = usr_dirID >> 8;
fileHost->dirID[1] = usr_dirID & 0x00ff;
//文件ID为0
fileHost->fileID[0] = 0;
fileHost->fileID[1] = 0;
//文件长度 0
fileHost->length[0] = 0;
fileHost->length[1] = 0;
// 文件读写权限,暂时没考虑,日后添加
fileHost->authority = 0;
// 文件类型
fileHost->type = DIR_TYPE;
if(FILECreateItem())// 创建目录
{
printf("Create dir failed!\n");
}
else
{
printf("Create dir OK!\n");
}
break;
case 'h'://进入目录
printf("please input the dirID you want to change in:");
scanf("%x",&usr_dirID);
fileHost->dirID[0] = usr_dirID >> 8;
fileHost->dirID[1] = usr_dirID & 0x00ff;
fileHost->fileID[0] = 0;
fileHost->fileID[1] = 0;
fileHost->type = DIR_TYPE;
if(FILE_LOCATE_OK== FILELocateID())
{
//存在当前目录 可以进入
printf("change dir OK!");
}
else
{
// 不存在当前ID或者程序错误
printf("change dir error!");
usr_dirID = 0; // 返回到根目录
}
break;
case 'i':
// 删除目录
printf("please input the dirID you want to del:");
scanf("%x",&usr_dirID);
fileHost->dirID[0] = usr_dirID >> 8;
fileHost->dirID[1] = usr_dirID & 0x00ff;
fileHost->fileID[0] = 0;
fileHost->fileID[1] = 0;
fileHost->type = DIR_TYPE;
//寻找是否存在这个目录
break;
case 'e':
// 删除文件
printf("please input the fileID you want to del:");
scanf("%x",&usr_fileID);
fileHost->dirID[0] = usr_dirID >> 8;
fileHost->dirID[1] = usr_dirID & 0x00ff;
fileHost->fileID[0] = usr_fileID >> 8;
fileHost->fileID[1] = usr_fileID & 0x00ff;
switch(FILEDelt())
{
case RIGHT_TOKEN:
printf("delt file OK!");
break;
case ERROR_PROGRAM:
printf("program ERROR!");
break;
case ERROR_INDEX:
printf("delt file ERROR!");
break;
}
}
}
}
void RamSet(uint8 *p,uint8 dat,uint8 len)
{
for(;len != 0;len--)
{
*p++ = dat;
}
}
void RamCopy(uint8 *tar,uint8 *src,uint8 len)
{
for(;len!=0;len--)
{
*tar++ = *src++;
}
}
void RamPrint(uint8 *p)
{
uint8 i;
for(i=0;i<64;i++)
{
printf(" %2x ",*p);
if((i % 8) == 7)
{
if(*p != 0)
{
printf("%\n");
}
else
{
return;
}
}
p++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -