/******************************************************************************* * * * モジュール名称 :ミッションデータ収集情報取得 * * モジュールラベル :rap_mm_getMisDataPlan * * タスク区分 :冗長ライブラリ * * 機能 :ミッション機器のミッションデータ収集に関する情報を * * 取得する * * * * コーリングシーケンス:int rap_mm_getMisDataPlan(nodeID,missionDataID,&info)* * 引数 :int nodeID :ミッション機器ID * * int missionDataID:ミッションデータID * * M_T_MIS_DATA_PLAN info :ミッションデータ情報* * 戻り値 :処理結果 ( <0 :異常 , 0:正常) * * 0 :正常終了 * * -1 :nodeIDがミッション機器IDでない * * 使用上の注意 :なし * * エラー処理 :なし * * * *******************************************************************************/ #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" /* 関数プロトタイプ宣言 */ #include "app_rdn_core.h" #define RMAP_HDR_SIZE_WC 16 #define RMAP_HDR_SIZE_RR 12 #define RMAP_FTR_SIZE 1 int rap_mm_getMisDataPlan( int nodeID, int missionDataID, M_T_MIS_DATA_PLAN *info ) { int i_dataSize; int i_rplySize; int i_blkSize; char c_msChannel; // M_T_DPU_INFO t_dpuInfo; char c_dpuIndex; /* DPUインデックス */ if( nodeID == RA_d_NODE_EWO_E || nodeID == RA_d_NODE_EWO_B ) { if ( missionDataID == 0 ) { i_dataSize = ui_ewoWriteSize[missionDataID]; i_rplySize = (i_dataSize + RMAP_HDR_SIZE_WC + RMAP_FTR_SIZE) + ((0x100000 - (i_dataSize + RMAP_HDR_SIZE_WC + RMAP_FTR_SIZE)) & 0x0F); /* 80=5000ms(sunPulse)/(62.5ms/8)(パケット出力間隔) */ i_blkSize = i_rplySize * 640; } else if ( missionDataID == 1 ) { i_dataSize = ui_ewoWriteSize[missionDataID]; i_rplySize = (i_dataSize + RMAP_HDR_SIZE_WC + RMAP_FTR_SIZE) + ((0x100000 - (i_dataSize + RMAP_HDR_SIZE_WC + RMAP_FTR_SIZE)) & 0x0F); /* 80=5000ms(sunPulse)/(62.5ms/8)(パケット出力間隔) */ i_blkSize = i_rplySize * 640; } else if ( missionDataID == 2 ) { i_dataSize = ui_ewoWriteSize[missionDataID]; i_rplySize = (i_dataSize + RMAP_HDR_SIZE_WC + RMAP_FTR_SIZE) + ((0x100000 - (i_dataSize + RMAP_HDR_SIZE_WC + RMAP_FTR_SIZE)) & 0x0F); /* 2packet / sunPulse かつ 200Hバウンダリ */ i_blkSize = (i_rplySize * 2) + ((0x100000 - (i_rplySize * 2)) & 0x1FF); } else if ( missionDataID == 3 ) { i_dataSize = ui_ewoWriteSize[missionDataID]; i_rplySize = (i_dataSize + RMAP_HDR_SIZE_WC + RMAP_FTR_SIZE) + ((0x100000 - (i_dataSize + RMAP_HDR_SIZE_WC + RMAP_FTR_SIZE)) & 0x0F); /* 80=5000ms(sunPulse)/(62.5ms/8)(パケット出力間隔) */ i_blkSize = i_rplySize * 640; } else { return -1; } info->uc_cpuInt = 0; info->uc_number = 0; info->uc_interval = 0; info->ui_readSize = i_dataSize; info->ui_replySize = (unsigned int)i_rplySize; info->ui_blockSize = (unsigned int)i_blkSize; }else{ c_msChannel = Gc_CHID[ nodeID ]; if( nodeID <= RA_d_NODE_MGF_O) /* DPUインデックス修正 */ { c_dpuIndex = 0; /* DPU1 */ }else{ c_dpuIndex = 1; /* DPU2 */ } if( c_msChannel >= 0 && c_msChannel < RA_d_MISSION_NUM) { i_dataSize = RA_Gt_missionInfo[(int)c_dpuIndex][(int)c_msChannel].ui_readSize; i_rplySize = (i_dataSize + RMAP_HDR_SIZE_RR + RMAP_FTR_SIZE) + ((0x100000 - (i_dataSize + RMAP_HDR_SIZE_RR + RMAP_FTR_SIZE)) & 0x0F); i_blkSize = i_rplySize * (int)RA_Gt_missionInfo[(int)c_dpuIndex][(int)c_msChannel].uc_number; }else{ // ---comment out:110615 --- rap_cmm_putDbgTlm( c_msChannel ); return -1; } info->uc_cpuInt = RA_Gt_missionInfo[(int)c_dpuIndex][(int)c_msChannel].uc_cpuInt; info->uc_number = RA_Gt_missionInfo[(int)c_dpuIndex][(int)c_msChannel].uc_number; info->uc_interval = RA_Gt_missionInfo[(int)c_dpuIndex][(int)c_msChannel].uc_interval; info->ui_readSize = i_dataSize; info->ui_replySize = (unsigned int)i_rplySize; info->ui_blockSize = (unsigned int)i_blkSize; } return 0; }