mbed.h verzija za koristenje na predmetu PAI

Committer:
esokic
Date:
Tue Mar 10 09:51:52 2015 +0000
Revision:
0:05aad811ea07
mbed.h verzija od marta 2014, za koristenje na predmetu PAI

Who changed what in which revision?

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