/******************************************************************************* * * * モジュール名称 :冗長DPUデータ取得 * * モジュールラベル :checkout_getRdn * * タスク区分 :MW-APP I/F ドライバ * * コーリングシーケンス:int checkout_getRdn( ui_addr, ui_size, &uip_buffer ) * * 引数 :unsigned int ui_addr 読み出しアドレス * * unsigned int ui_size 読み出しサイズ * * unsigned int *uip_buffer 読み出しデータ格納アドレス * * 戻り値 :int 処理結果(API関数からの戻り値) * * 使用上の注意 :なし * * エラー処理 :なし * * * * (APP16向けサンプルコードです) * * * *******************************************************************************/ #include "chkout_if.h" int checkout_getRdn( unsigned int ui_addr, unsigned int ui_size, unsigned int *uip_buffer ) { int i_replyTimeout; int i_apiResult; M_T_RDN_IF_STATUS t_rdnIfStatus; /* アドレスチェック */ if( ui_addr <= MISIF_FPGA_END_ADDR && (ui_addr + ui_size - 1) >= MISIF_FPGA_START_ADDR ) { return RDN_FPGA_REG_READ; } /* 冗長DPU I/Fレジスタクリア */ dpu_clearRdnIFStatus(); /* RMAP Read Command送信 */ i_apiResult = dpu_sendRdnReadCommand( ui_addr, ui_size ); if( i_apiResult == 0 ) { /* 送信成功 */ /* RMAP Read Reply受信待ち */ for( i_replyTimeout = 10; i_replyTimeout > 0; i_replyTimeout-- ) { dpu_delay( 1 ); /* 冗長DPU I/Fレジスタ読み出し */ dpu_getRdnIFStatus( &t_rdnIfStatus ); /* RMAP Read Reply受信結果確認 */ if( t_rdnIfStatus.us_readRplyCount == 1 ) { /* 受信成功 */ /* RMAP Read Replyデータ読み出し */ i_apiResult = dpu_getRdnReadReply( (unsigned char *)uip_buffer, 0, ui_size ); break; }else{ /* 受信失敗 */ i_apiResult = RDN_NO_READREPLY; } } }else{ /* 受信失敗 */ /* 処理なし。API関数からの返り値をそのまま返す。 */ } return i_apiResult; }