Brandon Fictorie / Mbed 2 deprecated BF_Websocket

Dependencies:   mbed

Committer:
bfictorie
Date:
Sun Mar 25 17:26:30 2012 +0000
Revision:
0:8cdad1c73e8e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bfictorie 0:8cdad1c73e8e 1 /*
bfictorie 0:8cdad1c73e8e 2 * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
bfictorie 0:8cdad1c73e8e 3 * All rights reserved.
bfictorie 0:8cdad1c73e8e 4 *
bfictorie 0:8cdad1c73e8e 5 * Redistribution and use in source and binary forms, with or without modification,
bfictorie 0:8cdad1c73e8e 6 * are permitted provided that the following conditions are met:
bfictorie 0:8cdad1c73e8e 7 *
bfictorie 0:8cdad1c73e8e 8 * 1. Redistributions of source code must retain the above copyright notice,
bfictorie 0:8cdad1c73e8e 9 * this list of conditions and the following disclaimer.
bfictorie 0:8cdad1c73e8e 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
bfictorie 0:8cdad1c73e8e 11 * this list of conditions and the following disclaimer in the documentation
bfictorie 0:8cdad1c73e8e 12 * and/or other materials provided with the distribution.
bfictorie 0:8cdad1c73e8e 13 * 3. The name of the author may not be used to endorse or promote products
bfictorie 0:8cdad1c73e8e 14 * derived from this software without specific prior written permission.
bfictorie 0:8cdad1c73e8e 15 *
bfictorie 0:8cdad1c73e8e 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
bfictorie 0:8cdad1c73e8e 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
bfictorie 0:8cdad1c73e8e 18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
bfictorie 0:8cdad1c73e8e 19 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
bfictorie 0:8cdad1c73e8e 20 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
bfictorie 0:8cdad1c73e8e 21 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
bfictorie 0:8cdad1c73e8e 22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
bfictorie 0:8cdad1c73e8e 23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
bfictorie 0:8cdad1c73e8e 24 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
bfictorie 0:8cdad1c73e8e 25 * OF SUCH DAMAGE.
bfictorie 0:8cdad1c73e8e 26 *
bfictorie 0:8cdad1c73e8e 27 * This file is part of the lwIP TCP/IP stack.
bfictorie 0:8cdad1c73e8e 28 *
bfictorie 0:8cdad1c73e8e 29 * Author: Adam Dunkels <adam@sics.se>
bfictorie 0:8cdad1c73e8e 30 *
bfictorie 0:8cdad1c73e8e 31 */
bfictorie 0:8cdad1c73e8e 32 #ifndef __LWIP_TCPIP_H__
bfictorie 0:8cdad1c73e8e 33 #define __LWIP_TCPIP_H__
bfictorie 0:8cdad1c73e8e 34
bfictorie 0:8cdad1c73e8e 35 #include "lwip/opt.h"
bfictorie 0:8cdad1c73e8e 36
bfictorie 0:8cdad1c73e8e 37 #if !NO_SYS /* don't build if not configured for use in lwipopts.h */
bfictorie 0:8cdad1c73e8e 38
bfictorie 0:8cdad1c73e8e 39 #include "lwip/api_msg.h"
bfictorie 0:8cdad1c73e8e 40 #include "lwip/netifapi.h"
bfictorie 0:8cdad1c73e8e 41 #include "lwip/pbuf.h"
bfictorie 0:8cdad1c73e8e 42 #include "lwip/api.h"
bfictorie 0:8cdad1c73e8e 43 #include "lwip/sys.h"
bfictorie 0:8cdad1c73e8e 44 #include "lwip/timers.h"
bfictorie 0:8cdad1c73e8e 45 #include "lwip/netif.h"
bfictorie 0:8cdad1c73e8e 46
bfictorie 0:8cdad1c73e8e 47 #ifdef __cplusplus
bfictorie 0:8cdad1c73e8e 48 extern "C" {
bfictorie 0:8cdad1c73e8e 49 #endif
bfictorie 0:8cdad1c73e8e 50
bfictorie 0:8cdad1c73e8e 51 /** Define this to something that triggers a watchdog. This is called from
bfictorie 0:8cdad1c73e8e 52 * tcpip_thread after processing a message. */
bfictorie 0:8cdad1c73e8e 53 #ifndef LWIP_TCPIP_THREAD_ALIVE
bfictorie 0:8cdad1c73e8e 54 #define LWIP_TCPIP_THREAD_ALIVE()
bfictorie 0:8cdad1c73e8e 55 #endif
bfictorie 0:8cdad1c73e8e 56
bfictorie 0:8cdad1c73e8e 57 #if LWIP_TCPIP_CORE_LOCKING
bfictorie 0:8cdad1c73e8e 58 /** The global semaphore to lock the stack. */
bfictorie 0:8cdad1c73e8e 59 extern sys_mutex_t lock_tcpip_core;
bfictorie 0:8cdad1c73e8e 60 #define LOCK_TCPIP_CORE() sys_mutex_lock(&lock_tcpip_core)
bfictorie 0:8cdad1c73e8e 61 #define UNLOCK_TCPIP_CORE() sys_mutex_unlock(&lock_tcpip_core)
bfictorie 0:8cdad1c73e8e 62 #define TCPIP_APIMSG(m) tcpip_apimsg_lock(m)
bfictorie 0:8cdad1c73e8e 63 #define TCPIP_APIMSG_ACK(m)
bfictorie 0:8cdad1c73e8e 64 #define TCPIP_NETIFAPI(m) tcpip_netifapi_lock(m)
bfictorie 0:8cdad1c73e8e 65 #define TCPIP_NETIFAPI_ACK(m)
bfictorie 0:8cdad1c73e8e 66 #else /* LWIP_TCPIP_CORE_LOCKING */
bfictorie 0:8cdad1c73e8e 67 #define LOCK_TCPIP_CORE()
bfictorie 0:8cdad1c73e8e 68 #define UNLOCK_TCPIP_CORE()
bfictorie 0:8cdad1c73e8e 69 #define TCPIP_APIMSG(m) tcpip_apimsg(m)
bfictorie 0:8cdad1c73e8e 70 #define TCPIP_APIMSG_ACK(m) sys_sem_signal(&m->conn->op_completed)
bfictorie 0:8cdad1c73e8e 71 #define TCPIP_NETIFAPI(m) tcpip_netifapi(m)
bfictorie 0:8cdad1c73e8e 72 #define TCPIP_NETIFAPI_ACK(m) sys_sem_signal(&m->sem)
bfictorie 0:8cdad1c73e8e 73 #endif /* LWIP_TCPIP_CORE_LOCKING */
bfictorie 0:8cdad1c73e8e 74
bfictorie 0:8cdad1c73e8e 75 /** Function prototype for the init_done function passed to tcpip_init */
bfictorie 0:8cdad1c73e8e 76 typedef void (*tcpip_init_done_fn)(void *arg);
bfictorie 0:8cdad1c73e8e 77 /** Function prototype for functions passed to tcpip_callback() */
bfictorie 0:8cdad1c73e8e 78 typedef void (*tcpip_callback_fn)(void *ctx);
bfictorie 0:8cdad1c73e8e 79
bfictorie 0:8cdad1c73e8e 80 void tcpip_init(tcpip_init_done_fn tcpip_init_done, void *arg);
bfictorie 0:8cdad1c73e8e 81
bfictorie 0:8cdad1c73e8e 82 #if LWIP_NETCONN
bfictorie 0:8cdad1c73e8e 83 err_t tcpip_apimsg(struct api_msg *apimsg);
bfictorie 0:8cdad1c73e8e 84 #if LWIP_TCPIP_CORE_LOCKING
bfictorie 0:8cdad1c73e8e 85 err_t tcpip_apimsg_lock(struct api_msg *apimsg);
bfictorie 0:8cdad1c73e8e 86 #endif /* LWIP_TCPIP_CORE_LOCKING */
bfictorie 0:8cdad1c73e8e 87 #endif /* LWIP_NETCONN */
bfictorie 0:8cdad1c73e8e 88
bfictorie 0:8cdad1c73e8e 89 err_t tcpip_input(struct pbuf *p, struct netif *inp);
bfictorie 0:8cdad1c73e8e 90
bfictorie 0:8cdad1c73e8e 91 #if LWIP_NETIF_API
bfictorie 0:8cdad1c73e8e 92 err_t tcpip_netifapi(struct netifapi_msg *netifapimsg);
bfictorie 0:8cdad1c73e8e 93 #if LWIP_TCPIP_CORE_LOCKING
bfictorie 0:8cdad1c73e8e 94 err_t tcpip_netifapi_lock(struct netifapi_msg *netifapimsg);
bfictorie 0:8cdad1c73e8e 95 #endif /* LWIP_TCPIP_CORE_LOCKING */
bfictorie 0:8cdad1c73e8e 96 #endif /* LWIP_NETIF_API */
bfictorie 0:8cdad1c73e8e 97
bfictorie 0:8cdad1c73e8e 98 err_t tcpip_callback_with_block(tcpip_callback_fn function, void *ctx, u8_t block);
bfictorie 0:8cdad1c73e8e 99 #define tcpip_callback(f, ctx) tcpip_callback_with_block(f, ctx, 1)
bfictorie 0:8cdad1c73e8e 100
bfictorie 0:8cdad1c73e8e 101 /* free pbufs or heap memory from another context without blocking */
bfictorie 0:8cdad1c73e8e 102 err_t pbuf_free_callback(struct pbuf *p);
bfictorie 0:8cdad1c73e8e 103 err_t mem_free_callback(void *m);
bfictorie 0:8cdad1c73e8e 104
bfictorie 0:8cdad1c73e8e 105 #if LWIP_TCPIP_TIMEOUT
bfictorie 0:8cdad1c73e8e 106 err_t tcpip_timeout(u32_t msecs, sys_timeout_handler h, void *arg);
bfictorie 0:8cdad1c73e8e 107 err_t tcpip_untimeout(sys_timeout_handler h, void *arg);
bfictorie 0:8cdad1c73e8e 108 #endif /* LWIP_TCPIP_TIMEOUT */
bfictorie 0:8cdad1c73e8e 109
bfictorie 0:8cdad1c73e8e 110 enum tcpip_msg_type {
bfictorie 0:8cdad1c73e8e 111 #if LWIP_NETCONN
bfictorie 0:8cdad1c73e8e 112 TCPIP_MSG_API,
bfictorie 0:8cdad1c73e8e 113 #endif /* LWIP_NETCONN */
bfictorie 0:8cdad1c73e8e 114 TCPIP_MSG_INPKT,
bfictorie 0:8cdad1c73e8e 115 #if LWIP_NETIF_API
bfictorie 0:8cdad1c73e8e 116 TCPIP_MSG_NETIFAPI,
bfictorie 0:8cdad1c73e8e 117 #endif /* LWIP_NETIF_API */
bfictorie 0:8cdad1c73e8e 118 #if LWIP_TCPIP_TIMEOUT
bfictorie 0:8cdad1c73e8e 119 TCPIP_MSG_TIMEOUT,
bfictorie 0:8cdad1c73e8e 120 TCPIP_MSG_UNTIMEOUT,
bfictorie 0:8cdad1c73e8e 121 #endif /* LWIP_TCPIP_TIMEOUT */
bfictorie 0:8cdad1c73e8e 122 TCPIP_MSG_CALLBACK
bfictorie 0:8cdad1c73e8e 123 };
bfictorie 0:8cdad1c73e8e 124
bfictorie 0:8cdad1c73e8e 125 struct tcpip_msg {
bfictorie 0:8cdad1c73e8e 126 enum tcpip_msg_type type;
bfictorie 0:8cdad1c73e8e 127 sys_sem_t *sem;
bfictorie 0:8cdad1c73e8e 128 union {
bfictorie 0:8cdad1c73e8e 129 #if LWIP_NETCONN
bfictorie 0:8cdad1c73e8e 130 struct api_msg *apimsg;
bfictorie 0:8cdad1c73e8e 131 #endif /* LWIP_NETCONN */
bfictorie 0:8cdad1c73e8e 132 #if LWIP_NETIF_API
bfictorie 0:8cdad1c73e8e 133 struct netifapi_msg *netifapimsg;
bfictorie 0:8cdad1c73e8e 134 #endif /* LWIP_NETIF_API */
bfictorie 0:8cdad1c73e8e 135 struct {
bfictorie 0:8cdad1c73e8e 136 struct pbuf *p;
bfictorie 0:8cdad1c73e8e 137 struct netif *netif;
bfictorie 0:8cdad1c73e8e 138 } inp;
bfictorie 0:8cdad1c73e8e 139 struct {
bfictorie 0:8cdad1c73e8e 140 tcpip_callback_fn function;
bfictorie 0:8cdad1c73e8e 141 void *ctx;
bfictorie 0:8cdad1c73e8e 142 } cb;
bfictorie 0:8cdad1c73e8e 143 #if LWIP_TCPIP_TIMEOUT
bfictorie 0:8cdad1c73e8e 144 struct {
bfictorie 0:8cdad1c73e8e 145 u32_t msecs;
bfictorie 0:8cdad1c73e8e 146 sys_timeout_handler h;
bfictorie 0:8cdad1c73e8e 147 void *arg;
bfictorie 0:8cdad1c73e8e 148 } tmo;
bfictorie 0:8cdad1c73e8e 149 #endif /* LWIP_TCPIP_TIMEOUT */
bfictorie 0:8cdad1c73e8e 150 } msg;
bfictorie 0:8cdad1c73e8e 151 };
bfictorie 0:8cdad1c73e8e 152
bfictorie 0:8cdad1c73e8e 153 #ifdef __cplusplus
bfictorie 0:8cdad1c73e8e 154 }
bfictorie 0:8cdad1c73e8e 155 #endif
bfictorie 0:8cdad1c73e8e 156
bfictorie 0:8cdad1c73e8e 157 #endif /* !NO_SYS */
bfictorie 0:8cdad1c73e8e 158
bfictorie 0:8cdad1c73e8e 159 #endif /* __LWIP_TCPIP_H__ */