diff options
Diffstat (limited to 'software/hhd70dongle/pcusbhid/rawhid_testinterface.c')
-rw-r--r-- | software/hhd70dongle/pcusbhid/rawhid_testinterface.c | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/software/hhd70dongle/pcusbhid/rawhid_testinterface.c b/software/hhd70dongle/pcusbhid/rawhid_testinterface.c new file mode 100644 index 0000000..8f19c4f --- /dev/null +++ b/software/hhd70dongle/pcusbhid/rawhid_testinterface.c @@ -0,0 +1,76 @@ +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <sys/time.h> +#include <unistd.h> +#if defined(OS_LINUX) || defined(OS_MACOSX) +#include <sys/ioctl.h> +#include <termios.h> +#elif defined(OS_WINDOWS) +#include <conio.h> +#endif + +#include "hid.h" + + +void sendstr(char * tosend) +{ + rawhid_send(0, tosend, strlen(tosend),1000); +} + +int mtime_diff(struct timeval high,struct timeval low) +{ + int result=1000*(high.tv_sec-low.tv_sec); + result+=high.tv_usec/1000-low.tv_usec/1000; + return result; +} + +#define BUF_LEN 64 + +int main (int argc, char *argv[]) +{ + int i, r, num; + char buf[BUF_LEN]; + // C-based example is 16C0:0480:FFAB:0200 + unsigned int attemtps = 100; + while(attemtps--) + { + r = rawhid_open(1, 0x16C0, 0x0481, 0xFFAB, 0x0200); + if (r > 0) + break; + else + sleep(1.0); + } + if (r <= 0) + { + printf("no rawhid device found\n"); + return -1; + } + printf("found rawhid device\n\n"); + //~ printf("Clearing Buffer\n"); + //~ sendstr("c"); // clear the buffer + size_t len; + //~ struct timeval start_time,stop_time; + //~ gettimeofday(&start_time,NULL); + //~ gettimeofday(&stop_time,NULL); + //~ while (mtime_diff(stop_time,start_time)<1000) { + // check if any Raw HID packet has arrived + + while (1) + { + num = rawhid_recv(0, buf, BUF_LEN, 220); + if (num < 0) + { + printf("\nerror reading, device went offline\n"); + rawhid_close(0); + return 0; + } + else if (num == 0) + { + sleep(1.0); + } + buf[num]='\0'; + printf("%s\n",buf); + } +} |