From: Martin Mares Date: Thu, 9 Aug 2018 22:21:16 +0000 (+0200) Subject: SSR: Better testing program X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=0c9c9fdf517d2d9ee951bcf64ca253edfc960790;p=home-hw.git SSR: Better testing program --- diff --git a/ssr/host/test.c b/ssr/host/test.c index 6e67f8e..ed68e82 100644 --- a/ssr/host/test.c +++ b/ssr/host/test.c @@ -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; }