mirror of
https://github.com/apache/nuttx.git
synced 2026-05-23 23:28:29 +08:00
drivers/usbhost_hidmouse: fix button detection in touchscreen example
Fix an issue where button presses were missed in the touchscreen example due to incorrect packet processing. Previously, the driver waited to accumulate a batch of packets but only processed the first one, effectively discarding the rest. The driver now reads and processes packets one at a time to ensure no input events are lost. Also fixed typo: usbhost_xythreshold does not exist. Signed-off-by: Lwazi Dube <lwazeh@gmail.com>
This commit is contained in:
@@ -276,6 +276,7 @@ struct usbhost_state_s
|
||||
struct work_s work; /* For cornercase error handling by the worker thread */
|
||||
struct mouse_sample_s sample; /* Last sampled mouse data */
|
||||
usbhost_ep_t epin; /* Interrupt IN endpoint */
|
||||
size_t packet_len;
|
||||
|
||||
/* The following is a list if poll structures of threads waiting for
|
||||
* driver events. The 'struct pollfd' reference for each open is also
|
||||
@@ -820,7 +821,7 @@ static bool usbhost_touchscreen(FAR struct usbhost_state_s *priv,
|
||||
* small, then ignore the event.
|
||||
*/
|
||||
|
||||
else if (!usbhost_xythreshold(priv))
|
||||
else if (!usbhost_threshold(priv))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -988,7 +989,7 @@ static int usbhost_mouse_poll(int argc, FAR char *argv[])
|
||||
*/
|
||||
|
||||
nbytes = DRVR_TRANSFER(hport->drvr, priv->epin,
|
||||
priv->tbuffer, priv->tbuflen);
|
||||
priv->tbuffer, priv->packet_len);
|
||||
|
||||
/* Check for errors -- Bail if an excessive number of consecutive
|
||||
* errors are encountered.
|
||||
@@ -1478,6 +1479,8 @@ static inline int usbhost_cfgdesc(FAR struct usbhost_state_s *priv,
|
||||
epindesc.mxpacketsize =
|
||||
usbhost_getle16(epdesc->mxpacketsize);
|
||||
|
||||
priv->packet_len = (size_t)epindesc.mxpacketsize;
|
||||
|
||||
uinfo("Interrupt IN EP addr:%d mxpacketsize:%d\n",
|
||||
epindesc.addr, epindesc.mxpacketsize);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user