mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-17 13:48:32 +03:00
Renamed main folder to firmware
This commit is contained in:
210
firmware/atmel_softpack_libraries/usb/include/HIDDFunction.h
Normal file
210
firmware/atmel_softpack_libraries/usb/include/HIDDFunction.h
Normal file
@@ -0,0 +1,210 @@
|
||||
/* ----------------------------------------------------------------------------
|
||||
* ATMEL Microcontroller Software Support
|
||||
* ----------------------------------------------------------------------------
|
||||
* Copyright (c) 2010, Atmel Corporation
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the disclaimer below.
|
||||
*
|
||||
* Atmel's name may not be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
|
||||
* ----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/**\file
|
||||
*
|
||||
* Definitions used for general HID support.
|
||||
*
|
||||
* The HID Function supports following:
|
||||
* - 1 interface with 1 pipe in and 1 pipe out;
|
||||
* - An input report list;
|
||||
* - An output report list;
|
||||
* - handles requests:
|
||||
* - handles: GET_IDLE/SET_IDLE,
|
||||
* GET_REPORT/SET_REPORT,
|
||||
* SET_PROTOCOL/GET_PROTOCOL;
|
||||
* - stall : SET_DESCRIPTOR.
|
||||
*/
|
||||
|
||||
#ifndef _HIDDFUNCTION_H_
|
||||
#define _HIDDFUNCTION_H_
|
||||
/** \addtogroup usbd_hid
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
* Includes
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <HIDRequests.h>
|
||||
#include <HIDDescriptors.h>
|
||||
|
||||
#include <USBD.h>
|
||||
#include <USBDDriver.h>
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
* Definitions
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
/** \addtogroup usbd_hid_events HIDD Event codes
|
||||
* @{
|
||||
*/
|
||||
/** Report sent */
|
||||
#define HIDD_EC_REPORTSENT 1
|
||||
/** Report changed */
|
||||
#define HIDD_EC_REPORTCHANGED 2
|
||||
/** Report sent because of GET_REPORT Request */
|
||||
#define HIDD_EC_GETREPORT 3
|
||||
/** Report changed because of SET_REPORT Request */
|
||||
#define HIDD_EC_SETREPORT 4
|
||||
/** @}*/
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
* Types
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* Callback function for HID report events.
|
||||
*/
|
||||
typedef void(*HIDDReportEventCallback)(uint32_t ec, void *pArg);
|
||||
|
||||
/**
|
||||
* Struct for a header of basic HID report descriptor.
|
||||
*/
|
||||
typedef struct _HIDDReportHeader {
|
||||
/** Callback when report done */
|
||||
HIDDReportEventCallback fCallback;
|
||||
/** Callback arguments */
|
||||
void* pArg;
|
||||
|
||||
/** Report size (ID + DATA) */
|
||||
uint16_t wMaxSize;
|
||||
/** Transfered size */
|
||||
uint16_t wTransferred;
|
||||
/** Report idle rate */
|
||||
uint8_t bIdleRate;
|
||||
/** Delay count for Idle */
|
||||
uint8_t bDelay;
|
||||
/** Report ID */
|
||||
uint8_t bID;
|
||||
} HIDDReportHeader;
|
||||
|
||||
/**
|
||||
* Struct for an basic HID report descriptor.
|
||||
*/
|
||||
typedef struct _HIDDReport {
|
||||
/** Callback when report done */
|
||||
HIDDReportEventCallback fCallback;
|
||||
/** Callback arguments */
|
||||
void* pArg;
|
||||
|
||||
/** Report size (ID + DATA) */
|
||||
uint16_t wMaxSize;
|
||||
/** Transfered size */
|
||||
uint16_t wTransferred;
|
||||
/** Report idle rate */
|
||||
uint8_t bIdleRate;
|
||||
/** Delay count for Idle */
|
||||
uint8_t bDelay;
|
||||
/** Report ID */
|
||||
uint8_t bID;
|
||||
/** Report data block start ... */
|
||||
uint8_t bData[1];
|
||||
} HIDDReport;
|
||||
|
||||
/**
|
||||
* Struct for an HID general function.
|
||||
* Supports Input/Output reports. No feature report support.
|
||||
*/
|
||||
typedef struct _HIDDFunction {
|
||||
/** USB Driver for the %device */
|
||||
USBDDriver *pUsbd;
|
||||
/** HID descriptor */
|
||||
HIDDescriptor *pHidDescriptor;
|
||||
/** HID Specific report descriptor */
|
||||
uint8_t *pReportDescriptor;
|
||||
/** USB interface for HID function */
|
||||
uint8_t bInterface;
|
||||
/** USB interrupt IN EP */
|
||||
uint8_t bPipeIN;
|
||||
/** USB interrupt OUT EP */
|
||||
uint8_t bPipeOUT;
|
||||
|
||||
/** HID Protocol */
|
||||
uint8_t bProtocol;
|
||||
|
||||
/** HID Input reports list */
|
||||
HIDDReport **pInputList;
|
||||
/** HID Output reports list */
|
||||
HIDDReport **pOutputList;
|
||||
/** HID Input report list size */
|
||||
uint8_t bInputListSize;
|
||||
/** Current input report */
|
||||
uint8_t bCurrInput;
|
||||
/** HID Output reports list */
|
||||
uint8_t bOutputListSize;
|
||||
/** Current output report */
|
||||
uint8_t bCurrOutput;
|
||||
} HIDDFunction;
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
* Functions
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
extern void HIDDFunction_Initialize(
|
||||
HIDDFunction * pHidd,
|
||||
USBDDriver * pUsbd, uint8_t bInterfaceNb,
|
||||
const uint8_t * pReportDescriptor,
|
||||
HIDDReport * pInputList [ ], uint8_t bInputListSize,
|
||||
HIDDReport * pOutputList [ ], uint8_t bOutputListSize);
|
||||
|
||||
extern USBGenericDescriptor* HIDDFunction_ParseInterface(
|
||||
HIDDFunction * pHidd,
|
||||
USBGenericDescriptor * pDescriptors,
|
||||
uint32_t dwLength);
|
||||
|
||||
extern uint32_t HIDDFunction_RequestHandler(
|
||||
HIDDFunction * pHidd,
|
||||
const USBGenericRequest * request);
|
||||
|
||||
extern uint32_t HIDDFunction_StartSendingInputs(HIDDFunction * pHidd);
|
||||
|
||||
extern uint32_t HIDDFunction_StartPollingOutputs(HIDDFunction * pHidd);
|
||||
|
||||
extern uint32_t HIDDFunction_Read(
|
||||
const HIDDFunction * pHidd,
|
||||
void * pData, uint32_t dwLength,
|
||||
TransferCallback fCallback, void * pArg);
|
||||
|
||||
extern uint32_t HIDDFunction_Write(
|
||||
const HIDDFunction * pHidd,
|
||||
void * pData, uint32_t dwLength,
|
||||
TransferCallback fCallback, void * pArg);
|
||||
|
||||
extern void HIDDFunction_InitializeReport(
|
||||
HIDDReport * pReport,
|
||||
uint16_t wSize,
|
||||
uint8_t bID,
|
||||
HIDDReportEventCallback fCallback, void* pArg);
|
||||
|
||||
/**@}*/
|
||||
#endif /* #define _HIDDFUNCTION_H_ */
|
||||
|
||||
Reference in New Issue
Block a user