#include <iostream>
typedef int USB_HANDLE;
typedef unsigned char BYTE;
int HIDTxHandleBusy(USB_HANDLE handle){
return 0;
}
USB_HANDLE HIDTxPacket(BYTE ep, BYTE* data, size_t len){
std::cout<<"Sending "<<len<<" bytes"<<std::endl;
return 0;
}
USB_HANDLE send1(USB_HANDLE handle, BYTE* data, size_t len)
{
int frags = len / 64;
for(int i = 0; i < frags; i++)
{
while(HIDTxHandleBusy(handle))
{
//write idle code px delay(10)
}
handle = HIDTxPacket(0,data,64);
data += 64;
}
while(HIDTxHandleBusy(handle))
{
//write idle code px delay(10)
}
return HIDTxPacket(0,data,len % 64);
}
int main()
{
BYTE buf[129] = {0};
send1(0,buf,sizeof(buf));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp0eXBlZGVmIGludCBVU0JfSEFORExFOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgQllURTsKaW50IEhJRFR4SGFuZGxlQnVzeShVU0JfSEFORExFIGhhbmRsZSl7CglyZXR1cm4gMDsKfQpVU0JfSEFORExFIEhJRFR4UGFja2V0KEJZVEUgZXAsIEJZVEUqIGRhdGEsIHNpemVfdCBsZW4pewoJc3RkOjpjb3V0PDwiU2VuZGluZyAiPDxsZW48PCIgYnl0ZXMiPDxzdGQ6OmVuZGw7CglyZXR1cm4gMDsKfQpVU0JfSEFORExFIHNlbmQxKFVTQl9IQU5ETEUgaGFuZGxlLCBCWVRFKiBkYXRhLCBzaXplX3QgbGVuKQp7CglpbnQgZnJhZ3MgPSBsZW4gLyA2NDsKCWZvcihpbnQgaSA9IDA7IGkgPCBmcmFnczsgaSsrKQoJewoJCXdoaWxlKEhJRFR4SGFuZGxlQnVzeShoYW5kbGUpKQoJCXsKCQkJLy93cml0ZSBpZGxlIGNvZGUgcHggZGVsYXkoMTApCgkJfQoJCWhhbmRsZSA9IEhJRFR4UGFja2V0KDAsZGF0YSw2NCk7CgkJZGF0YSArPSA2NDsKCX0KCXdoaWxlKEhJRFR4SGFuZGxlQnVzeShoYW5kbGUpKQoJewoJCS8vd3JpdGUgaWRsZSBjb2RlIHB4IGRlbGF5KDEwKQoJfQoJcmV0dXJuIEhJRFR4UGFja2V0KDAsZGF0YSxsZW4gJSA2NCk7CgkKfQoKaW50IG1haW4oKQp7CglCWVRFIGJ1ZlsxMjldID0gezB9OwoJc2VuZDEoMCxidWYsc2l6ZW9mKGJ1ZikpOwoJcmV0dXJuIDA7Cn0=