Our initial plan was to use lirc-rpi (lircd) for Remote and Poll gpio of RPI to
handle the front panel Buttons and rotary Encoder. When we developed the software and looked at the CPU usage we found that polling the GPIO pins frequently for
Buttons and Rotary Encoder and using lircd was taking up decent amount of
CPU cycles. Our design philosophy is always to have as many CPU cycles as possible for audio decoding instead of ancillary tasks. If the audio player
is CPU starved it can lead to degradation of sound quality.
To allow the most CPU headroom for the player , we offload all Input handling tasks like polling Input keys, decoding IR remote etc to a independent MCU board. Since we have a MCU Board that is powered separately, power management and muting also is handled by the MCU.