Ronak Kanabar | 1ae366f | 2023-06-07 01:21:56 +0530 | [diff] [blame^] | 1 | /** @file |
| 2 | The file provides services that allow information about an |
| 3 | absolute pointer device to be retrieved. |
| 4 | |
| 5 | Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> |
| 6 | SPDX-License-Identifier: BSD-2-Clause-Patent |
| 7 | |
| 8 | @par Revision Reference: |
| 9 | This Protocol was introduced in UEFI Specification 2.3. |
| 10 | |
| 11 | **/ |
| 12 | |
| 13 | #ifndef __ABSOLUTE_POINTER_H__ |
| 14 | #define __ABSOLUTE_POINTER_H__ |
| 15 | |
| 16 | #define EFI_ABSOLUTE_POINTER_PROTOCOL_GUID \ |
| 17 | { 0x8D59D32B, 0xC655, 0x4AE9, { 0x9B, 0x15, 0xF2, 0x59, 0x04, 0x99, 0x2A, 0x43 } } |
| 18 | |
| 19 | typedef struct _EFI_ABSOLUTE_POINTER_PROTOCOL EFI_ABSOLUTE_POINTER_PROTOCOL; |
| 20 | |
| 21 | // ******************************************************* |
| 22 | // EFI_ABSOLUTE_POINTER_MODE |
| 23 | // ******************************************************* |
| 24 | |
| 25 | /** |
| 26 | The following data values in the EFI_ABSOLUTE_POINTER_MODE |
| 27 | interface are read-only and are changed by using the appropriate |
| 28 | interface functions. |
| 29 | **/ |
| 30 | typedef struct { |
| 31 | UINT64 AbsoluteMinX; ///< The Absolute Minimum of the device on the x-axis |
| 32 | UINT64 AbsoluteMinY; ///< The Absolute Minimum of the device on the y axis. |
| 33 | UINT64 AbsoluteMinZ; ///< The Absolute Minimum of the device on the z-axis |
| 34 | UINT64 AbsoluteMaxX; ///< The Absolute Maximum of the device on the x-axis. If 0, and the |
| 35 | ///< AbsoluteMinX is 0, then the pointer device does not support a xaxis |
| 36 | UINT64 AbsoluteMaxY; ///< The Absolute Maximum of the device on the y -axis. If 0, and the |
| 37 | ///< AbsoluteMinX is 0, then the pointer device does not support a yaxis. |
| 38 | UINT64 AbsoluteMaxZ; ///< The Absolute Maximum of the device on the z-axis. If 0 , and the |
| 39 | ///< AbsoluteMinX is 0, then the pointer device does not support a zaxis |
| 40 | UINT32 Attributes; ///< The following bits are set as needed (or'd together) to indicate the |
| 41 | ///< capabilities of the device supported. The remaining bits are undefined |
| 42 | ///< and should be 0 |
| 43 | } EFI_ABSOLUTE_POINTER_MODE; |
| 44 | |
| 45 | /// |
| 46 | /// If set, indicates this device supports an alternate button input. |
| 47 | /// |
| 48 | #define EFI_ABSP_SupportsAltActive 0x00000001 |
| 49 | |
| 50 | /// |
| 51 | /// If set, indicates this device returns pressure data in parameter CurrentZ. |
| 52 | /// |
| 53 | #define EFI_ABSP_SupportsPressureAsZ 0x00000002 |
| 54 | |
| 55 | /** |
| 56 | This function resets the pointer device hardware. As part of |
| 57 | initialization process, the firmware/device will make a quick |
| 58 | but reasonable attempt to verify that the device is |
| 59 | functioning. If the ExtendedVerification flag is TRUE the |
| 60 | firmware may take an extended amount of time to verify the |
| 61 | device is operating on reset. Otherwise the reset operation is |
| 62 | to occur as quickly as possible. The hardware verification |
| 63 | process is not defined by this specification and is left up to |
| 64 | the platform firmware or driver to implement. |
| 65 | |
| 66 | @param This A pointer to the EFI_ABSOLUTE_POINTER_PROTOCOL |
| 67 | instance. |
| 68 | |
| 69 | @param ExtendedVerification Indicates that the driver may |
| 70 | perform a more exhaustive |
| 71 | verification operation of the |
| 72 | device during reset. |
| 73 | |
| 74 | @retval EFI_SUCCESS The device was reset. |
| 75 | |
| 76 | @retval EFI_DEVICE_ERROR The device is not functioning |
| 77 | correctly and could not be reset. |
| 78 | |
| 79 | **/ |
| 80 | typedef |
| 81 | EFI_STATUS |
| 82 | (EFIAPI *EFI_ABSOLUTE_POINTER_RESET)( |
| 83 | IN EFI_ABSOLUTE_POINTER_PROTOCOL *This, |
| 84 | IN BOOLEAN ExtendedVerification |
| 85 | ); |
| 86 | |
| 87 | /// |
| 88 | /// This bit is set if the touch sensor is active. |
| 89 | /// |
| 90 | #define EFI_ABSP_TouchActive 0x00000001 |
| 91 | |
| 92 | /// |
| 93 | /// This bit is set if the alt sensor, such as pen-side button, is active |
| 94 | /// |
| 95 | #define EFI_ABS_AltActive 0x00000002 |
| 96 | |
| 97 | /** |
| 98 | Definition of EFI_ABSOLUTE_POINTER_STATE. |
| 99 | **/ |
| 100 | typedef struct { |
| 101 | /// |
| 102 | /// The unsigned position of the activation on the x axis. If the AboluteMinX |
| 103 | /// and the AboluteMaxX fields of the EFI_ABSOLUTE_POINTER_MODE structure are |
| 104 | /// both 0, then this pointer device does not support an x-axis, and this field |
| 105 | /// must be ignored. |
| 106 | /// |
| 107 | UINT64 CurrentX; |
| 108 | |
| 109 | /// |
| 110 | /// The unsigned position of the activation on the y axis. If the AboluteMinY |
| 111 | /// and the AboluteMaxY fields of the EFI_ABSOLUTE_POINTER_MODE structure are |
| 112 | /// both 0, then this pointer device does not support an y-axis, and this field |
| 113 | /// must be ignored. |
| 114 | /// |
| 115 | UINT64 CurrentY; |
| 116 | |
| 117 | /// |
| 118 | /// The unsigned position of the activation on the z axis, or the pressure |
| 119 | /// measurement. If the AboluteMinZ and the AboluteMaxZ fields of the |
| 120 | /// EFI_ABSOLUTE_POINTER_MODE structure are both 0, then this pointer device |
| 121 | /// does not support an z-axis, and this field must be ignored. |
| 122 | /// |
| 123 | UINT64 CurrentZ; |
| 124 | |
| 125 | /// |
| 126 | /// Bits are set to 1 in this structure item to indicate that device buttons are |
| 127 | /// active. |
| 128 | /// |
| 129 | UINT32 ActiveButtons; |
| 130 | } EFI_ABSOLUTE_POINTER_STATE; |
| 131 | |
| 132 | /** |
| 133 | The GetState() function retrieves the current state of a pointer |
| 134 | device. This includes information on the active state associated |
| 135 | with the pointer device and the current position of the axes |
| 136 | associated with the pointer device. If the state of the pointer |
| 137 | device has not changed since the last call to GetState(), then |
| 138 | EFI_NOT_READY is returned. If the state of the pointer device |
| 139 | has changed since the last call to GetState(), then the state |
| 140 | information is placed in State, and EFI_SUCCESS is returned. If |
| 141 | a device error occurs while attempting to retrieve the state |
| 142 | information, then EFI_DEVICE_ERROR is returned. |
| 143 | |
| 144 | |
| 145 | @param This A pointer to the EFI_ABSOLUTE_POINTER_PROTOCOL |
| 146 | instance. |
| 147 | |
| 148 | @param State A pointer to the state information on the |
| 149 | pointer device. |
| 150 | |
| 151 | @retval EFI_SUCCESS The state of the pointer device was |
| 152 | returned in State. |
| 153 | |
| 154 | @retval EFI_NOT_READY The state of the pointer device has not |
| 155 | changed since the last call to GetState(). |
| 156 | |
| 157 | @retval EFI_DEVICE_ERROR A device error occurred while |
| 158 | attempting to retrieve the pointer |
| 159 | device's current state. |
| 160 | |
| 161 | **/ |
| 162 | typedef |
| 163 | EFI_STATUS |
| 164 | (EFIAPI *EFI_ABSOLUTE_POINTER_GET_STATE)( |
| 165 | IN EFI_ABSOLUTE_POINTER_PROTOCOL *This, |
| 166 | OUT EFI_ABSOLUTE_POINTER_STATE *State |
| 167 | ); |
| 168 | |
| 169 | /// |
| 170 | /// The EFI_ABSOLUTE_POINTER_PROTOCOL provides a set of services |
| 171 | /// for a pointer device that can be used as an input device from an |
| 172 | /// application written to this specification. The services include |
| 173 | /// the ability to: reset the pointer device, retrieve the state of |
| 174 | /// the pointer device, and retrieve the capabilities of the pointer |
| 175 | /// device. The service also provides certain data items describing the device. |
| 176 | /// |
| 177 | struct _EFI_ABSOLUTE_POINTER_PROTOCOL { |
| 178 | EFI_ABSOLUTE_POINTER_RESET Reset; |
| 179 | EFI_ABSOLUTE_POINTER_GET_STATE GetState; |
| 180 | /// |
| 181 | /// Event to use with WaitForEvent() to wait for input from the pointer device. |
| 182 | /// |
| 183 | EFI_EVENT WaitForInput; |
| 184 | /// |
| 185 | /// Pointer to EFI_ABSOLUTE_POINTER_MODE data. |
| 186 | /// |
| 187 | EFI_ABSOLUTE_POINTER_MODE *Mode; |
| 188 | }; |
| 189 | |
| 190 | extern EFI_GUID gEfiAbsolutePointerProtocolGuid; |
| 191 | |
| 192 | #endif |