RTC auf true

Committer:
kevman
Date:
Wed Mar 13 11:03:24 2019 +0000
Revision:
2:7aab896b1a3b
Parent:
0:38ceb79fef03
2019-03-13

Who changed what in which revision?

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