blob: 17fffb42f5cec60cfc8d5f5d030f9027082c0ea5 [file] [log] [blame]
/*
* 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);
}