forked from PAWPAW-Mirror/lib_xua
Set_Idle request handled (incomplete reports sent instead of NAK)
This commit is contained in:
@@ -60,6 +60,10 @@
|
||||
extern void device_reboot(void);
|
||||
#endif
|
||||
|
||||
#if HID_CONTROLS
|
||||
#include "xua_hid.h"
|
||||
#endif
|
||||
|
||||
unsigned int DFU_mode_active = 0; // 0 - App active, 1 - DFU active
|
||||
|
||||
/* Global volume and mute tables */
|
||||
@@ -321,7 +325,6 @@ void XUA_Endpoint0_lite_init(chanend c_ep0_out, chanend c_ep0_in, chanend c_audi
|
||||
DFU_mode_active = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void XUA_Endpoint0_loop(XUD_Result_t result, USB_SetupPacket_t sp, chanend c_ep0_out, chanend c_ep0_in, chanend c_audioControl,
|
||||
@@ -989,12 +992,19 @@ void XUA_Endpoint0_lite_loop(XUD_Result_t result, USB_SetupPacket_t sp, chanend
|
||||
device_reboot();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if HID_CONTROLS
|
||||
if (interfaceNum == INTERFACE_NUMBER_HID)
|
||||
{
|
||||
result = HidInterfaceClassRequests(ep0_out, ep0_in, &sp);
|
||||
}
|
||||
#endif
|
||||
/* Check for: - Audio CONTROL interface request - always 0, note we check for DFU first
|
||||
* - Audio STREAMING interface request (In or Out)
|
||||
* - Audio endpoint request (Audio 1.0 Sampling freq requests are sent to the endpoint)
|
||||
*/
|
||||
if(((interfaceNum == 0) || (interfaceNum == 1) || (interfaceNum == 2))
|
||||
&& result == XUD_RES_ERR
|
||||
#if (XUA_DFU_EN == 1)
|
||||
&& !DFU_mode_active
|
||||
#endif
|
||||
|
||||
26
lib_xua/src/hid/hid.xc
Normal file
26
lib_xua/src/hid/hid.xc
Normal file
@@ -0,0 +1,26 @@
|
||||
#include <xs1.h>
|
||||
#include "xud.h"
|
||||
#include "hid.h"
|
||||
#include "xud_std_requests.h"
|
||||
#include "xua_hid.h"
|
||||
|
||||
static unsigned hidSetIdle = 0;
|
||||
|
||||
unsigned HidIsSetIdleSilenced(void)
|
||||
{
|
||||
return hidSetIdle;
|
||||
}
|
||||
|
||||
XUD_Result_t HidInterfaceClassRequests(XUD_ep c_ep0_out, XUD_ep c_ep0_in,
|
||||
USB_SetupPacket_t &sp)
|
||||
{
|
||||
switch (sp.bRequest) {
|
||||
case HID_SET_IDLE:
|
||||
printstrln("HID_SET_IDLE\n");
|
||||
hidSetIdle = 1; // TODO implement duration
|
||||
return XUD_DoSetRequestStatus(c_ep0_in);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return XUD_RES_ERR;
|
||||
}
|
||||
9
lib_xua/src/hid/xua_hid.h
Normal file
9
lib_xua/src/hid/xua_hid.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#include <xs1.h>
|
||||
#include <xccompat.h>
|
||||
#include "xud.h"
|
||||
#include "xud_std_requests.h"
|
||||
|
||||
XUD_Result_t HidInterfaceClassRequests(XUD_ep c_ep0_out, XUD_ep c_ep0_in,
|
||||
REFERENCE_PARAM(USB_SetupPacket_t, sp));
|
||||
|
||||
unsigned HidIsSetIdleSilenced(void);
|
||||
Reference in New Issue
Block a user