/******************************************************************************* * * * モジュール名称 :ブロックアドレス計算 * * モジュールラベル :rap_mm_calcBlockAddr * * タスク区分 :冗長ライブラリ * * 機能 :ミッションデータ受信領域開始アドレスを基準とした * * ブロック番号のブロック開始アドレスを計算する * * * * コーリングシーケンス:int rap_mm_calcBlockAddr( nodeID, missionDataID, * * startAddr, blockNo, &blockAddr )* * 引数 :int nodeID :ミッション機器ID * * int missionDataID :ミッションデータID * * unsigned int startAddr :ミッションデータ受信領域* * 開始アドレス * * (0x08100000〜0x17FFFFFF)* * int blockNo :ブロック番号 * * unsigned int blockAddr :ブロック開始アドレス * * 戻り値 :処理結果 ( <0 :異常 , 0:正常) * * 0 :正常終了 * * -1 :nodeIDがミッション機器IDでない * * -2 :ミッションデータ受信領域開始アドレスがSDRAM領域外* * -3 :ブロック番号の領域がSDRAM 領域外 * * 使用上の注意 :なし * * エラー処理 :なし * * * *******************************************************************************/ #include "dpu_api.h" #include "dpu_api_proto.h" #include "rap_api.h" #include "rap_define.h" /* define定義 */ #include "rap_variable.h" /* グローバル変数宣言 */ #include "rap_func.h" /* 関数プロトタイプ宣言 */ int rap_mm_calcBlockAddr( int nodeID, int missionDataID, unsigned int startAddr, int blockNo, unsigned int *blockAddr ) { int i_ret = 0; /* 戻り値 */ M_T_MIS_DATA_PLAN info; /* ブロックサイズ取得(兼nodeIDチェック) */ i_ret = rap_mm_getMisDataPlan( nodeID, missionDataID, &info ); /* 開始アドレスチェック */ if( startAddr < RA_d_SDRAM_SADDR ) { /* アドレスが範囲外 */ i_ret = -2; } /* ブロック開始アドレス計算 */ *blockAddr = startAddr + info.ui_blockSize * blockNo; /* ブロックアドレスチェック */ if( RA_d_SDRAM_SADDR > *blockAddr || RA_d_SDRAM_EADDR < (*blockAddr + info.ui_blockSize - 1) ) { /* アドレスが範囲外 */ i_ret = -3; } return i_ret; }