Try to implement platform-independent keypressed()

This commit is contained in:
Dirk Ziegelmeier 2018-10-13 11:26:59 +02:00
parent c35dd079ee
commit a0d7b01186
3 changed files with 46 additions and 66 deletions

View File

@ -86,6 +86,16 @@
#include "default_netif.h"
static u8_t
keypressed(void)
{
struct timeval tv = { 0L, 0L };
fd_set fds;
FD_ZERO(&fds);
FD_SET(0, &fds);
return select(1, &fds, NULL, NULL, &tv);
}
#if NO_SYS
/* ... then we need information about the timer intervals: */
#include "lwip/ip4_frag.h"
@ -107,10 +117,6 @@
/* include the port-dependent configuration */
#include "lwipcfg.h"
#ifndef LWIP_EXAMPLE_APP_ABORT
#define LWIP_EXAMPLE_APP_ABORT() 0
#endif
/** Define this to 1 to enable a port-specific ethernet interface as default interface. */
#ifndef USE_DEFAULT_ETH_NETIF
#define USE_DEFAULT_ETH_NETIF 1
@ -657,7 +663,7 @@ main_loop(void)
#endif
/* MAIN LOOP for driver update (and timers if NO_SYS) */
while (!LWIP_EXAMPLE_APP_ABORT()) {
while (!keypressed()) {
#if NO_SYS
/* handle timers (already done in tcpip.c when NO_SYS=0) */
sys_check_timeouts();

View File

@ -74,8 +74,4 @@ void sys_arch_netconn_sem_free(void);
#define LWIP_NETCONN_THREAD_SEM_ALLOC() sys_arch_netconn_sem_alloc()
#define LWIP_NETCONN_THREAD_SEM_FREE() sys_arch_netconn_sem_free()
#define LWIP_EXAMPLE_APP_ABORT() lwip_win32_keypressed()
int lwip_win32_keypressed(void);
#endif /* LWIP_ARCH_SYS_ARCH_H */

View File

@ -732,28 +732,6 @@ sys_arch_netconn_sem_free(void)
#endif /* !NO_SYS */
/* get keyboard state to terminate the debug app on any kbhit event using win32 API */
int
lwip_win32_keypressed(void)
{
INPUT_RECORD rec;
DWORD num = 0;
HANDLE h = GetStdHandle(STD_INPUT_HANDLE);
BOOL ret = PeekConsoleInput(h, &rec, 1, &num);
if (ret && num) {
ReadConsoleInput(h, &rec, 1, &num);
if (rec.EventType == KEY_EVENT) {
if (rec.Event.KeyEvent.bKeyDown) {
/* not a special key? */
if (rec.Event.KeyEvent.uChar.AsciiChar != 0) {
return 1;
}
}
}
}
return 0;
}
#include <stdarg.h>
/* This is an example implementation for LWIP_PLATFORM_DIAG: