/******************************************************************************* * モジュール名称 :アプリケーション01 グローバル変数初期化 * * モジュールラベル :app01_InitVar_'ENA' * * コーリングシーケンス:void app01_InitVar_'ENA'() * * 作成日・作成者 :2011/11/27 Y.K. * * * * 参照 : app01_InitVar.c を参照のこと * * 注意 : EDIT権限は、MPPE/ENA組 * *******************************************************************************/ #include "app_MPPE-ENA.h" // ------------ ENA --------------- // ------------ ENA --------------- // ------------ ENA --------------- unsigned char app01_InitVar_ENA() { return app01_InitVar_ENA_2(FALSE); } unsigned char app01_InitVar_ENA_2(unsigned char uc_partialflg) { unsigned char *puc; int i, isize; struct _s_ENA_param_save s_saveparam; struct _s_ENA_param *psp; psp = &Gs_ENA_prm; // 一部のみゼロクリアする場合のため、クリアしない領域をセーブしておく。 s_saveparam = psp->s_saveparam; // struct _s_ENA_param のゼロクリア puc = (unsigned char *)psp; isize = sizeof(struct _s_ENA_param); for(i = 0; i < isize; i++){ *puc++ = 0; } if(uc_partialflg){ // 一部のみゼロクリアする場合、クリアしない領域のデータを戻す。 psp->s_saveparam = s_saveparam; } psp->s_saveparam.uc_linkSpW = d_Lcl_ENAHK_UnLinkSpW; // SpaceWire link status // 本関数は初期化時に実行される。 // ループになるため、ここで初期化要求をしてはいけない。 // psp->uc_reqSensorInit = FALSE; // 初期化要求をしない psp->s_MacroCmd.uc_cmdenaflg = FALSE; // マクロコマンド実行要求受付 disable psp->s_MacroCmd.uc_req = FALSE; // マクロコマンド実行は要求しない状態 // テーブル書き込み要求フラグは降ろす。 // (テーブル書き込みが初期化要求項目に入っていれば、センサー初期化処理時に処理される) psp->s_tblws.uc_wrt_req = FALSE; psp->s_tblws.uc_wrt_req_mdis = FALSE; psp->s_mdb.uc_clear_req = FALSE; // mission data buffer のクリア要求をしない psp->uc_reqUserreqcmd = FALSE; // ユーザーリクエストコマンドは送信していない psp->uc_reqUserreqcmd_reason = 0; // ユーザーリクエストコマンド送信理由 psp->ui_spinperiod = 0; // スピン周期 (ENA ユーザーアプリケーションが計算したもの) // psp->uc_SVRAMid = 0; // SV RAM ID (センサからの値を読むこと) #ifdef d_ENA_AUTODISCRI_MDP // 120704 KA psp->s_adis_mdp.us_temp = 0xffff; // 温度 (温度データは 12bit なので、0xfff より大きい値は無効を意味する。) #endif // ミッションパケットへの HK 出力設定 psp->s_oHK.uc_clearctr_req = FALSE; psp->s_oHK.ui_outinterval = 0; // 出力しない psp->s_oHK.uc_outinterval_encoded = 0; // データ処理モード psp->uc_ProcessMode = d_Lcl_ENA_MODE_IDLE; psp->ui_ProcessSpinCtr = 0; psp->ui_pcktID = 0; psp->uc_tlm_commentsize = 0; psp->us_tlm_pcktseqnum = 0; // パケットシーケンスカウンタ psp->s_omt[d_Lcl_ENA_MISTLMOUTBUFID_MIS].uc_flg_bufempty = TRUE; // mission paket 用テレメ出力バッファ empty psp->s_omt[d_Lcl_ENA_MISTLMOUTBUFID_HK].uc_flg_bufempty = TRUE; // mission paket に出す HK用テレメ出力バッファ empty psp->uc_CprsWayFlg = d_Lcl_ENA_CPRS_RICE; Guc_TLMm_cmp[Gd_N_ENA] = 3; // system 変数 (圧縮モード, ユーザー定義圧縮) // psp->uc_CprsWayFlg = d_Lcl_ENA_CPRS_NON; psp->ui_CntOffset = 0; // カウントオフセット (LinLog圧縮時) psp->uc_CntDepth = d_Lcl_ENA_CntDepth32; // カウンタのビット幅 (LinLog圧縮時) psp->uc_waitSlotID0 = TRUE; psp->uc_datatopflg = FALSE; psp->us_ctr_slotID = 0; psp->us_numaddSpin_cur = 0; psp->us_numaddSpin = 4; // データを足し合わせるスピン数 psp->uc_num_add_interval_Spin_encoded = 0; // HK の初期値。コマンド設定しないと正しい値にならない。 // IFE engineering, IFE table read, non-process モード psp->s_npm.us_IntervalSpin = 10; // [spins] IFE パケットの処理間隔 psp->s_npm.us_IntervalSpin_cur = 0; // [spins] IFE パケットの処理間隔 psp->s_npm.uc_numProcessPckt_inSpin_encoded = 0; // データ処理を行うスピン時、処理するIFE データパケット数 // エンコードしたもの。内容はヘッダファイルを参照。 psp->s_npm.uc_dataprocspinflg = FALSE; // データを処理するスピン周期を示すフラグ psp->s_npm.us_bufoffset = 0; // データバッファの write pointer 位置 psp->uc_svtbl_chgreq = FALSE; // データ処理モード変更時、SV table ID の変更要求フラグ psp->uc_svtnl_chg_waitcount = 0; psp->uc_numE = 8; // エネルギー分割数 psp->uc_numP = 16; // スピンフェーズ分割数 psp->uc_numC = 7; // セクター分割数 psp->uc_numM = 8; // 質量分割数 psp->us_numTOF = 0x400; // TOF 分割数 psp->us_MassFactor = d_Lcl_ENA_MASSFACTOR_DEFAULT; // Mass scaling factor // psp->s_npm.us_numSlot = 384; // non-process mode 時の連続データ長さ (slot数) // d_Lcl_ENA_NONPROCESS_MAXDATASLOTNUM 以下であること // psp->s_npm.us_numSlot_cur = 0; // psp->s_npm.us_numSpin_datainterval = 30; // non-process mode 時のデータ取得間隔 Gui_ENA_AccumMat_mass = Gui_ENA_AccumMat + d_Lcl_ENA_ACCUMTBL_HEADA_SIZE/4; // valid TOF event データは最大 d_Lcl_ENA_MAXBINNUM_ACCUMMASS 個にビニングされる。 // invalid TOF event データは最大 d_Lcl_ENA_SLOT_NUM 個にビニングされる。 Gui_ENA_AccumMat_mass_scale = Gui_ENA_AccumMat + d_Lcl_ENA_ACCUMTBL_HEADA_SIZE/4 + d_Lcl_ENA_MAXBINNUM_ACCUMMASS + d_Lcl_ENA_SLOT_NUM; Gui_ENA_AccumMat_cnt_scale = Gui_ENA_AccumMat + d_Lcl_ENA_ACCUMTBL_HEADA_SIZE/4; Gui_ENA_AccumMat_tof = Gui_ENA_AccumMat + d_Lcl_ENA_ACCUMTBL_HEADA_SIZE/4; Gui_ENA_AccumMat_tof_scale = Gui_ENA_AccumMat + d_Lcl_ENA_ACCUMTBL_HEADA_SIZE/4 + d_Lcl_ENA_ESTEPNUM * d_Lcl_ENA_TOFNUM; // IFE_engineering mode, IFE table read mode 用 Guc_ENA_AccumMat_EngTblread = (unsigned char *)(Gui_ENA_AccumMat + d_Lcl_ENA_ACCUMTBL_HEADA_SIZE/4); // auto discri table on MDP RAM puc = &Guc_ENA_AutoDiscriTbl_RAM[0][0][0]; for(i = 0; i < d_Lcl_ENA_AUTODISCRITBLNUM_RAM * d_Lcl_ENA_AUTODISCRITBL_TNUM * d_Lcl_ENA_AUTODISCRITBL_DATANUM_STORE; i++){ *puc++ = 0; } // discri table on MDP RAM puc = &Guc_ENA_DiscriTbl_RAM[0][0]; for(i = 0; i < d_Lcl_ENA_DISCRITBLNUM_RAM * d_Lcl_ENA_DISCRITBL_DATANUM_STORE; i++){ *puc++ = 0; } app01_ENA_SetProcessParam1(); return(0); } /* ***** Comment out by YK 111127 unsigned char app01_ErrClr_ENA() { return(0); } */