USB: Throttle the Buzz data packets

This commit is contained in:
Florin9doi
2025-06-21 12:02:25 +03:00
committed by Ty
parent 181ceb38cc
commit 6b9781fee6
2 changed files with 9 additions and 3 deletions

View File

@@ -154,11 +154,16 @@ namespace usb_pad
static void buzz_handle_data(USBDevice* dev, USBPacket* p)
{
BuzzState* s = USB_CONTAINER_OF(dev, BuzzState, dev);
if (p->ep->nr != 1)
{
goto fail;
}
switch (p->pid)
{
case USB_TOKEN_IN:
if (p->ep->nr == 1)
if (std::memcmp(&s->lastData, &s->data, sizeof(s->data)) != 0)
{
pxAssert(p->buffer_size >= sizeof(s->data));
@@ -166,12 +171,13 @@ namespace usb_pad
s->data.tail = 0xf;
std::memcpy(p->buffer_ptr, &s->data, sizeof(s->data));
std::memcpy(&s->lastData, &s->data, sizeof(s->data));
p->actual_length += sizeof(s->data);
}
else
{
goto fail;
p->status = USB_RET_NAK;
}
break;
case USB_TOKEN_OUT:

View File

@@ -75,7 +75,7 @@ namespace usb_pad
u8 player4_blue : 1;
u8 tail : 4;
} data = {};
} data = {}, lastData = {};
#pragma pack(pop)
};