The code from https://github.com/vpcola/Nucleo

Committer:
sinrab
Date:
Wed Oct 08 11:00:24 2014 +0000
Revision:
0:5464d5e415e5
The code from https://github.com/vpcola/Nucleo

Who changed what in which revision?

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