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:
parent
d6c8595f8a
commit
10cd580061
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user