scpi_serial: Rephrase NL and NL+CR line termination check.
Rearrange the check for line termination in SCPI receive data, and add a
comment in that spot. Keep related conditions together, avoid line breaks
for complex terms. This shall simplify review, and raise awareness during
maintenance. This change amends commit a0ade2f933
.
This commit is contained in:
parent
4e5ff004d8
commit
6dc0007c71
|
@ -181,22 +181,22 @@ static int scpi_serial_read_data(void *priv, char *buf, int maxlen)
|
||||||
|
|
||||||
/* Try to read new data into the buffer. */
|
/* Try to read new data into the buffer. */
|
||||||
ret = serial_read_nonblocking(sscpi->serial, buf, maxlen);
|
ret = serial_read_nonblocking(sscpi->serial, buf, maxlen);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (ret > 0) {
|
/*
|
||||||
if (buf[ret - 1] == '\n') {
|
* Check for line termination at the end of the receive data.
|
||||||
|
* Handle the usual case of NL, as well as the unusual NL+CR
|
||||||
|
* combination (some GWInstek DMMs were found to do this).
|
||||||
|
*/
|
||||||
|
sscpi->got_newline = FALSE;
|
||||||
|
if (ret >= 1 && buf[ret - 1] == '\n') {
|
||||||
sscpi->got_newline = TRUE;
|
sscpi->got_newline = TRUE;
|
||||||
sr_spew("Received NL terminator");
|
sr_spew("Received NL terminator");
|
||||||
} else if (ret > 1 &&
|
} else if (ret >= 2 && buf[ret - 2] == '\n' && buf[ret - 1] == '\r') {
|
||||||
buf[ret - 2] == '\n' && buf[ret - 1] == '\r') {
|
ret--;
|
||||||
sscpi->got_newline = TRUE;
|
sscpi->got_newline = TRUE;
|
||||||
sr_spew("Received NL+CR terminator");
|
sr_spew("Received NL+CR terminator");
|
||||||
ret--;
|
|
||||||
} else {
|
|
||||||
sscpi->got_newline = FALSE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue