/******************************************************************************* * モジュール名称 :app14 Mission TLM (L&M) PI tasks * * モジュールラベル :app14_PIs * * タスク区分 :Application-04 EWO task for Mission TLM (L&M) * * 機能 : * * コーリングシーケンス:void app14_(PI) * * 引数 :なし * * 戻り値 :なし * * 使用上の注意 :グローバル変数はアプリケーション01でまとめて初期化 * * エラー処理 :なし * * 注意 : EDIT権限は、EWO組 * * 作成日・作成者 :2011/05/25 Y.Tamura * * 2012/12/19 T.Imachi (modified) * *******************************************************************************/ #define __APP_WFC_OFA__ #define __APP_WFC_AM2P__ #include "app_common.h" #include "app_EWO.h" #include "dpu_api_proto.h" // *** EWO: local*** #define d_AM2P_pacSize 2058 // AM2P Packet size: 127 packets max [] (MAX:262144B) #define BITRATE_L 2 #define BITRATE_M 3 // EWO Macro int ready_EWOB_head(unsigned int ,unsigned int, M_T_BLOCK_INFO ,int ); void app14_CAL_putTLM( int, unsigned int, int, unsigned char *, int); ///Value of PI static const double __PI=3.1415926535897932384626433832795; ///Look Up Table for the square static const short pow_2[10]={1,2,4,8,16,32,64,128,256,512}; //======================================================================== // EWO CAL //======================================================================== void app14_EWO_CAL( unsigned int ui_sunpulseCnt ) { // === BLOCK read === int i_bufId; // Buffer ID int i_numNewBlock; // Number of blocks with new data unsigned int ui_timeData; // Processing data TI M_T_BLOCK_INFO t_blockInfo; /* **** M_T_BLOCK_INFO メンバ ****** unsigned int ui_createTime Block 生成開始衛星時刻 (LSB=1.953ms) int i_replyNum Block 登録 read-reply 個数 char c_invalidFlg Block 内データ異常の有無 (0:異常なし, 1:異常あり) unsinged int ui_blockIndex LongBuffer/ShortBuffer 内 Block 特定番号 ******************************** */ // == Time Index == M_T_TIME_INFO t_timeInfo; // === Data === int i_dataId; // EWOE-Header :: DataID (0:MS, 1:SW) int i_dataSize; // EWOE-Header :: Data Size unsigned int ui_CAL_TI0; //各partでの統一TI unsigned int ui_CAL_TI; // EWOE-Header :: TI unsigned int ui_CAL_TI1; // TI unsigned char uc_CAL_TI2; // EWO count // ミッションパケット付帯データ static EWO_PACKET_INFO s_packet_info_EWO; // ミッションパケット用バッファのライトポインタ static unsigned char *uc_wp_EWO; // AM2P short *s_wpEWO_signal; short *s_wpEWOB_signal; /*---------------------------------*/ //short *s_wpEWOBx_signal; short *s_wpEWOBy_signal; short *s_wpEWOBz_signal; int i_shiftcount = 0; int i_CAL_packetSize[3]; int i_EWO_nTraitment; int i_EWOB_nTrait; /*-------------------------------------------*/ int i_CAL_signal_size; int i_CAL_shiftpoint; int i_CAL_devide; unsigned int ui_CAL_current_time; unsigned int ui_EWOE_blockTI; // === General === int i, j, k, l,m; // ***** REMOVED 110723 YK ***** int i_EWO; int i_num; int i_counter = 0; int i_count_flag = 0; int i_flag; int i_flag2; int i_old_j; unsigned int ui_EWO_counter; // unsigned short us_total; // ***** REMOVED 110723 YK ***** int i_CALmode;//HF:0,VLF:1 // unsigned short u; // ***** REMOVED 110723 YK ***** long long ll_tempx,ll_tempy,ll_tempz; // ***** REMOVED 110723 YK ***** // if( G14uc_WFC_CAL_stage == 0 || G14uc_AM2P_stage != 0 ) return; if( G14uc_WFC_CAL_stage == 0 ) return; // デッドロック防止のため、禁止条件緩和 // Appended by T.Imachi, 2011.10.09 ui_CAL_TI0 = 0; ui_EWOE_blockTI = 0; i_dataId = 0; s_wpEWO_signal = &G14s_AM2P_signal[0]; s_wpEWOB_signal = &G14s_AM2P_signal[0]; s_wpEWOBy_signal = &G14s_AM2P_signal[0]; s_wpEWOBz_signal = &G14s_AM2P_signal[0]; //EWO-EとEWO-Bの2回のループ for(i_EWO = 0;i_EWO < 2;i_EWO ++){ i_CAL_signal_size = 0; i_CAL_shiftpoint = (int)G14uc_AM2P_shift; for(k = 0;k < 70000;k ++) G14s_AM2P_signal[k] = 0; if(i_EWO == 0){//EWO-E //i_CAL_shiftpoint = (int)G14uc_AM2P_shift; i_CAL_devide = 2; // -- Set at the buffer with the oldest non-processed block -- i_bufId = app_CheckNonProcBlock( Gd_N_EWO, Gd_D_AM2P, // [INPUT] Node/Data ID Gui_TLMm_blockTime[Gd_N_AM2P], // [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 = app_SetNonProcBlock( Gd_N_EWO, Gd_D_AM2P, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID Gui_TLMm_blockTime[Gd_N_AM2P], // [INPUT] IT of Processed Block &t_blockInfo // [OUTPUT] Block info ); ui_EWOE_blockTI = Gui_TLMm_blockTime[Gd_N_AM2P]; if( i_numNewBlock < 1 ){ Gui_TLMm_blockTime[Gd_N_AM2P] = ui_timeData; return; } }else{//EWO-B //i_CAL_shiftpoint = (int)G14uc_AM2P_shift; i_CAL_devide = 6; // -- Set at the buffer with the oldest non-processed block -- i_bufId = app_CheckNonProcBlock( Gd_N_EWO, Gd_D_EWOB, // [INPUT] Node/Data ID ui_EWOE_blockTI, // [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 = app_SetNonProcBlock( Gd_N_EWO, Gd_D_EWOB, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID ui_EWOE_blockTI, // [INPUT] IT of Processed Block &t_blockInfo // [OUTPUT] Block info ); i_flag = app_NextBlock( Gd_N_EWO, Gd_D_EWOB, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID &t_blockInfo // [OUTPUT] Block info ); if( i_numNewBlock < 1 ){ Gui_TLMm_blockTime[Gd_N_EWOB] = ui_timeData; return; } } //0x0048は3chEWOB用 if((0x0030 & G14s_AM2P_TCWord) == 0x0030){ i_CALmode = 0;//HF i_EWOB_nTrait = 93; } else{ i_CALmode = 1;//VLF i_EWOB_nTrait = 24; i_CAL_devide = 4; if(i_EWO == 1){ G14s_AM2P_TCWord = 0x0048; i_CAL_devide = 6; } } /*******時間計測用:TMP-START**********/ //dpu_getTime(&t_timeInfo); Gui_dummy = (t_timeInfo.ui_currentTime); // unsigned int ui_currentTime; 衛星時刻(1LSB=1.953ms) /*******TIME management:TMP-END**********/ // -- Calculate required packet size -- if(i_CALmode == 0) i_CAL_signal_size = -i_CAL_shiftpoint*2; i_old_j = 0; i_num = 0; //EWOBのデータの頭を探す if(i_EWO == 1){ for(k = 0;k < i_numNewBlock;k ++){ i_old_j = ready_EWOB_head(ui_EWO_counter,ui_CAL_TI0,t_blockInfo,i_bufId); if(i_old_j > 0) break; i_flag = app_NextBlock( Gd_N_EWO, Gd_D_EWOB, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID &t_blockInfo // [OUTPUT] Block info ); } } //part1~part2HFCAL:~part2 VLFCAL:~part1 for( l=1; l<=2; l++ ){ i_CAL_packetSize[l] = app14_AM2P_Packet_Size( l, G14s_AM2P_TCWord ); if(i_CAL_packetSize[l] == 0) break; i_flag2 = 0; i = 0; i_counter = 0; i_shiftcount = 0; if(i_CALmode == 1 && l == 1) i_num = -i_CAL_shiftpoint; // -- Fetch AM2P data --/ /*---------------------------------*/ if(i_CALmode == 0){//EWO HF if(l == 1) s_wpEWO_signal = &G14s_AM2P_signal[0]; else s_wpEWO_signal = &G14s_AM2P_signal[i_CAL_shiftpoint*2]; if(i_flag2 == 0 && l >= 2){ for(k = 0;k < i_CAL_signal_size;k ++) *s_wpEWO_signal++ = G14s_AM2P_signal[i_CAL_packetSize[l-1] + k + i_CAL_shiftpoint*2]; } } else{//EWO VLFの場合 s_wpEWOB_signal = &G14s_AM2P_signal[0]; s_wpEWOBy_signal = &G14s_AM2P_signal[20000]; s_wpEWOBz_signal = &G14s_AM2P_signal[40000]; } if(i_EWO == 1 && i_CALmode == 0){//EWOB HF if(l == 1) s_wpEWOB_signal = &G14s_AM2P_signal[45000]; //Bzのデータを45000番目以降に格納(part1) else{ s_wpEWOB_signal = &G14s_AM2P_signal[33000]; //Bzのデータを33000番目以降に格納(part2) for(k = 0;k < 20480+i_CAL_signal_size/2;k ++){ *s_wpEWOB_signal++ = G14s_AM2P_signal[45000 + k + i_CAL_shiftpoint]; //part1でのBzのデータを移動 } } } //} while(i_CAL_signal_size < i_CAL_packetSize[l]){ i++; if(i > i_numNewBlock) break; //EWO-Bを考える場合はどうするか if( t_blockInfo.ui_createTime > Gui_TLMm_blockTime[Gd_N_AM2P] && t_blockInfo.i_replyNum > 0 && t_blockInfo.c_invalidFlg == 0){ if(i_EWO == 0) i_flag = app_GetPacket( 3, // [INPUT] App-No.: 3 Gd_N_EWO, Gd_D_AM2P, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID &t_blockInfo, // [INPUT] Block info 0, // [INPUT] Packet No. (0:先頭) 0, // [INPUT] OFFSET 読み出し開始番地 32, // [INPUT] 読み出しデータ長 G14uc_data // [OUTPUT] 読み出しデータ収納バッファ ); else //いらないかもしれない i_flag = app_GetPacket( 3, // [INPUT] App-No.: 3 Gd_N_EWO, Gd_D_EWOB, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID &t_blockInfo, // [INPUT] Block info 0, // [INPUT] Packet No. (0:先頭) 0, // [INPUT] OFFSET 読み出し開始番地 32, // [INPUT] 読み出しデータ長 G14uc_data // [OUTPUT] 読み出しデータ収納バッファ ); if( i_flag != 0 ) break; for( j=i_old_j; j < t_blockInfo.i_replyNum; j++ ){ if( i_CAL_signal_size < i_CAL_packetSize[l]){ // 情報取得 if(i_EWO == 0) i_flag = app_GetPacket( 3, // [INPUT] App-No.: 3 Gd_N_EWO, Gd_D_AM2P, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID &t_blockInfo, // [INPUT] Block info j, // [INPUT] Packet No. (0:先頭) 0, // [INPUT] OFFSET 読み出し開始番地 136, // [INPUT] 読み出しデータ長 G14uc_data // [OUTPUT] 読み出しデータ収納バッファ ); else i_flag = app_GetPacket( 3, // [INPUT] App-No.: 3 Gd_N_EWO, Gd_D_EWOB, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID &t_blockInfo, // [INPUT] Block info j, // [INPUT] Packet No. (0:先頭) 0, // [INPUT] OFFSET 読み出し開始番地 136, // [INPUT] 読み出しデータ長 G14uc_data // [OUTPUT] 読み出しデータ収納バッファ ); if(i_EWO == 0){ if( ( G14uc_data[22] != 0x10 && G14uc_data[22] != 0x11 ) || G14uc_data[23] != 0 ) continue; } // トランスミッショントリガ送出前後のパケットを除去 // データ途中10バイトが全て 0xff でないなら,パケットを処理 if( G14uc_data[126] != 0xff || G14uc_data[127] != 0xff || G14uc_data[128] != 0xff || G14uc_data[129] != 0xff || G14uc_data[130] != 0xff || G14uc_data[131] != 0xff || G14uc_data[132] != 0xff || G14uc_data[133] != 0xff || G14uc_data[134] != 0xff || G14uc_data[135] != 0xff ){ // 実データ読み出し if(i_EWO == 0){ i_flag = app_GetPacket( 3, // [INPUT] App-No.: 3 Gd_N_EWO, Gd_D_AM2P, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID &t_blockInfo, // [INPUT] Block info j, // [INPUT] Packet No. (0:先頭) 0, // [INPUT] OFFSET 読み出し開始番地 2080, // [INPUT] 読み出しデータ長 G14uc_data // [OUTPUT] 読み出しデータ収納バッファ ); if(l == 1 && i_count_flag == 0){ ui_EWO_counter = (G14uc_data[20] << 8) + G14uc_data[21]; i_count_flag = 1; } }else{ i_flag = app_GetPacket( 3, // [INPUT] App-No.: 3 Gd_N_EWO, Gd_D_EWOB, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID &t_blockInfo, // [INPUT] Block info j, // [INPUT] Packet No. (0:先頭) 0, // [INPUT] OFFSET 読み出し開始番地 3104, // [INPUT] 読み出しデータ長 G14uc_data // [OUTPUT] 読み出しデータ収納バッファ ); } i_dataId = G14uc_data[22]; i_dataSize = ( G14uc_data[24] << 8 ) + G14uc_data[25]; ui_CAL_TI1 = 0; uc_CAL_TI2 = ( G14uc_data[20] << 4 ) + ( G14uc_data[21] >> 4 ); for( k=16; k<=19; k++ ){ ui_CAL_TI1 <<= 8; ui_CAL_TI1 += G14uc_data[k]; } ui_CAL_TI = ui_CAL_TI1 + uc_CAL_TI2; if(i_EWO == 0 && l == 1 && j == 0) ui_CAL_TI0 = ui_CAL_TI; /*--------------------------------------*/ if(i_EWO == 0 && i_CALmode == 0){//EWOE HF for( k=26; k < i_dataSize + 26; k+=i_CAL_devide ){ *s_wpEWO_signal++ = (short)( ( (unsigned short)G14uc_data[k] << 8 ) + G14uc_data[k + 1] ); if(i_flag2 == 0) i_flag2 = 1; } i_CAL_signal_size += i_dataSize/i_CAL_devide; }else if(i_EWO == 1 && i_CALmode == 0){//EWOB HF for(k = 26;k < i_dataSize+26;k += i_CAL_devide){ *s_wpEWO_signal++ = (short)(((unsigned short)G14uc_data[k] << 8) + G14uc_data[k + 1]); *s_wpEWO_signal++ = (short)(((unsigned short)G14uc_data[k + 2] << 8) + G14uc_data[k + 3]); *s_wpEWOB_signal++ = (short)(((unsigned short)G14uc_data[k + 4] << 8) + G14uc_data[k + 5]); if(i_flag2 == 0) i_flag2 = 1; } i_num += i_dataSize/i_CAL_devide;//512 i_CAL_signal_size += (i_dataSize*2)/i_CAL_devide;//x,yの二つ分のデータ増加量(1024) }else if(i_CALmode == 1){//EWO VLF for(k = 26;k < i_dataSize + 26; k += i_CAL_devide){ if(i_CAL_shiftpoint > i_shiftcount){ i_shiftcount ++; } else{ *s_wpEWOB_signal++ = (short)(((unsigned short)G14uc_data[k] << 8) + G14uc_data[k + 1]); *s_wpEWOBy_signal++ = (short)(((unsigned short)G14uc_data[k + 2] << 8) + G14uc_data[k + 3]); if(i_EWO == 1) *s_wpEWOBz_signal++ = (short)(((unsigned short)G14uc_data[k + 4] << 8) + G14uc_data[k + 5]); } } i_num += i_dataSize/i_CAL_devide;//512 } /*------------------*/ if(i_CALmode == 1){//EWO VLF処理 if(i_num >= 1536){ s_wpEWOB_signal = &G14s_AM2P_signal[i_counter*16]; s_wpEWOBy_signal = &G14s_AM2P_signal[i_counter*16 + 20000]; if(i_EWO == 1) s_wpEWOBz_signal = &G14s_AM2P_signal[i_counter*16 + 40000]; for(k = 0;k < 1536;k += 96){ ll_tempx = 0; ll_tempy = 0; ll_tempz = 0; for(m = k;m < k+96;m ++){ ll_tempx += G14s_AM2P_signal[m + i_counter*16]; ll_tempy += G14s_AM2P_signal[m + i_counter*16 + 20000]; if(i_EWO == 1) ll_tempz += G14s_AM2P_signal[m + i_counter*16 + 40000]; } *s_wpEWOB_signal++ = (short)(ll_tempx/96); *s_wpEWOBy_signal++ = (short)(ll_tempy/96); if(i_EWO == 1) *s_wpEWOBz_signal++ = (short)(ll_tempz/96); } if(i_CAL_shiftpoint > 0)//shift分ズレで余った部分を前に寄せる for(m = 0;m < (512 - i_CAL_shiftpoint);m ++){ *s_wpEWOB_signal++ = G14s_AM2P_signal[m + 1536 + i_counter*16]; *s_wpEWOBy_signal++ = G14s_AM2P_signal[m + 1536 + i_counter*16 + 20000]; if(i_EWO == 1) *s_wpEWOBz_signal++ = G14s_AM2P_signal[m + 1536 + i_counter*16 + 40000]; } i_counter ++; i_num -= 1536; i_CAL_signal_size += (16*i_CAL_devide/2); } } } // end of if } // end of if else break; } // end of for (Packet : for checking 0xff) i_old_j = j; } // end of if /*i_flag = app_NextBlock( Gd_N_EWO, Gd_D_AM2P, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID &t_blockInfo // [OUTPUT] Block info ); if( i_flag ) break;*/ } // end of while (Block) // -- End of fetching AM2P data -- i_CAL_signal_size -= i_CAL_packetSize[l]; if(i_CALmode == 1){ s_wpEWOBy_signal = &G14s_AM2P_signal[2688]; if(i_EWO == 1) s_wpEWOBz_signal = &G14s_AM2P_signal[5376]; for(m = 0;m < 2688;m ++){ *s_wpEWOBy_signal++ = G14s_AM2P_signal[20000 + m]; if(i_EWO == 1) *s_wpEWOBz_signal++ = G14s_AM2P_signal[40000 + m]; } } // -- Traitment -- dpu_getTime(&t_timeInfo); ui_CAL_current_time = (t_timeInfo.ui_currentTime); s_packet_info_EWO.uc_bitrate = BITRATE_L; s_packet_info_EWO.uc_interval = 0; // 【暫定】0: 1sec (bit-L 時) s_packet_info_EWO.uc_ofa_channel = 0; // 【暫定】1: E1 s_packet_info_EWO.i_n_spec_data = 0; // スペクトルデータ点数 /* ************************************************** // テスト用波形ダンプ // 実機用にコメントアウト // Waveform full dump  if(i_EWO == 0) s_packet_info_EWO.uc_data_spec = 0x14; else s_packet_info_EWO.uc_data_spec = 0x15; j = 0; while(j < i_CAL_packetSize[l]){ uc_wp_EWO = app14_EWO_packet_init( G14uc_AM2P_waveform, //パケットバッファのポインタ ui_CAL_TI0, //データ先頭のTI 0x00, //データ先頭のEWOカウンタ &s_packet_info_EWO ); k = 0; while(k < 1024 && j < i_CAL_packetSize[l]){ *uc_wp_EWO++ = (unsigned char)((G14s_AM2P_signal[j+i_CAL_shiftpoint*2*(1-i_CALmode)] & 0xff00) >> 8); *uc_wp_EWO++ = (unsigned char)((G14s_AM2P_signal[j+i_CAL_shiftpoint*2*(1-i_CALmode)] & 0x00ff)); j++; k++; } app14_AM2P_putTLM( i_dataId, ui_CAL_TI0, BITRATE_L, G14uc_AM2P_waveform, k * 2 + 12 ); } s_packet_info_EWO.uc_data_spec = 0x16; //EWOBz HF if(i_EWO == 1 &&i_CALmode == 0 &&l == 2){ u = 0; us_total = 35840; while(u < us_total){ uc_wp_EWO = app14_EWO_packet_init( G14uc_AM2P_waveform, //パケットバッファのポインタ ui_CAL_TI0, //データ先頭のTI 0x00, //データ先頭のEWOカウンタ &s_packet_info_EWO ); k = 0; while(k < 1024 && u < us_total){ *uc_wp_EWO++ = (unsigned char)((G14s_AM2P_signal[33000+u] & 0xff00) >> 8); *uc_wp_EWO++ = (unsigned char)((G14s_AM2P_signal[33000+u] & 0x00ff)); u++; k++; } app14_AM2P_putTLM( i_dataId, ui_CAL_TI0, BITRATE_L, G14uc_AM2P_waveform, k * 2 + 12 ); } } // wave form full dump ここまで // テスト用波形ダンプ // 実機用コメントアウト ここまで ************************************************** */ // AM2P Process //if(i_CALmode == 0) i_EWO_nTraitment = app14_AM2P_Traitement_AM2P( G14s_AM2P_TCWord, ui_CAL_TI0, &G14s_AM2P_signal[i_CAL_shiftpoint*2*(1-i_CALmode)], l, &G14us_AM2P_Traitment_result[i_EWOB_nTrait*i_EWO] ); if(i_EWO == 1 && i_CALmode == 0 && l == 2){//EWOBz HF s_wpEWO_signal = &G14s_AM2P_signal[i_CAL_shiftpoint*2]; for(k = 0;k < 20480;k ++){ *s_wpEWO_signal++ = G14s_AM2P_signal[33000 + k]; s_wpEWO_signal ++; } i_EWO_nTraitment = app14_AM2P_Traitement_AM2P( G14s_AM2P_TCWord, ui_CAL_TI0, &G14s_AM2P_signal[i_CAL_shiftpoint*2], 1, &G14us_AM2P_Traitment_result[i_EWOB_nTrait*2] ); s_wpEWO_signal = &G14s_AM2P_signal[i_CAL_shiftpoint*2]; for(k = 0;k < 15360;k ++){ *s_wpEWO_signal++ = G14s_AM2P_signal[53480 + k]; s_wpEWO_signal ++; } i_EWO_nTraitment = app14_AM2P_Traitement_AM2P( G14s_AM2P_TCWord, ui_CAL_TI0, &G14s_AM2P_signal[i_CAL_shiftpoint*2], 2, &G14us_AM2P_Traitment_result[i_EWOB_nTrait*2] ); } /* if(i_EWO == 0) s_packet_info_EWO.uc_data_spec = 0x17; // 【暫定】0x10:LF, 0x11:HF else s_packet_info_EWO.uc_data_spec = 0x18; s_packet_info_EWO.uc_ofa_channel = l & 0xff; uc_wp_EWO = app14_EWO_packet_init( G14uc_AM2P, // パケットバッファのポインタ ui_CAL_TI0, // データ先頭の TI 0x00, // データ先頭の EWO カウンタ &s_packet_info_EWO ); */ G14uc_AM2P[0] = ( ( Guc_EWO_WPTP_gain & 0x0f ) << 4 ) | ( Guc_EWOE_gain & 0x0f ); if(i_EWO == 0) G14uc_AM2P[5] = 0x17; else G14uc_AM2P[5] = 0x18; uc_wp_EWO = &G14uc_AM2P[6]; if(i_EWO == 0){ for( j=0; j> 8 ); *uc_wp_EWO++ = (unsigned char)( ( G14us_AM2P_Traitment_result[j] & 0x00ff ) ); } } else{ for( j=0; j> 8 ); *uc_wp_EWO++ = (unsigned char)( ( G14us_AM2P_Traitment_result[j + i_EWOB_nTrait] & 0x00ff ) ); } } app14_CAL_putTLM( i_dataId, // [INPUT] Packet-ID 0x11:HF, 0x10:LF ui_CAL_TI0, // [INPUT] TI BITRATE_L, // [INPUT] L-mode data G14uc_AM2P, // [INPUT] Packet data i_EWO_nTraitment*(1+(i_EWO*(1-i_CALmode))) + 6 // [INPUT] Packet size ); /***************/ /* M-mode 出力は削除 (2012.07.03 imachi) // Write onto M packet s_packet_info_EWO.uc_bitrate = BITRATE_M; G14uc_AM2P[6] &= 0x3f; // B6-7 of info0 -> 0 G14uc_AM2P[6] |= ( ( s_packet_info_EWO.uc_bitrate & 0x03 ) << 6 ); // B6-7 of info0 -> BITRATE_M G14uc_AM2P[6] |= 0x01; // B0 of info0 -> 1 (CAL on) app14_CAL_putTLM( i_dataId, // [INPUT] Packet-ID 0x11:HF, 0x10:LF ui_CAL_TI0, // [INPUT] TI BITRATE_M, // [INPUT] L-mode data G14uc_AM2P, // [INPUT] Packet data i_EWO_nTraitment*(1+(i_EWO*(1-i_CALmode))) + 12 // [INPUT] Packet size ); s_packet_info_EWO.uc_bitrate = BITRATE_L; */ /**************/ }//End of part loop //dpu_getTime(&t_timeInfo); //ui_CAL_current_time = (t_timeInfo.ui_currentTime); //Gui_TLMm_blockTime[Gd_N_AM2P] = t_blockInfo.ui_createTime; }//i_EWO loop (EWOE or EWOB) i_bufId = app_CheckNonProcBlock( Gd_N_EWO, Gd_D_AM2P, // [INPUT] Node/Data ID Gui_TLMm_blockTime[Gd_N_AM2P], // [INPUT] TI of Processed Block &ui_timeData // [OUTPUT] TI of Newest Block in the selected buffer ); Gui_TLMm_blockTime[Gd_N_AM2P] = ui_timeData; /*******TIME management:TMP**********/ //dpu_getTime(&t_timeInfo); Gui_dummy = t_timeInfo.ui_currentTime - Gui_dummy; /*******TIME management:TMP**********/ G14uc_WFC_CAL_stage = 0; return; } int ready_EWOB_head(unsigned int ui_EWOE_counter,unsigned int ui_EWOE_TI,M_T_BLOCK_INFO t_blockInfo,int i_bufId) { int i = 0,k; int i_flag = 0; // int i_check = 0; // ***** REMOVED 110723 YK ***** unsigned int ui_counter; unsigned int ui_CAL_TI,ui_CAL_TI1; unsigned char uc_CAL_TI2; for(i = 0;i < t_blockInfo.i_replyNum;i ++){ i_flag = app_GetPacket( 3, // [INPUT] App-No.: 3 Gd_N_EWO, Gd_D_EWOB, // [INPUT] Node/Data ID i_bufId, // [INPUT] Buffer ID &t_blockInfo, // [INPUT] Block info i, // [INPUT] Packet No. (0:先頭) 0, // [INPUT] OFFSET 読み出し開始番地 32, // [INPUT] 読み出しデータ長 G14uc_data // [OUTPUT] 読み出しデータ収納バッファ ); ui_counter = (G14uc_data[20] << 8) + G14uc_data[21]; ui_CAL_TI1 = 0; uc_CAL_TI2 = ( G14uc_data[20] << 4 ) + ( G14uc_data[21] >> 4 ); for( k=16; k<=19; k++ ){ ui_CAL_TI1 <<= 8; ui_CAL_TI1 += G14uc_data[k]; } ui_CAL_TI = ui_CAL_TI1 + uc_CAL_TI2; if(ui_CAL_TI == ui_EWOE_TI) return i; else if(ui_CAL_TI > ui_EWOE_TI) return i-1; } return 0; } // =========================================================================== // app14_CAL_putTLM // [INPUT] int i_pacId Packet ID (user definition) // unsigned int ui_dataTi Header: TI // int i_drId, DR-ID = L / M / H0 (for CAT-ID) [0:HK 1:OS 2:L 3:M 4-9:H(0-5)] // unsigned char uc_data[] Data // int i_dataSize Data Size // =========================================================================== void app14_CAL_putTLM( int i_pacId, // [INPUT] Packet ID unsigned int ui_dataTi, // [INPUT] TI int i_drId, // [INPUT] DR-ID L/M/H0 (for CAT-ID) [0:HK 1:OS 2:L 3:M 4-9:H(0-5)] unsigned char uc_data[], // [INPUT] Data int i_dataSize) // [INPUT] Data Size (Byte) { int i_flag; // **** Non-COMP or JPEG-REV **** if ( Guc_TLMm_cmp[Gd_N_AM2P] ) Guc_TLMm_cmp[Gd_N_AM2P] = 1; i_flag = app_PutTlm( 14, // [INPUT] APP-NUM = 4 Gd_N_EWO, // [INPUT] Node-ID Gd_D_EWOE, // [INPUT] Data-ID Gd_N_EWOE, // [INPUT] Header-ID (for PID-ID, CAT-ID setting) 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_EWOE], // [INPUT] Comp mode [0:non 1:JPEG-rev 2:Math 3-7: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 *********CHANGED by YK 110723******** 0, // [INPUT] Comment - Size *********CHANGED by YK 110723******** uc_data, // [INPUT] Data <<<< USER-DEF: <0x1E00 >>>> i_dataSize); // [INPUT] Data - Size <<<< USER-DEF: <0x1E00 >>>> return; }