Merge pull request #114 from mbanth/feature/hid_new_interface

Feature/hid new interface
This commit is contained in:
Michael Banther
2020-01-16 15:24:18 +00:00
committed by GitHub
4 changed files with 44 additions and 9 deletions

View File

@@ -15,6 +15,8 @@ lib_xua Change Log
Volume Decrement
* CHANGE: UAC1 HID to report function keys f21 through f24 as specified by
customer
* CHANGE: HID interface for user to set and clear events from global
variable to function
0.2.1
-----

View File

@@ -1,6 +1,6 @@
Software Release License Agreement
Copyright (c) 2017-2019, XMOS, All rights reserved.
Copyright (c) 2017-2020, XMOS, All rights reserved.
BY ACCESSING, USING, INSTALLING OR DOWNLOADING THE XMOS SOFTWARE, YOU AGREE TO BE BOUND BY THE FOLLOWING TERMS. IF YOU DO NOT AGREE TO THESE, DO NOT ATTEMPT TO DOWNLOAD, ACCESS OR USE THE XMOS Software.

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2011-2019, XMOS Ltd, All rights reserved
// Copyright (c) 2011-2020, XMOS Ltd, All rights reserved
#include "xua.h"
#if XUA_USB_EN
#include <xs1.h>
@@ -21,7 +21,7 @@
#if( 0 < HID_CONTROLS )
#include "user_hid.h"
unsigned char g_hidData[1] = {0};
unsigned char g_hidData[HID_DATA_BYTES] = {0};
#endif
void GetADCCounts(unsigned samFreq, int &min, int &mid, int &max);
@@ -880,7 +880,7 @@ void XUA_Buffer_Ep(register chanend c_aud_out,
case XUD_SetData_Select(c_hid, ep_hid, result):
{
g_hidData[0]=0;
g_hidData[0]=UserHIDGetData();
UserHIDGetData(g_hidData);
XUD_SetReady_In(ep_hid, g_hidData, 1);
}
break;

View File

@@ -1,9 +1,15 @@
// Copyright (c) 2013-2019, XMOS Ltd, All rights reserved
// Copyright (c) 2013-2020, XMOS Ltd, All rights reserved
#ifndef __USER_HID_H__
#define __USER_HID_H__
/* These enumerated constants relate to the HID report desc - do not mod */
/**
* \brief HID event identifiers
*
* This enumeration defines a constant value for each HID event.
* It defines one value for each of the four GPI pins supported in the standard voice products.
* It defines a further 28 values for generic events.
*/
typedef enum hidEventId_t {
HID_EVENT_ID_GPI0 = 0,
HID_EVENT_ID_GPI1,
@@ -39,13 +45,40 @@ typedef enum hidEventId_t {
HID_EVENT_ID_EVT27
} hidEventId_t;
#define HID_DATA_SIZE 1
#define HID_DATA_BYTES 4
#if( 0 < HID_CONTROLS )
unsigned UserHIDGetData( void );
/**
* \brief Get the data for the next HID report
*
* \note This function returns the HID data as a list of unsigned char because the
* \c XUD_SetReady_In() accepts data for transmission to the USB Host using
* this type.
*
* \param{out} hidData The HID data
*/
void UserHIDGetData( unsigned char hidData[ HID_DATA_BYTES ]);
/**
* \brief Initialize HID processing
*/
void UserHIDInit( void );
void UserHIDRegisterEvent( const hidEventId_t hidEventId, const int * hidEventData, const unsigned hidEventDataSize );
/**
* \brief Record that a HID event has occurred
*
* \param{in} hidEventId The identifier of an event which has occurred
* \param{in} hidEventData A list of data associated with the event
* \param{in} hidEventDataSize The length of the event data list
*
* \note At present, this function only takes a single element of event data, i.e.
* hidEventDataSize must equal 1.
*
* \note At present, this function treats the event data as a Boolean flag.
* Zero means False; all other values mean True.
*/
void UserHIDRecordEvent( const hidEventId_t hidEventId, const int * hidEventData, const unsigned hidEventDataSize );
#endif /* ( 0 < HID_CONTROLS ) */
#endif /* __USER_HID_H__ */