The existence of two separate implementations of bubblesort (one for char, one for uint16_t), in and of it self, says everything that needs to be said about this. This was written by someone who refuses to use even the meager facilities C offers programmers, and doesn't know enough about them to even NIH things well. Moreover, he seems to like overtly complex, specialized code over simple, generic code.
(if the author of this library is reading this: qsort is a libc function that can sort an array of any type, in any way, and does so much more efficiently than bubblesort could ever dream, while not being very complex.)