/******************************************************************************* * モジュール名称 :APP03 Mission TLM (L&M) PI tasks * * モジュールラベル :app03_PIs * * タスク区分 :Application-03 HEP task for Mission TLM (L&M) * * 機能 : * * コーリングシーケンス:void app03_(PI) * * 引数 :なし * * 戻り値 :なし * * 使用上の注意 :グローバル変数はアプリケーション01でまとめて初期化 * * エラー処理 :なし * * 注意 : EDIT権限は、MPPE/HEP組 * * 作成日・作成者 :2013/01/29 T.T. -> YK * * 2013/04/16 T.T. * *******************************************************************************/ #include "app_common.h" #include "app_MPPE-HEP.h" // *** Macro - Local *** //void app03_TlmDump ( unsigned char, unsigned char, unsigned char ); void app3_HEP_putTLM(); void app03_HEPE( unsigned int ui_sunpulseCnt ) { // unsigned char uc_nodeId = Gd_N_HEPE; // data: HEPE // unsigned char uc_dataId = 0; // data: HEPE // unsigned char uc_headId = Gd_N_HEPE; // data: HEPE // app03_TlmDump( uc_nodeId, uc_dataId, uc_headId ); // Max-1000B(M) / 256B(L) packet dump // int i_bufId; int i_numNewBlock; int i_flag; int i_num_packet; int i,j,k,jj,ii; unsigned int ui_timeData; unsigned int ui_HEPE_TI=0; unsigned short us_HEPE_cnt[10]; unsigned short *pus,*pus2; M_T_BLOCK_INFO t_blockInfo; unsigned char uc_HEPE_packet_format = 0; unsigned char uc_ele_data_cnt = 0; unsigned short us_HEPE_data_read_size; unsigned char uc_sector_num =0 ; unsigned char uc_ASIC_ID =0; unsigned short us_number_process_packet =0; // 2013.03.25 unsigned char uc_number_process_block =0; // 2013.03.25 int i_trg_flag =0 ; // unsigned char uc_HEPE_trans_packet_num = 0; // --------------------------------------------------------------- // -- Set at the buffer with the oldest non-processed block -- // 未処理ブロックの Buffer-ID を求める. // i_bufId には Buffer-ID (0:Long, 1:Short, -1:no data) が返る. i_bufId = app_CheckNonProcBlock( Gd_N_HEPE, Gd_D_HEPE, // [INPUT] Node/Data ID Gui_TLMm_blockTime[Gd_N_HEPE], // [INPUT] TI of Processed Block &ui_timeData // [OUTPUT] TI of Newest Block in the selected buffer ); // i_bufId が no data の場合,処理はここで終了. if( i_bufId < 0 ) return; // -- Set at the oldest non-processed block -- // 未処理ブロック数を求める. // i_numNewBlock にブロック数が返る.負の数が返った場合はデータ無し(エラー) i_numNewBlock = app_SetNonProcBlock( Gd_N_HEPE, Gd_D_HEPE, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID Gui_TLMm_blockTime[Gd_N_HEPE], // [INPUT] TI of Processed Block &t_blockInfo // [OUTPUT] Block info ); // 未処理ブロックが一つも無い場合,i_bufId と共に求めたブロックの最新TIを, // 次回参照される処理済みブロックTIとして上書きして終了. if( i_numNewBlock < 1 ){ Gui_TLMm_blockTime[Gd_N_HEPE] = ui_timeData; return; } // データ読み出し // ========================================================== // Number of Packet // HEPE // 4sec: // 42 bytes(ASIC)* 10 ASIC = 420 bytes / packet // 34 packets / Block (HEPEで生成されるのは32packets) // // Calibration data // 52 bytes(ASIC) ただし、32秒で先が生成するので、 //         CAL中はほとんどが無効データ // // ========================================================== // 各未処理ブロックごとに処理する for( i=0, uc_number_process_block=0; i Gui_TLMm_blockTime[Gd_N_HEPE] && t_blockInfo.i_replyNum > 0 && t_blockInfo.c_invalidFlg == 0 ){ // 最後の1ブロックを除いて処理(まだ、全部パケットで満たされていない可能性があるため) // 各パケット毎の処理 i_num_packet = t_blockInfo.i_replyNum; // uc_HEPE_trans_packet_num=0; //一噛み対応変数 // us_number_process_packet = 0; // パケット中で処理したデータ数 2013.03.25 for( j=0; j> 1) & 0x1F; if(uc_sector_num > 31) uc_sector_num = 31; uc_ASIC_ID = (G03uc_data[17+42*uc_ele_data_cnt] ) & 0x0F; if(uc_ASIC_ID > 9) uc_ASIC_ID = 9; /* for(k=0;k<16;k++){ us_HEPE_cnt[k] = (unsigned short)(G03uc_data[18+k*2+42*uc_ele_data_cnt]&0x1F); us_HEPE_cnt[k] <<= 8; us_HEPE_cnt[k] += (unsigned short)G03uc_data[19+k*2+42*uc_ele_data_cnt]; } */ // Energy(16bin-->8bin) counter :ASIC-ID/SECTOR# us_HEPE_cnt[0] = (unsigned short)(G03uc_data[18+42*uc_ele_data_cnt]&0x1F); us_HEPE_cnt[0] <<= 8; us_HEPE_cnt[0] += (unsigned short)G03uc_data[19+42*uc_ele_data_cnt]; us_HEPE_cnt[1] = (unsigned short)(G03uc_data[20+42*uc_ele_data_cnt]&0x1F); us_HEPE_cnt[1] <<= 8; us_HEPE_cnt[1] += (unsigned short)G03uc_data[21+42*uc_ele_data_cnt]; us_HEPE_cnt[2] = (unsigned short)(G03uc_data[22+42*uc_ele_data_cnt]&0x1F) + (unsigned short)(G03uc_data[24+42*uc_ele_data_cnt]&0x1F); us_HEPE_cnt[2] <<= 8; us_HEPE_cnt[2] += (unsigned short)G03uc_data[23+42*uc_ele_data_cnt]; us_HEPE_cnt[2] += (unsigned short)G03uc_data[25+42*uc_ele_data_cnt]; us_HEPE_cnt[3] = (unsigned short)(G03uc_data[26+42*uc_ele_data_cnt]&0x1F) + (unsigned short)(G03uc_data[28+42*uc_ele_data_cnt]&0x1F); us_HEPE_cnt[3] <<= 8; us_HEPE_cnt[3] += (unsigned short)G03uc_data[27+42*uc_ele_data_cnt]; us_HEPE_cnt[3] += (unsigned short)G03uc_data[29+42*uc_ele_data_cnt]; us_HEPE_cnt[4] = (unsigned short)(G03uc_data[30+42*uc_ele_data_cnt]&0x1F) + (unsigned short)(G03uc_data[32+42*uc_ele_data_cnt]&0x1F) + (unsigned short)(G03uc_data[34+42*uc_ele_data_cnt]&0x1F) + (unsigned short)(G03uc_data[36+42*uc_ele_data_cnt]&0x1F); us_HEPE_cnt[4] <<= 8; us_HEPE_cnt[4] += (unsigned short)G03uc_data[31+42*uc_ele_data_cnt]; us_HEPE_cnt[4] += (unsigned short)G03uc_data[33+42*uc_ele_data_cnt]; us_HEPE_cnt[4] += (unsigned short)G03uc_data[35+42*uc_ele_data_cnt]; us_HEPE_cnt[4] += (unsigned short)G03uc_data[37+42*uc_ele_data_cnt]; us_HEPE_cnt[5] = (unsigned short)(G03uc_data[38+42*uc_ele_data_cnt]&0x1F) + (unsigned short)(G03uc_data[40+42*uc_ele_data_cnt]&0x1F) + (unsigned short)(G03uc_data[42+42*uc_ele_data_cnt]&0x1F) + (unsigned short)(G03uc_data[44+42*uc_ele_data_cnt]&0x1F) + (unsigned short)(G03uc_data[46+42*uc_ele_data_cnt]&0x1F); us_HEPE_cnt[5] <<= 8; us_HEPE_cnt[5] += (unsigned short)G03uc_data[39+42*uc_ele_data_cnt]; us_HEPE_cnt[5] += (unsigned short)G03uc_data[41+42*uc_ele_data_cnt]; us_HEPE_cnt[5] += (unsigned short)G03uc_data[43+42*uc_ele_data_cnt]; us_HEPE_cnt[5] += (unsigned short)G03uc_data[45+42*uc_ele_data_cnt]; us_HEPE_cnt[5] += (unsigned short)G03uc_data[47+42*uc_ele_data_cnt]; // // L-modeデータ生成 // for(k=0;k<3;k++){ Gus_HEPE_L_mode_buff[(uc_ASIC_ID/5)][(uc_sector_num)/8][k] += (us_HEPE_cnt[k*2]+us_HEPE_cnt[k*2+1]); } // Gus_HEPE_L_mode_buff[(uc_ASIC_ID/5)][(uc_sector_num)/8][0] += (us_HEPE_cnt[0]+us_HEPE_cnt[1]); // Gus_HEPE_L_mode_buff[(uc_ASIC_ID/5)][(uc_sector_num)/8][1] += (us_HEPE_cnt[2]+us_HEPE_cnt[3]); // Gus_HEPE_L_mode_buff[(uc_ASIC_ID/5)][(uc_sector_num)/8][2] += (us_HEPE_cnt[4]+us_HEPE_cnt[5]); // // M-modeデータ生成 // if(uc_ASIC_ID >=5 ) uc_ASIC_ID +=1; // 20131203 0-1,2-3,4,5-6,7-8,9 if(uc_ASIC_ID > 10 ) uc_ASIC_ID=10; // 20131203 for(k=0;k<2;k++){ Gus_HEPE_M_mode_buff[(uc_ASIC_ID/2)][(uc_sector_num)/4][k] += us_HEPE_cnt[k]; } for(k=1;k<3;k++){ Gus_HEPE_M_mode_buff[(uc_ASIC_ID/2)][(uc_sector_num)/4][k+1] += (us_HEPE_cnt[k*2]+us_HEPE_cnt[k*2+1]); } // 6*8*4 = 192*2 = 384 bytes }// for(packet内処理) // sector = 31 最終セクタデータ if(uc_sector_num == 31 ){ memcpy(&Guc_HEPE_TLM_M_buff[0],&G03uc_data[12],4); memcpy(&Guc_HEPE_TLM_M_buff[4],&Gus_HEPE_M_mode_buff[0][0][0],384); //20131203 app3_HEP_putTLM( 1, // [INPUT] Packet-ID 1 ui_HEPE_TI, // [INPUT] TI 3, // [INPUT] M-mode data Guc_HEPE_TLM_M_buff, // [INPUT] Packet data 388, // [INPUT] Packet size // 20131203 384+4 0 // HEP-ele ); pus = &(Gus_HEPE_M_mode_buff[0][0][0]); for(i = 0; i < (6*8*4) ; i++){ //20131203 *pus++ = 0; } // Trigger data i_trg_flag = app_tiTrgSearch(ui_HEPE_TI,Gd_N_HEPE); if (i_trg_flag < 1) { } else { // if (i_trg_flag > Gd_TRG_MAX - 1) i_trg_flag = (Gd_TRG_MAX - 1); Gus_TRG1_HEPE_FluxH[i_trg_flag] = 0; Gus_TRG1_HEPE_Flux [i_trg_flag] = 0; for (ii=0; ii<2; ii++) { for(jj=0;jj<4;jj++){ Gus_TRG1_HEPE_FluxH[i_trg_flag] += ( Gus_HEPE_L_mode_buff[ii][jj][1] + Gus_HEPE_L_mode_buff[ii][jj][2] ); Gus_TRG1_HEPE_Flux [i_trg_flag] += ( Gus_HEPE_L_mode_buff[ii][jj][0] + Gus_HEPE_L_mode_buff[ii][jj][1] ); } } } } if(uc_sector_num == 31 && Guc_HEPE_TLM_stack_num < 16){ // memcpy(&Guc_HEPE_TLM_L_buff[0], &G03uc_data[12],4); // 2013.12.02 Delete pus = &(Gus_HEPE_L_mode_buff[0][0][0]); // Spin data pus2 = &(Gus_HEPE_L_mode_data[0][0][0]); // Integ. data for 15 spins for(i = 0; i < (2*4*3) ; i++){ *pus2 += *pus; pus2++; *pus++ = 0; // Spin data initialize } memcpy(&Guc_HEPE_TLM_L_buff[4+48*(unsigned char)(Guc_HEPE_TLM_stack_num/8)], &(Gus_HEPE_L_mode_data[0][0][0]),48); // 2013.12.03 Add Guc_HEPE_TLM_stack_num++; // move here } // TLM_Lに15スピン積分したらDRへ // if(Guc_HEPE_TLM_stack_num >= 15){ memcpy(&Guc_HEPE_TLM_L_buff[0], &G03uc_data[12],4); // TI set // memcpy(&Guc_HEPE_TLM_L_buff[4],&Gus_HEPE_L_mode_data[0][0][0],48); // 20131202 delete app3_HEP_putTLM( 1, // [INPUT] Packet-ID 1 ui_HEPE_TI, // [INPUT] TI 2, // [INPUT] L-mode data Guc_HEPE_TLM_L_buff, // [INPUT] Packet data 100, // [INPUT] Packet size 20131203 52 --> 100 change 0 // HEP-ele ); Guc_HEPE_TLM_stack_num=0; pus = &(Gus_HEPE_L_mode_data[0][0][0]); for(i = 0; i < (2*4*3) ; i++){ *pus++ = 0; } } }//observation if() } // for(i_num_packet) } i_flag = app_NextBlock( Gd_N_HEPE, Gd_D_HEPE, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID &t_blockInfo // [OUTPUT] Block info ); if( i_flag != 0 ) break; else{ Gui_TLMm_blockTime[Gd_N_HEPE] = t_blockInfo.ui_createTime; } if(us_number_process_packet > 0) uc_number_process_block++; //パケット中に有効データがあったら、処理ブロック数を増やす 2013.03.25 } // for(i_numNewBlock) return; } void app03_HEPI( unsigned int ui_sunpulseCnt ) { // unsigned char uc_nodeId = Gd_N_HEPI; // data: HEPI // unsigned char uc_dataId = 0; // data: HEPI // unsigned char uc_headId = Gd_N_HEPI; // data: HEPI // app03_TlmDump( uc_nodeId, uc_dataId, uc_headId ); // Max-1000B(M) / 256B(L) packet dump int i_bufId; int i_numNewBlock; int i_flag; int i_num_packet; int i,j,k; unsigned int ui_timeData; unsigned int ui_HEPI_TI=0; unsigned short us_HEPI_cnt[10]; M_T_BLOCK_INFO t_blockInfo; unsigned char uc_HEPI_packet_format = 0; unsigned char uc_sector_num; unsigned char uc_ASIC_ID; unsigned char uc_number_process_block =0; unsigned short us_number_process_packet =0; unsigned char uc_HEPI_mass; unsigned char uc_ion_data_cnt; unsigned char uc_event_ch; unsigned char *puc; double d_HEPI_v,d_HEPI_t; double d_HEPI_mass_H_L,d_HEPI_mass_H_H; double d_HEPI_mass_HE_L,d_HEPI_mass_HE_H; double d_HEPI_mass_O_L,d_HEPI_mass_O_H; double d_HEPI_mass_Na_L,d_HEPI_mass_Na_H; double d_HEPI_mass_K_L,d_HEPI_mass_K_H; double d_HEPI_mass_Fe_L,d_HEPI_mass_Fe_H; double d_HEPI_energy; // --------------------------------------------------------------- // -- Set at the buffer with the oldest non-processed block -- // 未処理ブロックの Buffer-ID を求める. // i_bufId には Buffer-ID (0:Long, 1:Short, -1:no data) が返る. i_bufId = app_CheckNonProcBlock( Gd_N_HEPI, Gd_D_HEPI, // [INPUT] Node/Data ID Gui_TLMm_blockTime[Gd_N_HEPI], // [INPUT] TI of Processed Block &ui_timeData // [OUTPUT] TI of Newest Block in the selected buffer ); // i_bufId が no data の場合,処理はここで終了. if( i_bufId < 0 ) return; // -- Set at the oldest non-processed block -- // 未処理ブロック数を求める. // i_numNewBlock にブロック数が返る.負の数が返った場合はデータ無し(エラー) i_numNewBlock = app_SetNonProcBlock( Gd_N_HEPI, Gd_D_HEPI, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID Gui_TLMm_blockTime[Gd_N_HEPI], // [INPUT] TI of Processed Block &t_blockInfo // [OUTPUT] Block info ); // 未処理ブロックが一つも無い場合,i_bufId と共に求めたブロックの最新TIを, // 次回参照される処理済みブロックTIとして上書きして終了. if( i_numNewBlock < 1 ){ Gui_TLMm_blockTime[Gd_N_HEPI] = ui_timeData; return; } // データ読み出し // ========================================================== // Number of Packet // HEPI // 1sec: // 42 bytes /event 2016byte/packet // 34 packets / Block (HEPEで生成されるのは32packets) // // Calibration data // 52 bytes(ASIC) ただし、32秒で先が生成するので、 //         CAL中はほとんどが無効データ // // ========================================================== // 各未処理ブロックごとに処理する for( i=0, uc_number_process_block=0; i Gui_TLMm_blockTime[Gd_N_HEPI] && t_blockInfo.i_replyNum > 0 && t_blockInfo.c_invalidFlg == 0 ){ // 各パケット毎の処理 i_num_packet = t_blockInfo.i_replyNum; us_number_process_packet = 0; // 2013.03.25 for( j=0; j 2) uc_event_ch -=3; us_HEPI_cnt[5] = G03uc_data[18+uc_event_ch*2+42*uc_ion_data_cnt]&0x3F; us_HEPI_cnt[5] <<=+8; us_HEPI_cnt[5] += G03uc_data[19+uc_event_ch*2+42*uc_ion_data_cnt]; d_HEPI_energy = (double)us_HEPI_cnt[5]*1.0+0.001; // Mass calcuration if( (double)us_HEPI_cnt[5] >0.0 && (double)us_HEPI_cnt[6] > 0.0 ){ d_HEPI_v = 1.0/((double)us_HEPI_cnt[5]+0.00001); d_HEPI_t = app_math_sqrt((double)us_HEPI_cnt[6]); d_HEPI_mass_H_L = -0.0043067 +0.00684*d_HEPI_t -0.00030717*d_HEPI_t*d_HEPI_t +8.3963e-6*d_HEPI_t*d_HEPI_t*d_HEPI_t -9.0381e-8*d_HEPI_t*d_HEPI_t*d_HEPI_t*d_HEPI_t; d_HEPI_mass_H_H = -0.0043067 +0.00684*d_HEPI_t -0.00030717*d_HEPI_t*d_HEPI_t +8.3963e-6*d_HEPI_t*d_HEPI_t*d_HEPI_t -9.0381e-8*d_HEPI_t*d_HEPI_t*d_HEPI_t*d_HEPI_t; d_HEPI_mass_HE_L = -0.0043067 +0.00684*d_HEPI_t -0.00030717*d_HEPI_t*d_HEPI_t +8.3963e-6*d_HEPI_t*d_HEPI_t*d_HEPI_t -9.0381e-8*d_HEPI_t*d_HEPI_t*d_HEPI_t*d_HEPI_t; d_HEPI_mass_HE_H = -0.0043067 +0.00684*d_HEPI_t -0.00030717*d_HEPI_t*d_HEPI_t +8.3963e-6*d_HEPI_t*d_HEPI_t*d_HEPI_t -9.0381e-8*d_HEPI_t*d_HEPI_t*d_HEPI_t*d_HEPI_t; d_HEPI_mass_O_L = -0.0043067 +0.00684*d_HEPI_t -0.00030717*d_HEPI_t*d_HEPI_t +8.3963e-6*d_HEPI_t*d_HEPI_t*d_HEPI_t -9.0381e-8*d_HEPI_t*d_HEPI_t*d_HEPI_t*d_HEPI_t; d_HEPI_mass_O_H = -0.0043067 +0.00684*d_HEPI_t -0.00030717*d_HEPI_t*d_HEPI_t +8.3963e-6*d_HEPI_t*d_HEPI_t*d_HEPI_t -9.0381e-8*d_HEPI_t*d_HEPI_t*d_HEPI_t*d_HEPI_t; d_HEPI_mass_Na_L = -0.0043067 +0.00684*d_HEPI_t -0.00030717*d_HEPI_t*d_HEPI_t +8.3963e-6*d_HEPI_t*d_HEPI_t*d_HEPI_t -9.0381e-8*d_HEPI_t*d_HEPI_t*d_HEPI_t*d_HEPI_t; d_HEPI_mass_Na_H = -0.0043067 +0.00684*d_HEPI_t -0.00030717*d_HEPI_t*d_HEPI_t +8.3963e-6*d_HEPI_t*d_HEPI_t*d_HEPI_t -9.0381e-8*d_HEPI_t*d_HEPI_t*d_HEPI_t*d_HEPI_t; d_HEPI_mass_K_L = -0.0043067 +0.00684*d_HEPI_t -0.00030717*d_HEPI_t*d_HEPI_t +8.3963e-6*d_HEPI_t*d_HEPI_t*d_HEPI_t -9.0381e-8*d_HEPI_t*d_HEPI_t*d_HEPI_t*d_HEPI_t; d_HEPI_mass_K_H = -0.0043067 +0.00684*d_HEPI_t -0.00030717*d_HEPI_t*d_HEPI_t +8.3963e-6*d_HEPI_t*d_HEPI_t*d_HEPI_t -9.0381e-8*d_HEPI_t*d_HEPI_t*d_HEPI_t*d_HEPI_t; d_HEPI_mass_Fe_L = -0.0043067 +0.00684*d_HEPI_t -0.00030717*d_HEPI_t*d_HEPI_t +8.3963e-6*d_HEPI_t*d_HEPI_t*d_HEPI_t -9.0381e-8*d_HEPI_t*d_HEPI_t*d_HEPI_t*d_HEPI_t; d_HEPI_mass_Fe_H = -0.0043067 +0.00684*d_HEPI_t -0.00030717*d_HEPI_t*d_HEPI_t +8.3963e-6*d_HEPI_t*d_HEPI_t*d_HEPI_t -9.0381e-8*d_HEPI_t*d_HEPI_t*d_HEPI_t*d_HEPI_t; // mass compare if(d_HEPI_mass_H_L < d_HEPI_v && d_HEPI_v > 1) & 0xE0; uc_ASIC_ID = (G03uc_data[12+5+42*uc_ion_data_cnt] ) & 0x0F; // // L-modeデータ生成 // if(d_HEPI_energy < 100.0){ if(uc_HEPI_mass==0){ Guc_HEPI_L_mode_buff[(uc_ASIC_ID/3)][(uc_sector_num)/8][0][0]++; }else if(uc_HEPI_mass==1){ Guc_HEPI_L_mode_buff[(uc_ASIC_ID/3)][(uc_sector_num)/8][1][0]++; } }else if(d_HEPI_energy >= 100.0 && d_HEPI_energy <250.0){ if(uc_HEPI_mass==0){ Guc_HEPI_L_mode_buff[(uc_ASIC_ID/3)][(uc_sector_num)/8][0][1]++; }else if(uc_HEPI_mass==1){ Guc_HEPI_L_mode_buff[(uc_ASIC_ID/3)][(uc_sector_num)/8][1][1]++; } }else if(d_HEPI_energy >= 250.0 && d_HEPI_energy <500.0){ if(uc_HEPI_mass==0){ Guc_HEPI_L_mode_buff[(uc_ASIC_ID/3)][(uc_sector_num)/8][0][2]++; }else if(uc_HEPI_mass==1){ Guc_HEPI_L_mode_buff[(uc_ASIC_ID/3)][(uc_sector_num)/8][1][2]++; } }else if(d_HEPI_energy >= 500.0 ){ if(uc_HEPI_mass==0){ Guc_HEPI_L_mode_buff[(uc_ASIC_ID/3)][(uc_sector_num)/8][0][3]++; }else if(uc_HEPI_mass==1){ Guc_HEPI_L_mode_buff[(uc_ASIC_ID/3)][(uc_sector_num)/8][1][3]++; } } // // M-modeデータ生成 // if(d_HEPI_energy < 100.0){ if(uc_HEPI_mass==0){ Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][0][0]++; }else if(uc_HEPI_mass==1){ Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][1][0]++; }else if(uc_HEPI_mass==2){ Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][2][0]++; // }else if(uc_HEPI_mass==3||uc_HEPI_mass==4){ // Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][3][0]++; } }else if(d_HEPI_energy >= 100.0 && d_HEPI_energy <250.0){ if(uc_HEPI_mass==0){ Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][0][1]++; }else if(uc_HEPI_mass==1){ Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][1][1]++; }else if(uc_HEPI_mass==2){ Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][2][1]++; // }else if(uc_HEPI_mass==3||uc_HEPI_mass==4){ // Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][3][1]++; } }else if(d_HEPI_energy >= 250.0 && d_HEPI_energy <500.0){ if(uc_HEPI_mass==0){ Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][0][2]++; }else if(uc_HEPI_mass==1){ Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][1][2]++; }else if(uc_HEPI_mass==2){ Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][2][2]++; // }else if(uc_HEPI_mass==3||uc_HEPI_mass==4){ // Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][3][2]++; } }else if(d_HEPI_energy >= 500.0 ){ if(uc_HEPI_mass==0){ Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][0][3]++; }else if(uc_HEPI_mass==1){ Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][1][3]++; }else if(uc_HEPI_mass==2){ Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][2][3]++; // }else if(uc_HEPI_mass==3||uc_HEPI_mass==4){ // Guc_HEPI_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/8][3][3]++; } } } } //packet }// observation data } } // TLM_Lに15パケットデータ分積んだらDRへ // //TLM-L if(Guc_HEPI_TLM_stack_num < 16){ memcpy(&Guc_HEPI_TLM_L_buff[0], &G03uc_data[12],4); memcpy(&Guc_HEPI_TLM_L_buff[4+(unsigned char)(Guc_HEPI_TLM_stack_num/8)*64], &Guc_HEPI_L_mode_buff[0][0][0][0],64); Guc_HEPI_TLM_stack_num++; puc = &(Guc_HEPI_L_mode_buff[0][0][0][0]); for(i = 0; i < (2*4*2*4) ; i++){ *puc++ = 0; } } // TLM-M memcpy(&Guc_HEPI_TLM_M_buff[0], &G03uc_data[12],4); memcpy(&Guc_HEPI_TLM_M_buff[4], &Guc_HEPI_M_mode_buff[0][0][0][0],288); //20131203 puc = &(Guc_HEPI_M_mode_buff[0][0][0][0]); for(i = 0; i < (6*4*3*4) ; i++){ //20131203 *puc++ = 0; } // TLM_Lに15パケットデータ分積んだらDRへ // if(Guc_HEPI_TLM_stack_num >= 15){ app3_HEP_putTLM( 1, // [INPUT] Packet-ID 1 ui_HEPI_TI, // [INPUT] TI 2, // [INPUT] L-mode data Guc_HEPI_TLM_L_buff, // [INPUT] Packet data 132, // [INPUT] Packet size // 20131203 1 // HEP-ion ); Guc_HEPI_TLM_stack_num=0; } // TLM_M app3_HEP_putTLM( 1, // [INPUT] Packet-ID 1 ui_HEPI_TI, // [INPUT] TI 3, // [INPUT] M-mode data Guc_HEPI_TLM_M_buff, // [INPUT] Packet data 288+4, // [INPUT] Packet size //20131203 1 // HEP-ion ); i_flag = app_NextBlock( Gd_N_HEPI, Gd_D_HEPI, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID &t_blockInfo // [OUTPUT] Block info ); if( i_flag != 0 ) break; else{ Gui_TLMm_blockTime[Gd_N_HEPI] = t_blockInfo.ui_createTime; } if(us_number_process_packet !=0 ) uc_number_process_block++; } // for(i_numNewBlock) return; } /********************************************************************* app3_EWOE_putTLM ---------------------------------------------------------------------- [INPUT] int i_pacId : Packet ID (User def.: 0x00-0xff) unsigned int ui_dataTi : TI int i_drId : DR-ID (0:HK, 1:OS, 2:L, 3:M, 4-9:H(0-5)) unsigned char uc_data[] : Data (< 0x1E00 Bytes) int i_dataSize : Data Size (Byte) *********************************************************************/ void app3_HEP_putTLM( int i_pacId, // [INPUT] Packet ID unsigned int ui_dataTi, // [INPUT] TI int i_drId, // [INPUT] DR-ID unsigned char uc_data[], // [INPUT] Data int i_dataSize, // [INPUT] Data Size int ion_flag // [INPUT] ele/ion flag; ele=0, ion=1 ) { int i_flag; if(ion_flag==0){ i_flag = app_PutTlm( 3, // [INPUT] APP-NUM: 3 Gd_N_HEPE, 0, // [INPUT] Node/Data ID Gd_N_HEPE, // [INPUT] Header ID (for PID-ID, CAT-ID settings) i_drId, // [INPUT] DR-ID (for CAT-ID) (0:HK, 1:OS, 2:L, 3:M, 4-9:H(0-5)) Guc_TLMm_cmp[Gd_N_HEPE], // [INPUT] Comp mode (0:non, 1:JPEG-rev, 2:JPEG-nonrev, 3:After-User-Comp) i_pacId, // [INPUT] Packet ID (User def.: 0x00-0xff) ui_dataTi, // [INPUT] Data TI (User def.: 0x00000000-0xffffffff) Guc_cmdDummy, // [INPUT] Comment (User def., < 128B) 0, // [INPUT] Comment size (User def.) uc_data, // [INPUT] Data ( < 0x1E00 ) i_dataSize // [INPUT] Data size ); }else{ i_flag = app_PutTlm( 3, // [INPUT] APP-NUM: 3 Gd_N_HEPI, 0, // [INPUT] Node/Data ID Gd_N_HEPI, // [INPUT] Header ID (for PID-ID, CAT-ID settings) i_drId, // [INPUT] DR-ID (for CAT-ID) (0:HK, 1:OS, 2:L, 3:M, 4-9:H(0-5)) Guc_TLMm_cmp[Gd_N_HEPI], // [INPUT] Comp mode (0:non, 1:JPEG-rev, 2:JPEG-nonrev, 3:After-User-Comp) i_pacId, // [INPUT] Packet ID (User def.: 0x00-0xff) ui_dataTi, // [INPUT] Data TI (User def.: 0x00000000-0xffffffff) Guc_cmdDummy, // [INPUT] Comment (User def., < 128B) 0, // [INPUT] Comment size (User def.) uc_data, // [INPUT] Data ( < 0x1E00 ) i_dataSize // [INPUT] Data size ); } return; } // app3_HEPE_putTLM() ここまで