µGFX  2.9
version 2.9
gos_cmsis2.h
Go to the documentation of this file.
1 /*
2  * This file is subject to the terms of the GFX License. If a copy of
3  * the license was not distributed with this file, you can obtain one at:
4  *
5  * http://ugfx.io/license.html
6  */
7 
8 /**
9  * @file src/gos/gos_cmsis2.h
10  * @brief GOS - Operating System Support header file for CMSIS 2.0 RTOS.
11  */
12 
13 #ifndef _GOS_CMSIS2_H
14 #define _GOS_CMSIS2_H
15 
16 #if GFX_USE_OS_CMSIS2
17 
18 #include "cmsis_os2.h"
19 
20 #ifndef GFX_OS_HEAP_SIZE
21  #define GFX_OS_HEAP_SIZE 10240
22 #endif
23 
24 /*===========================================================================*/
25 /* Type definitions */
26 /*===========================================================================*/
27 
28 #define gDelayNone 0
29 #define gDelayForever osWaitForever
30 typedef gU32 gDelay;
31 typedef gU32 gTicks;
32 typedef gU16 gSemcount;
33 typedef void gThreadreturn;
34 typedef osPriority_t gThreadpriority;
35 
36 #define gSemMaxCount 65535UL
37 #define gThreadpriorityLow osPriorityLow
38 #define gThreadpriorityNormal osPriorityNormal
39 #define gThreadpriorityHigh osPriorityHigh
40 
41 typedef osSemaphoreId_t gSem;
42 
43 typedef osMutexId_t gMutex;
44 
45 typedef osThreadId_t gThread;
46 
47 #define GFX_THREAD_STACK(name, sz) gU8 name[1]; // Some compilers don't allow zero sized arrays. Let's waste one byte
48 #define GFX_THREAD_FUNCTION(fnName, param) gThreadreturn fnName(void* param)
49 #define gfxThreadReturn(retval) return
50 
51 /*===========================================================================*/
52 /* Function declarations. */
53 /*===========================================================================*/
54 
55 #define gfxExit() os_error(0)
56 #define gfxHalt(msg) os_error(1)
57 #define gfxSystemTicks() osKernelGetTickCount()
58 #define gfxMillisecondsToTicks(ms) (1000*(ms)/osKernelGetTickFreq())
59 #define gfxSystemLock() osKernelLock()
60 #define gfxSystemUnlock() osKernelUnlock()
61 #define gfxSleepMilliseconds(ms) osDelay(ms)
62 
63 void gfxMutexInit(gMutex* pmutex);
64 #define gfxMutexDestroy(pmutex) osMutexDelete(*(pmutex))
65 #define gfxMutexEnter(pmutex) osMutexAcquire(*(pmutex), gDelayForever)
66 #define gfxMutexExit(pmutex) osMutexRelease(*(pmutex))
67 
68 void gfxSemInit(gSem* psem, gSemcount val, gSemcount limit);
69 #define gfxSemDestroy(psem) osSemaphoreDelete(*(psem))
70 gBool gfxSemWait(gSem* psem, gDelay ms);
71 #define gfxSemWaitI(psem) gfxSemWait((psem), 0)
72 #define gfxSemSignal(psem) osSemaphoreRelease(*(psem))
73 #define gfxSemSignalI(psem) osSemaphoreRelease(*(psem))
74 
75 gThread gfxThreadCreate(void* stackarea, gMemSize stacksz, gThreadpriority prio, GFX_THREAD_FUNCTION((*fn),p), void* param);
76 #define gfxYield() osThreadYield()
77 #define gfxThreadMe() osThreadGetId()
78 #define gfxThreadClose(thread) {}
79 
80 /*===========================================================================*/
81 /* Use the generic heap handling */
82 /*===========================================================================*/
83 
84 #define GOS_NEED_X_HEAP GFXON
85 #include "gos_x_heap.h"
86 
87 #endif /* GFX_USE_OS_CMSIS */
88 #endif /* _GOS_CMSIS_H */
void * gThread
A thread handle.
Definition: gos.h:116
#define GFX_THREAD_FUNCTION(fnName, param)
Declare a thread function.
Definition: gos.h:73
gBool gfxSemWait(gSem *psem, gDelay ms)
Wait on a semaphore.
void gfxMutexInit(gMutex *pmutex)
Initialise a mutex to protect a region of code from other threads.
gThread gfxThreadCreate(void *stackarea, gMemSize stacksz, gThreadpriority prio, GFX_THREAD_FUNCTION((*fn), p), void *param)
Start a new thread.
void gfxSemInit(gSem *psem, gSemcount val, gSemcount limit)
Initialise a Counted Semaphore.
A mutex.
Definition: gos.h:110
A semaphore.
Definition: gos.h:104