xref: /wlan-dirver/utils/sigma-dut/powerswitch.c (revision a3a88ad8fb742838d51a39737ac8099a151709fd)
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