Simple mbed library with macros
Dependents: SimpleTimer SimpleUART SimpleTimer Stoppuhr1
Revision 21:ce11d7ff88af, committed 2010-11-27
- Comitter:
- Alkorin
- Date:
- Sat Nov 27 19:08:38 2010 +0000
- Parent:
- 20:113941bced4e
- Commit message:
- Added some Ethernet/IP structures
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ethernet.h Sat Nov 27 19:08:38 2010 +0000 @@ -0,0 +1,66 @@ +/* +* Copyright or © or Copr. 2010, Thomas SOETE +* +* Author e-mail: thomas@soete.org +* Library website : http://mbed.org/users/Alkorin/libraries/SimpleLib/ +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited +* liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +*/ + +#ifndef __SIMPLELIB_ETHERNET_H__ +#define __SIMPLELIB_ETHERNET_H__ + +typedef __packed struct { + char destination[6]; + char source[6]; + uint16_t type; +} ethernet_packet; +#define asETH(x) ((ethernet_packet*)(x)) + +#define IPV4_TYPE 0x0800 +#define ARP_TYPE 0x0806 + +typedef __packed struct { + ethernet_packet eth; + __packed struct { + char hardware_type[2]; + char protocol_type[2]; + char hardware_size; + char protocol_size; + uint16_t opcode_request; + char sender_mac[6]; + char sender_ip[4]; + char target_mac[6]; + char target_ip[4]; + } arp; +} arp_packet; +#define asARP(x) ((arp_packet*)(x)) + +#define ARP_REQUEST 0x0001 +#define ARP_REPLY 0x0002 + +#endif \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ip.h Sat Nov 27 19:08:38 2010 +0000 @@ -0,0 +1,79 @@ +/* +* Copyright or © or Copr. 2010, Thomas SOETE +* +* Author e-mail: thomas@soete.org +* Library website : http://mbed.org/users/Alkorin/libraries/SimpleLib/ +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited +* liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +*/ + +#ifndef __SIMPLELIB_IP_H__ +#define __SIMPLELIB_IP_H__ + +#include "ip.h" + +typedef __packed struct { + unsigned char version:4; + unsigned char length:4; + unsigned char services; + uint16_t total_length; + uint16_t identification; + unsigned int flags:3; + unsigned fragment_offset:13; + unsigned char ttl; + unsigned char protocol; + uint16_t header_checksum; + unsigned char source[4]; + unsigned char destination[4]; +} s_ip; + +typedef __packed struct { + ethernet_packet eth; + s_ip ip; +} ipv4_packet; +#define asIPV4(x) ((ipv4_packet*)(x)) + +#define PROTO_ICMP 0x01 + +typedef __packed struct { + ethernet_packet eth; + s_ip ip; + __packed struct { + unsigned char type; + unsigned char code; + uint16_t checksum; + uint16_t identifier; + uint16_t sequence_number; + unsigned char data[]; + } icmp; +} icmp_packet; +#define asICMP(x) ((icmp_packet*)(x)) + +#define ICMP_REQUEST 0x08 +#define ICMP_REPLY 0x00 + +#endif \ No newline at end of file
--- a/mbed_globals.h Wed Nov 17 22:27:23 2010 +0000 +++ b/mbed_globals.h Sat Nov 27 19:08:38 2010 +0000 @@ -62,6 +62,13 @@ #define EXTERN_C #endif +// Byte swap macros +#define HTONS(x) (((((unsigned short)(x))>>8) & 0xff) | ((((unsigned short)(x)) & 0xff)<<8)) +#define NTOHS(x) (((((unsigned short)(x))>>8) & 0xff) | ((((unsigned short)(x)) & 0xff)<<8)) +#define HTONL(x) ((((x)>>24) & 0xffL) | (((x)>>8) & 0xff00L) | (((x)<<8) & 0xff0000L) | (((x)<<24) & 0xff000000L)) +#define NTOHL(x) ((((x)>>24) & 0xffL) | (((x)>>8) & 0xff00L) | (((x)<<8) & 0xff0000L) | (((x)<<24) & 0xff000000L)) + + /** Constants **/ // Peripheral Clock Selection register bit values (Table 42, p57) #define CCLK4 0U