40 #include <nuttx/config.h> 48 #include <semaphore.h> 52 #include "nshlib/nshlib.h" 65 #ifdef CONFIG_NSH_USBKBD 66 # warning You probably do not really want CONFIG_NSH_USBKBD, try CONFIG_NXWM_KEYBOARD_USBHOST 73 #ifdef CONFIG_NET_IPv6 74 # define ADDR_FAMILY AF_INET6 76 # define ADDR_FAMILY AF_INET 97 struct nxterm_window_s
wndo;
121 using namespace NxWM;
217 if (m_pid >= 0 || m_nxterm != 0)
219 gerr(
"ERROR: All ready running or connected\n");
225 if (sem_wait(&g_nxtermvars.
exclSem) != 0)
229 gerr(
"ERROR: Failed to get semaphore\n");
247 g_nxtermvars.
wndo.wcolor[0] = CONFIG_NXWM_NXTERM_WCOLOR;
248 g_nxtermvars.
wndo.fcolor[0] = CONFIG_NXWM_NXTERM_FONTCOLOR;
249 g_nxtermvars.
wndo.fontid = CONFIG_NXWM_NXTERM_FONTID;
257 g_nxtermvars.
console = (FAR
void *)
this;
258 g_nxtermvars.
result =
false;
262 m_pid = task_create(
"NxTerm", CONFIG_NXWM_NXTERM_PRIO,
263 CONFIG_NXWM_NXTERM_STACKSIZE,
nxterm,
264 (FAR
char *
const *)0);
271 gerr(
"ERROR: Failed to create the NxTerm task\n");
278 struct timespec abstime;
279 clock_gettime(CLOCK_REALTIME, &abstime);
282 int ret = sem_timedwait(&g_nxtermvars.
waitSem, &abstime);
285 if (ret == OK && g_nxtermvars.
result)
289 DEBUGASSERT(g_nxtermvars.
nxterm != 0);
290 #ifdef CONFIG_NXTERM_NXKBDIN 295 m_nxterm = g_nxtermvars.
nxterm;
302 gerr(
"ERROR: Failed start the NxTerm task\n");
308 sem_post(&g_nxtermvars.
exclSem);
343 #ifdef CONFIG_NXTERM_NXKBDIN 350 nxterm_unregister(m_nxterm);
368 m_window->block(
this);
399 struct nxgl_size_s windowSize;
400 (void)window->
getSize(&windowSize);
404 struct nxgl_rect_s rect;
407 rect.pt2.x = windowSize.w - 1;
408 rect.pt2.y = windowSize.h - 1;
410 nxterm_redraw(m_nxterm, &rect,
false);
423 return m_window->isFullScreen();
440 if (on_exit(exitHandler, g_nxtermvars.
console) != 0)
442 gerr(
"ERROR: on_exit failed\n");
448 g_nxtermvars.
nxterm = nxtk_register(g_nxtermvars.
hwnd, &g_nxtermvars.
wndo,
452 gerr(
"ERROR: Failed register the console device\n");
459 snprintf(devname, 32,
"/dev/nxterm%d", g_nxtermvars.
minor);
463 g_nxtermvars.
minor++;
467 #ifdef CONFIG_NXTERM_NXKBDIN 468 fd = open(devname, O_RDWR);
470 fd = open(devname, O_WRONLY);
474 gerr(
"ERROR: Failed open the console device\n");
475 goto errout_with_nxterm;
483 (void)std::fflush(stdout);
484 (void)std::fflush(stderr);
486 #ifdef CONFIG_NXTERM_NXKBDIN 487 (void)std::fclose(stdin);
489 (void)std::fclose(stdout);
490 (void)std::fclose(stderr);
492 #ifdef CONFIG_NXTERM_NXKBDIN 493 (void)std::dup2(fd, 0);
495 (void)std::dup2(fd, 1);
496 (void)std::dup2(fd, 2);
498 #ifdef CONFIG_NXTERM_NXKBDIN 499 (void)std::fdopen(0,
"r");
501 (void)std::fdopen(1,
"w");
502 (void)std::fdopen(2,
"w");
510 g_nxtermvars.
result =
true;
511 sem_post(&g_nxtermvars.
waitSem);
515 #ifdef CONFIG_NSH_CONSOLE 516 (void)nsh_consolemain(argc, argv);
526 nxterm_unregister(g_nxtermvars.
nxterm);
530 g_nxtermvars.
result =
false;
531 sem_post(&g_nxtermvars.
waitSem);
548 if (This->
m_pid >= 0)
568 m_taskbar->minimizeApplication(static_cast<IApplication*>(
this));
577 m_taskbar->stopApplication(static_cast<IApplication*>(
this));
603 gerr(
"ERROR: Failed to create CApplicationWindow\n");
611 gerr(
"ERROR: Failed to open CApplicationWindow\n");
622 gerr(
"ERROR: Failed to instantiate CNxTerm\n");
657 sem_init(&g_nxtermvars.
exclSem, 0, 1);
658 sem_init(&g_nxtermvars.
waitSem, 0, 0);
667 #ifdef CONFIG_NSH_TELNET 668 int ret = nsh_telnetstart(ADDR_FAMILY);
NXWidgets::IBitmap * getIcon(void)
bool stopApplication(IApplication *app)
virtual void redirectNxTerm(NXTERM handle)=0
static int nxterm(int argc, char *argv[])
IApplication * create(void)
bool isFullScreen(void) const
void setWindowLabel(NXWidgets::CNxString &appname)
IApplicationWindow * getWindow(void) const
virtual bool getSize(FAR struct nxgl_size_s *pSize)=0
bool nshlibInitialize(void)
void registerCallbacks(IApplicationCallback *callback)
CNxTermFactory(CTaskbar *taskbar)
NXWidgets::IBitmap * getIcon(void)
NXWidgets::CNxString getName(void)
struct nxterm_window_s wndo
CNxTerm(CTaskbar *taskbar, CApplicationWindow *window)
virtual CWidgetControl * getWidgetControl(void) const =0
static const NXWidgets::SRlePaletteBitmapEntry bitmap[]
NXHANDLE getWindowHandle(void)
static void exitHandler(int code, FAR void *arg)
static struct SNxTerm g_nxtermvars