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

Committer:
dan_ackme
Date:
Tue Aug 12 02:34:46 2014 -0700
Revision:
11:ea484e1b7fc4
Parent:
1:6ec9998427ad
Child:
13:2b51f5267c92
updated documnetation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan_ackme 0:ea85c4bb5e1f 1 /*
dan_ackme 0:ea85c4bb5e1f 2 * Copyright 2014, ACKme Networks
dan_ackme 0:ea85c4bb5e1f 3 * All Rights Reserved.
dan_ackme 0:ea85c4bb5e1f 4 *
dan_ackme 0:ea85c4bb5e1f 5 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of ACKme Networks;
dan_ackme 0:ea85c4bb5e1f 6 * the contents of this file may not be disclosed to third parties, copied
dan_ackme 0:ea85c4bb5e1f 7 * or duplicated in any form, in whole or in part, without the prior
dan_ackme 0:ea85c4bb5e1f 8 * written permission of ACKme Networks.
dan_ackme 0:ea85c4bb5e1f 9 */
dan_ackme 0:ea85c4bb5e1f 10
dan_ackme 0:ea85c4bb5e1f 11 #pragma once
dan_ackme 0:ea85c4bb5e1f 12
dan_ackme 0:ea85c4bb5e1f 13 #include "Wiconnect.h"
dan_ackme 0:ea85c4bb5e1f 14 #include "types/Socket.h"
dan_ackme 0:ea85c4bb5e1f 15 #include "types/SocketIrqHandlerMap.h"
dan_ackme 0:ea85c4bb5e1f 16
dan_ackme 0:ea85c4bb5e1f 17
dan_ackme 11:ea484e1b7fc4 18 /**
dan_ackme 11:ea484e1b7fc4 19 * @namespace wiconnect
dan_ackme 11:ea484e1b7fc4 20 */
dan_ackme 0:ea85c4bb5e1f 21 namespace wiconnect {
dan_ackme 0:ea85c4bb5e1f 22
dan_ackme 0:ea85c4bb5e1f 23
dan_ackme 11:ea484e1b7fc4 24 /**
dan_ackme 11:ea484e1b7fc4 25 * @ingroup types_socket
dan_ackme 11:ea484e1b7fc4 26 *
dan_ackme 11:ea484e1b7fc4 27 * @brief The provides an interface for creating TCP/UDP/TLS/HTTP client sockets.
dan_ackme 11:ea484e1b7fc4 28 * A client socket connects to a remote server.
dan_ackme 11:ea484e1b7fc4 29 *
dan_ackme 11:ea484e1b7fc4 30 */
dan_ackme 0:ea85c4bb5e1f 31 class SocketInterface
dan_ackme 0:ea85c4bb5e1f 32 {
dan_ackme 0:ea85c4bb5e1f 33 public:
dan_ackme 11:ea484e1b7fc4 34 /**
dan_ackme 11:ea484e1b7fc4 35 * @ingroup api_socket_misc
dan_ackme 11:ea484e1b7fc4 36 *
dan_ackme 11:ea484e1b7fc4 37 * @brief Close all opened sockets.
dan_ackme 11:ea484e1b7fc4 38 */
dan_ackme 0:ea85c4bb5e1f 39 WiconnectResult closeAllSockets();
dan_ackme 11:ea484e1b7fc4 40
dan_ackme 11:ea484e1b7fc4 41 /**
dan_ackme 11:ea484e1b7fc4 42 * @ingroup api_socket_misc
dan_ackme 11:ea484e1b7fc4 43 *
dan_ackme 11:ea484e1b7fc4 44 * @brief Register a host pin as an external interrupt. When the external interrupt is
dan_ackme 11:ea484e1b7fc4 45 * triggered, the supplied callback is executed.
dan_ackme 11:ea484e1b7fc4 46 */
dan_ackme 0:ea85c4bb5e1f 47 WiconnectResult registerSocketIrqHandler(Pin irqPin, const Callback &handler);
dan_ackme 11:ea484e1b7fc4 48
dan_ackme 11:ea484e1b7fc4 49 /**
dan_ackme 11:ea484e1b7fc4 50 * @ingroup api_socket_misc
dan_ackme 11:ea484e1b7fc4 51 *
dan_ackme 11:ea484e1b7fc4 52 * @brief Unregister a previously registered IRQ pin.
dan_ackme 11:ea484e1b7fc4 53 */
dan_ackme 0:ea85c4bb5e1f 54 WiconnectResult unregisterSocketIrqHandler(Pin irqPin);
dan_ackme 0:ea85c4bb5e1f 55
dan_ackme 11:ea484e1b7fc4 56
dan_ackme 11:ea484e1b7fc4 57 /**
dan_ackme 11:ea484e1b7fc4 58 * @ingroup api_socket_misc
dan_ackme 11:ea484e1b7fc4 59 *
dan_ackme 11:ea484e1b7fc4 60 * @brief Connect to remote server.
dan_ackme 11:ea484e1b7fc4 61 */
dan_ackme 0:ea85c4bb5e1f 62 WiconnectResult connect(Socket &socket, SocketType type, const char *host, uint16_t remortPort, uint16_t localPort, const void *args, Pin irqPin);
dan_ackme 11:ea484e1b7fc4 63
dan_ackme 11:ea484e1b7fc4 64
dan_ackme 11:ea484e1b7fc4 65 // ------------------------------------------------------------------------
dan_ackme 11:ea484e1b7fc4 66
dan_ackme 11:ea484e1b7fc4 67 /**
dan_ackme 11:ea484e1b7fc4 68 * @ingroup api_socket_tcp
dan_ackme 11:ea484e1b7fc4 69 *
dan_ackme 11:ea484e1b7fc4 70 * @brief Connect to remote TCP server.
dan_ackme 11:ea484e1b7fc4 71 */
dan_ackme 0:ea85c4bb5e1f 72 WiconnectResult tcpConnect(Socket &socket, const char *host, uint16_t remortPort, Pin irqPin = NC);
dan_ackme 11:ea484e1b7fc4 73
dan_ackme 11:ea484e1b7fc4 74
dan_ackme 11:ea484e1b7fc4 75 // ------------------------------------------------------------------------
dan_ackme 11:ea484e1b7fc4 76
dan_ackme 11:ea484e1b7fc4 77 /**
dan_ackme 11:ea484e1b7fc4 78 * @ingroup api_socket_tls
dan_ackme 11:ea484e1b7fc4 79 *
dan_ackme 11:ea484e1b7fc4 80 * @brief Connect to remote TLS server.
dan_ackme 11:ea484e1b7fc4 81 */
dan_ackme 0:ea85c4bb5e1f 82 WiconnectResult tlsConnect(Socket &socket, const char *host, uint16_t remortPort, const char *certFilename = NULL, Pin irqPin = NC);
dan_ackme 11:ea484e1b7fc4 83
dan_ackme 11:ea484e1b7fc4 84
dan_ackme 11:ea484e1b7fc4 85 // ------------------------------------------------------------------------
dan_ackme 11:ea484e1b7fc4 86
dan_ackme 11:ea484e1b7fc4 87 /**
dan_ackme 11:ea484e1b7fc4 88 * @ingroup api_socket_udp
dan_ackme 11:ea484e1b7fc4 89 *
dan_ackme 11:ea484e1b7fc4 90 * @brief Connect to remote UDP server.
dan_ackme 11:ea484e1b7fc4 91 */
dan_ackme 0:ea85c4bb5e1f 92 WiconnectResult udpConnect(Socket &socket, const char *host, uint16_t remortPort, uint16_t localPort = SOCKET_ANY_PORT, Pin irqPin = NC);
dan_ackme 11:ea484e1b7fc4 93
dan_ackme 11:ea484e1b7fc4 94
dan_ackme 11:ea484e1b7fc4 95 // ------------------------------------------------------------------------
dan_ackme 11:ea484e1b7fc4 96
dan_ackme 11:ea484e1b7fc4 97 /**
dan_ackme 11:ea484e1b7fc4 98 * @ingroup api_socket_http
dan_ackme 11:ea484e1b7fc4 99 *
dan_ackme 11:ea484e1b7fc4 100 * @brief Connect to remote HTTP server.
dan_ackme 11:ea484e1b7fc4 101 */
dan_ackme 0:ea85c4bb5e1f 102 WiconnectResult httpConnect(Socket &socket, const char *url, const HttpSocketArgs *args);
dan_ackme 11:ea484e1b7fc4 103
dan_ackme 11:ea484e1b7fc4 104 /**
dan_ackme 11:ea484e1b7fc4 105 * @ingroup api_socket_http
dan_ackme 11:ea484e1b7fc4 106 *
dan_ackme 11:ea484e1b7fc4 107 * @brief Issue HTTP GET Request
dan_ackme 11:ea484e1b7fc4 108 */
dan_ackme 0:ea85c4bb5e1f 109 WiconnectResult httpGet(Socket &socket, const char *url, bool openOnly = false, const char *certFilename = NULL);
dan_ackme 11:ea484e1b7fc4 110
dan_ackme 11:ea484e1b7fc4 111 /**
dan_ackme 11:ea484e1b7fc4 112 * @ingroup api_socket_http
dan_ackme 11:ea484e1b7fc4 113 *
dan_ackme 11:ea484e1b7fc4 114 * @brief Issue HTTP POST Request
dan_ackme 11:ea484e1b7fc4 115 */
dan_ackme 0:ea85c4bb5e1f 116 WiconnectResult httpPost(Socket &socket, const char *url, const char *contextType, bool openOnly = true, const char *certFilename = NULL);
dan_ackme 11:ea484e1b7fc4 117
dan_ackme 11:ea484e1b7fc4 118 /**
dan_ackme 11:ea484e1b7fc4 119 * @ingroup api_socket_http
dan_ackme 11:ea484e1b7fc4 120 *
dan_ackme 11:ea484e1b7fc4 121 * @brief Issue HTTP HEAD Request
dan_ackme 11:ea484e1b7fc4 122 */
dan_ackme 0:ea85c4bb5e1f 123 WiconnectResult httpHead(Socket &socket, const char *url, const char *certFilename = NULL);
dan_ackme 11:ea484e1b7fc4 124
dan_ackme 11:ea484e1b7fc4 125 /**
dan_ackme 11:ea484e1b7fc4 126 * @ingroup api_socket_http
dan_ackme 11:ea484e1b7fc4 127 *
dan_ackme 11:ea484e1b7fc4 128 * @brief Add HTTP header key/value pair to opened HTTP request.
dan_ackme 11:ea484e1b7fc4 129 */
dan_ackme 0:ea85c4bb5e1f 130 WiconnectResult httpAddHeader(Socket &socket, const char *key, const char *value);
dan_ackme 11:ea484e1b7fc4 131
dan_ackme 11:ea484e1b7fc4 132 /**
dan_ackme 11:ea484e1b7fc4 133 * @ingroup api_socket_http
dan_ackme 11:ea484e1b7fc4 134 *
dan_ackme 11:ea484e1b7fc4 135 * @brief Get the HTTP status code from HTTP request.
dan_ackme 11:ea484e1b7fc4 136 */
dan_ackme 0:ea85c4bb5e1f 137 WiconnectResult httpGetStatus(Socket &socket, uint32_t *statusCodePtr);
dan_ackme 0:ea85c4bb5e1f 138
dan_ackme 0:ea85c4bb5e1f 139 protected:
dan_ackme 1:6ec9998427ad 140 SocketInterface(Wiconnect *wiconnect);
dan_ackme 1:6ec9998427ad 141
dan_ackme 0:ea85c4bb5e1f 142 SocketIrqHandlerMap irqHandlers;
dan_ackme 0:ea85c4bb5e1f 143
dan_ackme 0:ea85c4bb5e1f 144 private:
dan_ackme 0:ea85c4bb5e1f 145 Wiconnect *wiconnect;
dan_ackme 0:ea85c4bb5e1f 146 };
dan_ackme 0:ea85c4bb5e1f 147
dan_ackme 0:ea85c4bb5e1f 148 }