A potpurri of message queue-related enhancements:
- Change "number of items used" API to "amount of space free" API, since the latter is more useful. (Or else support both?)
- Figure out how best to track # of slots in a message queue.
- Use uint16_t's, since a queue isn't likely to have more that 64K items?
- Compute the usage from the start and end pointers, and avoid the need for extra variables?
- Allow users to specify alignment of message queue items. (Requires an extra argument during initialization.)
- Need to decide how to handle cases where alignment would cause a gap between items . (Do we allow this or force the user to ensure that item size is a multiple of alignment?)