/*******************************************************************************
*   ���W���[������      �F�A�v���P�[�V����13 - Mission TLM Production (1)      *
*   ���W���[�����x��    �Fdpu_app13                                            *
*   �^�X�N�敪          �F�A�v���P�[�V�����^�X�N                               *
*   �@�\                �F                                                     *
*   �R�[�����O�V�[�P���X�Fvoid dpu_app13(int mode)                             *
*   ����                �Fint mode  �璷�@�\ON/OFF (0:OFF/1:ON)                *
*   �߂�l              �Fvoid                                                 *
*   �g�p��̒���        �F�Ȃ�                                                 *
*   �G���[����          �F�Ȃ�                                                 *
*   �쐬���E�쐬��      �F2013/9/16   Y.K.                                     *
*******************************************************************************/
#include "dpu_api.h"
#include "dpu_api_proto.h"
#include "app_core.h"
#include "app_rdn_core.h"
#include "app_common.h"

// **** MACRO: local ****
extern int 	M_Gi_imitateSunpulseCnt; 	//	for DEBUG: --- MW�� SunPulse Timer ---
//
#ifdef _APP_DMY_
int			app13_LM_Dummy   ( int );	// ***TMP!!***
#endif // _APP_DMY_

void 		dpu_app13(int mode)
{
	int				i_flag;
	unsigned int	ui_load;			// msec
	unsigned int	ui_load2;
	M_T_TIME_INFO	t_timeInfo;			// unsigned int 	ui_currentTime;  �F�q������(1LSB=1.953ms)
										// unsigned int 	ui_currentTime2; �F�q������(1LSB=31.25ms)
										// unsigned int 	ui_sunpulseTime; �FSUNPULSE ��M����(1LSB=1.953ms)

    // *************************************
    // *** STOP @ DPU1 in non-redundancy ***
    // *************************************
	if (Guc_dpuNo==0 && Guc_dpuRdn==0) {												// DPU2 in non-Redundancy
	    dpu_WDTEna(0);		// WDT: DIS
	    dpu_appStop();		// *** End ***
	}

    // ************
    // *** MAIN ***
    // ************
	dpu_waitProcessingSlot(32);
    for (;;) {
		// *** WAIT ***
		app_WhoWhere( 3, Gd_N_COM, 0x01 );
		
		dpu_waitSunpulse(1);
		if ( Guc_dpuSunMode == 1 && Guc_dpuNo==1 )	M_Gi_imitateSunpulseCnt = 33;		// N=1(=125ms)  N=36(=4500ms)*/

		// *************
		// *** START ***
		// *************
		app_WhoWhere( 3, Gd_N_COM, 0x02 );
		app_START( 3, &ui_load );

		// *** CMD-buffer clear (for BroadCast) ***
		app_WhoWhere( 3, Gd_N_COM, 0x03 );
		dpu_getCommand( Guc_cmdDummy, &i_flag);

		// *** SPIN-EXE: Counter increment & Sync between DPU1&DPU2 ***
		app_WhoWhere( 3, Gd_N_COM, 0x04 );
		while (1) {
			i_flag  = dpu_getTime( &t_timeInfo );
			if ( t_timeInfo.ui_sunpulseTime <=  t_timeInfo.ui_currentTime )  break;
			dpu_delay(10);
		}
		if ( Gui_TRG_TiLAST==0 ) Gui_TRG_TiLAST = t_timeInfo.ui_currentTime2 + 0x80;
		app13_DPU2_SPIN( Gui_hkApp_counter[3], t_timeInfo.ui_sunpulseTime, t_timeInfo.ui_currentTime2 );

																						  i_flag = app_MONITOR( 1, 0,         ui_load2, & ui_load2 );
		if ( Guc_TLMm_enadis ) {
			// *****************
			// *** TLM: DPU2 ***
			// *****************
			if (Guc_dpuNo==1 || Guc_dpuRdn==2)		{									  // *** RDN: OK
				app_WhoWhere( 3, Gd_N_MGFI, 0x00 );	app13_MGFI ( Gui_hkApp_counter[3] );  i_flag = app_MONITOR( 1, Gd_N_MGFI, ui_load2, & ui_load2 );
				app_WhoWhere( 3, Gd_N_EFD,  0x00 );	app13_EFD  ( Gui_hkApp_counter[3] );  i_flag = app_MONITOR( 1, Gd_N_EFD,  ui_load2, & ui_load2 );
				app_WhoWhere( 3, Gd_N_SOR,  0x00 );	app13_SOR  ( Gui_hkApp_counter[3] );  i_flag = app_MONITOR( 1, Gd_N_SOR,  ui_load2, & ui_load2 );
				app_WhoWhere( 3, Gd_N_EWOE, 0x00 );	app13_EWOE ( Gui_hkApp_counter[3] );  i_flag = app_MONITOR( 1, Gd_N_EWOE, ui_load2, & ui_load2 );
				app_WhoWhere( 3, Gd_N_EWOB, 0x00 );	app13_EWOB ( Gui_hkApp_counter[3] );  i_flag = app_MONITOR( 1, Gd_N_EWOB, ui_load2, & ui_load2 );
				app_WhoWhere( 3, Gd_N_MDM , 0x00 );	app13_MDM  ( Gui_hkApp_counter[3] );  i_flag = app_MONITOR( 1, Gd_N_MDM,  ui_load2, & ui_load2 );
			}
		}

		if (Guc_dpuNo==1 || Guc_dpuRdn==2) {												// *** RDN: OK
			// ***********************
			// *** TLM: Integrated ***
			// ***********************
			app_WhoWhere( 3, Gd_N_DPU2, 0x00 );		app13_DPU2( Gui_hkApp_counter[3] );	  i_flag = app_MONITOR( 1, Gd_N_DPU2, ui_load2, & ui_load2 );
		}

#ifdef _APP_RDN_
		if (Guc_dpuNo==0 && Guc_dpuRdn==2)	{												// *** RDN: OK
			// *** MEM-DUMP ***
			if ( (Guc_RDN_MemDump_NID & 0x80) ) {
				i_flag = app_Rdn_memDump( 1, G13uc_packet );								// MEM-DUMP
			}
		}
#endif // _APP_RDN_
		
#ifdef _APP_DMY_
		// --- DUMMY:LM ---
		if ( Guc_Spec_Code & 0x04 )		{ app13_LM_Dummy(0); app13_LM_Dummy(1); }	
#endif // _APP_DMY_

		// *** APP STATUS ***
		app_WhoWhere( 3, Gd_N_COM, 0x0F );
		app_END     ( 3, &ui_load );
	}
    dpu_WDTEna(0);		// WDT: DIS
    dpu_appStop();		// *** End ***
}




#ifdef _APP_DMY_
// *****************
// *** DUMMY-LM ***
// *****************
int	app13_LM_Dummy(	int	i_mode )
{
	int				i, j;
	int				i_flag;
	unsigned char	uc_nodeID, uc_dataID, uc_headID;


	// **** TI ****
	unsigned int	ui_time;
	M_T_TIME_INFO	t_timeInfo;							// unsigned int ui_currentTime;  �F�q������(1LSB=1.953ms)
	i_flag  = dpu_getTime( &t_timeInfo );
	ui_time = t_timeInfo.ui_currentTime;				

	// **** Data load (dummy) ****
	for (i=0; i<1000; i++)   G13uc_data[i] = ( (i>>4) & 0xFF );

	// **** Data Put  (DPU1 -> EWO) ****
	for (i=Gd_N_DPU2; i<=Gd_N_SOR; i++) {
		if (i>Gd_N_DPU2 && i<Gd_N_MGFI) 	continue;
		if (i==Gd_N_MDM && i_mode==1) 		continue;
		uc_nodeID = i;
		uc_dataID = 0;
		uc_headID = i;
		for (j=0; j<4; j++) {
			app_WhoWhere( 3, Gd_N_COM, i_mode + 0xEE);	
			i_flag = app_PutTlm( 	5,								// [INPUT]  APP-NUM = 5
									uc_nodeID,						// [INPUT]	Node-ID
									uc_dataID,						// [INPUT]	Data-ID
									uc_headID,						// [INPUT]	Header-ID (for PID-ID, CAT-ID setting)
									2+i_mode,						// [INPUT]	DR-ID     (for CAT-ID) [0:HK 1:OS 2:L 3:M 4-9:H(0-5)]
									(j%4), 							// [INPUT]	Comp mode			   [0:non 1:Arith0 2:Arith1 3:After-User-COMP 4:RICE]
									j & 0xFF, 						// [INPUT]	Packet ID 			<<<< USER-DEF:       0x00-      0xFF >>>>
									ui_time, 						// [INPUT]	Data TI				<<<< USER-DEF: 0x00000000-0xFFFFFFFF >>>> (2msec)
									Guc_cmdDummy, 					// [INPUT]	Comment				<<<< USER-DEF: <128B                 >>>>
									0, 								// [INPUT]	Comment - Size 		<<<< USER-DEF: <128B                 >>>>
									G13uc_data,						// [INPUT]	Data				<<<< USER-DEF: <0x1E00               >>>>
									100+900*i_mode );				// [INPUT]	Data - Size			<<<< USER-DEF: <0x1E00               >>>>
		}
	}

	// **** Data Put  (DPU1 -> EWO) ****
	for (i=Gd_N_AM2P; i<=Gd_N_EWOB; i++) {
		uc_nodeID = Gd_N_EWO;
		uc_dataID = i+1;
		uc_headID = i;
		for (j=0; j<4; j++) {
			app_WhoWhere( 3, Gd_N_COM, i_mode + 0xEE);	
			i_flag = app_PutTlm( 	5,								// [INPUT]  APP-NUM = 5
									uc_nodeID,						// [INPUT]	Node-ID
									uc_dataID,						// [INPUT]	Data-ID
									uc_headID,						// [INPUT]	Header-ID (for PID-ID, CAT-ID setting)
									2+i_mode,						// [INPUT]	DR-ID     (for CAT-ID) [0:HK 1:OS 2:L 3:M 4-9:H(0-5)]
									(j%4), 							// [INPUT]	Comp mode			   [0:non 1:Arith0 2:Arith1 3:After-User-COMP 4:RICE]
									j & 0xFF, 						// [INPUT]	Packet ID 			<<<< USER-DEF:       0x00-      0xFF >>>>
									ui_time, 						// [INPUT]	Data TI				<<<< USER-DEF: 0x00000000-0xFFFFFFFF >>>> (2msec)
									Guc_cmdDummy, 					// [INPUT]	Comment				<<<< USER-DEF: <128B                 >>>>
									0, 								// [INPUT]	Comment - Size 		<<<< USER-DEF: <128B                 >>>>
									G13uc_data,						// [INPUT]	Data				<<<< USER-DEF: <0x1E00               >>>>
									100+900*i_mode );				// [INPUT]	Data - Size			<<<< USER-DEF: <0x1E00               >>>>
		}
	}

	return(0);
}
#endif // _APP_DMY_



