The generic code can only handle the no-delay case. Encoders with delay need to be handled individually, which will be done in the following commits.