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@21:17bb3eddcbae, 2014-08-26 (annotated)
- Committer:
- dan_ackme
- Date:
- Tue Aug 26 16:38:19 2014 -0700
- Revision:
- 21:17bb3eddcbae
- Parent:
- 17:7268f365676b
- Child:
- 24:e27e23297f02
Add TCP server API
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dan_ackme | 17:7268f365676b | 1 | /** |
dan_ackme | 17:7268f365676b | 2 | * ACKme WiConnect Host Library is licensed under the BSD licence: |
dan_ackme | 17:7268f365676b | 3 | * |
dan_ackme | 17:7268f365676b | 4 | * Copyright (c)2014 ACKme Networks. |
dan_ackme | 17:7268f365676b | 5 | * All rights reserved. |
dan_ackme | 17:7268f365676b | 6 | * |
dan_ackme | 17:7268f365676b | 7 | * Redistribution and use in source and binary forms, with or without modification, |
dan_ackme | 17:7268f365676b | 8 | * are permitted provided that the following conditions are met: |
dan_ackme | 17:7268f365676b | 9 | * |
dan_ackme | 17:7268f365676b | 10 | * 1. Redistributions of source code must retain the above copyright notice, |
dan_ackme | 17:7268f365676b | 11 | * this list of conditions and the following disclaimer. |
dan_ackme | 17:7268f365676b | 12 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
dan_ackme | 17:7268f365676b | 13 | * this list of conditions and the following disclaimer in the documentation |
dan_ackme | 17:7268f365676b | 14 | * and/or other materials provided with the distribution. |
dan_ackme | 17:7268f365676b | 15 | * 3. The name of the author may not be used to endorse or promote products |
dan_ackme | 17:7268f365676b | 16 | * derived from this software without specific prior written permission. |
dan_ackme | 17:7268f365676b | 17 | * |
dan_ackme | 17:7268f365676b | 18 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED |
dan_ackme | 17:7268f365676b | 19 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
dan_ackme | 17:7268f365676b | 20 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT |
dan_ackme | 17:7268f365676b | 21 | * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
dan_ackme | 17:7268f365676b | 22 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT |
dan_ackme | 17:7268f365676b | 23 | * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
dan_ackme | 17:7268f365676b | 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
dan_ackme | 17:7268f365676b | 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
dan_ackme | 17:7268f365676b | 26 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY |
dan_ackme | 17:7268f365676b | 27 | * OF SUCH DAMAGE. |
dan_ackme | 17:7268f365676b | 28 | */ |
dan_ackme | 17:7268f365676b | 29 | #pragma once |
dan_ackme | 17:7268f365676b | 30 | |
dan_ackme | 17:7268f365676b | 31 | |
dan_ackme | 17:7268f365676b | 32 | #include "WiconnectTypes.h" |
dan_ackme | 17:7268f365676b | 33 | |
dan_ackme | 17:7268f365676b | 34 | namespace wiconnect |
dan_ackme | 17:7268f365676b | 35 | { |
dan_ackme | 17:7268f365676b | 36 | |
dan_ackme | 17:7268f365676b | 37 | /** |
dan_ackme | 17:7268f365676b | 38 | * @ingroup api_socket_types |
dan_ackme | 17:7268f365676b | 39 | * |
dan_ackme | 17:7268f365676b | 40 | * @brief Connection object to remote server. |
dan_ackme | 17:7268f365676b | 41 | * |
dan_ackme | 17:7268f365676b | 42 | */ |
dan_ackme | 17:7268f365676b | 43 | class WiconnectSocket |
dan_ackme | 17:7268f365676b | 44 | { |
dan_ackme | 17:7268f365676b | 45 | public: |
dan_ackme | 17:7268f365676b | 46 | WiconnectSocket(int rxBufferLen = 0, void *rxBuffer = NULL, int txBufferLen = 0, void *txBuffer = NULL); |
dan_ackme | 17:7268f365676b | 47 | ~WiconnectSocket(); |
dan_ackme | 17:7268f365676b | 48 | |
dan_ackme | 17:7268f365676b | 49 | WiconnectResult close(); |
dan_ackme | 17:7268f365676b | 50 | WiconnectResult poll(bool *rxDataAvailablePtr, bool autoClose = false); |
dan_ackme | 21:17bb3eddcbae | 51 | WiconnectResult write(const void* buffer, int length, bool flush = true); |
dan_ackme | 17:7268f365676b | 52 | WiconnectResult write(int length, bool flush = true); |
dan_ackme | 17:7268f365676b | 53 | WiconnectResult read(void* buffer, uint16_t maxLength, uint16_t *bytesRead); |
dan_ackme | 17:7268f365676b | 54 | WiconnectResult read(uint8_t **bufferPtr = NULL, uint16_t *bytesReadPtr = NULL); |
dan_ackme | 17:7268f365676b | 55 | WiconnectResult putc(uint8_t c, bool flush = false); |
dan_ackme | 21:17bb3eddcbae | 56 | WiconnectResult puts(const char *s, bool flush = true); |
dan_ackme | 17:7268f365676b | 57 | WiconnectResult getc(uint8_t *c); |
dan_ackme | 17:7268f365676b | 58 | WiconnectResult printf(const char* format, ...); |
dan_ackme | 17:7268f365676b | 59 | WiconnectResult flushTxBuffer(); |
dan_ackme | 17:7268f365676b | 60 | void clearRxBuffer(); |
dan_ackme | 17:7268f365676b | 61 | |
dan_ackme | 17:7268f365676b | 62 | uint8_t *getTxBuffer(); |
dan_ackme | 17:7268f365676b | 63 | int getTxBufferSize(); |
dan_ackme | 17:7268f365676b | 64 | int getTxBufferBytesPending(); |
dan_ackme | 17:7268f365676b | 65 | uint8_t *getRxBuffer(); |
dan_ackme | 17:7268f365676b | 66 | int getRxBufferSize(); |
dan_ackme | 17:7268f365676b | 67 | int getRxBufferBytesPending(); |
dan_ackme | 17:7268f365676b | 68 | |
dan_ackme | 17:7268f365676b | 69 | bool isConnected(); |
dan_ackme | 17:7268f365676b | 70 | SocketType getType(); |
dan_ackme | 17:7268f365676b | 71 | const char* getHost(); |
dan_ackme | 17:7268f365676b | 72 | uint16_t getLocalPort(); |
dan_ackme | 17:7268f365676b | 73 | uint16_t getRemotePort(); |
dan_ackme | 17:7268f365676b | 74 | uint8_t getHandle(); |
dan_ackme | 17:7268f365676b | 75 | |
dan_ackme | 17:7268f365676b | 76 | protected: |
dan_ackme | 17:7268f365676b | 77 | bool connected; |
dan_ackme | 17:7268f365676b | 78 | SocketType type; |
dan_ackme | 17:7268f365676b | 79 | uint8_t handle; |
dan_ackme | 17:7268f365676b | 80 | char host[WICONNECT_MAX_HOST_SIZE]; |
dan_ackme | 17:7268f365676b | 81 | uint16_t localPort; |
dan_ackme | 17:7268f365676b | 82 | uint16_t remotePort; |
dan_ackme | 17:7268f365676b | 83 | Wiconnect *wiconnect; |
dan_ackme | 17:7268f365676b | 84 | Buffer txBuffer; |
dan_ackme | 17:7268f365676b | 85 | Buffer rxBuffer; |
dan_ackme | 17:7268f365676b | 86 | |
dan_ackme | 17:7268f365676b | 87 | WiconnectResult init(uint8_t handle, SocketType type, const char *host, uint16_t remotePort, uint16_t localPort); |
dan_ackme | 17:7268f365676b | 88 | |
dan_ackme | 17:7268f365676b | 89 | WiconnectResult writeDataCallback(void *user, void *data, int maxReadSize, int *bytesRead); |
dan_ackme | 17:7268f365676b | 90 | |
dan_ackme | 17:7268f365676b | 91 | friend class SocketInterface; |
dan_ackme | 17:7268f365676b | 92 | }; |
dan_ackme | 17:7268f365676b | 93 | |
dan_ackme | 17:7268f365676b | 94 | |
dan_ackme | 17:7268f365676b | 95 | } |