void help_command(int n,char *argv[]){ int i; fio_printf(1, "\r\n"); for(i = 0;i < sizeof(cl)/sizeof(cl[0]) - 1; ++i){ fio_printf(1, "%s - %s\r\n", cl[i].name, cl[i].desc); } }
void command_prompt(void *pvParameters) { char buf[128]; char *argv[20]; char hint[] = USER_NAME "@" USER_NAME "-STM32:~$ "; fio_printf(1, "\rWelcome to FreeRTOS Shell\r\n"); while(1){ fio_printf(1, "%s", hint); fio_read(0, buf, 127); int n=parse_command(buf, argv); /* will return pointer to the command function */ //if (*argv[0]=='\0') cmdfunc *fptr=do_command(argv[0]); if(fptr!=NULL) fptr(n, argv); else if (*argv[0]!='\0') fio_printf(2, "\r\n\"%s\" command not found.\r\n", argv[0]); else fio_printf(1, "\r\n"); } }
void test_command(int n, char *argv[]) { int handle; int error; fio_printf(1, "\r\n"); handle = host_action(SYS_SYSTEM, "mkdir -p output"); handle = host_action(SYS_SYSTEM, "touch output/syslog"); handle = host_action(SYS_OPEN, "output/syslog", 8); if(handle == -1) { fio_printf(1, "Open file error!\n\r"); return; } char *buffer = "Test host_write function which can write data to output/syslog\n"; error = host_action(SYS_WRITE, handle, (void *)buffer, strlen(buffer)); if(error != 0) { fio_printf(1, "Write file error! Remain %d bytes didn't write in the file.\n\r", error); host_action(SYS_CLOSE, handle); return; } host_action(SYS_CLOSE, handle); }
void ps_command(int n, char *argv[]){ signed char buf[1024]; vTaskList(buf); fio_printf(1, "\n\rName State Priority Stack Num\n\r"); fio_printf(1, "*******************************************\n\r"); fio_printf(1, "%s\r\n", buf + 2); }
void ps_command(int n, char *argv[]){ int rnt; signed char buf[1024]; vTaskList(buf); fio_printf(1, "\r\n%s\r\n", buf); rnt = host_savefile(argv[1], buf); fio_printf(1, "\r\nfinish with exit code %d.\r\n", rnt); }
void cat_command(int n, char *argv[]){ if(n==1){ fio_printf(2, "\r\nUsage: cat <filename>\r\n"); return; } if(!filedump(argv[1])) fio_printf(2, "\r\n%s no such file or directory.\r\n", argv[1]); }
void host_command(int n, char *argv[]){ if(n>1){ int len=strlen(argv[1]), rnt; if(argv[1][0]=='\''){ argv[1][len-1]='\0'; rnt=host_system(argv[1]+1); }else rnt=host_system(argv[1]); fio_printf(1, "\r\nfinish with exit code %d.\r\n", rnt); }else fio_printf(2, "\r\nUsage: host 'command'\r\n"); }
void man_command(int n, char *argv[]){ if(n==1){ fio_printf(2, "\r\nUsage: man <command>\r\n"); return; } char buf[128]="/romfs/manual/"; strcat(buf, argv[1]); if(!filedump(buf)) fio_printf(2, "\r\nManual not available.\r\n"); }
void cat_command(int n, char *argv[]){ if(n==1){ fio_printf(2, "\r\nUsage: cat <filename>\r\n"); return; } // combine romfs path with filename char buf[128] = "/romfs/"; strcat(buf, argv[1]); if(!filedump(buf)) fio_printf(2, "\r\n%s no such file or directory.\r\n", argv[1]); }
void cat_command(int n, char *argv[]){ if(n==1){ fio_printf(2, "\r\nUsage: cat <filename>\r\n"); return; } int dump_status = filedump(argv[1]); if(dump_status == -1){ fio_printf(2, "\r\n%s : no such file or directory.\r\n", argv[1]); }else if(dump_status == -2){ fio_printf(2, "\r\nFile system not registered.\r\n", argv[1]); } }
void ls_command(int n, char *argv[]){ fio_printf(1,"\r\n"); int dir; if(n == 0){ dir = fs_opendir(""); }else if(n == 1){ dir = fs_opendir(argv[1]); //if(dir == ) }else{ fio_printf(1, "Too many argument!\r\n"); return; } (void)dir; // Use dir }
void host_command(int n, char *argv[]){ int i, len = 0, rnt; char command[128] = {0}; if(n>1){ for(i = 1; i < n; i++) { memcpy(&command[len], argv[i], strlen(argv[i])); len += (strlen(argv[i]) + 1); command[len - 1] = ' '; } command[len - 1] = '\0'; rnt=host_action(SYS_SYSTEM, command); fio_printf(1, "\r\nfinish with exit code %d.\r\n", rnt); } else { fio_printf(2, "\r\nUsage: host 'command'\r\n"); } }
void command_prompt(void *pvParameters) { char buf[128]; char *argv[20]; fio_printf(1, "\rWelcome to FreeRTOS Shell\r\n"); while(1){ fio_printf(1, "\r>>"); fio_read(0, buf, 127); int n=parse_command(buf, argv); /* will return pointer to the command function */ cmdfunc *fptr=do_command(argv[0]); if(fptr!=NULL) fptr(n, argv); else fio_printf(2, "\r\n\"%s\" command not found.\r\n", argv[0]); } }
int filedump(const char *filename){ char buf[128]; int fd=fs_open(filename, 0, O_RDONLY); if( fd == -2 || fd == -1) return fd; fio_printf(1, "\r\n"); int count; while((count=fio_read(fd, buf, sizeof(buf)))>0){ fio_write(1, buf, count); } fio_printf(1, "\r"); fio_close(fd); return 1; }
void system_logger(void *pvParameters) { signed char buf[128]; char output[512] = {0}; char *tag = "\nName State Priority Stack Num\n*******************************************\n"; int handle, error; const portTickType xDelay = 100000 / 100; handle = host_action(SYS_OPEN, "output/syslog", 4); if(handle == -1) { fio_printf(1, "Open file error!\n"); return; } while(1) { memcpy(output, tag, strlen(tag)); error = host_action(SYS_WRITE, handle, (void *)output, strlen(output)); if(error != 0) { fio_printf(1, "Write file error! Remain %d bytes didn't write in the file.\n\r", error); host_action(SYS_CLOSE, handle); return; } vTaskList(buf); memcpy(output, (char *)(buf + 2), strlen((char *)buf) - 2); error = host_action(SYS_WRITE, handle, (void *)buf, strlen((char *)buf)); if(error != 0) { fio_printf(1, "Write file error! Remain %d bytes didn't write in the file.\n\r", error); host_action(SYS_CLOSE, handle); return; } vTaskDelay(xDelay); } host_action(SYS_CLOSE, handle); }
int filedump(const char *filename){ char buf[128]; int fd=fs_open(filename, 0, O_RDONLY); if(fd==OPENFAIL) return 0; fio_printf(1, "\r\n"); int count; while((count=fio_read(fd, buf, sizeof(buf)))>0){ if(count < sizeof(buf)){ buf[count] = '\r'; count++; } fio_write(1, buf, count); } fio_close(fd); return 1; }
void _command(int n, char *argv[]){ (void)n; (void)argv; fio_printf(1, "\r\n"); }
void ls_command(int n, char *argv[]){ fio_printf(1, "\r\n"); fs_list("/romfs/"); }