modified by ohneta

Dependents:   HelloESP8266Interface_mine

Fork of NetworkSocketAPI by NetworkSocketAPI

Committer:
sam_grove
Date:
Thu May 28 20:00:36 2015 +0000
Revision:
3:167dd63981b6
Parent:
2:ce08986b18b5
Child:
4:f09f0932db4a
Update API and force const correctness

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 3:167dd63981b6 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 */
sam_grove 3:167dd63981b6 24 class NetworkInterface
sam_grove 3:167dd63981b6 25 {
bridadan 1:291a9d61e58a 26 public:
sam_grove 3:167dd63981b6 27 typedef enum {
sam_grove 3:167dd63981b6 28 NI_NONE = 0,
sam_grove 3:167dd63981b6 29 NI_WPA2,
sam_grove 3:167dd63981b6 30 } ni_security_t;
bridadan 1:291a9d61e58a 31
bridadan 1:291a9d61e58a 32 /**
bridadan 1:291a9d61e58a 33 * Initialize the network interface with DHCP.
bridadan 1:291a9d61e58a 34 *
bridadan 1:291a9d61e58a 35 * \returns 0 on success, a negative number on failure
bridadan 1:291a9d61e58a 36 */
sam_grove 3:167dd63981b6 37 virtual int init(void) const = 0;
sam_grove 3:167dd63981b6 38
bridadan 1:291a9d61e58a 39 /**
bridadan 1:291a9d61e58a 40 * Initialize the network interface with a static IP address.
bridadan 1:291a9d61e58a 41 *
bridadan 1:291a9d61e58a 42 * @param ip The static IP address to use
bridadan 1:291a9d61e58a 43 * @param mask The IP address mask
bridadan 1:291a9d61e58a 44 * @param gateway The gateway to use
bridadan 1:291a9d61e58a 45 *
bridadan 1:291a9d61e58a 46 * \returns 0 on success, a negative number on failure
bridadan 1:291a9d61e58a 47 */
sam_grove 3:167dd63981b6 48 int init(const char *ip, const char *mask, const char *gateway) const {
sam_grove 3:167dd63981b6 49 return -1;
sam_grove 3:167dd63981b6 50 }
sam_grove 3:167dd63981b6 51
sam_grove 3:167dd63981b6 52 /**
sam_grove 3:167dd63981b6 53 * Start the interface, using DHCP if needed.
sam_grove 3:167dd63981b6 54 *
sam_grove 3:167dd63981b6 55 * @param timeout_ms Time in miliseconds to wait while attempting to connect before timing out
sam_grove 3:167dd63981b6 56 *
sam_grove 3:167dd63981b6 57 * \returns 0 on success, a negative number on failure
sam_grove 3:167dd63981b6 58 */
sam_grove 3:167dd63981b6 59 virtual int connect(const unsigned int timeout_ms=15000) const {
sam_grove 3:167dd63981b6 60 return -1;
sam_grove 3:167dd63981b6 61 }
sam_grove 3:167dd63981b6 62
bridadan 1:291a9d61e58a 63 /**
bridadan 1:291a9d61e58a 64 * Start the interface, using DHCP if needed.
bridadan 1:291a9d61e58a 65 *
bridadan 1:291a9d61e58a 66 * @param timeout_ms Time in miliseconds to wait while attempting to connect before timing out
bridadan 1:291a9d61e58a 67 *
bridadan 1:291a9d61e58a 68 * \returns 0 on success, a negative number on failure
bridadan 1:291a9d61e58a 69 */
sam_grove 3:167dd63981b6 70 virtual int connect(const char *ap, const char *pass_phrase = 0, const ni_security_t security = NI_NONE, const unsigned int timeout_ms=15000) const {
sam_grove 3:167dd63981b6 71 return -1;
sam_grove 3:167dd63981b6 72 }
sam_grove 3:167dd63981b6 73
bridadan 1:291a9d61e58a 74 /**
bridadan 1:291a9d61e58a 75 * Stop the interface, bringing down dhcp if necessary.
bridadan 1:291a9d61e58a 76 *
bridadan 1:291a9d61e58a 77 * \returns 0 on success, a negative number on failure
bridadan 1:291a9d61e58a 78 */
sam_grove 3:167dd63981b6 79 virtual int disconnect(void) const = 0;
sam_grove 3:167dd63981b6 80
bridadan 1:291a9d61e58a 81 /**
bridadan 1:291a9d61e58a 82 * Get the current IP address.
bridadan 1:291a9d61e58a 83 *
bridadan 1:291a9d61e58a 84 * \returns a pointer to a string containing the IP address.
bridadan 1:291a9d61e58a 85 */
sam_grove 3:167dd63981b6 86 virtual char *getIPAddress(void) const = 0;
sam_grove 3:167dd63981b6 87
bridadan 1:291a9d61e58a 88 /**
bridadan 1:291a9d61e58a 89 * Get the current gateway address.
bridadan 1:291a9d61e58a 90 *
bridadan 1:291a9d61e58a 91 * \returns a pointer to a string containing the gateway address.
bridadan 1:291a9d61e58a 92 */
sam_grove 3:167dd63981b6 93 virtual char *getGateway(void) const = 0;
sam_grove 3:167dd63981b6 94
sam_grove 3:167dd63981b6 95
bridadan 1:291a9d61e58a 96 /**
bridadan 1:291a9d61e58a 97 * Get the current network mask.
bridadan 1:291a9d61e58a 98 *
bridadan 1:291a9d61e58a 99 * \returns a pointer to a string containing the network mask.
bridadan 1:291a9d61e58a 100 */
sam_grove 3:167dd63981b6 101 virtual char *getNetworkMask(void) const = 0;
sam_grove 3:167dd63981b6 102
sam_grove 3:167dd63981b6 103 /**
sam_grove 3:167dd63981b6 104 * Get the devices MAC address.
sam_grove 3:167dd63981b6 105 *
sam_grove 3:167dd63981b6 106 * \returns a pointer to a string containing the mac address.
sam_grove 3:167dd63981b6 107 */
sam_grove 3:167dd63981b6 108 virtual char *getMACAddress(void) const = 0;
sam_grove 3:167dd63981b6 109
bridadan 1:291a9d61e58a 110 /**
bridadan 1:291a9d61e58a 111 * Get the current status of the interface connection.
bridadan 1:291a9d61e58a 112 *
bridadan 1:291a9d61e58a 113 * \returns true if connected, false otherwise.
bridadan 1:291a9d61e58a 114 */
sam_grove 3:167dd63981b6 115 virtual int isConnected(void) const = 0;
bridadan 1:291a9d61e58a 116 };
bridadan 1:291a9d61e58a 117
bridadan 1:291a9d61e58a 118 #endif