From 0ba979a658971751111651069bf96cb0046d06d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Sun, 1 Oct 2017 21:38:02 +0200 Subject: [PATCH] Refactor i2cSlaveCallback(). --- left/src/init_peripherals.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/left/src/init_peripherals.c b/left/src/init_peripherals.c index bed39c4..2a6216d 100644 --- a/left/src/init_peripherals.c +++ b/left/src/init_peripherals.c @@ -16,17 +16,6 @@ i2c_slave_transfer_event_t prevEvent; static void i2cSlaveCallback(I2C_Type *base, i2c_slave_transfer_t *xfer, void *userData) { - if (prevEvent != kI2C_SlaveReceiveEvent && xfer->event == kI2C_SlaveReceiveEvent) { - rxMessagePos = 0; - memset(&RxMessage, 0, I2C_BUFFER_MAX_LENGTH); - } else if (prevEvent == kI2C_SlaveReceiveEvent && xfer->event == kI2C_SlaveCompletionEvent) { - ((uint8_t*)&RxMessage)[rxMessagePos] = byteIn; - RxMessage.length = rxMessagePos-3; - SlaveRxHandler(); - } else if (prevEvent == kI2C_SlaveReceiveEvent && xfer->event == kI2C_SlaveReceiveEvent) { - ((uint8_t*)&RxMessage)[rxMessagePos++] = byteIn; - } - switch (xfer->event) { case kI2C_SlaveTransmitEvent: SlaveTxHandler(); @@ -34,10 +23,22 @@ static void i2cSlaveCallback(I2C_Type *base, i2c_slave_transfer_t *xfer, void *u xfer->dataSize = TxMessage.length+3; break; case kI2C_SlaveReceiveEvent: + if (prevEvent == kI2C_SlaveReceiveEvent) { + ((uint8_t*)&RxMessage)[rxMessagePos++] = byteIn; + } else { + rxMessagePos = 0; + memset(&RxMessage, 0, I2C_BUFFER_MAX_LENGTH); + } + xfer->data = (uint8_t*)&byteIn; xfer->dataSize = 1; break; case kI2C_SlaveCompletionEvent: + if (prevEvent == kI2C_SlaveReceiveEvent) { + ((uint8_t*)&RxMessage)[rxMessagePos] = byteIn; + RxMessage.length = rxMessagePos-3; + SlaveRxHandler(); + } break; default: break;