Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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