Add new RNDIS_Host_IsPacketReceived(), RNDIS_Device_ReadPacket() and RNDIS_Device_WritePacket() functions to the Device RNDIS Class Driver.
Modify RNDIS demos to suit the simplified Ethernet_Frame_Info_t structure.
This commit is contained in:
		
							parent
							
								
									41de1d1dab
								
							
						
					
					
						commit
						9d733d44b4
					
				
					 15 changed files with 173 additions and 96 deletions
				
			
		|  | @ -100,7 +100,6 @@ void Ethernet_ProcessPacket(void) | |||
| 
 | ||||
| 			/* Set the response length in the buffer and indicate that a response is ready to be sent */ | ||||
| 			FrameOUT.FrameLength            = (sizeof(Ethernet_Frame_Header_t) + RetSize); | ||||
| 			FrameOUT.FrameInBuffer          = true; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -108,7 +107,7 @@ void Ethernet_ProcessPacket(void) | |||
| 	if (RetSize != NO_PROCESS) | ||||
| 	{ | ||||
| 		/* Clear the frame buffer */ | ||||
| 		FrameIN.FrameInBuffer = false; | ||||
| 		FrameIN.FrameLength = 0; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -74,7 +74,7 @@ void TCP_Task(void) | |||
| 	} | ||||
| 
 | ||||
| 	/* Bail out early if there is already a frame waiting to be sent in the Ethernet OUT buffer */ | ||||
| 	if (FrameOUT.FrameInBuffer) | ||||
| 	if (FrameOUT.FrameLength) | ||||
| 	  return; | ||||
| 
 | ||||
| 	/* Send response packets from each application as the TCP packet buffers are filled by the applications */ | ||||
|  | @ -144,7 +144,6 @@ void TCP_Task(void) | |||
| 
 | ||||
| 			/* Set the response length in the buffer and indicate that a response is ready to be sent */ | ||||
| 			FrameOUT.FrameLength            = PacketSize; | ||||
| 			FrameOUT.FrameInBuffer          = true; | ||||
| 
 | ||||
| 			ConnectionStateTable[CSTableEntry].Info.Buffer.Ready = false; | ||||
| 
 | ||||
|  |  | |||
|  | @ -204,7 +204,7 @@ void RNDIS_Task(void) | |||
| 		Endpoint_SelectEndpoint(CDC_RX_EPNUM); | ||||
| 
 | ||||
| 		/* Check if the data OUT endpoint contains data, and that the IN buffer is empty */ | ||||
| 		if (Endpoint_IsOUTReceived() && !(FrameIN.FrameInBuffer)) | ||||
| 		if (Endpoint_IsOUTReceived() && !(FrameIN.FrameLength)) | ||||
| 		{ | ||||
| 			/* Read in the packet message header */ | ||||
| 			Endpoint_Read_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t), NULL); | ||||
|  | @ -224,16 +224,13 @@ void RNDIS_Task(void) | |||
| 
 | ||||
| 			/* Store the size of the Ethernet frame */ | ||||
| 			FrameIN.FrameLength = RNDISPacketHeader.DataLength; | ||||
| 
 | ||||
| 			/* Indicate Ethernet IN buffer full */ | ||||
| 			FrameIN.FrameInBuffer = true; | ||||
| 		} | ||||
| 
 | ||||
| 		/* Select the data IN endpoint */ | ||||
| 		Endpoint_SelectEndpoint(CDC_TX_EPNUM); | ||||
| 
 | ||||
| 		/* Check if the data IN endpoint is ready for more data, and that the IN buffer is full */ | ||||
| 		if (Endpoint_IsINReady() && FrameOUT.FrameInBuffer) | ||||
| 		if (Endpoint_IsINReady() && FrameOUT.FrameLength) | ||||
| 		{ | ||||
| 			/* Clear the packet header with all 0s so that the relevant fields can be filled */ | ||||
| 			memset(&RNDISPacketHeader, 0, sizeof(RNDIS_Packet_Message_t)); | ||||
|  | @ -254,7 +251,7 @@ void RNDIS_Task(void) | |||
| 			Endpoint_ClearIN(); | ||||
| 
 | ||||
| 			/* Indicate Ethernet OUT buffer no longer full */ | ||||
| 			FrameOUT.FrameInBuffer = false; | ||||
| 			FrameOUT.FrameLength = 0; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -273,7 +270,7 @@ void Ethernet_Task(void) | |||
| 	  return; | ||||
| 
 | ||||
| 	/* Check if a frame has been written to the IN frame buffer */ | ||||
| 	if (FrameIN.FrameInBuffer) | ||||
| 	if (FrameIN.FrameLength) | ||||
| 	{ | ||||
| 		/* Indicate packet processing started */ | ||||
| 		LEDs_SetAllLEDs(LEDMASK_USB_BUSY); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dean Camera
						Dean Camera