/******************************************************************************* * * * モジュール名称 :デバッグテレメ出力 * * モジュールラベル :rap_cmm_putDbgTlm * * タスク区分 :冗長ライブラリ * * 機能 :デバッグ用のテレメトリを出力する * * * * コーリングシーケンス:void rap_cmm_putDbgTlm( code ) * * 引数 :unsigned int code コールしたモジュールの戻り値 * * 戻り値 :なし * * 使用上の注意 :なし * * エラー処理 :なし * * * *******************************************************************************/ #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" /* 関数プロトタイプ宣言 */ #define DATA_AREA_SIZE 16 // ---comment out:110615 --- /* void rap_cmm_putDbgTlm( unsigned int code ) { unsigned int ui_tlmData[DATA_AREA_SIZE]; // テレメトリデータ編集領域 unsigned char *ucp_tlmDataPtr; M_T_DPU_INFO t_dpuInfo; // DPU情報 M_T_CCSDS_HDR_INFO t_ccsdsHdr; // テレメトリヘッダ情報 int i_tlmBusy; int i_putResult; int i; // 処理開始 // データ編集 for( i = 0; i < DATA_AREA_SIZE; i++ ){ ui_tlmData[i] = 0xDBDB; } __asm( "move %0, $31;" : "=r"(ui_tlmData[2]) : ); // R31レジスタ(リターンアドレス≒本関数コールアドレス) ui_tlmData[3] = code; // ヘッダ編集 dpu_getDPUInfo( &t_dpuInfo ); if( t_dpuInfo.uc_dpuID == 1){ t_ccsdsHdr.us_APID = RA_d_APID_RP_DPU1; }else{ t_ccsdsHdr.us_APID = RA_d_APID_RP_DPU2; } t_ccsdsHdr.uc_Category = 0x00; t_ccsdsHdr.uc_PktId = 0x00; // テレメトリ出力 for( i = 0; i < 4; i++ ) { if( ((unsigned int)&ui_tlmData[i] & 0x0000000F) == 0 ) { ucp_tlmDataPtr = (unsigned char *)&ui_tlmData[i]; break; } } i_tlmBusy = 0; i_putResult = dpu_putTelemetry( &t_ccsdsHdr, (RA_d_INT * 12), ucp_tlmDataPtr, (int*)(&i_tlmBusy) ); while(i_putResult == 0 && i_tlmBusy == 1) { dpu_delay(1); // 処理終了を待つ } // 終了 return; } */