1cd4e3c3eSJouni Malinen /*
2cd4e3c3eSJouni Malinen * Sigma Control API DUT (station/AP)
3cd4e3c3eSJouni Malinen * Copyright (c) 2010, Atheros Communications, Inc.
4*a3a88ad8SJouni Malinen * Copyright (c) 2019, The Linux Foundation
5cd4e3c3eSJouni Malinen * All Rights Reserved.
6cd4e3c3eSJouni Malinen * Licensed under the Clear BSD license. See README for more details.
7cd4e3c3eSJouni Malinen */
8cd4e3c3eSJouni Malinen
9cd4e3c3eSJouni Malinen #include "sigma_dut.h"
10cd4e3c3eSJouni Malinen
11cd4e3c3eSJouni Malinen
cmd_power_switch_ctrl(struct sigma_dut * dut,struct sigma_conn * conn,struct sigma_cmd * cmd)12*a3a88ad8SJouni Malinen static enum sigma_cmd_result cmd_power_switch_ctrl(struct sigma_dut *dut,
13cd4e3c3eSJouni Malinen struct sigma_conn *conn,
14cd4e3c3eSJouni Malinen struct sigma_cmd *cmd)
15cd4e3c3eSJouni Malinen {
16*a3a88ad8SJouni Malinen return SUCCESS_SEND_STATUS;
17cd4e3c3eSJouni Malinen }
18cd4e3c3eSJouni Malinen
19cd4e3c3eSJouni Malinen
cmd_power_switch_reset(struct sigma_dut * dut,struct sigma_conn * conn,struct sigma_cmd * cmd)20*a3a88ad8SJouni Malinen static enum sigma_cmd_result cmd_power_switch_reset(struct sigma_dut *dut,
21cd4e3c3eSJouni Malinen struct sigma_conn *conn,
22cd4e3c3eSJouni Malinen struct sigma_cmd *cmd)
23cd4e3c3eSJouni Malinen {
24cd4e3c3eSJouni Malinen if (system("killall hostapd") == 0) {
25cd4e3c3eSJouni Malinen int i;
26cd4e3c3eSJouni Malinen
27cd4e3c3eSJouni Malinen /* Wait some time to allow hostapd to complete cleanup before
28cd4e3c3eSJouni Malinen * starting a new process */
29cd4e3c3eSJouni Malinen for (i = 0; i < 10; i++) {
30cd4e3c3eSJouni Malinen usleep(500000);
31cd4e3c3eSJouni Malinen if (system("pidof hostapd") != 0)
32cd4e3c3eSJouni Malinen break;
33cd4e3c3eSJouni Malinen }
34cd4e3c3eSJouni Malinen }
35*a3a88ad8SJouni Malinen return SUCCESS_SEND_STATUS;
36cd4e3c3eSJouni Malinen }
37cd4e3c3eSJouni Malinen
38cd4e3c3eSJouni Malinen
cmd_powerswitch(struct sigma_dut * dut,struct sigma_conn * conn,struct sigma_cmd * cmd)39*a3a88ad8SJouni Malinen static enum sigma_cmd_result cmd_powerswitch(struct sigma_dut *dut,
40*a3a88ad8SJouni Malinen struct sigma_conn *conn,
41cd4e3c3eSJouni Malinen struct sigma_cmd *cmd)
42cd4e3c3eSJouni Malinen {
43*a3a88ad8SJouni Malinen return SUCCESS_SEND_STATUS;
44cd4e3c3eSJouni Malinen }
45cd4e3c3eSJouni Malinen
46cd4e3c3eSJouni Malinen
powerswitch_register_cmds(void)47cd4e3c3eSJouni Malinen void powerswitch_register_cmds(void)
48cd4e3c3eSJouni Malinen {
49cd4e3c3eSJouni Malinen sigma_dut_reg_cmd("power_switch_ctrl", NULL, cmd_power_switch_ctrl);
50cd4e3c3eSJouni Malinen sigma_dut_reg_cmd("power_switch_reset", NULL, cmd_power_switch_reset);
51cd4e3c3eSJouni Malinen sigma_dut_reg_cmd("PowerSwitch", NULL, cmd_powerswitch);
52cd4e3c3eSJouni Malinen }
53