1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-11-22 15:46:14 +01:00

Update I2CManager_NonBlocking.h

Missing initialisation of read buffer pointer!
This commit is contained in:
Neil McKechnie 2023-02-16 22:27:23 +00:00
parent d6c8595f8a
commit 10cd580061

View File

@ -316,6 +316,7 @@ void I2CManagerClass::handleInterrupt() {
deviceAddress = rbAddress; deviceAddress = rbAddress;
sendBuffer = currentRequest->writeBuffer; sendBuffer = currentRequest->writeBuffer;
bytesToSend = currentRequest->writeLen; bytesToSend = currentRequest->writeLen;
receiveBuffer = currentRequest->readBuffer;
bytesToReceive = currentRequest->readLen; bytesToReceive = currentRequest->readLen;
operation = currentRequest->operation & OPERATION_MASK; operation = currentRequest->operation & OPERATION_MASK;
state = I2C_STATE_ACTIVE; state = I2C_STATE_ACTIVE;
@ -326,16 +327,21 @@ void I2CManagerClass::handleInterrupt() {
// Application request completed, now send epilogue to mux // Application request completed, now send epilogue to mux
overallStatus = completionStatus; overallStatus = completionStatus;
currentRequest->nBytes = rxCount; // Save number of bytes read into rb currentRequest->nBytes = rxCount; // Save number of bytes read into rb
muxPhase = MuxPhase_EPILOG; if (_muxCount == 1) {
deviceAddress = I2C_MUX_BASE_ADDRESS + currentRequest->i2cAddress.muxNumber(); // Only one MUX, don't need to deselect subbus
muxData[0] = 0x00; muxPhase = MuxPhase_OFF;
sendBuffer = &muxData[0]; } else {
bytesToSend = 1; muxPhase = MuxPhase_EPILOG;
bytesToReceive = 0; deviceAddress = I2C_MUX_BASE_ADDRESS + currentRequest->i2cAddress.muxNumber();
operation = OPERATION_SEND; muxData[0] = 0x00;
state = I2C_STATE_ACTIVE; sendBuffer = &muxData[0];
I2C_sendStart(); bytesToSend = 1;
return; bytesToReceive = 0;
operation = OPERATION_SEND;
state = I2C_STATE_ACTIVE;
I2C_sendStart();
return;
}
} else if (muxPhase == MuxPhase_EPILOG) { } else if (muxPhase == MuxPhase_EPILOG) {
// Epilog finished, ignore completionStatus // Epilog finished, ignore completionStatus
muxPhase = MuxPhase_OFF; muxPhase = MuxPhase_OFF;