mbed libraries for KL25Z

Dependents:   FRDM_RGBLED

Committer:
emilmont
Date:
Mon Feb 18 09:41:56 2013 +0000
Revision:
9:663789d7729f
Parent:
8:c14af7958ef5
Update mbed-KL25Z to latest build

Who changed what in which revision?

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