modified by ohneta

Dependents:   HelloESP8266Interface_mine

Fork of NetworkSocketAPI by NetworkSocketAPI

Committer:
bridadan
Date:
Thu May 14 01:37:53 2015 +0000
Revision:
1:291a9d61e58a
Parent:
0:d35446f60233
Child:
2:ce08986b18b5
Initial commit

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 1:291a9d61e58a 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 * Start the interface, specifically for wifi based hardware, using DHCP if needed. This only needs to be implemented on wifi hardware.
bridadan 1:291a9d61e58a 57 *
bridadan 1:291a9d61e58a 58 * @param ssid The SSID of the access point
bridadan 1:291a9d61e58a 59 * @param phrase The passphrase, if needed, to connect
bridadan 1:291a9d61e58a 60 * @param gateway The security type of the access point
bridadan 1:291a9d61e58a 61 *
bridadan 1:291a9d61e58a 62 * \returns 0 on success, a negative number on failure
bridadan 1:291a9d61e58a 63 */
bridadan 1:291a9d61e58a 64 virtual int connect(char* ssid, char* phrase, char* security_type) = 0;
bridadan 1:291a9d61e58a 65
bridadan 1:291a9d61e58a 66 /**
bridadan 1:291a9d61e58a 67 * Stop the interface, bringing down dhcp if necessary.
bridadan 1:291a9d61e58a 68 *
bridadan 1:291a9d61e58a 69 * \returns 0 on success, a negative number on failure
bridadan 1:291a9d61e58a 70 */
bridadan 1:291a9d61e58a 71 virtual int disconnect() = 0;
bridadan 1:291a9d61e58a 72
bridadan 1:291a9d61e58a 73 /**
bridadan 1:291a9d61e58a 74 * Get the current IP address.
bridadan 1:291a9d61e58a 75 *
bridadan 1:291a9d61e58a 76 * \returns a pointer to a string containing the IP address.
bridadan 1:291a9d61e58a 77 */
bridadan 1:291a9d61e58a 78 virtual char* getIPAddress() = 0;
bridadan 1:291a9d61e58a 79
bridadan 1:291a9d61e58a 80 /**
bridadan 1:291a9d61e58a 81 * Get the current gateway address.
bridadan 1:291a9d61e58a 82 *
bridadan 1:291a9d61e58a 83 * \returns a pointer to a string containing the gateway address.
bridadan 1:291a9d61e58a 84 */
bridadan 1:291a9d61e58a 85 virtual char* getGateway() = 0;
bridadan 1:291a9d61e58a 86
bridadan 1:291a9d61e58a 87
bridadan 1:291a9d61e58a 88 /**
bridadan 1:291a9d61e58a 89 * Get the current network mask.
bridadan 1:291a9d61e58a 90 *
bridadan 1:291a9d61e58a 91 * \returns a pointer to a string containing the network mask.
bridadan 1:291a9d61e58a 92 */
bridadan 1:291a9d61e58a 93 virtual char* getNetworkMask() = 0;
bridadan 1:291a9d61e58a 94
bridadan 1:291a9d61e58a 95 /**
bridadan 1:291a9d61e58a 96 * Get the current status of the interface connection.
bridadan 1:291a9d61e58a 97 *
bridadan 1:291a9d61e58a 98 * \returns true if connected, false otherwise.
bridadan 1:291a9d61e58a 99 */
bridadan 1:291a9d61e58a 100 virtual bool isConnected(void) = 0;
bridadan 1:291a9d61e58a 101 };
bridadan 1:291a9d61e58a 102
bridadan 1:291a9d61e58a 103 #endif