It looks like you are simply sending data from the device and then expecting to see the data on the host which is not correct.
On the host poll (the timer tick) you need to send a command to the device (like 0x80 in my examples) when the device receives the command it fills the output buffer with the appropriate data and then responds. In USB HID the host must always initiate communication with a command, the device cannot simply fill the output buffer whenever it likes.
Look again at some of the USB projects on my site and you will see how it works
