summaryrefslogtreecommitdiff
path: root/software/hhd70dongle/pcusbhid/rawhid_testinterface.c
diff options
context:
space:
mode:
Diffstat (limited to 'software/hhd70dongle/pcusbhid/rawhid_testinterface.c')
-rw-r--r--software/hhd70dongle/pcusbhid/rawhid_testinterface.c76
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);
+ }
+}