⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fw2hid.lst

📁 基于sy2100 ez-usb开发板的程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 174   3      						IN0BUF[0] = 0;
 175   3      						IN0BUF[1] = 0;
 176   3      						EZUSB_SET_EP_BYTES(IN0BUF_ID,2);
 177   3      					break;
 178   3      					case GS_ENDPOINT:			// End Point
C51 COMPILER V6.10  FW2HID                                                                 07/11/2005 20:41:13 PAGE 4   

 179   3      						IN0BUF[0] = EPIO[EPID(SETUPDAT[wIndexL])].cntrl & bmEPSTALL;
 180   3      						IN0BUF[1] = 0;
 181   3      						EZUSB_SET_EP_BYTES(IN0BUF_ID,2);
 182   3      					break;
 183   3      					default:					// Invalid Command
 184   3      						EZUSB_STALL_EP0();	
 185   3      				}
 186   2      		break;
 187   2      		case SC_CLEAR_FEATURE:					// *** Clear Feature
 188   2      			if(DR_ClearFeature())
 189   2      				switch(SETUPDAT[bmRequestType])
 190   2      				{
 191   3      					case FT_DEVICE:				// Device
 192   3      						if(SETUPDAT[wValueL] == 1)
 193   3      							Rwuen = FALSE; 		// Disable Remote Wakeup
 194   3      						else
 195   3      							EZUSB_STALL_EP0();	// we only recognize '1'
 196   3      					break;
 197   3      					case FT_ENDPOINT:			// End Point
 198   3      						if(SETUPDAT[wValueL] == 0)
 199   3                        		{
 200   4      							EZUSB_UNSTALL_EP(EPID(SETUPDAT[wIndexL]));
 201   4                          		EZUSB_RESET_DATA_TOGGLE(SETUPDAT[wIndexL]);
 202   4                        		}
 203   3      						else
 204   3      							EZUSB_STALL_EP0();
 205   3      					break;
 206   3      				}
 207   2      		break;
 208   2      		case SC_SET_FEATURE:					// *** Set Feature
 209   2      			if(DR_SetFeature())
 210   2      				switch(SETUPDAT[bmRequestType])
 211   2      				{
 212   3      					case FT_DEVICE:				// Device
 213   3      						if(SETUPDAT[wValueL] == 1)
 214   3      							Rwuen = TRUE;		// Enable Remote Wakeup
 215   3      						else
 216   3      							EZUSB_STALL_EP0();
 217   3      					break;
 218   3      					case FT_ENDPOINT:			// End Point
 219   3      						if(SETUPDAT[wValueL] == 0)
 220   3      							EZUSB_STALL_EP( EPID(SETUPDAT[wIndexL]) );
 221   3      						else
 222   3      							EZUSB_STALL_EP0();
 223   3      					break;
 224   3      				}
 225   2      		break;
 226   2      		default:								// *** Invalid Command
 227   2      				EZUSB_STALL_EP0();
 228   2      	} // end switch
 229   1      } // end process_request()
 230          
 231          void process_descriptor()
 232          {
 233   1      unsigned int	j,k,ReportSize;
 234   1      	switch(SETUPDAT[wValueH])
 235   1      	{
 236   2      		case GD_DEVICE:					// Device
 237   2      			SUDPTRH = MSB(&DeviceDescr);
 238   2      			SUDPTRL = LSB(&DeviceDescr);
 239   2      		break;
 240   2      		case GD_CONFIGURATION:			// Configuration
C51 COMPILER V6.10  FW2HID                                                                 07/11/2005 20:41:13 PAGE 5   

 241   2      			SUDPTRH = MSB(&ConfigDescr);
 242   2      			SUDPTRL = LSB(&ConfigDescr);
 243   2      		break;
 244   2      		case GD_STRING:					// String
 245   2      			{
 246   3      			switch(SETUPDAT[wValueL])
 247   3      				{
 248   4      				case 0:					// string index 1
 249   4      					SUDPTRH = MSB(&String0);
 250   4      					SUDPTRL = LSB(&String0);
 251   4      				break;
 252   4      				case 1:					// string index 1
 253   4      					SUDPTRH = MSB(&String1);
 254   4      					SUDPTRL = LSB(&String1);
 255   4      				break;
 256   4      				case 2:					// string index 2
 257   4      					SUDPTRH = MSB(&String2);
 258   4      					SUDPTRL = LSB(&String2);
 259   4      				break;
 260   4      				default:				// Invalid string requested
 261   4      					EZUSB_STALL_EP0();
 262   4      				} // end switch
 263   3      			} // end case
 264   2      		break;
 265   2      		case GD_HID:					// Get-Descriptor: HID
 266   2      			SUDPTRH = MSB(&HIDDescr);
 267   2      			SUDPTRL = LSB(&HIDDescr);
 268   2      		break;
 269   2      		case GD_REPORT:					// Get-Descriptor: Report
 270   2      /*
 271   2      Note: A HID report does not have a length field which the SIE can read to determine how many
 272   2      bytes to send using the Setup Data Pointer. Therefore we need to 'manually' send the data.
 273   2      */
 274   2      			ReportSize = (WORD)&ReportDescr_end - (WORD)&ReportDescr;
 275   2      			AUTOPTRH = MSB(&ReportDescr);
 276   2      			AUTOPTRL = LSB(&ReportDescr);
 277   2      			while(ReportSize)
 278   2      				{
 279   3      				k = min(ReportSize,64);		// smaller of ReportSize or IN0 Buffer (64 bytes)
 280   3      				for(j=0;j<k;j++)
 281   3      					IN0BUF[j]=AUTODATA;
 282   3      					IN0BC = j;					// arm the IN transfer
 283   3      					ReportSize = ReportSize-j;
 284   3      					while(EP0CS & bmIN);		// wait for it to go out and get ACK'd
 285   3      				}
 286   2      		break;
 287   2       	    default:					// *** Invalid Command
 288   2      			EZUSB_STALL_EP0();
 289   2      	} // end switch
 290   1      } // end function
 291          
 292          void process_class_request(void)	// Handle the HID class
 293          {
 294   1      switch(SETUPDAT[bRequest])
 295   1      	{
 296   2      	case SET_REPORT:
 297   2      		switch(SETUPDAT[wValueH])			// wValueH has report type
 298   2      			{
 299   3      			case rt_INPUT:
 300   3      			break;
 301   3      			case rt_OUTPUT:
 302   3      			break;
C51 COMPILER V6.10  FW2HID                                                                 07/11/2005 20:41:13 PAGE 6   

 303   3      			case rt_FEATURE:
 304   3      			break;
 305   3      			default:
 306   3      				EZUSB_STALL_EP0();
 307   3      			}
 308   2      	break;
 309   2      	case GET_REPORT:
 310   2      		switch(SETUPDAT[wValueH])			// wValueH has report type
 311   2      			{
 312   3      			case rt_INPUT:
 313   3      			break;
 314   3      			case rt_OUTPUT:
 315   3      			break;
 316   3      			case rt_FEATURE:
 317   3      			break;
 318   3      			default:
 319   3      				EZUSB_STALL_EP0();
 320   3      			}
 321   2      	break;
 322   2      	case SET_IDLE:
 323   2      		IdleRate = SETUPDAT[wValueH];
 324   2      	break;
 325   2      	case GET_IDLE:
 326   2      		IN0BUF[0]=IdleRate;
 327   2      		IN0BC = 1;					// arm the IN transfer
 328   2      	break;
 329   2      	default:
 330   2      			EZUSB_STALL_EP0();		// this includes 'GET/SET_PROTOCOL'
 331   2      	} // end switch
 332   1      }
 333          
 334          void resume_isr(void) interrupt WKUP_VECT	// Wakeup interrupt handler
 335          {
 336   1      	EZUSB_CLEAR_RSMIRQ();
 337   1      }
 338          
 339          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    832    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -