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: BufferedSerial
Dependents: ThinkSpeak_Test roam_v1 roam_v2 finalv3
Fork of GPRSInterface by
Socket/TCPSocketConnection.cpp
- Committer:
- lawliet
- Date:
- 2014-02-25
- Revision:
- 0:8ccbd963e74d
- Child:
- 3:acf2ea413e72
File content as of revision 0:8ccbd963e74d:
/*
TCPSocketConnection.cpp
2014 Copyright (c) Seeed Technology Inc. All right reserved.
Author:lawliet zou(lawliet.zou@gmail.com)
2014-2-24
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "TCPSocketConnection.h"
static int size;
TCPSocketConnection::TCPSocketConnection()
{
size = 0;
}
int TCPSocketConnection::connect(const char* host, const int port)
{
if (_sock_fd < 0) {
_sock_fd = gprs->new_socket();
if (_sock_fd < 0) {
return -1;
}
}
if (!gprs->connect(_sock_fd, TCP, host, port)) {
return false;
}
return true;
}
bool TCPSocketConnection::is_connected(void)
{
return gprs->is_connected(_sock_fd);
}
int TCPSocketConnection::send(char* data, int length)
{
int size = gprs->wait_writeable(_sock_fd, length);
if (size < 0) {
return -1;
}
if (size > length) {
size = length;
}
return gprs->send(_sock_fd, data, size);
}
int TCPSocketConnection::send_all(char* data, int length)
{
return send(data,length);
}
int TCPSocketConnection::receive(char* data, int length)
{
if (size < 0) {
return -1;
}
if(size == 0) {
size = gprs->wait_readable(_sock_fd, DEFAULT_TIMEOUT);
}
if(size > length) {
size = size - length;
} else {
length = size;
size = -1;
}
return gprs->recv(_sock_fd, data, length);
}
int TCPSocketConnection::receive_all(char* data, int length)
{
return receive(data,length);
}
