test test test

Dependencies:   mbed

Committer:
mohamedmoawya
Date:
Mon May 25 19:06:11 2020 +0000
Revision:
0:e4c5e6ec922e
snake game tteest

Who changed what in which revision?

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