works with the most basic of libarys and is not very generic
added support for a generic libary to run from the USBs own interupte using a pointer that can take a given function that is called when new packets are recived from the HOST side