aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--host/apps/omap_debug/Makefile5
-rw-r--r--host/apps/omap_debug/usrp-e-uart-rx.c53
2 files changed, 57 insertions, 1 deletions
diff --git a/host/apps/omap_debug/Makefile b/host/apps/omap_debug/Makefile
index f292379f4..4779969de 100644
--- a/host/apps/omap_debug/Makefile
+++ b/host/apps/omap_debug/Makefile
@@ -1,6 +1,6 @@
CFLAGS=-Wall -I../../lib/usrp/usrp_e/
-all : usrp-e-spi usrp-e-i2c usrp-e-rw usrp-e-uart usrp-e-led usrp-e-ctl usrp-e-button
+all : usrp-e-spi usrp-e-i2c usrp-e-rw usrp-e-uart usrp-e-led usrp-e-ctl usrp-e-button usrp-e-uart-rx
usrp-e-spi : usrp-e-spi.c
@@ -11,6 +11,8 @@ usrp-e-rw : usrp-e-rw.c
usrp-e-uart : usrp-e-uart.c
+usrp-e-uart-rx : usrp-e-uart-rx.c
+
usrp-e-led : usrp-e-led.c
usrp-e-ctl : usrp-e-ctl.c
@@ -22,6 +24,7 @@ clean :
rm -f usrp-e-i2c
rm -f usrp-e-rw
rm -f usrp-e-uart
+ rm -f usrp-e-uart-rx
rm -f usrp-e-led
rm -f usrp-e-ctl
rm -f usrp-e-button
diff --git a/host/apps/omap_debug/usrp-e-uart-rx.c b/host/apps/omap_debug/usrp-e-uart-rx.c
new file mode 100644
index 000000000..24b417980
--- /dev/null
+++ b/host/apps/omap_debug/usrp-e-uart-rx.c
@@ -0,0 +1,53 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <string.h>
+#include <sys/ioctl.h>
+
+#include "usrp_e.h"
+#include "usrp_e_regs.hpp"
+
+// Usage: usrp_e_uart <string>
+
+
+int main(int argc, char *argv[])
+{
+ int fp, ret;
+ struct usrp_e_ctl16 d;
+ __u16 clkdiv;
+
+ if (argc == 0) {
+ printf("Usage: usrp-e-uart-rx <opt clkdiv>\n");
+ printf("clkdiv = 278 is 230.4k \n");
+ printf("clkdiv = 556 is 115.2k \n");
+ exit(-1);
+ }
+
+ fp = open("/dev/usrp_e0", O_RDWR);
+ printf("fp = %d\n", fp);
+
+ if (argc == 2) {
+ clkdiv = atoi(argv[1]);
+ d.offset = UE_REG_UART_CLKDIV;
+ d.count = 1;
+ d.buf[0] = clkdiv;
+ ret = ioctl(fp, USRP_E_WRITE_CTL16, &d);
+ }
+
+ while(1) {
+ d.offset = UE_REG_UART_RXLEVEL;
+ d.count = 1;
+ ret = ioctl(fp, USRP_E_READ_CTL16, &d);
+
+ if (d.buf[0] > 0) {
+ d.offset = UE_REG_UART_RXCHAR;
+ d.count = 1;
+ ret = ioctl(fp, USRP_E_READ_CTL16, &d);
+ printf("%c", d.buf[0]);
+ fflush(stdout);
+ }
+ }
+
+ return 0;
+}