diff options
author | Dean Camera <[email protected]> | 2011-07-11 09:50:54 +0000 |
---|---|---|
committer | Dean Camera <[email protected]> | 2011-07-11 09:50:54 +0000 |
commit | 85e85befc41a9a66a49db0afd08e04c88ba38556 (patch) | |
tree | 7a056c1f10c57743eb66aefc125e224b61660506 /Demos | |
parent | 7c7778e3cec4cf8df7ec235bbf78557d4abe17af (diff) | |
download | qmk_firmware-85e85befc41a9a66a49db0afd08e04c88ba38556.tar.gz qmk_firmware-85e85befc41a9a66a49db0afd08e04c88ba38556.zip |
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.
Diffstat (limited to 'Demos')
6 files changed, 24 insertions, 13 deletions
diff --git a/Demos/Device/ClassDriver/RNDISEthernet/Lib/Ethernet.c b/Demos/Device/ClassDriver/RNDISEthernet/Lib/Ethernet.c index dacbdbf89c..e65ad7755c 100644 --- a/Demos/Device/ClassDriver/RNDISEthernet/Lib/Ethernet.c +++ b/Demos/Device/ClassDriver/RNDISEthernet/Lib/Ethernet.c @@ -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; diff --git a/Demos/Device/ClassDriver/RNDISEthernet/Lib/EthernetProtocols.h b/Demos/Device/ClassDriver/RNDISEthernet/Lib/EthernetProtocols.h index cb8e16c047..a67aca900d 100644 --- a/Demos/Device/ClassDriver/RNDISEthernet/Lib/EthernetProtocols.h +++ b/Demos/Device/ClassDriver/RNDISEthernet/Lib/EthernetProtocols.h @@ -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 { diff --git a/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.c b/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.c index de614956a5..2c8c398f9d 100644 --- a/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.c +++ b/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.c @@ -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 } diff --git a/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.h b/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.h index d798c2251d..aeece37625 100644 --- a/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.h +++ b/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.h @@ -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); diff --git a/Demos/Device/LowLevel/RNDISEthernet/Lib/Ethernet.h b/Demos/Device/LowLevel/RNDISEthernet/Lib/Ethernet.h index 7749e79901..3ce62128c6 100644 --- a/Demos/Device/LowLevel/RNDISEthernet/Lib/Ethernet.h +++ b/Demos/Device/LowLevel/RNDISEthernet/Lib/Ethernet.h @@ -81,6 +81,13 @@ #define NO_PROCESS -1 /* 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 an Ethernet frame header. */ typedef struct { diff --git a/Demos/Device/LowLevel/RNDISEthernet/Lib/ProtocolDecoders.c b/Demos/Device/LowLevel/RNDISEthernet/Lib/ProtocolDecoders.c index cadd33563f..827dc1ac35 100644 --- a/Demos/Device/LowLevel/RNDISEthernet/Lib/ProtocolDecoders.c +++ b/Demos/Device/LowLevel/RNDISEthernet/Lib/ProtocolDecoders.c @@ -84,10 +84,7 @@ void DecodeEthernetFrameHeader(void* InDataStart) FrameHeader->Destination.Octets[4], FrameHeader->Destination.Octets[5]); - if (SwapEndian_16(FrameIN.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 } |