<font size=2 face="sans-serif">Hi Venkat,</font>
<br>
<br><font size=2 face="sans-serif">&gt;&gt;</font><font size=3>The UEFI
specification (2.6) recommends using OpenProtocol in place on HandleProtocol.
Does it really matter which one we use?</font>
<br><font size=2 face="sans-serif">I don't think this matters for your
preboot application.</font>
<br>
<br><font size=2 face="sans-serif">&gt;&gt;</font><font size=3>Once we
get the absolute pointer protocol interface handle, is there any guidance
on when to call the Reset() function? </font>
<br><font size=2 face="sans-serif">If you are worried that the device was
not initialized or if the device is not working as you would expect it
to, you can call the reset function. </font>
<br>
<br><font size=3>&gt;&gt;- When calling GetState function on the protocol
interface, how do you differentiate between finger touch/ press and release
events?</font>
<br><font size=2 face="sans-serif">I think you have some assumptions about
how the EFI_ABSOLUTE_POINTER_PROTOCOL is supposed to work, and I think
those assumptions are incorrect. In the simplest terms, the absolute pointer
protocol is going to give you the current position of the pointer device.
&nbsp;I don't believe that it was intended to provide information as involved
as start of touch and end of touch, or anything else that is associated
with multi touch device. &nbsp;I think it would be easier if you though
of the protocol as giving you a snapshot of the current position of the
pointer, and the current status of the input buttons (if they exist).</font>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br><font size=1 color=#5f5f5f face="sans-serif">From: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">Venkat Gorla &lt;venkatagorla@gmail.com&gt;</font>
<br><font size=1 color=#5f5f5f face="sans-serif">To: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">fw_os_forum@mailman.uefi.org</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Date: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">05/26/2016 12:15 AM</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Subject: &nbsp; &nbsp;
&nbsp; &nbsp;</font><font size=1 face="sans-serif">[Fw_Os_Forum]
UEFI pre-boot issues with Microsoft surface pro 4</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Sent by: &nbsp; &nbsp;
&nbsp; &nbsp;</font><font size=1 face="sans-serif">fw_os_forum-bounces@mailman.uefi.org</font>
<br>
<hr noshade>
<br>
<br>
<br><font size=3>Hi,</font>
<br>
<br><font size=3>We are facing few issues with the absolute pointer protocol
on Microsoft surface pro 4 in the UEFI pre-boot environment. So I am sending
this email looking for some guidance/ recommendations on how to resolve
them.</font>
<br>
<br><font size=3>- In order to query the protocol interface handle we are
currently calling HandleProtocol(). The UEFI specification (2.6) recommends
using OpenProtocol in place on HandleProtocol. Does it really matter which
one we use?</font>
<br><font size=3>- Once we get the absolute pointer protocol interface
handle, is there any guidance on when to call the Reset() function? We
are seeing inconsistent behavior with the Reset function on different hardware
models such as Microsoft surface pro 1 and pro 3.</font>
<br><font size=3>- For example, on one model calling Reset is giving the
desired behavior while on the other model, not calling it is working.</font>
<br>
<br><font size=3>- When calling GetState function on the protocol interface,
how do you differentiate between finger touch/ press and release events?</font>
<br><font size=3>This is what we are currently doing in our code, pseudo
code:</font>
<br>
<br><font size=3>while (true)</font>
<br><font size=3>{</font>
<br><font size=3>&nbsp; &nbsp; status = BS-&gt;WaitForEvent(&lt;Array containing
&quot;WaitForInput&quot; event of the protocol interface&gt;);</font>
<br>
<br><font size=3>&nbsp; &nbsp; if (status is successful)</font>
<br><font size=3>&nbsp; &nbsp; {</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; EFI_ABSOLUTE_POINTER_STATE
PointerState;</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; status = GetState(pAbsolutePointerProtocol,
&amp;PointerState);</font>
<br>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; // Check return value of GetState
and process the touch/ release event.</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; if (PointerState.ActiveButtons
&amp; EFI_ABSP_TouchActive)</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; {</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // This is the
finger touch/ press event.</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; }</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; else if (PointerState.ActiveButtons
&amp; EFI_ABS_AltActive)</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; {</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // We ignore
this event.</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; }</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; else</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; {</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // This is the
finger release event.</font>
<br><font size=3>&nbsp; &nbsp; &nbsp; &nbsp; }</font>
<br><font size=3>&nbsp; &nbsp; }</font>
<br><font size=3>}</font>
<br>
<br><font size=3>- Our expectation is that every time you touch and release,
we should be getting *two* events that get processed by our code.</font>
<br><font size=3>- However on Microsoft surface pro 4, we are not always
getting the touch and release events in pairs and that is throwing off
our code.</font>
<br>
<br><font size=3>- Looking at the pseudo code is there something that is
missing that could be causing this behavior?</font>
<br><font size=3>- Additionally are there any known touch related issues
with surface pro 4 and is there any specific guidance on how to resolve
them?</font>
<br>
<br><font size=3>Please let me know if you need any additional info to
help answer my questions.</font>
<br>
<br><font size=3>Thanks,</font>
<br><font size=3>&nbsp; &nbsp; Venkat</font>
<br><tt><font size=2>_______________________________________________<br>
Fw_os_forum mailing list<br>
Fw_os_forum@mailman.uefi.org<br>
</font></tt><a href=http://lists.mailman.uefi.org/mailman/listinfo/fw_os_forum><tt><font size=2>http://lists.mailman.uefi.org/mailman/listinfo/fw_os_forum</font></tt></a>
<br>
<br>