blob: 33ba3b0f06ab0ba43eb97067fc3da79cabe138ba [file] [log] [blame]
/*
* binder interface for wpa_supplicant daemon
* Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi>
* Copyright (c) 2004-2016, Roshan Pius <rpius@google.com>
*
* This software may be distributed under the terms of the BSD license.
* See README for more details.
*/
#ifndef WPA_SUPPLICANT_BINDER_SUPPLICANT_H
#define WPA_SUPPLICANT_BINDER_SUPPLICANT_H
#include <android-base/macros.h>
#include "fi/w1/wpa_supplicant/BnSupplicant.h"
#include "fi/w1/wpa_supplicant/IIface.h"
#include "fi/w1/wpa_supplicant/ISupplicantCallback.h"
extern "C" {
#include "utils/common.h"
#include "utils/includes.h"
#include "../wpa_supplicant_i.h"
}
namespace wpa_supplicant_binder {
/**
* Implementation of the supplicant binder object. This binder
* object is used core for global control operations on
* wpa_supplicant.
*/
class Supplicant : public fi::w1::wpa_supplicant::BnSupplicant
{
public:
Supplicant(struct wpa_global *global);
~Supplicant() override = default;
// Binder methods exposed in aidl.
android::binder::Status CreateInterface(
const fi::w1::wpa_supplicant::ParcelableIfaceParams &params,
android::sp<fi::w1::wpa_supplicant::IIface> *iface_object_out)
override;
android::binder::Status
RemoveInterface(const std::string &ifname) override;
android::binder::Status GetInterface(
const std::string &ifname,
android::sp<fi::w1::wpa_supplicant::IIface> *iface_object_out)
override;
android::binder::Status
SetDebugParams(int level, bool show_timestamp, bool show_keys) override;
android::binder::Status GetDebugLevel(int *level_out) override;
android::binder::Status
GetDebugShowTimestamp(bool *show_timestamp_out) override;
android::binder::Status GetDebugShowKeys(bool *show_keys_out) override;
android::binder::Status RegisterCallback(
const android::sp<fi::w1::wpa_supplicant::ISupplicantCallback>
&callback) override;
private:
int convertDebugLevelToInternalLevel(
int external_level, int *internal_level);
int convertDebugLevelToExternalLevel(
int internal_level, int *external_level);
/* Raw pointer to the global structure maintained by the core. */
struct wpa_global *wpa_global_;
/* All the callback objects registered by the clients. */
std::vector<android::sp<fi::w1::wpa_supplicant::ISupplicantCallback>>
callbacks_;
DISALLOW_COPY_AND_ASSIGN(Supplicant);
};
} /* namespace wpa_supplicant_binder */
#endif /* WPA_SUPPLICANT_BINDER_SUPPLICANT_H */