OMK template: include example of telnetd accessible remote shell.
authorPavel Pisa <pisa@cmp.felk.cvut.cz>
Mon, 24 Aug 2015 23:58:56 +0000 (01:58 +0200)
committerPavel Pisa <pisa@cmp.felk.cvut.cz>
Mon, 24 Aug 2015 23:58:56 +0000 (01:58 +0200)
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
rtems-omk-template/appnet/Makefile.omk
rtems-omk-template/appnet/init.c

index 5d56d4e..de715b6 100644 (file)
@@ -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
index e0a7583..e25d49d 100644 (file)
@@ -24,6 +24,7 @@
 #include <system_def.h>
 #include "system.h"
 #include "app_def.h"
+#include "appl_config.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include <rtems/error.h>
           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.h>
+
+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 );
 }