#include #include #include ID porid; #define ACP_PTN (0xFFFFFFFF) /* 受付側選択条件 */ #define CAL_PTN (0x00000001) /* 呼出側選択条件 */ #define MSGSZ 16 /* メッセージのサイズ */ void taskSV( INT stacd, void *exinf ) { RNO rdvno; while(1){ // tk_dly_tsk( 100 ); /* ランデブ受付発行前に必要な処理 */ tk_acp_por( porid, ACP_PTN, &rdvno, NULL, TMO_FEVR ); /* ランデブ受付 */ /* クライアントから依頼された処理 */ tk_rpl_rdv( rdvno, NULL, 0 ); /* ランデブ返答 */ /* ランデブ終了後に必要な処理 */ } tk_ext_tsk(); } void taskCL( INT stacd, void *exinf ) { while(1){ /* ランデブ呼出発行前に必要な処理 */ tk_cal_por( porid, CAL_PTN, NULL, 0, TMO_FEVR ); /* ランデブ呼出 */ /* ランデブ終了後に必要な処理 */ } tk_ext_tsk(); } EXPORT INT usermain( void ) { T_CPOR cpor = { NULL, TA_TFIFO, 0, 0 }; T_CTSK ctskSV = { NULL, TA_HLNG|TA_RNG0, taskSV, 2, 4*1024 }; T_CTSK ctskCL = { NULL, TA_HLNG|TA_RNG0, taskCL, 3, 4*1024 }; ID tskidSV, tskidCL; tk_chg_pri(TSK_SELF, 1); porid = tk_cre_por( &cpor ); tskidSV = tk_cre_tsk( &ctskSV ); tk_sta_tsk( tskidSV, 0 ); tskidCL = tk_cre_tsk( &ctskCL ); tk_sta_tsk( tskidCL, 0 ); tk_slp_tsk(TMO_FEVR); return 1; }