From 828c03b6d4df6111d80398bf41985ad0d797dab6 Mon Sep 17 00:00:00 2001 From: DAProgs Date: Wed, 14 Jan 2026 14:15:37 -0500 Subject: [PATCH] Delete libraries/ArduinoJoystickLibrary/src/DynamicHID.cpp --- .../ArduinoJoystickLibrary/src/DynamicHID.cpp | 169 ------------------ 1 file changed, 169 deletions(-) delete mode 100644 libraries/ArduinoJoystickLibrary/src/DynamicHID.cpp diff --git a/libraries/ArduinoJoystickLibrary/src/DynamicHID.cpp b/libraries/ArduinoJoystickLibrary/src/DynamicHID.cpp deleted file mode 100644 index 6c46a2c..0000000 --- a/libraries/ArduinoJoystickLibrary/src/DynamicHID.cpp +++ /dev/null @@ -1,169 +0,0 @@ -/* - Modified by Matthew Heironimus to support HID Report Descriptors to be in - standard RAM in addition to program memory (PROGMEM). - - Copyright (c) 2015, Arduino LLC - Original code (pre-library): Copyright (c) 2011, Peter Barrett - - Permission to use, copy, modify, and/or distribute this software for - any purpose with or without fee is hereby granted, provided that the - above copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR - BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES - OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, - ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - SOFTWARE. - */ - -#include "DynamicHID.h" - -#if defined(USBCON) - -#ifdef _VARIANT_ARDUINO_DUE_X_ -#define USB_SendControl USBD_SendControl -#define USB_Send USBD_Send -#endif - -DynamicHID_& DynamicHID() -{ - static DynamicHID_ obj; - return obj; -} - -int DynamicHID_::getInterface(uint8_t* interfaceCount) -{ - *interfaceCount += 1; // uses 1 - DYNAMIC_HIDDescriptor hidInterface = { - D_INTERFACE(pluggedInterface, 1, USB_DEVICE_CLASS_HUMAN_INTERFACE, DYNAMIC_HID_SUBCLASS_NONE, DYNAMIC_HID_PROTOCOL_NONE), - D_HIDREPORT(descriptorSize), - D_ENDPOINT(USB_ENDPOINT_IN(pluggedEndpoint), USB_ENDPOINT_TYPE_INTERRUPT, USB_EP_SIZE, 0x01) - }; - return USB_SendControl(0, &hidInterface, sizeof(hidInterface)); -} - -int DynamicHID_::getDescriptor(USBSetup& setup) -{ - // Check if this is a HID Class Descriptor request - if (setup.bmRequestType != REQUEST_DEVICETOHOST_STANDARD_INTERFACE) { return 0; } - if (setup.wValueH != DYNAMIC_HID_REPORT_DESCRIPTOR_TYPE) { return 0; } - - // In a HID Class Descriptor wIndex cointains the interface number - if (setup.wIndex != pluggedInterface) { return 0; } - - int total = 0; - DynamicHIDSubDescriptor* node; - for (node = rootNode; node; node = node->next) { - int res = USB_SendControl((node->inProgMem ? TRANSFER_PGM : 0), node->data, node->length); - if (res == -1) - return -1; - total += res; - } - - // Reset the protocol on reenumeration. Normally the host should not assume the state of the protocol - // due to the USB specs, but Windows and Linux just assumes its in report mode. - protocol = DYNAMIC_HID_REPORT_PROTOCOL; - - return total; -} - -uint8_t DynamicHID_::getShortName(char *name) -{ - name[0] = 'H'; - name[1] = 'I'; - name[2] = 'D'; - name[3] = 'A' + (descriptorSize & 0x0F); - name[4] = 'A' + ((descriptorSize >> 4) & 0x0F); - return 5; -} - -void DynamicHID_::AppendDescriptor(DynamicHIDSubDescriptor *node) -{ - if (!rootNode) { - rootNode = node; - } else { - DynamicHIDSubDescriptor *current = rootNode; - while (current->next) { - current = current->next; - } - current->next = node; - } - descriptorSize += node->length; -} - -int DynamicHID_::SendReport(uint8_t id, const void* data, int len) -{ - uint8_t p[len + 1]; - p[0] = id; - memcpy(&p[1], data, len); - return USB_Send(pluggedEndpoint | TRANSFER_RELEASE, p, len + 1); -} - -bool DynamicHID_::setup(USBSetup& setup) -{ - if (pluggedInterface != setup.wIndex) { - return false; - } - - uint8_t request = setup.bRequest; - uint8_t requestType = setup.bmRequestType; - - if (requestType == REQUEST_DEVICETOHOST_CLASS_INTERFACE) - { - if (request == DYNAMIC_HID_GET_REPORT) { - // TODO: DYNAMIC_HID_GetReport(); - return true; - } - if (request == DYNAMIC_HID_GET_PROTOCOL) { - // TODO: Send8(protocol); - return true; - } - if (request == DYNAMIC_HID_GET_IDLE) { - // TODO: Send8(idle); - } - } - - if (requestType == REQUEST_HOSTTODEVICE_CLASS_INTERFACE) - { - if (request == DYNAMIC_HID_SET_PROTOCOL) { - // The USB Host tells us if we are in boot or report mode. - // This only works with a real boot compatible device. - protocol = setup.wValueL; - return true; - } - if (request == DYNAMIC_HID_SET_IDLE) { - idle = setup.wValueL; - return true; - } - if (request == DYNAMIC_HID_SET_REPORT) - { - //uint8_t reportID = setup.wValueL; - //uint16_t length = setup.wLength; - //uint8_t data[length]; - // Make sure to not read more data than USB_EP_SIZE. - // You can read multiple times through a loop. - // The first byte (may!) contain the reportID on a multreport. - //USB_RecvControl(data, length); - } - } - - return false; -} - -DynamicHID_::DynamicHID_(void) : PluggableUSBModule(1, 1, epType), - rootNode(NULL), descriptorSize(0), - protocol(DYNAMIC_HID_REPORT_PROTOCOL), idle(1) -{ - epType[0] = EP_TYPE_INTERRUPT_IN; - PluggableUSB().plug(this); -} - -int DynamicHID_::begin(void) -{ - return 0; -} - -#endif /* if defined(USBCON) */