view testugen.c @ 60:50fca9562310

Add support for reading/writing to a DS1307 over TWI/IIC. Note that iic_read() appears to have a bug where it stops 1 byte earlier than expected, work around it for now by adding 1 in the gettod() function. tempctrl.c now prints the TOD as read from the RTC for each line.
author darius@Inchoate
date Thu, 30 Oct 2008 11:53:32 +1030
parents d5a265299a4b
children
line wrap: on
line source

#include <sys/types.h>
#include <sys/ioctl.h>
#include <dev/usb/usb.h>
#include <sys/errno.h>
#include <sys/uio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>

int
main(int argc, char **argv) {
    int		endpt2fd, i, len;
    char	*endpt2name = "/dev/ugen0.2";
    uint8_t	data[256];
    
    if ((endpt2fd = open(endpt2name, O_RDWR)) == -1) {
	fprintf(stderr, "Unable to open %s: %s\n", endpt2name, strerror(errno));
	exit(1);
    }

    i = 1;
    if (ioctl(endpt2fd, USB_SET_SHORT_XFER, &i) == -1) {
	fprintf(stderr, "Unable to set short xfer on end point 2: %s\n", strerror(errno));
	exit(1);
    }
    
    while(1) {
	len = read(endpt2fd, data, 256);
	printf("len = %d\n", len);
	if (len == 0) {
	    printf("EOF\n");
	    continue;
	}
	if (len == -1) {
	    printf("read error: %s\n", strerror(errno));
	    exit(1);
	}
	
	for (i = 0; i < len; i++)
	    printf("0x%02x ", data[i]);
	printf("\n");
    }
}