00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00044 #ifndef _POS_NANO_H
00045 #define _POS_NANO_H
00046
00047 #ifndef DOX
00048 #define DOX 0
00049 #endif
00050
00051
00052
00053
00054
00055
00056
00057
00058 #ifndef _PICOOS_H
00059 #include <port.h>
00060 #include <poscfg.h>
00061 #endif
00062 #include <noscfg.h>
00063
00064
00065 #ifndef NOSCFG_FEATURE_REGISTRY
00066 #define NOSCFG_FEATURE_REGISTRY 0
00067 #endif
00068
00069 #if POSCFG_TASKSTACKTYPE==0
00070 #define NOS_NEEDTASKEXITHOOK
00071 #else
00072 #if NOSCFG_FEATURE_REGISTRY!=0
00073 #define NOS_NEEDTASKEXITHOOK
00074 #endif
00075 #endif
00076
00077 #ifdef NOS_NEEDTASKEXITHOOK
00078
00079
00080 #ifdef POSCFG_TASKEXIT_HOOK
00081 #undef POSCFG_TASKEXIT_HOOK
00082 #endif
00083 #define POSCFG_TASKEXIT_HOOK 1
00084
00085
00086 #define NOS_TASKDATA void *nosstkroot;
00087
00088 #endif
00089
00090
00091 #ifndef _PICOOS_H
00092 #include <picoos.h>
00093 #endif
00094
00095
00096
00097
00098
00099
00100
00101 #ifndef NOSCFG_FEATURE_MEMALLOC
00102 #error NOSCFG_FEATURE_MEMALLOC not defined
00103 #endif
00104 #ifndef NOSCFG_FEATURE_CONIN
00105 #error NOSCFG_FEATURE_CONIN not defined
00106 #endif
00107 #ifndef NOSCFG_FEATURE_CONOUT
00108 #error NOSCFG_FEATURE_CONOUT not defined
00109 #endif
00110 #ifndef NOSCFG_CONOUT_HANDSHAKE
00111 #error NOSCFG_CONOUT_HANDSHAKE not defined
00112 #endif
00113 #ifndef NOSCFG_CONOUT_FIFOSIZE
00114 #error NOSCFG_CONOUT_FIFOSIZE not defined
00115 #endif
00116 #ifndef NOSCFG_FEATURE_PRINTF
00117 #error NOSCFG_FEATURE_PRINTF not defined
00118 #endif
00119 #ifndef NOSCFG_FEATURE_SPRINTF
00120 #error NOSCFG_FEATURE_SPRINTF not defined
00121 #endif
00122 #ifndef NOSCFG_FEATURE_TASKCREATE
00123 #error NOSCFG_FEATURE_TASKCREATE not defined
00124 #endif
00125 #ifndef NOSCFG_DEFAULT_STACKSIZE
00126 #error NOSCFG_DEFAULT_STACKSIZE not defined in the port configuration file
00127 #endif
00128 #ifndef NOSCFG_STACK_GROWS_UP
00129 #error NOSCFG_STACK_GROWS_UP not defined in the port configuration file
00130 #endif
00131 #ifndef NOSCFG_MEM_MANAGE_MODE
00132 #error NOSCFG_MEM_MANAGE_MODE not defined
00133 #endif
00134 #ifndef NOSCFG_FEATURE_MEMSET
00135 #error NOSCFG_FEATURE_MEMSET not defined
00136 #endif
00137 #ifndef NOSCFG_FEATURE_MEMCOPY
00138 #error NOSCFG_FEATURE_MEMCOPY not defined
00139 #endif
00140 #ifndef NOSCFG_STKMEM_RESERVE
00141 #error NOSCFG_STKMEM_RESERVE not defined
00142 #endif
00143 #if NOSCFG_MEM_MANAGER_TYPE == 2
00144 #ifndef NOSCFG_MEM_USER_MALLOC
00145 #error NOSCFG_MEM_USER_MALLOC not defined
00146 #endif
00147 #ifndef NOSCFG_MEM_USER_FREE
00148 #error NOSCFG_MEM_USER_FREE not defined
00149 #endif
00150 #endif
00151 #ifndef NOSCFG_FEATURE_BOTTOMHALF
00152 #error NOSCFG_FEATURE_BOTTOMHALF not defined
00153 #endif
00154 #if NOSCFG_FEATURE_BOTTOMHALF != 0
00155 #ifndef NOS_MAX_BOTTOMHALFS
00156 #error NOS_MAX_BOTTOMHALFS not defined
00157 #endif
00158 #if (NOS_MAX_BOTTOMHALFS == 0) || (NOS_MAX_BOTTOMHALFS > MVAR_BITS)
00159 #error NOS_MAX_BOTTOMHALFS must be in the range 1 .. MVAR_BITS
00160 #endif
00161 #endif
00162 #ifndef NOSCFG_FEATURE_CPUUSAGE
00163 #error NOSCFG_FEATURE_CPUUSAGE not defined
00164 #endif
00165
00166 #if NOSCFG_FEATURE_REGISTRY
00167 #ifndef NOSCFG_FEATURE_REGQUERY
00168 #error NOSCFG_FEATURE_REGQUERY
00169 #endif
00170 #ifndef NOSCFG_FEATURE_USERREG
00171 #error NOSCFG_FEATURE_USERREG
00172 #endif
00173 #ifndef NOS_MAX_REGKEYLEN
00174 #error NOS_MAX_REGKEYLEN
00175 #endif
00176 #if NOS_MAX_REGKEYLEN < 4
00177 #error NOS_MAX_REGKEYLEN must be at least 4
00178 #endif
00179 #ifndef NOS_REGKEY_PREALLOC
00180 #error NOS_REGKEY_PREALLOC
00181 #endif
00182 #else
00183 #ifdef NOSCFG_FEATURE_USERREG
00184 #undef NOSCFG_FEATURE_USERREG
00185 #endif
00186 #define NOSCFG_FEATURE_USERREG 0
00187 #ifdef NOSCFG_FEATURE_REGQUERY
00188 #undef NOSCFG_FEATURE_REGQUERY
00189 #endif
00190 #define NOSCFG_FEATURE_REGQUERY 0
00191 #endif
00192
00193 #ifndef NOSCFG_FEATURE_SEMAPHORES
00194 #define NOSCFG_FEATURE_SEMAPHORES 0
00195 #endif
00196
00197 #if NOSCFG_FEATURE_SEMAPHORES != 0 && POSCFG_FEATURE_SEMAPHORES == 0
00198 #error NOSCFG_FEATURE_SEMAPHORES enabled, but pico]OS semaphores disabled
00199 #endif
00200
00201 #ifndef NOSCFG_FEATURE_MUTEXES
00202 #define NOSCFG_FEATURE_MUTEXES 0
00203 #endif
00204 #if NOSCFG_FEATURE_MUTEXES != 0 && POSCFG_FEATURE_MUTEXES == 0
00205 #error NOSCFG_FEATURE_MUTEXES enabled, but pico]OS mutexes disabled
00206 #endif
00207
00208 #ifndef NOSCFG_FEATURE_MSGBOXES
00209 #define NOSCFG_FEATURE_MSGBOXES 0
00210 #endif
00211 #if NOSCFG_FEATURE_MSGBOXES != 0 && POSCFG_FEATURE_MSGBOXES == 0
00212 #error NOSCFG_FEATURE_MSGBOXES enabled, but pico]OS message boxes disabled
00213 #endif
00214
00215 #ifndef NOSCFG_FEATURE_FLAGS
00216 #define NOSCFG_FEATURE_FLAGS 0
00217 #endif
00218 #if NOSCFG_FEATURE_FLAGS != 0 && POSCFG_FEATURE_FLAGS == 0
00219 #error NOSCFG_FEATURE_FLAGS enabled, but pico]OS flag functions disabled
00220 #endif
00221
00222 #ifndef NOSCFG_FEATURE_TIMER
00223 #define NOSCFG_FEATURE_TIMER 0
00224 #endif
00225 #if NOSCFG_FEATURE_TIMER != 0 && POSCFG_FEATURE_TIMER == 0
00226 #error NOSCFG_FEATURE_TIMER enabled, but pico]OS timer functions disabled
00227 #endif
00228
00229 #ifndef NOSCFG_MEM_OVWR_STANDARD
00230 #define NOSCFG_MEM_OVWR_STANDARD 1
00231 #endif
00232 #ifndef NOSCFG_FEATURE_REALLOC
00233 #define NOSCFG_FEATURE_REALLOC 0
00234 #endif
00235
00236
00237
00238
00239
00240
00241
00242 #if DOX!=0 || NOSCFG_FEATURE_BOTTOMHALF != 0
00243
00250 typedef void (*NOSBHFUNC_t)(void* arg, UVAR_t bh);
00251 #endif
00252
00253
00254
00255
00256
00257
00258
00271 #ifdef _N_MEM_C
00272 #define NANOEXT
00273 #else
00274 #define NANOEXT extern
00275 #endif
00276
00277 #if DOX!=0 || NOSCFG_FEATURE_MEMALLOC != 0
00278
00292 NANOEXT void* nosMemAlloc(UINT_t size);
00293
00302 NANOEXT void nosMemFree(void *p);
00303
00304
00305 #if DOX!=0 || NOSCFG_FEATURE_REALLOC != 0
00306
00322 NANOEXT void *nosMemRealloc(void *memblock, UINT_t size);
00323 #endif
00324
00325
00326 #ifndef NANOINTERNAL
00327 #if NOSCFG_MEM_OVWR_STANDARD != 0
00328 #ifdef malloc
00329 #undef malloc
00330 #endif
00331 #ifdef calloc
00332 #undef calloc
00333 #endif
00334 #ifdef free
00335 #undef free
00336 #endif
00337 #define malloc nosMemAlloc
00338 #define calloc (not_supported)
00339 #define free nosMemFree
00340 #endif
00341 #else
00342
00343 #if NOSCFG_MEM_MANAGER_TYPE == 0
00344 #define NOS_MEM_ALLOC(x) malloc((size_t)(x))
00345 #define NOS_MEM_FREE(x) free(x)
00346 #elif NOSCFG_MEM_MANAGER_TYPE == 1
00347 void* nos_malloc(UINT_t size);
00348 void nos_free(void *mp);
00349 #define NOS_MEM_ALLOC(x) nos_malloc(x)
00350 #define NOS_MEM_FREE(x) nos_free(x)
00351 #elif NOSCFG_MEM_MANAGER_TYPE == 2
00352 #define NOS_MEM_ALLOC(x) NOSCFG_MEM_USER_MALLOC(x)
00353 #define NOS_MEM_FREE(x) NOSCFG_MEM_USER_FREE(x)
00354 #endif
00355 #endif
00356
00357 #endif
00358
00359 #if DOX!=0 || NOSCFG_FEATURE_MEMSET != 0
00360
00372 NANOEXT void nosMemSet(void *buf, char val, UINT_t count);
00373
00374 #if NOSCFG_MEM_OVWR_STANDARD != 0
00375 #ifdef memset
00376 #undef memset
00377 #endif
00378 #define memset nosMemSet
00379 #endif
00380
00381 #endif
00382
00383 #if DOX!=0 || NOSCFG_FEATURE_MEMCOPY != 0
00384
00396 NANOEXT void nosMemCopy(void *dst, void *src, UINT_t count);
00397
00398 #if NOSCFG_MEM_OVWR_STANDARD != 0
00399 #ifdef memcpy
00400 #undef memcpy
00401 #endif
00402 #define memcpy nosMemCopy
00403 #endif
00404
00405 #endif
00406 #undef NANOEXT
00407
00411
00412
00413
00414
00435 #ifdef _N_CONIO_C
00436 #define NANOEXT
00437 #else
00438 #define NANOEXT extern
00439 #endif
00440
00441 #if DOX!=0 || NOSCFG_FEATURE_CONIN != 0
00442
00454 NANOEXT void c_nos_keyinput(UVAR_t key);
00455
00465 NANOEXT char nosKeyGet(void);
00466
00476 NANOEXT UVAR_t nosKeyPressed(void);
00477
00478 #endif
00479
00480
00481 #if DOX!=0 || NOSCFG_FEATURE_CONOUT != 0
00482
00503 NANOEXT UVAR_t p_putchar(char c);
00504 #endif
00505
00506
00507 #if DOX!=0 || NOSCFG_CONOUT_HANDSHAKE != 0
00508
00529 NANOEXT void c_nos_putcharReady(void);
00530 #endif
00531
00532
00533 #if DOX!=0 || NOSCFG_FEATURE_CONOUT != 0
00534
00543 NANOEXT void nosPrintChar(char c);
00544
00554 NANOEXT void nosPrint(const char *s);
00555
00556 #endif
00557
00558 #if NOSCFG_FEATURE_CONOUT == 0
00559 #if NOSCFG_FEATURE_PRINTF != 0
00560 #undef NOSCFG_FEATURE_PRINTF
00561 #define NOSCFG_FEATURE_PRINTF 0
00562 #endif
00563 #endif
00564
00565 #if NOSCFG_FEATURE_PRINTF != 0 || NOSCFG_FEATURE_SPRINTF != 0
00566 typedef void* NOSARG_t;
00567 #endif
00568
00569
00570 #if DOX!=0 || ((NOSCFG_FEATURE_CONOUT != 0)&&(NOSCFG_FEATURE_PRINTF != 0))
00571
00572 NANOEXT void n_printFormattedN(const char *fmt, NOSARG_t args);
00573
00574 #if DOX
00575
00590 NANOEXT void nosPrintf1(const char *fmt, arg a1);
00591
00592 #else
00593 #define nosPrintf1(fmt, a1) \
00594 do { \
00595 NOSARG_t args[1]; args[0] = (NOSARG_t)(a1); \
00596 n_printFormattedN(fmt, args); \
00597 } while(0);
00598
00599 #define nosPrintf2(fmt, a1, a2) \
00600 do { \
00601 NOSARG_t args[2]; args[0] = (NOSARG_t)(a1); \
00602 args[1] = (NOSARG_t)(a2); \
00603 n_printFormattedN(fmt, args); \
00604 } while(0);
00605
00606 #define nosPrintf3(fmt, a1, a2, a3) \
00607 do { \
00608 NOSARG_t args[3]; args[0] = (NOSARG_t)(a1); \
00609 args[1] = (NOSARG_t)(a2); args[2] = (NOSARG_t)(a3); \
00610 n_printFormattedN(fmt, args); \
00611 } while(0);
00612
00613 #define nosPrintf4(fmt, a1, a2, a3, a4) \
00614 do { \
00615 NOSARG_t args[4]; \
00616 args[0] = (NOSARG_t)(a1); args[1] = (NOSARG_t)(a2); \
00617 args[2] = (NOSARG_t)(a3); args[3] = (NOSARG_t)(a4); \
00618 n_printFormattedN(fmt, args); \
00619 } while(0);
00620
00621 #define nosPrintf5(fmt, a1, a2, a3, a4, a5) \
00622 do { \
00623 NOSARG_t args[5]; args[0] = (NOSARG_t)(a1); \
00624 args[1] = (NOSARG_t)(a2); args[2] = (NOSARG_t)(a3); \
00625 args[3] = (NOSARG_t)(a4); args[4] = (NOSARG_t)(a5); \
00626 n_printFormattedN(fmt, args); \
00627 } while(0);
00628
00629 #define nosPrintf6(fmt, a1, a2, a3, a4, a5, a6) \
00630 do { \
00631 NOSARG_t args[6]; \
00632 args[0] = (NOSARG_t)(a1); args[1] = (NOSARG_t)(a2); \
00633 args[2] = (NOSARG_t)(a3); args[3] = (NOSARG_t)(a4); \
00634 args[4] = (NOSARG_t)(a5); args[5] = (NOSARG_t)(a6); \
00635 n_printFormattedN(fmt, args); \
00636 } while(0);
00637
00638 #endif
00639 #endif
00640
00641
00642 #if DOX!=0 || NOSCFG_FEATURE_SPRINTF != 0
00643 #if DOX
00644
00659 NANOEXT void nosSPrintf1(char *buf, const char *fmt, arg a1);
00660
00661 #else
00662
00663 NANOEXT void n_sprintFormattedN(char *buf, const char *fmt, NOSARG_t args);
00664
00665 #define nosSPrintf1(buf, fmt, a1) \
00666 do { \
00667 NOSARG_t args[1]; args[0] = (NOSARG_t)(a1); \
00668 n_sprintFormattedN(buf, fmt, args); \
00669 } while(0);
00670
00671 #define nosSPrintf2(buf, fmt, a1, a2) \
00672 do { \
00673 NOSARG_t args[2]; args[0] = (NOSARG_t)(a1); \
00674 args[1] = (NOSARG_t)(a2); \
00675 n_sprintFormattedN(buf, fmt, args); \
00676 } while(0);
00677
00678 #define nosSPrintf3(buf, fmt, a1, a2, a3) \
00679 do { \
00680 NOSARG_t args[3]; args[0] = (NOSARG_t)(a1); \
00681 args[1] = (NOSARG_t)(a2); args[2] = (NOSARG_t)(a3); \
00682 n_sprintFormattedN(buf, fmt, args); \
00683 } while(0);
00684
00685 #define nosSPrintf4(buf, fmt, a1, a2, a3, a4) \
00686 do { \
00687 NOSARG_t args[4]; \
00688 args[0] = (NOSARG_t)(a1); args[1] = (NOSARG_t)(a2); \
00689 args[2] = (NOSARG_t)(a3); args[3] = (NOSARG_t)(a4); \
00690 n_sprintFormattedN(buf, fmt, args); \
00691 } while(0);
00692
00693 #define nosSPrintf5(buf, fmt, a1, a2, a3, a4, a5) \
00694 do { \
00695 NOSARG_t args[5]; args[0] = (NOSARG_t)(a1); \
00696 args[1] = (NOSARG_t)(a2); args[2] = (NOSARG_t)(a3); \
00697 args[3] = (NOSARG_t)(a4); args[4] = (NOSARG_t)(a5); \
00698 n_sprintFormattedN(buf, fmt, args); \
00699 } while(0);
00700
00701 #define nosSPrintf6(buf, fmt, a1, a2, a3, a4, a5, a6) \
00702 do { \
00703 NOSARG_t args[6]; \
00704 args[0] = (NOSARG_t)(a1); args[1] = (NOSARG_t)(a2); \
00705 args[2] = (NOSARG_t)(a3); args[3] = (NOSARG_t)(a4); \
00706 args[4] = (NOSARG_t)(a5); args[5] = (NOSARG_t)(a6); \
00707 n_sprintFormattedN(buf, fmt, args); \
00708 } while(0);
00709
00710 #endif
00711 #endif
00712 #undef NANOEXT
00713
00717
00718
00719
00720
00739 #ifdef _N_BHALF_C
00740 #define NANOEXT
00741 #else
00742 #define NANOEXT extern
00743 #endif
00744
00745 #if DOX!=0 || NOSCFG_FEATURE_BOTTOMHALF != 0
00746
00765 NANOEXT VAR_t nosBottomHalfRegister(UVAR_t number, NOSBHFUNC_t func,
00766 void *arg);
00767
00777 #define nosBottomHalfUnregister(number) \
00778 nosBottomHalfRegister(number, NULL, NULL)
00779
00792 NANOEXT void nosBottomHalfStart(UVAR_t number);
00793
00794 #endif
00795 #undef NANOEXT
00796
00800
00801
00802
00803
00824 #ifdef _N_REG_C
00825 #define NANOEXT
00826 #else
00827 #define NANOEXT extern
00828 #endif
00829
00830 #if DOX!=0 || NOSCFG_FEATURE_REGISTRY != 0
00831
00833 typedef void* NOSGENERICHANDLE_t;
00834
00837 typedef void* NOSREGQHANDLE_t;
00838
00839
00840
00841 typedef union {
00842 void* voidptr;
00843 int integer;
00844 } KEYVALUE_t;
00845
00847 typedef enum {
00848 REGTYPE_TASK = 0,
00849 #if DOX!=0 || NOSCFG_FEATURE_SEMAPHORES != 0
00850 REGTYPE_SEMAPHORE,
00851 #endif
00852 #if DOX!=0 || NOSCFG_FEATURE_MUTEXES != 0
00853 REGTYPE_MUTEX,
00854 #endif
00855 #if DOX!=0 || NOSCFG_FEATURE_FLAGS != 0
00856 REGTYPE_FLAG,
00857 #endif
00858 #if DOX!=0 || NOSCFG_FEATURE_TIMER != 0
00859 REGTYPE_TIMER,
00860 #endif
00861 #if DOX!=0 || NOSCFG_FEATURE_USERREG != 0
00862 REGTYPE_USER,
00863 #endif
00864 REGTYPE_SEARCHALL
00866 } NOSREGTYPE_t;
00867 #define MIN_REGTYPE REGTYPE_TASK
00868 #define MAX_REGTYPE (REGTYPE_SEARCHALL-1)
00869
00870
00886 NANOEXT NOSGENERICHANDLE_t nosGetHandleByName(
00887 NOSREGTYPE_t objtype, const char *objname);
00888
00889
00909 NANOEXT VAR_t nosGetNameByHandle(NOSGENERICHANDLE_t handle,
00910 char *buffer, VAR_t bufsize,
00911 NOSREGTYPE_t what);
00912
00913 #if DOX!=0 || NOSCFG_FEATURE_USERREG != 0
00914
00931 NANOEXT VAR_t nosRegSet(const char *keyname, KEYVALUE_t keyvalue);
00932
00946 NANOEXT VAR_t nosRegGet(const char *keyname, KEYVALUE_t *keyvalue);
00947
00956 NANOEXT VAR_t nosRegDel(const char *keyname);
00957 #endif
00958
00959 #if DOX!=0 || NOSCFG_FEATURE_REGQUERY != 0
00960
00980 NANOEXT NOSREGQHANDLE_t nosRegQueryBegin(NOSREGTYPE_t type);
00981
01001 NANOEXT VAR_t nosRegQueryElem(NOSREGQHANDLE_t qh, NOSGENERICHANDLE_t *genh,
01002 char* namebuf, VAR_t bufsize);
01003
01014 NANOEXT void nosRegQueryEnd(NOSREGQHANDLE_t qh);
01015 #endif
01016
01017 #endif
01018 #undef NANOEXT
01019
01023
01024
01025
01026
01027 #if (DOX!=0) || (NOSCFG_FEATURE_CPUUSAGE != 0)
01028
01042 UVAR_t nosCpuUsage(void);
01043 #endif
01044
01048
01049
01050
01051
01052 #ifdef _N_CORE_C
01053 #define NANOEXT
01054 #else
01055 #define NANOEXT extern
01056 #endif
01057
01075 typedef POSTASK_t NOSTASK_t;
01076
01077
01078 #if (DOX!=0) || (NOSCFG_FEATURE_TASKCREATE != 0)
01079
01102 NANOEXT NOSTASK_t nosTaskCreate(POSTASKFUNC_t funcptr, void *funcarg,
01103 VAR_t priority, UINT_t stacksize,
01104 const char* name);
01105
01106
01107 #if (DOX!=0) || (POSCFG_FEATURE_YIELD != 0)
01108
01118 #if DOX
01119 NANOEXT void nosTaskYield(void);
01120 #else
01121 #define nosTaskYield() posTaskYield()
01122 #endif
01123 #endif
01124
01125 #if (DOX!=0) || (POSCFG_FEATURE_SLEEP != 0)
01126
01142 #if DOX
01143 NANOEXT void nosTaskSleep(UINT_t ticks);
01144 #else
01145 #define nosTaskSleep(ticks) posTaskSleep(ticks)
01146 #endif
01147 #endif
01148
01149 #if (DOX!=0) || (POSCFG_FEATURE_EXIT != 0)
01150
01159 #if DOX
01160 NANOEXT void nosTaskExit(void);
01161 #else
01162 #define nosTaskExit() posTaskExit()
01163 #endif
01164 #endif
01165
01166 #if (DOX!=0) || (POSCFG_FEATURE_GETTASK != 0)
01167
01177 #if DOX
01178 NANOEXT NOSTASK_t nosTaskGetCurrent(void);
01179 #else
01180 #define nosTaskGetCurrent() (NOSTASK_t)posTaskGetCurrent()
01181 #endif
01182 #endif
01183
01184 #if (DOX!=0) || (POSCFG_FEATURE_TASKUNUSED != 0)
01185
01200 #if DOX
01201 NANOEXT VAR_t nosTaskUnused(NOSTASK_t taskhandle);
01202 #else
01203 #define nosTaskUnused(th) posTaskUnused((POSTASK_t)(th))
01204 #endif
01205 #endif
01206
01207 #if (DOX!=0) || (POSCFG_FEATURE_SETPRIORITY != 0)
01208
01223 #if DOX
01224 NANOEXT VAR_t nosTaskSetPriority(NOSTASK_t taskhandle, VAR_t priority);
01225 #else
01226 #define nosTaskSetPriority(th, prio) posTaskSetPriority((POSTASK_t)(th),prio)
01227 #endif
01228 #endif
01229
01230 #if (DOX!=0) || (POSCFG_FEATURE_GETPRIORITY != 0)
01231
01242 #if DOX
01243 NANOEXT VAR_t nosTaskGetPriority(NOSTASK_t taskhandle);
01244 #else
01245 #define nosTaskGetPriority(th) posTaskGetPriority((POSTASK_t)(th))
01246 #endif
01247 #endif
01248
01249 #if (DOX!=0) || (POSCFG_FEATURE_INHIBITSCHED != 0)
01250
01263 #if DOX
01264 NANOEXT void nosTaskSchedLock(void);
01265 #else
01266 #define nosTaskSchedLock() posTaskSchedLock()
01267 #endif
01268
01280 #if DOX
01281 NANOEXT void nosTaskSchedUnlock(void);
01282 #else
01283 #define nosTaskSchedUnlock() posTaskSchedUnlock()
01284 #endif
01285 #endif
01286
01287 #if (DOX!=0) || (POSCFG_TASKCB_USERSPACE > 0)
01288
01298 #if DOX
01299 NANOEXT void* nosTaskGetUserspace(void);
01300 #else
01301 #define nosTaskGetUserspace() posTaskGetUserspace()
01302 #endif
01303 #endif
01304
01305 #if (DOX!=0) || (POSCFG_FEATURE_IDLETASKHOOK != 0)
01306
01307 typedef POSIDLEFUNC_t NOSIDLEFUNC_t;
01328 #if DOX
01329 NANOEXT NOSIDLEFUNC_t nosInstallIdleTaskHook(NOSIDLEFUNC_t idlefunc);
01330 #else
01331 #define nosInstallIdleTaskHook(ifunc) posInstallIdleTaskHook(ifunc)
01332 #endif
01333 #endif
01334
01335 #endif
01336
01344 #if DOX!=0 || NOSCFG_FEATURE_SEMAPHORES != 0
01345
01347 typedef POSSEMA_t NOSSEMA_t;
01348
01373 #if DOX!=0 || NOSCFG_FEATURE_REGISTRY != 0
01374 NANOEXT NOSSEMA_t nosSemaCreate(INT_t initcount, UVAR_t options,
01375 const char *name);
01376 #else
01377 #define nosSemaCreate(i, o, n) (NOSSEMA_t) posSemaCreate(i);
01378 #endif
01379
01380 #if DOX!=0 || POSCFG_FEATURE_SEMADESTROY != 0
01381
01393 #if DOX!=0 || NOSCFG_FEATURE_REGISTRY != 0
01394 NANOEXT void nosSemaDestroy(NOSSEMA_t sema);
01395 #else
01396 #define nosSemaDestroy(sema) posSemaDestroy((POSSEMA_t)(sema))
01397 #endif
01398 #endif
01399
01400 #if DOX
01401
01414 NANOEXT VAR_t nosSemaSignal(NOSSEMA_t sema);
01415 #else
01416 #define nosSemaSignal(sem) posSemaSignal((POSSEMA_t)(sem))
01417 #endif
01418
01419 #if DOX
01420
01434 NANOEXT VAR_t nosSemaGet(NOSSEMA_t sema);
01435 #else
01436 #define nosSemaGet(sem) posSemaGet((POSSEMA_t)(sem))
01437 #endif
01438
01439 #if DOX
01440
01462 NANOEXT VAR_t nosSemaWait(NOSSEMA_t sema, UINT_t timeoutticks);
01463 #else
01464 #if POSCFG_FEATURE_SEMAWAIT
01465 #define nosSemaWait(sem, to) posSemaWait((POSSEMA_t)(sem), to)
01466 #endif
01467 #endif
01468
01469 #endif
01470
01478 #if DOX!=0 || NOSCFG_FEATURE_MUTEXES != 0
01479
01481 typedef POSMUTEX_t NOSMUTEX_t;
01482
01504 #if DOX!=0 || NOSCFG_FEATURE_REGISTRY != 0
01505 NANOEXT NOSMUTEX_t nosMutexCreate(UVAR_t options, const char *name);
01506 #else
01507 #define nosMutexCreate(opt, name) (NOSMUTEX_t) posMutexCreate()
01508 #endif
01509
01510 #if DOX!=0 || POSCFG_FEATURE_MUTEXDESTROY != 0
01511
01523 #if DOX!=0 || NOSCFG_FEATURE_REGISTRY != 0
01524 NANOEXT void nosMutexDestroy(NOSMUTEX_t mutex);
01525 #else
01526 #define nosMutexDestroy(mutex) posMutexDestroy((POSMUTEX_t)(mutex))
01527 #endif
01528 #endif
01529
01530 #if DOX!=0 || POSCFG_FEATURE_MUTEXTRYLOCK != 0
01531
01548 #if DOX
01549 NANOEXT VAR_t nosMutexTryLock(NOSMUTEX_t mutex);
01550 #else
01551 #define nosMutexTryLock(mutex) posMutexTryLock((POSMUTEX_t)(mutex))
01552 #endif
01553 #endif
01554
01569 #if DOX
01570 NANOEXT VAR_t nosMutexLock(NOSMUTEX_t mutex);
01571 #else
01572 #define nosMutexLock(mutex) posMutexLock((POSMUTEX_t)(mutex))
01573 #endif
01574
01587 #if DOX
01588 NANOEXT VAR_t nosMutexUnlock(NOSMUTEX_t mutex);
01589 #else
01590 #define nosMutexUnlock(mutex) posMutexUnlock((POSMUTEX_t)(mutex))
01591 #endif
01592
01593 #endif
01594
01604 #if DOX!=0 || NOSCFG_FEATURE_MSGBOXES != 0
01605
01627 NANOEXT void* nosMessageAlloc(UINT_t msgSize);
01628
01638 NANOEXT void nosMessageFree(void *buf);
01639
01652 NANOEXT VAR_t nosMessageSend(void *buf, NOSTASK_t taskhandle);
01653
01668 #if DOX
01669 NANOEXT void* nosMessageGet(void);
01670 #else
01671 #define nosMessageGet() posMessageGet()
01672 #endif
01673
01674 #if DOX!=0 || POSCFG_FEATURE_MSGWAIT != 0
01675
01699 #if DOX
01700 NANOEXT void* nosMessageWait(UINT_t timeoutticks);
01701 #else
01702 #define nosMessageWait(to) posMessageWait(to)
01703 #endif
01704 #endif
01705
01720 #if DOX
01721 NANOEXT VAR_t nosMessageAvailable(void);
01722 #else
01723 #define nosMessageAvailable() posMessageAvailable()
01724 #endif
01725
01726 #endif
01727
01736 #if DOX!=0 || NOSCFG_FEATURE_FLAGS != 0
01737
01739 typedef POSFLAG_t NOSFLAG_t;
01740
01765 #if DOX!=0 || NOSCFG_FEATURE_REGISTRY != 0
01766 NANOEXT NOSFLAG_t nosFlagCreate(const char* name);
01767 #else
01768 #define nosFlagCreate(name) (NOSFLAG_t) posFlagCreate()
01769 #endif
01770
01771 #if DOX!=0 || POSCFG_FEATURE_FLAGDESTROY != 0
01772
01784 #if (DOX!=0) || (NOSCFG_FEATURE_REGISTRY != 0)
01785 NANOEXT void nosFlagDestroy(NOSFLAG_t flg);
01786 #else
01787 #define nosFlagDestroy(flg) posFlagDestroy((POSFLAG_t)(flg))
01788 #endif
01789 #endif
01790
01805 #if DOX
01806 NANOEXT VAR_t nosFlagSet(NOSFLAG_t flg, UVAR_t flgnum);
01807 #else
01808 #define nosFlagSet(flg, num) posFlagSet((POSFLAG_t)(flg), num)
01809 #endif
01810
01827 #if DOX
01828 NANOEXT VAR_t nosFlagGet(NOSFLAG_t flg, UVAR_t mode);
01829 #else
01830 #define nosFlagGet(flg, mode) posFlagGet((POSFLAG_t)(flg), mode)
01831 #endif
01832
01833 #if DOX!=0 || POSCFG_FEATURE_FLAGWAIT != 0
01834
01855 #if DOX
01856 NANOEXT VAR_t nosFlagWait(NOSFLAG_t flg, UINT_t timeoutticks);
01857 #else
01858 #define nosFlagWait(flg, to) posFlagWait((POSFLAG_t)(flg), to)
01859 #endif
01860 #endif
01861
01862 #define NOSFLAG_MODE_GETSINGLE POSFLAG_MODE_GETSINGLE
01863 #define NOSFLAG_MODE_GETMASK POSFLAG_MODE_GETMASK
01864
01865 #endif
01866
01879 #if DOX!=0 || NOSCFG_FEATURE_TIMER != 0
01880
01882 typedef POSTIMER_t NOSTIMER_t;
01883
01906 #if DOX!=0 || NOSCFG_FEATURE_REGISTRY != 0
01907 NANOEXT NOSTIMER_t nosTimerCreate(const char *name);
01908 #else
01909 #define nosTimerCreate(name) (NOSTIMER_t) posTimerCreate()
01910 #endif
01911
01931 #if DOX
01932 NANOEXT VAR_t nosTimerSet(NOSTIMER_t tmr, NOSSEMA_t sema,
01933 UINT_t waitticks, UINT_t periodticks);
01934 #else
01935 #define nosTimerSet(t, s, w, p) \
01936 posTimerSet((POSTIMER_t)(t), (POSSEMA_t)(s), w, p)
01937 #endif
01938
01952 #if DOX
01953 NANOEXT VAR_t nosTimerStart(NOSTIMER_t tmr);
01954 #else
01955 #define nosTimerStart(tmr) posTimerStart((POSTIMER_t)(tmr))
01956 #endif
01957
01970 #if DOX
01971 NANOEXT VAR_t nosTimerStop(NOSTIMER_t tmr);
01972 #else
01973 #define nosTimerStop(tmr) posTimerStop((POSTIMER_t)(tmr))
01974 #endif
01975
01976 #if DOX!=0 || POSCFG_FEATURE_TIMERDESTROY != 0
01977
01989 #if DOX!=0 || NOSCFG_FEATURE_REGISTRY != 0
01990 NANOEXT void nosTimerDestroy(NOSTIMER_t tmr);
01991 #else
01992 #define nosTimerDestroy(tmr) posTimerDestroy((POSTIMER_t)(tmr))
01993 #endif
01994 #endif
01995
01996 #if DOX!=0 || POSCFG_FEATURE_TIMERFIRED != 0
01997
02011 #if DOX
02012 NANOEXT VAR_t nosTimerFired(NOSTIMER_t tmr);
02013 #else
02014 #define nosTimerFired(tmr) posTimerFired((POSTIMER_t)(tmr))
02015 #endif
02016 #endif
02017
02018 #endif
02019
02021 #undef NANOEXT
02022
02026
02027
02028
02029
02035 #ifdef _N_CORE_C
02036 #define NANOEXT
02037 #else
02038 #define NANOEXT extern
02039 #endif
02040
02061 NANOEXT void nosInit(POSTASKFUNC_t firstfunc, void *funcarg, VAR_t priority,
02062 UINT_t taskStackSize, UINT_t idleStackSize);
02063
02064 #ifndef _N_CORE_C
02065 #ifndef _POSCORE_C
02066 #define posInit _Please_use_nosInit_instead_of_posInit_
02067 #endif
02068 #endif
02069 #undef NANOEXT
02070
02072 #endif
02073