Host library for controlling a WiConnect enabled Wi-Fi module.
Dependents: wiconnect-ota_example wiconnect-web_setup_example wiconnect-test-console wiconnect-tcp_server_example ... more
types/WiconnectSocket.h
- Committer:
- dan_ackme
- Date:
- 2014-09-06
- Revision:
- 24:e27e23297f02
- Parent:
- 21:17bb3eddcbae
File content as of revision 24:e27e23297f02:
/** * ACKme WiConnect Host Library is licensed under the BSD licence: * * Copyright (c)2014 ACKme Networks. * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. */ #pragma once #include "WiconnectTypes.h" namespace wiconnect { /** * @ingroup api_socket_types * * @brief Connection object to remote server. * */ class WiconnectSocket { public: WiconnectSocket(int rxBufferLen = 0, void *rxBuffer = NULL, int txBufferLen = 0, void *txBuffer = NULL); ~WiconnectSocket(); WiconnectResult close(); WiconnectResult poll(bool *rxDataAvailablePtr, bool autoClose = false); WiconnectResult write(const void* buffer, int length, bool flush = true); WiconnectResult write(int length, bool flush = true); WiconnectResult read(void* buffer, uint16_t maxLength, uint16_t *bytesRead); WiconnectResult read(uint8_t **bufferPtr = NULL, uint16_t *bytesReadPtr = NULL); WiconnectResult putc(uint8_t c, bool flush = false); WiconnectResult puts(const char *s, bool flush = true); WiconnectResult getc(uint8_t *c); WiconnectResult printf(const char* format, ...); WiconnectResult flushTxBuffer(); void clearRxBuffer(); uint8_t *getTxBuffer(); int getTxBufferSize(); int getTxBufferBytesPending(); uint8_t *getRxBuffer(); int getRxBufferSize(); int getRxBufferBytesPending(); bool isConnected(); SocketType getType(); const char* getHost(); uint16_t getLocalPort(); uint16_t getRemotePort(); uint8_t getHandle(); protected: bool connected; SocketType type; uint8_t handle; char host[WICONNECT_MAX_HOST_SIZE]; uint16_t localPort; uint16_t remotePort; Wiconnect *wiconnect; Buffer txBuffer; Buffer rxBuffer; WiconnectResult init(uint8_t handle, SocketType type, const char *host, uint16_t remotePort, uint16_t localPort); WiconnectResult writeDataCallback(void *user, void *data, int maxReadSize, int *bytesRead); friend class SocketInterface; }; }