Ethernetwebsoc

Dependencies:   C12832_lcd LM75B WebSocketClient mbed-rtos mbed Socket lwip-eth lwip-sys lwip

Committer:
GordonSin
Date:
Fri May 31 04:09:54 2013 +0000
Revision:
0:0ed2a7c7190c
31/5/2013;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GordonSin 0:0ed2a7c7190c 1 /* Copyright (C) 2012 mbed.org, MIT License
GordonSin 0:0ed2a7c7190c 2 *
GordonSin 0:0ed2a7c7190c 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
GordonSin 0:0ed2a7c7190c 4 * and associated documentation files (the "Software"), to deal in the Software without restriction,
GordonSin 0:0ed2a7c7190c 5 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
GordonSin 0:0ed2a7c7190c 6 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
GordonSin 0:0ed2a7c7190c 7 * furnished to do so, subject to the following conditions:
GordonSin 0:0ed2a7c7190c 8 *
GordonSin 0:0ed2a7c7190c 9 * The above copyright notice and this permission notice shall be included in all copies or
GordonSin 0:0ed2a7c7190c 10 * substantial portions of the Software.
GordonSin 0:0ed2a7c7190c 11 *
GordonSin 0:0ed2a7c7190c 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
GordonSin 0:0ed2a7c7190c 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
GordonSin 0:0ed2a7c7190c 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
GordonSin 0:0ed2a7c7190c 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
GordonSin 0:0ed2a7c7190c 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
GordonSin 0:0ed2a7c7190c 17 */
GordonSin 0:0ed2a7c7190c 18 #ifndef __ARCH_SYS_ARCH_H__
GordonSin 0:0ed2a7c7190c 19 #define __ARCH_SYS_ARCH_H__
GordonSin 0:0ed2a7c7190c 20
GordonSin 0:0ed2a7c7190c 21 #include "lwip/opt.h"
GordonSin 0:0ed2a7c7190c 22
GordonSin 0:0ed2a7c7190c 23 #if NO_SYS == 0
GordonSin 0:0ed2a7c7190c 24 #include "cmsis_os.h"
GordonSin 0:0ed2a7c7190c 25
GordonSin 0:0ed2a7c7190c 26 // === SEMAPHORE ===
GordonSin 0:0ed2a7c7190c 27 typedef struct {
GordonSin 0:0ed2a7c7190c 28 osSemaphoreId id;
GordonSin 0:0ed2a7c7190c 29 osSemaphoreDef_t def;
GordonSin 0:0ed2a7c7190c 30 #ifdef CMSIS_OS_RTX
GordonSin 0:0ed2a7c7190c 31 uint32_t data[2];
GordonSin 0:0ed2a7c7190c 32 #endif
GordonSin 0:0ed2a7c7190c 33 } sys_sem_t;
GordonSin 0:0ed2a7c7190c 34
GordonSin 0:0ed2a7c7190c 35 #define sys_sem_valid(x) (((*x).id == NULL) ? 0 : 1)
GordonSin 0:0ed2a7c7190c 36 #define sys_sem_set_invalid(x) ( (*x).id = NULL)
GordonSin 0:0ed2a7c7190c 37
GordonSin 0:0ed2a7c7190c 38 // === MUTEX ===
GordonSin 0:0ed2a7c7190c 39 typedef struct {
GordonSin 0:0ed2a7c7190c 40 osMutexId id;
GordonSin 0:0ed2a7c7190c 41 osMutexDef_t def;
GordonSin 0:0ed2a7c7190c 42 #ifdef CMSIS_OS_RTX
GordonSin 0:0ed2a7c7190c 43 int32_t data[3];
GordonSin 0:0ed2a7c7190c 44 #endif
GordonSin 0:0ed2a7c7190c 45 } sys_mutex_t;
GordonSin 0:0ed2a7c7190c 46
GordonSin 0:0ed2a7c7190c 47 // === MAIL BOX ===
GordonSin 0:0ed2a7c7190c 48 #define MB_SIZE 8
GordonSin 0:0ed2a7c7190c 49
GordonSin 0:0ed2a7c7190c 50 typedef struct {
GordonSin 0:0ed2a7c7190c 51 osMessageQId id;
GordonSin 0:0ed2a7c7190c 52 osMessageQDef_t def;
GordonSin 0:0ed2a7c7190c 53 #ifdef CMSIS_OS_RTX
GordonSin 0:0ed2a7c7190c 54 uint32_t queue[MB_SIZE];
GordonSin 0:0ed2a7c7190c 55 #endif
GordonSin 0:0ed2a7c7190c 56 } sys_mbox_t;
GordonSin 0:0ed2a7c7190c 57
GordonSin 0:0ed2a7c7190c 58 #define SYS_MBOX_NULL ((uint32_t) NULL)
GordonSin 0:0ed2a7c7190c 59 #define sys_mbox_valid(x) (((*x).id == NULL) ? 0 : 1 )
GordonSin 0:0ed2a7c7190c 60 #define sys_mbox_set_invalid(x) ( (*x).id = NULL )
GordonSin 0:0ed2a7c7190c 61
GordonSin 0:0ed2a7c7190c 62 #if ((DEFAULT_RAW_RECVMBOX_SIZE) > (MB_SIZE)) || \
GordonSin 0:0ed2a7c7190c 63 ((DEFAULT_UDP_RECVMBOX_SIZE) > (MB_SIZE)) || \
GordonSin 0:0ed2a7c7190c 64 ((DEFAULT_TCP_RECVMBOX_SIZE) > (MB_SIZE)) || \
GordonSin 0:0ed2a7c7190c 65 ((DEFAULT_ACCEPTMBOX_SIZE) > (MB_SIZE)) || \
GordonSin 0:0ed2a7c7190c 66 ((TCPIP_MBOX_SIZE) > (MB_SIZE))
GordonSin 0:0ed2a7c7190c 67 # error Mailbox size not supported
GordonSin 0:0ed2a7c7190c 68 #endif
GordonSin 0:0ed2a7c7190c 69
GordonSin 0:0ed2a7c7190c 70 // === THREAD ===
GordonSin 0:0ed2a7c7190c 71 typedef struct {
GordonSin 0:0ed2a7c7190c 72 osThreadId id;
GordonSin 0:0ed2a7c7190c 73 osThreadDef_t def;
GordonSin 0:0ed2a7c7190c 74 } sys_thread_data_t;
GordonSin 0:0ed2a7c7190c 75 typedef sys_thread_data_t* sys_thread_t;
GordonSin 0:0ed2a7c7190c 76
GordonSin 0:0ed2a7c7190c 77 #define SYS_THREAD_POOL_N 6
GordonSin 0:0ed2a7c7190c 78 #define SYS_DEFAULT_THREAD_STACK_DEPTH DEFAULT_STACK_SIZE
GordonSin 0:0ed2a7c7190c 79
GordonSin 0:0ed2a7c7190c 80 // === PROTECTION ===
GordonSin 0:0ed2a7c7190c 81 typedef int sys_prot_t;
GordonSin 0:0ed2a7c7190c 82
GordonSin 0:0ed2a7c7190c 83 #else
GordonSin 0:0ed2a7c7190c 84 #ifdef __cplusplus
GordonSin 0:0ed2a7c7190c 85 extern "C" {
GordonSin 0:0ed2a7c7190c 86 #endif
GordonSin 0:0ed2a7c7190c 87
GordonSin 0:0ed2a7c7190c 88 /** \brief Init systick to 1ms rate
GordonSin 0:0ed2a7c7190c 89 *
GordonSin 0:0ed2a7c7190c 90 * This init the systick to 1ms rate. This function is only used in standalone
GordonSin 0:0ed2a7c7190c 91 * systems.
GordonSin 0:0ed2a7c7190c 92 */
GordonSin 0:0ed2a7c7190c 93 void SysTick_Init(void);
GordonSin 0:0ed2a7c7190c 94
GordonSin 0:0ed2a7c7190c 95
GordonSin 0:0ed2a7c7190c 96 /** \brief Get the current systick time in milliSeconds
GordonSin 0:0ed2a7c7190c 97 *
GordonSin 0:0ed2a7c7190c 98 * Returns the current systick time in milliSeconds. This function is only
GordonSin 0:0ed2a7c7190c 99 * used in standalone systems.
GordonSin 0:0ed2a7c7190c 100 *
GordonSin 0:0ed2a7c7190c 101 * /returns current systick time in milliSeconds
GordonSin 0:0ed2a7c7190c 102 */
GordonSin 0:0ed2a7c7190c 103 uint32_t SysTick_GetMS(void);
GordonSin 0:0ed2a7c7190c 104
GordonSin 0:0ed2a7c7190c 105 /** \brief Delay for the specified number of milliSeconds
GordonSin 0:0ed2a7c7190c 106 *
GordonSin 0:0ed2a7c7190c 107 * For standalone systems. This function will block for the specified
GordonSin 0:0ed2a7c7190c 108 * number of milliSconds. For RTOS based systems, this function will delay
GordonSin 0:0ed2a7c7190c 109 * the task by the specified number of milliSeconds.
GordonSin 0:0ed2a7c7190c 110 *
GordonSin 0:0ed2a7c7190c 111 * \param[in] ms Time in milliSeconds to delay
GordonSin 0:0ed2a7c7190c 112 */
GordonSin 0:0ed2a7c7190c 113 void osDelay(uint32_t ms);
GordonSin 0:0ed2a7c7190c 114
GordonSin 0:0ed2a7c7190c 115 #ifdef __cplusplus
GordonSin 0:0ed2a7c7190c 116 }
GordonSin 0:0ed2a7c7190c 117 #endif
GordonSin 0:0ed2a7c7190c 118 #endif
GordonSin 0:0ed2a7c7190c 119
GordonSin 0:0ed2a7c7190c 120 #endif /* __ARCH_SYS_ARCH_H__ */