]> mj.ucw.cz Git - home-hw.git/commitdiff
SSR: Better testing program
authorMartin Mares <mj@ucw.cz>
Thu, 9 Aug 2018 22:21:16 +0000 (00:21 +0200)
committerMartin Mares <mj@ucw.cz>
Thu, 9 Aug 2018 22:21:16 +0000 (00:21 +0200)
ssr/host/test.c

index 6e67f8e43ae755bef47520d92a51917d67f21726..ed68e82eb7c02a5ace82589f0266578cf6d0319c 100644 (file)
@@ -41,6 +41,33 @@ static libusb_device *find_device(void)
   exit(1);
 }
 
+static byte req[64], resp[64];
+
+static int transaction(uint req_len, uint resp_len)
+{
+  int err, transferred;
+  if (err = libusb_bulk_transfer(devh, 0x01, req, req_len, &transferred, 2000))
+    die("Transfer failed: error %d\n", err);
+  // printf("Transferred %d bytes\n", transferred);
+
+  int received;
+  if (err = libusb_bulk_transfer(devh, 0x82, resp, 64, &received, 2000))
+    die("Receive failed: error %d\n", err);
+  // printf("Received %d bytes\n", received);
+
+  if ((uint) received < resp_len)
+    die("Received short packet (%u out of %u bytes)", received, resp_len);
+
+  if (received >= 4)
+    {
+      uint status = get_u32_be(resp);
+      if (status)
+       die("Received error status %08x", status);
+    }
+
+  return received;
+}
+
 int main(void)
 {
   int err;
@@ -65,54 +92,19 @@ int main(void)
       exit(1);
     }
 
-  uint tst = 0;
+#if 1
+  put_u32_be(req, 2);
+  transaction(8, 8);
+  int t = get_u32_be(resp+4);
+  printf("Temp: %d\n", t);
+#endif
 
-  for (;;)
-    {
-      byte req[8];
-      put_u32_be(req, 1);
-      put_u32_be(req+4, (1 << tst));
-      tst = (tst+1) % 4;
-
-      int transferred;
-      if (err = libusb_bulk_transfer(devh, 0x01, req, 8, &transferred, 2000))
-       die("Transfer failed: error %d\n", err);
-      // printf("Transferred %d bytes\n", transferred);
-
-      unsigned char resp[64];
-      int received;
-      if (err = libusb_bulk_transfer(devh, 0x82, resp, 64, &received, 2000))
-       die("Receive failed: error %d\n", err);
-      // printf("Received %d bytes\n", received);
-
-      if (received >= 4)
-       {
-         int status = get_u32_be(resp);
-         if (status)
-           msg(L_ERROR, "Received error status %08x", status);
-       }
-      else
-       msg(L_ERROR, "Received short packet");
-
-      put_u32_be(req, 2);
-      put_u32_be(req+4, 0);
-      if (err = libusb_bulk_transfer(devh, 0x01, req, 8, &transferred, 2000))
-       die("Transfer failed: error %d\n", err);
-      if (err = libusb_bulk_transfer(devh, 0x82, resp, 64, &received, 2000))
-       die("Receive failed: error %d\n", err);
-      if (received >= 4)
-       {
-         int status = get_u32_be(resp);
-         if (status)
-           msg(L_ERROR, "Received error status %08x", status);
-         else
-           msg(L_INFO, "Temperature: %d\n", get_u32_be(resp+4));
-       }
-      else
-       msg(L_ERROR, "Received short packet");
+  int x = 0;
+  scanf("%d", &x);
 
-      sleep(1);
-    }
+  put_u32_be(req, 1);
+  put_u32_be(req+4, x);
+  transaction(8, 4);
 
   return 0;
 }