QRduino is an implementation of a QR code generator targeted for embedded systems.
The main limitation is it only encodes as 8 bit binary data (for now), but that is the general case since numeric, alphanumeric, or kanji can be expressed as binary.
It minimizes memory usage (especially data and RAM) by using bitfields instead of bytes for the pixels, the algorithms are transformed into minimal math versions (e.g. counters replace division or modulo operators in the masking, (x*y)&1 becomes (x&y&1), etc.) so it is significantly faster, yet implements all the features and parameters beyond the original encoding – every version (size) and (ecc) level combination.
The source file qrencode.c does the hard work of encoding the stream, calculating and adding the error correction, populating the frame, determining optimal masking, and some general housekeeping.
The structures and control data are created by qrframe.c – dofbit.c can link to this to produce a C file which can link to qrencode for a single size and level combination (faster, smaller, ROMable), or the routines can be called directly in preparation before calling qrencode().