summaryrefslogtreecommitdiff
path: root/nuttx/graphics
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-05-20 22:10:34 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-05-20 22:10:34 +0000
commit7b639cc17a46229cacb9eca78a451a66122c54d8 (patch)
tree33492e787345ddef26740d5a9c1282f59324c2b0 /nuttx/graphics
parent01bce341a9d065e8250f655c246c07a525779bc0 (diff)
downloadpx4-nuttx-7b639cc17a46229cacb9eca78a451a66122c54d8.tar.gz
px4-nuttx-7b639cc17a46229cacb9eca78a451a66122c54d8.tar.bz2
px4-nuttx-7b639cc17a46229cacb9eca78a451a66122c54d8.zip
Add an NxWM console/keyboard thread and eliminate all issues with NxConsole window serial input
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4755 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/graphics')
-rw-r--r--nuttx/graphics/nxconsole/nxcon_kbdin.c16
-rw-r--r--nuttx/graphics/nxmu/nx_kbdin.c2
2 files changed, 14 insertions, 4 deletions
diff --git a/nuttx/graphics/nxconsole/nxcon_kbdin.c b/nuttx/graphics/nxconsole/nxcon_kbdin.c
index 5914d4069..f4b116c46 100644
--- a/nuttx/graphics/nxconsole/nxcon_kbdin.c
+++ b/nuttx/graphics/nxconsole/nxcon_kbdin.c
@@ -244,7 +244,7 @@ ssize_t nxcon_read(FAR struct file *filep, FAR char *buffer, size_t len)
/* Relinquish the mutual exclusion semaphore */
- sem_post(&priv->exclsem);
+ nxcon_sempost(priv);
/* Notify all poll/select waiters that they can write to the FIFO */
@@ -400,6 +400,7 @@ void nxcon_kbdin(NXCONSOLE handle, FAR const uint8_t *buffer, uint8_t buflen)
ssize_t nwritten;
int nexthead;
char ch;
+ int ret;
gvdbg("buflen=%d\n");
DEBUGASSERT(handle);
@@ -408,6 +409,15 @@ void nxcon_kbdin(NXCONSOLE handle, FAR const uint8_t *buffer, uint8_t buflen)
priv = (FAR struct nxcon_state_s *)handle;
+ /* Get exclusive access to the driver structure */
+
+ ret = nxcon_semwait(priv);
+ if (ret < 0)
+ {
+ gdbg("ERROR: nxcon_semwait failed\n");
+ return;
+ }
+
/* Loop until all of the bytes have been written. This function may be
* called from an interrupt handler! Semaphores cannot be used!
*
@@ -451,7 +461,6 @@ void nxcon_kbdin(NXCONSOLE handle, FAR const uint8_t *buffer, uint8_t buflen)
/* Was anything written? */
-#ifndef CONFIG_DISABLE_POLL
if (nwritten > 0)
{
int i;
@@ -468,10 +477,11 @@ void nxcon_kbdin(NXCONSOLE handle, FAR const uint8_t *buffer, uint8_t buflen)
/* Notify all poll/select waiters that they can write to the FIFO */
+#ifndef CONFIG_DISABLE_POLL
nxcon_pollnotify(priv, POLLIN);
+#endif
sched_unlock();
}
-#endif
nxcon_sempost(priv);
}
diff --git a/nuttx/graphics/nxmu/nx_kbdin.c b/nuttx/graphics/nxmu/nx_kbdin.c
index ac044bec7..b4b91298b 100644
--- a/nuttx/graphics/nxmu/nx_kbdin.c
+++ b/nuttx/graphics/nxmu/nx_kbdin.c
@@ -113,7 +113,7 @@ int nx_kbdin(NXHANDLE handle, uint8_t nch, FAR const uint8_t *ch)
outmsg->ch[i] = ch[i];
}
- ret = nxmu_sendserver(conn, &outmsg, size);
+ ret = nxmu_sendserver(conn, outmsg, size);
free(outmsg);
return ret;