Components / ESP8266

Dependencies:   ATParser

Dependents:   ESP8266Interface

Fork of ESP8266 by NetworkSocketAPI

Committer:
austin.blackstone@arm.com
Date:
Sun May 31 13:07:08 2015 -0500
Revision:
4:844719bff1b1
Parent:
2:3a8e1a6c0524
Child:
5:a517950927fe
added skeleton to hardware driver .f file

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedAustin 1:7fcb6d791d62 1 /* NetworkInterface Base Class
mbedAustin 1:7fcb6d791d62 2 * Copyright (c) 2015 ARM Limited
mbedAustin 1:7fcb6d791d62 3 *
mbedAustin 1:7fcb6d791d62 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbedAustin 1:7fcb6d791d62 5 * you may not use this file except in compliance with the License.
mbedAustin 1:7fcb6d791d62 6 * You may obtain a copy of the License at
mbedAustin 1:7fcb6d791d62 7 *
mbedAustin 1:7fcb6d791d62 8 * http://www.apache.org/licenses/LICENSE-2.0
mbedAustin 1:7fcb6d791d62 9 *
mbedAustin 1:7fcb6d791d62 10 * Unless required by applicable law or agreed to in writing, software
mbedAustin 1:7fcb6d791d62 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbedAustin 1:7fcb6d791d62 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbedAustin 1:7fcb6d791d62 13 * See the License for the specific language governing permissions and
mbedAustin 1:7fcb6d791d62 14 * limitations under the License.
mbedAustin 1:7fcb6d791d62 15 */
mbedAustin 1:7fcb6d791d62 16
mbedAustin 1:7fcb6d791d62 17 #ifndef HWNAME_DRIVER_H
mbedAustin 1:7fcb6d791d62 18 #define HWNAME_DRIVER_H
mbedAustin 1:7fcb6d791d62 19
mbedAustin 2:3a8e1a6c0524 20 /*
austin.blackstone@arm.com 4:844719bff1b1 21 These functions are a reference / sample implimentation.
austin.blackstone@arm.com 4:844719bff1b1 22 The functions usedcan vary greatly between networking devices.
austin.blackstone@arm.com 4:844719bff1b1 23 The only requirement is they provide the functionality needed by the Socket and Interface API's.
mbedAustin 2:3a8e1a6c0524 24 */
mbedAustin 2:3a8e1a6c0524 25
mbedAustin 2:3a8e1a6c0524 26 /*
mbedAustin 2:3a8e1a6c0524 27 Functions to impliment
mbedAustin 2:3a8e1a6c0524 28 - Initialize(SingleConnection/MultiConnection) // return object to track current endpoint?
mbedAustin 2:3a8e1a6c0524 29 - Reset() // its initialize but as a handy human readable implimentation
mbedAustin 2:3a8e1a6c0524 30 - OpenConnection(Type TCP/UDP, IPV4/6, blocking/non-blocking)
mbedAustin 2:3a8e1a6c0524 31 - CloseConnection() // empty if single mode, provide return from initialize if in multi mode
mbedAustin 2:3a8e1a6c0524 32 - Send(data) // make a vector to have implicit size?
mbedAustin 2:3a8e1a6c0524 33 - Recieve(dataBuffer, blocking timeout?) // recieve data with a blocking timeout
mbedAustin 2:3a8e1a6c0524 34
mbedAustin 2:3a8e1a6c0524 35 */
austin.blackstone@arm.com 4:844719bff1b1 36
austin.blackstone@arm.com 4:844719bff1b1 37 class HWNameDriver :
austin.blackstone@arm.com 4:844719bff1b1 38 {
austin.blackstone@arm.com 4:844719bff1b1 39 public:
austin.blackstone@arm.com 4:844719bff1b1 40
austin.blackstone@arm.com 4:844719bff1b1 41 /**
austin.blackstone@arm.com 4:844719bff1b1 42 * This enum defines the possible connect types.
austin.blackstone@arm.com 4:844719bff1b1 43 */
austin.blackstone@arm.com 4:844719bff1b1 44 enum connectType {
austin.blackstone@arm.com 4:844719bff1b1 45 TCP,
austin.blackstone@arm.com 4:844719bff1b1 46 UDP,
austin.blackstone@arm.com 4:844719bff1b1 47 };
austin.blackstone@arm.com 4:844719bff1b1 48
austin.blackstone@arm.com 4:844719bff1b1 49 /**
austin.blackstone@arm.com 4:844719bff1b1 50 * Initialize the network hardware.
austin.blackstone@arm.com 4:844719bff1b1 51 *
austin.blackstone@arm.com 4:844719bff1b1 52 * \returns 1 on success, 0 on failure
austin.blackstone@arm.com 4:844719bff1b1 53 */
austin.blackstone@arm.com 4:844719bff1b1 54 virtual init (void ) const {
austin.blackstone@arm.com 4:844719bff1b1 55 return 0;
austin.blackstone@arm.com 4:844719bff1b1 56 }
austin.blackstone@arm.com 4:844719bff1b1 57
austin.blackstone@arm.com 4:844719bff1b1 58 /**
austin.blackstone@arm.com 4:844719bff1b1 59 * Reset the newtwork hardware
austin.blackstone@arm.com 4:844719bff1b1 60 *
austin.blackstone@arm.com 4:844719bff1b1 61 * \returns 1 on success, 0 on failure
austin.blackstone@arm.com 4:844719bff1b1 62 */
austin.blackstone@arm.com 4:844719bff1b1 63 virtual int reset(void) const {
austin.blackstone@arm.com 4:844719bff1b1 64 return 0;
austin.blackstone@arm.com 4:844719bff1b1 65 }
austin.blackstone@arm.com 4:844719bff1b1 66
austin.blackstone@arm.com 4:844719bff1b1 67 /**
austin.blackstone@arm.com 4:844719bff1b1 68 * Start a connection, either TCP or UDP
austin.blackstone@arm.com 4:844719bff1b1 69 *
austin.blackstone@arm.com 4:844719bff1b1 70 * \returns 1 on success, 0 on failure
austin.blackstone@arm.com 4:844719bff1b1 71 */
austin.blackstone@arm.com 4:844719bff1b1 72 virtual int connect(connectType type) const {
austin.blackstone@arm.com 4:844719bff1b1 73 return 0;
austin.blackstone@arm.com 4:844719bff1b1 74 }
austin.blackstone@arm.com 4:844719bff1b1 75
austin.blackstone@arm.com 4:844719bff1b1 76 /**
austin.blackstone@arm.com 4:844719bff1b1 77 * Send data over the open connection
austin.blackstone@arm.com 4:844719bff1b1 78 *
austin.blackstone@arm.com 4:844719bff1b1 79 * @param data The data to send.
austin.blackstone@arm.com 4:844719bff1b1 80 * @param dataLen The number of bytes of data to send.
austin.blackstone@arm.com 4:844719bff1b1 81 * @param timeout The timeout time to wait in ms, default to 1500ms.
austin.blackstone@arm.com 4:844719bff1b1 82 *
austin.blackstone@arm.com 4:844719bff1b1 83 * \returns # of bytes sent on success, -1 on failure
austin.blackstone@arm.com 4:844719bff1b1 84 */
austin.blackstone@arm.com 4:844719bff1b1 85 virtual int send(uint8_t *data, int dataLen, int timeout = 1500) const {
austin.blackstone@arm.com 4:844719bff1b1 86 return 0;
austin.blackstone@arm.com 4:844719bff1b1 87 }
austin.blackstone@arm.com 4:844719bff1b1 88
austin.blackstone@arm.com 4:844719bff1b1 89 /**
austin.blackstone@arm.com 4:844719bff1b1 90 * Receive data over the open connection
austin.blackstone@arm.com 4:844719bff1b1 91 *
austin.blackstone@arm.com 4:844719bff1b1 92 * @param data Buffer to put received data into.
austin.blackstone@arm.com 4:844719bff1b1 93 * @param dataMaxSize The maximum size of the data buffer to put received data into.
austin.blackstone@arm.com 4:844719bff1b1 94 * @param timeout The timeout time to wait in ms, default to 1500ms.
austin.blackstone@arm.com 4:844719bff1b1 95 *
austin.blackstone@arm.com 4:844719bff1b1 96 * \returns # of bytes recieved on success, -1 on failure
austin.blackstone@arm.com 4:844719bff1b1 97 */
austin.blackstone@arm.com 4:844719bff1b1 98 virtual int receive(uint8_t *data, int dataMaxSize,int timeout = 1500) const {
austin.blackstone@arm.com 4:844719bff1b1 99 return 0;
austin.blackstone@arm.com 4:844719bff1b1 100 }
austin.blackstone@arm.com 4:844719bff1b1 101
austin.blackstone@arm.com 4:844719bff1b1 102 /**
austin.blackstone@arm.com 4:844719bff1b1 103 * Stop the interface, bringing down dhcp if necessary.
austin.blackstone@arm.com 4:844719bff1b1 104 *
austin.blackstone@arm.com 4:844719bff1b1 105 * \returns 1 on success, 0 on failure
austin.blackstone@arm.com 4:844719bff1b1 106 */
austin.blackstone@arm.com 4:844719bff1b1 107 virtual int disconnect(void) const {
austin.blackstone@arm.com 4:844719bff1b1 108 return 0;
austin.blackstone@arm.com 4:844719bff1b1 109 }
austin.blackstone@arm.com 4:844719bff1b1 110
austin.blackstone@arm.com 4:844719bff1b1 111 /**
austin.blackstone@arm.com 4:844719bff1b1 112 * Put the hardware to sleep / low power mode.
austin.blackstone@arm.com 4:844719bff1b1 113 *
austin.blackstone@arm.com 4:844719bff1b1 114 * \returns 1 on success, 0 on failure
austin.blackstone@arm.com 4:844719bff1b1 115 */
austin.blackstone@arm.com 4:844719bff1b1 116 virtual int sleep(void) const {
austin.blackstone@arm.com 4:844719bff1b1 117 return 0;
austin.blackstone@arm.com 4:844719bff1b1 118 }
austin.blackstone@arm.com 4:844719bff1b1 119
austin.blackstone@arm.com 4:844719bff1b1 120 /**
austin.blackstone@arm.com 4:844719bff1b1 121 * Wakeup the hardware.
austin.blackstone@arm.com 4:844719bff1b1 122 *
austin.blackstone@arm.com 4:844719bff1b1 123 * \returns 1 on success, 0 on failure
austin.blackstone@arm.com 4:844719bff1b1 124 */
austin.blackstone@arm.com 4:844719bff1b1 125 virtual int wakeup(void) const {
austin.blackstone@arm.com 4:844719bff1b1 126 return 0;
austin.blackstone@arm.com 4:844719bff1b1 127 }
austin.blackstone@arm.com 4:844719bff1b1 128
austin.blackstone@arm.com 4:844719bff1b1 129 /**
austin.blackstone@arm.com 4:844719bff1b1 130 * Set the current IP address.
austin.blackstone@arm.com 4:844719bff1b1 131 *
austin.blackstone@arm.com 4:844719bff1b1 132 * @param ip The IP Address to use.
austin.blackstone@arm.com 4:844719bff1b1 133 *
austin.blackstone@arm.com 4:844719bff1b1 134 * \returns 1 on success, 0 on failure
austin.blackstone@arm.com 4:844719bff1b1 135 */
austin.blackstone@arm.com 4:844719bff1b1 136 virtual int setIPAddress(const char *ip) const {
austin.blackstone@arm.com 4:844719bff1b1 137 return 0;
austin.blackstone@arm.com 4:844719bff1b1 138 }
austin.blackstone@arm.com 4:844719bff1b1 139
austin.blackstone@arm.com 4:844719bff1b1 140 /**
austin.blackstone@arm.com 4:844719bff1b1 141 * Get the current IP address.
austin.blackstone@arm.com 4:844719bff1b1 142 *
austin.blackstone@arm.com 4:844719bff1b1 143 * \returns a pointer to a string containing the IP address on success, 0 on failure.
austin.blackstone@arm.com 4:844719bff1b1 144 */
austin.blackstone@arm.com 4:844719bff1b1 145 virtual char *getIPAddress(void) const {
austin.blackstone@arm.com 4:844719bff1b1 146 return 0;
austin.blackstone@arm.com 4:844719bff1b1 147 }
austin.blackstone@arm.com 4:844719bff1b1 148
austin.blackstone@arm.com 4:844719bff1b1 149 /**
austin.blackstone@arm.com 4:844719bff1b1 150 * Set the current gateway address.
austin.blackstone@arm.com 4:844719bff1b1 151 *
austin.blackstone@arm.com 4:844719bff1b1 152 * @param gateway The Gateway to use.
austin.blackstone@arm.com 4:844719bff1b1 153 *
austin.blackstone@arm.com 4:844719bff1b1 154 * \returns 1 on success, 0 on failure
austin.blackstone@arm.com 4:844719bff1b1 155 */
austin.blackstone@arm.com 4:844719bff1b1 156 virtual int setGateway(const char *gateway) const {
austin.blackstone@arm.com 4:844719bff1b1 157 return 0;
austin.blackstone@arm.com 4:844719bff1b1 158 }
austin.blackstone@arm.com 4:844719bff1b1 159
austin.blackstone@arm.com 4:844719bff1b1 160 /**
austin.blackstone@arm.com 4:844719bff1b1 161 * Get the current gateway address.
austin.blackstone@arm.com 4:844719bff1b1 162 *
austin.blackstone@arm.com 4:844719bff1b1 163 * \returns a pointer to a string containing the gateway address on success, 0 on failure.
austin.blackstone@arm.com 4:844719bff1b1 164 */
austin.blackstone@arm.com 4:844719bff1b1 165 virtual char *getGateway(void) const {
austin.blackstone@arm.com 4:844719bff1b1 166 return 0;
austin.blackstone@arm.com 4:844719bff1b1 167 }
austin.blackstone@arm.com 4:844719bff1b1 168
austin.blackstone@arm.com 4:844719bff1b1 169 /**
austin.blackstone@arm.com 4:844719bff1b1 170 * Set the Network of the HWDevice
austin.blackstone@arm.com 4:844719bff1b1 171 *
austin.blackstone@arm.com 4:844719bff1b1 172 * @param netmask The networkMask to use.
austin.blackstone@arm.com 4:844719bff1b1 173 *
austin.blackstone@arm.com 4:844719bff1b1 174 * \returns 1 on success, 0 on failure
austin.blackstone@arm.com 4:844719bff1b1 175 */
austin.blackstone@arm.com 4:844719bff1b1 176 virtual int setNetworkMask(const char *netmask) const {
austin.blackstone@arm.com 4:844719bff1b1 177 return 0;
austin.blackstone@arm.com 4:844719bff1b1 178 };
austin.blackstone@arm.com 4:844719bff1b1 179
austin.blackstone@arm.com 4:844719bff1b1 180 /**
austin.blackstone@arm.com 4:844719bff1b1 181 * Get the current network mask.
austin.blackstone@arm.com 4:844719bff1b1 182 *
austin.blackstone@arm.com 4:844719bff1b1 183 * \returns a pointer to a string containing the network mask on success, 0 on failure.
austin.blackstone@arm.com 4:844719bff1b1 184 */
austin.blackstone@arm.com 4:844719bff1b1 185 virtual char *getNetworkMask(void) const {
austin.blackstone@arm.com 4:844719bff1b1 186 return 0;
austin.blackstone@arm.com 4:844719bff1b1 187 }
austin.blackstone@arm.com 4:844719bff1b1 188
austin.blackstone@arm.com 4:844719bff1b1 189 /**
austin.blackstone@arm.com 4:844719bff1b1 190 * Set the MAC Address of the HWDevice
austin.blackstone@arm.com 4:844719bff1b1 191 *
austin.blackstone@arm.com 4:844719bff1b1 192 * @param mac The static IP address to use
austin.blackstone@arm.com 4:844719bff1b1 193 *
austin.blackstone@arm.com 4:844719bff1b1 194 * \returns 1 on success, 0 on failure
austin.blackstone@arm.com 4:844719bff1b1 195 */
austin.blackstone@arm.com 4:844719bff1b1 196 virtual int setMACAddress(const char *mac) const {
austin.blackstone@arm.com 4:844719bff1b1 197 return 0;
austin.blackstone@arm.com 4:844719bff1b1 198 };
austin.blackstone@arm.com 4:844719bff1b1 199
austin.blackstone@arm.com 4:844719bff1b1 200 /**
austin.blackstone@arm.com 4:844719bff1b1 201 * Get the devices MAC address.
austin.blackstone@arm.com 4:844719bff1b1 202 *
austin.blackstone@arm.com 4:844719bff1b1 203 * \returns a pointer to a string containing the mac address on success, 0 on failure.
austin.blackstone@arm.com 4:844719bff1b1 204 */
austin.blackstone@arm.com 4:844719bff1b1 205 virtual char *getMACAddress(void) const {
austin.blackstone@arm.com 4:844719bff1b1 206 return 0;
austin.blackstone@arm.com 4:844719bff1b1 207 }
austin.blackstone@arm.com 4:844719bff1b1 208
austin.blackstone@arm.com 4:844719bff1b1 209 /**
austin.blackstone@arm.com 4:844719bff1b1 210 * Get the current status of the interface connection.
austin.blackstone@arm.com 4:844719bff1b1 211 *
austin.blackstone@arm.com 4:844719bff1b1 212 * \returns true if connected, false otherwise.
austin.blackstone@arm.com 4:844719bff1b1 213 */
austin.blackstone@arm.com 4:844719bff1b1 214 virtual bool isConnected(void) const {
austin.blackstone@arm.com 4:844719bff1b1 215 return false;
austin.blackstone@arm.com 4:844719bff1b1 216 }
austin.blackstone@arm.com 4:844719bff1b1 217
austin.blackstone@arm.com 4:844719bff1b1 218 private:
austin.blackstone@arm.com 4:844719bff1b1 219 char IPAddress[15]; // "xxx.xxx.xxx.xxx" IPV4
austin.blackstone@arm.com 4:844719bff1b1 220 char NetworkMask[15]; // "xxx.xxx.xxx.xxx"
austin.blackstone@arm.com 4:844719bff1b1 221 char Gateway[15]; // "xxx.xxx.xxx.xxx"
austin.blackstone@arm.com 4:844719bff1b1 222 char MacAddress[17]; // "xx:xx:xx:xx:xx:xx"
austin.blackstone@arm.com 4:844719bff1b1 223 bool connected;
austin.blackstone@arm.com 4:844719bff1b1 224
austin.blackstone@arm.com 4:844719bff1b1 225 };
austin.blackstone@arm.com 4:844719bff1b1 226
mbedAustin 2:3a8e1a6c0524 227
mbedAustin 2:3a8e1a6c0524 228 #endif // HWNAME_DRIVER_H