/*
// =============== TMP ==============
// =============== TMP ==============
// =============== TMP ==============
// =============== TMP ==============
unsigned int Gui_TI_tmp2;
void	app13_MGFItest( unsigned int ui_sunpulseCnt )
{
	int				i;
	int				i_flag;

	// === BLOCK read ===
	int				i_bufId;													// Buffer ID
	int				i_numNewBlock;												// Num of blocks with new data
	unsigned int	ui_timeData;												// Processing data TI
	unsigned int	ui_timeData2;												// Processing data TI
	unsigned int	ui_timeData3;												// Processing data TI
	M_T_BLOCK_INFO 	t_blockInfo;												// unsigned int 	ui_createTime	Block �����J�n���q������(1LSB=31,25ms)
																				// int 				i_replyNum		Block �o�^Read-Reply��
																				// char 			c_invalidFlg	Block ���f�[�^�ُ�	 [0:�ُ�Ȃ� 1:�ُ킠��]
																				// unsigned int 	ui_blockIndex	LongBuffer/ShortBuffer ��Block����ԍ� (�擪Block:0)

	// -----------------------------------------------------------
	// -- Set at the buffer with the oldest non-processed block --
	// -----------------------------------------------------------
	i_bufId = app_CheckNonProcBlock      ( Gd_N_MGFI, 0,	 					// [INPUT]  NodeID = Gd_N_MDM,  Data ID = 0
										   Gui_TLMm_blockTime[Gd_N_MGFI],		// [INPUT]  TI of Processed Block
										   & ui_timeData);						// [OUTPUT] TI of Newest Block in the selected buffer
																				// (return) Buffer-ID  (0:L, 1:S, -1:no data)
	if ( i_bufId < 0 )  return;													//  === No data ===

	// -------------------------------------------
	// -- Set at the oldest non-processed block --
	// -------------------------------------------
	// Newest Block
	i_numNewBlock	= app_SetNonProcBlock( Gd_N_MGFI, 0,	 					// [INPUT]  NodeID = Gd_N_MDM,  Data ID = 0
										   i_bufId,  							// [INPUT]  Buffer ID  (0:L, 1:S)
										   Gui_TLMm_blockTime[Gd_N_MGFI],		// [INPUT]  TI of Processed Block
										   &t_blockInfo);						// [OUTPUT] Block Info                                
																				// (return)	>0:Num of blocks, <=0:No data (error)     
	if ( i_numNewBlock < 1 ) {
		Gui_TLMm_blockTime[Gd_N_MGFI] = ui_timeData;							//  === shift to newest data for SKIP ===
		return;
	}


	// ---------------------
	// -- Read Block data --
	// ---------------------
	for (i=0; i<i_numNewBlock; i++) {
		if ( t_blockInfo.ui_createTime > Gui_TLMm_blockTime[Gd_N_MGFI]	&&		// NEW data
			 t_blockInfo.i_replyNum    > 0								&&		// Data available
			 t_blockInfo.c_invalidFlg == 0 										// Data correct
			 ) {

			// ****************************
			// **** Packet header read ****
			// ****************************
			//		RMAP-read-header	12B
			//		Contents			 ?B
			i_flag = app_GetBlock(	13,											// [INPUT]  App-No:13
									Gd_N_MGFI, 0, 								// [INPUT]  NodeID = Gd_N_MDM,  Data ID = 0
									i_bufId,  									// [INPUT]  Buffer ID
									&t_blockInfo,								// [INPUT]  Block Info
									G13uc_data );								// [OUTPUT] 1 Block Data - copied
			if ( i_flag  )  continue;
			Gui_TLMm_blockTime[Gd_N_MGFI] = t_blockInfo.ui_createTime;			// !!! Successfuly Processed !!!
			ui_timeData =  Gui_TLMm_blockTime[Gd_N_MGFI];
	
			ui_timeData2 =  G13uc_data[12      ]*0x1000000 +
							G13uc_data[13      ]*0x10000   +
							G13uc_data[14      ]*0x100     +
							G13uc_data[15      ]           +
						  ( G13uc_data[16      ]*0x100 + 
						    G13uc_data[17      ] ) * 512 / 10000;
			ui_timeData3 =  G13uc_data[12+224*8]*0x1000000 +
							G13uc_data[13+224*8]*0x10000   +
							G13uc_data[14+224*8]*0x100     +
							G13uc_data[15+224*8]           +
						  ( G13uc_data[16+224*8]*0x100 + 
						    G13uc_data[17+224*8] ) * 512 / 10000;

			i_flag = ui_timeData2 - Gui_TI_tmp2;
			G13uc_data[0] = (unsigned char)((i_flag >> 16) & 0xFF);
			G13uc_data[1] = (unsigned char)((i_flag >>  8) & 0xFF);
			G13uc_data[2] = (unsigned char)((i_flag      ) & 0xFF);
			if ( i_flag < 0  )  ui_timeData = (ui_timeData & 0x00FFFFFF) + 0xFF000000;
			if ( i_flag > 512)  ui_timeData = (ui_timeData & 0x00FFFFFF) + 0xEE000000;

			i_flag = ui_timeData3 - ui_timeData2;
			G13uc_data[3] = (unsigned char)((i_flag >> 16) & 0xFF);
			G13uc_data[4] = (unsigned char)((i_flag >>  8) & 0xFF);
			G13uc_data[5] = (unsigned char)((i_flag      ) & 0xFF);
			if ( i_flag < 0)    ui_timeData = (ui_timeData & 0xFF00FFFF) + 0x00FF0000;
			if ( i_flag > 512)  ui_timeData = (ui_timeData & 0xFF00FFFF) + 0x00EE0000;

			memcpy( &(G13uc_data[6]),  &(G13uc_data[12+224*0]), 6);		// TI
			memcpy( &(G13uc_data[12]), &(G13uc_data[12+224*1]), 6);		// TI
			memcpy( &(G13uc_data[18]), &(G13uc_data[12+224*2]), 6);		// TI
			memcpy( &(G13uc_data[24]), &(G13uc_data[12+224*3]), 6);		// TI
			memcpy( &(G13uc_data[30]), &(G13uc_data[12+224*4]), 6);		// TI
			memcpy( &(G13uc_data[36]), &(G13uc_data[12+224*5]), 6);		// TI
			memcpy( &(G13uc_data[42]), &(G13uc_data[12+224*6]), 6);		// TI
			memcpy( &(G13uc_data[48]), &(G13uc_data[12+224*7]), 6);		// TI
			memcpy( &(G13uc_data[54]), &(G13uc_data[12+224*8]), 6);		// TI
			Gui_TI_tmp2  = 	ui_timeData3;

			// *****************
			// **** Put TLM ****
			// *****************
			i_flag = app_PutTlm(13,									// [INPUT]  APP-NUM = 13
								Gd_N_MGFI,							// [INPUT]	Node-ID
								0,									// [INPUT]	Data-ID
								Gd_N_MGFI,							// [INPUT]	Header-ID (for PID-ID, CAT-ID setting)
								2,									// [INPUT]	DR-ID     (for CAT-ID) [0:HK 1:OS 2:L 3:M 4-9:H(0-5)]
								Guc_TLMm_cmp[Gd_N_MGFI], 			// [INPUT]	Comp mode			   [0:non 1:JPEG-rev 2:Math 3-7:After-User-COMP]
								i + (i_numNewBlock << 4),			// [INPUT]	Packet ID 			<<<< USER-DEF:       0x00-      0xFF >>>>
								ui_timeData, 						// [INPUT]	Data TI				<<<< USER-DEF: 0x00000000-0xFFFFFFFF >>>>
								Guc_cmdDummy, 						// [INPUT]	Comment				<<<< USER-DEF: <128B                 >>>>
								0, 									// [INPUT]	Comment - Size 		<<<< USER-DEF: <128B                 >>>>
								G13uc_data , 						// [INPUT]	Data				<<<< USER-DEF: <0x1E00               >>>>
								60); 								// [INPUT]	Data - Size			<<<< USER-DEF: <0x1E00               >>>>
		}

		// To next block
		i_flag = app_NextBlock( Gd_N_MGFI, 0, 								// [INPUT]  NodeID = Gd_N_MDM,  Data ID = 0
								i_bufId, 									// [INPUT]  Buffer ID
								&t_blockInfo);								// [OUTPUT] Block Info
		if ( i_flag )			break;										// no data
	}
	return;
}
//





// =============== TMP ==============
// =============== TMP ==============
// =============== TMP ==============
// =============== TMP ==============
unsigned int   Gui_TI_tmp3;
//unsigned int   Gui_TIewo[640];
//unsigned short Gus_SPewo[640];
void	app13_EWOBtest( unsigned int ui_sunpulseCnt )
{
	int				i, j;
	int				i_flag;

	// === BLOCK read ===
	int				i_bufId;													// Buffer ID
	int				i_numNewBlock;												// Num of blocks with new data
	unsigned int	ui_timeData;												// Processing data TI
	unsigned short	us_dataDt;
	unsigned int	ui_timeData2;												// Processing data TI
	unsigned int	ui_timeData3;												// Processing data TI
	unsigned int	ui_tmp0, ui_tmp1, ui_tmp2;
	M_T_BLOCK_INFO 	t_blockInfo;												// unsigned int 	ui_createTime	Block �����J�n���q������(1LSB=31,25ms)
																				// int 				i_replyNum		Block �o�^Read-Reply��
																				// char 			c_invalidFlg	Block ���f�[�^�ُ�	 [0:�ُ�Ȃ� 1:�ُ킠��]
																				// unsigned int 	ui_blockIndex	LongBuffer/ShortBuffer ��Block����ԍ� (�擪Block:0)

	// -----------------------------------------------------------
	// -- Set at the buffer with the oldest non-processed block --
	// -----------------------------------------------------------
	i_bufId = app_CheckNonProcBlock      ( Gd_N_EWO, 3,	 					// [INPUT]  NodeID = Gd_N_MDM,  Data ID = 0
										   Gui_TLMm_blockTime[Gd_N_EWOB],		// [INPUT]  TI of Processed Block
										   & ui_timeData);						// [OUTPUT] TI of Newest Block in the selected buffer
																				// (return) Buffer-ID  (0:L, 1:S, -1:no data)
	if ( i_bufId < 0 )  return;													//  === No data ===

	// -------------------------------------------
	// -- Set at the oldest non-processed block --
	// -------------------------------------------
	// Newest Block
	i_numNewBlock	= app_SetNonProcBlock( Gd_N_EWO, 3,	 					// [INPUT]  NodeID = Gd_N_MDM,  Data ID = 0
										   i_bufId,  							// [INPUT]  Buffer ID  (0:L, 1:S)
										   Gui_TLMm_blockTime[Gd_N_EWOB],		// [INPUT]  TI of Processed Block
										   &t_blockInfo);						// [OUTPUT] Block Info                                
																				// (return)	>0:Num of blocks, <=0:No data (error)     
	if ( i_numNewBlock < 1 ) {
		Gui_TLMm_blockTime[Gd_N_EWOB] = ui_timeData;							//  === shift to newest data for SKIP ===
		return;
	}


	// ---------------------
	// -- Read Block data --
	// ---------------------
	for (i=0; i<i_numNewBlock; i++) {
		if ( t_blockInfo.ui_createTime > Gui_TLMm_blockTime[Gd_N_EWOB]	&&		// NEW data
			 t_blockInfo.i_replyNum    > 0								&&		// Data available
			 t_blockInfo.c_invalidFlg == 0 										// Data correct
			 ) {

			Gui_TLMm_blockTime[Gd_N_EWOB] = t_blockInfo.ui_createTime;			// !!! Successfuly Processed !!!

			for (j=0; j<t_blockInfo.i_replyNum; j++) {
				// ****************************
				// **** Packet header read ****
				// ****************************
				i_flag = app_GetPacket(
									13,									// [INPUT]  App-No: 3
									Gd_N_EWO, 3,						// [INPUT]  EWO-EFD
									i_bufId,  							// [INPUT]  Buffer ID = 0 (LONG)
									&t_blockInfo,						// [INPUT]  Block Info
									j,									// [INPUT]  Packet Num        = 0(�擪)
									16,									// [INPUT]  Offset(�W�̔{��)  = 0(�擪)
									16,									// [INPUT]  �Ǐo�T�C�Y		  = Packet�T�C�Y
									G13uc_data );						// [OUTPUT] 1 Block Data - copied
				if ( i_flag )  break;									// ---- to next block ----

				// --- HEADER:10B in EWO packet ---
				memcpy( &ui_timeData, &(G13uc_data[0]), 4);									// B0-3: TI (LSB:2msec)
				memcpy( &us_dataDt,   &(G13uc_data[4]), 2);									// B4-5: SunPulse (LSB:122usec)
//				if (j>=640) {
//					Gui_TIewo[0] = j;
//					Gus_SPewo[0] = j;
//				} else {
//					Gui_TIewo[j] = ui_timeData;
//					Gus_SPewo[j] = us_dataDt;
//				}
				ui_tmp0 = ui_timeData;
				ui_timeData += (us_dataDt >> 4);
				ui_tmp1 = ui_timeData;

				if (j==0) 							ui_timeData2 = ui_timeData;
				else if (ui_tmp1 < ui_tmp2) {
					i_flag = j;
				}
				if (j==t_blockInfo.i_replyNum-1)	ui_timeData3 = ui_timeData;
				ui_tmp2 = ui_tmp1;
			}

			i_flag = ui_timeData2 - Gui_TI_tmp3;
			G13uc_data[0] = (unsigned char)((i_flag >> 16) & 0xFF);
			G13uc_data[1] = (unsigned char)((i_flag >>  8) & 0xFF);
			G13uc_data[2] = (unsigned char)((i_flag      ) & 0xFF);
			if ( i_flag < 0  )   {
				ui_timeData = (ui_timeData & 0x00FFFFFF) + 0xFF000000;
			}
			if ( i_flag > 2560)  {
				ui_timeData = (ui_timeData & 0x00FFFFFF) + 0xEE000000;
			}

			i_flag = ui_timeData3 - ui_timeData2;
			G13uc_data[3] = (unsigned char)((i_flag >> 16) & 0xFF);
			G13uc_data[4] = (unsigned char)((i_flag >>  8) & 0xFF);
			G13uc_data[5] = (unsigned char)((i_flag      ) & 0xFF);
			if ( i_flag < 0)    {
				ui_timeData = (ui_timeData & 0xFF00FFFF) + 0x00FF0000;
			}
			if ( i_flag > 2560)  {
				ui_timeData = (ui_timeData & 0xFF00FFFF) + 0x00EE0000;
			}

			G13uc_data[6] = (unsigned char)((t_blockInfo.i_replyNum >> 8) & 0xFF);
			G13uc_data[7] = (unsigned char)((t_blockInfo.i_replyNum     ) & 0xFF);

			Gui_TI_tmp3  = 	ui_timeData3;

			// *****************
			// **** Put TLM ****
			// *****************
			i_flag = app_PutTlm(13,									// [INPUT]  APP-NUM = 13
								Gd_N_EWO,							// [INPUT]	Node-ID
								3,									// [INPUT]	Data-ID
								Gd_N_EWOB,							// [INPUT]	Header-ID (for PID-ID, CAT-ID setting)
								2,									// [INPUT]	DR-ID     (for CAT-ID) [0:HK 1:OS 2:L 3:M 4-9:H(0-5)]
								Guc_TLMm_cmp[Gd_N_EWOB], 			// [INPUT]	Comp mode			   [0:non 1:JPEG-rev 2:Math 3-7:After-User-COMP]
								i + (i_numNewBlock << 4),			// [INPUT]	Packet ID 			<<<< USER-DEF:       0x00-      0xFF >>>>
								ui_timeData, 						// [INPUT]	Data TI				<<<< USER-DEF: 0x00000000-0xFFFFFFFF >>>>
								Guc_cmdDummy, 						// [INPUT]	Comment				<<<< USER-DEF: <128B                 >>>>
								0, 									// [INPUT]	Comment - Size 		<<<< USER-DEF: <128B                 >>>>
								G13uc_data, 						// [INPUT]	Data				<<<< USER-DEF: <0x1E00               >>>>
								8); 								// [INPUT]	Data - Size			<<<< USER-DEF: <0x1E00               >>>>
		}

		// To next block
		i_flag = app_NextBlock( Gd_N_EWO, 3, 								// [INPUT]  NodeID = Gd_N_MDM,  Data ID = 0
								i_bufId, 									// [INPUT]  Buffer ID
								&t_blockInfo);								// [OUTPUT] Block Info
		if ( i_flag )			break;										// no data
	}
	return;
}
//
*/