This is the final version of Mini Gateway for Automation and Security desgined for Renesas GR Peach Design Contest

Dependencies:   GR-PEACH_video GraphicsFramework HTTPServer R_BSP mbed-rpc mbed-rtos Socket lwip-eth lwip-sys lwip FATFileSystem

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Committer:
vipinranka
Date:
Wed Jan 11 11:41:30 2017 +0000
Revision:
12:9a20164dcc47
This is the final version MGAS Project for Renesas GR Peach Design Contest

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vipinranka 12:9a20164dcc47 1 /* mbed Microcontroller Library
vipinranka 12:9a20164dcc47 2 * Copyright (c) 2006-2013 ARM Limited
vipinranka 12:9a20164dcc47 3 *
vipinranka 12:9a20164dcc47 4 * Licensed under the Apache License, Version 2.0 (the "License");
vipinranka 12:9a20164dcc47 5 * you may not use this file except in compliance with the License.
vipinranka 12:9a20164dcc47 6 * You may obtain a copy of the License at
vipinranka 12:9a20164dcc47 7 *
vipinranka 12:9a20164dcc47 8 * http://www.apache.org/licenses/LICENSE-2.0
vipinranka 12:9a20164dcc47 9 *
vipinranka 12:9a20164dcc47 10 * Unless required by applicable law or agreed to in writing, software
vipinranka 12:9a20164dcc47 11 * distributed under the License is distributed on an "AS IS" BASIS,
vipinranka 12:9a20164dcc47 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
vipinranka 12:9a20164dcc47 13 * See the License for the specific language governing permissions and
vipinranka 12:9a20164dcc47 14 * limitations under the License.
vipinranka 12:9a20164dcc47 15 */
vipinranka 12:9a20164dcc47 16 #ifndef MBED_ETHERNET_H
vipinranka 12:9a20164dcc47 17 #define MBED_ETHERNET_H
vipinranka 12:9a20164dcc47 18
vipinranka 12:9a20164dcc47 19 #include "platform/platform.h"
vipinranka 12:9a20164dcc47 20
vipinranka 12:9a20164dcc47 21 #if DEVICE_ETHERNET
vipinranka 12:9a20164dcc47 22
vipinranka 12:9a20164dcc47 23 namespace mbed {
vipinranka 12:9a20164dcc47 24 /** \addtogroup drivers */
vipinranka 12:9a20164dcc47 25 /** @{*/
vipinranka 12:9a20164dcc47 26
vipinranka 12:9a20164dcc47 27 /** An ethernet interface, to use with the ethernet pins.
vipinranka 12:9a20164dcc47 28 *
vipinranka 12:9a20164dcc47 29 * @Note Synchronization level: Not protected
vipinranka 12:9a20164dcc47 30 *
vipinranka 12:9a20164dcc47 31 * Example:
vipinranka 12:9a20164dcc47 32 * @code
vipinranka 12:9a20164dcc47 33 * // Read destination and source from every ethernet packet
vipinranka 12:9a20164dcc47 34 *
vipinranka 12:9a20164dcc47 35 * #include "mbed.h"
vipinranka 12:9a20164dcc47 36 *
vipinranka 12:9a20164dcc47 37 * Ethernet eth;
vipinranka 12:9a20164dcc47 38 *
vipinranka 12:9a20164dcc47 39 * int main() {
vipinranka 12:9a20164dcc47 40 * char buf[0x600];
vipinranka 12:9a20164dcc47 41 *
vipinranka 12:9a20164dcc47 42 * while(1) {
vipinranka 12:9a20164dcc47 43 * int size = eth.receive();
vipinranka 12:9a20164dcc47 44 * if(size > 0) {
vipinranka 12:9a20164dcc47 45 * eth.read(buf, size);
vipinranka 12:9a20164dcc47 46 * printf("Destination: %02X:%02X:%02X:%02X:%02X:%02X\n",
vipinranka 12:9a20164dcc47 47 * buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]);
vipinranka 12:9a20164dcc47 48 * printf("Source: %02X:%02X:%02X:%02X:%02X:%02X\n",
vipinranka 12:9a20164dcc47 49 * buf[6], buf[7], buf[8], buf[9], buf[10], buf[11]);
vipinranka 12:9a20164dcc47 50 * }
vipinranka 12:9a20164dcc47 51 *
vipinranka 12:9a20164dcc47 52 * wait(1);
vipinranka 12:9a20164dcc47 53 * }
vipinranka 12:9a20164dcc47 54 * }
vipinranka 12:9a20164dcc47 55 * @endcode
vipinranka 12:9a20164dcc47 56 */
vipinranka 12:9a20164dcc47 57 class Ethernet {
vipinranka 12:9a20164dcc47 58
vipinranka 12:9a20164dcc47 59 public:
vipinranka 12:9a20164dcc47 60
vipinranka 12:9a20164dcc47 61 /** Initialise the ethernet interface.
vipinranka 12:9a20164dcc47 62 */
vipinranka 12:9a20164dcc47 63 Ethernet();
vipinranka 12:9a20164dcc47 64
vipinranka 12:9a20164dcc47 65 /** Powers the hardware down.
vipinranka 12:9a20164dcc47 66 */
vipinranka 12:9a20164dcc47 67 virtual ~Ethernet();
vipinranka 12:9a20164dcc47 68
vipinranka 12:9a20164dcc47 69 enum Mode {
vipinranka 12:9a20164dcc47 70 AutoNegotiate,
vipinranka 12:9a20164dcc47 71 HalfDuplex10,
vipinranka 12:9a20164dcc47 72 FullDuplex10,
vipinranka 12:9a20164dcc47 73 HalfDuplex100,
vipinranka 12:9a20164dcc47 74 FullDuplex100
vipinranka 12:9a20164dcc47 75 };
vipinranka 12:9a20164dcc47 76
vipinranka 12:9a20164dcc47 77 /** Writes into an outgoing ethernet packet.
vipinranka 12:9a20164dcc47 78 *
vipinranka 12:9a20164dcc47 79 * It will append size bytes of data to the previously written bytes.
vipinranka 12:9a20164dcc47 80 *
vipinranka 12:9a20164dcc47 81 * @param data An array to write.
vipinranka 12:9a20164dcc47 82 * @param size The size of data.
vipinranka 12:9a20164dcc47 83 *
vipinranka 12:9a20164dcc47 84 * @returns
vipinranka 12:9a20164dcc47 85 * The number of written bytes.
vipinranka 12:9a20164dcc47 86 */
vipinranka 12:9a20164dcc47 87 int write(const char *data, int size);
vipinranka 12:9a20164dcc47 88
vipinranka 12:9a20164dcc47 89 /** Send an outgoing ethernet packet.
vipinranka 12:9a20164dcc47 90 *
vipinranka 12:9a20164dcc47 91 * After filling in the data in an ethernet packet it must be send.
vipinranka 12:9a20164dcc47 92 * Send will provide a new packet to write to.
vipinranka 12:9a20164dcc47 93 *
vipinranka 12:9a20164dcc47 94 * @returns
vipinranka 12:9a20164dcc47 95 * 0 if the sending was failed,
vipinranka 12:9a20164dcc47 96 * or the size of the packet successfully sent.
vipinranka 12:9a20164dcc47 97 */
vipinranka 12:9a20164dcc47 98 int send();
vipinranka 12:9a20164dcc47 99
vipinranka 12:9a20164dcc47 100 /** Recevies an arrived ethernet packet.
vipinranka 12:9a20164dcc47 101 *
vipinranka 12:9a20164dcc47 102 * Receiving an ethernet packet will drop the last received ethernet packet
vipinranka 12:9a20164dcc47 103 * and make a new ethernet packet ready to read.
vipinranka 12:9a20164dcc47 104 * If no ethernet packet is arrived it will return 0.
vipinranka 12:9a20164dcc47 105 *
vipinranka 12:9a20164dcc47 106 * @returns
vipinranka 12:9a20164dcc47 107 * 0 if no ethernet packet is arrived,
vipinranka 12:9a20164dcc47 108 * or the size of the arrived packet.
vipinranka 12:9a20164dcc47 109 */
vipinranka 12:9a20164dcc47 110 int receive();
vipinranka 12:9a20164dcc47 111
vipinranka 12:9a20164dcc47 112 /** Read from an recevied ethernet packet.
vipinranka 12:9a20164dcc47 113 *
vipinranka 12:9a20164dcc47 114 * After receive returnd a number bigger than 0it is
vipinranka 12:9a20164dcc47 115 * possible to read bytes from this packet.
vipinranka 12:9a20164dcc47 116 * Read will write up to size bytes into data.
vipinranka 12:9a20164dcc47 117 *
vipinranka 12:9a20164dcc47 118 * It is possible to use read multible times.
vipinranka 12:9a20164dcc47 119 * Each time read will start reading after the last read byte before.
vipinranka 12:9a20164dcc47 120 *
vipinranka 12:9a20164dcc47 121 * @returns
vipinranka 12:9a20164dcc47 122 * The number of byte read.
vipinranka 12:9a20164dcc47 123 */
vipinranka 12:9a20164dcc47 124 int read(char *data, int size);
vipinranka 12:9a20164dcc47 125
vipinranka 12:9a20164dcc47 126 /** Gives the ethernet address of the mbed.
vipinranka 12:9a20164dcc47 127 *
vipinranka 12:9a20164dcc47 128 * @param mac Must be a pointer to a 6 byte char array to copy the ethernet address in.
vipinranka 12:9a20164dcc47 129 */
vipinranka 12:9a20164dcc47 130 void address(char *mac);
vipinranka 12:9a20164dcc47 131
vipinranka 12:9a20164dcc47 132 /** Returns if an ethernet link is pressent or not. It takes a wile after Ethernet initializion to show up.
vipinranka 12:9a20164dcc47 133 *
vipinranka 12:9a20164dcc47 134 * @returns
vipinranka 12:9a20164dcc47 135 * 0 if no ethernet link is pressent,
vipinranka 12:9a20164dcc47 136 * 1 if an ethernet link is pressent.
vipinranka 12:9a20164dcc47 137 *
vipinranka 12:9a20164dcc47 138 * Example:
vipinranka 12:9a20164dcc47 139 * @code
vipinranka 12:9a20164dcc47 140 * // Using the Ethernet link function
vipinranka 12:9a20164dcc47 141 * #include "mbed.h"
vipinranka 12:9a20164dcc47 142 *
vipinranka 12:9a20164dcc47 143 * Ethernet eth;
vipinranka 12:9a20164dcc47 144 *
vipinranka 12:9a20164dcc47 145 * int main() {
vipinranka 12:9a20164dcc47 146 * wait(1); // Needed after startup.
vipinranka 12:9a20164dcc47 147 * if (eth.link()) {
vipinranka 12:9a20164dcc47 148 * printf("online\n");
vipinranka 12:9a20164dcc47 149 * } else {
vipinranka 12:9a20164dcc47 150 * printf("offline\n");
vipinranka 12:9a20164dcc47 151 * }
vipinranka 12:9a20164dcc47 152 * }
vipinranka 12:9a20164dcc47 153 * @endcode
vipinranka 12:9a20164dcc47 154 */
vipinranka 12:9a20164dcc47 155 int link();
vipinranka 12:9a20164dcc47 156
vipinranka 12:9a20164dcc47 157 /** Sets the speed and duplex parameters of an ethernet link
vipinranka 12:9a20164dcc47 158 *
vipinranka 12:9a20164dcc47 159 * - AutoNegotiate Auto negotiate speed and duplex
vipinranka 12:9a20164dcc47 160 * - HalfDuplex10 10 Mbit, half duplex
vipinranka 12:9a20164dcc47 161 * - FullDuplex10 10 Mbit, full duplex
vipinranka 12:9a20164dcc47 162 * - HalfDuplex100 100 Mbit, half duplex
vipinranka 12:9a20164dcc47 163 * - FullDuplex100 100 Mbit, full duplex
vipinranka 12:9a20164dcc47 164 *
vipinranka 12:9a20164dcc47 165 * @param mode the speed and duplex mode to set the link to:
vipinranka 12:9a20164dcc47 166 */
vipinranka 12:9a20164dcc47 167 void set_link(Mode mode);
vipinranka 12:9a20164dcc47 168 };
vipinranka 12:9a20164dcc47 169
vipinranka 12:9a20164dcc47 170 } // namespace mbed
vipinranka 12:9a20164dcc47 171
vipinranka 12:9a20164dcc47 172 #endif
vipinranka 12:9a20164dcc47 173
vipinranka 12:9a20164dcc47 174 #endif
vipinranka 12:9a20164dcc47 175
vipinranka 12:9a20164dcc47 176 /** @}*/