blob: 2eef988ebb0a965e613cd24e75b951031ae3e85b [file] [log] [blame]
Dmitry Shmidte4663042016-04-04 10:07:49 -07001/*
2 * binder interface for wpa_supplicant daemon
3 * Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi>
4 * Copyright (c) 2004-2016, Roshan Pius <rpius@google.com>
5 *
6 * This software may be distributed under the terms of the BSD license.
7 * See README for more details.
8 */
9
Dmitry Shmidt7f2c7532016-08-15 09:48:12 -070010#ifndef WPA_SUPPLICANT_BINDER_SUPPLICANT_H
11#define WPA_SUPPLICANT_BINDER_SUPPLICANT_H
Dmitry Shmidte4663042016-04-04 10:07:49 -070012
Roshan Piusd6e37512016-07-07 13:20:46 -070013#include <android-base/macros.h>
14
Dmitry Shmidte4663042016-04-04 10:07:49 -070015#include "fi/w1/wpa_supplicant/BnSupplicant.h"
16#include "fi/w1/wpa_supplicant/IIface.h"
Roshan Pius0470cc82016-07-14 16:37:07 -070017#include "fi/w1/wpa_supplicant/ISupplicantCallback.h"
Dmitry Shmidte4663042016-04-04 10:07:49 -070018
19extern "C" {
Dmitry Shmidte4663042016-04-04 10:07:49 -070020#include "utils/common.h"
Dmitry Shmidt7f2c7532016-08-15 09:48:12 -070021#include "utils/includes.h"
Dmitry Shmidte4663042016-04-04 10:07:49 -070022#include "../wpa_supplicant_i.h"
23}
24
25namespace wpa_supplicant_binder {
26
27/**
28 * Implementation of the supplicant binder object. This binder
29 * object is used core for global control operations on
30 * wpa_supplicant.
31 */
32class Supplicant : public fi::w1::wpa_supplicant::BnSupplicant
33{
34public:
35 Supplicant(struct wpa_global *global);
Roshan Piusd6e37512016-07-07 13:20:46 -070036 ~Supplicant() override = default;
Dmitry Shmidte4663042016-04-04 10:07:49 -070037
Roshan Piusc9422c72016-07-11 10:18:22 -070038 // Binder methods exposed in aidl.
Dmitry Shmidte4663042016-04-04 10:07:49 -070039 android::binder::Status CreateInterface(
Roshan Piusb01b7962016-07-11 15:25:47 -070040 const fi::w1::wpa_supplicant::ParcelableIfaceParams &params,
Roshan Piusc9422c72016-07-11 10:18:22 -070041 android::sp<fi::w1::wpa_supplicant::IIface> *iface_object_out)
42 override;
Roshan Pius32f9f5f2016-08-15 14:44:22 -070043 android::binder::Status RemoveInterface(
44 const std::string &ifname) override;
Dmitry Shmidte4663042016-04-04 10:07:49 -070045 android::binder::Status GetInterface(
Dmitry Shmidt7f2c7532016-08-15 09:48:12 -070046 const std::string &ifname,
Roshan Piusc9422c72016-07-11 10:18:22 -070047 android::sp<fi::w1::wpa_supplicant::IIface> *iface_object_out)
48 override;
Roshan Pius32f9f5f2016-08-15 14:44:22 -070049 android::binder::Status SetDebugParams(
50 int level, bool show_timestamp, bool show_keys) override;
Roshan Piusc9422c72016-07-11 10:18:22 -070051 android::binder::Status GetDebugLevel(int *level_out) override;
Roshan Pius32f9f5f2016-08-15 14:44:22 -070052 android::binder::Status GetDebugShowTimestamp(
53 bool *show_timestamp_out) override;
Roshan Piusc9422c72016-07-11 10:18:22 -070054 android::binder::Status GetDebugShowKeys(bool *show_keys_out) override;
Roshan Pius0470cc82016-07-14 16:37:07 -070055 android::binder::Status RegisterCallback(
56 const android::sp<fi::w1::wpa_supplicant::ISupplicantCallback>
57 &callback) override;
Dmitry Shmidte4663042016-04-04 10:07:49 -070058
59private:
Roshan Piusc9422c72016-07-11 10:18:22 -070060 int convertDebugLevelToInternalLevel(
61 int external_level, int *internal_level);
62 int convertDebugLevelToExternalLevel(
63 int internal_level, int *external_level);
64
Dmitry Shmidte4663042016-04-04 10:07:49 -070065 /* Raw pointer to the global structure maintained by the core. */
66 struct wpa_global *wpa_global_;
67 /* All the callback objects registered by the clients. */
Roshan Pius0470cc82016-07-14 16:37:07 -070068 std::vector<android::sp<fi::w1::wpa_supplicant::ISupplicantCallback>>
Dmitry Shmidt7f2c7532016-08-15 09:48:12 -070069 callbacks_;
Roshan Piusd6e37512016-07-07 13:20:46 -070070
71 DISALLOW_COPY_AND_ASSIGN(Supplicant);
Dmitry Shmidte4663042016-04-04 10:07:49 -070072};
73
74} /* namespace wpa_supplicant_binder */
75
Dmitry Shmidt7f2c7532016-08-15 09:48:12 -070076#endif /* WPA_SUPPLICANT_BINDER_SUPPLICANT_H */