📄 ml_typw.h
字号:
#define PROCESS_VARS unsigned char _dummy_var;
#define YPAD_TEMP_VARS \
unsigned char xmk_RAM_ptr xmk_OutputSignalPtr;
#define YPAD_YSVARP \
unsigned char xmk_RAM_ptr ySVarP;
/*
** Used for two different signals in one input symbol
*/
#define INSIGNAL_NAME xmk_SignalInstPtr ->signal
#define SIGNAL_NAME(p1,p2) p2
#define YPAD_YVARP(VDEF_TYPE) \
VDEF_TYPE xmk_RAM_ptr yVarP =(VDEF_TYPE xmk_RAM_ptr ) pRunData;
#define YGLOBALPRD_YVARP
#ifdef XMK_USED_SELF
#define SDL_SELF xRunPID
#endif
#ifdef XMK_USED_SENDER
/*
** Use safe PID addressing when SENDER is to be checked
** in starttransition. This costs some RAM/ROM/Performance
** and might be left out if it is for sure, that no
** start transition tries to access "SENDER".
*/
#define XMK_USE_SAFE_ADDRESSING
#define SDL_SENDER xmk_SignalInstPtr ->send
#endif
#ifdef XMK_USED_PARENT
#define SDL_PARENT pRunPIDTable->Parent
#endif
#ifdef XMK_USED_OFFSPRING
#define SDL_OFFSPRING pRunPIDTable->Offspring
#endif
#define CURRENT_STATE_PRD ProceduresWithStatesNotImplemented
/* ------------------ Structure of PAD function ------------------ */
#define YPAD_RESULT_TYPE xSTATE
#ifdef XMK_USE_PREEMPTIVE
#ifndef XNOPROTO
/* Preemption - ANSI */
#define YPAD_PROTOTYPE(functionname) xSTATE functionname (xSYMBOLNR xmk_SymbolNrVar);
#define YPAD_FUNCTION(functionname) xSTATE functionname (xSYMBOLNR xmk_SymbolNrVar)
#else
/* Preemption - Kernighan / Ritchie */
#define YPAD_PROTOTYPE(functionname) xSTATE functionname ();
#define YPAD_FUNCTION(functionname) \
xSTATE functionname (xmk_SymbolNrVar) \
xSYMBOLNR xmk_SymbolNrVar;
#endif
#else
#ifndef XNOPROTO
/* No Preemption - ANSI */
#define YPAD_PROTOTYPE(functionname) xSTATE functionname (void);
#define YPAD_FUNCTION(functionname) xSTATE functionname (void)
#else
/* No Preemption - Kernighan / Ritchie */
#define YPAD_PROTOTYPE(functionname) xSTATE functionname ();
#define YPAD_FUNCTION(functionname) \
xSTATE functionname (xmk_SymbolNrVar) \
xSYMBOLNR xmk_SymbolNrVar;
#endif
#endif
#ifdef XMK_USED_SIGNAL_WITH_PARAMS
#if (XMK_MSG_BORDER_LEN==0)
#define BEGIN_PAD \
if (xmk_SignalInstPtr != NULL ) \
{ /* if not start transition */ \
if (xmk_SignalInstPtr ->mess_length > XMK_MSG_BORDER_LEN) \
{ ySVarP = (unsigned char xmk_RAM_ptr ) xmk_SignalInstPtr ->ParUnion.ParPtr; \
} \
}
#else
#define BEGIN_PAD \
if (xmk_SignalInstPtr != NULL ) \
{ /* if not start transition */ \
if (xmk_SignalInstPtr ->mess_length > XMK_MSG_BORDER_LEN) \
{ ySVarP = (unsigned char xmk_RAM_ptr ) xmk_SignalInstPtr ->ParUnion.ParPtr; } \
else { ySVarP = (unsigned char xmk_RAM_ptr ) xmk_SignalInstPtr ->ParUnion.ParCopy; } \
}
#endif
#else
#define BEGIN_PAD
#endif
#ifdef XMK_USE_END_PAD
/*
** Pay attention to the following define, if
** you do tied integration in your target ....
** Compilers produce a warning, if no return is found
** at the end of an yPAD_Function
*/
#define END_PAD(VTYPE) \
return (XDASHSTATE) ;
#else
/*
GBU 991104 at least one compiler wants a return expression
a zero has not caused any problems in previous versions
*/
/*
#define END_PAD(VTYPE)
*/
#define END_PAD(VTYPE) \
return 0;
#endif
#define XSYMBOLNUMBER xmk_SymbolNrVar
#ifdef XMK_ADD_STDIO
/* CAUTION : */
/* ------------ */
/* DO NOT USE PRINTF IN THE CASE OF A SO SCALED */
/* PREEMPTIVE Cmicro Kernel, IF YOU ARE NOT SURE,*/
/* THAT fprintf () IS IMPLEMENTED REENTRANT BY */
/* THE COMPILER IN USE !!! */
#define PRINTF(params) (void)xmk_printf params;
#define XMK_DEBUG
#else
#define PRINTF(params)
#endif
/*
** Cmicro Tester
*/
#ifdef XMK_ADD_MICRO_TESTER
#define XTRACE
#define XMK_TEST_TASK(p1) xmk_TSDL_Task(p1);
#define XMK_TEST_DECISION(p1) xmk_TSDL_Decision(p1);
#define XMK_TEST_PROCEDURE(p1) xmk_TSDL_Procedure(p1);
#else
#define XMK_TEST_TASK(p1)
#define XMK_TEST_DECISION(p1)
#define XMK_TEST_PROCEDURE(p1)
#endif
/*
** Execution- Trace
*/
#ifdef XMK_ADD_PRINTF_SDL
#define BEGIN_START_TRANSITION \
PRINTF(("START-TRANSITION\n"));
#define PRINTF_OUTPUT(P1) \
PRINTF(("OUTPUT: %s\n", P1));
#define PRINTF_CREATE(P1) \
PRINTF(("CREATE: %s\n", P1));
#define YPRSNAME_VAR(PRS_NAME_STRING) \
PRINTF(("PROCESS: %s\n", PRS_NAME_STRING));
#define XOS_TRACE_INPUT(SIG_NAME_STRING) \
PRINTF(("INPUT: %s\n", SIG_NAME_STRING));
#define YPRDNAME_VAR(PRD_NAME_STRING) \
PRINTF(("PROCEDURE %s\n", PRD_NAME_STRING)); \
XMK_TEST_PROCEDURE (PRD_NAME_STRING);
#define xTraceTask(P1) \
PRINTF(("TASK: %s\n", P1)); \
XMK_TEST_TASK((P1));
#define xTraceAssign(P1) \
PRINTF(("ASSIGN: %s\n", P1)); \
XMK_TEST_TASK((P1));
#define xTraceAlg(P1) \
PRINTF(("ALG: %s\n", P1)); \
XMK_TEST_TASK((P1));
#define xTraceDecision(P1) \
PRINTF(("DECISION: %s\n", P1 )); \
XMK_TEST_DECISION(( P1 ));
#define XOS_TRACE_NEXTSTATE(P1) \
PRINTF(("Nextstate: %d\n", P1 ));
#define XOS_TRACE_DASHSTATE \
PRINTF(("No state change\n" ));
#else
#define BEGIN_START_TRANSITION
#define PRINTF_OUTPUT(P1)
#define PRINTF_CREATE(P1)
#define YPRSNAME_VAR(PRS_NAME_STRING)
#define XOS_TRACE_INPUT(SIG_NAME_STRING)
#define YPRDNAME_VAR(PRD_NAME_STRING) \
XMK_TEST_PROCEDURE(PRD_NAME_STRING);
#define xTraceTask(P1) \
XMK_TEST_TASK((P1));
#define xTraceAssign(P1) xTraceTask(P1)
#define xTraceAlg(P1) xTraceTask(P1)
#define xTraceDecision(P1) \
XMK_TEST_DECISION(( P1 ));
#define XOS_TRACE_NEXTSTATE(P1)
#define XOS_TRACE_DASHSTATE
#endif
#if defined(XMK_ADD_PRINTF_SDL) \
|| defined(XMK_ADD_PRINTF_ADDITIONAL) \
|| defined(XMK_ADD_PRINTF_CPU) \
|| defined(XMK_ADD_PRINTF_MAIN) \
|| defined(XMK_ADD_PRINTF_OUTPUT) \
|| defined(XMK_ADD_PRINTF_QUEUE) \
|| defined(XMK_ADD_PRINTF_SCHEDULER) \
|| defined(XMK_ADD_PRINTF_TIMER) \
|| defined(XMK_ADD_PRINTF_USER) \
|| defined(XMK_ADD_PRINTF_COM) \
|| defined(XMK_ADD_PRINTF_ERROR) \
|| defined(XMK_ADD_PRINTF_MONITOR) \
|| defined(XMK_ADD_PRINTF_MEMORY) \
|| defined(XMK_ADD_PRINTF_PREDEFINED)
#define XMK_FUNCTION(p1) \
PRINTF(("FUNCTION: %s\n", p1));
#define XMK_TRACE_SCHE(p1) \
PRINTF(("mk_sche: %s\n", p1));
#define XMK_TRACE_EXIT(p1) \
PRINTF(("Exit from %s\n", p1));
#else
#define XMK_FUNCTION(p1)
#define XMK_TRACE_SCHE(p1)
#define XMK_TRACE_EXIT(p1)
#endif
/* ------------------------ yInit function ----------------------- */
extern void yInit XPP((void));
/* ------------------ Actions within transitions ----------------- */
/*
** Mapping the SDL_Halt () into xCloseEnv ()
*/
#define SDL_Halt() xCloseEnv ()
/* ---------------------------- Output --------------------------- */
#define SIGNAL_VARS
#define ALLOC_SIGNAL(SIG_NAME, SIG_IDNODE, RECEIVER, SIG_PAR_SIZE) \
{ SIG_IDNODE SIG_IDNODE; \
xmk_OutputSignalPtr = (unsigned char xmk_ROM_ptr ) &SIG_IDNODE;
#define ALLOC_SIGNAL_NPAR(SIG_NAME, SIG_IDNODE, RECEIVER)
/* empty */
#ifndef XNOUSEOFCHARSTRING
#define ALLOC_SIGNAL_PAR(SIG_NAME, SIG_IDNODE, SIG_PAR_TYPE) \
{ SIG_PAR_TYPE xmk_TmpSignalOutputBuffer ; \
memset ((char xmk_RAM_ptr ) &xmk_TmpSignalOutputBuffer, 0, sizeof (xmk_TmpSignalOutputBuffer)); \
xmk_OutputSignalPtr = (unsigned char xmk_RAM_ptr ) &xmk_TmpSignalOutputBuffer;
#else
#define ALLOC_SIGNAL_PAR(SIG_NAME, SIG_IDNODE, SIG_PAR_TYPE) \
{ SIG_PAR_TYPE xmk_TmpSignalOutputBuffer ; \
xmk_OutputSignalPtr = (unsigned char xmk_RAM_ptr ) &xmk_TmpSignalOutputBuffer;
#endif
#ifndef TRANSFER_SIGNAL
#define TRANSFER_SIGNAL(SIG_NAME, SIG_IDNODE, RECEIVER, SIG_PAR_SIZE)
#endif
#define XSIGNALHEADERTYPE /* empty */
#ifndef TRANSFER_SIGNAL_PAR
#define TRANSFER_SIGNAL_PAR(SIG_NAME, SIG_IDNODE, P3) {
#endif
#ifndef TRANSFER_SIGNAL_NPAR
#define TRANSFER_SIGNAL_NPAR(SIG_NAME, SIG_IDNODE, P3)
#endif
#define SIGNAL_ALLOC_ERROR /* empty */
#define SIGNAL_ALLOC_ERROR_END }
#define OUTSIGNAL_DATA_PTR xmk_OutputSignalPtr
#if defined(XMK_USE_SIGNAL_PRIORITIES) && defined(XMK_USE_RECEIVER_PID_IN_SIGNAL)
/*
** Each signal contains a Signal priority
** Each signal contains a Receiver PID
*/
#ifdef XMK_USED_SIGNAL_WITH_PARAMS
#define XMK_SF(SIG_ID_NODE,SIG_PRIO,SIG_PAR_LEN,SIG_PARA_PTR,RECEIVER) \
xmk_Send (SIG_ID_NODE,SIG_PRIO,SIG_PAR_LEN,SIG_PARA_PTR,RECEIVER);
#else
#define XMK_SF(SIG_ID_NODE,SIG_PRIO,SIG_PAR_LEN,SIG_PARA_PTR,RECEIVER) \
xmk_Send (SIG_ID_NODE,SIG_PRIO,RECEIVER);
#endif
#endif
#if defined(XMK_USE_SIGNAL_PRIORITIES) && !defined(XMK_USE_RECEIVER_PID_IN_SIGNAL)
/*
** Each signal contains a Signal priority
** No signal contains a Receiver PID
*/
#ifdef XMK_USED_SIGNAL_WITH_PARAMS
#define XMK_SF(SIG_ID_NODE,SIG_PRIO,SIG_PAR_LEN,SIG_PARA_PTR,RECEIVER) \
xmk_Send (SIG_ID_NODE,SIG_PRIO,SIG_PAR_LEN,SIG_PARA_PTR);
#else
#define XMK_SF(SIG_ID_NODE,SIG_PRIO,SIG_PAR_LEN,SIG_PARA_PTR,RECEIVER) \
xmk_Send (SIG_ID_NODE,SIG_PRIO);
#endif
#endif
#if !defined(XMK_USE_SIGNAL_PRIORITIES) && defined(XMK_USE_RECEIVER_PID_IN_SIGNAL)
/*
** No signal contains a Signal priority
** Each signal contains a Receiver PID
*/
#ifdef XMK_USED_SIGNAL_WITH_PARAMS
#define XMK_SF(SIG_ID_NODE,SIG_PRIO,SIG_PAR_LEN,SIG_PARA_PTR,RECEIVER) \
xmk_Send (SIG_ID_NODE,SIG_PAR_LEN,SIG_PARA_PTR,RECEIVER);
#else
#define XMK_SF(SIG_ID_NODE,SIG_PRIO,SIG_PAR_LEN,SIG_PARA_PTR,RECEIVER) \
xmk_Send (SIG_ID_NODE,RECEIVER);
#endif
#endif
#if !defined(XMK_USE_SIGNAL_PRIORITIES) && !defined(XMK_USE_RECEIVER_PID_IN_SIGNAL)
/*
** No signal contains a Signal priority
** No signal contains a Receiver PID
*/
#ifdef XMK_USED_SIGNAL_WITH_PARAMS
#define XMK_SF(SIG_ID_NODE,SIG_PRIO,SIG_PAR_LEN,SIG_PARA_PTR,RECEIVER) \
xmk_Send (SIG_ID_NODE,SIG_PAR_LEN,SIG_PARA_PTR);
#else
#define XMK_SF(SIG_ID_NODE,SIG_PRIO,SIG_PAR_LEN,SIG_PARA_PTR,RECEIVER) \
xmk_Send (SIG_ID_NODE);
#endif
#endif
#define XMK_DUMMYPRIO 0xff /* for Cmicro Tester only */
#ifdef XMK_USE_xmk_SendSimple
/*
** Use simple output function when possible ...
** Note, that signal priorities get lost when using xmk_SendSimple Function !
*/
#ifdef XMK_USE_RECEIVER_PID_IN_SIGNAL
#define SDL_OUTP_NPAR(PRIO,SIG_NAME,SIG_IDNODE,RECEIVER,NUM,SIG_NAME_STRING) \
PRINTF_OUTPUT(SIG_NAME_STRING); \
xmk_SendSimple (SIG_IDNODE,RECEIVER);
#else
#define SDL_OUTP_NPAR(PRIO,SIG_NAME,SIG_IDNODE,RECEIVER,NUM,SIG_NAME_STRING) \
PRINTF_OUTPUT(SIG_NAME_STRING); \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -