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;
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;
}