diff options
author | inmarket <andrewh@inmarket.com.au> | 2014-09-29 16:21:31 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2014-09-29 16:21:31 +1000 |
commit | 65315ac16263ab81f90ca2de20d09b6eda4cf29a (patch) | |
tree | 997d7a2472213cc3422d75c08d470a0e4d6f84c9 /src/gos/gos_rawrtos.c | |
parent | 445fadaa4a1319733ca64ed3c720809b2de75815 (diff) | |
parent | 32a4969b7d4d92b1d40e60fae676d798bacb780f (diff) | |
download | uGFX-65315ac16263ab81f90ca2de20d09b6eda4cf29a.tar.gz uGFX-65315ac16263ab81f90ca2de20d09b6eda4cf29a.tar.bz2 uGFX-65315ac16263ab81f90ca2de20d09b6eda4cf29a.zip |
Merge remote-tracking branch 'origin/newmouse' into newmouse
Diffstat (limited to 'src/gos/gos_rawrtos.c')
-rw-r--r-- | src/gos/gos_rawrtos.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/gos/gos_rawrtos.c b/src/gos/gos_rawrtos.c new file mode 100644 index 00000000..cd684208 --- /dev/null +++ b/src/gos/gos_rawrtos.c @@ -0,0 +1,83 @@ +#include "gfx.h" + +#if GFX_USE_OS_RAWRTOS + +#include <string.h> +#include "raw_api.h" +#include "raw_config.h" + +#if CONFIG_RAW_MUTEX != 1 + #error "GOS: CONFIG_RAW_MUTEX must be defined in raw_config.h" +#endif + +#if CONFIG_RAW_SEMAPHORE != 1 + #error "GOS: CONFIG_RAW_SEMAPHORE must be defined in raw_config.h" +#endif + + +void _gosInit(void) +{ + #if !GFX_NO_OS_INIT + #error "GOS: Operating System initialization for RawRTOS is not yet implemented in uGFX. Please set GFX_NO_OS_INIT to TRUE in your gfxconf.h" + #else + #warning "GOS: Operating System initialization has been turned off. Make sure you call raw_os_start() before gfxInit() in your application!" + #endif +} + +void _gosDeinit(void) +{ +} + + +void gfxSleepMilliseconds(delaytime_t ms) +{ + systemticks_t ticks = ms*RAW_TICKS_PER_SECOND/1000; + if(!ticks)ticks = 1; + raw_sleep(ticks); +} + +void gfxSleepMicroseconds(delaytime_t us) +{ + systemticks_t ticks = (us/1000)*RAW_TICKS_PER_SECOND/1000; + if(!ticks)ticks = 1; + raw_sleep(ticks); +} + +bool_t gfxSemWait(gfxSem* psem, delaytime_t ms) +{ + systemticks_t ticks = ms*RAW_TICKS_PER_SECOND/1000; + if(!ticks)ticks=1; + if(raw_semaphore_get((psem), ticks)==RAW_SUCCESS) + return TRUE; + return FALSE; +} + +bool_t gfxSemWaitI(gfxSem* psem) +{ + if(raw_semaphore_get((psem), TIME_IMMEDIATE)==RAW_SUCCESS) + return TRUE; + return FALSE; +} + +gfxThreadHandle gfxThreadCreate(void *stackarea, size_t stacksz, threadpriority_t prio, DECLARE_THREAD_FUNCTION((*fn),p), void *param) +{ + RAW_U16 ret; + gfxThreadHandle taskobj; + + taskobj = gfxAlloc(sizeof(RAW_TASK_OBJ)); + ret = raw_task_create(taskobj, (RAW_U8 *)"uGFX_TASK", param, + prio, 0, stackarea, + stacksz/sizeof(PORT_STACK) , fn, 1); + + if (ret != RAW_SUCCESS) { + for (;;); + } + + return (taskobj); +} + + +#endif + + + |