diff options
author | Philip Balister <balister@moose.(none)> | 2010-03-24 15:49:08 -0400 |
---|---|---|
committer | Philip Balister <balister@moose.(none)> | 2010-03-24 15:49:08 -0400 |
commit | 4f5cd64188c7e2b5490d910d5e86301c053960ea (patch) | |
tree | 7e9f07b55f08cd52bc594c59bc23a2ba173e99c2 /host/apps/omap_debug/usrp-e-i2c.c | |
parent | ac482c5a469d6a02c8a83e0c0c7e10ce4eaf5718 (diff) | |
download | uhd-4f5cd64188c7e2b5490d910d5e86301c053960ea.tar.gz uhd-4f5cd64188c7e2b5490d910d5e86301c053960ea.tar.bz2 uhd-4f5cd64188c7e2b5490d910d5e86301c053960ea.zip |
Makefile and usrp-e-spi edits, add i2c test program.
Diffstat (limited to 'host/apps/omap_debug/usrp-e-i2c.c')
-rw-r--r-- | host/apps/omap_debug/usrp-e-i2c.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/host/apps/omap_debug/usrp-e-i2c.c b/host/apps/omap_debug/usrp-e-i2c.c new file mode 100644 index 000000000..dce1ae153 --- /dev/null +++ b/host/apps/omap_debug/usrp-e-i2c.c @@ -0,0 +1,71 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +#include <fcntl.h> +#include <sys/ioctl.h> + +#include "usrp1_e.h" + +// Usage: usrp_e_i2c w address data0 data1 data 2 .... +// Usage: usrp_e_i2c r address count + +int main(int argc, char *argv[]) +{ + int fp, ret, i; + struct usrp_e_i2c *i2c_msg; + int direction, address, count; + + if (argc < 3) { + printf("Usage: usrp1_e_i2c w address data0 data1 data2 ...\n"); + printf("Usage: usrp1_e_i2c r address count\n"); + exit(-1); + } + + if (strcmp(argv[1], "r") == 0) { + direction = 0; + } else if (strcmp(argv[1], "w") == 0) { + direction = 1; + } else { + return -1; + } + + address = atoi(argv[2]); + + fp = open("/dev/usrp1_e0", O_RDWR); + printf("fp = %d\n", fp); + + if (direction) { + count = argc - 2; + } else { + count = atoi(argv[3]); + } + + i2c_msg = malloc(sizeof(i2c_msg) + count * sizeof(char)); + + i2c_msg->addr = address; + i2c_msg->len = count; + + if (direction) { + // Write + + for (i=0; i<count; i++) { + i2c_msg->data[i] = atoi(argv[3+i]); + } + + ret = ioctl(fp, USRP_E_I2C_WRITE, i2c_msg); + printf("Return value from i2c_write ioctl: %d\n", ret); + } else { + // Read + + ret = ioctl(fp, USRP_E_I2C_READ, i2c_msg); + + printf("Ioctl: %d Data read :", ret); + for (i=0; i<count; i++) { + printf(" %X", i2c_msg->data[i]); + } + printf("/n"); + + } + return 0; +} |