4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The file provides services that allow information about an
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync absolute pointer device to be retrieved.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __ABSOLUTE_POINTER_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __ABSOLUTE_POINTER_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ABSOLUTE_POINTER_PROTOCOL_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { 0x8D59D32B, 0xC655, 0x4AE9, { 0x9B, 0x15, 0xF2, 0x59, 0x04, 0x99, 0x2A, 0x43 } }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_ABSOLUTE_POINTER_PROTOCOL EFI_ABSOLUTE_POINTER_PROTOCOL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//*******************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI_ABSOLUTE_POINTER_MODE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//*******************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The following data values in the EFI_ABSOLUTE_POINTER_MODE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync interface are read-only and are changed by using the appropriate
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync interface functions.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 AbsoluteMinX; ///< The Absolute Minimum of the device on the x-axis
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 AbsoluteMinY; ///< The Absolute Minimum of the device on the y axis.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 AbsoluteMinZ; ///< The Absolute Minimum of the device on the z-axis
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 AbsoluteMaxX; ///< The Absolute Maximum of the device on the x-axis. If 0, and the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///< AbsoluteMinX is 0, then the pointer device does not support a xaxis
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 AbsoluteMaxY; ///< The Absolute Maximum of the device on the y -axis. If 0, and the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///< AbsoluteMinX is 0, then the pointer device does not support a yaxis.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 AbsoluteMaxZ; ///< The Absolute Maximum of the device on the z-axis. If 0 , and the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///< AbsoluteMinX is 0, then the pointer device does not support a zaxis
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 Attributes; ///< The following bits are set as needed (or'd together) to indicate the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///< capabilities of the device supported. The remaining bits are undefined
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///< and should be 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_ABSOLUTE_POINTER_MODE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// If set, indicates this device supports an alternate button input.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ABSP_SupportsAltActive 0x00000001
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// If set, indicates this device returns pressure data in parameter CurrentZ.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ABSP_SupportsPressureAsZ 0x00000002
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function resets the pointer device hardware. As part of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync initialization process, the firmware/device will make a quick
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync but reasonable attempt to verify that the device is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync functioning. If the ExtendedVerification flag is TRUE the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync firmware may take an extended amount of time to verify the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync device is operating on reset. Otherwise the reset operation is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to occur as quickly as possible. The hardware verification
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync process is not defined by this specification and is left up to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the platform firmware or driver to implement.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This A pointer to the EFI_ABSOLUTE_POINTER_PROTOCOL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ExtendedVerification Indicates that the driver may
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync perform a more exhaustive
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync verification operation of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync device during reset.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The device was reset.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The device is not functioning
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync correctly and could not be reset.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_ABSOLUTE_POINTER_RESET)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN ExtendedVerification
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This bit is set if the touch sensor is active.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ABSP_TouchActive 0x00000001
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This bit is set if the alt sensor, such as pen-side button, is active
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ABS_AltActive 0x00000002
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Definition of EFI_ABSOLUTE_POINTER_STATE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The unsigned position of the activation on the x axis. If the AboluteMinX
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// and the AboluteMaxX fields of the EFI_ABSOLUTE_POINTER_MODE structure are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// both 0, then this pointer device does not support an x-axis, and this field
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// must be ignored.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 CurrentX;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The unsigned position of the activation on the x axis. If the AboluteMinY
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// and the AboluteMaxY fields of the EFI_ABSOLUTE_POINTER_MODE structure are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// both 0, then this pointer device does not support an y-axis, and this field
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// must be ignored.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 CurrentY;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The unsigned position of the activation on the x axis, or the pressure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// measurement. If the AboluteMinZ and the AboluteMaxZ fields of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_ABSOLUTE_POINTER_MODE structure are both 0, then this pointer device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// does not support an z-axis, and this field must be ignored.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 CurrentZ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Bits are set to 1 in this structure item to indicate that device buttons are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// active.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 ActiveButtons;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_ABSOLUTE_POINTER_STATE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The GetState() function retrieves the current state of a pointer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync device. This includes information on the active state associated
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync with the pointer device and the current position of the axes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync associated with the pointer device. If the state of the pointer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync device has not changed since the last call to GetState(), then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_NOT_READY is returned. If the state of the pointer device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync has changed since the last call to GetState(), then the state
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync information is placed in State, and EFI_SUCCESS is returned. If
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync a device error occurs while attempting to retrieve the state
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync information, then EFI_DEVICE_ERROR is returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This A pointer to the EFI_ABSOLUTE_POINTER_PROTOCOL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param State A pointer to the state information on the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync pointer device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The state of the pointer device was
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync returned in State.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_READY The state of the pointer device has not
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync changed since the last call to GetState().
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR A device error occurred while
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync attempting to retrieve the pointer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync device's current state.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_ABSOLUTE_POINTER_GET_STATE)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_ABSOLUTE_POINTER_STATE *State
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// The EFI_ABSOLUTE_POINTER_PROTOCOL provides a set of services
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// for a pointer device that can be used as an input device from an
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// application written to this specification. The services include
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// the ability to: reset the pointer device, retrieve the state of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// the pointer device, and retrieve the capabilities of the pointer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// device. The service also provides certain data items describing the device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _EFI_ABSOLUTE_POINTER_PROTOCOL {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ABSOLUTE_POINTER_RESET Reset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ABSOLUTE_POINTER_GET_STATE GetState;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Event to use with WaitForEvent() to wait for input from the pointer device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_EVENT WaitForInput;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Pointer to EFI_ABSOLUTE_POINTER_MODE data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ABSOLUTE_POINTER_MODE *Mode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiAbsolutePointerProtocolGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync