/******************************************************************************* * モジュール名称 :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. * * 2016/11/18 T.T. * * 2017/03/29 T.T. * * 2018/01/08 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]; } */ // #if(1) // Energy(16bin-->6bin) counter :ASIC-ID/SECTOR# 201611 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) + (unsigned short)(G03uc_data[48+42*uc_ele_data_cnt]&0x1F); // 20181010 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]; us_HEPE_cnt[5] += (unsigned short)G03uc_data[49+42*uc_ele_data_cnt]; // 20181010 // #endif // // L-modeデータ生成 // for(k=0;k<3;k++){ if(uc_ASIC_ID > 9 ) uc_ASIC_ID=9; // 201611 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 > 9 ) uc_ASIC_ID=9; // 201611 for(k=0;k<2;k++){ Gus_HEPE_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/4][k] += us_HEPE_cnt[k]; } for(k=1;k<3;k++){ Gus_HEPE_M_mode_buff[(uc_ASIC_ID)][(uc_sector_num)/4][k+1] += (us_HEPE_cnt[k*2]+us_HEPE_cnt[k*2+1]); } // 10*8*4*2 = 640bytes //201611 }// 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],640); //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 644, // [INPUT] Packet size // 20131203 640+4 0 // HEP-ele ); pus = &(Gus_HEPE_M_mode_buff[0][0][0]); for(i = 0; i < (10*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 // Guc_HEPI_TLM_stack_num++; // 201611 } // TLM_Lに15スピン積分したらDRへ // // if(Guc_HEPE_TLM_stack_num >= 15){ if(Guc_HEPE_TLM_stack_num >= Guc_HEP_TLM_stack_num_max ){// 20180108 変数に変更 Guc_HEP_TLM_stack_num_max 通常15、変更時4 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; M_T_BLOCK_INFO t_blockInfo; unsigned char uc_HEPI_packet_format = 0; unsigned char uc_sector_num; unsigned char uc_number_process_block =0; unsigned short us_number_process_packet =0; unsigned char uc_ion_data_cnt; unsigned char uc_event_ch; unsigned char *puc; unsigned int tlm_TOF_flg=0; unsigned short us_HEPI_ADC; unsigned int ui_tmp,ui_tmp2,ui_tmp3; // --------------------------------------------------------------- // -- 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> 1) & 0x1F; // 20181010 us_HEPI_ADC = G03uc_data[18+42*uc_ion_data_cnt] & 0x3F;// 20181010 us_HEPI_ADC <<=+8; us_HEPI_ADC += G03uc_data[19+42*uc_ion_data_cnt];// 20181010 // Energy 14bit --> 5bin // us_HEPI_cnt[(us_HEPI_ADC/2400)]++; // // L-modeデータ生成 // ui_tmp=uc_event_ch/3; if(ui_tmp>1) ui_tmp=1; ui_tmp2=(uc_sector_num)/8; if(ui_tmp2>3) ui_tmp2=3; ui_tmp3=(us_HEPI_ADC/4800); if(ui_tmp3>3) ui_tmp3=3; Guc_HEPI_L_mode_buff[ui_tmp][ui_tmp2][ui_tmp3]++; // M-modeデータ生成 // ui_tmp=uc_event_ch; if(ui_tmp>5) ui_tmp=5; ui_tmp2=(uc_sector_num)/4; if(ui_tmp2>7) ui_tmp2=7; ui_tmp3=(us_HEPI_ADC/2400); if(ui_tmp3>7) ui_tmp3=7; Guc_HEPI_M_mode_buff[ui_tmp][ui_tmp2][ui_tmp3]++; } //************** TOF mode ********************************************* //********************************************************************* if( (G03uc_data[16+42*uc_ion_data_cnt]&0xFF)== 0x3F && (G03uc_data[17+42*uc_ion_data_cnt]&0xFF)==0xFF ){ // TOF mode 20180108 change // uc_event_ch = G03uc_data[5+42*uc_ion_data_cnt]&0x0F; //ASIC ID // uc_sector_num = (G03uc_data[4+42*uc_ion_data_cnt] >> 1) & 0x1F; tlm_TOF_flg=1; for(k=0;k<6;k++){ us_HEPI_ADC = G03uc_data[38+k*2+42*uc_ion_data_cnt] & 0x0F; // 20180110 us_HEPI_ADC <<=+8; us_HEPI_ADC += G03uc_data[39+k*2+42*uc_ion_data_cnt]; // 20180110 // // L-modeデータ生成 // ui_tmp=us_HEPI_ADC/512; if(ui_tmp > 4) ui_tmp=3; Guc_HEPI_L_TOF_mode_buff[k][ui_tmp]++; // M-modeデータ生成 // ui_tmp=us_HEPI_ADC/256; if(ui_tmp > 8) ui_tmp=7; Guc_HEPI_M_TOF_mode_buff[k][ui_tmp]++; } } // ****************** TOF-SSD mode; mass calc. ************************ // ******************************************************************** if( (G03uc_data[16+42*uc_ion_data_cnt]&0xC0)== 0x80) { // SSD-TOF mode tlm_TOF_flg=1; Guc_HEPI_L_TOF_mode_buff[0][0]=0x02; Guc_HEPI_M_TOF_mode_buff[0][0]=0x04; } } //packet }// observation data } } // TLM_Lに15パケットデータ分積んだらDRへ // //TLM-L if(tlm_TOF_flg==1){ if(Guc_HEPI_TLM_stack_num < 16){ // 15Spin integratino 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)*24], &Guc_HEPI_L_TOF_mode_buff[0][0],24); // Guc_HEPI_TLM_stack_num++; // 201611 } }else{ if(Guc_HEPI_TLM_stack_num < 16){ // 15Spin integratino 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)*32], &Guc_HEPI_L_mode_buff[0][0][0],32); // Guc_HEPI_TLM_stack_num++; // 201611 } } // TLM-M if(tlm_TOF_flg==1){ memcpy(&Guc_HEPI_TLM_M_buff[0], &G03uc_data[12],4); memcpy(&Guc_HEPI_TLM_M_buff[4], &Guc_HEPI_M_TOF_mode_buff[0][0],48); //20131203 puc = &(Guc_HEPI_M_TOF_mode_buff[0][0]); for(i = 0; i < (6*8) ; i++){ //20131203 *puc++ = 0; } }else{ 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],384); //20131203 puc = &(Guc_HEPI_M_mode_buff[0][0][0]); for(i = 0; i < (6*8*8) ; i++){ //20131203 *puc++ = 0; } } // TLM_L 15Spin積分でDRへ // if(Guc_HEPI_TLM_stack_num >= Guc_HEP_TLM_stack_num_max ){ // 20180108 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 72, // [INPUT] Packet size // 20180110 1 // HEP-ion ); puc = &(Guc_HEPI_L_TOF_mode_buff[0][0]); // 20180110 for(i = 0; i < (6*4) ; i++){ *puc++ = 0; } puc = &(Guc_HEPI_L_mode_buff[0][0][0]); for(i = 0; i < (4*2*4) ; i++){ *puc++ = 0; } 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 (384+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) Guc_HEPI_TLM_stack_num++; // 20180110 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() ここまで