//2013.10.15 /******************************************************************************* * モジュール名称 :Application Header * * モジュールラベル :app_mppe_mia.h * * タスク区分 :ヘッダ * * 機能 :define/Struct/Variable/Prototype * * 使用上の注意 :特になし * * 作成日・作成者 :2011/10/08 Y.K. * * * * 参照 :Sampleとして、 app.def を参照のこと * * 注意 : EDIT権限は、MPPE/MIA組 * *******************************************************************************/ //#define _RUN_ON_WINDOWS_ <==================提出時はコメントアウト //#define _GET_WORKING_TIME_MIA__03 <==================提出時はコメントアウト //#define _RUN_WITH_EMU_MIA__ <==================提出時はコメントアウト #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #ifndef MATH_PI #define MATH_PI (3.1415926536) #endif // INITIAL WORD of PRODUCTS #define d_Lcl_MIA_TLMID0 0xca #define d_Lcl_MIA_TLMID1 0xe3 #define d_Lcl_MEA1_TLMID1 0xe1 #define d_Lcl_MEA2_TLMID1 0xe2 #define d_Lcl_MSA_TLMID1 0xe4 //TLMパケット制限 //#define d_Lcl_MIA_TLMMAX 0x1f00 //#define d_Lcl_MIA_TLM_NM 4 //H-mode-M2が最大35kB // 35kB/0x1f00 = 4.4 (0, 1, ..., 4) //LOOKUP TABLE #define d_Lcl_MIA_TBL_RD0 0x7fff //RAD. 規格化パラメータ ROMテーブルの作成、読出時に使用 #define d_Lcl_MIA_TBL_RD1 0x07ff //RAD. 規格化パラメータ sin or cosテーブル作成時に使用 //#define d_Lcl_MIA_TBL_2B 0xffff //Cnt, gf, v 規格化パラメータ ROMテーブルの作成, #define d_Lcl_MIA_TBL_VF 0x27f //vf, 中央値で1に相当 #define d_LCl_MIA_TBL_VF0 0x200 //vf, 最低値、vf += uc_vf //モーメント計算の規格パラメータ #define d_Lcl_MIA_N_NRM (1.0*0xffff*d_Lcl_MIA_TBL_RD1/d_Lcl_MIA_TBL_VF) //Cnt*gf*csp/v/vf = Cnt*csp/vf #define d_Lcl_MIA_V2_NRM (1.0*0xffff*0xffff*d_Lcl_MIA_TBL_RD1*d_Lcl_MIA_TBL_RD1) //Cnt*gf*csp*snp #define d_Lcl_MIA_V3_NRM (d_Lcl_MIA_V2_NRM*d_Lcl_MIA_TBL_RD1) //Cnt*gf*csp*csp*csa = V2*csa #define d_Lcl_MIA_P3_NRM (d_Lcl_MIA_V3_NRM*0xffff*d_Lcl_MIA_TBL_VF) //Cnt*gf*csp*csp*csp*v*vf = V3*v*vf #define d_Lcl_MIA_P4_NRM (d_Lcl_MIA_P3_NRM*d_Lcl_MIA_TBL_RD1) //Cnt*gf*csp*csp*csa*csa*v*vf = P3*csa #define d_Lcl_MIA_P5_NRM (d_Lcl_MIA_P4_NRM*d_Lcl_MIA_TBL_RD1) //Cnt*gf*csp*csp*csa*csa*csa*v*vf = P4*csa //桁補正 #define d_Lcl_MIA_N_OR 1 #define d_Lcl_MIA_V_OR 10 #define d_Lcl_MIA_P_OR 100 #define d_Lcl_MIA_3DLL 0x20 // Lmode 3D-LLの作成タイミング #define d_Lcl_MIA_DELAY 4 // HK異常によるHVoffからPSUoffまでの間隔(s) #define d_Lcl_MIA_HK2B 14 // HK28B分、unsigned short の中で容量を定義 //#define d_Lcl_MIA_TI2B 3 //6B(TI:0-5) //観測データパケットパラメタ #define d_Lcl_MIA_RMP_SIZE 12 //RMAP Headerサイズ #define d_Lcl_MIA_MIS_SIZE 11 //Mission Headerサイズ #define d_Lcl_MIA_SCI_SIZE 28 //SCIヘッダサイズ #define d_Lcl_MIA_ASC_SIZE 4 //ASICパラメータサイズ #define d_Lcl_MIA_ASC_SPNN 12 //ASICパラメータのスピン数 #define d_Lcl_MIA_HVB_SIZE 24 //HV Bulk AD packetサイズ #define d_Lcl_MIA_HVB_SPNN 256 //HV Bulk AD packetのスピン数 #define d_Lcl_MIA_SCI_ADRR (d_Lcl_MIA_RMP_SIZE + d_Lcl_MIA_MIS_SIZE)//SCIヘッダアドレス #define d_Lcl_MIA_SGN_ADRR (d_Lcl_MIA_RMP_SIZE + 10) //セグメントNoアドレス #define d_Lcl_MIA_CNT_ADRR (d_Lcl_MIA_SCI_ADRR + 6) //SCIデータカウンタアドレス #define d_Lcl_MIA_MOD_ADRR (d_Lcl_MIA_SCI_ADRR + 8) //SCIデータカウンタアドレス #define d_Lcl_MIA_ASC_ADRR (d_Lcl_MIA_SCI_ADRR + 24) //ASICパラメータアドレス #define d_Lcl_MIA_HVB_ADRR (d_Lcl_MIA_SCI_ADRR + d_Lcl_MIA_SCI_SIZE)//HV Bulk AD packetアドレス #define d_Lcl_MIA_SP0_ADRR (d_Lcl_MIA_HVB_ADRR + d_Lcl_MIA_HVB_SIZE)//Science packet0アドレス #define d_Lcl_MIA_SP1_ADRR d_Lcl_MIA_SCI_ADRR //Science packet1-24アドレス #define d_Lcl_MIA_SW1_ADRR (16*17*32*2) //M1(SW)時のカウントデータバッファの区切り //SW(16sc x 16+1ch)の後にALL(16sc x 8+1ch)を配置する #define d_Lcl_MIA_MG3_ADRR (16*9*32*2) //M3(MG)時のカウントデータバッファの区切り //(16sc x 8+1ch)の後に(16sc x 8ch)を配置する #define d_Lcl_MIA_PAC_SIZE (d_Lcl_MIA_SP0_ADRR + 4608 +5) //Packetの有効部分の最大サイズ +5:8の倍数にする //プロダクト struct _s_MIA_Product { unsigned int ui_Et[5*128]; //(32s) //unsigned short us_3DLL[32*17*32 + d_Lcl_MIA_HK2B]; unsigned short us_Ldata[0x800]; //4kB unsigned short us_3DLL[16*17*32 + d_Lcl_MIA_HK2B];//L or H unsigned short us_3DL2[32*9*16 + d_Lcl_MIA_HK2B];//M //unsigned char uc_info; unsigned short us_Llen_ttl; //unsigned short us_Mlen; //unsigned short us_Hlen; unsigned int ui_TIL; unsigned int ui_TIH; unsigned short us_SPIN_N; //ヘッダ情報格納 unsigned char uc_hdrL[d_Lcl_MIA_SCI_SIZE]; //SCIヘッダ L&M mode unsigned char uc_hdrH[d_Lcl_MIA_SCI_SIZE]; //SCIヘッダ H mode unsigned char uc_HVinf[d_Lcl_MIA_HVB_SIZE*d_Lcl_MIA_HVB_SPNN]; //HV bulk AD パケット unsigned char uc_ASICinf[d_Lcl_MIA_ASC_SIZE*d_Lcl_MIA_ASC_SPNN];//ASICパラメータ unsigned char uc_ASIC_idx; //ASICパラメータ index }; //制御用のフラグ及びパラメータ、コマンドによる変更がある struct _s_MIA_CtrlParam { //プロダクト作成パラメータ unsigned char uc_snap_ave; //1:Snapshot, 0:Average unsigned char uc_eng_sci; //1:Eng, 0:Sci unsigned char uc_mode; //Eng(0-4), Sci(0-8) //HKモニタパラメータ unsigned char uc_HKmon_ena; //1:ENA, 0:DIS [0-6]: MHV, SVS, SVG, MCPI, ASCT, IF-T, ASIC_SEL unsigned char uc_MHV_lmt[2]; unsigned char uc_SVS_lmt[2]; unsigned char uc_SVG_lmt[2]; unsigned char uc_MCPI_lmt[2]; unsigned char uc_ASCT_lmt[2]; unsigned char uc_IFT_lmt[2]; unsigned char uc_HK_anmly; //HK anomaly検出[0-7]MHV,SVS,SVG,MCPI,ASCT,IFT,ラッチアップ,PSUOFF unsigned char uc_HK_delay; //HVoff後のPSUoffのタイマー unsigned int ui_eng_vmf; // 1/0 in 32 Estep for VM cal. unsigned char uc_settbl_n; //初期化作業用カウンタ unsigned char uc_readrom; //E2PROM読み込みのフラグ, APP02で検出する。 unsigned char uc_got_e2p_prm; //E2PROMから読み込み後TRUEになる //SCNT1 //デバッグ時は初期時はTRUE, フライト時はFALSE unsigned char uc_swcal_prm[5]; //観測データをソフト内で上書きする //0: ENA/DIS //1: EnStep 0xff = all //2: CH //3: Sector //4: Count 0 = k(EnStep) unsigned char uc_vet_cmp_ena; //プロダクトの圧縮を行わない // unsigned char uc_watchman; //Debug用のフラグ、uc_SwHK[25]に出力 }; //観測データ、解析用パラメータ(初期化時にE2PROMから値を取得する) struct _s_MIA_ProcParam { //M1 16ch(SW) x SpOn+Off(Onが先頭に配置) //M1&3 8ch(Anti)x SpOn+Off(OffはM3も兼ねる) //M2 16ch(Anti) unsigned short us_gf[16*2 + 8*2 + 16];// = gf*dE*sr unsigned char uc_vf[16*2 + 8*2 + 16];// us_vlc[]のCH間ファクター 0.8(0x1fe) + 0.4(0-0xff) //unsigned short us_dE[16*2 + 8*2 + 16]; //unsigned short us_sr[16*2 + 8*2 + 16]; short s_csp[16*2 + 8*2 + 16]; short s_snp[16*2 + 8*2 + 16]; //M1 16sc x 16ch(SW) x SpOn+Off(Onが先頭に配置) //M1&3 16sc x 8ch(Anti)x SpOn+Off(OffはM3も兼ねる) //M2 32sc x 16ch(Anti) short s_csa[16*16*2 + 8*16*2 + 16*32]; short s_sna[16*16*2 + 8*16*2 + 16*32]; //T0: 128 SpOff //T1: 128 SpOn //T2: 64 SpOff //T3: 32 SpOff //T4: 32 SpOff //T5: 32 SpOff unsigned short us_vlc[128+128+64+32*3]; //416 }; //コマンド struct _s_MIA_Command { unsigned char uc_cnt; unsigned char uc_err_cnt; unsigned char uc_ans[4]; }; #ifdef _EXTERN_MPPE_MIA_VAL_ #define d_Lcl_MIA_EXTERN #else #define d_Lcl_MIA_EXTERN extern #endif d_Lcl_MIA_EXTERN struct _s_MIA_ProcParam Gst_MIA_proc; d_Lcl_MIA_EXTERN struct _s_MIA_CtrlParam Gst_MIA_ctrl; d_Lcl_MIA_EXTERN struct _s_MIA_Product Gst_MIA_dat; d_Lcl_MIA_EXTERN struct _s_MIA_Command Gst_MIA_cmd; //d_Lcl_MIA_EXTERN unsigned short Gus_MPPE_Ldata[0x1000]; //共有関数 char app03_MIA_readSCIPacket(unsigned char*, unsigned char*); char app03_MIA_readHDRPacket(unsigned char*, unsigned char); char app03_MIA_tlmout(unsigned char, unsigned char, unsigned short, unsigned char, unsigned char, unsigned short*, unsigned short*, unsigned int, unsigned char); void app03_MIA_makeSWcal(unsigned short*, unsigned char); //型変換 //char app03_MIA_UINTtoUSHORT(unsigned int *, unsigned short *, unsigned int); char app03_MIA_DBLtoUSHORT(double *, unsigned short *, unsigned int); char app04_ENA_Lin2Log(unsigned int *pinbuf, unsigned char *poutbuf, unsigned int len, unsigned char depth, unsigned int offset); //MIAカウンタ分配 char app03_MIA_88dir(unsigned short*, unsigned short*, unsigned char); char app03_MIA_3DM_M2(unsigned short*, unsigned short*, unsigned char); char app03_MIA_makeL(unsigned int, unsigned short*, unsigned short*, unsigned short*); char app03_MIA_makeM(unsigned int, unsigned short*, unsigned short*, unsigned short*);