/******************************************************************************* * * * モジュール名称 :API関数プロトタイプ宣言 * * モジュールラベル :rap_api.h * * タスク区分 :ヘッダ * * 機能 :API関数プロトタイプ宣言を行う * * 使用上の注意 :特になし * * * *******************************************************************************/ #ifndef _RAP_API_H_ #define _RAP_API_H_ // ****************** // ***** 構造体 ***** // ****************** typedef struct M_T_RDN_MIS_IF_STATUS { unsigned short us_singleSendCtl; // 非定期コマンド送信コントロールレジスタ unsigned short us_multiSendCtl; // 定期コマンド送信コントロール・レジスタ unsigned short us_multiSendSet; // 定期コマンド送信設定・レジスタ unsigned short us_recvStatus; // RMAP受信ステータス・レジスタ unsigned short us_readRply0Cnt; // RMAP Read Reply0受信個数・レジスタ unsigned int ui_readRply0Addr; // DMA転送先アドレス0・レジスタ unsigned short us_readRply1Cnt; // RMAP Read Reply1受信個数・レジスタ unsigned int ui_readRply1Addr; // DMA転送先アドレス1・レジスタ unsigned short us_writeRplyCnt; // RMAP Write Reply受信個数・レジスタ unsigned short us_writeCmdCnt; // RMAP Write Command受信個数・レジスタ unsigned short us_lowerLimit; // 転送先アドレスLower Limit設定・レジスタ unsigned short us_upperLimit; // 転送先アドレスUpper Limit設定・レジスタ unsigned short us_recvBuffEdac; // RCV Buffer EDACエラーステータス・レジスタ } M_T_RDN_MIS_IF_STATUS; typedef struct M_T_MIS_DATA_PLAN { unsigned char uc_cpuInt; // CPU-INT(定期コマンド発行間隔) [sec] unsigned char uc_number; // 送信RMAP Command数 [個] unsigned char uc_interval; // RMAP Command送信間隔 [msec] unsigned int ui_readSize; // ミッションデータサイズ [バイト] unsigned int ui_replySize; // RMAP Read Replyパケットサイズ [バイト] unsigned int ui_blockSize; // ブロックサイズ [バイト] } M_T_MIS_DATA_PLAN; // ************************************** // *** 冗長ライブラリ関数プロトタイプ *** // ************************************** // ####################################### // *** 冗長側ミッションI/F ドライバAPI *** // ####################################### // === 非定期CMD発行 === int rap_dr_sendRdnSingleCmd( unsigned char channel, unsigned char buff[], unsigned int size, unsigned int replyAddr ); //4.1.1 // === 定期CMD発行 === int rap_dr_sendRdnMultiCmd( unsigned char channel, unsigned char buff[], unsigned int size, unsigned int count, unsigned int interval, unsigned int replyAddr ); //4.1.2 // === Register確認 === int rap_dr_getRdnMisIfRegister( unsigned char channel, unsigned int offset, unsigned int size, unsigned char buff[] ); //4.1.3 // === Register登録 === int rap_dr_setRdnMisIfRegister( unsigned char channel, unsigned char buff[], unsigned int offset, unsigned int size ); //4.1.4 // *** 冗長側FPGA ドライバAPI *** // === Register確認 === int rap_dr_getRdnDpuRegister( unsigned int offset, unsigned int size, unsigned char buff[] ); //4.1.5 // === Register登録 === int rap_dr_setRdnDpuRegister( unsigned char buff[], unsigned int size, unsigned int offset ); //4.1.6 // *** 冗長側SDRAM ドライバAPI *** // === SDRAM read === (Size: 1MB-max [700msec]) int rap_dr_getRdnData( unsigned int address, unsigned int size, unsigned char buff[] ); //4.1.7 // ####################################### // *** 冗長側ミッション機器通信制御API *** [APP06からのみ制御] // ####################################### [Q:こちらで定義された機能は「Driverを直接叩くまえに」こちらを優先利用でOK?] // === FPGA Register初期化 === used int rap_sv_resetRdnDpu( unsigned int errLogAddr ); //5.1.1 // === Mission I/F初期化 === used int rap_sv_resetRdnMisIf( int nodeID, unsigned int lowerAddr, unsigned int upperAddr ); //5.1.2 // === Mission機器CMD送信 === used [Q:機器側のCMD-BUFFER addressは教えなくても冗長側は知っているのか?] int rap_sv_sendRdnMissionCmd( int nodeID, unsigned char commandBuff[], int dataSize ); //5.1.3 // === Mission機器HK収集 === used [Q:機器側のHK-BUFFER addressは教えなくても冗長側は知っているのか?] int rap_sv_sendRdnHKCollect( int nodeID, unsigned int recvAddr ); //5.1.4 // === HKデータ出力 === [Q:どこから? 冗長側DMC対向I/Fから出て行く?] // void rap_sv_putRdnHKTelemetry( unsigned char HKData[] ); //5.1.5 // === Mission機器データ収集 === ***core:これから実装*** [Q:機器側のData-BUFFER addressは教えなくても冗長側は知っているのか?] int rap_sv_sendRdnMissionCollect( int nodeID, unsigned int recvAddr ); //5.1.6 // === EWO データ収集 === used [Q:EWO側のaddressは教えなくても冗長側は知っているのか?] int rap_sv_sendRdnEwoMemInfo( int clctSwitch, unsigned int writeInfoAddr, unsigned int startAddr[], unsigned int endAddr[] ); //5.1.7 // === SunPule送信 === used [Q:機器側のSunPulse TI addressは教えなくても冗長側は知っているのか?] int rap_sv_sendRdnSunpulseTime( int nodeID ); //5.1.8 // === 機器MEM-LOAD === used int rap_sv_sendRdnMemLoad( int nodeID, unsigned int address, int size, unsigned char loadBuff[163] ); //5.1.9 // === 機器MEM-DUMP === used recvAddr(受信領域): 0x08100000-0x17FFFFFF [16B step指定] int rap_sv_sendRdnMemDump( int nodeID, unsigned int address, int size, unsigned int recvAddr ); //5.1.10 // === SRAM-LOAD === used int rap_sv_getRdnData( unsigned int address, unsigned int size, unsigned char buff[] ); //5.1.11 // === Mission-IF status === ***core:これから実装*** int rap_sv_getRdnMisIfStatus( int nodeID, M_T_RDN_MIS_IF_STATUS *misIfStatus ); //5.1.12 // ####################################### // *** SDRAM 管理API *** // ####################################### // === Block-ADRを計算 === int rap_mm_calcBlockAddr( int nodeID, int missionDataID, unsigned int startAddr, int blockNo,unsigned int *blockAddr ); //6.1.1 // === Reply(packet)-ADRを計算 === int rap_mm_calcReplyAddr( int nodeID, int missionDataID, unsigned int startAddr, int blockNo, int replyNo, unsigned int *replyAddr ); //6.1.2 // === Mission Data収集計画を取り込む [C.2] === int rap_mm_getMisDataPlan( int nodeID, int missionDataID, M_T_MIS_DATA_PLAN *info ); //6.1.3 #endif /* _RAP_API_H_ */