Reusable software components: object-oriented embedded systems programming in C