Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: ESP8266
Dependents: ESP8266InterfaceTests HelloESP8266Interface
Fork of ESP8266Interface by
ESP8266Interface.cpp
- Committer:
- Christopher Haster
- Date:
- 2016-02-24
- Branch:
- api-changes
- Revision:
- 39:7e85bf8003fa
- Parent:
- 38:eb1e46561a19
- Child:
- 40:83c6b4129468
File content as of revision 39:7e85bf8003fa:
/* ESP8266Interface Example
* Copyright (c) 2015 ARM Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "ESP8266Interface.h"
#include "ESP8266SocketInterface.h"
ESP8266Interface::ESP8266Interface(PinName tx, PinName rx, bool debug)
: _esp(tx, rx, debug)
{
memset(_ids, 0, sizeof(_ids));
}
int32_t ESP8266Interface::connect(
const char *ap,
const char *pass_phrase,
wifi_security_t)
{
_esp.setTimeout(getTimeout());
if (!_esp.startup(3)) return -1;
if (!_esp.dhcp(true, 1)) return -1;
if (!_esp.connect(ap, pass_phrase)) return -1;
_ip_address = _esp.getIPAddress();
_mac_address = _esp.getMACAddress();
if (!_ip_address || !_mac_address) return -1;
return 0;
}
int32_t ESP8266Interface::disconnect()
{
if (!_esp.disconnect()) return -1;
return 0;
}
const char *ESP8266Interface::getIPAddress()
{
return _ip_address;
}
const char *ESP8266Interface::getMACAddress()
{
return _mac_address;
}
void ESP8266Interface::setTimeout(uint32_t timeout)
{
NetworkInterface::setTimeout(timeout);
_esp.setTimeout(timeout);
}
SocketInterface *ESP8266Interface::createSocket(socket_protocol_t proto)
{
// Look for an unused socket
int id = -1;
for (int i = 0; i < ESP8266_SOCKET_COUNT; i++) {
if (!_ids[i]) {
id = i;
_ids[i] = true;
break;
}
}
if (id == -1) {
return 0;
}
return new ESP8266SocketInterface(&_esp, proto, id);
}
void ESP8266Interface::destroySocket(SocketInterface *iface)
{
ESP8266SocketInterface *socket = (ESP8266SocketInterface *)iface;
_ids[socket->getID()] = false;
delete socket;
}
