Skip to content

Commit

Permalink
nuxxt: add open and close callback functions for the mouse.
Browse files Browse the repository at this point in the history
  • Loading branch information
HongChao6 committed Dec 24, 2024
1 parent c48ab04 commit d157589
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 0 deletions.
12 changes: 12 additions & 0 deletions drivers/input/mouse_upper.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ static int mouse_open(FAR struct file *filep)
FAR struct mouse_openpriv_s *openpriv;
FAR struct inode *inode = filep->f_inode;
FAR struct mouse_upperhalf_s *upper = inode->i_private;
FAR struct mouse_lowerhalf_s *lower = upper->lower;
int ret;

ret = nxmutex_lock(&upper->lock);
Expand Down Expand Up @@ -129,6 +130,11 @@ static int mouse_open(FAR struct file *filep)
nxmutex_init(&openpriv->lock);
list_add_tail(&upper->head, &openpriv->node);

if (lower->open && list_is_singular(&openpriv->node))
{
ret = lower->open(lower);
}

/* Save the buffer node pointer so that it can be used directly
* in the read operation.
*/
Expand All @@ -147,6 +153,7 @@ static int mouse_close(FAR struct file *filep)
FAR struct mouse_openpriv_s *openpriv = filep->f_priv;
FAR struct inode *inode = filep->f_inode;
FAR struct mouse_upperhalf_s *upper = inode->i_private;
FAR struct mouse_lowerhalf_s *lower = upper->lower;
int ret;

ret = nxmutex_lock(&upper->lock);
Expand All @@ -155,6 +162,11 @@ static int mouse_close(FAR struct file *filep)
return ret;
}

if (lower->close && list_is_singular(&openpriv->node))
{
ret = lower->close(lower);
}

list_delete(&openpriv->node);
circbuf_uninit(&openpriv->circbuf);
nxsem_destroy(&openpriv->waitsem);
Expand Down
39 changes: 39 additions & 0 deletions include/nuttx/input/mouse.h
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,45 @@ struct mouse_lowerhalf_s

CODE int (*control)(FAR struct mouse_lowerhalf_s *lower,
int cmd, unsigned long arg);

/**************************************************************************
* Name: open
*
* Description:
* This function pointer is used to open a connection to the mouse driver
* instance. It initializes the mouse and prepares it for subsequent
* interactions with the user. This function typically sets up the state
* of the driver and allocates any necessary resources.
*
* Input Parameters:
* lower - A pointer to the instance of the lower half mouse driver.
* filep - A pointer to the file structure representing the user.
*
* Returned Value:
* It returns zero (OK) on success; a negative errno value on failure.
**************************************************************************/

CODE int (*open)(FAR struct mouse_lowerhalf_s *lower);

/**************************************************************************
* Name: close
*
* Description:
* This function pointer is used to close the connection to the mouse
* driver instance. It performs any necessary cleanup operations, such as
* releasing resources and resetting the state of the mouse driver,
* before ending theinteraction with the user.
*
* Input Parameters:
* lower - A pointer to the instance of the lower half mouse driver.
* filep - A pointer to the file structure representing the user closing
* the mouse connection.
*
* Returned Value:
* Returns zero (OK) on success; a negative errno value on failure.
**************************************************************************/

CODE int (*close)(FAR struct mouse_lowerhalf_s *lower);
};

/****************************************************************************
Expand Down

0 comments on commit d157589

Please sign in to comment.