escc: Return NULL if nothing to read.

This commit is contained in:
joevt 2024-01-27 15:19:45 -08:00 committed by dingusdev
parent 723eab59d6
commit 97727e0d1e
3 changed files with 20 additions and 3 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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;
}