📄 salvo.h
字号:
#if ( OSEVENT_FLAGS == 0 )
#undef OSEVENT_FLAGS
#define OSEVENT_FLAGS 1
#endif
#endif
/* must have at least one message queue if they're enabled. */
/* An exception exists when using libraries -- you want to */
/* be able to remove them entirely from your memory map. */
#if OSENABLE_MESSAGE_QUEUES && !OSUSE_LIBRARY
#if ( OSMESSAGE_QUEUES == 0 )
#undef OSMESSAGE_QUEUES
#define OSMESSAGE_QUEUES 1
#endif
#endif
/* statistics must have counters enabled and > 0 */
#if OSGATHER_STATISTICS
#if ( OSBYTES_OF_COUNTS == 0 )
#undef OSBYTES_OF_COUNTS
#define OSBYTES_OF_COUNTS 1
#endif
#if !defined(OSBYTES_OF_COUNTS)
#define OSBYTES_OF_COUNTS 1
#endif
#endif
/* message logging is only allowed if logging is enabled */
#if OSLOG_MESSAGES && !OSLOGGING
#undef OSLOG_MESSAGES
#define OSLOG_MESSAGES OSLOG_NONE
#endif
/* we only support 7 bits of lost tick collecting ... */
#if ( (OSMAX_LOST_TICKS < 1) || (OSMAX_LOST_TICKS > 255) )
#error salvo.h: OSMAX_LOST_TICKS must be > 0 and < 256.
#endif
/* makes sense, esp. for timestamp stuff. */
#if OSBYTES_OF_TICKS && OSBYTES_OF_DELAYS
#if ( OSBYTES_OF_TICKS < OSBYTES_OF_DELAYS )
#error salvo.h: OSBYTES_OF_TICKS must be greater than or equal to OSBYTES_OF_DELAYS
#endif
#endif
/************************************************************
**** ****
** **
Special SALVO configurations.
meta-#defines based on lower-level #defines.
** **
**** ****
************************************************************/
#if defined(OSENABLE_COUNTS)
#undef OSENABLE_COUNTS
#endif
#if OSBYTES_OF_COUNTS
#define OSENABLE_COUNTS TRUE
#else
#define OSENABLE_COUNTS FALSE
#endif
#if defined(OSENABLE_DELAYS)
#undef OSENABLE_DELAYS
#endif
#if OSBYTES_OF_DELAYS
#define OSENABLE_DELAYS TRUE
#else
#define OSENABLE_DELAYS FALSE
#endif
#if defined(OSENABLE_ERROR_CHECKING)
#undef OSENABLE_ERROR_CHECKING
#endif
#define OSENABLE_ERROR_CHECKING !OSDISABLE_ERROR_CHECKING
#if OSENABLE_EVENT_TRYING
#undef OSENABLE_EVENT_READING
#define OSENABLE_EVENT_READING TRUE
#endif
#if defined(OSENABLE_TICKS)
#undef OSENABLE_TICKS
#endif
#if OSBYTES_OF_TICKS
#define OSENABLE_TICKS TRUE
#else
#define OSENABLE_TICKS FALSE
#endif
#if defined(OSENABLE_PRESCALAR)
#undef OSENABLE_PRESCALAR
#endif
#if ( OSTIMER_PRESCALAR >= 1 ) /* avoid TRUE/FALSE problems with big PS */
#define OSENABLE_PRESCALAR TRUE
#else
#define OSENABLE_PRESCALAR FALSE
#endif
#if defined(OSENABLE_EVENTS)
#undef OSENABLE_EVENTS
#endif
#if OSEVENTS && ( OSENABLE_BINARY_SEMAPHORES \
|| OSENABLE_SEMAPHORES || OSENABLE_MESSAGES \
|| OSENABLE_MESSAGE_QUEUES || OSENABLE_EVENT_FLAGS )
#define OSENABLE_EVENTS TRUE
#else
#define OSENABLE_EVENTS FALSE
#endif
#if defined(OSENABLE_TASKS)
#undef OSENABLE_TASKS
#endif
#if OSTASKS
#define OSENABLE_TASKS TRUE
#else
#define OSENABLE_TASKS FALSE
#endif
#if defined(OSARRAY_SIZE_IS_BYTE)
#undef OSARRAY_SIZE_IS_BYTE
#endif
#if defined(OSARRAY_SIZE_IS_WORD)
#undef OSARRAY_SIZE_IS_WORD
#endif
#if OSUSE_ARRAYS
#if ( OSTASKS < 9 )
#define OSARRAY_SIZE_IS_BYTE TRUE
#else
#define OSARRAY_SIZE_IS_WORD TRUE
#endif
#endif
#if OSENABLE_EVENTS \
|| ( OSCALL_OSSTARTTASK == OSFROM_FOREGROUND ) \
|| ( OSCALL_OSSTARTTASK == OSFROM_ANYWHERE )
#define OSENABLE_SIGQ TRUE
#else
#define OSENABLE_SIGQ FALSE
#endif
/************************************************************
**** ****
** **
Compiler- and target-specific special settings
** **
**** ****
************************************************************/
/************************************************************
**** ****
** **
Salvo's native typedefs.
** **
**** ****
************************************************************/
typedef unsigned char OStypeBoolean; /* FALSE or TRUE */
typedef signed char OStypeInt8; /* -128 to +127 */
typedef unsigned char OStypeInt8u; /* 0 to +255 */
typedef signed int OStypeInt16; /* -32768 to +32767 */
typedef unsigned int OStypeInt16u; /* 0 to +65,535 */
typedef signed long OStypeInt32; /* -2.1B to +2.1B */
typedef unsigned long OStypeInt32u; /* 0 to +4,294,967,295 */
typedef OStypeInt8u OStypePrio; /* 16 unique priorities */
#define OStypeCTMode OStypePrio /* synonymous */
typedef OStypeInt8u OStypeState; /* 8 unique states */
typedef OStypeInt8u OStypeOption; /* generic option type, */
/* e.g. for eFlgs */
typedef OStypeInt8u OStypeEType; /* 256 event types */
typedef OStypeInt8u OStypeDepth; /* 256 stack depth */
typedef OStypeInt8u OStypeID; /* 256 IDs */
typedef OStypeInt8u OStypeErr; /* 8-bit return (error) */
/* codes */
typedef struct ecb OStypeEcb; /* event control block */
typedef struct tcb OStypeTcb; /* task control block */
typedef struct mqcb OStypeMqcb; /* msg Q control block */
typedef struct efcb OStypeEfcb; /* ev flag control block*/
typedef OSTYPE_TCBEXT0 OStypeTcbExt0; /* user-definable tcb */
typedef OSTYPE_TCBEXT1 OStypeTcbExt1; /* extension types */
typedef OSTYPE_TCBEXT2 OStypeTcbExt2; /* */
typedef OSTYPE_TCBEXT3 OStypeTcbExt3; /* */
typedef OSTYPE_TCBEXT4 OStypeTcbExt4; /* */
typedef OSTYPE_TCBEXT5 OStypeTcbExt5; /* */
/* NOTE: OStypeBoolean, OStypeBinSem and OStypeSem */
/* (!OSBIG_SEMAPHORES) are all alike -- event processing expects */
/* and requires this. See OSWaitXXX(). Also OStypeMsgQSize */
typedef OStypeBoolean OStypeBinSem; /* binSems are just 0 or 1 */
#if !OSBIG_SEMAPHORES /* small semaphores have a */
typedef OStypeInt8u OStypeSem; /* maximum value of 255, */
#define MAX_SEM 255 /* big ones 32,767 */
#else
typedef OStypeInt16u OStypeSem;
#define MAX_SEM 32767
#endif /* #if !OSBIG_SEMAPHORES */
typedef OStypeInt8u OStypeMsgQSize; /* 255 messages per queue */
typedef OStypeMsgQSize * OStypeMsgQSizeP;
#if OSUSE_ARRAYS
#if OSARRAY_SIZE_IS_BYTE
typedef OStypeInt8u OStypePrioA; /* size of priority arrays */
#else /* depends on the number */
typedef OStypeInt16u OStypePrioA; /* of tasks */
#endif
#endif
/************************************************************
**** ****
** **
Port-specific symbol defaults.
These are a safety net in case the symbol is not set in
portxxxx.c and the default is not desired.
** **
**** ****
************************************************************/
#if !defined(OSBYTES_OF_FRAMEP)
#define OSBYTES_OF_FRAMEP 2
#endif
#if !defined(OSBYTES_OF_SRGIE)
#define OSBYTES_OF_SRGIE 2
#endif
#if !defined(OSCTXSW_METHOD)
#define OSCTXSW_METHOD OSVIA_OSCTXSW
#endif
#if !defined(OSCLEAR_WATCHDOG_TIMER)
#define OSCLEAR_WATCHDOG_TIMER()
#endif
#if !defined(OSLOC_DEFAULT)
#define OSLOC_DEFAULT
#endif
#if !defined(OSMESSAGE_TYPE)
#define OSMESSAGE_TYPE void
#endif
#if !defined(OSMONITOR_KEYWORD_PRE) && !defined(OSMONITOR_KEYWORD_POST)
#define OSMONITOR_KEYWORD_EXISTS FALSE
#define OSMONITOR_KEYWORD_PRE
#define OSMONITOR_KEYWORD_PRE_PROTO
#define OSMONITOR_KEYWORD_POST
#define OSMONITOR_KEYWORD_POST_PROTO
#else
#define OSMONITOR_KEYWORD_EXISTS TRUE
#if !defined(OSMONITOR_KEYWORD_PRE)
#define OSMONITOR_KEYWORD_PRE
#define OSMONITOR_KEYWORD_PRE_PROTO
#elif !defined(OSMONITOR_KEYWORD_POST)
#define OSMONITOR_KEYWORD_POST
#define OSMONITOR_KEYWORD_POST_PROTO
#endif
#endif
#if !defined(NULL)
#define NULL ((void *) 0)
#endif
#if !defined(OSProtect)
#define OSProtect()
#endif
#if !defined(OSRtnToOSSched)
#define OSRtnToOSSched() return
#endif
#if !defined(OSRTNADDR_OFFSET)
#define OSRTNADDR_OFFSET 0
#endif
#if !defined(OSSCHED_RETURN_LABEL)
#define OSSCHED_RETURN_LABEL()
#endif
#if !defined(OSTASK_POINTER_TYPE)
#define OSTASK_POINTER_TYPE
#endif
#if !defined(OSUnprotect)
#define OSUnprotect()
#endif
#if !defined(OSUSE_CHAR_SIZED_BITFIELDS)
#define OSUSE_CHAR_SIZED_BITFIELDS FALSE
#endif
#if ( OSUSE_CHAR_SIZED_BITFIELDS \
&& ( ( OSCOMPILER == OSHT_8051C ) \
|| ( ( OSCOMPILER == OSIAR_ICC ) && ( OSTARGET == OSMSP430 ) ) ) )
#error salvo.h: selected compiler does not support bitfield packing.
#endif
#if !defined(OSUSE_EXTERN_ARRAY_SIZES)
#define OSUSE_EXTERN_ARRAY_SIZES FALSE
#endif
#if !defined(OSUSE_MEMSET)
#define OSUSE_MEMSET FALSE
#endif
#if !defined(OSUSE_PRINTF_P_FORMAT)
#define OSUSE_PRINTF_P_FORMAT FALSE
#endif
/************************************************************
**** ****
** **
Numeric Type Definitions:
** **
**** ****
************************************************************/
#if OSBYTES_OF_COUNTS == 1
typedef OStypeInt8u OStypeCount;
#elif OSBYTES_OF_COUNTS == 2
typedef OStypeInt16u OStypeCount;
#elif OSBYTES_OF_COUNTS == 4
typedef OStypeInt32u OStypeCount;
#else
typedef OStypeInt8u OStypeCount;
#endif
#if OSBYTES_OF_DELAYS == 1
typedef OStypeInt8u OStypeDelay;
typedef OStypeInt8 OStypeInterval;
#elif OSBYTES_OF_DELAYS == 2
typedef OStypeInt16u OStypeDelay;
typedef OStypeInt16 OStypeInterval;
#elif OSBYTES_OF_DELAYS == 4
typedef OStypeInt32u OStypeDelay;
typedef OStypeInt32 OStypeInterval;
#else
typedef OStypeInt8u OStypeDelay;
typedef OStypeInt8 OStypeInterval;
#endif
#define OStypeTS OStypeDelay /* synonymous */
#if OSBYTES_OF_EVENT_FLAGS == 1
typedef OStypeInt8u OStypeEFlag;
#elif OSBYTES_OF_EVENT_FLAGS == 2
typedef OStypeInt16u OStypeEFlag;
#elif OSBYTES_OF_EVENT_FLAGS == 4
typedef OStypeInt32u OStypeEFlag;
#else
typedef OStypeInt8u OStypeEFlag;
#endif
#if OSBYTES_OF_FRAMEP == 1
typedef OStypeInt8u OStypeFrameP;
#elif OSBYTES_OF_FRAMEP == 2
typedef OStypeInt16u OStypeFrameP;
#elif OSBYTES_OF_FRAMEP == 4
typedef OStypeInt32u OStypeFrameP;
#else
typedef OStypeInt8u OStypeFrameP;
#endif
#if OSBYTES_OF_TICKS == 1
typedef OStypeInt8u OStypeTick;
#elif OSBYTES_OF_TICKS == 2
typedef OStypeInt16u OStypeTick;
#elif OSBYTES_OF_TICKS == 4
typedef OStypeInt32u OStypeTick;
#else
typedef OStypeInt8u OStypeTick;
#endif
#if OSBYTES_OF_SRGIE == 1
typedef OStypeInt8u OStypeSRGIE;
#elif OSBYTES_OF_SRGIE == 2
typedef OStypeInt16u OStypeSRGIE;
#elif OSBYTES_OF_SRGIE == 4
typedef OStypeInt32u OStypeSRGIE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -