mbed libraries for KL25Z

Dependents:   FRDM_RGBLED

Committer:
emilmont
Date:
Wed Oct 10 14:14:12 2012 +0000
Revision:
2:e9a661555b58
Parent:
0:8024c367e29f
Child:
8:c14af7958ef5
Add PWM and I2C implementation;

Who changed what in which revision?

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