summaryrefslogtreecommitdiff
path: root/nuttx/graphics/nxmu/nxfe.h
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2013-12-27 13:18:20 -0600
committerGregory Nutt <gnutt@nuttx.org>2013-12-27 13:18:20 -0600
commit148213e1695902cbfaccc8599cfa06871b8133f3 (patch)
tree4785609fc85371d953d7323f8b7b32f130d969b8 /nuttx/graphics/nxmu/nxfe.h
parent020af6336bcf71173c7758f31b04066e425b4988 (diff)
downloadpx4-nuttx-148213e1695902cbfaccc8599cfa06871b8133f3.tar.gz
px4-nuttx-148213e1695902cbfaccc8599cfa06871b8133f3.tar.bz2
px4-nuttx-148213e1695902cbfaccc8599cfa06871b8133f3.zip
Decoupling NX user interfaces to support NX kernel build (phase 1)
Diffstat (limited to 'nuttx/graphics/nxmu/nxfe.h')
-rw-r--r--nuttx/graphics/nxmu/nxfe.h501
1 files changed, 31 insertions, 470 deletions
diff --git a/nuttx/graphics/nxmu/nxfe.h b/nuttx/graphics/nxmu/nxfe.h
index e24b44af7..a455f478d 100644
--- a/nuttx/graphics/nxmu/nxfe.h
+++ b/nuttx/graphics/nxmu/nxfe.h
@@ -1,7 +1,7 @@
/****************************************************************************
* graphics/nxmu/nxfe.h
*
- * Copyright (C) 2008-2012 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -48,36 +48,13 @@
#include <semaphore.h>
#include <nuttx/nx/nx.h>
+#include <nuttx/nx/nxmu.h>
#include "nxbe.h"
/****************************************************************************
* Pre-Processor Definitions
****************************************************************************/
-
-/* Configuration ************************************************************/
-
-#ifdef CONFIG_DISABLE_MQUEUE
-# error "Message queues are disabled(CONFIG_DISABLE_MQUEUE)"
-#endif
-
-#ifndef CONFIG_NX_MXSERVERMSGS
-# define CONFIG_NX_MXSERVERMSGS 32 /* Number of pending messages in server MQ */
-#endif
-
-#ifndef CONFIG_NX_MXCLIENTMSGS
-# define CONFIG_NX_MXCLIENTMSGS 16 /* Number of pending messages in each client MQ */
-#endif
-
-/* Used to create unique client MQ name */
-
-#define NX_CLIENT_MQNAMEFMT "/dev/nxc%d"
-#define NX_CLIENT_MXNAMELEN (16)
-
-#define NX_MXSVRMSGLEN (64) /* Maximum size of a client->server command */
-#define NX_MXEVENTLEN (64) /* Maximum size of an event */
-#define NX_MXCLIMSGLEN (64) /* Maximum size of a server->client message */
-
/* Handy macros */
#define nxmu_semgive(sem) sem_post(sem) /* To match nxmu_semtake() */
@@ -86,36 +63,6 @@
* Public Types
****************************************************************************/
-/* Client/Connection structures *********************************************/
-
-/* Client state */
-
-enum nx_clistate_e
-{
- NX_CLISTATE_NOTCONNECTED = 0, /* Waiting for server to acknowledge connection */
- NX_CLISTATE_CONNECTED, /* Connection established (normal state) */
- NX_CLISTATE_DISCONNECT_PENDING, /* Waiting for server to acknowledge disconnect */
-};
-
-/* This structure represents a connection between the client and the server */
-
-struct nxfe_conn_s
-{
- /* This number uniquely identifies the client */
-
- int cid; /* Client ID (CID) */
- uint8_t state; /* See enum nx_clistate_e */
-
- /* These are only usable on the client side of the connection */
-
- mqd_t crdmq; /* MQ to read from the server (may be non-blocking) */
- mqd_t cwrmq; /* MQ to write to the server (blocking) */
-
- /* These are only usable on the server side of the connection */
-
- mqd_t swrmq; /* MQ to write to the client */
-};
-
/* Server state structure ***************************************************/
/* This the server 'front-end' state structure */
@@ -129,342 +76,11 @@ struct nxfe_state_s
struct nxbe_state_s be;
- /* This is the server's connection to iself */
+ /* This is the server's connection to itself */
struct nxfe_conn_s conn;
};
-/* Message IDs **************************************************************/
-
-enum nxmsg_e
-{
- /* Server-to-Client Messages **********************************************/
-
- NX_CLIMSG_CONNECTED = 1, /* The server has completed the connection and is ready */
- NX_CLIMSG_DISCONNECTED, /* The server has disconnected */
- NX_CLIMSG_REDRAW, /* Re-draw the specified window */
- NX_CLIMSG_NEWPOSITION, /* New window size/position */
- NX_CLIMSG_MOUSEIN, /* New mouse positional data available for window */
- NX_CLIMSG_KBDIN, /* New keypad input available for window */
- NX_CLIMSG_BLOCKED, /* The window is blocked */
-
- /* Client-to-Server Messages **********************************************/
-
- NX_SVRMSG_CONNECT, /* Establish connection with new NX server client */
- NX_SVRMSG_DISCONNECT, /* Tear down connection with terminating client */
- NX_SVRMSG_OPENWINDOW, /* Create a new window */
- NX_SVRMSG_CLOSEWINDOW, /* Close an existing window */
- NX_SVRMSG_BLOCKED, /* The window is blocked */
- NX_SVRMSG_REQUESTBKGD, /* Open the background window */
- NX_SVRMSG_RELEASEBKGD, /* Release the background window */
- NX_SVRMSG_SETPOSITION, /* Window position has changed */
- NX_SVRMSG_SETSIZE, /* Window size has changed */
- NX_SVRMSG_GETPOSITION, /* Get the current window position and size */
- NX_SVRMSG_RAISE, /* Move the window to the top */
- NX_SVRMSG_LOWER, /* Move the window to the bottom */
- NX_SVRMSG_SETPIXEL, /* Set a single pixel in the window with a color */
- NX_SVRMSG_FILL, /* Fill a rectangle in the window with a color */
- NX_SVRMSG_GETRECTANGLE, /* Get a rectangular region in the window */
- NX_SVRMSG_FILLTRAP, /* Fill a trapezoidal region in the window with a color */
- NX_SVRMSG_MOVE, /* Move a rectangular region within the window */
- NX_SVRMSG_BITMAP, /* Copy a rectangular bitmap into the window */
- NX_SVRMSG_SETBGCOLOR, /* Set the color of the background */
- NX_SVRMSG_MOUSEIN, /* New mouse report from mouse client */
- NX_SVRMSG_KBDIN, /* New keyboard report from keyboard client */
-};
-
-/* Message priorities -- they must all be at the same priority to assure
- * FIFO execution.
- */
-
-#define NX_CLIMSG_PRIO 42
-#define NX_SVRMSG_PRIO 42
-
-/* Server-to-Client Message Structures **************************************/
-
-/* The generic message structure. All messages begin with this form. */
-
-struct nxclimsg_s
-{
- uint32_t msgid; /* Any of nxclimsg_e */
-};
-
-/* The server is now connected */
-
-struct nxclimsg_connected_s
-{
- uint32_t msgid; /* NX_CLIMSG_REDRAW_CONNECTED */
-};
-
-/* The server is now disconnected */
-
-struct nxclimsg_disconnected_s
-{
- uint32_t msgid; /* NX_CLIMSG_REDRAW_DISCONNECTED */
-};
-
-/* This message is received when a requested window has been opened. If wnd is NULL
- * then errorcode is the errno value that provides the explanation of the error.
- */
-
-struct nxclimsg_redraw_s
-{
- uint32_t msgid; /* NX_CLIMSG_REDRAW */
- FAR struct nxbe_window_s *wnd; /* The handle to the window to redraw in */
- FAR struct nxgl_rect_s rect; /* The rectangle to be redrawn */
- bool more; /* true: more redraw messages follow */
-};
-
-/* This message informs the client of the new size or position of the window */
-
-struct nxclimsg_newposition_s
-{
- uint32_t msgid; /* NX_CLIMSG_NEWPOSITION */
- FAR struct nxbe_window_s *wnd; /* The window whose position/size has changed */
- FAR struct nxgl_size_s size; /* The current window size */
- FAR struct nxgl_point_s pos; /* The current window position */
- FAR struct nxgl_rect_s bounds; /* Size of screen */
-};
-
-/* This message reports a new mouse event to a particular window */
-
-#ifdef CONFIG_NX_MOUSE
-struct nxclimsg_mousein_s
-{
- uint32_t msgid; /* NX_SVRMSG_MOUSEIN */
- FAR struct nxbe_window_s *wnd; /* The handle of window receiving mouse input */
- struct nxgl_point_s pos; /* Mouse X/Y position */
- uint8_t buttons; /* Mouse button set */
-};
-#endif
-
-/* This message reports a new keypad event to a particular window */
-
-#ifdef CONFIG_NX_KBD
-struct nxclimsg_kbdin_s
-{
- uint32_t msgid; /* NX_CLIMSG_KBDIN */
- FAR struct nxbe_window_s *wnd; /* The handle of window receiving keypad input */
- uint8_t nch; /* Number of characters received */
- uint8_t ch[1]; /* Array of received characters */
-};
-#endif
-
-/* This messsage confirms that that all queued window messages have been
- * flushed and that the all further window messages are blocked.
- */
-
-struct nxclimsg_blocked_s
-{
- uint32_t msgid; /* NX_CLIMSG_BLOCKED */
- FAR struct nxbe_window_s *wnd; /* The window that is blocked */
- FAR void *arg; /* User argument */
-};
-
-/* Client-to-Server Message Structures **************************************/
-
-/* The generic message structure. All server messages begin with this form. Also
- * messages that have no additional data fields use this structure. This includes:
- * NX_SVRMSG_CONNECT and NX_SVRMSG_DISCONNECT.
- */
-
-struct nxsvrmsg_s /* Generic server message */
-{
- uint32_t msgid; /* One of enum nxsvrmsg_e */
- FAR struct nxfe_conn_s *conn; /* The specific connection sending the message */
-};
-
-/* This message requests the server to create a new window */
-
-struct nxsvrmsg_openwindow_s
-{
- uint32_t msgid; /* NX_SVRMSG_OPENWINDOW */
- FAR struct nxbe_window_s *wnd; /* The pre-allocated window structure */
-};
-
-/* This message informs the server that client wishes to close a window */
-
-struct nxsvrmsg_closewindow_s
-{
- uint32_t msgid; /* NX_SVRMSG_CLOSEWINDOW */
- FAR struct nxbe_window_s *wnd; /* The window to be closed */
-};
-
-/* This messsage is just a marker that is queued and forwarded by the server
- * (NX_CLIMSG_BLOCKED). Messages to the window were blocked just after this
- * message was sent. Receipt of this message indicates both that the window
- * blocked and that there are no further queued messages for the window.
- */
-
-struct nxsvrmsg_blocked_s
-{
- uint32_t msgid; /* NX_SVRMSG_BLOCKED */
- FAR struct nxbe_window_s *wnd; /* The window that is blocked */
- FAR void *arg; /* User argument */
-};
-
-/* This message requests the server to create a new window */
-
-struct nxsvrmsg_requestbkgd_s
-{
- uint32_t msgid; /* NX_SVRMSG_REQUESTBKGD */
- FAR struct nxfe_conn_s *conn; /* The specific connection sending the message */
- FAR const struct nx_callback_s *cb; /* Event handling callbacks */
- FAR void *arg; /* Client argument used with callbacks */
-};
-
-/* This message informs the server that client wishes to close a window */
-
-struct nxsvrmsg_releasebkgd_s
-{
- uint32_t msgid; /* NX_SVRMSG_RELEASEBKGD */
-};
-
-/* This message informs the server that the size or position of the window has changed */
-
-struct nxsvrmsg_setposition_s
-{
- uint32_t msgid; /* NX_SVRMSG_SETPOSITION */
- FAR struct nxbe_window_s *wnd; /* The window whose position/size has changed */
- FAR struct nxgl_point_s pos; /* The new window position */
-};
-
-/* This message informs the server that the size or position of the window has changed */
-
-struct nxsvrmsg_setsize_s
-{
- uint32_t msgid; /* NX_SVRMSG_SETSIZE */
- FAR struct nxbe_window_s *wnd; /* The window whose position/size has changed */
- FAR struct nxgl_size_s size; /* The new window size */
-};
-
-/* This message informs the server that the size or position of the window has changed */
-
-struct nxsvrmsg_getposition_s
-{
- uint32_t msgid; /* NX_SVRMSG_FETPOSITION */
- FAR struct nxbe_window_s *wnd; /* The window whose position/size has changed */
-};
-
-/* This message informs the server to raise this window to the top of the display */
-
-struct nxsvrmsg_raise_s
-{
- uint32_t msgid; /* NX_SVRMSG_RAISE */
- FAR struct nxbe_window_s *wnd; /* The window to be raised */
-};
-
-/* This message informs the server to lower this window to the bottom of the display */
-
-struct nxsvrmsg_lower_s
-{
- uint32_t msgid; /* NX_SVRMSG_LOWER */
- FAR struct nxbe_window_s *wnd; /* The window to be lowered */
-};
-
-/* Set a single pixel in the window with a color */
-
-struct nxsvrmsg_setpixel_s
-{
- uint32_t msgid; /* NX_SVRMSG_SETPIXEL */
- FAR struct nxbe_window_s *wnd; /* The window to fill */
- struct nxgl_point_s pos; /* The position of the pixel in the window */
- nxgl_mxpixel_t color[CONFIG_NX_NPLANES]; /* Color to use in the fill */
-};
-
-/* Fill a rectangle in the window with a color */
-
-struct nxsvrmsg_fill_s
-{
- uint32_t msgid; /* NX_SVRMSG_FILL */
- FAR struct nxbe_window_s *wnd; /* The window to fill */
- struct nxgl_rect_s rect; /* The rectangle in the window to fill */
- nxgl_mxpixel_t color[CONFIG_NX_NPLANES]; /* Color to use in the fill */
-};
-
-/* Get a rectangular region from the window */
-
-struct nxsvrmsg_getrectangle_s
-{
- uint32_t msgid; /* NX_SVRMSG_GETRECTANGLE */
- FAR struct nxbe_window_s *wnd; /* The window to get from */
- struct nxgl_rect_s rect; /* The rectangle in the window to get from */
- unsigned int plane; /* The plane number to read */
- FAR uint8_t *dest; /* Memory location in which to store the graphics data */
- unsigned int deststride; /* Width of the destination memory in bytes */
- sem_t *sem_done; /* Semaphore to report when command is done. */
-};
-
-/* Fill a trapezoidal region in the window with a color */
-
-struct nxsvrmsg_filltrapezoid_s
-{
- uint32_t msgid; /* NX_SVRMSG_FILLTRAP */
- FAR struct nxbe_window_s *wnd; /* The window to fill */
- FAR struct nxgl_rect_s clip; /* The clipping window */
- struct nxgl_trapezoid_s trap; /* The trapezoidal region in the window to fill */
- nxgl_mxpixel_t color[CONFIG_NX_NPLANES]; /* Color to use in the fill */
-};
-
-/* Move a rectangular region within the window */
-
-struct nxsvrmsg_move_s
-{
- uint32_t msgid; /* NX_SVRMSG_MOVE */
- FAR struct nxbe_window_s *wnd; /* The window within which the move is done */
- struct nxgl_rect_s rect; /* Describes the rectangular region to move */
- struct nxgl_point_s offset; /* The offset to move the region */
-};
-
-/* Copy a rectangular bitmap into the window */
-
-struct nxsvrmsg_bitmap_s
-{
- uint32_t msgid; /* NX_SVRMSG_BITMAP */
- FAR struct nxbe_window_s *wnd; /* The window with will receive the bitmap image */
- struct nxgl_rect_s dest; /* Destination location of the bitmap in the window */
- FAR const void *src[CONFIG_NX_NPLANES]; /* The start of the source image. */
- struct nxgl_point_s origin; /* Offset into the source image data */
- unsigned int stride; /* The width of the full source image in pixels. */
- sem_t *sem_done; /* Semaphore to report when command is done. */
-};
-
-/* Set the color of the background */
-
-struct nxsvrmsg_setbgcolor_s
-{
- uint32_t msgid; /* NX_SVRMSG_SETBGCOLOR */
- nxgl_mxpixel_t color[CONFIG_NX_NPLANES]; /* Color to use in the background */
-};
-
-/* This message reports a new mouse event from a hardware controller attached to
- * the server as a regular client (this message may have even been sent from an
- * interrupt handler).
- */
-
-#ifdef CONFIG_NX_MOUSE
-struct nxsvrmsg_mousein_s
-{
- uint32_t msgid; /* NX_SVRMSG_MOUSEIN */
- struct nxgl_point_s pt; /* Mouse X/Y position */
- uint8_t buttons; /* Mouse button set */
-};
-#endif
-
-/* This message reports a new keyboard event from a hardware controller attached to
- * some kind of keypad (this message may have even been sent from an
- * interrupt handler).
- */
-
-#ifdef CONFIG_NX_KBD
-struct nxsvrmsg_kbdin_s
-{
- uint32_t msgid; /* NX_SVRMSG_KBDIN */
- uint8_t nch ; /* Number of characters received */
- uint8_t ch[1]; /* Array of received characters */
-};
-#endif
-
/****************************************************************************
* Public Data
****************************************************************************/
@@ -472,7 +88,8 @@ struct nxsvrmsg_kbdin_s
#undef EXTERN
#if defined(__cplusplus)
#define EXTERN extern "C"
-extern "C" {
+extern "C"
+{
#else
#define EXTERN extern
#endif
@@ -505,69 +122,14 @@ extern "C" {
*
* Return:
* OK on success; ERROR on failure with errno set appropriately. In the
- * case of ERROR, NX will have dealloated the pre-allocated window.
- *
- ****************************************************************************/
-
-EXTERN int nxfe_constructwindow(NXHANDLE handle,
- FAR struct nxbe_window_s *wnd,
- FAR const struct nx_callback_s *cb,
- FAR void *arg);
-
-/****************************************************************************
- * Name: nxmu_semtake
- *
- * Description:
- * Take the semaphore, handling EINTR wakeups. See the nxmu_semgive macro.
- *
- * Input Parameters:
- * sem - the semaphore to be taken.
- *
- * Return:
- * None
- *
- ****************************************************************************/
-
-EXTERN void nxmu_semtake(sem_t *sem);
-
-/****************************************************************************
- * Name: nxmu_sendserver
- *
- * Description:
- * Send a message to the server at NX_SVRMSG_PRIO priority
- *
- * Input Parameters:
- * conn - A pointer to the server connection structure
- * msg - A pointer to the message to send
- * msglen - The length of the message in bytes.
- *
- * Return:
- * OK on success; ERROR on failure with errno set appropriately
+ * case of ERROR, NX will have deallocated the pre-allocated window.
*
****************************************************************************/
-EXTERN int nxmu_sendserver(FAR struct nxfe_conn_s *conn,
- FAR const void *msg, size_t msglen);
-
-/****************************************************************************
- * Name: nxmu_sendwindow
- *
- * Description:
- * Send a message to the server detined for a specific window at
- * NX_SVRMSG_PRIO priority
- *
- * Input Parameters:
- * wnd - A pointer to the back-end window structure
- * msg - A pointer to the message to send
- * msglen - The length of the message in bytes.
- *
- * Return:
- * OK on success; ERROR on failure with errno set appropriately
- *
- ****************************************************************************/
-
-EXTERN int nxmu_sendwindow(FAR struct nxbe_window_s *wnd, FAR const void *msg,
- size_t msglen);
+int nxfe_constructwindow(NXHANDLE handle,
+ FAR struct nxbe_window_s *wnd,
+ FAR const struct nx_callback_s *cb,
+ FAR void *arg);
/****************************************************************************
* Name: nxmu_sendclient
@@ -585,8 +147,8 @@ EXTERN int nxmu_sendwindow(FAR struct nxbe_window_s *wnd, FAR const void *msg,
*
****************************************************************************/
-EXTERN int nxmu_sendclient(FAR struct nxfe_conn_s *conn,
- FAR const void *msg, size_t msglen);
+int nxmu_sendclient(FAR struct nxfe_conn_s *conn,
+ FAR const void *msg, size_t msglen);
/****************************************************************************
* Name: nxmu_sendclientwindow
@@ -605,7 +167,7 @@ EXTERN int nxmu_sendclient(FAR struct nxfe_conn_s *conn,
****************************************************************************/
int nxmu_sendclientwindow(FAR struct nxbe_window_s *wnd, FAR const void *msg,
- size_t msglen);
+ size_t msglen);
/****************************************************************************
* Name: nxmu_openwindow
@@ -622,8 +184,8 @@ int nxmu_sendclientwindow(FAR struct nxbe_window_s *wnd, FAR const void *msg,
*
****************************************************************************/
-EXTERN void nxmu_openwindow(FAR struct nxbe_state_s *be,
- FAR struct nxbe_window_s *wnd);
+void nxmu_openwindow(FAR struct nxbe_state_s *be,
+ FAR struct nxbe_window_s *wnd);
/****************************************************************************
* Name: nxmu_requestbkgd
@@ -643,10 +205,10 @@ EXTERN void nxmu_openwindow(FAR struct nxbe_state_s *be,
*
****************************************************************************/
-EXTERN void nxmu_requestbkgd(FAR struct nxfe_conn_s *conn,
- FAR struct nxbe_state_s *be,
- FAR const struct nx_callback_s *cb,
- FAR void *arg);
+void nxmu_requestbkgd(FAR struct nxfe_conn_s *conn,
+ FAR struct nxbe_state_s *be,
+ FAR const struct nx_callback_s *cb,
+ FAR void *arg);
/****************************************************************************
* Name: nxmu_releasebkgd
@@ -663,28 +225,28 @@ EXTERN void nxmu_requestbkgd(FAR struct nxfe_conn_s *conn,
*
****************************************************************************/
-EXTERN void nxmu_releasebkgd(FAR struct nxfe_state_s *fe);
+void nxmu_releasebkgd(FAR struct nxfe_state_s *fe);
/****************************************************************************
* Name: nxfe_reportposition
*
- * Descripton:
+ * Description:
* Report the new size/position of the window.
*
****************************************************************************/
-EXTERN void nxfe_reportposition(FAR struct nxbe_window_s *wnd);
+void nxfe_reportposition(FAR struct nxbe_window_s *wnd);
/****************************************************************************
* Name: nxfe_redrawreq
*
- * Descripton:
+ * Description:
* Request the client that has this window to redraw the rectangular region.
*
****************************************************************************/
-EXTERN void nxfe_redrawreq(FAR struct nxbe_window_s *wnd,
- FAR const struct nxgl_rect_s *rect);
+void nxfe_redrawreq(FAR struct nxbe_window_s *wnd,
+ FAR const struct nxgl_rect_s *rect);
/****************************************************************************
* Name: nxmu_mouseinit
@@ -695,7 +257,7 @@ EXTERN void nxfe_redrawreq(FAR struct nxbe_window_s *wnd,
****************************************************************************/
#ifdef CONFIG_NX_MOUSE
-EXTERN void nxmu_mouseinit(int x, int y);
+void nxmu_mouseinit(int x, int y);
#endif
/****************************************************************************
@@ -713,7 +275,7 @@ EXTERN void nxmu_mouseinit(int x, int y);
****************************************************************************/
#ifdef CONFIG_NX_MOUSE
-EXTERN int nxmu_mousereport(struct nxbe_window_s *wnd);
+int nxmu_mousereport(struct nxbe_window_s *wnd);
#endif
/****************************************************************************
@@ -727,14 +289,14 @@ EXTERN int nxmu_mousereport(struct nxbe_window_s *wnd);
****************************************************************************/
#ifdef CONFIG_NX_MOUSE
-EXTERN int nxmu_mousein(FAR struct nxfe_state_s *fe,
- FAR const struct nxgl_point_s *pos, int button);
+int nxmu_mousein(FAR struct nxfe_state_s *fe,
+ FAR const struct nxgl_point_s *pos, int button);
#endif
/****************************************************************************
* Name: nxmu_kbdin
*
- * Descripton:
+ * Description:
* New keyboard data has been received from the thread or interrupt
* handler that manages some kind of keyboard/keypad hardware. Route that
* positional data to the appropriate window client.
@@ -742,7 +304,7 @@ EXTERN int nxmu_mousein(FAR struct nxfe_state_s *fe,
****************************************************************************/
#ifdef CONFIG_NX_KBD
-EXTERN void nxmu_kbdin(FAR struct nxfe_state_s *fe, uint8_t nch, FAR uint8_t *ch);
+void nxmu_kbdin(FAR struct nxfe_state_s *fe, uint8_t nch, FAR uint8_t *ch);
#endif
#undef EXTERN
@@ -751,4 +313,3 @@ EXTERN void nxmu_kbdin(FAR struct nxfe_state_s *fe, uint8_t nch, FAR uint8_t *ch
#endif
#endif /* __GRAPHICS_NXMU_NXFE_H */
-