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: WncControllerK64F
Dependents: WNCProximityMqtt Pubnub_ATT_IoT_SK_WNC_sync BluemixDemo BluemixQS ... more
See the WNCInterface README in the Wiki tab for detailed information on this library.
Diff: Socket/TCPSocketConnection.cpp
- Revision:
- 26:81e520908460
- Parent:
- 25:52bad4105cac
- Child:
- 27:2dc9461c04dc
--- a/Socket/TCPSocketConnection.cpp Thu Mar 09 01:00:12 2017 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-/* =====================================================================
- Copyright © 2016, Avnet (R)
- Contributors:
- * James M Flynn, www.em.avnet.com
-
- 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.
- @file WNCInterface.cpp
- @version 1.0
- @date Sept 2016
-======================================================================== */
-
-#include "../WNCInterface.h"
-
-#include "Socket.h"
-#include "TCPSocketConnection.h"
-#include <cstring>
-
-#define READ_EVERYMS 500 //number of milliseconds between WNC socket reads
-
-TCPSocketConnection::TCPSocketConnection() :
- _is_blocking(0),
- _btimeout(0){
-}
-
-//
-// blocking is used to make the WNC keep checking for incoming data for a
-// period of time.
-//
-void TCPSocketConnection::set_blocking (bool blocking, unsigned int timeout) {
- _is_blocking = blocking; // true if we want to wait for request
- _btimeout = timeout; // user specs msec
-
- CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), void);
- M_LOCK;
- WNCInterface::_pwnc->setReadRetryWait(0, 0);
- WNCInterface::_pwnc->setReadRetries(0, 0);
- M_ULOCK;
-}
-
-
-int TCPSocketConnection::connect(const char* host, const int port) {
- Socket::connect((char*)host, SOCK_STREAM, port);
- _is_blocking = false; // start out not blocking, user will set it if desired
- return ( WNCInterface::_pwnc->getWncStatus() == WncController_fk::WncController::WNC_ON )? 0:-1;
-}
-
-bool TCPSocketConnection::is_connected(void) {
- return ( WNCInterface::_pwnc->getWncStatus() == WncController_fk::WncController::WNC_ON )? 1:0;
-}
-
-int TCPSocketConnection::send(char* data, int length) {
- int ret = -1;
-
- WncController_fk::WncController::WncState_e s = WNCInterface::_pwnc->getWncStatus();
-
- CHK_WNCFE(( s == FATAL_FLAG ), fail);
-
- if( s == WncController_fk::WncController::WNC_ON ) {
- M_LOCK;
- if( WNCInterface::_pwnc->write(0, (const uint8_t*)data, length) )
- ret = length;
- M_ULOCK;
- }
- return ret;
-}
-
-int TCPSocketConnection::receive(char *readBuf, int length) {
- Timer t;
- size_t done, cnt;
- int ret=-1;
- WncController_fk::WncController::WncState_e s = WNCInterface::_pwnc->getWncStatus();
-
- CHK_WNCFE(( s == FATAL_FLAG ), fail);
- if( s != WncController_fk::WncController::WNC_ON )
- return ret;
-
- M_LOCK;
- t.start();
- do {
- if( !(t.read_ms() % READ_EVERYMS) )
- cnt = WNCInterface::_pwnc->read(0, (uint8_t *)readBuf, (uint32_t) length);
- if( _is_blocking )
- done = cnt;
- else
- done = cnt | (t.read_ms() > _btimeout);
- }
- while( !done );
- t.stop();
- M_ULOCK;
-
- if( WNCInterface::_pwnc->getWncStatus() == WNC_GOOD ) {
- //readBuf[cnt] = '\0';
- ret = (int)cnt;
- }
- else
- ret = -1;
-
- return ret;
-}
-
-int TCPSocketConnection::send_all(char* data, int length) {
- return send(data,length);
-}
-
-int TCPSocketConnection::receive_all(char* data, int length) {
- return receive(data,length);
-}
-
-int TCPSocketConnection::close(void) {
- Socket::disconnect();
- M_LOCK;
- int ret = ( WNCInterface::_pwnc->getWncStatus() == WncController_fk::WncController::WNC_ON )? 0:-1;
- M_ULOCK;
- return ret;
-}
-

