// Copyright 2015 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#pragma once

#include "android/emulation/control/battery_agent.h"
#include "android/emulation/control/finger_agent.h"
#include "android/emulation/control/location_agent.h"
#include "android/emulation/control/net_agent.h"
#include "android/emulation/control/telephony_agent.h"
#include "android/emulation/control/user_event_agent.h"
#include "android/emulation/control/vm_operations.h"
#include "android/utils/compiler.h"

ANDROID_BEGIN_HEADER

// A macro used to list all the agents used by the Android Console.
// The macro takes a parameter |X| which must be a macro that takes two
// parameter as follows:  X(type, name), where |type| is the agent type
// name, and |name| is a field name. See usage below to declare
// AndroidConsoleAgents.
#define ANDROID_CONSOLE_AGENTS_LIST(X) \
   X(QAndroidBatteryAgent, battery) \
   X(QAndroidFingerAgent, finger) \
   X(QAndroidLocationAgent, location) \
   X(QAndroidTelephonyAgent, telephony) \
   X(QAndroidUserEventAgent, user_event) \
   X(QAndroidVmOperations, vm) \
   X(QAndroidNetAgent, net)

// A structure used to group pointers to all agent interfaces used by the
// Android console.
#define ANDROID_CONSOLE_DEFINE_POINTER(type,name) const type* name;
typedef struct AndroidConsoleAgents {
    ANDROID_CONSOLE_AGENTS_LIST(ANDROID_CONSOLE_DEFINE_POINTER)
} AndroidConsoleAgents;

// Generic entry point to start an android console.
// QEMU implementations should populate |*agents| with QEMU specific
// functions. Takes ownership of |agents|.
extern int android_console_start(int port, const AndroidConsoleAgents* agents);

ANDROID_END_HEADER
