From 9917f09f1f4e7050eeb5687b70c10e5c1630d27c Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Tue, 25 Aug 2015 01:58:56 +0200 Subject: [PATCH] OMK template: include example of telnetd accessible remote shell. Signed-off-by: Pavel Pisa --- rtems-omk-template/appnet/Makefile.omk | 7 ++++++ rtems-omk-template/appnet/init.c | 33 ++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/rtems-omk-template/appnet/Makefile.omk b/rtems-omk-template/appnet/Makefile.omk index 5d56d4e..de715b6 100644 --- a/rtems-omk-template/appnet/Makefile.omk +++ b/rtems-omk-template/appnet/Makefile.omk @@ -1,9 +1,12 @@ default_CONFIG += CONFIG_OC_BUILD4RTEMS=y default_CONFIG += CONFIG_OC_GDBSTUB=x default_CONFIG += CONFIG_OC_APP_APPNET=x +default_CONFIG += CONFIG_OC_APP_APPNET_TELNETD=x ifeq ($(CONFIG_OC_APP_APPNET),y) +LOCAL_CONFIG_H = appl_config.h + bin_PROGRAMS = appnet #lib_LIBRARIES = @@ -16,4 +19,8 @@ appnet_SOURCES += init.c task_1.c lib_LOADLIBES += bar nfs +ifeq ($(CONFIG_OC_APP_APPNET_TELNETD),y) +lib_LOADLIBES += telnetd +endif + endif diff --git a/rtems-omk-template/appnet/init.c b/rtems-omk-template/appnet/init.c index e0a7583..e25d49d 100644 --- a/rtems-omk-template/appnet/init.c +++ b/rtems-omk-template/appnet/init.c @@ -24,6 +24,7 @@ #include #include "system.h" #include "app_def.h" +#include "appl_config.h" #include #include #include @@ -63,6 +64,22 @@ rtems_shell_init(m_task_name,m_task_stacksize,m_task_priority,m_devname,m_forever,m_wait) #endif +#ifdef CONFIG_OC_APP_APPNET_TELNETD +#include + +rtems_telnetd_config_table rtems_telnetd_config; + +void run_telnetd_command(char *device_name, void *arg) +{ + rtems_shell_env_t shell_env; + + rtems_shell_dup_current_env(&shell_env); + shell_env.taskname = NULL; + shell_env.devname = device_name; + rtems_shell_main_loop(&shell_env); +} +#endif /*CONFIG_OC_APP_APPNET_TELNETD*/ + void bad_rtems_status(rtems_status_code status, int fail_level, const char *text) { @@ -105,7 +122,7 @@ rtems_task Init( "\n" ); Task_1_name = rtems_build_name( 'T', 'S', 'K', '1' ); - + status = rtems_task_create( Task_1_name, TASK_1_PRIORITY, @@ -128,8 +145,20 @@ rtems_task Init( //rtems_monitor_wakeup(); + #ifdef CONFIG_OC_APP_APPNET_TELNETD + rtems_telnetd_config.command = run_telnetd_command; + rtems_telnetd_config.arg = NULL; + rtems_telnetd_config.priority = SHELL_TASK_PRIORITY; + rtems_telnetd_config.stack_size = RTEMS_MINIMUM_STACK_SIZE+0x1000; + rtems_telnetd_config.login_check = NULL; + rtems_telnetd_config.keep_stdio = 0; + + status = rtems_telnetd_initialize(); + check_rtems_status(status, 0, "rtems_telnetd_initialize\n"); + #endif /*CONFIG_OC_APP_APPNET_TELNETD*/ + status = rtems_task_delete( RTEMS_SELF ); - + printf( "*** END OF TEST2 ***\n" ); exit( 0 ); } -- 2.39.2