modified by ohneta

Dependents:   HelloESP8266Interface_mine

Fork of NetworkSocketAPI by NetworkSocketAPI

Committer:
bridadan
Date:
Tue May 19 17:40:28 2015 +0000
Revision:
2:ce08986b18b5
Parent:
1:291a9d61e58a
Child:
3:167dd63981b6
Added some SocketInterface functions and docs

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sam_grove 0:d35446f60233 1 /* NetworkInterface Base Class
sam_grove 0:d35446f60233 2 * Copyright (c) 2015 ARM Limited
sam_grove 0:d35446f60233 3 *
sam_grove 0:d35446f60233 4 * Licensed under the Apache License, Version 2.0 (the "License");
sam_grove 0:d35446f60233 5 * you may not use this file except in compliance with the License.
sam_grove 0:d35446f60233 6 * You may obtain a copy of the License at
sam_grove 0:d35446f60233 7 *
sam_grove 0:d35446f60233 8 * http://www.apache.org/licenses/LICENSE-2.0
sam_grove 0:d35446f60233 9 *
sam_grove 0:d35446f60233 10 * Unless required by applicable law or agreed to in writing, software
sam_grove 0:d35446f60233 11 * distributed under the License is distributed on an "AS IS" BASIS,
sam_grove 0:d35446f60233 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
sam_grove 0:d35446f60233 13 * See the License for the specific language governing permissions and
sam_grove 0:d35446f60233 14 * limitations under the License.
sam_grove 0:d35446f60233 15 */
sam_grove 0:d35446f60233 16
bridadan 1:291a9d61e58a 17 #ifndef NETWORKINTERFACE_H
bridadan 1:291a9d61e58a 18 #define NETWORKINTERFACE_H
bridadan 1:291a9d61e58a 19
bridadan 1:291a9d61e58a 20 /** NetworkInterface class.
bridadan 1:291a9d61e58a 21 * This is a common interface that is shared between all hardware that connect
bridadan 1:291a9d61e58a 22 * to a network over IP.
bridadan 1:291a9d61e58a 23 */
bridadan 1:291a9d61e58a 24 class NetworkInterface {
sam_grove 0:d35446f60233 25
bridadan 1:291a9d61e58a 26 public:
bridadan 1:291a9d61e58a 27
bridadan 1:291a9d61e58a 28 /**
bridadan 1:291a9d61e58a 29 * Initialize the network interface with DHCP.
bridadan 1:291a9d61e58a 30 *
bridadan 1:291a9d61e58a 31 * \returns 0 on success, a negative number on failure
bridadan 1:291a9d61e58a 32 */
bridadan 1:291a9d61e58a 33 virtual int init() = 0;
bridadan 1:291a9d61e58a 34
bridadan 1:291a9d61e58a 35 /**
bridadan 1:291a9d61e58a 36 * Initialize the network interface with a static IP address.
bridadan 1:291a9d61e58a 37 *
bridadan 1:291a9d61e58a 38 * @param ip The static IP address to use
bridadan 1:291a9d61e58a 39 * @param mask The IP address mask
bridadan 1:291a9d61e58a 40 * @param gateway The gateway to use
bridadan 1:291a9d61e58a 41 *
bridadan 1:291a9d61e58a 42 * \returns 0 on success, a negative number on failure
bridadan 1:291a9d61e58a 43 */
bridadan 2:ce08986b18b5 44 virtual int init(char *ip, char *mask, char *gateway) = 0;
bridadan 1:291a9d61e58a 45
bridadan 1:291a9d61e58a 46 /**
bridadan 1:291a9d61e58a 47 * Start the interface, using DHCP if needed.
bridadan 1:291a9d61e58a 48 *
bridadan 1:291a9d61e58a 49 * @param timeout_ms Time in miliseconds to wait while attempting to connect before timing out
bridadan 1:291a9d61e58a 50 *
bridadan 1:291a9d61e58a 51 * \returns 0 on success, a negative number on failure
bridadan 1:291a9d61e58a 52 */
bridadan 1:291a9d61e58a 53 virtual int connect(unsigned int timeout_ms=15000) = 0;
bridadan 1:291a9d61e58a 54
bridadan 1:291a9d61e58a 55 /**
bridadan 1:291a9d61e58a 56 * Stop the interface, bringing down dhcp if necessary.
bridadan 1:291a9d61e58a 57 *
bridadan 1:291a9d61e58a 58 * \returns 0 on success, a negative number on failure
bridadan 1:291a9d61e58a 59 */
bridadan 1:291a9d61e58a 60 virtual int disconnect() = 0;
bridadan 1:291a9d61e58a 61
bridadan 1:291a9d61e58a 62 /**
bridadan 1:291a9d61e58a 63 * Get the current IP address.
bridadan 1:291a9d61e58a 64 *
bridadan 1:291a9d61e58a 65 * \returns a pointer to a string containing the IP address.
bridadan 1:291a9d61e58a 66 */
bridadan 1:291a9d61e58a 67 virtual char* getIPAddress() = 0;
bridadan 1:291a9d61e58a 68
bridadan 1:291a9d61e58a 69 /**
bridadan 1:291a9d61e58a 70 * Get the current gateway address.
bridadan 1:291a9d61e58a 71 *
bridadan 1:291a9d61e58a 72 * \returns a pointer to a string containing the gateway address.
bridadan 1:291a9d61e58a 73 */
bridadan 1:291a9d61e58a 74 virtual char* getGateway() = 0;
bridadan 1:291a9d61e58a 75
bridadan 1:291a9d61e58a 76
bridadan 1:291a9d61e58a 77 /**
bridadan 1:291a9d61e58a 78 * Get the current network mask.
bridadan 1:291a9d61e58a 79 *
bridadan 1:291a9d61e58a 80 * \returns a pointer to a string containing the network mask.
bridadan 1:291a9d61e58a 81 */
bridadan 1:291a9d61e58a 82 virtual char* getNetworkMask() = 0;
bridadan 1:291a9d61e58a 83
bridadan 1:291a9d61e58a 84 /**
bridadan 1:291a9d61e58a 85 * Get the current status of the interface connection.
bridadan 1:291a9d61e58a 86 *
bridadan 1:291a9d61e58a 87 * \returns true if connected, false otherwise.
bridadan 1:291a9d61e58a 88 */
bridadan 1:291a9d61e58a 89 virtual bool isConnected(void) = 0;
bridadan 1:291a9d61e58a 90 };
bridadan 1:291a9d61e58a 91
bridadan 1:291a9d61e58a 92 #endif