projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Removed interrupt disable/enable from the Device mode control request processing...
[pub/USBasp.git]
/
LUFA
/
Drivers
/
USB
/
Class
/
Device
/
HID.c
diff --git
a/LUFA/Drivers/USB/Class/Device/HID.c
b/LUFA/Drivers/USB/Class/Device/HID.c
index
bfe97ff
..
fbb45ac
100644
(file)
--- a/
LUFA/Drivers/USB/Class/Device/HID.c
+++ b/
LUFA/Drivers/USB/Class/Device/HID.c
@@
-51,15
+51,15
@@
void HID_Device_ProcessControlPacket(USB_ClassInfo_HID_Device_t* const HIDInterf
{
\r
Endpoint_ClearSETUP();
\r
\r
{
\r
Endpoint_ClearSETUP();
\r
\r
- uint8_t ReportINData[HID_MAX_REPORT_SIZE];
\r
uint16_t ReportINSize;
\r
uint8_t ReportID = (USB_ControlRequest.wValue & 0xFF);
\r
\r
uint16_t ReportINSize;
\r
uint8_t ReportID = (USB_ControlRequest.wValue & 0xFF);
\r
\r
- memset(
ReportINData, 0, sizeof(ReportINData)
);
\r
+ memset(
HIDInterfaceInfo->Config.PrevReportINBuffer, 0, HIDInterfaceInfo->Config.PrevReportINBufferSize
);
\r
\r
\r
- ReportINSize = CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, ReportINData);
\r
+ CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID,
\r
+ HIDInterfaceInfo->Config.PrevReportINBuffer, &ReportINSize);
\r
\r
\r
- Endpoint_Write_Control_Stream_LE(
ReportINData
, ReportINSize);
\r
+ Endpoint_Write_Control_Stream_LE(
HIDInterfaceInfo->Config.PrevReportINBuffer
, ReportINSize);
\r
Endpoint_ClearOUT();
\r
}
\r
\r
Endpoint_ClearOUT();
\r
}
\r
\r
@@
-157,20
+157,20
@@
void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
\r
if (Endpoint_IsReadWriteAllowed())
\r
{
\r
\r
if (Endpoint_IsReadWriteAllowed())
\r
{
\r
- uint8_t ReportINData[HID
_MAX_REPORT_SIZE
];
\r
+ uint8_t ReportINData[HID
InterfaceInfo->Config.PrevReportINBufferSize
];
\r
uint8_t ReportID = 0;
\r
uint16_t ReportINSize;
\r
\r
memset(ReportINData, 0, sizeof(ReportINData));
\r
\r
uint8_t ReportID = 0;
\r
uint16_t ReportINSize;
\r
\r
memset(ReportINData, 0, sizeof(ReportINData));
\r
\r
-
ReportINSize = CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, ReportINData
);
\r
+
bool ForceSend = CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, ReportINData, &ReportINSize
);
\r
\r
\r
- bool StatesChanged = (memcmp(ReportINData, HIDInterfaceInfo->
State.PreviousReportINData
, ReportINSize) != 0);
\r
+ bool StatesChanged = (memcmp(ReportINData, HIDInterfaceInfo->
Config.PrevReportINBuffer
, ReportINSize) != 0);
\r
bool IdlePeriodElapsed = (HIDInterfaceInfo->State.IdleCount && !(HIDInterfaceInfo->State.IdleMSRemaining));
\r
\r
bool IdlePeriodElapsed = (HIDInterfaceInfo->State.IdleCount && !(HIDInterfaceInfo->State.IdleMSRemaining));
\r
\r
- memcpy(HIDInterfaceInfo->
State.PreviousReportINData
, ReportINData, ReportINSize);
\r
+ memcpy(HIDInterfaceInfo->
Config.PrevReportINBuffer
, ReportINData, ReportINSize);
\r
\r
\r
- if (ReportINSize && (StatesChanged || IdlePeriodElapsed))
\r
+ if (ReportINSize && (
ForceSend ||
StatesChanged || IdlePeriodElapsed))
\r
{
\r
HIDInterfaceInfo->State.IdleMSRemaining = HIDInterfaceInfo->State.IdleCount;
\r
\r
{
\r
HIDInterfaceInfo->State.IdleMSRemaining = HIDInterfaceInfo->State.IdleCount;
\r
\r
@@
-184,4
+184,10
@@
void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
}
\r
}
\r
\r
}
\r
}
\r
\r
+void HID_Device_MillisecondElapsed(USB_ClassInfo_HID_Device_t* HIDInterfaceInfo)
\r
+{
\r
+ if (HIDInterfaceInfo->State.IdleMSRemaining)
\r
+ HIDInterfaceInfo->State.IdleMSRemaining--;
\r
+}
\r
+
\r
#endif
\r
#endif
\r