Optimized Interrupts for Encoder library not working after update

sgang007

New member
Recently, I installed an update to this Encoder library and the ENCODER_OPTIMIZE_INTERRUPTS function is not working anymore.

I just tried the basic example code that comes with this library and added the line
Code:
#define ENCODER_OPTIMIZE_INTERRUPTS
on top and I got this error message (with verbose on) while compilation:

Code:
Arduino: 1.6.7 (Windows 7), Board: "Arduino/Genuino Uno"

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware "C:\Program Files (x86)\Arduino\hardware" -tools "C:\Program Files (x86)\Arduino\tools-builder" -tools "C:\Program Files (x86)\Arduino\hardware\tools\avr" -built-in-libraries "C:\Program Files (x86)\Arduino\libraries" -libraries "C:\Users\shubho\Documents\Arduino\libraries" -fqbn=arduino:avr:uno -ide-version=10607 -build-path "C:\Users\shubho\AppData\Local\Temp\build4d7be15749b406bad5d58153a503d205.tmp" -warnings=none -prefs=build.warn_data_percentage=75 -verbose "C:\Users\shubho\AppData\Local\Temp\arduino_4d7be15749b406bad5d58153a503d205\Basic.pde"
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware "C:\Program Files (x86)\Arduino\hardware" -tools "C:\Program Files (x86)\Arduino\tools-builder" -tools "C:\Program Files (x86)\Arduino\hardware\tools\avr" -built-in-libraries "C:\Program Files (x86)\Arduino\libraries" -libraries "C:\Users\shubho\Documents\Arduino\libraries" -fqbn=arduino:avr:uno -ide-version=10607 -build-path "C:\Users\shubho\AppData\Local\Temp\build4d7be15749b406bad5d58153a503d205.tmp" -warnings=none -prefs=build.warn_data_percentage=75 -verbose "C:\Users\shubho\AppData\Local\Temp\arduino_4d7be15749b406bad5d58153a503d205\Basic.pde"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "C:\Users\shubho\AppData\Local\Temp\build4d7be15749b406bad5d58153a503d205.tmp\sketch\Basic.pde.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Users\shubho\Documents\Arduino\libraries\Encoder" "C:\Users\shubho\AppData\Local\Temp\build4d7be15749b406bad5d58153a503d205.tmp\sketch\Basic.pde.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Users\shubho\Documents\Arduino\libraries\Encoder" "C:\Users\shubho\Documents\Arduino\libraries\Encoder\Encoder.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Users\shubho\Documents\Arduino\libraries\Encoder" "C:\Users\shubho\AppData\Local\Temp\build4d7be15749b406bad5d58153a503d205.tmp\sketch\Basic.pde.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Users\shubho\Documents\Arduino\libraries\Encoder" "C:\Users\shubho\AppData\Local\Temp\build4d7be15749b406bad5d58153a503d205.tmp\sketch\Basic.pde.cpp" -o "C:\Users\shubho\AppData\Local\Temp\build4d7be15749b406bad5d58153a503d205.tmp\preproc\ctags_target_for_gcc_minus_e.cpp"
"C:\Program Files (x86)\Arduino\tools-builder\ctags\5.8-arduino5/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\Users\shubho\AppData\Local\Temp\build4d7be15749b406bad5d58153a503d205.tmp\preproc\ctags_target_for_gcc_minus_e.cpp"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Users\shubho\Documents\Arduino\libraries\Encoder" "C:\Users\shubho\AppData\Local\Temp\build4d7be15749b406bad5d58153a503d205.tmp\sketch\Basic.pde.cpp" -o "C:\Users\shubho\AppData\Local\Temp\build4d7be15749b406bad5d58153a503d205.tmp\sketch\Basic.pde.cpp.o"
In file included from C:\Users\shubho\AppData\Local\Temp\arduino_4d7be15749b406bad5d58153a503d205\Basic.pde:7:0:

C:\Users\shubho\Documents\Arduino\libraries\Encoder/Encoder.h: In function 'void __vector_1()':

C:\Users\shubho\Documents\Arduino\libraries\Encoder/Encoder.h:185:14: error: 'static void Encoder::update(Encoder_internal_state_t*)' is private

  static void update(Encoder_internal_state_t *arg) {

              ^

C:\Users\shubho\Documents\Arduino\libraries\Encoder/Encoder.h:915:79: error: within this context

 ISR(INT0_vect) { Encoder::update(Encoder::interruptArgs[SCRAMBLE_INT_ORDER(0)]); }

                                                                               ^

C:\Users\shubho\Documents\Arduino\libraries\Encoder/Encoder.h: In function 'void __vector_2()':

C:\Users\shubho\Documents\Arduino\libraries\Encoder/Encoder.h:185:14: error: 'static void Encoder::update(Encoder_internal_state_t*)' is private

  static void update(Encoder_internal_state_t *arg) {

              ^

C:\Users\shubho\Documents\Arduino\libraries\Encoder/Encoder.h:918:79: error: within this context

 ISR(INT1_vect) { Encoder::update(Encoder::interruptArgs[SCRAMBLE_INT_ORDER(1)]); }

                                                                               ^

Using library Encoder at version 1.4 in folder: C:\Users\shubho\Documents\Arduino\libraries\Encoder 
exit status 1
Error compiling.
 
For a temp fix find:
Code:
static void update(Encoder_internal_state_t *arg) {
and change
Code:
private:
before it to:
Code:
public:

I'm unfamiliar with this library and don't know what should have it's implementation hid. I'm sure Paul could glance at it and find a suitable fix
 
Back
Top