Import the initial version of sigma_dut open source project

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
diff --git a/utils.c b/utils.c
new file mode 100644
index 0000000..e2fcb85
--- /dev/null
+++ b/utils.c
@@ -0,0 +1,112 @@
+/*
+ * Sigma Control API DUT (station/AP)
+ * Copyright (c) 2014-2015, Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Licensed under the Clear BSD license. See README for more details.
+ */
+
+#include "sigma_dut.h"
+#include <sys/stat.h>
+#include "wpa_helpers.h"
+
+enum driver_type wifi_chip_type = DRIVER_NOT_SET;
+enum openwrt_driver_type openwrt_chip_type = OPENWRT_DRIVER_NOT_SET;
+
+
+int file_exists(const char *fname)
+{
+	struct stat s;
+	return stat(fname, &s) == 0;
+}
+
+
+int set_wifi_chip(const char *chip_type)
+{
+	if (!strncmp(chip_type, "WCN", strlen("WCN")))
+		wifi_chip_type = DRIVER_WCN;
+	else if (!strncmp(chip_type, "ATHEROS", strlen("ATHEROS")))
+		wifi_chip_type = DRIVER_ATHEROS;
+	else if (!strncmp(chip_type, "AR6003", strlen("AR6003")))
+		wifi_chip_type = DRIVER_AR6003;
+	else if (strcmp(chip_type, "MAC80211") == 0)
+		wifi_chip_type = DRIVER_MAC80211;
+	else if (strcmp(chip_type, "QNXNTO") == 0)
+		wifi_chip_type = DRIVER_QNXNTO;
+	else if (strcmp(chip_type, "OPENWRT") == 0)
+		wifi_chip_type = DRIVER_OPENWRT;
+	else
+		return -1;
+
+	return 0;
+}
+
+
+enum driver_type get_driver_type(void)
+{
+	struct stat s;
+	if (wifi_chip_type == DRIVER_NOT_SET) {
+		/* Check for 60G driver */
+		ssize_t len;
+		char link[256];
+		char buf[256];
+		char *ifname = get_station_ifname();
+
+		snprintf(buf, sizeof(buf), "/sys/class/net/%s/device/driver",
+			 ifname);
+		len = readlink(buf, link, sizeof(link) - 1);
+		if (len >= 0) {
+			link[len] = '\0';
+			if (strstr(link, DRIVER_NAME_60G))
+				return DRIVER_WIL6210;
+		}
+
+		if (stat("/sys/module/mac80211", &s) == 0)
+			return DRIVER_MAC80211;
+		return DRIVER_ATHEROS;
+	}
+	return wifi_chip_type;
+}
+
+
+enum openwrt_driver_type get_openwrt_driver_type(void)
+{
+	struct stat s;
+
+	if (openwrt_chip_type == OPENWRT_DRIVER_NOT_SET) {
+		if (stat("/sys/module/ath_hal", &s) == 0)
+			openwrt_chip_type = OPENWRT_DRIVER_ATHEROS;
+	}
+
+	return openwrt_chip_type;
+}
+
+
+enum sigma_program sigma_program_to_enum(const char *prog)
+{
+	if (prog == NULL)
+		return PROGRAM_UNKNOWN;
+
+	if (strcasecmp(prog, "TDLS") == 0)
+		return PROGRAM_TDLS;
+	if (strcasecmp(prog, "HS2") == 0)
+		return PROGRAM_HS2;
+	if (strcasecmp(prog, "HS2_R2") == 0 ||
+	    strcasecmp(prog, "HS2-R2") == 0)
+		return PROGRAM_HS2_R2;
+	if (strcasecmp(prog, "WFD") == 0)
+		return PROGRAM_WFD;
+	if (strcasecmp(prog, "PMF") == 0)
+		return PROGRAM_PMF;
+	if (strcasecmp(prog, "WPS") == 0)
+		return PROGRAM_WPS;
+	if (strcasecmp(prog, "11n") == 0)
+		return PROGRAM_HT;
+	if (strcasecmp(prog, "VHT") == 0)
+		return PROGRAM_VHT;
+	if (strcasecmp(prog, "60GHZ") == 0)
+		return PROGRAM_60GHZ;
+	if (strcasecmp(prog, "NAN") == 0)
+		return PROGRAM_NAN;
+
+	return PROGRAM_UNKNOWN;
+}