~ruther/qmk_firmware

5cf70f3993ceecf24dc46c6791552f268d82ae91 — Dimitris Papavasiliou 4 years ago 54b932e
Fix error handling in SPI master. (#11122)

Co-authored-by: Dimitris Papavasiliou <dpapavas@gmail.com>
1 files changed, 11 insertions(+), 5 deletions(-)

M drivers/avr/spi_master.c
M drivers/avr/spi_master.c => drivers/avr/spi_master.c +11 -5
@@ 140,27 140,33 @@ spi_status_t spi_read() {
}

spi_status_t spi_transmit(const uint8_t *data, uint16_t length) {
    spi_status_t status = SPI_STATUS_ERROR;
    spi_status_t status;

    for (uint16_t i = 0; i < length; i++) {
        status = spi_write(data[i]);

        if (status < 0) {
            return status;
        }
    }

    return status;
    return SPI_STATUS_SUCCESS;
}

spi_status_t spi_receive(uint8_t *data, uint16_t length) {
    spi_status_t status = SPI_STATUS_ERROR;
    spi_status_t status;

    for (uint16_t i = 0; i < length; i++) {
        status = spi_read();

        if (status > 0) {
        if (status >= 0) {
            data[i] = status;
        } else {
            return status;
        }
    }

    return (status < 0) ? status : SPI_STATUS_SUCCESS;
    return SPI_STATUS_SUCCESS;
}

void spi_stop(void) {