getPeriod() would be working as intended. If the encoder is not getting a pulse it means the velocity is zero and thus getPeriod is zero.
Here's the actual source code for the method.
Code:
public double getPeriod() {
double period;
if (m_counter.readTimerOutput_Stalled()) {
return Double.POSITIVE_INFINITY;
} else {
period = (double) m_counter.readTimerOutput_Period() / (double) m_counter.readTimerOutput_Count();
}
return period / 1.0e6;
}
The counter class will run the getStopped() method if the pulse did not change within x period and set the time to stalled.
Code:
public boolean getStopped() {
return m_counter.readTimerOutput_Stalled();
}