Skip to content

Commit

Permalink
Merge pull request #105 from NevermindZZT/shell3.1
Browse files Browse the repository at this point in the history
shell 3.1.2
  • Loading branch information
NevermindZZT authored Oct 17, 2021
2 parents 6d6803e + 9345170 commit d573cf0
Show file tree
Hide file tree
Showing 16 changed files with 1,135 additions and 20 deletions.
7 changes: 7 additions & 0 deletions demo/x86-gcc/CmakeLists.txt → demo/x86-gcc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@ add_executable(LetterShell
../../src/shell_ext.c
../../extensions/fs_support/shell_fs.c
../../extensions/log/log.c
../../extensions/telnet/telnetd.c
../../extensions/shell_enhance/shell_passthrough.c
../../extensions/shell_enhance/shell_cmd_group.c
../../extensions/game/game.c
../../extensions/game/2048/2048.c
../../extensions/game/pushbox/pushbox.c
)

target_include_directories(LetterShell PUBLIC
Expand All @@ -20,8 +25,10 @@ target_include_directories(LetterShell PUBLIC
../../extensions/cpp_support
../../extensions/log
../../extensions/shell_enhance
../../extensions/telnet
)

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -T shell.lds")
set(CMAKE_CXX_FLAGS "${CAMKE_CXX_FLAGS} -std=c++11 -pthread")
27 changes: 21 additions & 6 deletions demo/x86-gcc/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,31 @@
*/
#include "shell_port.h"
#include <stdlib.h>
#include <signal.h>

static int demoExit(int value)
{
system("stty icanon");
system("stty echo");
exit(value);
return value;
}
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_PARAM_NUM(1),
exit, demoExit, exit);
SHELL_EXPORT_KEY_AGENCY(SHELL_CMD_PERMISSION(0),
0x03000000, exit, demoExit, 0);

static void signalHandler(int signal)
{
demoExit(0);
}

int main(void)
{
signal(SIGINT, signalHandler);
system("stty -echo");
system("stty -icanon");
userShellInit();
shellTask(&shell);
return 0;
}


SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_PARAM_NUM(1),
exit, exit, exit);
SHELL_EXPORT_KEY_AGENCY(SHELL_CMD_PERMISSION(0),
0x03000000, exit, exit, 0);
7 changes: 7 additions & 0 deletions demo/x86-gcc/shell_cfg.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,13 @@ unsigned int userGetTick();
*/
#define SHELL_QUICK_HELP 1

/**
* @brief 保存命令返回值
* 开启后会默认定义一个`RETVAL`变量,会保存上一次命令执行的返回值,可以在随后的命令中进行调用
* 如果命令的`SHELL_CMD_DISABLE_RETURN`标志被设置,则该命令不会更新`RETVAL`
*/
#define SHELL_KEEP_RETURN_VALUE 1

/**
* @brief 管理的最大shell数量
*/
Expand Down
30 changes: 26 additions & 4 deletions demo/x86-gcc/shell_port.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@
#include "shell_fs.h"
#include "shell_passthrough.h"
#include "log.h"
#include "telnetd.h"
#include <stdio.h>
#include <dirent.h>
#include <unistd.h>
#include <stddef.h>
#include <string.h>
#include <sys/time.h>
#include <pthread.h>

Shell shell;
char shellBuffer[512];
Expand Down Expand Up @@ -80,14 +82,10 @@ unsigned short userShellWrite(char *data, unsigned short len)
unsigned short userShellRead(char *data, unsigned short len)
{
unsigned short length = len;
system("stty -echo");
system("stty -icanon");
while (length--)
{
*data++ = getchar();
}
// system("stty icanon");
// system("stty echo");
return len;
}

Expand Down Expand Up @@ -131,6 +129,21 @@ size_t userShellListDir(char *path, char *buffer, size_t maxLen)
return 0;
}

/**
* @brief 新线程接口
*
* @param handler 线程函数
* @param param 线程参数
*
* @return int 0 启动成功 -1 启动失败
*/
int userNewThread(void *handler, void *param)
{
pthread_t tid;

return pthread_create(&tid, NULL, handler, param) == 0 ? 0 : -1;
}

/**
* @brief 用户shell初始化
*
Expand All @@ -155,6 +168,8 @@ void userShellInit(void)
log.write = terminalLogWrite;
logRegister(&log, &shell);

telentdInit(userNewThread);

// logDebug("hello world");
// logHexDump(LOG_ALL_OBJ, LOG_DEBUG, (void *)&shell, sizeof(shell));
}
Expand Down Expand Up @@ -237,3 +252,10 @@ void shellPassthroughTest(char *data, unsigned short len)
printf("passthrough mode test, data: %s, len: %d\r\n", data, len);
}
SHELL_EXPORT_PASSTROUGH(SHELL_CMD_PERMISSION(0), passTest, passthrough>>, shellPassthroughTest, passthrough mode test);

int shellRetValChange(int value)
{
return value;
}
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC),
changeRetVal, shellRetValChange, change shell return vallue);
Loading

0 comments on commit d573cf0

Please sign in to comment.