mirror of https://github.com/ArduPilot/ardupilot
make desktop serial more responsive
This commit is contained in:
parent
4e09ea5fa2
commit
de0a7117a8
|
@ -45,6 +45,7 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
#include "desktop.h"
|
||||||
|
|
||||||
#define LISTEN_BASE_PORT 5760
|
#define LISTEN_BASE_PORT 5760
|
||||||
#define BUFFER_SIZE 128
|
#define BUFFER_SIZE 128
|
||||||
|
@ -305,3 +306,19 @@ void FastSerial::_freeBuffer(Buffer *buffer)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
return true if any bytes are pending
|
||||||
|
*/
|
||||||
|
void desktop_serial_select_setup(fd_set *fds, int *fd_high)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i=0; i<FS_MAX_PORTS; i++) {
|
||||||
|
if (tcp_state[i].connected) {
|
||||||
|
FD_SET(tcp_state[i].fd, fds);
|
||||||
|
if (tcp_state[i].fd > *fd_high) {
|
||||||
|
*fd_high = tcp_state[i].fd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <sched.h>
|
#include <sched.h>
|
||||||
#include <wiring.h>
|
#include <wiring.h>
|
||||||
|
#include "desktop.h"
|
||||||
|
|
||||||
void setup(void);
|
void setup(void);
|
||||||
void loop(void);
|
void loop(void);
|
||||||
|
@ -16,15 +17,17 @@ int main(void)
|
||||||
setup();
|
setup();
|
||||||
while (true) {
|
while (true) {
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
unsigned long t1, t2;
|
fd_set fds;
|
||||||
t1 = micros();
|
int fd_high = 0;
|
||||||
|
|
||||||
|
FD_ZERO(&fds);
|
||||||
loop();
|
loop();
|
||||||
t2 = micros();
|
|
||||||
if (t2 - t1 < 2) {
|
desktop_serial_select_setup(&fds, &fd_high);
|
||||||
tv.tv_sec = 0;
|
tv.tv_sec = 0;
|
||||||
tv.tv_usec = 1;
|
tv.tv_usec = 100;
|
||||||
select(0, NULL, NULL, NULL, &tv);
|
|
||||||
}
|
select(fd_high+1, &fds, NULL, NULL, &tv);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue