123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- #include "USBDeviceMode.h"
- static uint8_t RNDIS_Message_Buffer[192];
- USB_ClassInfo_RNDIS_Device_t Ethernet_RNDIS_Interface_Device =
- {
- .Config =
- {
- .ControlInterfaceNumber = INTERFACE_ID_CDC_CCI,
- .DataINEndpoint =
- {
- .Address = CDC_TX_EPADDR,
- .Size = CDC_TXRX_EPSIZE,
- .Banks = 1,
- },
- .DataOUTEndpoint =
- {
- .Address = CDC_RX_EPADDR,
- .Size = CDC_TXRX_EPSIZE,
- .Banks = 1,
- },
- .NotificationEndpoint =
- {
- .Address = CDC_NOTIFICATION_EPADDR,
- .Size = CDC_NOTIFICATION_EPSIZE,
- .Banks = 1,
- },
- .AdapterVendorDescription = "LUFA RNDIS Adapter",
- .AdapterMACAddress = {{0x02, 0x00, 0x02, 0x00, 0x02, 0x00}},
- .MessageBuffer = RNDIS_Message_Buffer,
- .MessageBufferLength = sizeof(RNDIS_Message_Buffer),
- },
- };
- USB_ClassInfo_MS_Device_t Disk_MS_Interface =
- {
- .Config =
- {
- .InterfaceNumber = INTERFACE_ID_MassStorage,
- .DataINEndpoint =
- {
- .Address = MASS_STORAGE_IN_EPADDR,
- .Size = MASS_STORAGE_IO_EPSIZE,
- .Banks = 1,
- },
- .DataOUTEndpoint =
- {
- .Address = MASS_STORAGE_OUT_EPADDR,
- .Size = MASS_STORAGE_IO_EPSIZE,
- .Banks = 1,
- },
- .TotalLUNs = 1,
- },
- };
- void USBDeviceMode_USBTask(void)
- {
- if (USB_CurrentMode != USB_MODE_Device)
- return;
- uIPManagement_ManageNetwork();
- RNDIS_Device_USBTask(&Ethernet_RNDIS_Interface_Device);
- MS_Device_USBTask(&Disk_MS_Interface);
- }
- void EVENT_USB_Device_Connect(void)
- {
- LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
- uIPManagement_Init();
- }
- void EVENT_USB_Device_Disconnect(void)
- {
- LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
- }
- void EVENT_USB_Device_ConfigurationChanged(void)
- {
- bool ConfigSuccess = true;
- ConfigSuccess &= RNDIS_Device_ConfigureEndpoints(&Ethernet_RNDIS_Interface_Device);
- ConfigSuccess &= MS_Device_ConfigureEndpoints(&Disk_MS_Interface);
- LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
- }
- void EVENT_USB_Device_ControlRequest(void)
- {
- RNDIS_Device_ProcessControlRequest(&Ethernet_RNDIS_Interface_Device);
- MS_Device_ProcessControlRequest(&Disk_MS_Interface);
- }
- bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo)
- {
- bool CommandSuccess;
- LEDs_SetAllLEDs(LEDMASK_USB_BUSY);
- CommandSuccess = SCSI_DecodeSCSICommand(MSInterfaceInfo);
- LEDs_SetAllLEDs(LEDMASK_USB_READY);
- return CommandSuccess;
- }
|