@@ -31,6 +31,7 @@ EncoderFirmata::EncoderFirmata()
3131 encoders[encoder]=NULL ;
3232 }
3333 autoReport = false ;
34+ numEncoders = 0 ;
3435}
3536
3637void EncoderFirmata::attachEncoder (byte encoderNum, byte pinANum, byte pinBNum)
@@ -48,6 +49,7 @@ void EncoderFirmata::attachEncoder(byte encoderNum, byte pinANum, byte pinBNum)
4849 Firmata.setPinMode (pinANum, ENCODER);
4950 Firmata.setPinMode (pinBNum, ENCODER);
5051 encoders[encoderNum] = new Encoder (pinANum, pinBNum);
52+ numEncoders++;
5153}
5254
5355void EncoderFirmata::detachEncoder (byte encoderNum)
@@ -56,6 +58,7 @@ void EncoderFirmata::detachEncoder(byte encoderNum)
5658 {
5759 free (encoders[encoderNum]);
5860 encoders[encoderNum] = NULL ;
61+ numEncoders--;
5962 }
6063}
6164
@@ -152,11 +155,12 @@ void EncoderFirmata::reset()
152155 detachEncoder (encoder);
153156 }
154157 autoReport = false ;
158+ numEncoders= 0 ;
155159}
156160
157161void EncoderFirmata::report ()
158162{
159- if (autoReport)
163+ if (autoReport && numEncoders> 0 )
160164 {
161165 reportPositions ();
162166 }
@@ -203,6 +207,9 @@ void EncoderFirmata::reportPosition(byte encoder)
203207// Report all attached encoders positions (one message for all encoders)
204208void EncoderFirmata::reportPositions ()
205209{
210+ for (encoder=0 ; encoder<MAX_ENCODERS; encoder++)
211+ {
212+ }
206213 Firmata.write (START_SYSEX);
207214 Firmata.write (ENCODER_DATA);
208215 byte encoder;
0 commit comments