Import the initial version of sigma_dut open source project
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
diff --git a/atheros.c b/atheros.c
new file mode 100644
index 0000000..72be3b8
--- /dev/null
+++ b/atheros.c
@@ -0,0 +1,70 @@
+/*
+ * Sigma Control API DUT (station/AP)
+ * Copyright (c) 2010, Atheros Communications, Inc.
+ * All Rights Reserved.
+ * Licensed under the Clear BSD license. See README for more details.
+ */
+
+#include "sigma_dut.h"
+#include "wpa_helpers.h"
+
+
+static int cmd_sta_atheros(struct sigma_dut *dut, struct sigma_conn *conn,
+ struct sigma_cmd *cmd)
+{
+ char buf[2048], *pos;
+ int i;
+ const char *intf, *c;
+ char resp[200];
+
+ intf = get_param(cmd, "interface");
+ c = get_param(cmd, "cmd");
+ if (c == NULL)
+ return -1;
+
+ buf[0] = '\0';
+ if (strncmp(c, "ctrl=", 5) == 0) {
+ size_t rlen;
+ c += 5;
+ if (wpa_command_resp(intf, c, buf, sizeof(buf)) < 0)
+ return -2;
+ rlen = strlen(buf);
+ if (rlen > 0 && buf[rlen - 1] == '\n')
+ buf[rlen - 1] = '\0';
+ } else if (strncmp(c, "timeout=", 8) == 0) {
+ unsigned int timeout;
+ timeout = atoi(c + 8);
+ if (timeout == 0)
+ return -1;
+ dut->default_timeout = timeout;
+ sigma_dut_print(dut, DUT_MSG_INFO, "Set DUT default timeout "
+ "to %u seconds", dut->default_timeout);
+ snprintf(buf, sizeof(buf), "OK");
+ } else
+ return -2;
+
+ i = snprintf(resp, sizeof(resp), "resp,");
+ pos = buf;
+ while (*pos && i + 1 < (int) sizeof(resp)) {
+ char c = *pos++;
+ if (c == '\n' || c == '\r' || c == ',')
+ c = '^';
+ resp[i++] = c;
+ }
+ resp[i] = '\0';
+
+ send_resp(dut, conn, SIGMA_COMPLETE, resp);
+ return 0;
+}
+
+
+static int req_intf(struct sigma_cmd *cmd)
+{
+ return get_param(cmd, "interface") == NULL ? -1 : 0;
+}
+
+
+void atheros_register_cmds(void)
+{
+ sigma_dut_reg_cmd("sta_atheros", req_intf, cmd_sta_atheros);
+}