boardd: fix SPI return code on some transfer failures (#32401)

pull/32403/head
Adeeb Shihadeh 12 months ago committed by GitHub
parent 3fd549f30a
commit 4af50cee63
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 17
      selfdrive/boardd/spi.cc

@ -345,13 +345,13 @@ int PandaSpiHandle::spi_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx
ret = lltransfer(transfer);
if (ret < 0) {
LOGE("SPI: failed to send header");
goto transfer_fail;
return ret;
}
// Wait for (N)ACK
ret = wait_for_ack(SPI_HACK, 0x11, timeout, 1);
if (ret < 0) {
goto transfer_fail;
return ret;
}
// Send data
@ -363,20 +363,20 @@ int PandaSpiHandle::spi_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx
ret = lltransfer(transfer);
if (ret < 0) {
LOGE("SPI: failed to send data");
goto transfer_fail;
return ret;
}
// Wait for (N)ACK
ret = wait_for_ack(SPI_DACK, 0x13, timeout, 3);
if (ret < 0) {
goto transfer_fail;
return ret;
}
// Read data
rx_data_len = *(uint16_t *)(rx_buf+1);
if (rx_data_len >= SPI_BUF_SIZE) {
LOGE("SPI: RX data len larger than buf size %d", rx_data_len);
goto transfer_fail;
return -1;
}
transfer.len = rx_data_len + 1;
@ -384,11 +384,11 @@ int PandaSpiHandle::spi_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx
ret = lltransfer(transfer);
if (ret < 0) {
LOGE("SPI: failed to read rx data");
goto transfer_fail;
return ret;
}
if (!check_checksum(rx_buf, rx_data_len + 4)) {
LOGE("SPI: bad checksum");
goto transfer_fail;
return -1;
}
if (rx_data != NULL) {
@ -396,8 +396,5 @@ int PandaSpiHandle::spi_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx
}
return rx_data_len;
transfer_fail:
return ret;
}
#endif

Loading…
Cancel
Save