USB джойстик с уклоном в файтинги на RP2040

у меня другого не было 1988-89 год однако

это да, приятель привёз Танграф, я ему РМ немного автоматизировал, на 286 диски начинались с 40

в EC1841 диски были на 20, как сейчас помню за экспортную цацу ВАЗ-2106 (кто видел это произведение искуcтва) мы отдали 1800= а за пару EC1841 50000=

В этом лэптопе стоял 3.5" диск. А 5 Мб я, честно говоря, видел только 5".
Ну а 5" в лэптоп - это уже перебор.

Я глюк вроде нащупал…

А можно ли дебаг вынести с USB на аппаратный 232?

у RP2040 насильно к любому юсб устройству вешается виртуальный ком порт.
Автор библы джойстика прописал размер

#define TOTAL_DESCRIPTOR_LENGTH ((1 * CONFIGURATION_DESCRIPTOR_LENGTH) + (1 * INTERFACE_DESCRIPTOR_LENGTH) + (1 * HID_DESCRIPTOR_LENGTH) + (2 * ENDPOINT_DESCRIPTOR_LENGTH))

прописал верно

//CONFIGURATION_DESCRIPTOR_LENGTH = 9
//INTERFACE_DESCRIPTOR_LENGTH = 9
//HID_DESCRIPTOR_LENGTH = 9
//ENDPOINT_DESCRIPTOR_LENGTH = 7*2=14
//=41 а в юсб прет
//TOTAL_DESCRIPTOR_LENGTH = 0x6B = 107

т.е. оно насильно подменяет первые 9 байт прописываемых функцией configuration_desc(uint8_t index)

на свои, со своим размером (добавляет к моему дескриптору свой кусок) как итог добавляет подгрузку в конце описание описываемого устройства еще и CDC для полного счастья.

Идея - он же это по флагу делает
флаг звать #define SERIAL_CDC 1
флаг лежит в файле
AppData\Local\Arduino15\packages\arduino\hardware\mbed_rp2040\4.0.2\variants\RASPBERRY_PI_PICO\pins_arduino.h

Но отключение флага приводит к отказу сборки …

Я пока не смог это “Выключить”, подменами занимается нижеследующий кусок кода… Вот зачем было ТАКОЕ писать?

const uint8_t *arduino::PluggableUSBDevice::configuration_desc(uint8_t index)
{
   #define TOTAL_DESCRIPTOR_LENGTH 0xFFFF
   // Create a huge configuration descriptor using all the pluggable ones
   // jump the first 9 bytes (config descriptor) for each "module" and recompose it later
   uint8_t configuration_descriptor_temp[] = {
       CONFIGURATION_DESCRIPTOR_LENGTH,    // bLength
       CONFIGURATION_DESCRIPTOR,           // bDescriptorType
       LSB(TOTAL_DESCRIPTOR_LENGTH),       // wTotalLength (LSB)
       MSB(TOTAL_DESCRIPTOR_LENGTH),       // wTotalLength (MSB)
       lastIf,                             // bNumInterfaces
       0x01,                               // bConfigurationValue
       0x00,                               // iConfiguration
       C_RESERVED | C_SELF_POWERED,        // bmAttributes
       C_POWER(USB_MAX_POWER),             // bMaxPower
   };
   memcpy(_config_descriptor, configuration_descriptor_temp, sizeof(configuration_descriptor_temp));
   int size = sizeof(configuration_descriptor_temp);
   arduino::internal::PluggableUSBModule* node;
   for (node = rootNode; node; node = node->next) {
       uint8_t* desc = (uint8_t*)node->configuration_desc(0);
       int len = (desc[3] << 8 | desc[2]) - 9;
       memcpy(&_config_descriptor[size], &desc[9], len);
       size += len;
   }
   _config_descriptor[2] = (size & 0xFF);
   _config_descriptor[3] = (size & 0xFF00) >> 8;
   return _config_descriptor;
}