@@ -31,6 +31,7 @@ EncoderFirmata::EncoderFirmata()
31
31
encoders[encoder]=NULL ;
32
32
}
33
33
autoReport = false ;
34
+ numEncoders = 0 ;
34
35
}
35
36
36
37
void EncoderFirmata::attachEncoder (byte encoderNum, byte pinANum, byte pinBNum)
@@ -48,6 +49,7 @@ void EncoderFirmata::attachEncoder(byte encoderNum, byte pinANum, byte pinBNum)
48
49
Firmata.setPinMode (pinANum, ENCODER);
49
50
Firmata.setPinMode (pinBNum, ENCODER);
50
51
encoders[encoderNum] = new Encoder (pinANum, pinBNum);
52
+ numEncoders++;
51
53
}
52
54
53
55
void EncoderFirmata::detachEncoder (byte encoderNum)
@@ -56,6 +58,7 @@ void EncoderFirmata::detachEncoder(byte encoderNum)
56
58
{
57
59
free (encoders[encoderNum]);
58
60
encoders[encoderNum] = NULL ;
61
+ numEncoders--;
59
62
}
60
63
}
61
64
@@ -152,11 +155,12 @@ void EncoderFirmata::reset()
152
155
detachEncoder (encoder);
153
156
}
154
157
autoReport = false ;
158
+ numEncoders= 0 ;
155
159
}
156
160
157
161
void EncoderFirmata::report ()
158
162
{
159
- if (autoReport)
163
+ if (autoReport && numEncoders> 0 )
160
164
{
161
165
reportPositions ();
162
166
}
@@ -203,6 +207,9 @@ void EncoderFirmata::reportPosition(byte encoder)
203
207
// Report all attached encoders positions (one message for all encoders)
204
208
void EncoderFirmata::reportPositions ()
205
209
{
210
+ for (encoder=0 ; encoder<MAX_ENCODERS; encoder++)
211
+ {
212
+ }
206
213
Firmata.write (START_SYSEX);
207
214
Firmata.write (ENCODER_DATA);
208
215
byte encoder;
0 commit comments