becker - I am happy to have an incomplete but reasonable abstraction that makes the common cases easier, and don't prevent me getting at the hardware. As long as the default initial values are meaningful and usable, for example PWM or ADC, I am fine.
Maple lib has been around in some form for more than two years and I don't think the abstractions are close to complete, so I don't expect some 'magic' to suddenly make them all complete and right.
I agree with you that poor abstractions get in the way, and poor implementations can maken things harder or more error prone.
For example, implementations that cache register values into variables, can be a nightmare because it is error prone or nerve wracking to work around them.
Similarly I don't like something abstract which tries to force a bunch of registers to be 'consistent', rather than give access to the individual components. For example, I do think the HardwaretImer's setPeriod is a poor abstraction because most values for period have multiple prescaler & reload values. IMHO it is better for the user to understand a little bit more detail about the HardwareTimer's counter, then use a calculator to work out the two numbers to have exactly the properties needed. This seems simpler, more stable and robust than hope a piece of library software will do the right thing for most cases. In this case it doesn't matter because the library gives access to the pre-scale and reload values, but an interface which only provided setPeriod would not be good.
So I don't expect abstractions of the timers which are complete, but I do expect to be able to use the useful parts and work around them for the extra functionality.
I do expect to have an abstraction of the counter, with prescaler and reload value. I'd like more control, but I am okay with nothing more than up/down or just up counting. If I need more, I am happy to get at the raw-hardware.
I'd like an abstraction for the encoder.
I do expect to have an abstraction of an output channel. I'd like one for an input channel.
Because I don't expect perfect, complete abstractions, I'd prefer things to match the ST Micro Peripherals documentation (RM0008). So I'd prefer to have the register names match the ST documentation. Any alternative to following the ST documentation needs to deliver significant added value (cute or nifty do not count:-)
(a bit off topic, sorry folks
full disclosure: I am not a member of LeafLabs staff.)