|
|
|
|
@ -125,49 +125,26 @@ int cnt, vid, pid;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int rqRefreshHasNew[] = {6, 0, 0};
|
|
|
|
|
int rqHasNew[] = {2, 0, 0};
|
|
|
|
|
int rqGetNew[] = {2, 1, 0};
|
|
|
|
|
int rqAdvance[] = {6, 1, 0};
|
|
|
|
|
int dbg_getchar[] = {6, 0, 0};
|
|
|
|
|
int *rq;
|
|
|
|
|
|
|
|
|
|
fprintf(stdout, "answer: value=0x%04x (%i)\n", 1,1);
|
|
|
|
|
while(1) {
|
|
|
|
|
// refresh "hasNew" variable
|
|
|
|
|
rq = rqRefreshHasNew;
|
|
|
|
|
cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, rq[0], rq[1], rq[2], buffer, sizeof(buffer), 5000);
|
|
|
|
|
if(cnt < 0){
|
|
|
|
|
fprintf(stdout, "\nUSB error in iteration ?!?: %s\n", usb_strerror());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// check whether we have new
|
|
|
|
|
rq = rqHasNew;
|
|
|
|
|
rq = dbg_getchar;
|
|
|
|
|
|
|
|
|
|
cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, rq[0], rq[1], rq[2], buffer, sizeof(buffer), 5000);
|
|
|
|
|
if(cnt < 0){
|
|
|
|
|
fprintf(stdout, "\nUSB error in iteration ?!?: %s\n", usb_strerror());
|
|
|
|
|
}
|
|
|
|
|
rxIndex = ((int)buffer[1] & 0xff) | (((int)buffer[0] & 0xff) << 8);
|
|
|
|
|
|
|
|
|
|
if(rxIndex) { // if we have new data?
|
|
|
|
|
// advance the new char pointer...
|
|
|
|
|
rq = rqAdvance;
|
|
|
|
|
cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, rq[0], rq[1], rq[2], buffer, sizeof(buffer), 5000);
|
|
|
|
|
if(cnt < 0){
|
|
|
|
|
fprintf(stdout, "\nUSB error in iteration ?!?: %s\n", usb_strerror());
|
|
|
|
|
}
|
|
|
|
|
rxIndex = ((int)buffer[1] & 0xff) | (((int)buffer[0] & 0xff) << 8);
|
|
|
|
|
|
|
|
|
|
// get the new char and print it
|
|
|
|
|
rq = rqGetNew;
|
|
|
|
|
cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, rq[0], rq[1], rq[2], buffer, sizeof(buffer), 5000);
|
|
|
|
|
if(cnt < 0){
|
|
|
|
|
fprintf(stdout, "\nUSB error in iteration ?!?: %s\n", usb_strerror());
|
|
|
|
|
}
|
|
|
|
|
rxIndex = ((int)buffer[1] & 0xff) | (((int)buffer[0] & 0xff) << 8);
|
|
|
|
|
if(rxIndex != 0 && (rxIndex & 0xff) != 0xff){
|
|
|
|
|
fprintf(stdout, "%c", rxIndex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
usleep(100);
|
|
|
|
|
|
|
|
|
|
if(rxIndex > 256) {
|
|
|
|
|
usleep(10000);
|
|
|
|
|
} else {
|
|
|
|
|
fprintf(stdout, "%c", rxIndex);
|
|
|
|
|
fflush(stdout);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
usage();
|
|
|
|
|
|