void HID_Get_Report() {
   UCHAR   bDescriptor =      MSB(ControlData.DeviceRequest.wValue);
   UCHAR   bDescriptorIndex = LSB(ControlData.DeviceRequest.wValue);
   USHORT  bLen = ControlData.DeviceRequest.wLength;
   // printf("bDescri = %d : ",bDescriptor);
   // printf("Index = %d\n",bDescriptorIndex);

   if(sizeof(new_report) <= bLen){
      Chap9_BurstTransmitEP0((PUCHAR)&new_report, sizeof(new_report));
   }
   hid_settings.state = connected;
}
Esempio n. 2
0
void Chap9_GetDescriptor(void)
{
    UCHAR   bDescriptor =      MSB(ControlData.DeviceRequest.wValue);
    UCHAR   bDescriptorIndex = LSB(ControlData.DeviceRequest.wValue);
  //printf("bDescri %d",bDescriptor);
 // printf("Index %d\n",bDescriptorIndex);
//  printf("USB_DEVICE_DESCRIPTORsize %d\n",sizeof(USB_DEVICE_DESCRIPTOR));
 // printf("CONFIGURATIONsize %d\n",sizeof(USB_CONFIGURATION_DESCRIPTOR_a));
    switch(bDescriptor)
    {
    //sDevice sConfiguration
    //sizeof(struct CONFIGURATION)
//sizeof( struct DEVICE)

    case USB_DEVICE_DESCRIPTOR_TYPE:{//1
        Chap9_BurstTransmitEP0( (PUCHAR)&DeviceDescr , sizeof(USB_DEVICE_DESCRIPTOR));
//      Chap9_BurstTransmitEP0((PUCHAR)&sDevice,sizeof(struct DEVICE));
        break;}
    case USB_CONFIGURATION_DESCRIPTOR_TYPE:{//2
//      Chap9_BurstTransmitEP0((PUCHAR)&ConfigDescr, CONFIG_DESCRIPTOR_LENGTH);

      
            //printf("\nConfigDescr     \n");  
          Chap9_BurstTransmitEP0((PUCHAR)&ConfigDescr_a, sizeof(USB_CONFIGURATION_DESCRIPTOR_a));//sizeof(USB_CONFIGURATION_DESCRIPTOR));
       //Chap9_SetConfiguration();
        
      //  config_endpoint();
   //       printf("\nInterfaceDescr0  ");    Chap9_BurstTransmitEP0((PUCHAR)&InterfaceDescr0, sizeof(USB_INTERFACE_DESCRIPTOR));
//          printf("\nEP1_TXDesc       ");     Chap9_BurstTransmitEP0((PUCHAR)&EP1_TXDescr, sizeof(USB_ENDPOINT_DESCRIPTOR));
  //        printf("\nEP1_RXDescr      ");    Chap9_BurstTransmitEP0((PUCHAR)&EP1_RXDescr, sizeof(USB_ENDPOINT_DESCRIPTOR));
    //      printf("\nEP2_TXDescr      ");    Chap9_BurstTransmitEP0((PUCHAR)&EP2_TXDescr, sizeof(USB_ENDPOINT_DESCRIPTOR));
      //    printf("\nEP2_RXDescr      ");    Chap9_BurstTransmitEP0((PUCHAR)&EP2_RXDescr, sizeof(USB_ENDPOINT_DESCRIPTOR));
        break;}
    case USB_STRING_DESCRIPTOR_TYPE://3
        switch(bDescriptorIndex)
        {
        case STR_INDEX_LANGUAGE:
            printf("\n str1     \n");
      Chap9_BurstTransmitEP0((PUCHAR)&strLanguage, sizeof(USB_STRING_LANGUAGE_DESCRIPTOR));
            break;
        case STR_INDEX_MANUFACTURER:
            printf("\n str2     \n");Chap9_BurstTransmitEP0((PUCHAR)&strManufacturer, sizeof(USB_STRING_MANUFACTURER_DESCRIPTOR));
            break;
        case STR_INDEX_PRODUCT:
            printf("\n str3     \n");Chap9_BurstTransmitEP0((PUCHAR)&strProduct, sizeof(USB_STRING_PRODUCT_DESCRIPTOR));
            break;
        case STR_INDEX_SERIALNUMBER:
            printf("\n str4     \n");Chap9_BurstTransmitEP0((PUCHAR)&strSerialNum, sizeof(USB_STRING_SERIALNUMBER_DESCRIPTOR));
            break;
        case STR_INDEX_CONFIGURATION:
            printf("\n str5     \n");Chap9_BurstTransmitEP0((PUCHAR)&strConfiguration, sizeof(USB_STRING_CONFIGURATION_DESCRIPTOR) );
            break;
        case STR_INDEX_INTERFACE:
            printf("\n str6     \n");Chap9_BurstTransmitEP0((PUCHAR)&strInterface, sizeof(USB_STRING_INTERFACE_DESCRIPTOR) );
            break;
        default:
            printf("\n str7     \n");Chap9_StallEP0InControlRead();
            break;
        }
    case USB_INTERFACE_DESCRIPTOR_TYPE:
    case USB_ENDPOINT_DESCRIPTOR_TYPE:
    case USB_POWER_DESCRIPTOR_TYPE:
    default:
        Chap9_StallEP0InControlRead();
        break;
    }
}
Esempio n. 3
0
void Chap9_GetDescriptor(void)
{
	UCHAR   bDescriptor =      MSB(ControlData.DeviceRequest.wValue);
	UCHAR   bDescriptorIndex = LSB(ControlData.DeviceRequest.wValue);
	//printf("bDescri %d\n",bDescriptor);
	//printf("Index %d\n",bDescriptorIndex);
	////printf("USB_DEVICE_DESCRIPTORsize %d\n",sizeof(USB_DEVICE_DESCRIPTOR));
	// //printf("CONFIGURATIONsize %d\n",sizeof(USB_CONFIGURATION_DESCRIPTOR_a));
	switch(bDescriptor)
	{
	//sDevice sConfiguration
	//sizeof(struct CONFIGURATION)
	//sizeof( struct DEVICE)

	case USB_DEVICE_DESCRIPTOR_TYPE://1
		{
            //printf("entering device descriptor");
		Chap9_BurstTransmitEP0( (PUCHAR)&DeviceDescr , sizeof(USB_DEVICE_DESCRIPTOR));
		//Chap9_BurstTransmitEP0((PUCHAR)&sDevice,sizeof(struct DEVICE));
		//printf("exiting device descriptor");
        break;
		}
	case USB_CONFIGURATION_DESCRIPTOR_TYPE://2
		{
		//		Chap9_BurstTransmitEP0((PUCHAR)&ConfigDescr, CONFIG_DESCRIPTOR_LENGTH);

      
		  printf("\nConfigDescr     ");  
         Chap9_BurstTransmitEP0((PUCHAR)&ConfigDescr, sizeof(USB_CONFIGURATION_DESCRIPTOR));//sizeof(USB_CONFIGURATION_DESCRIPTOR));
		
		//Chap9_SetConfiguration();
        //config_endpoint();
		//printf("\nInterfaceDescr0  ");    
		//Chap9_BurstTransmitEP0((PUCHAR)&InterfaceDescr, sizeof(USB_INTERFACE_DESCRIPTOR));
		
		//printf("\nHID_TXDesc       ");
		//Chap9_BurstTransmitEP0( (PUCHAR)&hidDescr , sizeof(USB_HID_DESCRIPTOR));		
		
		//printf("\nEP1_TXDesc       ");
		//Chap9_BurstTransmitEP0((PUCHAR)&EP_Descr, sizeof(USB_ENDPOINT_DESCRIPTOR));
		////printf("\nEP1_RXDescr      ");    Chap9_BurstTransmitEP0((PUCHAR)&EP1_RXDescr, sizeof(USB_ENDPOINT_DESCRIPTOR));
		////printf("\nEP2_TXDescr      ");    Chap9_BurstTransmitEP0((PUCHAR)&EP2_TXDescr, sizeof(USB_ENDPOINT_DESCRIPTOR));
		////printf("\nEP2_RXDescr      ");    Chap9_BurstTransmitEP0((PUCHAR)&EP2_RXDescr, sizeof(USB_ENDPOINT_DESCRIPTOR));
		break;
		}
	case USB_STRING_DESCRIPTOR_TYPE://3
		switch(bDescriptorIndex)
		{
		case STR_INDEX_LANGUAGE:
			//printf("\n str1     \n");
			Chap9_BurstTransmitEP0((PUCHAR)&strLanguage, sizeof(USB_STRING_LANGUAGE_DESCRIPTOR));
			break;
		case STR_INDEX_MANUFACTURER:
			//printf("\n str2     \n");Chap9_BurstTransmitEP0((PUCHAR)&strManufacturer, sizeof(USB_STRING_MANUFACTURER_DESCRIPTOR));
			break;
		case STR_INDEX_PRODUCT:
			//printf("\n str3     \n");Chap9_BurstTransmitEP0((PUCHAR)&strProduct, sizeof(USB_STRING_PRODUCT_DESCRIPTOR));
			break;
		case STR_INDEX_SERIALNUMBER:
			//printf("\n str4     \n");Chap9_BurstTransmitEP0((PUCHAR)&strSerialNum, sizeof(USB_STRING_SERIALNUMBER_DESCRIPTOR));
			break;
		case STR_INDEX_CONFIGURATION:
			//printf("\n str5     \n");Chap9_BurstTransmitEP0((PUCHAR)&strConfiguration, sizeof(USB_STRING_CONFIGURATION_DESCRIPTOR) );
			break;
		case STR_INDEX_INTERFACE:
			//printf("\n str6     \n");Chap9_BurstTransmitEP0((PUCHAR)&strInterface, sizeof(USB_STRING_INTERFACE_DESCRIPTOR) );
			break;
		default:
			//printf("\n str7     \n");Chap9_StallEP0InControlRead();
			break;
		}
	//Mohamed Maged's code starts
	case USB_HID_DESCRIPTOR_TYPE://0x21
		{
            //printf("entering hid descriptor");
		Chap9_BurstTransmitEP0( (PUCHAR)&hidDescr , sizeof(USB_HID_DESCRIPTOR));
		//printf("exiting hid descriptor");
        break;
		}
	case USB_Report_DESCRIPTOR_TYPE://0x21
		{
            printf("sending Report descriptor \n");
		Chap9_BurstTransmitEP0( (PUCHAR)&REPORT_DESCRIPTOR , sizeof(REPORT_DESCRIPTOR));
		//filling Ep01 buffer to generate an EP01 done interrupt
		UCHAR rbuff[4]={0x00,0x0a,0x0b,0x0c};
		Hal4D13_WriteEndpoint(EPINDEX4EP01,(PUCHAR)&rbuff,8);
		//Hal4D13_WriteEndpoint(EPINDEX4EP01,(PUCHAR)&report1,4);
        //printf("exiting report descriptor");
		break;
		}
	
	case USB_INTERFACE_DESCRIPTOR_TYPE:
		{
            //printf("entering interface descriptor");
		Chap9_BurstTransmitEP0( (PUCHAR)&InterfaceDescr , sizeof(USB_INTERFACE_DESCRIPTOR));
		//printf("exiting interface descriptor");
        break;
		}
	
	case USB_ENDPOINT_DESCRIPTOR_TYPE:
		{
            //printf("entering EP descriptor");
		Chap9_BurstTransmitEP0( (PUCHAR)&EP_Descr , sizeof(USB_ENDPOINT_DESCRIPTOR));
		//printf("exiting Ep descriptor");
        break;
		}
	
	//end
	case USB_POWER_DESCRIPTOR_TYPE:
	default:
		Chap9_StallEP0InControlRead();
		break;
	}
}