escc: Return NULL if nothing to read.
This commit is contained in:
parent
723eab59d6
commit
97727e0d1e
|
@ -214,7 +214,11 @@ bool CharIoStdin::rcv_char_available()
|
|||
consecutivechars = 0;
|
||||
return 0;
|
||||
}
|
||||
return this->rcv_char_available_now();
|
||||
}
|
||||
|
||||
bool CharIoStdin::rcv_char_available_now()
|
||||
{
|
||||
fd_set readfds;
|
||||
FD_ZERO(&readfds);
|
||||
FD_SET(STDIN_FILENO, &readfds);
|
||||
|
@ -344,7 +348,11 @@ bool CharIoSocket::rcv_char_available()
|
|||
consecutivechars = 0;
|
||||
return 0;
|
||||
}
|
||||
return rcv_char_available_now();
|
||||
}
|
||||
|
||||
bool CharIoSocket::rcv_char_available_now()
|
||||
{
|
||||
int sel_rv = 0;
|
||||
bool havechars = false;
|
||||
fd_set readfds;
|
||||
|
@ -440,7 +448,7 @@ bool CharIoSocket::rcv_char_available()
|
|||
int CharIoSocket::xmit_char(uint8_t c)
|
||||
{
|
||||
if (acceptfd == -1)
|
||||
CharIoSocket::rcv_char_available();
|
||||
CharIoSocket::rcv_char_available_now();
|
||||
|
||||
if (acceptfd != -1) {
|
||||
int sent = (int)send(acceptfd, &c, 1, 0);
|
||||
|
@ -460,7 +468,7 @@ int CharIoSocket::xmit_char(uint8_t c)
|
|||
int CharIoSocket::rcv_char(uint8_t *c)
|
||||
{
|
||||
if (acceptfd == -1)
|
||||
CharIoSocket::rcv_char_available();
|
||||
CharIoSocket::rcv_char_available_now();
|
||||
|
||||
if (acceptfd != -1) {
|
||||
int received = (int)recv(acceptfd, c, 1, 0);
|
||||
|
|
|
@ -47,6 +47,9 @@ public:
|
|||
virtual int rcv_enable() { return 0; };
|
||||
virtual void rcv_disable() {};
|
||||
virtual bool rcv_char_available() = 0;
|
||||
virtual bool rcv_char_available_now() {
|
||||
return rcv_char_available();
|
||||
}
|
||||
virtual int xmit_char(uint8_t c) = 0;
|
||||
virtual int rcv_char(uint8_t *c) = 0;
|
||||
};
|
||||
|
@ -71,6 +74,7 @@ public:
|
|||
int rcv_enable();
|
||||
void rcv_disable();
|
||||
bool rcv_char_available();
|
||||
bool rcv_char_available_now();
|
||||
int xmit_char(uint8_t c);
|
||||
int rcv_char(uint8_t *c);
|
||||
|
||||
|
@ -88,6 +92,7 @@ public:
|
|||
int rcv_enable();
|
||||
void rcv_disable();
|
||||
bool rcv_char_available();
|
||||
bool rcv_char_available_now();
|
||||
int xmit_char(uint8_t c);
|
||||
int rcv_char(uint8_t *c);
|
||||
|
||||
|
|
|
@ -315,7 +315,11 @@ uint8_t EsccChannel::receive_byte()
|
|||
|
||||
uint8_t c;
|
||||
|
||||
this->chario->rcv_char(&c);
|
||||
if (this->chario->rcv_char_available_now()) {
|
||||
this->chario->rcv_char(&c);
|
||||
} else {
|
||||
c = 0;
|
||||
}
|
||||
this->read_regs[0] &= ~1;
|
||||
return c;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue