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

📄 itron.h

📁 The combined demo is dedicated for S1C33L05, so DMT33L05 should be used to load and run the demo. F
💻 H
字号:
/*************************************************************************
 *
 *  Copyright (C) SEIKO EPSON CORP. 1997
 *  All Rights Reserved
 *
 *  Filename : itron.h
 *  Function : 
 *  Revision :
 *          1997/08/01  H.Matsuoka  start
 *          1999/08/26  H.Matsuoka  Add message buffer function
 *          2000/11/21  Y.Taka      Add memory pool management function
 *          2001/01/16  Y.Taka      Add tslp_tsk,twai_sem,twai_flg,trcv_msg
 *          2001/06/27  Y.Taka      Add refer systemcall
 *
 ************************************************************************/
#ifndef _ITRON_
#define _ITRON_

/***  General-Purpose Data Types *******************************************/
typedef char            B;      /* signed 8-bit integer */
typedef short           H;      /* signed 16-bit integer */
typedef long            W;      /* signed 32-bit integer */
typedef unsigned char   UB;     /* unsigned 8-bit integer */
typedef unsigned short  UH;     /* unsigned 16-bit integer */
typedef unsigned long   UW;     /* unsigned 32-bit integer */

typedef long            VW;     /* unpredictable data type (32-bit size) */
typedef short           VH;     /* unpredictable data type (16-bit size) */
typedef char            VB;     /* unpredictable data type (8-bit size) */

typedef void            *VP;    /* pointer to an unpredictable data type */
typedef void            (*FP)();/* program start address */

/***  Data Types Dependent on ITRON Specification **************************/
typedef int             INT;    /* Signed integer (bit width of processor) */
typedef unsigned int    UINT;   /* Unsigned integer (bit width of processor) */
typedef H               BOOL;   /* Boolean value.  TRUE (1) or FALSE (0). */
typedef short           FN;     /* Function code.  Signed integer.  
                                   Maximum 2 bytes. */
typedef INT             ID;     /* Object ID number (???id)
                                   Value range depends on the system.  
                                   Usually a signed integer. */
typedef INT             BOOL_ID;/* Boolean value or ID number */
typedef INT             HNO;    /* Handler number */
typedef INT             RNO;    /* Rendezvous number */
typedef H               NODE;   /* Node Number.  Usually a signed integer. */
typedef UINT            ATR;    /* Object or handler attribute.  
                                   An unsigned integer. */
typedef INT             ER;     /* Error code.  A signed integer. */
typedef INT             PRI;    /* Task priority.  A signed integer. */
typedef INT             TMO;    /* Timeout value.  A signed integer. */

typedef TMO             DLYTIME;

/***************************************************************************
***    6.6 Common Constants and Data Structure Packet Formats            ***
***************************************************************************/

/* --- overall ----------------------- */

#define NADR        (-1)    /* invalid address or pointer value */
#define TRUE        1       /* true */
#define FALSE       0       /* false */

#define TA_ASM      0x0     /* program written in assembly language */
#define TA_HLNG     0x1     /* program written in high-level language */

#define TMO_POL     0       /* polling */
#define TMO_FEVR    (-1)    /* wait forever */

/* --- for task management functions ----------------------- */

#define TSK_SELF    0       /* task specifies itself */
#define TPRI_INI    0       /* specifies the initial priority on task startup
                               (chg_pri) */
#define TPRI_RUN    0       /* specifies the highest priority during execution
                               (rot_rdq) */

#define TTS_RUN     0x00000001  /* RUN */
#define TTS_RDY     0x00000002  /* READY */
#define TTS_WAI     0x00000004  /* WAIT */
#define TTS_SUS     0x00000008  /* SUSPEND */
#define TTS_WAS     0x0000000c  /* WAIT-SUSPEND */
#define TTS_DMT     0x00000010  /* DORMANT */

#define TTW_SLP     0x00000001  /* wait due to slp_tsk or tslp_tsk */
#define TTW_DLY     0x00000002  /* wait due to dly_tsk */
#define TTW_NOD     0x00000008  /* connection function response wait */
#define TTW_FLG     0x00000010  /* wait due to wai_flg or twai_flg */
#define TTW_SEM     0x00000020  /* wait due to wai_sem or twai_sem */
#define TTW_MBX     0x00000040  /* wait due to rcv_msg or trcv_msg */
#define TTW_SMBF    0x00000080  /* wait due to snd_mbf, tsnd_mbf */
#define TTW_MBF     0x00000100  /* wait due to rcv_mbf, trcv_mbf */
#define TTW_MPL     0x00000200  /* wait due to get_blk, tget_blk */
#define TTW_MPF     0x00000400  /* wait due to get_blf, tget_blf */

typedef struct pk_rtsk {
    PRI             tskpri;
    UINT            tskstat;
} T_RTSK;

/* --- for semaphore functions ----------------------------- */

typedef struct pk_rsem {
    BOOL_ID         wtsk;
    INT             semcnt;
} T_RSEM;

/* --- for eventflag functions ----------------------------- */

#define TA_WSGL     0x00000000  /* multiple tasks are not allowed to wait (Wait
                                   Single Task) */
#define TA_WMUL     0x00000008  /* multiple tasks are allowed to wait (Wait
                                   Multiple Task) */

#define TWF_ANDW    0x00000000  /* AND wait */
#define TWF_ORW     0x00000002  /* OR wait */
#define TWF_CLR     0x00000001  /* clear specification */

typedef struct pk_rflg {
    BOOL_ID         wtsk;
    UINT            flgptn;
} T_RFLG;

/* --- for mailbox functions ------------------------------- */

#define TA_MFIFO    0x00000000  /* waiting tasks are handled by FIFO */
#define TA_MPRI     0x00000002  /* waiting tasks are handled by priority */

typedef struct t_msg {
    struct t_msg*   pNxt;
    VB              msgcont[10];
} T_MSG;

typedef struct pk_rmbx {
    BOOL_ID         wtsk;
    T_MSG           *pk_msg;
} T_RMBX;

/* --- for message buffer functions ------------------------ */

typedef struct pk_rmbf {
    BOOL_ID         wtsk;
    BOOL_ID         stsk;
    INT             msgsz;
    INT             frbufsz;
} T_RMBF;

/* --- for time management functions ----------------------- */

/* example for 32-bit CPUs */
typedef struct t_systime {
    H    utime;     /* upper 16 bits */
    UW   ltime;     /* lower 32 bits */
} SYSTIME;

#define TCY_OFF     0x00000000  /* cyclic handler off */
#define TCY_ON      0x00000001  /* cyclic handler on */
#define TCY_INI     0x00000002  /* cycle timer init */

#define TTM_ABS     0x00000000  /* absolute alarm time */
#define TTM_REL     0x00000001  /* relative alarm time */

#define HNDR_CYC    0x00000001  /* wait due to cyclic handler */
#define HNDR_ALM    0x00000002  /* wait due to alarm handler */

typedef struct pk_rcyc {
    SYSTIME         lfttim;
    UINT            cycact;
} T_RCYC;

typedef struct pk_ralm {
    SYSTIME         lfttim;
} T_RALM;

/* --- for system management functions --------------------- */

/* get_ver */
typedef struct t_ver {
    UH   maker;     /* vendor */
    UH   id;        /* format number */
    UH   spver;     /* specification version */
    UH   prver;     /* product version */
    UH   prno[4];   /* product control information */
    UH   cpu;       /* CPU information */
    UH   var;       /* variation descriptor */
} T_VER;

#define TSS_TSK    0    /* normal state in which dispatching is enabled during
                           task portion execution */
#define TSS_DDSP   1    /* state after dis_dsp has been executed during task
                           portion execution (dispatch disabled) */
#define TSS_LOC    3    /* state after loc_cpu has been executed during task
                           portion execution(interrupt and dispatch disabled)*/
#define TSS_INDP   4    /* state during execution of task-independent portions
                           (interrupt and timer handlers) */

typedef struct pk_rsys {
    INT             sysstat;
} T_RSYS;

/* --- for memorypool management functions --------------------- */

typedef struct pk_rmpl {
    BOOL_ID         wtsk;
    INT             frsz;
    INT             maxsz;
} T_RMPL;

typedef struct pk_rmpf {
    BOOL_ID         wtsk;
    INT             frbcnt;
} T_RMPF;


/****************************************************************************/
/***    6.5 C Language Interfaces                                         ***/
/****************************************************************************/

/* Task Management Functions */

extern ER   sta_tsk( ID tskid, INT stacd );
extern void ext_tsk( );
extern ER   ter_tsk( ID tskid );
extern ER   dis_dsp( );
extern ER   ena_dsp( );
extern ER   chg_pri( ID tskid, PRI tskpri );
extern ER   rot_rdq( PRI tskpri );
extern ER   rel_wai( ID tskid );
extern ER   get_tid( ID *p_tskid );
extern void exd_tsk( );
extern ER   ref_tsk( T_RTSK *pk_rtsk, ID tskid );

/* Task-Dependent Synchronization Functions */

extern ER   sus_tsk( ID tskid );
extern ER   rsm_tsk( ID tskid );
extern ER   slp_tsk( );
extern ER   tslp_tsk( TMO tmout );
extern ER   wup_tsk( ID tskid );
extern ER   can_wup( INT *p_wupcnt, ID tskid );

/* Synchronization and Communication Functions */
extern ER   sig_sem( ID semid );
extern ER   wai_sem( ID semid );
extern ER   preq_sem( ID semid );
extern ER   twai_sem( ID semid, TMO tmout );
extern ER   set_flg( ID flgid, UINT setptn );
extern ER   clr_flg( ID flgid, UINT clrptn );
extern ER   wai_flg( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode );
extern ER   pol_flg( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode );
extern ER   twai_flg( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode,
                      TMO tmout );
extern ER   snd_msg( ID mbxid, T_MSG *pk_msg );
extern ER   rcv_msg( T_MSG **ppk_msg, ID mbxid );
extern ER   prcv_msg( T_MSG **ppk_msg, ID mbxid );
extern ER   trcv_msg( T_MSG **ppk_msg, ID mbxid, TMO tmout );
extern ER   ref_sem( T_RSEM *pk_rsem, ID semid );
extern ER   ref_flg( T_RFLG *pk_rflg, ID flgid );
extern ER   ref_mbx( T_RMBX *pk_rmbx, ID mbxid );

/* Interrupt Management Functions */
extern void ret_int( );
extern ER   ent_int( );
extern ER   loc_cpu( );
extern ER   unl_cpu( );

/* Time Management Functions */
extern ER   set_tim( SYSTIME *pk_tim );
extern ER   get_tim( SYSTIME *pk_tim );
extern ER   dly_tsk( DLYTIME dlytim );
extern ER   def_cyc( HNO cycno, FP cychdr, UINT cycact, SYSTIME *pk_cyctim );
extern ER   act_cyc( HNO cycno, UINT cycact );
extern ER   def_alm( HNO almno, FP almhdr, UINT tmmode, SYSTIME *pk_almtim );
extern void ret_tmr( );
extern ER   ref_cyc( T_RCYC *pk_rcyc, HNO cycno );
extern ER   ref_alm( T_RALM *pk_ralm, HNO almno );

/* System Management Functions */
extern ER   get_ver( T_VER *pk_ver );
extern ER   ref_sys( T_RSYS *pk_rsys );

/* Extended Synchronization and Communication Functions */
extern ER   snd_mbf( ID mbfid, VP msg, INT msgsz );
extern ER   psnd_mbf( ID mbfid, VP msg, INT msgsz );
extern ER   tsnd_mbf( ID mbfid, VP msg, INT msgsz, TMO tmout );
extern ER   rcv_mbf( VP msg, INT *p_msgsz, ID mbfid );
extern ER   prcv_mbf( VP msg, INT *p_msgsz, ID mbfid );
extern ER   trcv_mbf( VP msg, INT *p_msgsz, ID mbfid, TMO tmout );
extern ER   ref_mbf( T_RMBF *pk_rmbf, ID mbfid );

/* Memory Pool Management Functions */
extern ER   get_blk( VP *p_blk, ID mplid, INT blksz );
extern ER   pget_blk( VP *p_blk, ID mplid, INT blksz );
extern ER   tget_blk( VP *p_blk, ID mplid, INT blksz, TMO tmout );
extern ER   rel_blk( ID mplid, VP blk );
extern ER   get_blf( VP *p_blf, ID mpfid );
extern ER   pget_blf( VP *p_blf, ID mpfid );
extern ER   tget_blf( VP *p_blf, ID mpfid, TMO tmout );
extern ER   rel_blf( ID mpfid, VP blf );
extern ER   ref_mpl( T_RMPL *pk_rmpl, ID mplid );
extern ER   ref_mpf( T_RMPF *pk_rmpf, ID mpfid );


/***************************************************************************
***    6.7 Error Codes                                                   ***
***************************************************************************/
#define E_OK       0        /* Normal completion */
#define E_SYS      (-5)     /* System error */
#define E_NOMEM    (-10)    /* Insufficient memory */
#define E_NOSPT    (-17)    /* Feature not supported */
#define E_INOSPT   (-18)    /* Feature not supported 
                               by ITRON/FILE specification */
#define E_RSFN     (-20)    /* Reserved function code number */
#define E_RSATR    (-24)    /* Reserved attribute */
#define E_PAR      (-33)    /* Parameter error */
#define E_ID       (-35)    /* Invalid ID number */
#define E_NOEXS    (-52)    /* Object does not exist */
#define E_OBJ      (-63)    /* Invalid object state */
#define E_MACV     (-65)    /* Memory access disabled or memory access 
                               violation */
#define E_OACV     (-66)    /* Object access violation */
#define E_CTX      (-69)    /* Context error */
#define E_QOVR     (-73)    /* Queuing or nesting overflow */
#define E_DLT      (-81)    /* Object being waited for was deleted */
#define E_TMOUT    (-85)    /* Polling failure or timeout exceeded */
#define E_RLWAI    (-86)    /* WAIT state was forcibly released */


#endif /* _ITRON_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -