| /* | 
 |  * Sigma Control API DUT (server) | 
 |  * Copyright (c) 2014, Qualcomm Atheros, Inc. | 
 |  * All Rights Reserved. | 
 |  * Licensed under the Clear BSD license. See README for more details. | 
 |  */ | 
 |  | 
 | #include "sigma_dut.h" | 
 |  | 
 |  | 
 | static int cmd_server_reset_default(struct sigma_dut *dut, | 
 | 				    struct sigma_conn *conn, | 
 | 				    struct sigma_cmd *cmd) | 
 | { | 
 | 	const char *var; | 
 |  | 
 | 	var = get_param(cmd, "Program"); | 
 | 	if (var == NULL || strcasecmp(var, "HS2-R2") != 0) { | 
 | 		send_resp(dut, conn, SIGMA_ERROR, | 
 | 			  "errorCode,Unsupported program"); | 
 | 		return 0; | 
 | 	} | 
 |  | 
 | 	var = get_param(cmd, "UserName"); | 
 | 	if (var) { | 
 | 		sigma_dut_print(dut, DUT_MSG_DEBUG, "Reset user %s", var); | 
 | 		/* TODO */ | 
 | 	} | 
 |  | 
 | 	var = get_param(cmd, "SerialNo"); | 
 | 	if (var) { | 
 | 		sigma_dut_print(dut, DUT_MSG_DEBUG, "Reset serial number %s", | 
 | 				var); | 
 | 		/* TODO */ | 
 | 	} | 
 |  | 
 | 	return 1; | 
 | } | 
 |  | 
 |  | 
 | static int cmd_server_request_status(struct sigma_dut *dut, | 
 | 				     struct sigma_conn *conn, | 
 | 				     struct sigma_cmd *cmd) | 
 | { | 
 | 	const char *var, *username, *serialno, *imsi, *addr, *status; | 
 | 	int osu, timeout; | 
 | 	char resp[500]; | 
 |  | 
 | 	var = get_param(cmd, "Program"); | 
 | 	if (var == NULL || strcasecmp(var, "HS2-R2") != 0) { | 
 | 		send_resp(dut, conn, SIGMA_ERROR, | 
 | 			  "errorCode,Unsupported program"); | 
 | 		return 0; | 
 | 	} | 
 |  | 
 | 	var = get_param(cmd, "Device"); | 
 | 	if (!var || | 
 | 	    (strcasecmp(var, "AAAServer") != 0 && | 
 | 	     strcasecmp(var, "OSUServer") != 0)) { | 
 | 		send_resp(dut, conn, SIGMA_ERROR, | 
 | 			  "errorCode,Unsupported device type"); | 
 | 		return 0; | 
 | 	} | 
 | 	osu = strcasecmp(var, "OSUServer") == 0; | 
 |  | 
 | 	var = get_param(cmd, "Timeout"); | 
 | 	if (!var) { | 
 | 		send_resp(dut, conn, SIGMA_ERROR, | 
 | 			  "errorCode,Missing timeout"); | 
 | 		return 0; | 
 | 	} | 
 | 	timeout = atoi(var); | 
 | 	sigma_dut_print(dut, DUT_MSG_DEBUG, "timeout: %d", timeout); | 
 |  | 
 | 	username = get_param(cmd, "UserName"); | 
 | 	if (username) | 
 | 		sigma_dut_print(dut, DUT_MSG_DEBUG, "UserName: %s", username); | 
 | 	serialno = get_param(cmd, "SerialNo"); | 
 | 	if (serialno) | 
 | 		sigma_dut_print(dut, DUT_MSG_DEBUG, "SerialNo: %s", serialno); | 
 | 	imsi = get_param(cmd, "imsi_val"); | 
 | 	if (imsi) | 
 | 		sigma_dut_print(dut, DUT_MSG_DEBUG, "imsi_val: %s", imsi); | 
 | 	addr = get_param(cmd, "ClientMACAddr"); | 
 | 	if (addr) | 
 | 		sigma_dut_print(dut, DUT_MSG_DEBUG, "ClientMACAddr: %s", addr); | 
 | 	status = get_param(cmd, "Status"); | 
 | 	if (status) | 
 | 		sigma_dut_print(dut, DUT_MSG_DEBUG, "Status: %s", status); | 
 |  | 
 | 	if (osu && status && strcasecmp(status, "Remediation") == 0) { | 
 | 		/* TODO */ | 
 | 		sleep(1); | 
 | 		snprintf(resp, sizeof(resp), | 
 | 			 "RemediationStatus,Remediation Complete"); | 
 | 		send_resp(dut, conn, SIGMA_COMPLETE, resp); | 
 | 		return 0; | 
 | 	} | 
 |  | 
 | 	return 1; | 
 | } | 
 |  | 
 |  | 
 | void server_register_cmds(void) | 
 | { | 
 | 	sigma_dut_reg_cmd("server_reset_default", NULL, | 
 | 			  cmd_server_reset_default); | 
 | 	sigma_dut_reg_cmd("server_request_status", NULL, | 
 | 			  cmd_server_request_status); | 
 | } |