1eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley/*
2eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley * Copyright (C) 2016 The Android Open Source Project
3eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley *
4eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley * Licensed under the Apache License, Version 2.0 (the "License");
5eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley * you may not use this file except in compliance with the License.
6eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley * You may obtain a copy of the License at
7eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley *
8eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley *      http://www.apache.org/licenses/LICENSE-2.0
9eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley *
10eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley * Unless required by applicable law or agreed to in writing, software
11eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley * distributed under the License is distributed on an "AS IS" BASIS,
12eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley * See the License for the specific language governing permissions and
14eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley * limitations under the License.
15eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley */
16eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley
17ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley#ifndef ANDROID_WIFI_SYSTEM_INTERFACE_TOOL_H
18ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley#define ANDROID_WIFI_SYSTEM_INTERFACE_TOOL_H
19eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley
20eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wileynamespace android {
21eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wileynamespace wifi_system {
22eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley
23ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wileyclass InterfaceTool {
24ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley public:
25ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley  InterfaceTool() = default;
26ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley  virtual ~InterfaceTool() = default;
27eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley
28047c9cc84293f449b1ecb2d560cf10a0ecb81c4fChristopher Wiley  // Get the interface state of |if_name|.
29047c9cc84293f449b1ecb2d560cf10a0ecb81c4fChristopher Wiley  // Returns true iff the interface is up.
30047c9cc84293f449b1ecb2d560cf10a0ecb81c4fChristopher Wiley  virtual bool GetUpState(const char* if_name);
31047c9cc84293f449b1ecb2d560cf10a0ecb81c4fChristopher Wiley
32ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley  // Set the interface named by |if_name| up or down.
33ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley  // Returns true on success, false otherwise.
34ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley  virtual bool SetUpState(const char* if_name, bool request_up);
35ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley
36ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley  // A helpful alias for SetUpState() that assumes there is a single system
37ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley  // WiFi interface.  Prefer this form if you're hardcoding "wlan0" to help us
38ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley  // identify all the places we are hardcoding the name of the wifi interface.
39ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley  virtual bool SetWifiUpState(bool request_up);
40ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley
41ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley};  // class InterfaceTool
42eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley
43eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley}  // namespace wifi_system
44eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley}  // namespace android
45eb2afa500742cabd033d0a2f8dd145809ee11ad9Christopher Wiley
46ddf9ccd8144d8d381d1f5b5a625d17113229febfChristopher Wiley#endif  // ANDROID_WIFI_SYSTEM_INTERFACE_TOOL_H
47