Gordon Craig / mbed-dev

Fork of mbed-dev by mbed official

Committer:
AnnaBridge
Date:
Wed Jun 21 17:46:44 2017 +0100
Revision:
167:e84263d55307
This updates the lib to the mbed lib v 145

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 167:e84263d55307 1 #ifndef _RTX2_SERVICE_H_
AnnaBridge 167:e84263d55307 2 #define _RTX2_SERVICE_H_
AnnaBridge 167:e84263d55307 3
AnnaBridge 167:e84263d55307 4 //-----------------------------------------------------------------------
AnnaBridge 167:e84263d55307 5 // Include Files
AnnaBridge 167:e84263d55307 6 //-----------------------------------------------------------------------
AnnaBridge 167:e84263d55307 7 #include "wireless.h"
AnnaBridge 167:e84263d55307 8 #include "dlist.h"
AnnaBridge 167:e84263d55307 9 #include <cmsis_os2.h>
AnnaBridge 167:e84263d55307 10 //#include <rt_TypeDef.h>
AnnaBridge 167:e84263d55307 11 #include "RTX_Config.h"
AnnaBridge 167:e84263d55307 12 //#include <rt_Task.h>
AnnaBridge 167:e84263d55307 13 //#include <rt_Semaphore.h>
AnnaBridge 167:e84263d55307 14 //#include <rt_System.h>
AnnaBridge 167:e84263d55307 15 #include "rtx_lib.h"
AnnaBridge 167:e84263d55307 16 // --------------------------------------------
AnnaBridge 167:e84263d55307 17 // Platform dependent include file
AnnaBridge 167:e84263d55307 18 // --------------------------------------------
AnnaBridge 167:e84263d55307 19 #if defined(CONFIG_PLATFORM_8195A) || defined(CONFIG_PLATFORM_8711B)
AnnaBridge 167:e84263d55307 20 //#include "platform_stdlib.h"
AnnaBridge 167:e84263d55307 21 //#include "basic_types.h"
AnnaBridge 167:e84263d55307 22 #include <rtl8195a.h>
AnnaBridge 167:e84263d55307 23 #else
AnnaBridge 167:e84263d55307 24 // other MCU may use standard library
AnnaBridge 167:e84263d55307 25 #include <string.h>
AnnaBridge 167:e84263d55307 26 #endif
AnnaBridge 167:e84263d55307 27
AnnaBridge 167:e84263d55307 28
AnnaBridge 167:e84263d55307 29 #if (defined CONFIG_GSPI_HCI || defined CONFIG_SDIO_HCI) || defined(CONFIG_LX_HCI)
AnnaBridge 167:e84263d55307 30 /* For SPI interface transfer and us delay implementation */
AnnaBridge 167:e84263d55307 31 #if !defined(CONFIG_PLATFORM_8195A) && !defined(CONFIG_PLATFORM_8711B)
AnnaBridge 167:e84263d55307 32 #include <rtwlan_bsp.h>
AnnaBridge 167:e84263d55307 33 #endif
AnnaBridge 167:e84263d55307 34 #endif
AnnaBridge 167:e84263d55307 35
AnnaBridge 167:e84263d55307 36
AnnaBridge 167:e84263d55307 37 // --------------------------------------------
AnnaBridge 167:e84263d55307 38 // Platform dependent type define
AnnaBridge 167:e84263d55307 39 // --------------------------------------------
AnnaBridge 167:e84263d55307 40 #if !defined(CONFIG_PLATFORM_8195A) && !defined(CONFIG_PLATFORM_8711B)
AnnaBridge 167:e84263d55307 41 typedef unsigned char u8;
AnnaBridge 167:e84263d55307 42 typedef unsigned short u16;
AnnaBridge 167:e84263d55307 43 typedef unsigned int u32;
AnnaBridge 167:e84263d55307 44 typedef signed char s8;
AnnaBridge 167:e84263d55307 45 typedef signed short s16;
AnnaBridge 167:e84263d55307 46 typedef signed int s32;
AnnaBridge 167:e84263d55307 47 typedef signed long long s64;
AnnaBridge 167:e84263d55307 48 typedef unsigned long long u64;
AnnaBridge 167:e84263d55307 49 typedef unsigned int uint;
AnnaBridge 167:e84263d55307 50 typedef signed int sint;
AnnaBridge 167:e84263d55307 51
AnnaBridge 167:e84263d55307 52 #ifndef bool
AnnaBridge 167:e84263d55307 53 typedef int bool;
AnnaBridge 167:e84263d55307 54 #define true 1
AnnaBridge 167:e84263d55307 55 #define false 0
AnnaBridge 167:e84263d55307 56 #endif
AnnaBridge 167:e84263d55307 57
AnnaBridge 167:e84263d55307 58 #define IN
AnnaBridge 167:e84263d55307 59 #define OUT
AnnaBridge 167:e84263d55307 60 #define VOID void
AnnaBridge 167:e84263d55307 61 #define NDIS_OID uint
AnnaBridge 167:e84263d55307 62 #define NDIS_STATUS uint
AnnaBridge 167:e84263d55307 63 #ifndef PVOID
AnnaBridge 167:e84263d55307 64 typedef void * PVOID;
AnnaBridge 167:e84263d55307 65 #endif
AnnaBridge 167:e84263d55307 66
AnnaBridge 167:e84263d55307 67 typedef unsigned int __kernel_size_t;
AnnaBridge 167:e84263d55307 68 typedef int __kernel_ssize_t;
AnnaBridge 167:e84263d55307 69 typedef __kernel_size_t SIZE_T;
AnnaBridge 167:e84263d55307 70 typedef __kernel_ssize_t SSIZE_T;
AnnaBridge 167:e84263d55307 71
AnnaBridge 167:e84263d55307 72 #endif //CONFIG_PLATFORM_8195A
AnnaBridge 167:e84263d55307 73
AnnaBridge 167:e84263d55307 74 // === SEMAPHORE ===
AnnaBridge 167:e84263d55307 75 typedef struct {
AnnaBridge 167:e84263d55307 76 osSemaphoreId_t id;
AnnaBridge 167:e84263d55307 77 osSemaphoreAttr_t attr;
AnnaBridge 167:e84263d55307 78 os_semaphore_t data;
AnnaBridge 167:e84263d55307 79 } rtx_sema_t;
AnnaBridge 167:e84263d55307 80
AnnaBridge 167:e84263d55307 81 // === THREAD ===
AnnaBridge 167:e84263d55307 82 typedef struct {
AnnaBridge 167:e84263d55307 83 osThreadId_t id;
AnnaBridge 167:e84263d55307 84 osThreadAttr_t attr;
AnnaBridge 167:e84263d55307 85 os_thread_t data;
AnnaBridge 167:e84263d55307 86 } rtx_thread_data_t;
AnnaBridge 167:e84263d55307 87
AnnaBridge 167:e84263d55307 88 // === MUTEX ===
AnnaBridge 167:e84263d55307 89 typedef struct {
AnnaBridge 167:e84263d55307 90 osMutexId_t id;
AnnaBridge 167:e84263d55307 91 osMutexAttr_t attr;
AnnaBridge 167:e84263d55307 92 os_mutex_t data;
AnnaBridge 167:e84263d55307 93 } rtx_mutex_t;
AnnaBridge 167:e84263d55307 94
AnnaBridge 167:e84263d55307 95 // === MAIL BOX ===
AnnaBridge 167:e84263d55307 96 #define RTX_MB_SIZE 8
AnnaBridge 167:e84263d55307 97
AnnaBridge 167:e84263d55307 98 typedef struct {
AnnaBridge 167:e84263d55307 99 osEventFlagsId_t id;
AnnaBridge 167:e84263d55307 100 osEventFlagsAttr_t attr;
AnnaBridge 167:e84263d55307 101 os_event_flags_t data;
AnnaBridge 167:e84263d55307 102
AnnaBridge 167:e84263d55307 103 uint8_t post_idx;
AnnaBridge 167:e84263d55307 104 uint8_t fetch_idx;
AnnaBridge 167:e84263d55307 105 void* queue[RTX_MB_SIZE];
AnnaBridge 167:e84263d55307 106 } rtx_mqueue_t;
AnnaBridge 167:e84263d55307 107
AnnaBridge 167:e84263d55307 108 typedef struct {
AnnaBridge 167:e84263d55307 109 osMessageQueueId_t id;
AnnaBridge 167:e84263d55307 110 osMessageQueueAttr_t attr;
AnnaBridge 167:e84263d55307 111 void *queue_mem;
AnnaBridge 167:e84263d55307 112 os_message_queue_t data;
AnnaBridge 167:e84263d55307 113 } rtx_mbox_t;
AnnaBridge 167:e84263d55307 114
AnnaBridge 167:e84263d55307 115 typedef struct{
AnnaBridge 167:e84263d55307 116 osTimerId_t id;
AnnaBridge 167:e84263d55307 117 osTimerAttr_t attr;
AnnaBridge 167:e84263d55307 118 os_timer_t data;
AnnaBridge 167:e84263d55307 119 }rtx_tmr_t;
AnnaBridge 167:e84263d55307 120
AnnaBridge 167:e84263d55307 121 #define FIELD_OFFSET(s,field) ((SSIZE_T)&((s*)(0))->field)
AnnaBridge 167:e84263d55307 122
AnnaBridge 167:e84263d55307 123 // os types
AnnaBridge 167:e84263d55307 124 typedef char osdepCHAR;
AnnaBridge 167:e84263d55307 125 typedef float osdepFLOAT;
AnnaBridge 167:e84263d55307 126 typedef double osdepDOUBLE;
AnnaBridge 167:e84263d55307 127 typedef long osdepLONG;
AnnaBridge 167:e84263d55307 128 typedef short osdepSHORT;
AnnaBridge 167:e84263d55307 129 typedef unsigned long osdepSTACK_TYPE;
AnnaBridge 167:e84263d55307 130 typedef long osdepBASE_TYPE;
AnnaBridge 167:e84263d55307 131 typedef unsigned long osdepTickType;
AnnaBridge 167:e84263d55307 132
AnnaBridge 167:e84263d55307 133 typedef void * _timerHandle;
AnnaBridge 167:e84263d55307 134 typedef void * _sema;
AnnaBridge 167:e84263d55307 135 typedef void * _mutex;
AnnaBridge 167:e84263d55307 136 typedef void * _lock;
AnnaBridge 167:e84263d55307 137 typedef void * _queueHandle;
AnnaBridge 167:e84263d55307 138 typedef void * _xqueue;
AnnaBridge 167:e84263d55307 139 typedef struct timer_list _timer;
AnnaBridge 167:e84263d55307 140
AnnaBridge 167:e84263d55307 141 typedef struct sk_buff _pkt;
AnnaBridge 167:e84263d55307 142 typedef unsigned char _buffer;
AnnaBridge 167:e84263d55307 143
AnnaBridge 167:e84263d55307 144 #ifndef __LIST_H
AnnaBridge 167:e84263d55307 145 #warning "DLIST_NOT_DEFINE!!!!!!"
AnnaBridge 167:e84263d55307 146 struct list_head {
AnnaBridge 167:e84263d55307 147 struct list_head *next, *prev;
AnnaBridge 167:e84263d55307 148 };
AnnaBridge 167:e84263d55307 149 #endif
AnnaBridge 167:e84263d55307 150
AnnaBridge 167:e84263d55307 151 struct __queue {
AnnaBridge 167:e84263d55307 152 struct list_head queue;
AnnaBridge 167:e84263d55307 153 _lock lock;
AnnaBridge 167:e84263d55307 154 };
AnnaBridge 167:e84263d55307 155
AnnaBridge 167:e84263d55307 156 typedef struct __queue _queue;
AnnaBridge 167:e84263d55307 157 typedef struct list_head _list;
AnnaBridge 167:e84263d55307 158 typedef unsigned long _irqL;
AnnaBridge 167:e84263d55307 159
AnnaBridge 167:e84263d55307 160 typedef void* _thread_hdl_;
AnnaBridge 167:e84263d55307 161 typedef void thread_return;
AnnaBridge 167:e84263d55307 162 typedef void* thread_context;
AnnaBridge 167:e84263d55307 163
AnnaBridge 167:e84263d55307 164 #define ATOMIC_T atomic_t
AnnaBridge 167:e84263d55307 165 #define HZ configTICK_RATE_HZ
AnnaBridge 167:e84263d55307 166
AnnaBridge 167:e84263d55307 167 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
AnnaBridge 167:e84263d55307 168 /* emulate a modern version */
AnnaBridge 167:e84263d55307 169 #define LINUX_VERSION_CODE KERNEL_VERSION(2, 6, 17)
AnnaBridge 167:e84263d55307 170
AnnaBridge 167:e84263d55307 171 static __inline _list *get_next(_list *list)
AnnaBridge 167:e84263d55307 172 {
AnnaBridge 167:e84263d55307 173 return list->next;
AnnaBridge 167:e84263d55307 174 }
AnnaBridge 167:e84263d55307 175
AnnaBridge 167:e84263d55307 176 static __inline _list *get_list_head(_queue *queue)
AnnaBridge 167:e84263d55307 177 {
AnnaBridge 167:e84263d55307 178 return (&(queue->queue));
AnnaBridge 167:e84263d55307 179 }
AnnaBridge 167:e84263d55307 180
AnnaBridge 167:e84263d55307 181 #define LIST_CONTAINOR(ptr, type, member) \
AnnaBridge 167:e84263d55307 182 ((type *)((char *)(ptr)-(SIZE_T)((char *)&((type *)ptr)->member - (char *)ptr)))
AnnaBridge 167:e84263d55307 183 //#define container_of(p,t,n) (t*)((p)-&(((t*)0)->n))
AnnaBridge 167:e84263d55307 184 #define container_of(ptr, type, member) \
AnnaBridge 167:e84263d55307 185 ((type *)((char *)(ptr)-(SIZE_T)(&((type *)0)->member)))
AnnaBridge 167:e84263d55307 186 #define TASK_PRORITY_LOW osPriorityAboveNormal//osPriorityNormal
AnnaBridge 167:e84263d55307 187 #define TASK_PRORITY_MIDDLE osPriorityHigh//osPriorityAboveNormal
AnnaBridge 167:e84263d55307 188 #define TASK_PRORITY_HIGH osPriorityRealtime//osPriorityHigh
AnnaBridge 167:e84263d55307 189 #define TASK_PRORITY_SUPER osPriorityRealtime
AnnaBridge 167:e84263d55307 190 #define TASK_PRORITY_IDEL osPriorityIdle
AnnaBridge 167:e84263d55307 191
AnnaBridge 167:e84263d55307 192
AnnaBridge 167:e84263d55307 193 #define TIMER_MAX_DELAY 0xFFFFFFFF
AnnaBridge 167:e84263d55307 194 void save_and_cli(void);
AnnaBridge 167:e84263d55307 195 void restore_flags(void);
AnnaBridge 167:e84263d55307 196 void cli(void);
AnnaBridge 167:e84263d55307 197
AnnaBridge 167:e84263d55307 198 //----- ------------------------------------------------------------------
AnnaBridge 167:e84263d55307 199 // Common Definition
AnnaBridge 167:e84263d55307 200 //----- ------------------------------------------------------------------
AnnaBridge 167:e84263d55307 201
AnnaBridge 167:e84263d55307 202 #define __init
AnnaBridge 167:e84263d55307 203 #define __exit
AnnaBridge 167:e84263d55307 204 #define __devinit
AnnaBridge 167:e84263d55307 205 #define __devexit
AnnaBridge 167:e84263d55307 206
AnnaBridge 167:e84263d55307 207 #define KERN_ERR
AnnaBridge 167:e84263d55307 208 #define KERN_INFO
AnnaBridge 167:e84263d55307 209 #define KERN_NOTICE
AnnaBridge 167:e84263d55307 210
AnnaBridge 167:e84263d55307 211 #define GFP_KERNEL 1
AnnaBridge 167:e84263d55307 212 #define GFP_ATOMIC 1
AnnaBridge 167:e84263d55307 213
AnnaBridge 167:e84263d55307 214 #define SET_MODULE_OWNER(some_struct) do { } while (0)
AnnaBridge 167:e84263d55307 215 #define SET_NETDEV_DEV(dev, obj) do { } while (0)
AnnaBridge 167:e84263d55307 216 #define register_netdev(dev) (0)
AnnaBridge 167:e84263d55307 217 #define unregister_netdev(dev) do { } while (0)
AnnaBridge 167:e84263d55307 218 #define netif_queue_stopped(dev) (0)
AnnaBridge 167:e84263d55307 219 #define netif_wake_queue(dev) do { } while (0)
AnnaBridge 167:e84263d55307 220 #define printk printf
AnnaBridge 167:e84263d55307 221
AnnaBridge 167:e84263d55307 222 #define DBG_ERR(fmt, args...) printf("\n\r[%s] " fmt, __FUNCTION__, ## args)
AnnaBridge 167:e84263d55307 223 #if WLAN_INTF_DBG
AnnaBridge 167:e84263d55307 224 #define DBG_TRACE(fmt, args...) printf("\n\r[%s] " fmt, __FUNCTION__, ## args)
AnnaBridge 167:e84263d55307 225 #define DBG_INFO(fmt, args...) printf("\n\r[%s] " fmt, __FUNCTION__, ## args)
AnnaBridge 167:e84263d55307 226 #else
AnnaBridge 167:e84263d55307 227 #define DBG_TRACE(fmt, args...)
AnnaBridge 167:e84263d55307 228 #define DBG_INFO(fmt, args...)
AnnaBridge 167:e84263d55307 229 #endif
AnnaBridge 167:e84263d55307 230 #define HALT() do { cli(); for(;;);} while(0)
AnnaBridge 167:e84263d55307 231 #define ASSERT(x) do { \
AnnaBridge 167:e84263d55307 232 if((x) == 0) \
AnnaBridge 167:e84263d55307 233 printf("\n\rAssert(" #x ") failed on line %d in file %s", __LINE__, __FILE__); \
AnnaBridge 167:e84263d55307 234 HALT(); \
AnnaBridge 167:e84263d55307 235 } while(0)
AnnaBridge 167:e84263d55307 236
AnnaBridge 167:e84263d55307 237 #undef DBG_ASSERT
AnnaBridge 167:e84263d55307 238 #define DBG_ASSERT(x, msg) do { \
AnnaBridge 167:e84263d55307 239 if((x) == 0) \
AnnaBridge 167:e84263d55307 240 printf("\n\r%s, Assert(" #x ") failed on line %d in file %s", msg, __LINE__, __FILE__); \
AnnaBridge 167:e84263d55307 241 } while(0)
AnnaBridge 167:e84263d55307 242
AnnaBridge 167:e84263d55307 243 //----- ------------------------------------------------------------------
AnnaBridge 167:e84263d55307 244 // Atomic Operation
AnnaBridge 167:e84263d55307 245 //----- ------------------------------------------------------------------
AnnaBridge 167:e84263d55307 246 #if !defined(CONFIG_PLATFORM_8195A) && !defined(CONFIG_PLATFORM_8711B) // for 8195A, it is defined in ..system../basic_types.h
AnnaBridge 167:e84263d55307 247 typedef struct { volatile int counter; } atomic_t;
AnnaBridge 167:e84263d55307 248 #endif
AnnaBridge 167:e84263d55307 249
AnnaBridge 167:e84263d55307 250
AnnaBridge 167:e84263d55307 251 /*
AnnaBridge 167:e84263d55307 252 * atomic_read - read atomic variable
AnnaBridge 167:e84263d55307 253 * @v: pointer of type atomic_t
AnnaBridge 167:e84263d55307 254 *
AnnaBridge 167:e84263d55307 255 * Atomically reads the value of @v. Note that the guaranteed
AnnaBridge 167:e84263d55307 256 * useful range of an atomic_t is only 24 bits.
AnnaBridge 167:e84263d55307 257 */
AnnaBridge 167:e84263d55307 258 #define atomic_read(v) ((v)->counter)
AnnaBridge 167:e84263d55307 259
AnnaBridge 167:e84263d55307 260 /*
AnnaBridge 167:e84263d55307 261 * atomic_set - set atomic variable
AnnaBridge 167:e84263d55307 262 * @v: pointer of type atomic_t
AnnaBridge 167:e84263d55307 263 * @i: required value
AnnaBridge 167:e84263d55307 264 *
AnnaBridge 167:e84263d55307 265 * Atomically sets the value of @v to @i. Note that the guaranteed
AnnaBridge 167:e84263d55307 266 * useful range of an atomic_t is only 24 bits.
AnnaBridge 167:e84263d55307 267 */
AnnaBridge 167:e84263d55307 268 #define atomic_set(v,i) ((v)->counter = (i))
AnnaBridge 167:e84263d55307 269
AnnaBridge 167:e84263d55307 270 /*
AnnaBridge 167:e84263d55307 271 * These inlines deal with timer wrapping correctly. You are
AnnaBridge 167:e84263d55307 272 * strongly encouraged to use them
AnnaBridge 167:e84263d55307 273 * 1. Because people otherwise forget
AnnaBridge 167:e84263d55307 274 * 2. Because if the timer wrap changes in future you wont have to
AnnaBridge 167:e84263d55307 275 * alter your driver code.
AnnaBridge 167:e84263d55307 276 *
AnnaBridge 167:e84263d55307 277 * time_after(a,b) returns true if the time a is after time b.
AnnaBridge 167:e84263d55307 278 *
AnnaBridge 167:e84263d55307 279 * Do this with "<0" and ">=0" to only test the sign of the result. A
AnnaBridge 167:e84263d55307 280 * good compiler would generate better code (and a really good compiler
AnnaBridge 167:e84263d55307 281 * wouldn't care). Gcc is currently neither.
AnnaBridge 167:e84263d55307 282 */
AnnaBridge 167:e84263d55307 283 #define time_after(a,b) ((long)(b) - (long)(a) < 0)
AnnaBridge 167:e84263d55307 284 #define time_before(a,b) time_after(b,a)
AnnaBridge 167:e84263d55307 285
AnnaBridge 167:e84263d55307 286 #define time_after_eq(a,b) ((long)(a) - (long)(b) >= 0)
AnnaBridge 167:e84263d55307 287 #define time_before_eq(a,b) time_after_eq(b,a)
AnnaBridge 167:e84263d55307 288
AnnaBridge 167:e84263d55307 289
AnnaBridge 167:e84263d55307 290 extern void rtw_init_listhead(_list *list);
AnnaBridge 167:e84263d55307 291 extern u32 rtw_is_list_empty(_list *phead);
AnnaBridge 167:e84263d55307 292 extern void rtw_list_insert_head(_list *plist, _list *phead);
AnnaBridge 167:e84263d55307 293 extern void rtw_list_insert_tail(_list *plist, _list *phead);
AnnaBridge 167:e84263d55307 294 extern void rtw_list_delete(_list *plist);
AnnaBridge 167:e84263d55307 295 #define vPortExitCritical save_and_cli
AnnaBridge 167:e84263d55307 296 #endif /* _RTX_SERVICE_H_ */
AnnaBridge 167:e84263d55307 297