/******************************************************************************* * ���W���[������ �FAPP13 Mission TLM (L&M) MDM tasks * * ���W���[�����x�� �Fapp13_MDM * * �^�X�N�敪 �FApplication-13 MDM task for Mission TLM (L) * * �@�\ �F * * �R�[�����O�V�[�P���X�Fvoid app13_MDM * * ���� �F�Ȃ� * * �߂�l �F�Ȃ� * * �g�p��̒��� �F�O���[�o���ϐ��̓A�v���P�[�V�����O�P�ł܂Ƃ߂ď����� * * �G���[���� �F�Ȃ� * * ���� �F EDIT�����́AMDM(core)�g * * �쐬���E�쐬�� �F2012/1/2 Y.K. * *******************************************************************************/ #include "app_common.h" // *** MDM: local*** #define d_MDM_pacSize 120 // MDM Packet size // *** Local Macro *** //void app13_MDM_putTLM ( int, unsigned int, unsigned char *, int); // *** APP13 Common Grobal Variable (in app_common.h & app_common_variable.c) *** //#define d_dataRawLen 0x40000 //#define d_dataPacLen 0x2000 //extern unsigned char G13uc_data [d_dataRawLen]; // for RAW data: 262.11 kB [EWO:80packet, Others:more than 1Block] //extern unsigned char G13uc_packet[d_dataPacLen]; // for Packet data: 8kB - max [Packet size to DMC: 1kB-max] void app13_MDM( 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 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) // === MDM data output === int i_pacId; // ----------------------------------------------------------- // -- Set at the buffer with the oldest non-processed block -- // ----------------------------------------------------------- i_bufId = app_CheckNonProcBlock ( Gd_N_MDM, 0, // [INPUT] NodeID = Gd_N_MDM, Data ID = 0 Gui_TLMm_blockTime[Gd_N_MDM], // [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_MDM, 0, // [INPUT] NodeID = Gd_N_MDM, Data ID = 0 i_bufId, // [INPUT] Buffer ID (0:L, 1:S) Gui_TLMm_blockTime[Gd_N_MDM], // [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_MDM] = 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_MDM] && // NEW data t_blockInfo.i_replyNum > 0 && // Data available t_blockInfo.c_invalidFlg == 0 && // Data correct i == i_numNewBlock-1 ) { // latest 2 packets [Max-packet production: 1 in 1-spin] // **************************** // **** Packet header read **** // **************************** // RMAP-read-header 12B // Contents ?B i_flag = app_GetBlock( 13, // [INPUT] App-No:13 Gd_N_MDM, 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_MDM] = t_blockInfo.ui_createTime; // !!! Successfuly Processed !!! // *********************** // **** Packet decode **** // *********************** // [RMAP-READ-HEADER - offset: 12B] // TI 12+ 0-3 �T���p���X�ł̃��b�`�f�[�^�B�X�V����4sec���� memcpy( &Gui_MDM_data_TI, &(G13uc_data[12]), 4); if (Gui_MDM_data_TI != 0xFFFFFFFF) { // Status1 12+ 12 B3 CAL 1:ENA 0:DIS if ( G13uc_data[24] & 0x08 ) i_pacId = 0x40; // CAL: FM�ł� "event" �Ƃ݂Ȃ��Ȃ��B else i_pacId = 0x00; // Priority 12+ 10 �m�C�Yor�C�x���g�̃t���O�A�y�єg���l�@* // B7(MSB) 1:event 0:noise // B6-B0 Peak if ( G13uc_data[22] & 0x80 ) { if ( i_pacId == 0) { // non-CAL���̂݁uFM�ł�event�Ƃ݂Ȃ��v memcpy( &Gus_MDM_data_dt, &(G13uc_data[16]), 2); // *** Triggered TI for EWO: "1-spin delay"�� Guc_MDM_data_priority = 0x80; } i_pacId |= 0x80; } // ***************** // **** Put TLM **** // ***************** // msec 12+ 4-5 1msec-CLK�J�E���^�[(16bit) if ( i == i_numNewBlock-1 ) { // TLM-packet formation memcpy( &(Guc_MDM_data[d_MDM_pacSize * Gi_MDM_numPacket]), &(G13uc_data[12]), d_MDM_pacSize ); Gi_MDM_numPacket ++; if ( ( i_bufId == 1 ) || // Short-packet ( Gi_MDM_numPacket >= 8 ) || // 8-packet�~�� ( Guc_HK_link[Gd_N_MDM ] == 0 ) ) { // MDM = OFF i_pacId |= Gi_MDM_numPacket; /* app13_MDM_putTLM ( i_pacId, // [INPUT] PacID Gui_MDM_data_TI, // [INPUT] TI (lsb:1.953msec) Guc_MDM_data, // [INPUT] MDM data packet d_MDM_pacSize * Gi_MDM_numPacket); // [INPUT] Packet size */ i_flag = app_PutTlm( 13, // [INPUT] APP-NUM = 13 Gd_N_MDM, // [INPUT] Node-ID 0, // [INPUT] Data-ID Gd_N_MDM, // [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_MDM], // [INPUT] Comp mode [0:non 1:JPEG-rev 2:Math 3-7:After-User-COMP] i_pacId, // [INPUT] Packet ID <<<< USER-DEF: 0x00- 0xFF >>>> Gui_MDM_data_TI, // [INPUT] Data TI <<<< USER-DEF: 0x00000000-0xFFFFFFFF >>>> Guc_cmdDummy, // [INPUT] Comment <<<< USER-DEF: <128B >>>> 0, // [INPUT] Comment - Size <<<< USER-DEF: <128B >>>> Guc_MDM_data, // [INPUT] Data <<<< USER-DEF: <0x1E00 >>>> d_MDM_pacSize * Gi_MDM_numPacket); // [INPUT] Data - Size <<<< USER-DEF: <0x1E00 >>>> Gi_MDM_numPacket = 0; } } } } // To next block i_flag = app_NextBlock( Gd_N_MDM, 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; } /* // =========================================================================== // app13_MDM_putTLM // [INPUT] int i_pacId Packet Num (0x00-0x1F) // unsigned int ui_dataTi Header: TI // unsigned char uc_data[] Data // int i_dataSize Data Size // =========================================================================== void app13_MDM_putTLM( int i_pacId, // [INPUT] Packet ID unsigned int ui_dataTi, // [INPUT] TI unsigned char uc_data[], // [INPUT] Data int i_dataSize) // [INPUT] Data Size (Byte) { int i_flag; i_flag = app_PutTlm( 13, // [INPUT] APP-NUM = 13 Gd_N_MDM, // [INPUT] Node-ID 0, // [INPUT] Data-ID Gd_N_MDM, // [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_MDM], // [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 <<<< USER-DEF: <128B >>>> 0, // [INPUT] Comment - Size <<<< USER-DEF: <128B >>>> uc_data, // [INPUT] Data <<<< USER-DEF: <0x1E00 >>>> i_dataSize); // [INPUT] Data - Size <<<< USER-DEF: <0x1E00 >>>> return; } */