⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ml_typw.h

📁 是一个手机功能的模拟程序
💻 H
📖 第 1 页 / 共 5 页
字号:
#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 + -