Gendriver - motivation

The other day I hooked up my brand new SSD1306 oled to a PI board. I thought it'd be easy to test it and develop a prototype of my software before I move the whole thing on to a 8 bit MCU. I thought I'd find a simple lib that talks to the display, drawing pixels, not trying to do anything fancy.

How wrong I was!

For PI, there are examples written in C or in C++, that depend on driver libs for i2c. There are python implementations requiring a hundred megabyte of python and 3rd party i2c libs installed. For 8 bit MCUs the situation is similar: exmaples working only in arduino environemnt, or huge display framework projects where my specific device is only a tiny submodule.

The common aspect of most examples I've found:

The motivation behind gendriver is to provide a set of middle layer drivers wihtout the above shortcomings:

The major drawbacks of this model are all related to the fact each project needs to #include and configure a local instance for the very specific purpose of the project: