mirror of
https://github.com/DCC-EX/CommandStation-EX.git
synced 2024-11-27 01:56:14 +01:00
Capture progress
This commit is contained in:
parent
004d10ee58
commit
1e48c59cd8
|
@ -71,14 +71,11 @@ void EXTurntable::_loop(unsigned long currentMicros) {
|
||||||
uint8_t readBuffer[1];
|
uint8_t readBuffer[1];
|
||||||
I2CManager.read(_I2CAddress, readBuffer, 1);
|
I2CManager.read(_I2CAddress, readBuffer, 1);
|
||||||
_stepperStatus = readBuffer[0];
|
_stepperStatus = readBuffer[0];
|
||||||
if (_stepperStatus < 2) {
|
if (_stepperStatus != _previousStatus && _stepperStatus == 0) { // Broadcast when a rotation finishes
|
||||||
if (_stepperStatus != _previousStatus) {
|
|
||||||
_broadcastStatus(_firstVpin, _stepperStatus);
|
_broadcastStatus(_firstVpin, _stepperStatus);
|
||||||
_previousStatus = _stepperStatus;
|
_previousStatus = _stepperStatus;
|
||||||
}
|
}
|
||||||
}
|
delayUntil(currentMicros + 100000); // Wait 100ms before checking again
|
||||||
// DIAG(F("Turntable-EX returned status: %d"), _stepperStatus);
|
|
||||||
delayUntil(currentMicros + 500000); // Wait 500ms before checking again, turntables turn slowly
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read returns status as obtained in our loop.
|
// Read returns status as obtained in our loop.
|
||||||
|
@ -128,6 +125,7 @@ void EXTurntable::_writeAnalogue(VPIN vpin, int value, uint8_t activity, uint16_
|
||||||
_I2CAddress.toString(), stepsMSB, stepsLSB, activity);
|
_I2CAddress.toString(), stepsMSB, stepsLSB, activity);
|
||||||
#endif
|
#endif
|
||||||
_stepperStatus = 1; // Tell the device driver Turntable-EX is busy
|
_stepperStatus = 1; // Tell the device driver Turntable-EX is busy
|
||||||
|
_broadcastStatus(vpin, _stepperStatus); // Broadcast when the rotation starts
|
||||||
I2CManager.write(_I2CAddress, 3, stepsMSB, stepsLSB, activity);
|
I2CManager.write(_I2CAddress, 3, stepsMSB, stepsLSB, activity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,9 @@ bool Turntable::setPositionStateOnly(uint16_t id, uint8_t position, bool moving)
|
||||||
// Only need to broadcast from here if it's a DCC type, device driver broadcasts EXTT
|
// Only need to broadcast from here if it's a DCC type, device driver broadcasts EXTT
|
||||||
if (!tto->isEXTT()) { CommandDistributor::broadcastTurntable(id, position, moving); }
|
if (!tto->isEXTT()) { CommandDistributor::broadcastTurntable(id, position, moving); }
|
||||||
#if defined(EXRAIL_ACTIVE)
|
#if defined(EXRAIL_ACTIVE)
|
||||||
// RMFT2::turntableEvent(id, position);
|
bool rotated = false;
|
||||||
|
if (position != tto->_previousPosition) rotated = true;
|
||||||
|
if (!tto->isEXTT()) { RMFT2::rotateEvent(id, rotated); }
|
||||||
#endif
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -138,6 +140,7 @@ bool Turntable::setPosition(uint16_t id, uint8_t position, uint8_t activity) {
|
||||||
|
|
||||||
if (ok) {
|
if (ok) {
|
||||||
// Broadcast a position change only if non zero has been set, or home/calibration sent
|
// Broadcast a position change only if non zero has been set, or home/calibration sent
|
||||||
|
tto->_previousPosition = tto->getPosition();
|
||||||
if (position > 0 || (position == 0 && (activity == 2 || activity == 3))) {
|
if (position > 0 || (position == 0 && (activity == 2 || activity == 3))) {
|
||||||
tto->_turntableData.position = position;
|
tto->_turntableData.position = position;
|
||||||
if (tto->isEXTT()) {
|
if (tto->isEXTT()) {
|
||||||
|
|
|
@ -106,6 +106,9 @@ protected:
|
||||||
// Linked list for positions
|
// Linked list for positions
|
||||||
TurntablePositionList _turntablePositions;
|
TurntablePositionList _turntablePositions;
|
||||||
|
|
||||||
|
// Store the previous position to allow checking for changes
|
||||||
|
uint8_t _previousPosition = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Constructor
|
* Constructor
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue
Block a user