drivers/qencoder: add command to set the maximum encoder position
This commit is contained in:
parent
092a0c8453
commit
dca8c65331
@ -310,6 +310,24 @@ static int qe_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* QEIOC_SETPOSMAX - Set the maximum encoder position.
|
||||||
|
* Argument: uint32
|
||||||
|
*/
|
||||||
|
|
||||||
|
case QEIOC_SETPOSMAX:
|
||||||
|
{
|
||||||
|
uint32_t maxpos = (uint32_t)arg;
|
||||||
|
if (lower->ops->setposmax != NULL)
|
||||||
|
{
|
||||||
|
ret = lower->ops->setposmax(lower, maxpos);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret = -ENOTTY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
/* Any unrecognized IOCTL commands might be platform-specific ioctl
|
/* Any unrecognized IOCTL commands might be platform-specific ioctl
|
||||||
* commands
|
* commands
|
||||||
*/
|
*/
|
||||||
|
@ -50,13 +50,16 @@
|
|||||||
* Argument: int32_t pointer to the location to return the position.
|
* Argument: int32_t pointer to the location to return the position.
|
||||||
* QEIOC_RESET - Reset the position to zero.
|
* QEIOC_RESET - Reset the position to zero.
|
||||||
* Argument: None
|
* Argument: None
|
||||||
|
* QEIOC_POSMAX - Set the maximum position for the encoder.
|
||||||
|
* Argument: uint32_t maximum position
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define QEIOC_POSITION _QEIOC(0x0001) /* Arg: int32_t* pointer */
|
#define QEIOC_POSITION _QEIOC(0x0001) /* Arg: int32_t* pointer */
|
||||||
#define QEIOC_RESET _QEIOC(0x0002) /* Arg: None */
|
#define QEIOC_RESET _QEIOC(0x0002) /* Arg: None */
|
||||||
|
#define QEIOC_SETPOSMAX _QEIOC(0x0003) /* Arg: uint32_t */
|
||||||
|
|
||||||
#define QE_FIRST 0x0001 /* First required command */
|
#define QE_FIRST 0x0001 /* First required command */
|
||||||
#define QE_NCMDS 2 /* Two required commands */
|
#define QE_NCMDS 3 /* Two required commands */
|
||||||
|
|
||||||
/* User defined ioctl commands are also supported. These will be forwarded
|
/* User defined ioctl commands are also supported. These will be forwarded
|
||||||
* by the upper-half QE driver to the lower-half QE driver via the ioctl()
|
* by the upper-half QE driver to the lower-half QE driver via the ioctl()
|
||||||
@ -109,6 +112,10 @@ struct qe_ops_s
|
|||||||
|
|
||||||
CODE int (*position)(FAR struct qe_lowerhalf_s *lower, FAR int32_t *pos);
|
CODE int (*position)(FAR struct qe_lowerhalf_s *lower, FAR int32_t *pos);
|
||||||
|
|
||||||
|
/* Set the maximum encoder position. */
|
||||||
|
|
||||||
|
CODE int (*setposmax)(FAR struct qe_lowerhalf_s *lower, uint32_t pos);
|
||||||
|
|
||||||
/* Reset the position measurement to zero. */
|
/* Reset the position measurement to zero. */
|
||||||
|
|
||||||
CODE int (*reset)(FAR struct qe_lowerhalf_s *lower);
|
CODE int (*reset)(FAR struct qe_lowerhalf_s *lower);
|
||||||
|
Loading…
Reference in New Issue
Block a user