More endianness porting of the LUFA device mode class drivers.

Add endianness information to the class driver and core structure definitions.

Move out the unused Ethernet_Frame_Info_t structure definition to the RNDIS device demos where it is needed.
This commit is contained in:
Dean Camera 2011-07-11 09:50:54 +00:00
parent 7c7778e3ce
commit 85e85befc4
18 changed files with 288 additions and 150 deletions

View file

@ -59,7 +59,7 @@ const IP_Address_t ClientIPAddress = {CLIENT_IP_ADDRESS};
void Ethernet_ProcessPacket(Ethernet_Frame_Info_t* const FrameIN,
Ethernet_Frame_Info_t* const FrameOUT)
{
DecodeEthernetFrameHeader(FrameIN);
DecodeEthernetFrameHeader(FrameIN->FrameData);
/* Cast the incoming Ethernet frame to the Ethernet header type */
Ethernet_Frame_Header_t* FrameINHeader = (Ethernet_Frame_Header_t*)&FrameIN->FrameData;

View file

@ -37,6 +37,9 @@
#ifndef _ETHERNET_PROTOCOLS_H_
#define _ETHERNET_PROTOCOLS_H_
/* Includes: */
#include <LUFA/Drivers/USB/Class/RNDIS.h>
/* Macros: */
#define ETHERTYPE_IPV4 0x0800
#define ETHERTYPE_ARP 0x0806
@ -72,6 +75,13 @@
#define PROTOCOL_SCTP 132
/* Type Defines: */
/** Type define for an Ethernet frame buffer data and information structure. */
typedef struct
{
uint8_t FrameData[ETHERNET_FRAME_SIZE_MAX]; /**< Ethernet frame contents. */
uint16_t FrameLength; /**< Length in bytes of the Ethernet frame stored in the buffer. */
} Ethernet_Frame_Info_t;
/** Type define for a protocol IP address of a device on a network. */
typedef struct
{

View file

@ -51,12 +51,12 @@
/** Decodes an Ethernet frame header and prints its contents to through the USART in a human readable format.
*
* \param[in] FrameINData Pointer to the start of an Ethernet frame information structure
* \param[in] FrameINData Pointer to the start of an Ethernet frame data
*/
void DecodeEthernetFrameHeader(Ethernet_Frame_Info_t* const FrameINData)
void DecodeEthernetFrameHeader(void* InDataStart)
{
#if !defined(NO_DECODE_ETHERNET)
Ethernet_Frame_Header_t* FrameHeader = (Ethernet_Frame_Header_t*)FrameINData->FrameData;
Ethernet_Frame_Header_t* FrameHeader = (Ethernet_Frame_Header_t*)InDataStart;
printf_P(PSTR("\r\n"));
@ -84,10 +84,7 @@ void DecodeEthernetFrameHeader(Ethernet_Frame_Info_t* const FrameINData)
FrameHeader->Destination.Octets[4],
FrameHeader->Destination.Octets[5]);
if (SwapEndian_16(FrameINData->FrameLength) > ETHERNET_VER2_MINSIZE)
printf_P(PSTR(" + Protocol: 0x%04x\r\n"), SwapEndian_16(FrameHeader->EtherType));
else
printf_P(PSTR(" + Protocol: UNKNOWN E1\r\n"));
printf_P(PSTR(" + Protocol: 0x%04x\r\n"), SwapEndian_16(FrameHeader->EtherType));
#endif
}

View file

@ -47,7 +47,7 @@
#include "Ethernet.h"
/* Function Prototypes: */
void DecodeEthernetFrameHeader(Ethernet_Frame_Info_t* const FrameINData);
void DecodeEthernetFrameHeader(void* InDataStart);
void DecodeARPHeader(void* InDataStart);
void DecodeIPHeader(void* InDataStart);
void DecodeICMPHeader(void* InDataStart);