carlu: random number generator test
[carl9170fw.git] / tools / carlu / src / test.c
index 30b3fb336432bfe5e9f6aea693b1c2102617c900..e453eb37c7439a5e17b35fa9df55925edef7a2d8 100644 (file)
@@ -37,6 +37,7 @@
 #include "debug.h"
 #include "frame.h"
 #include "usb.h"
+#include "cmd.h"
 
 void debug_test(void)
 {
@@ -82,12 +83,9 @@ static int carlu_loopback_cmd(struct carlu *ar __unused,
                dbg("received tx feedback (%d).\n", n);
 
                for (i = 0; i < n; i++) {
-                       dbg("cookie:%x success:%d rix:%d tries:%d queue:%d\n",
-                               cmd->tx_status[i].cookie,
-                               cmd->tx_status[i].success,
-                               cmd->tx_status[i].rix,
-                               cmd->tx_status[i].tries,
-                               cmd->tx_status[i].queue);
+                       dbg("cookie:%x info:%x\n",
+                               cmd->_tx_status[i].cookie,
+                               cmd->_tx_status[i].info);
                }
                return -1;
 
@@ -192,3 +190,48 @@ void carlu_loopback_test(struct carlu *ar, const unsigned int total_runs,
        ar->cmd_cb = NULL;
        ar->tx_cb = NULL;
 }
+
+int carlu_gpio_test(struct carlu *ar)
+{
+       uint32_t gpio;
+
+#define CHK(cmd)                               \
+       do {                                    \
+               int __err;                      \
+               if ((__err = cmd))              \
+                       return __err;           \
+       } while (0)
+
+       CHK(carlu_cmd_read_mem(ar, AR9170_GPIO_REG_PORT_DATA, &gpio));
+       info("GPIO state:%x\n", gpio);
+
+       /* turn both LEDs on */
+       CHK(carlu_cmd_write_mem(ar, AR9170_GPIO_REG_PORT_DATA,
+           AR9170_GPIO_PORT_LED_0 | AR9170_GPIO_PORT_LED_1));
+
+       SDL_Delay(700);
+
+       CHK(carlu_cmd_read_mem(ar, AR9170_GPIO_REG_PORT_DATA, &gpio));
+       info("GPIO state:%x\n", gpio);
+
+       /* turn LEDs off everything */
+       CHK(carlu_cmd_write_mem(ar, AR9170_GPIO_REG_PORT_DATA, 0));
+
+       CHK(carlu_cmd_read_mem(ar, AR9170_GPIO_REG_PORT_DATA, &gpio));
+       info("GPIO state:%x\n", gpio);
+}
+
+int carlu_random_test(struct carlu *ar)
+{
+       uint32_t buf[4096];
+       int err, i;
+
+       err = carlu_cmd_mem_watch(ar, AR9170_RAND_REG_NUM, sizeof(buf), buf);
+       if (err)
+               return err;
+
+       for (i = 0; i < ARRAY_SIZE(buf); i++)
+               info("%.2x %.2x ", buf[i] & 0xff, buf[i] >> 8);
+
+       info("\n");
+}