📄 mk_user.c
字号:
| SDL-Application are the main clients of this function. |
| |
| Parameter : |
| xmk_T_ERR_NUM xmk_TmpErrorNumber - given error number |
| (see headerfile *err.h) |
| |
| Return : - |
| |
+------------------------------------------------------------------------------+
*/
/*-FHDR E*/
/*+FDEF E*/
#ifndef XNOPROTO
/* ANSI - Style */
void ErrorHandler ( xmk_T_ERR_NUM xmk_TmpErrorNumber )
#else
/* Kernighan-Ritchie-Style */
void ErrorHandler ( xmk_TmpErrorNumber )
xmk_T_ERR_NUM xmk_TmpErrorNumber;
#endif
/*-FDEF E*/
{
/* Added by GBU,990516, to get rid of IAR warning */
xmk_TmpErrorNumber = xmk_TmpErrorNumber;
#ifdef XMK_ADD_PRINTF_USER
XMK_FUNCTION("ErrorHandler");
#endif
#ifdef XMK_ADD_CQUERY_ERROR
/* Variable stores the last errornumber for the command interface ... */
xmk_LastStoredError = xmk_TmpErrorNumber;
#endif
#ifdef XMK_ADD_TSYS_ERROR
/*
** Trace of Errors via communication interface ...
** Note : Not all error situations can be traced
** (i.e.an error on the communication interface)
*/
if(xmk_TmpErrorNumber != ERR_N_RING_WRITE_LENGTH)
xmk_tsys_error ( xmk_TmpErrorNumber );
#endif
#ifdef XMK_ADD_PRINTF_ADDITIONAL
PRINTF (("ERR:xmk_TmpErrorNumber=%d\n", xmk_TmpErrorNumber));
#if defined(XMK_ADD_PRINTF_ERROR)
xmk_err_text(STDOUT, xmk_TmpErrorNumber);
#endif
PRINTF (("ERR:xmk_TmpErrorNumber=%d\n", xmk_TmpErrorNumber));
#else
#ifdef USE_THE_FOLLOWING_EXAMPLE
/* I.E.implement the 3 functions ECERROR, ECWARNING and ECINFORMATION */
/* The mapping between different error situations and the reaction on */
/* it strongly depends on the target hardware architecture, i.e.if it */
/* has any output device or not. */
switch (xmk_TmpErrorNumber)
{
case ERR_N_UNDEFINED_ERROR : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_CREATE_NO_MEM : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_CREATE_INSTANCE : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_SDL_DISCARD : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_DIVIDE_BY_ZERO : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_EMPTY_CHARSTRING : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_ERROR_CHARSTRING : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_FATAL_CHARSTRING : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_NO_FREE_SIGNAL : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_PARAMETER_MEM_ALLOC : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_INDEX_SIGNAL : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_SYSTEM_SIGNAL : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_NO_CONT_PRIO : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_NO_COR_PRIO : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_xRouteSignal : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_NO_REC_AVAIL : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_NO_FREE_TIMER : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_PID_INDEX : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_SEND_TO_NULLPID : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_TRANS_TIME : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_xOutEnv : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_ILLEGAL_CMD : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_TESTER_MESSAGE : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_LINK_CHKSUM : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_LINK_DEST_BUFFER : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_LINK_ENC_MEMORY : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_LINK_ENC_LENGTH : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_LINK_NOT_IMPL : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_LINK_SYNC : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_DATA_LINK : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_DECODE_METHOD : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_RING_OVERFLOW : ECWARNING (xmk_TmpErrorNumber);
break;
case ERR_N_INIT_QUEUE : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_PREDEFINED_OPERATOR_CALL : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_INIT_SDL_MEM : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_MEM_PARAM : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_MEM_NO_FREE : ECERROR (xmk_TmpErrorNumber);
break;
case ERR_N_MEM_ILLMBLOCK : ECERROR (xmk_TmpErrorNumber);
break;
default : ECERROR (ERR_N_UNKNOWN);
break;
}
#endif /* ... USE_THE_FOLLOWING_EXAMPLE */
#endif
#ifdef XMK_ADD_PRINTF_USER
XMK_TRACE_EXIT("ErrorHandler");
#endif
} /* END OF FUNCTION */
#endif /* ... ! XMK_USE_NO_ERR_CHECK */
#ifndef XMK_USE_RECEIVER_PID_IN_SIGNAL
/*+FHDR E*/
/*
+------------------------------------------------------------------------------+
| Functionname : xRouteSignal |
| Author : S&P Media GmbH Germany |
+------------------------------------------------------------------------------+
| |
| Description : |
| This function is called by the Cmicro Kernel, if SDL signals |
| have no receiver. |
| (undef XMK_USE_RECEIVER_PID_IN_SIGNAL) |
| This might be useful in very small systems in order to spare |
| some RAM memory. |
| The following restrictions apply : |
| * The SDL System must not contain anything other than the |
| following process declaration. (x,1) |
| * For each Signal in the SDL System, there is to be only |
| one Receiver process (no signal may be sent to more than |
| one processtype). |
| * no dynamic process creation is used |
| (Create-Symbol is not used) |
| |
| Note, timers are represented as signals, and that this |
| xRouteSignal - function also has to map timers to Receiver |
| Processes. |
| |
| Important Rule : Each Signal- and Timer is represented by |
| a systemwide unique integer number. |
| |
| Parameter : xmk_T_SIGNAL - xmk_TmpSignalID |
| |
| Return : xPID Process - PID or xNULLPID, if no receiver is defined |
| for the given signal. |
| |
+------------------------------------------------------------------------------+
*/
/*-FHDR E*/
/*+FDEF E*/
#ifndef XNOPROTO
/* ANSI - Style */
xPID xRouteSignal ( xmk_T_SIGNAL xmk_TmpSignalID )
#else
/* Kernighan-Ritchie-Style */
xPID xRouteSignal ( xmk_TmpSignalID )
xmk_T_SIGNAL xmk_TmpSignalID;
#endif
/*-FDEF E*/
{
/*
** P L E A S E _ M O D I F Y _ T H E _ F O L L O W I N G _ C O D E
** P L E A S E _ M O D I F Y _ T H E _ F O L L O W I N G _ C O D E
** P L E A S E _ M O D I F Y _ T H E _ F O L L O W I N G _ C O D E
*/
/*
** Please insert appropriate code here to map Signal ID's
** to Process - Type - ID's (XPTID_ProcessName in generated code).
** Keep in mind that this function might be called from within
** a critical path.
** Include <systemname>.ifc to get signal names and process' XPTID
*/
switch (xmk_TmpSignalID)
{
/*
** S D L T i m e r s ...
*/
case SDL_Timer1 : return (XPTID_ProcessName) break;
case SDL_Timer2 : return (XPTID_ProcessName) break;
case SDL_Timer3 : return (XPTID_ProcessName) break;
case SDL_TimerN : return (XPTID_ProcessName) break;
/*
** O r d i n a r y S D L S i g n a l s ...
*/
case SDL_Signal1 : return (XPTID_ProcessName) break;
case SDL_Signal2 : return (XPTID_ProcessName) break;
case SDL_Signal3 : return (XPTID_ProcessName) break;
......
case SDL_SignalN : return (XPTID_ProcessName) break;
default : ErrorHandler (ERR_N_NO_RCV);
return (xNULLPID) break;
}
} /* END OF FUNCTION */
#endif /* ... XMK_USE_RECEIVER_PID_IN_SIGNAL */
#ifdef XMK_USE_KERNEL_WDTRIGGER
/*+FHDR E*/
/*
+------------------------------------------------------------------------------+
| Functionname : WatchdogTrigger |
| Author : S&P Media GmbH Germany |
+------------------------------------------------------------------------------+
| |
| Description : |
| If scaled so, this function is called by the Cmicro Kernel |
| each time an SDL-transition is executed. |
| |
| ** CAUTION ** |
| ------------------- |
| Be sure, that the timeout used for the Watchdog is longer |
| than the longest SDL-Transition (in the case of non preemp- |
| tive Cmicro Kernel). If the Cmicro Kernel is scaled to |
| work preemptive, then the Watchdog Trigger should not be |
| used, because the execution time of transitions can never |
| be calculated. |
| |
| |
| |
| Parameter : |
| void |
| |
| Return : - |
| |
+------------------------------------------------------------------------------+
*/
/*-FHDR E*/
/*+FDEF E*/
#ifndef XNOPROTO
/* ANSI - Style */
void WatchdogTrigger ( void )
#else
/* Kernighan-Ritchie-Style */
void WatchdogTrigger ( )
#endif
/*-FDEF E*/
{
#ifdef XMK_ADD_PRINTF_USER
XMK_FUNCTION("WatchdogTrigger");
#endif /* ... XMK_ADD_PRINTF_USER */
/* ........................................... */
/* ........................................... */
/* ........................................... */
#ifdef XMK_ADD_PRINTF_USER
XMK_TRACE_EXIT("WatchdogTrigger");
#endif /* ... XMK_ADD_PRINTF_USER */
} /* END OF FUNCTION */
#endif /* XMK_USE_KERNEL_WDTRIGGER */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -