X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Finclude%2Ftpl_drv_joystick.h;h=3ba441ac4fa2821dfceb61ef269b5392135ae248;hb=889b379627388811c630aad3214efcaee1ac9885;hp=dd2200113273175d36b6966e54fd8230d666d1b0;hpb=6e1cf1d50bca85f01b5f802b1a76f090e362bf05;p=tpg%2Facess2.git diff --git a/Kernel/include/tpl_drv_joystick.h b/Kernel/include/tpl_drv_joystick.h index dd220011..3ba441ac 100644 --- a/Kernel/include/tpl_drv_joystick.h +++ b/Kernel/include/tpl_drv_joystick.h @@ -28,7 +28,7 @@ */ enum eTplJoystick_IOCtl { /** - * ioctl(..., struct{int Ident;tJoystickCallback *Callback}) + * ioctl(..., tJoystickCallback *Callback) * \brief Sets the callback * \note Can be called from kernel mode only * @@ -39,33 +39,64 @@ enum eTplJoystick_IOCtl { JOY_IOCTL_SETCALLBACK = 4, /** - * ioctl(..., struct{int AxisNum;int Value}) + * ioctl(..., int *Argument) + * \brief Set the argument passed as the first parameter to the callback + * \note Kernel mode only + */ + JOY_IOCTL_SETCALLBACKARG, + + /** + * ioctl(..., tJoystickNumValue *) * \brief Set maximum value for sJoystick_Axis.CurState * \note If \a Value is equal to -1 (all bits set), the value is not changed */ JOY_IOCTL_GETSETAXISLIMIT, + + /** + * ioctl(..., tJoystickNumValue *) + * \brief Set the value of sJoystick_Axis.CurState + * \note If \a Value is equal to -1 (all bits set), the value is not changed + */ + JOY_IOCTL_GETSETAXISPOSITION, /** - * ioctl(..., struct{int AxisNum;int Value}) + * ioctl(..., tJoystickNumValue *) * \brief Set axis flags * \note If \a Value is equal to -1 (all bits set), the value is not changed */ JOY_IOCTL_GETSETAXISFLAGS, /** - * ioctl(..., struct{int ButtonNum;int Value}) + * ioctl(..., tJoystickNumValue *) * \brief Set Button Flags * \note If \a Value is equal to -1 (all bits set), the value is not changed */ JOY_IOCTL_GETSETBUTTONFLAGS, }; +#define DRV_JOY_IOCTLNAMES "set_callback", "set_callback_arg", "getset_axis_limit", "getset_axis_position", \ + "getset_axis_flags", "getset_button_flags" + +// === TYPES === +typedef struct sJoystick_NumValue tJoystick_NumValue; +typedef struct sJoystick_FileHeader tJoystick_FileHeader; +typedef struct sJoystick_Axis tJoystick_Axis; + +/** + * \brief Number/Value pair for joystick IOCtls + */ +struct sJoystick_NumValue +{ + int Num; //!< Axis/Button number + int Value; //!< Value (see IOCtl defs for meaning) +}; + /** * \brief Callback type for JOY_IOCTL_SETCALLBACK * \param Ident Ident value passed to JOY_IOCTL_SETCALLBACK * */ -typedef void (*tJoystickCallback)(int Ident, int bIsAxis, int Num, int Delta); +typedef void (*tJoystick_Callback)(int Ident, int bIsAxis, int Num, int Delta); /** * \struct sJoystick_FileHeader @@ -77,7 +108,7 @@ struct sJoystick_FileHeader }; /** - * \brief Axis Definition + * \brief Axis Definition in file data * * Describes the current state of an axis on the joystick. * \a MinValue and \a MaxValue describe the valid range for \a CurValue @@ -87,7 +118,7 @@ struct sJoystick_FileHeader struct sJoystick_Axis { Sint16 MinValue; //!< Minumum value for \a CurValue - Sint16 MaxValue; //!< Maximum value for \a MaxValue + Sint16 MaxValue; //!< Maximum value for \a CurValue Sint16 CurValue; //!< Current value (joystick position) Uint16 CurState; //!< Current state (cursor position) };