<reponame>yizhangliu/android_env_for_windows<gh_stars>1-10
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

from android_env.proto import emulator_controller_pb2 as android__env_dot_proto_dot_emulator__controller__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2


class EmulatorControllerStub(object):
    """An EmulatorController service lets you control the emulator.
    Note that this is currently an experimental feature, and that the
    service definition might change without notice. Use at your own risk!

    We use the following rough conventions:

    streamXXX --> streams values XXX (usually for emulator lifetime). Values
    are updated as soon as they become available.
    getXXX    --> gets a single value XXX
    setXXX    --> sets a single value XXX, does not returning state, these
    usually have an observable lasting side effect.
    sendXXX   --> send a single event XXX, possibly returning state information.
    android usually responds to these events.
    """

    def __init__(self, channel):
        """Constructor.

        Args:
            channel: A grpc.Channel.
        """
        self.streamSensor = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamSensor',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
                )
        self.getSensor = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getSensor',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
                )
        self.setSensor = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setSensor',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.setPhysicalModel = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setPhysicalModel',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.getPhysicalModel = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getPhysicalModel',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
                )
        self.streamPhysicalModel = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamPhysicalModel',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
                )
        self.setClipboard = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setClipboard',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.ClipData.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.getClipboard = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getClipboard',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.ClipData.FromString,
                )
        self.streamClipboard = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamClipboard',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.ClipData.FromString,
                )
        self.setBattery = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setBattery',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.BatteryState.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.getBattery = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getBattery',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.BatteryState.FromString,
                )
        self.setGps = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setGps',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.GpsState.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.getGps = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getGps',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.GpsState.FromString,
                )
        self.sendFingerprint = channel.unary_unary(
                '/android.emulation.control.EmulatorController/sendFingerprint',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.Fingerprint.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.sendKey = channel.unary_unary(
                '/android.emulation.control.EmulatorController/sendKey',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.KeyboardEvent.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.sendTouch = channel.unary_unary(
                '/android.emulation.control.EmulatorController/sendTouch',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.TouchEvent.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.sendMouse = channel.unary_unary(
                '/android.emulation.control.EmulatorController/sendMouse',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.MouseEvent.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.sendPhone = channel.unary_unary(
                '/android.emulation.control.EmulatorController/sendPhone',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhoneCall.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhoneResponse.FromString,
                )
        self.sendSms = channel.unary_unary(
                '/android.emulation.control.EmulatorController/sendSms',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.SmsMessage.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhoneResponse.FromString,
                )
        self.getStatus = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getStatus',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.EmulatorStatus.FromString,
                )
        self.getScreenshot = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getScreenshot',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.ImageFormat.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.Image.FromString,
                )
        self.streamScreenshot = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamScreenshot',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.ImageFormat.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.Image.FromString,
                )
        self.streamAudio = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamAudio',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.AudioFormat.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.AudioPacket.FromString,
                )
        self.getLogcat = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getLogcat',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.FromString,
                )
        self.streamLogcat = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamLogcat',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.FromString,
                )
        self.setVmState = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setVmState',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.VmRunState.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.getVmState = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getVmState',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.VmRunState.FromString,
                )
        self.setDisplayConfigurations = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setDisplayConfigurations',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.FromString,
                )
        self.getDisplayConfigurations = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getDisplayConfigurations',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.FromString,
                )
        self.streamNotification = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamNotification',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.Notification.FromString,
                )
        self.rotateVirtualSceneCamera = channel.unary_unary(
                '/android.emulation.control.EmulatorController/rotateVirtualSceneCamera',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.RotationRadian.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.setVirtualSceneCameraVelocity = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setVirtualSceneCameraVelocity',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.Velocity.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )


class EmulatorControllerServicer(object):
    """An EmulatorController service lets you control the emulator.
    Note that this is currently an experimental feature, and that the
    service definition might change without notice. Use at your own risk!

    We use the following rough conventions:

    streamXXX --> streams values XXX (usually for emulator lifetime). Values
    are updated as soon as they become available.
    getXXX    --> gets a single value XXX
    setXXX    --> sets a single value XXX, does not returning state, these
    usually have an observable lasting side effect.
    sendXXX   --> send a single event XXX, possibly returning state information.
    android usually responds to these events.
    """

    def streamSensor(self, request, context):
        """Set the sensor data
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getSensor(self, request, context):
        """Get the sensor data
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setSensor(self, request, context):
        """Stream the sensor data
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setPhysicalModel(self, request, context):
        """Set the physical model, this is likely the one you are
        looking for when you wish to modify the device state.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getPhysicalModel(self, request, context):
        """Get the physical model
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def streamPhysicalModel(self, request, context):
        """Stream the physical model
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setClipboard(self, request, context):
        """Atomically set the current primary clipboard data.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getClipboard(self, request, context):
        """Atomically get the current primary clipboard data.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def streamClipboard(self, request, context):
        """Streams the current data on the clipboard. This will immediately produce
        a result with the current state of the clipboard after which the stream
        will block and wait until a new clip event is available from the guest.
        Calling the setClipboard method above will not result in generating a clip
        event. It is possible to lose clipboard events if the clipboard updates
        very rapidly.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setBattery(self, request, context):
        """Set the battery to the given state.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getBattery(self, request, context):
        """Get the battery to the given state.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setGps(self, request, context):
        """Set the state of the gps, gps support will only work
        properly if:

        - no location ui is active. That is the emulator
        is launched in headless mode (-no-window) or the location
        ui is disabled (-no-location-ui).
        - the passiveUpdate is set to false. Setting this to false
        will disable/break the LocationUI.

        Keep in mind that android usually only samples the gps at 1 hz.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getGps(self, request, context):
        """Gets the latest gps state as delivered by the setGps call, or location ui
        if active.

        Note: this is not necessarily the actual gps coordinate visible at the
        time, due to gps sample frequency (usually 1hz).
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def sendFingerprint(self, request, context):
        """Simulate a touch event on the finger print sensor.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def sendKey(self, request, context):
        """Send a keyboard event. Translating the event.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def sendTouch(self, request, context):
        """Send touch events. Note that mouse events can be simulated by touch events.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def sendMouse(self, request, context):
        """Send mouse events.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def sendPhone(self, request, context):
        """Make a phone call.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def sendSms(self, request, context):
        """Sends an sms message to the emulator.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getStatus(self, request, context):
        """Retrieve the status of the emulator. This will contain general
        hardware information, and whether the device has booted or not.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getScreenshot(self, request, context):
        """Gets an individual screenshot in the desired format.

        The image will be scaled to the desired ImageFormat, while maintaining
        the aspect ratio. The returned image will never exceed the provided width
        and height. Not setting the width or height (i.e. they are 0) will result
        in using the device width and height.

        The resulting image will be properly oriented and can be displayed
        directly without post processing. For example, if the device has a
        1080x1920 screen and is in landscape mode and called with no width or
        height parameter, it will return an 1920x1080 image.

        This method will return an empty image if the display is not visible.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def streamScreenshot(self, request, context):
        """Streams a series of screenshots in the desired format.
        A new frame will be delivered whenever the device produces a new frame.
        (Beware that this can produce a significant amount of data, and that
        certain translations are (png transform) can be costly).

        If the requested display is not visible it will send a single empty image
        and wait start producing images once the display becomes active, again
        producing a single empty image when the display becomes inactive.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def streamAudio(self, request, context):
        """Streams a series of audio packets in the desired format.
        A new frame will be delivered whenever the emulated device
        produces a new audio frame.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getLogcat(self, request, context):
        """Returns the last 128Kb of logcat output from the emulator
        Note that parsed logcat messages are only available after L (Api >23).
        it is possible that the logcat buffer gets overwritten, or falls behind.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def streamLogcat(self, request, context):
        """Streams the logcat output from the emulator. The first call
        can retrieve up to 128Kb. This call will not return.
        Note that parsed logcat messages are only available after L (Api >23)
        it is possible that the logcat buffer gets overwritten, or falls behind.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setVmState(self, request, context):
        """Transition the virtual machine to the desired state. Note that
        some states are only observable. For example you cannot transition
        to the error state.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getVmState(self, request, context):
        """Gets the state of the virtual machine.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setDisplayConfigurations(self, request, context):
        """Atomically changes the current multi-display configuration.
        After this call the given display configurations will be activated. You
        can only update secondary displays. Displays with id 0 will be ignored.

        This call can result in the removal or addition of secondary displays, the final
        display state can be observed by the returned configuration.

        The following gRPC error codes can be returned:
        -  FAILED_PRECONDITION (code 9) if the AVD does not support a configurable
        secondary display.
        -  INVALID_ARGUMENT (code 3) if:
        - The same display id is defined multiple times.
        - The display configurations are outside valid ranges
        (see DisplayConfiguration)
        -  INTERNAL (code 13) if there was an internal emulator failure.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getDisplayConfigurations(self, request, context):
        """Returns all currently valid logical displays.
        The gRPC error code FAILED_PRECONDITION (code 9) is returned if the AVD
        does not support a configurable secondary display.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def streamNotification(self, request, context):
        """Notifies client of the following changes:

        - Virtual scene camera status change.
        - Display configuration changes from extended ui. This will only be fired
        if the user makes modifications the extended displays through the extended
        control tab.

        Note that this method will send the initial virtual scene state immediately.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def rotateVirtualSceneCamera(self, request, context):
        """RotationRadian is relative to the camera's current orientation.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setVirtualSceneCameraVelocity(self, request, context):
        """Velocity is absolute
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_EmulatorControllerServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'streamSensor': grpc.unary_stream_rpc_method_handler(
                    servicer.streamSensor,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
            ),
            'getSensor': grpc.unary_unary_rpc_method_handler(
                    servicer.getSensor,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
            ),
            'setSensor': grpc.unary_unary_rpc_method_handler(
                    servicer.setSensor,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'setPhysicalModel': grpc.unary_unary_rpc_method_handler(
                    servicer.setPhysicalModel,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'getPhysicalModel': grpc.unary_unary_rpc_method_handler(
                    servicer.getPhysicalModel,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
            ),
            'streamPhysicalModel': grpc.unary_stream_rpc_method_handler(
                    servicer.streamPhysicalModel,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
            ),
            'setClipboard': grpc.unary_unary_rpc_method_handler(
                    servicer.setClipboard,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.ClipData.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'getClipboard': grpc.unary_unary_rpc_method_handler(
                    servicer.getClipboard,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.ClipData.SerializeToString,
            ),
            'streamClipboard': grpc.unary_stream_rpc_method_handler(
                    servicer.streamClipboard,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.ClipData.SerializeToString,
            ),
            'setBattery': grpc.unary_unary_rpc_method_handler(
                    servicer.setBattery,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.BatteryState.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'getBattery': grpc.unary_unary_rpc_method_handler(
                    servicer.getBattery,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.BatteryState.SerializeToString,
            ),
            'setGps': grpc.unary_unary_rpc_method_handler(
                    servicer.setGps,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.GpsState.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'getGps': grpc.unary_unary_rpc_method_handler(
                    servicer.getGps,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.GpsState.SerializeToString,
            ),
            'sendFingerprint': grpc.unary_unary_rpc_method_handler(
                    servicer.sendFingerprint,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.Fingerprint.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'sendKey': grpc.unary_unary_rpc_method_handler(
                    servicer.sendKey,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.KeyboardEvent.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'sendTouch': grpc.unary_unary_rpc_method_handler(
                    servicer.sendTouch,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.TouchEvent.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'sendMouse': grpc.unary_unary_rpc_method_handler(
                    servicer.sendMouse,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.MouseEvent.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'sendPhone': grpc.unary_unary_rpc_method_handler(
                    servicer.sendPhone,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhoneCall.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhoneResponse.SerializeToString,
            ),
            'sendSms': grpc.unary_unary_rpc_method_handler(
                    servicer.sendSms,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.SmsMessage.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhoneResponse.SerializeToString,
            ),
            'getStatus': grpc.unary_unary_rpc_method_handler(
                    servicer.getStatus,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.EmulatorStatus.SerializeToString,
            ),
            'getScreenshot': grpc.unary_unary_rpc_method_handler(
                    servicer.getScreenshot,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.ImageFormat.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.Image.SerializeToString,
            ),
            'streamScreenshot': grpc.unary_stream_rpc_method_handler(
                    servicer.streamScreenshot,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.ImageFormat.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.Image.SerializeToString,
            ),
            'streamAudio': grpc.unary_stream_rpc_method_handler(
                    servicer.streamAudio,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.AudioFormat.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.AudioPacket.SerializeToString,
            ),
            'getLogcat': grpc.unary_unary_rpc_method_handler(
                    servicer.getLogcat,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.SerializeToString,
            ),
            'streamLogcat': grpc.unary_stream_rpc_method_handler(
                    servicer.streamLogcat,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.SerializeToString,
            ),
            'setVmState': grpc.unary_unary_rpc_method_handler(
                    servicer.setVmState,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.VmRunState.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'getVmState': grpc.unary_unary_rpc_method_handler(
                    servicer.getVmState,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.VmRunState.SerializeToString,
            ),
            'setDisplayConfigurations': grpc.unary_unary_rpc_method_handler(
                    servicer.setDisplayConfigurations,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.SerializeToString,
            ),
            'getDisplayConfigurations': grpc.unary_unary_rpc_method_handler(
                    servicer.getDisplayConfigurations,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.SerializeToString,
            ),
            'streamNotification': grpc.unary_stream_rpc_method_handler(
                    servicer.streamNotification,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.Notification.SerializeToString,
            ),
            'rotateVirtualSceneCamera': grpc.unary_unary_rpc_method_handler(
                    servicer.rotateVirtualSceneCamera,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.RotationRadian.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'setVirtualSceneCameraVelocity': grpc.unary_unary_rpc_method_handler(
                    servicer.setVirtualSceneCameraVelocity,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.Velocity.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'android.emulation.control.EmulatorController', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


 # This class is part of an EXPERIMENTAL API.
class EmulatorController(object):
    """An EmulatorController service lets you control the emulator.
    Note that this is currently an experimental feature, and that the
    service definition might change without notice. Use at your own risk!

    We use the following rough conventions:

    streamXXX --> streams values XXX (usually for emulator lifetime). Values
    are updated as soon as they become available.
    getXXX    --> gets a single value XXX
    setXXX    --> sets a single value XXX, does not returning state, these
    usually have an observable lasting side effect.
    sendXXX   --> send a single event XXX, possibly returning state information.
    android usually responds to these events.
    """

    @staticmethod
    def streamSensor(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamSensor',
            android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getSensor(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getSensor',
            android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setSensor(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setSensor',
            android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setPhysicalModel(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setPhysicalModel',
            android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getPhysicalModel(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getPhysicalModel',
            android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def streamPhysicalModel(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamPhysicalModel',
            android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setClipboard(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setClipboard',
            android__env_dot_proto_dot_emulator__controller__pb2.ClipData.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getClipboard(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getClipboard',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.ClipData.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def streamClipboard(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamClipboard',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.ClipData.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setBattery(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setBattery',
            android__env_dot_proto_dot_emulator__controller__pb2.BatteryState.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getBattery(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getBattery',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.BatteryState.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setGps(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setGps',
            android__env_dot_proto_dot_emulator__controller__pb2.GpsState.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getGps(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getGps',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.GpsState.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def sendFingerprint(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/sendFingerprint',
            android__env_dot_proto_dot_emulator__controller__pb2.Fingerprint.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def sendKey(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/sendKey',
            android__env_dot_proto_dot_emulator__controller__pb2.KeyboardEvent.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def sendTouch(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/sendTouch',
            android__env_dot_proto_dot_emulator__controller__pb2.TouchEvent.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def sendMouse(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/sendMouse',
            android__env_dot_proto_dot_emulator__controller__pb2.MouseEvent.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def sendPhone(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/sendPhone',
            android__env_dot_proto_dot_emulator__controller__pb2.PhoneCall.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.PhoneResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def sendSms(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/sendSms',
            android__env_dot_proto_dot_emulator__controller__pb2.SmsMessage.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.PhoneResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getStatus(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getStatus',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.EmulatorStatus.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getScreenshot(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getScreenshot',
            android__env_dot_proto_dot_emulator__controller__pb2.ImageFormat.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.Image.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def streamScreenshot(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamScreenshot',
            android__env_dot_proto_dot_emulator__controller__pb2.ImageFormat.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.Image.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def streamAudio(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamAudio',
            android__env_dot_proto_dot_emulator__controller__pb2.AudioFormat.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.AudioPacket.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getLogcat(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getLogcat',
            android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def streamLogcat(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamLogcat',
            android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setVmState(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setVmState',
            android__env_dot_proto_dot_emulator__controller__pb2.VmRunState.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getVmState(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getVmState',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.VmRunState.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setDisplayConfigurations(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setDisplayConfigurations',
            android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getDisplayConfigurations(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getDisplayConfigurations',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def streamNotification(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamNotification',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.Notification.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def rotateVirtualSceneCamera(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/rotateVirtualSceneCamera',
            android__env_dot_proto_dot_emulator__controller__pb2.RotationRadian.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setVirtualSceneCameraVelocity(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setVirtualSceneCameraVelocity',
            android__env_dot_proto_dot_emulator__controller__pb2.Velocity.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

from android_env.proto import emulator_controller_pb2 as android__env_dot_proto_dot_emulator__controller__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2


class EmulatorControllerStub(object):
    """An EmulatorController service lets you control the emulator.
    Note that this is currently an experimental feature, and that the
    service definition might change without notice. Use at your own risk!

    We use the following rough conventions:

    streamXXX --> streams values XXX (usually for emulator lifetime). Values
    are updated as soon as they become available.
    getXXX    --> gets a single value XXX
    setXXX    --> sets a single value XXX, does not returning state, these
    usually have an observable lasting side effect.
    sendXXX   --> send a single event XXX, possibly returning state information.
    android usually responds to these events.
    """

    def __init__(self, channel):
        """Constructor.

        Args:
            channel: A grpc.Channel.
        """
        self.streamSensor = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamSensor',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
                )
        self.getSensor = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getSensor',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
                )
        self.setSensor = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setSensor',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.setPhysicalModel = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setPhysicalModel',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.getPhysicalModel = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getPhysicalModel',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
                )
        self.streamPhysicalModel = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamPhysicalModel',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
                )
        self.setClipboard = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setClipboard',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.ClipData.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.getClipboard = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getClipboard',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.ClipData.FromString,
                )
        self.streamClipboard = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamClipboard',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.ClipData.FromString,
                )
        self.setBattery = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setBattery',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.BatteryState.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.getBattery = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getBattery',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.BatteryState.FromString,
                )
        self.setGps = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setGps',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.GpsState.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.getGps = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getGps',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.GpsState.FromString,
                )
        self.sendFingerprint = channel.unary_unary(
                '/android.emulation.control.EmulatorController/sendFingerprint',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.Fingerprint.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.sendKey = channel.unary_unary(
                '/android.emulation.control.EmulatorController/sendKey',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.KeyboardEvent.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.sendTouch = channel.unary_unary(
                '/android.emulation.control.EmulatorController/sendTouch',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.TouchEvent.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.sendMouse = channel.unary_unary(
                '/android.emulation.control.EmulatorController/sendMouse',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.MouseEvent.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.sendPhone = channel.unary_unary(
                '/android.emulation.control.EmulatorController/sendPhone',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhoneCall.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhoneResponse.FromString,
                )
        self.sendSms = channel.unary_unary(
                '/android.emulation.control.EmulatorController/sendSms',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.SmsMessage.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhoneResponse.FromString,
                )
        self.getStatus = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getStatus',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.EmulatorStatus.FromString,
                )
        self.getScreenshot = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getScreenshot',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.ImageFormat.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.Image.FromString,
                )
        self.streamScreenshot = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamScreenshot',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.ImageFormat.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.Image.FromString,
                )
        self.streamAudio = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamAudio',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.AudioFormat.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.AudioPacket.FromString,
                )
        self.getLogcat = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getLogcat',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.FromString,
                )
        self.streamLogcat = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamLogcat',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.FromString,
                )
        self.setVmState = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setVmState',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.VmRunState.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.getVmState = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getVmState',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.VmRunState.FromString,
                )
        self.setDisplayConfigurations = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setDisplayConfigurations',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.FromString,
                )
        self.getDisplayConfigurations = channel.unary_unary(
                '/android.emulation.control.EmulatorController/getDisplayConfigurations',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.FromString,
                )
        self.streamNotification = channel.unary_stream(
                '/android.emulation.control.EmulatorController/streamNotification',
                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
                response_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.Notification.FromString,
                )
        self.rotateVirtualSceneCamera = channel.unary_unary(
                '/android.emulation.control.EmulatorController/rotateVirtualSceneCamera',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.RotationRadian.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.setVirtualSceneCameraVelocity = channel.unary_unary(
                '/android.emulation.control.EmulatorController/setVirtualSceneCameraVelocity',
                request_serializer=android__env_dot_proto_dot_emulator__controller__pb2.Velocity.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )


class EmulatorControllerServicer(object):
    """An EmulatorController service lets you control the emulator.
    Note that this is currently an experimental feature, and that the
    service definition might change without notice. Use at your own risk!

    We use the following rough conventions:

    streamXXX --> streams values XXX (usually for emulator lifetime). Values
    are updated as soon as they become available.
    getXXX    --> gets a single value XXX
    setXXX    --> sets a single value XXX, does not returning state, these
    usually have an observable lasting side effect.
    sendXXX   --> send a single event XXX, possibly returning state information.
    android usually responds to these events.
    """

    def streamSensor(self, request, context):
        """Set the sensor data
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getSensor(self, request, context):
        """Get the sensor data
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setSensor(self, request, context):
        """Stream the sensor data
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setPhysicalModel(self, request, context):
        """Set the physical model, this is likely the one you are
        looking for when you wish to modify the device state.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getPhysicalModel(self, request, context):
        """Get the physical model
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def streamPhysicalModel(self, request, context):
        """Stream the physical model
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setClipboard(self, request, context):
        """Atomically set the current primary clipboard data.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getClipboard(self, request, context):
        """Atomically get the current primary clipboard data.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def streamClipboard(self, request, context):
        """Streams the current data on the clipboard. This will immediately produce
        a result with the current state of the clipboard after which the stream
        will block and wait until a new clip event is available from the guest.
        Calling the setClipboard method above will not result in generating a clip
        event. It is possible to lose clipboard events if the clipboard updates
        very rapidly.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setBattery(self, request, context):
        """Set the battery to the given state.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getBattery(self, request, context):
        """Get the battery to the given state.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setGps(self, request, context):
        """Set the state of the gps, gps support will only work
        properly if:

        - no location ui is active. That is the emulator
        is launched in headless mode (-no-window) or the location
        ui is disabled (-no-location-ui).
        - the passiveUpdate is set to false. Setting this to false
        will disable/break the LocationUI.

        Keep in mind that android usually only samples the gps at 1 hz.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getGps(self, request, context):
        """Gets the latest gps state as delivered by the setGps call, or location ui
        if active.

        Note: this is not necessarily the actual gps coordinate visible at the
        time, due to gps sample frequency (usually 1hz).
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def sendFingerprint(self, request, context):
        """Simulate a touch event on the finger print sensor.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def sendKey(self, request, context):
        """Send a keyboard event. Translating the event.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def sendTouch(self, request, context):
        """Send touch events. Note that mouse events can be simulated by touch events.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def sendMouse(self, request, context):
        """Send mouse events.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def sendPhone(self, request, context):
        """Make a phone call.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def sendSms(self, request, context):
        """Sends an sms message to the emulator.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getStatus(self, request, context):
        """Retrieve the status of the emulator. This will contain general
        hardware information, and whether the device has booted or not.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getScreenshot(self, request, context):
        """Gets an individual screenshot in the desired format.

        The image will be scaled to the desired ImageFormat, while maintaining
        the aspect ratio. The returned image will never exceed the provided width
        and height. Not setting the width or height (i.e. they are 0) will result
        in using the device width and height.

        The resulting image will be properly oriented and can be displayed
        directly without post processing. For example, if the device has a
        1080x1920 screen and is in landscape mode and called with no width or
        height parameter, it will return an 1920x1080 image.

        This method will return an empty image if the display is not visible.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def streamScreenshot(self, request, context):
        """Streams a series of screenshots in the desired format.
        A new frame will be delivered whenever the device produces a new frame.
        (Beware that this can produce a significant amount of data, and that
        certain translations are (png transform) can be costly).

        If the requested display is not visible it will send a single empty image
        and wait start producing images once the display becomes active, again
        producing a single empty image when the display becomes inactive.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def streamAudio(self, request, context):
        """Streams a series of audio packets in the desired format.
        A new frame will be delivered whenever the emulated device
        produces a new audio frame.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getLogcat(self, request, context):
        """Returns the last 128Kb of logcat output from the emulator
        Note that parsed logcat messages are only available after L (Api >23).
        it is possible that the logcat buffer gets overwritten, or falls behind.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def streamLogcat(self, request, context):
        """Streams the logcat output from the emulator. The first call
        can retrieve up to 128Kb. This call will not return.
        Note that parsed logcat messages are only available after L (Api >23)
        it is possible that the logcat buffer gets overwritten, or falls behind.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setVmState(self, request, context):
        """Transition the virtual machine to the desired state. Note that
        some states are only observable. For example you cannot transition
        to the error state.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getVmState(self, request, context):
        """Gets the state of the virtual machine.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setDisplayConfigurations(self, request, context):
        """Atomically changes the current multi-display configuration.
        After this call the given display configurations will be activated. You
        can only update secondary displays. Displays with id 0 will be ignored.

        This call can result in the removal or addition of secondary displays, the final
        display state can be observed by the returned configuration.

        The following gRPC error codes can be returned:
        -  FAILED_PRECONDITION (code 9) if the AVD does not support a configurable
        secondary display.
        -  INVALID_ARGUMENT (code 3) if:
        - The same display id is defined multiple times.
        - The display configurations are outside valid ranges
        (see DisplayConfiguration)
        -  INTERNAL (code 13) if there was an internal emulator failure.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def getDisplayConfigurations(self, request, context):
        """Returns all currently valid logical displays.
        The gRPC error code FAILED_PRECONDITION (code 9) is returned if the AVD
        does not support a configurable secondary display.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def streamNotification(self, request, context):
        """Notifies client of the following changes:

        - Virtual scene camera status change.
        - Display configuration changes from extended ui. This will only be fired
        if the user makes modifications the extended displays through the extended
        control tab.

        Note that this method will send the initial virtual scene state immediately.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def rotateVirtualSceneCamera(self, request, context):
        """RotationRadian is relative to the camera's current orientation.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def setVirtualSceneCameraVelocity(self, request, context):
        """Velocity is absolute
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_EmulatorControllerServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'streamSensor': grpc.unary_stream_rpc_method_handler(
                    servicer.streamSensor,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
            ),
            'getSensor': grpc.unary_unary_rpc_method_handler(
                    servicer.getSensor,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
            ),
            'setSensor': grpc.unary_unary_rpc_method_handler(
                    servicer.setSensor,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'setPhysicalModel': grpc.unary_unary_rpc_method_handler(
                    servicer.setPhysicalModel,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'getPhysicalModel': grpc.unary_unary_rpc_method_handler(
                    servicer.getPhysicalModel,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
            ),
            'streamPhysicalModel': grpc.unary_stream_rpc_method_handler(
                    servicer.streamPhysicalModel,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
            ),
            'setClipboard': grpc.unary_unary_rpc_method_handler(
                    servicer.setClipboard,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.ClipData.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'getClipboard': grpc.unary_unary_rpc_method_handler(
                    servicer.getClipboard,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.ClipData.SerializeToString,
            ),
            'streamClipboard': grpc.unary_stream_rpc_method_handler(
                    servicer.streamClipboard,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.ClipData.SerializeToString,
            ),
            'setBattery': grpc.unary_unary_rpc_method_handler(
                    servicer.setBattery,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.BatteryState.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'getBattery': grpc.unary_unary_rpc_method_handler(
                    servicer.getBattery,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.BatteryState.SerializeToString,
            ),
            'setGps': grpc.unary_unary_rpc_method_handler(
                    servicer.setGps,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.GpsState.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'getGps': grpc.unary_unary_rpc_method_handler(
                    servicer.getGps,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.GpsState.SerializeToString,
            ),
            'sendFingerprint': grpc.unary_unary_rpc_method_handler(
                    servicer.sendFingerprint,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.Fingerprint.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'sendKey': grpc.unary_unary_rpc_method_handler(
                    servicer.sendKey,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.KeyboardEvent.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'sendTouch': grpc.unary_unary_rpc_method_handler(
                    servicer.sendTouch,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.TouchEvent.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'sendMouse': grpc.unary_unary_rpc_method_handler(
                    servicer.sendMouse,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.MouseEvent.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'sendPhone': grpc.unary_unary_rpc_method_handler(
                    servicer.sendPhone,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.PhoneCall.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhoneResponse.SerializeToString,
            ),
            'sendSms': grpc.unary_unary_rpc_method_handler(
                    servicer.sendSms,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.SmsMessage.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.PhoneResponse.SerializeToString,
            ),
            'getStatus': grpc.unary_unary_rpc_method_handler(
                    servicer.getStatus,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.EmulatorStatus.SerializeToString,
            ),
            'getScreenshot': grpc.unary_unary_rpc_method_handler(
                    servicer.getScreenshot,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.ImageFormat.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.Image.SerializeToString,
            ),
            'streamScreenshot': grpc.unary_stream_rpc_method_handler(
                    servicer.streamScreenshot,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.ImageFormat.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.Image.SerializeToString,
            ),
            'streamAudio': grpc.unary_stream_rpc_method_handler(
                    servicer.streamAudio,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.AudioFormat.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.AudioPacket.SerializeToString,
            ),
            'getLogcat': grpc.unary_unary_rpc_method_handler(
                    servicer.getLogcat,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.SerializeToString,
            ),
            'streamLogcat': grpc.unary_stream_rpc_method_handler(
                    servicer.streamLogcat,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.SerializeToString,
            ),
            'setVmState': grpc.unary_unary_rpc_method_handler(
                    servicer.setVmState,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.VmRunState.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'getVmState': grpc.unary_unary_rpc_method_handler(
                    servicer.getVmState,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.VmRunState.SerializeToString,
            ),
            'setDisplayConfigurations': grpc.unary_unary_rpc_method_handler(
                    servicer.setDisplayConfigurations,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.SerializeToString,
            ),
            'getDisplayConfigurations': grpc.unary_unary_rpc_method_handler(
                    servicer.getDisplayConfigurations,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.SerializeToString,
            ),
            'streamNotification': grpc.unary_stream_rpc_method_handler(
                    servicer.streamNotification,
                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                    response_serializer=android__env_dot_proto_dot_emulator__controller__pb2.Notification.SerializeToString,
            ),
            'rotateVirtualSceneCamera': grpc.unary_unary_rpc_method_handler(
                    servicer.rotateVirtualSceneCamera,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.RotationRadian.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'setVirtualSceneCameraVelocity': grpc.unary_unary_rpc_method_handler(
                    servicer.setVirtualSceneCameraVelocity,
                    request_deserializer=android__env_dot_proto_dot_emulator__controller__pb2.Velocity.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'android.emulation.control.EmulatorController', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


 # This class is part of an EXPERIMENTAL API.
class EmulatorController(object):
    """An EmulatorController service lets you control the emulator.
    Note that this is currently an experimental feature, and that the
    service definition might change without notice. Use at your own risk!

    We use the following rough conventions:

    streamXXX --> streams values XXX (usually for emulator lifetime). Values
    are updated as soon as they become available.
    getXXX    --> gets a single value XXX
    setXXX    --> sets a single value XXX, does not returning state, these
    usually have an observable lasting side effect.
    sendXXX   --> send a single event XXX, possibly returning state information.
    android usually responds to these events.
    """

    @staticmethod
    def streamSensor(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamSensor',
            android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getSensor(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getSensor',
            android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setSensor(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setSensor',
            android__env_dot_proto_dot_emulator__controller__pb2.SensorValue.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setPhysicalModel(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setPhysicalModel',
            android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getPhysicalModel(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getPhysicalModel',
            android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def streamPhysicalModel(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamPhysicalModel',
            android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.PhysicalModelValue.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setClipboard(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setClipboard',
            android__env_dot_proto_dot_emulator__controller__pb2.ClipData.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getClipboard(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getClipboard',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.ClipData.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def streamClipboard(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamClipboard',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.ClipData.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setBattery(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setBattery',
            android__env_dot_proto_dot_emulator__controller__pb2.BatteryState.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getBattery(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getBattery',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.BatteryState.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setGps(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setGps',
            android__env_dot_proto_dot_emulator__controller__pb2.GpsState.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getGps(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getGps',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.GpsState.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def sendFingerprint(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/sendFingerprint',
            android__env_dot_proto_dot_emulator__controller__pb2.Fingerprint.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def sendKey(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/sendKey',
            android__env_dot_proto_dot_emulator__controller__pb2.KeyboardEvent.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def sendTouch(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/sendTouch',
            android__env_dot_proto_dot_emulator__controller__pb2.TouchEvent.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def sendMouse(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/sendMouse',
            android__env_dot_proto_dot_emulator__controller__pb2.MouseEvent.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def sendPhone(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/sendPhone',
            android__env_dot_proto_dot_emulator__controller__pb2.PhoneCall.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.PhoneResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def sendSms(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/sendSms',
            android__env_dot_proto_dot_emulator__controller__pb2.SmsMessage.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.PhoneResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getStatus(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getStatus',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.EmulatorStatus.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getScreenshot(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getScreenshot',
            android__env_dot_proto_dot_emulator__controller__pb2.ImageFormat.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.Image.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def streamScreenshot(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamScreenshot',
            android__env_dot_proto_dot_emulator__controller__pb2.ImageFormat.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.Image.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def streamAudio(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamAudio',
            android__env_dot_proto_dot_emulator__controller__pb2.AudioFormat.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.AudioPacket.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getLogcat(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getLogcat',
            android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def streamLogcat(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamLogcat',
            android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.LogMessage.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setVmState(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setVmState',
            android__env_dot_proto_dot_emulator__controller__pb2.VmRunState.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getVmState(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getVmState',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.VmRunState.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setDisplayConfigurations(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setDisplayConfigurations',
            android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def getDisplayConfigurations(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/getDisplayConfigurations',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.DisplayConfigurations.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def streamNotification(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(request, target, '/android.emulation.control.EmulatorController/streamNotification',
            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            android__env_dot_proto_dot_emulator__controller__pb2.Notification.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def rotateVirtualSceneCamera(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/rotateVirtualSceneCamera',
            android__env_dot_proto_dot_emulator__controller__pb2.RotationRadian.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def setVirtualSceneCameraVelocity(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/android.emulation.control.EmulatorController/setVirtualSceneCameraVelocity',
            android__env_dot_proto_dot_emulator__controller__pb2.Velocity.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! Client and server classes corresponding to protobuf-defined services. An EmulatorController service lets you control the emulator.     Note that this is currently an experimental feature, and that the     service definition might change without notice. Use at your own risk!      We use the following rough conventions:      streamXXX --> streams values XXX (usually for emulator lifetime). Values     are updated as soon as they become available.     getXXX    --> gets a single value XXX     setXXX    --> sets a single value XXX, does not returning state, these     usually have an observable lasting side effect.     sendXXX   --> send a single event XXX, possibly returning state information.     android usually responds to these events. Constructor.          Args:             channel: A grpc.Channel. An EmulatorController service lets you control the emulator.     Note that this is currently an experimental feature, and that the     service definition might change without notice. Use at your own risk!      We use the following rough conventions:      streamXXX --> streams values XXX (usually for emulator lifetime). Values     are updated as soon as they become available.     getXXX    --> gets a single value XXX     setXXX    --> sets a single value XXX, does not returning state, these     usually have an observable lasting side effect.     sendXXX   --> send a single event XXX, possibly returning state information.     android usually responds to these events. Set the sensor data Get the sensor data Stream the sensor data Set the physical model, this is likely the one you are         looking for when you wish to modify the device state. Get the physical model Stream the physical model Atomically set the current primary clipboard data. Atomically get the current primary clipboard data. Streams the current data on the clipboard. This will immediately produce         a result with the current state of the clipboard after which the stream         will block and wait until a new clip event is available from the guest.         Calling the setClipboard method above will not result in generating a clip         event. It is possible to lose clipboard events if the clipboard updates         very rapidly. Set the battery to the given state. Get the battery to the given state. Set the state of the gps, gps support will only work         properly if:          - no location ui is active. That is the emulator         is launched in headless mode (-no-window) or the location         ui is disabled (-no-location-ui).         - the passiveUpdate is set to false. Setting this to false         will disable/break the LocationUI.          Keep in mind that android usually only samples the gps at 1 hz. Gets the latest gps state as delivered by the setGps call, or location ui         if active.          Note: this is not necessarily the actual gps coordinate visible at the         time, due to gps sample frequency (usually 1hz). Simulate a touch event on the finger print sensor. Send a keyboard event. Translating the event. Send touch events. Note that mouse events can be simulated by touch events. Send mouse events. Make a phone call. Sends an sms message to the emulator. Retrieve the status of the emulator. This will contain general         hardware information, and whether the device has booted or not. Gets an individual screenshot in the desired format.          The image will be scaled to the desired ImageFormat, while maintaining         the aspect ratio. The returned image will never exceed the provided width         and height. Not setting the width or height (i.e. they are 0) will result         in using the device width and height.          The resulting image will be properly oriented and can be displayed         directly without post processing. For example, if the device has a         1080x1920 screen and is in landscape mode and called with no width or         height parameter, it will return an 1920x1080 image.          This method will return an empty image if the display is not visible. Streams a series of screenshots in the desired format.         A new frame will be delivered whenever the device produces a new frame.         (Beware that this can produce a significant amount of data, and that         certain translations are (png transform) can be costly).          If the requested display is not visible it will send a single empty image         and wait start producing images once the display becomes active, again         producing a single empty image when the display becomes inactive. Streams a series of audio packets in the desired format.         A new frame will be delivered whenever the emulated device         produces a new audio frame. Returns the last 128Kb of logcat output from the emulator         Note that parsed logcat messages are only available after L (Api >23).         it is possible that the logcat buffer gets overwritten, or falls behind. Streams the logcat output from the emulator. The first call         can retrieve up to 128Kb. This call will not return.         Note that parsed logcat messages are only available after L (Api >23)         it is possible that the logcat buffer gets overwritten, or falls behind. Transition the virtual machine to the desired state. Note that         some states are only observable. For example you cannot transition         to the error state. Gets the state of the virtual machine. Atomically changes the current multi-display configuration.         After this call the given display configurations will be activated. You         can only update secondary displays. Displays with id 0 will be ignored.          This call can result in the removal or addition of secondary displays, the final         display state can be observed by the returned configuration.          The following gRPC error codes can be returned:         -  FAILED_PRECONDITION (code 9) if the AVD does not support a configurable         secondary display.         -  INVALID_ARGUMENT (code 3) if:         - The same display id is defined multiple times.         - The display configurations are outside valid ranges         (see DisplayConfiguration)         -  INTERNAL (code 13) if there was an internal emulator failure. Returns all currently valid logical displays.         The gRPC error code FAILED_PRECONDITION (code 9) is returned if the AVD         does not support a configurable secondary display. Notifies client of the following changes:          - Virtual scene camera status change.         - Display configuration changes from extended ui. This will only be fired         if the user makes modifications the extended displays through the extended         control tab.          Note that this method will send the initial virtual scene state immediately. RotationRadian is relative to the camera's current orientation. Velocity is absolute # This class is part of an EXPERIMENTAL API. An EmulatorController service lets you control the emulator.     Note that this is currently an experimental feature, and that the     service definition might change without notice. Use at your own risk!      We use the following rough conventions:      streamXXX --> streams values XXX (usually for emulator lifetime). Values     are updated as soon as they become available.     getXXX    --> gets a single value XXX     setXXX    --> sets a single value XXX, does not returning state, these     usually have an observable lasting side effect.     sendXXX   --> send a single event XXX, possibly returning state information.     android usually responds to these events.