espressif_tinyusb/tinyusb/class/hid.h

173 lines
4.5 KiB
C
Raw Normal View History

2012-11-28 05:53:23 +01:00
/*
* hid.h
*
* Created on: Nov 27, 2012
* Author: hathach
2012-11-28 05:53:23 +01:00
*/
/*
* Software License Agreement (BSD License)
* Copyright (c) 2012, hathach (tinyusb.net)
2012-11-28 05:53:23 +01:00
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
* This file is part of the tinyUSB stack.
2012-11-28 05:53:23 +01:00
*/
2012-11-29 10:58:12 +01:00
/** \file
* \brief HID Class Driver
*
* \note TBD
*/
/**
2012-11-29 10:58:12 +01:00
* \addtogroup Group_ClassDriver Class Driver
* @{
* \defgroup Group_HID Human Interface Device
* @{
*/
2012-11-28 05:53:23 +01:00
#ifndef _TUSB_HID_H_
#define _TUSB_HID_H_
2012-12-04 08:12:48 +01:00
#ifdef __cplusplus
extern "C" {
#endif
2012-11-28 05:53:23 +01:00
// TODO refractor
#include "common/common.h"
2012-12-20 10:56:19 +01:00
2012-11-29 10:58:12 +01:00
/** \struct USB_HID_MouseReport_t
* \brief Standard HID Boot Protocol Mouse Report.
2012-11-28 05:53:23 +01:00
*
* Type define for a standard Boot Protocol Mouse report
*/
2012-12-04 08:12:48 +01:00
typedef ATTR_PREPACKED struct
2012-11-28 05:53:23 +01:00
{
uint8_t Button; /**< Button mask for currently pressed buttons in the mouse. */
int8_t X; /**< Current delta X movement of the mouse. */
int8_t Y; /**< Current delta Y movement on the mouse. */
2012-12-04 08:12:48 +01:00
} ATTR_PACKED USB_HID_MouseReport_t;
2012-11-28 05:53:23 +01:00
/** \struct tusb_keyboard_report_t
2012-11-29 10:58:12 +01:00
* \brief Standard HID Boot Protocol Keyboard Report.
2012-11-28 05:53:23 +01:00
*
* Type define for a standard Boot Protocol Keyboard report
*/
2012-12-04 08:12:48 +01:00
typedef ATTR_PREPACKED struct
2012-11-28 05:53:23 +01:00
{
uint8_t Modifier; /**< Keyboard modifier byte, indicating pressed modifier keys (a combination of HID_KEYBOARD_MODIFER_* masks). */
uint8_t Reserved; /**< Reserved for OEM use, always set to 0. */
uint8_t KeyCode[6]; /**< Key codes of the currently pressed keys. */
} ATTR_PACKED tusb_keyboard_report_t;
2012-11-28 05:53:23 +01:00
2012-11-29 10:58:12 +01:00
/** \enum USB_HID_MOUSE_BUTTON_CODE
* \brief Button codes for HID mouse
*/
2012-11-28 05:53:23 +01:00
enum USB_HID_MOUSE_BUTTON_CODE
{
HID_MOUSEBUTTON_RIGHT = 0,
HID_MOUSEBUTTON_LEFT = 1,
HID_MOUSEBUTTON_MIDDLE = 2
};
2012-11-29 10:58:12 +01:00
/** \enum USB_HID_KB_KEYMODIFIER_CODE
* \brief KB modifier codes for HID KB
*/
2012-11-28 05:53:23 +01:00
enum USB_HID_KB_KEYMODIFIER_CODE
{
HID_KEYMODIFIER_LEFTCTRL = 0,
HID_KEYMODIFIER_LEFTSHIFT,
HID_KEYMODIFIER_LEFTALT,
HID_KEYMODIFIER_LEFTGUI,
HID_KEYMODIFIER_RIGHTCTRL,
HID_KEYMODIFIER_RIGHTSHIFT,
HID_KEYMODIFIER_RIGHTALT,
HID_KEYMODIFIER_RIGHTGUI
};
2012-11-29 10:58:12 +01:00
/** \enum USB_HID_LOCAL_CODE
* \brief Local Country code for HID
*/
2012-11-28 05:53:23 +01:00
enum USB_HID_LOCAL_CODE
{
HID_Local_NotSupported = 0,
HID_Local_Arabic,
HID_Local_Belgian,
HID_Local_Canadian_Bilingual,
HID_Local_Canadian_French,
HID_Local_Czech_Republic,
HID_Local_Danish,
HID_Local_Finnish,
HID_Local_French,
HID_Local_German,
HID_Local_Greek,
HID_Local_Hebrew,
HID_Local_Hungary,
HID_Local_International,
HID_Local_Italian,
HID_Local_Japan_Katakana,
HID_Local_Korean,
HID_Local_Latin_American,
HID_Local_Netherlands_Dutch,
HID_Local_Norwegian,
HID_Local_Persian_Farsi,
HID_Local_Poland,
HID_Local_Portuguese,
HID_Local_Russia,
HID_Local_Slovakia,
HID_Local_Spanish,
HID_Local_Swedish,
HID_Local_Swiss_French,
HID_Local_Swiss_German,
HID_Local_Switzerland,
HID_Local_Taiwan,
HID_Local_Turkish_Q,
HID_Local_UK,
HID_Local_US,
HID_Local_Yugoslavia,
HID_Local_Turkish_F
};
#ifdef TUSB_CFG_DEVICE
#include "device/dcd.h"
#include "hid_device.h"
2012-12-04 08:12:48 +01:00
#endif
2012-11-29 10:32:49 +01:00
2012-12-20 10:56:19 +01:00
#ifdef TUSB_CFG_HOST
#include "host/hcd.h"
#include "hid_host.h"
2012-12-20 10:56:19 +01:00
#endif
2012-11-28 05:53:23 +01:00
#ifdef __cplusplus
}
#endif
#endif /* _TUSB_HID_H__ */
2012-11-29 10:58:12 +01:00
/// @}
/// @}