📄 usb_main.c
字号:
case 1 : /* side b */
newpos[1] = (s8)(-1*StepSize);
newpos[2] = 1*StepSize;
break;
case 2 : /* side c */
newpos[1] = (s8)(-1*StepSize);
newpos[2] = (s8)(-1*StepSize);
break;
default : /* error */
USBApplSideIndex = 0;
break;
}
break;
case USB_Shape_Square : /* */
USBApplIndex += StepSize; // increment stepsize
if (USBApplIndex > maxlength) // check overrun
{
USBApplSideIndex++;
if (USBApplSideIndex > 3)
USBApplSideIndex = 0;
USBApplIndex = 0;
}
switch (USBApplSideIndex) {
case 0 : /* side a */
newpos[1] = 1*StepSize;
newpos[2] = 0;
break;
case 1 : /* side b */
newpos[1] = 0;
newpos[2] = 1*StepSize;
break;
case 2 : /* side c */
newpos[1] = (s8)(-1*StepSize);
newpos[2] = 0;
break;
case 3 : /* side d */
newpos[1] = 0;
newpos[2] = (s8)(-1*StepSize);
break;
default : /* error */
USBApplSideIndex = 0;
break;
}
break;
case USB_Shape_Hexagon : /* */
USBApplIndex += StepSize; // increment stepsize
if (USBApplIndex > maxlength) // check overrun
{
USBApplSideIndex++;
if (USBApplSideIndex > 5)
USBApplSideIndex = 0;
USBApplIndex = 0;
}
switch (USBApplSideIndex) {
case 0 : /* side a */
newpos[1] = 1*StepSize;
newpos[2] = 0;
break;
case 1 : /* side b */
newpos[1] = 1*StepSize;
newpos[2] = (s8)(-1*StepSize);
break;
case 2 : /* side c */
newpos[1] = (s8)(-1*StepSize);
newpos[2] = (s8)(-1*StepSize);
break;
case 3 : /* side d */
newpos[1] = (s8)(-1*StepSize);
newpos[2] = 0;
break;
case 4 : /* side e */
newpos[1] = (s8)(-1*StepSize);
newpos[2] = 1*StepSize;
break;
case 5 : /* side f */
newpos[1] = 1*StepSize;
newpos[2] = 1*StepSize;
break;
default : /* error */
USBApplSideIndex = 0;
break;
}
break;
case USB_Shape_Octagon : /* */
USBApplIndex += StepSize; // increment stepsize
if (USBApplIndex > maxlength) // check overrun
{
USBApplSideIndex++;
if (USBApplSideIndex > 7)
USBApplSideIndex = 0;
USBApplIndex = 0;
}
switch (USBApplSideIndex) {
case 0 : /* side a */
newpos[1] = 1*StepSize;
newpos[2] = 0;
break;
case 1 : /* side b */
newpos[1] = 1*StepSize;
newpos[2] = 1*StepSize;
break;
case 2 : /* side c */
newpos[1] = 0;
newpos[2] = 1*StepSize;
break;
case 3 : /* side d */
newpos[1] = (s8)(-1*StepSize);
newpos[2] = 1*StepSize;
break;
case 4 : /* side e */
newpos[1] = (s8)(-1*StepSize);
newpos[2] = 0;
break;
case 5 : /* side f */
newpos[1] = (s8)(-1*StepSize);
newpos[2] = (s8)(-1*StepSize);
break;
case 6 : /* side e */
newpos[1] = 0;
newpos[2] = (s8)(-1*StepSize);
break;
case 7 : /* side f */
newpos[1] = 1*StepSize;
newpos[2] = (s8)(-1*StepSize);
break;
default : /* error */
USBApplSideIndex = 0;
break;
}
break;
default : /* */
USB_AppConfig[1] = 0;
break;
}
/*copy new position info in ENDP1 Tx Packet Memory Area*/
UserToPMABufferCopy(newpos, GetEPTxAddr(ENDP1), 4);
/* enable endpoint for transmission */
SetEPTxValid(ENDP1);
USBApplTime = TimeTick + USB_AppConfig[0];
}
}
void CommUSB (void)
{
u8 i = 0;
u32 temp;
CommTask->CommandNew = FALSE;
//SendTask->Target = FALSE;
switch (CommTask->Command) {
case Cmd_Get_USB : /* GUI Status request of the USB enabled, Application and Enumeration */
if (USBState.enabled)
temp = (USBState.enabled+1) | (((!USB_ENUM.process_ready)+1)<<4);
else
temp = 0x11;
protocol_DWSendFrame (Rep_Info_USB, &temp,1);
break;
case Cmd_Get_VIDPID_Str : /* GUI Request of VID and PID */
protocol_RevSendFrame (Rep_Info_VIDPID_str, (u8 *)&HID_DeviceDescriptor[8],4);
break;
case Cmd_Get_Serial_Str : /* GUI Request of serial Nr string descriptor */
SendTask->DataLength = UnicodeToAscii((u8 *)HID_StringSerial,SendTask->Data);
protocol_SendFrame (Rep_Info_Serial_Str, (u8 *)&SendTask->Data,SendTask->DataLength);
break;
case Cmd_Get_Prod_Str : /* GUI Request of product string descriptor */
SendTask->DataLength = UnicodeToAscii((u8 *)HID_StringProduct,SendTask->Data);
protocol_SendFrame (Rep_Info_Prod_Str, (u8 *)&SendTask->Data,SendTask->DataLength);
break;
case Cmd_Get_Pwr_Def : /* GUI Request of Power definitions */
protocol_SendFrame (Rep_Info_Pwr_Def, (u8 *)&HID_ConfigDescriptor[7],2);
break;
case Cmd_Enable_USB : /* GUI Start/Stop the USB */
CommTask->Command = Cmd_Idle; /* none */
if (CommTask->Data[0] == TaskSwitchOn)
{
if (USBState.enabled == FALSE)
USBStart();
i = 0;
}
else
{
USBStop();
USBState.enabled = FALSE;
USB_ENUM.process_ready = FALSE;
ReEntryProcess = Dummy;
}
break;
case Cmd_Get_Version : /* GUI Request of Version descriptor */
protocol_RevSendFrame (Rep_Info_Version, (u8 *)&HID_DeviceDescriptor[12],2);
break;
case Cmd_Enable_USB_APP : /* GUI Start/Stop the USB-Application (Mouse) */
CommTask->Command = Cmd_Idle; /* none */
if (CommTask->Data[0] == TaskSwitchOn)
{
if (USB_ApplState.enabled == FALSE)
USBApplStart();
}
else
{
USBApplStop();
USB_ApplState.enabled = FALSE;
}
break;
case Cmd_Get_Poll_Intervall : /* GUI Request the polling interval */ // !!!
protocol_SendFrame (Rep_Info_Poll_Intervall,(u8 *)&HID_DeviceDescriptor[1],1);
break;
case Cmd_Get_Config_Application : /* GUI Request the applications parameter */
protocol_SendFrame (Rep_Info_Config_Application, (u8 *)USB_AppConfig,4);
break;
case Cmd_Set_Config_Application : /* GUI Set the applications parameter */
CommTask->Command = Cmd_Idle;/* Answer to status request */
USB_AppConfig[0] = CommTask->Data[0];
USB_AppConfig[1] = CommTask->Data[1];
USB_AppConfig[2] = CommTask->Data[2];
USB_AppConfig[3] = CommTask->Data[3];
break;
default : protocol_SendError (Err_NotImplemented);
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -