/******************************************************************************* * モジュール名称 :アプリケーション02 - HK read & anaylses - DPU * * 作成日・作成者 :2017/7/13 Y.K. * *******************************************************************************/ #include "dpu_api.h" #include "dpu_api_proto.h" #include "app_core.h" #include "app_rdn_core.h" // 0-7B MDP HW // 8-39B MDP MW // 200-291 MDP Buffer definitions [HK-MODE=1で出す] // 292-407 MDP many actions [HK-MODE=1で出す] // 40-199 PI HKs ( 20B x 8) [出さない] // 415-1279 PI HKs (108B x 8) [出さない] void app02_app_DsCheckNewOldBlock( int, int, unsigned char *, int * ); int app_DsCheckNewOldBlock (unsigned char, unsigned char, unsigned char, unsigned int *, unsigned int * ); // *************************************************************** // *** DPU - HK data analyses & packet production *** // uncigned char uc_dataHK[] HK data // *************************************************************** int app02_DPU ( unsigned char uc_dataHK[], unsigned int ui_counter, unsigned char uc_dpuNo) { int i, j; int i_flag; unsigned int ui_flag; int i_dpuSwHK_size = 0; char c_buff[2]; // #ifdef _APP_DMY_ // ------------------- // --- DUMMY-STOP --- // ------------------- M_T_TIME_INFO t_timeInfo; // ui_currentTime:衛星時刻(1LSB=1.953ms), ui_currentTime2:衛星時刻(1LSB=31.25ms) if ( Gui_Spec_Code_TI ) { i_flag = dpu_getTime( &t_timeInfo ); if ( t_timeInfo.ui_currentTime2 > Gui_Spec_Code_TI + 3840 ) Guc_Spec_Code = Gui_Spec_Code_TI = 0; // 2min-limit } #endif // _APP_DMY_ // -------------------- // --- Backup COPY --- // -------------------- memcpy( G2uc_packet, uc_dataHK, 408 ); // Backup // ------------------------------------------ // --- Link Status & Mission CLCT control --- // ------------------------------------------ if (uc_dpuNo == Guc_dpuNo) { Guc_HK_link[Gd_N_DPU1] = Guc_HK_link[Gd_N_DPU2] = uc_dataHK[19] & 0x01; // DPU1-2 link status if ( (uc_dataHK[19] & 0x30) == 0x30) Guc_dpuSunMode = 1; // DUMMY-Sunpulse Mode else Guc_dpuSunMode = 0; // others } if (uc_dpuNo==0) { Guc_HK_link[Gd_N_MGFO] = app_1bit( uc_dataHK[20]&0x01 ); Guc_HK_link[Gd_N_MEA1] = app_1bit( uc_dataHK[20]&0x02 ); Guc_HK_link[Gd_N_MEA2] = app_1bit( uc_dataHK[20]&0x04 ); Guc_HK_link[Gd_N_ENA ] = app_1bit( uc_dataHK[20]&0x08 ); Guc_HK_link[Gd_N_MIA ] = app_1bit( uc_dataHK[20]&0x10 ); Guc_HK_link[Gd_N_MSA ] = app_1bit( uc_dataHK[20]&0x20 ); Guc_HK_link[Gd_N_HEPE] = app_1bit( uc_dataHK[20]&0x40 ); Guc_HK_link[Gd_N_HEPI] = app_1bit( uc_dataHK[20]&0x80 ); } else { Guc_HK_link[Gd_N_MWE] = app_1bit( uc_dataHK[20]&0x01 ); Guc_HK_link[Gd_N_SOR] = app_1bit( uc_dataHK[20]&0x02 ); if ( (uc_dataHK[20]&0x04) || (uc_dataHK[20]&0x08) ) Guc_HK_link[Gd_N_EWO] = Guc_HK_link[Gd_N_EWO+1] = 1; else Guc_HK_link[Gd_N_EWO] = Guc_HK_link[Gd_N_EWO+1] = 0; Guc_HK_link[Gd_N_MEF ] = app_1bit( uc_dataHK[20]&0x10 ); Guc_HK_link[Gd_N_MGFI] = app_1bit( uc_dataHK[20]&0x20 ); Guc_HK_link[Gd_N_MSAS] = app_1bit( uc_dataHK[20]&0x40 ); Guc_HK_link[Gd_N_MDM ] = app_1bit( uc_dataHK[20]&0x80 ); } // --- Mission Collect : Auto start/stop --- if (uc_dpuNo==0) { for (i=Gd_N_MEA1; i<=Gd_N_MGFO; i++) { if ( Guc_HK_link[i] != Guc_HK_link0[i] ) app01_BufCollectSet( i, Guc_HK_link[i]); } } else { for (i=Gd_N_MGFI; i<=Gd_N_SOR; i++) { if ( Guc_HK_link[i] != Guc_HK_link0[i] ) { if (i==Gd_N_MSAS ) { if ( Guc_HK_link[i] == 0) { app01_BufCollectSet( i, 0 ); Guc_MSAS_BufClct = 0; } // MSASI: Link Off (Link on: not automatic) } else if (i==Gd_N_EWO ) { if ( Guc_HK_link[i] == 0) app01_BufCollectSet( i, 0 ); // EWO: Link off imediately } else if (i!=Gd_N_EWO+1) { app01_BufCollectSet( i, Guc_HK_link[i]); } } } } memcpy( (unsigned char *)Guc_HK_link0, (unsigned char *)Guc_HK_link, 0x15 ); // ********************************** // *** SW/HK production : Common *** // ********************************** // ---------------------------------------------------- // *** Core Status *** [1B] // ---------------------------------------------------- // S/W-HK ADR-0 IMPORTANT Status i_flag = 0; for (i=344; i<408; i++) { if ( uc_dataHK[i] ) i_flag = 1; break; } // WDT-ERR i = 0; i = Guc_dpuRdn; if (uc_dpuNo != Guc_dpuNo) i = 3; // RDN uc_dataHK[i_dpuSwHK_size] = app_uc2bit(uc_dpuNo, 0, 0x1, 7)+ // B7 DPU Num 0:DPU1 1:DPU2 app_uc2bit(i, 0, 0x3, 5)+ // B5-6 DPU Mode 0:norm 1:Red-Init 2:Red-run 3:Red-slave app_uc2bit(Guc_WDTena, 0, 0x1, 4)+ // B4 WDT ENA 0:DIS 1:ENA app_uc2bit(i_flag, 0, 0x1, 3)+ // B3 WDT Err 0:non 1:ERR app_uc2bit(Guc_dpuHkMode, 0, 0x1, 2)+ // B2 HK_MODE 0:norm 1:check app_uc2bit(Guc_HK_repEna, 0, 0x1, 1)+ // B1 HK Rep 0:DIS 1:ENA (1bit) ( Guc_TLMm_enadis & 0x01); // B0 TLM-LM Dump: 0:DIS 1:ENA (1bit) i_dpuSwHK_size ++; // ---------------------------------------------------- // *** Application Status *** [36B] // ---------------------------------------------------- // S/W-HK ADR-1-6 0:APP01 status [6B] // S/W-HK ADR-7-12 1:APP02 status [6B] // S/W-HK ADR-13-18 2:APP03 status [6B] 3:APP13 status [6B] // S/W-HK ADR-19-24 4:APP04 status [6B] 5:APP14 status [6B] // S/W-HK ADR-25-30 6:APP05 status [6B] for (i=0; i<7; i++) { if (uc_dpuNo==0) { if (i==3 || i==5) continue; } else { if (i==2 || i==4) continue; } uc_dataHK[i_dpuSwHK_size++] = ( (Gui_hkApp_counter[i] << 5) & 0xE0) + // App0* - b5-7 Counter (0x00-0x07) ( Guc_hkApp_who[i] & 0x1F); // App0* - b0-4 Who? (0x00-0x1F) uc_dataHK[i_dpuSwHK_size++] = Guc_hkApp_where[i]; // App0* - Where? (0x00-0xFF) uc_dataHK[i_dpuSwHK_size++] = (Gui_hkApp_time[i] >> 16) & 0xFF; // App0* - TI (8bit from MSB) uc_dataHK[i_dpuSwHK_size++] = ((Gui_hkApp_time[i] >> 8) & 0xF0) + ( Gus_hkApp_overflow[i] & 0x0F); j = Gui_hkApp_load[i] ; if (i>=4) j = j>>2; // App05 - Load (max: 8sec min:1/32sec 4sec:0x80) if (i==6) j = j>>8; // App05 - Load (max: 32sec min: 1/8sec 4sec:0x20) if (j<0x100) uc_dataHK[i_dpuSwHK_size++] = j; // App0* - Load (max: 8192sec min: 32sec) else uc_dataHK[i_dpuSwHK_size++] = 0xFF; j = Gui_hkApp_loadPeak[i]; if (i>=4) j = j>>2; // App05 - Peak Load (max: 8sec min:1/32sec 4sec:0x80) if (i==6) j = j>>8; // App05 - Peak Load (max: 32sec min: 1/8sec 4sec:0x20) if (j<0x100) uc_dataHK[i_dpuSwHK_size++] = j; // App0* - Peak Load (max: 8192sec min: 32sec) else uc_dataHK[i_dpuSwHK_size++] = 0xFF; } // -------------------------------------------------- // *** SW/HK production : CMD (App01) *** [18B] // -------------------------------------------------- // S/W-HK ADR-37-45 DPU-Cmd status [9B] // S/W-HK ADR-46-54 DPU-User-Cmd status [9B] for (i=0; i<2; i++) { uc_dataHK[i_dpuSwHK_size++] = ((Gt_cmdDMC[i].uc_NumBuf << 5) & 0xE0) + // DMC CMD Num (3bit < d_CMDBUFF_NO = 0x07) ((Gt_cmdDMC[i].uc_NID ) & 0x1F); // NID uc_dataHK[i_dpuSwHK_size++] = (Gt_cmdDMC[i].ui_CntlID >> 8) & 0xFF; // Cntl-ID uc_dataHK[i_dpuSwHK_size++] = (Gt_cmdDMC[i].ui_CntlID ) & 0xFF; uc_dataHK[i_dpuSwHK_size++] = Gt_cmdDMC[i].uc_Ans; // MD*U_DMCCMD_EXEANS uc_dataHK[i_dpuSwHK_size++] = (Gt_cmdDMC[i].ui_ExeTime >> 16) & 0xFF; // MD*U_DMCCMD_EXETI LSB:8sec) uc_dataHK[i_dpuSwHK_size++] = (Gt_cmdDMC[i].ui_ExeTime >> 8) & 0xFF; uc_dataHK[i_dpuSwHK_size++] = ((Gt_cmdDMC[i].uc_GetCount & 0x1F) << 3 ) + // b3-7 Get Counter (00-1F) (Gt_cmdDMC[i].uc_GetErr & 0x07); // b0-2 Error (b0:Size-Overflow b1:Buff-Overflow b2:n/a) uc_dataHK[i_dpuSwHK_size++] = ((Gt_cmdDMC[i].uc_ExeCount & 0x1F) << 3 ) + // b3-7 Get Counter (00-3F) (Gt_cmdDMC[i].ui_ExeErr & 0x07); // b0-2 Error (b0:Size-Short b1:Non-NodeI b2:DPU) if (uc_dpuNo==0) uc_dataHK[i_dpuSwHK_size++] = (Gt_cmdDMC[i].ui_ExeErr >> 4) & 0xFF; // CMD-Exe-Err: DPU1 B0:MEA1 B1:MEA2 B2:MIA B3:MSA // B4:HEPE B5:HEPI B6:ENA B7:MGFO else uc_dataHK[i_dpuSwHK_size++] = (Gt_cmdDMC[i].ui_ExeErr >>12) & 0xFF; // CMD-Exe-Err: DPU2 B0:MGFI B1:MDM B2:MSAS B3:EWO // B5:SOR B6:MEF B7:MWE } // -------------------------------------------------- // *** TLM COMMON *** [3B] // -------------------------------------------------- // S/W-HK ADR-55-57 uc_dataHK[i_dpuSwHK_size++] = (Guc_OpeMode << 7) + // OPE_MODE 0:NRM 1:CRUISE app_uc2bit(Guc_HK_OneShot[Gd_N_DPU1], 0, 0x1, 6) + // MD1U_HK_OneShot_DPU1 app_uc2bit(Guc_HK_OneShot[Gd_N_DPU2], 0, 0x1, 5) + // MD2U_HK_OneShot_DPU2 (Gi_tlmBusyTask & 0x1F); // TLM-BUSY HeadID (0x00-0x14) uc_dataHK[i_dpuSwHK_size++] = ((Gi_tlmBusyTask >> 4) & 0xF0) + #ifndef _APP_DMY_ Gd_Ver; // ROM-VER #endif #ifdef _APP_DMY_ (Guc_Spec_Code & 0x0F); // DUMMY-TLM: 0: OFF 1:HK 2:OneShot 4:L/M 8:H #endif uc_dataHK[i_dpuSwHK_size++] = (unsigned char)Gi_dmaBusyTask; // DMA-BUSY NodeId(b7-3) + Blk/Pac:1(b2) + DataId (b0-1) [b2:no-use] // -------------------------------------------------- // *** SW/HK production : HK (App02) *** [7B] // -------------------------------------------------- // S/W-HK ADR-58 uc_dataHK[i_dpuSwHK_size] = app_uc2bit(Guc_HK_repInt[Gd_N_DPU1+uc_dpuNo], 0, 0xF, 4) + // MD*U_HK_DPU_INT app_uc2bit(Guc_TLMhk_cmp[Gd_N_DPU1+uc_dpuNo], 0, 0x1, 3); if (Gi_shareBusy>=0) uc_dataHK[i_dpuSwHK_size ] += (Gi_shareBusy & 0x07); else uc_dataHK[i_dpuSwHK_size ] += 0x07; i_dpuSwHK_size++; // S/W-HK ADR-59-62/63 HK Interval if (uc_dpuNo==0) { for (i=Gd_N_MEA1; i<=Gd_N_MGFO; i+=2) { uc_dataHK[i_dpuSwHK_size++] = app_uc2bit(Guc_HK_repInt[i ], 0, 0xF, 4)+ // MD*U_HK_**_INT app_uc2bit(Guc_HK_repInt[i+1], 0, 0xF, 0); // } uc_dataHK[i_dpuSwHK_size++] = app_uc2bit(Guc_HK_OneShot[Gd_N_MGFO], 0, 0x1, 7) + // MD*U_HK_OneShot B0:MEA1 B1:MEA2 B2:MIA B3:MSA app_uc2bit(Guc_HK_OneShot[Gd_N_ENA], 0, 0x1, 6) + // B4:HEPE B5:HEPI B6:ENA B7:MGFO app_uc2bit(Guc_HK_OneShot[Gd_N_HEPI], 0, 0x1, 5) + app_uc2bit(Guc_HK_OneShot[Gd_N_HEPE], 0, 0x1, 4) + app_uc2bit(Guc_HK_OneShot[Gd_N_MSA], 0, 0x1, 3) + app_uc2bit(Guc_HK_OneShot[Gd_N_MIA], 0, 0x1, 2) + app_uc2bit(Guc_HK_OneShot[Gd_N_MEA2], 0, 0x1, 1) + app_uc2bit(Guc_HK_OneShot[Gd_N_MEA1], 0, 0x1, 0); } else { for (i=Gd_N_MGFI; i<=Gd_N_MWE; i+=2) { uc_dataHK[i_dpuSwHK_size++] = app_uc2bit(Guc_HK_repInt[i ], 0, 0xF, 4)+ // MD*U_HK_MGFI_INT app_uc2bit(Guc_HK_repInt[i+1], 0, 0xF, 0); // MD*U_HK_MDM_INT } uc_dataHK[i_dpuSwHK_size++] = app_uc2bit(Guc_HK_OneShot[Gd_N_MWE], 0, 0x1, 7) + // MD*U_HK_SW B0:MGFI B1:MDM B2:MSASI B3:EWO app_uc2bit(Guc_HK_OneShot[Gd_N_MEF], 0, 0x1, 6) + // B5:SOR B6:MEF B7:MWE app_uc2bit(Guc_HK_OneShot[Gd_N_SOR], 0, 0x1, 5) + app_uc2bit(Guc_Spec_Code , 4, 0x1, 4) + // MSASI: DUMMY-PACKET-OUT app_uc2bit(Guc_HK_OneShot[Gd_N_EWO], 0, 0x1, 3) + app_uc2bit(Guc_HK_OneShot[Gd_N_MSAS], 0, 0x1, 2) + app_uc2bit(Guc_HK_OneShot[Gd_N_MDM], 0, 0x1, 1) + app_uc2bit(Guc_HK_OneShot[Gd_N_MGFI], 0, 0x1, 0); } // ---------------------------------------------------- // *** Mission-TLM production : TLM-M/L (App03/04) *** [5B] // ---------------------------------------------------- // S/W-HK ADR-64- if (uc_dpuNo==0) { for (i=Gd_N_MEA1; i<=Gd_N_MGFO; i+=2) { uc_dataHK[i_dpuSwHK_size++] = // CMP_LM, CMP_H app_uc2bit(Guc_TLMhk_cmp[i] , 0, 0x1, 7) + app_uc2bit(Guc_TLMm_cmp [i] , 0, 0x7, 4) + app_uc2bit(Guc_TLMhk_cmp[i+1], 0, 0x1, 3) + app_uc2bit(Guc_TLMm_cmp [i+1], 0, 0x7, 0); } } else { for (i=Gd_N_MGFI; i<=Gd_N_EWO; i+=2) { uc_dataHK[i_dpuSwHK_size++] = // CMP_LM, CMP_H app_uc2bit(Guc_TLMhk_cmp[i] , 0, 0x1, 7) + app_uc2bit(Guc_TLMm_cmp [i] , 0, 0x7, 4) + app_uc2bit(Guc_TLMhk_cmp[i+1], 0, 0x1, 3) + app_uc2bit(Guc_TLMm_cmp [i+1], 0, 0x7, 0); } uc_dataHK[i_dpuSwHK_size++] = app_uc2bit(Guc_TLMhk_cmp[Gd_N_MEF ], 0, 0x1, 7) + app_uc2bit(Guc_TLMm_cmp [Gd_N_AM2P], 0, 0x7, 4) + app_uc2bit(Guc_TLMhk_cmp[Gd_N_MWE ], 0, 0x1, 3) + app_uc2bit(Guc_TLMm_cmp [Gd_N_EFD ], 0, 0x7, 0); uc_dataHK[i_dpuSwHK_size++] = app_uc2bit(Guc_TLMm_cmp [Gd_N_EWOB], 0, 0x7, 4) + app_uc2bit(Guc_TLMhk_cmp[Gd_N_SOR ], 0, 0x1, 3) + app_uc2bit(Guc_TLMm_cmp [Gd_N_SOR ], 0, 0x7, 0); } uc_dataHK[i_dpuSwHK_size++] = Guc_MSAS_BufClct; // MSAS_CLCT: Collect Spin length (1B: 00-FF[17min]) // ------------------------------------------------- // *** Mission-TLM production : TLM-H (App05) *** // ------------------------------------------------- #ifdef _APP_DMY_ if ( Gui_Spec_Code_TI ) i=0x80; else i=0; #endif // _APP_DMY_ if (uc_dpuNo==0) { // H-ENA/DIS [1B] uc_dataHK[i_dpuSwHK_size++] = #ifdef _APP_DMY_ i + #endif // _APP_DMY_ app_uc2bit(Guc_TLMh_enadis[Gd_N_MGFO], 0, 0x1, 6) + app_uc2bit(Guc_TLMh_enadis[Gd_N_HEPI], 0, 0x1, 5) + app_uc2bit(Guc_TLMh_enadis[Gd_N_HEPE], 0, 0x1, 4) + app_uc2bit(Guc_TLMh_enadis[Gd_N_MSA], 0, 0x1, 3) + app_uc2bit(Guc_TLMh_enadis[Gd_N_MIA], 0, 0x1, 2) + app_uc2bit(Guc_TLMh_enadis[Gd_N_MEA2], 0, 0x1, 1) + app_uc2bit(Guc_TLMh_enadis[Gd_N_MEA1], 0, 0x1, 0); } else { // H-ENA/DIS [1B] uc_dataHK[i_dpuSwHK_size++] = #ifdef _APP_DMY_ i + #endif // _APP_DMY_ app_uc2bit(Guc_TLMh_enadis[Gd_N_EWOB], 0, 0x1, 6) + app_uc2bit(Guc_TLMh_enadis[Gd_N_EFD], 0, 0x1, 5) + // app_uc2bit(Guc_TLMh_enadis[Gd_N_AM2P], 0, 0x1, 4) + app_uc2bit(Guc_TLMh_enadis[Gd_N_EWO], 0, 0x1, 3) + app_uc2bit(Guc_TLMh_enadis[Gd_N_MGFI], 0, 0x1, 0); } // H-COMP [4B] uc_dataHK[i_dpuSwHK_size] = app_uc2bit(Guc_TLMm_cmp [Gd_N_DPU1+uc_dpuNo], 0, 0x1, 7) + app_uc2bit(Guc_TLMh_cmp [Gd_N_DPU1+uc_dpuNo], 0, 0x1, 6) + app_uc2bit(Gi_shareStatus, 0, 0x3, 4); if (uc_dpuNo==0) { uc_dataHK[i_dpuSwHK_size++] += app_uc2bit(Guc_TLMh_cmp [Gd_N_MEA1], 0, 0x7, 0); for (i=Gd_N_MEA2; i<=Gd_N_HEPE; i+=2) { uc_dataHK[i_dpuSwHK_size++] = app_uc2bit(Guc_TLMh_cmp [i ], 0, 0x7, 4) + app_uc2bit(Guc_TLMh_cmp [i+1], 0, 0x7, 0); } uc_dataHK[i_dpuSwHK_size++] = app_uc2bit(Guc_TLMh_cmp [Gd_N_HEPI], 0, 0x7, 4) + app_uc2bit(Guc_TLMh_cmp [Gd_N_MGFO], 0, 0x7, 0); } else { uc_dataHK[i_dpuSwHK_size++] += app_uc2bit(Guc_TLMh_cmp [Gd_N_MGFI], 0, 0x7, 0); uc_dataHK[i_dpuSwHK_size++] = 0; uc_dataHK[i_dpuSwHK_size++] = app_uc2bit(Guc_TLMh_cmp [Gd_N_EWO], 0, 0x7, 4); // app_uc2bit(Guc_TLMh_cmp [Gd_N_AM2P], 0, 0x7, 0); uc_dataHK[i_dpuSwHK_size++] = app_uc2bit(Guc_TLMh_cmp [Gd_N_EFD], 0, 0x7, 4) + app_uc2bit(Guc_TLMh_cmp [Gd_N_EWOB], 0, 0x7, 0); } // ***** Original: DR(3B) + TI-START(3x7=21B) + TI-LEN(2x7=14B) = 38B /// Converted to 38B // ---------------------------------------------------- // --> ALL // SCORE TOTAL NOW [2B] // // --> ALL - NML/EWO [12Bx2 = 24B] // 1B DATA - DR-ID // 3B DATA - TI-START // 2B DATA - TI-END // 3B DUMP - TI-START // 3B DUMP - TI-END // // --> LAST [12B] // 1B b3-7 i_BusyHeadId 0x00-0x10 // b0-2 uc_drID 0x00-0x06 // 3B DATA - TI-START // 2B DATA - TI-LEN // 3B DUMP - TI-START // 3B DUMP - TI-END uc_dataHK[i_dpuSwHK_size++] = Guc_TLMh_DrNum; // ****CMD to another DPU**** // Master->Slave Slave->Master // b0-4 DR1-5 --> (answer back) 0x1F // b5 <-- 1:finish 0x20 // b6 --- <-- 1:Going 0x40 // b7 1:Start --> [Start] 0x80 uc_dataHK[i_dpuSwHK_size++] = Gui_TRG_Score; // ***Trg_ScoreTotalNow*** // for (i=0; i<3; i++) { uc_dataHK[i_dpuSwHK_size++] =((Gi_TLMh_BusyHeadId [i] << 3) & 0xF8 ) + // 1B (Guc_TLMh_drID [i] & 0x07 ); ui_flag = Gui_TLMh_TIstart [i] << 4; memcpy( &uc_dataHK[i_dpuSwHK_size], &ui_flag, 3); i_dpuSwHK_size+=3; // 3B memcpy( &uc_dataHK[i_dpuSwHK_size], &(Gus_TLMh_TIlen[i]), 2); i_dpuSwHK_size+=2; // 2B ui_flag = Gui_TLMh_TIdump_start0[i] << 4; memcpy( &uc_dataHK[i_dpuSwHK_size], &ui_flag, 3); i_dpuSwHK_size+=3; // 3B ui_flag = Gui_TLMh_TIdump_end0 [i] << 4; memcpy( &uc_dataHK[i_dpuSwHK_size], &ui_flag, 3); i_dpuSwHK_size+=3; // 3B } // --------------------------------------------------- // *** Mission-TLM production : TLM-H:TRG (App05) *** // --------------------------------------------------- // CMD: // MD?U_TLM_H_TRG_SET (B1:Score-LEN) (B2:Score-th) (B3-4:Para-1) (B5-6:Para-2) (B7-8:Para-3) (B9-10:Para-4) uc_dataHK[i_dpuSwHK_size++] = Guc_TLMh_ScoreLen; uc_dataHK[i_dpuSwHK_size++] = Guc_TLMh_ScoreTh; for (i=0; i<4; i++) { uc_dataHK[i_dpuSwHK_size++] = Guc_TLMh_trgID[i]; uc_dataHK[i_dpuSwHK_size++] = Guc_TLMh_trgTh[i]; } // CMD: // MD?U_TLM_H_TRG_STRT (B1:SEL-DPU1) (B2:SEL-DPU2) (B3:DR-ID) (B4:TI-PRE) (B5:TI-LEN) uc_dataHK[i_dpuSwHK_size++] = Guc_TLMh_storeId1; uc_dataHK[i_dpuSwHK_size++] = Guc_TLMh_storeId2; uc_dataHK[i_dpuSwHK_size++] = ((Guc_TLMh_storeDrId & 0x1F) << 1) + // b1-b5 ***b6-7:non-used*** (Guc_TLMh_storeDrOvw & 0x01); // b0 uc_dataHK[i_dpuSwHK_size++] = Guc_TLMh_storeTimePre; uc_dataHK[i_dpuSwHK_size++] = Guc_TLMh_storeTimeLen; // CMD: // MD?U_TLM_H_DR_SET (B1:H-DR1) (B2:H-DR2) (B3:H-DR3) (B4:H-DR4) (B5:H-DR5) uc_dataHK[i_dpuSwHK_size++] = app_uc2bit( Guc_TLMh_DrWrite[1], 0, 0x01, 7) + // DR-STATUS Write (1:write) app_uc2bit( Guc_TLMh_DrOvw [1], 0, 0x01, 6) + // Empty (0:empty) app_uc2bit( Guc_TLMh_DrEmpty[1], 0, 0x01, 5) + // Ovw (1:Ovw-ENA) app_uc2bit( Guc_TLMh_DrWrite[2], 0, 0x01, 4) + app_uc2bit( Guc_TLMh_DrOvw [2], 0, 0x01, 3) + app_uc2bit( Guc_TLMh_DrEmpty[2], 0, 0x01, 2) + app_uc2bit( Guc_TLMh_DrWrite[3], 0, 0x01, 1) + app_uc2bit( Guc_TLMh_DrOvw [3], 0, 0x01, 0); uc_dataHK[i_dpuSwHK_size++] = app_uc2bit( Guc_TLMh_DrEmpty[3], 0, 0x01, 7) + app_uc2bit( Guc_TLMh_DrWrite[4], 0, 0x01, 6) + app_uc2bit( Guc_TLMh_DrOvw [4], 0, 0x01, 5) + app_uc2bit( Guc_TLMh_DrEmpty[4], 0, 0x01, 4) + app_uc2bit( Guc_TLMh_DrWrite[5], 0, 0x01, 3) + app_uc2bit( Guc_TLMh_DrOvw [5], 0, 0x01, 2) + app_uc2bit( Guc_TLMh_DrEmpty[5], 0, 0x01, 1); for (i=1; i<6; i++) { ui_flag = Gui_TLMh_DrTI[i] << 4; memcpy( &uc_dataHK[i_dpuSwHK_size], &ui_flag, 3); i_dpuSwHK_size+=3; // 3B if ( Gui_TLMh_DrScore[i] > 0xFF ) uc_dataHK[i_dpuSwHK_size++] = 0xFF; else uc_dataHK[i_dpuSwHK_size++] = Gui_TLMh_DrScore[i]; } // TRG-SCORE i = 0; if ( Gus_TRG1_Score[Gd_TRG_CALC] == 0xFFFF || Gus_TRG2_Score[Gd_TRG_CALC] == 0xFFFF ) i = 0xFF; else { i = Gus_TRG1_Score[Gd_TRG_CALC] + Gus_TRG2_Score[Gd_TRG_CALC]; if ( i>0xFE ) i = 0xFE; } uc_dataHK[i_dpuSwHK_size++] = (unsigned char)i; ui_flag = Gui_TRG_TiStart << 4; memcpy( &uc_dataHK[i_dpuSwHK_size], &ui_flag, 3); i_dpuSwHK_size+=3; ui_flag = Gui_TRG_TiEnd << 4; #ifdef _APP_RDN_ if ( Guc_dpuRdn == 1 ) ui_flag = Gui_InitRdn << 5; // MAX: 0x04200000 #endif // _APP_RDN_ memcpy( &uc_dataHK[i_dpuSwHK_size], &ui_flag, 3); i_dpuSwHK_size+=3; memcpy( &uc_dataHK[i_dpuSwHK_size], &Gus_TRG_ScoreTotal, 2); i_dpuSwHK_size+=2; // TI-scoreTotal - HK // ----------------------------------------- // Block & TLM INFO (TI:2B 8sec-6day) [16B x 8 = 104B] // ----------------------------------------- if (uc_dpuNo==0) { for (i=Gd_N_MEA1; i<=Gd_N_MGFO; i++) { app02_app_DsCheckNewOldBlock( i, 0, uc_dataHK, &i_dpuSwHK_size ); if ( i == Gd_N_ENA) { ui_flag = Guc_hkApp_who2 [0] << 24; memcpy( &uc_dataHK[i_dpuSwHK_size-2], &ui_flag, 1); ui_flag = Gui_hkApp_load2[0]; if (ui_flag>0xFF) ui_flag=0xFF; ui_flag = ui_flag << 24; memcpy( &uc_dataHK[i_dpuSwHK_size-1], &ui_flag, 1); if ((ui_counter & 0x0F) == 0) Gui_hkApp_load2[0] = Guc_hkApp_who2[0] = 0; } } } else { for (i=Gd_N_MGFI; i<=Gd_N_SOR; i++) { if ( i == Gd_N_EWO+1 ) continue; app02_app_DsCheckNewOldBlock( i, 0, uc_dataHK, &i_dpuSwHK_size ); if ( i == Gd_N_SOR) { ui_flag = Guc_hkApp_who2 [1] << 24; memcpy( &uc_dataHK[i_dpuSwHK_size-2], &ui_flag, 1); ui_flag = Gui_hkApp_load2[1]; if (ui_flag>0xFF) ui_flag=0xFF; ui_flag = ui_flag << 24; memcpy( &uc_dataHK[i_dpuSwHK_size-1], &ui_flag, 1); if ((ui_counter & 0x0F) == 0) Gui_hkApp_load2[1] = Guc_hkApp_who2[1] = 0; } if ( i == Gd_N_EWO ) { for (j=Gd_N_AM2P; j<=Gd_N_EWOB; j++) { app02_app_DsCheckNewOldBlock( i, j+1, uc_dataHK, &i_dpuSwHK_size ); } } } } // Packet Counter & TI 4B x 0x60 = 384B for (i=0; i<0x60; i++) { if ( ( uc_dpuNo==0 && (Guc_CatType[i] & 0x01) ) || ( uc_dpuNo==1 && (Guc_CatType[i] & 0x02) ) ) { uc_dataHK[i_dpuSwHK_size++] = Guc_tlmCount[i]; ui_flag = Gui_tlmTI[i] << 4; memcpy( &uc_dataHK[i_dpuSwHK_size], &ui_flag, 2); i_dpuSwHK_size+=2; } } memcpy( &(uc_dataHK[i_dpuSwHK_size]), &(G2uc_packet[1000 + uc_dpuNo*100]), 33 ); if (uc_dpuNo==0) i_dpuSwHK_size += 33; // 33B else i_dpuSwHK_size += 32; // 32B // ***NEW**************追加要請********************************************* // ***NEW*** app15_putAplHK_CORE( c_buff [2]) // ***NEW*** c_buff[2]: 伸展HK(表 6-3)バイト位置 190-191 の内容 // ***NEW*** [0] b0-3(MSB側) U_CmdDmc_Ans_short U_CmdDmc_Ans (lower 4bit) // ***NEW*** b4-7 U_CmdDmc_ExeCNT_short U_CmdDmc_ExeCNT (lowe 4bit) // ***NEW*** b0-3(MSB側) U_CmdUsr_Ans_short U_CmdUsr_Ans (lower 4bit) // ***NEW*** b4-7 U_CmdUsr_ExeCNT_short U_CmdUsr_ExeCNT (lowe 4bit) c_buff[0] = (char)( ( (Gt_cmdDMC[0].uc_Ans & 0xF) << 4) + (Gt_cmdDMC[0].uc_ExeCount & 0xF) ); c_buff[1] = (char)( ( (Gt_cmdDMC[1].uc_Ans & 0xF) << 4) + (Gt_cmdDMC[1].uc_ExeCount & 0xF) ); app15_putAplHK_CORE( c_buff ); // ***************************** // *** HK Packet production *** // ***************************** if ( Guc_dpuHkMode || // Check-mode Guc_HK_OneShot[uc_dpuNo + 3] ) { // OneShot /* if (uc_dpuNo==0) { for (i=Gd_N_DPU1; i<=Gd_N_MGFO; i++) { // 9x2: DPU1, MEA1, MEA2, MIA, MSA, HEPe, HEPi, ENA, MGFO if ( i==Gd_N_DPU2 ) continue; uc_dataHK[i_dpuSwHK_size++] = Guc_hkApp_loadNID2 [i]; uc_dataHK[i_dpuSwHK_size++] = Guc_hkApp_loadNIDmax2[i]; } for (i=Gd_N_DPU1; i<=Gd_N_MGFO; i++) { // 9x2: DPU1, MEA1, MEA2, MIA, MSA, HEPe, HEPi, ENA, MGFO if ( i==Gd_N_DPU2 ) continue; uc_dataHK[i_dpuSwHK_size++] = Guc_hkApp_loadNID [i]; uc_dataHK[i_dpuSwHK_size++] = Guc_hkApp_loadNIDmax [i]; } } else { for (i=Gd_N_DPU2; i<=Gd_N_MWE; i++) { // 8x2: DPU2, MGFI, MDM, MSASI, EWOE, SOR, MEF, MWE if ( i>Gd_N_DPU2 && iGd_N_DPU2 && i 0 ) { // Available of Data i_bufOvw_work += (t_blockInfo.c_invalidFlg); // Invalid flag *uip_ti_oldest = t_blockInfo.ui_createTime; break; } // To next block #ifdef _APP_RDN_ if ( app_Rdn_nodeId( uc_nodeId ) == 0) { #endif // _APP_RDN_ i_flag = dpu_shiftBlock( uc_nodeId, uc_dataId, i_bufId, +1, &t_blockInfo ); // OLDER #ifdef _APP_RDN_ } else { i_flag = app_Rdn_shiftBlock( uc_nodeId, uc_dataId, +1, &t_blockInfo ); // OLDER } #endif // _APP_RDN_ if ( i_flag ) break; } // --------------------------------- // *** Block Info: latest *** // --------------------------------- #ifdef _APP_RDN_ if ( app_Rdn_nodeId( uc_nodeId ) == 0) { #endif // _APP_RDN_ i_flag = dpu_seekNewestBlock ( uc_nodeId, uc_dataId, i_bufId, &t_blockInfo ); #ifdef _APP_RDN_ } else { i_flag = app_Rdn_seekNewestOldestBlock( uc_nodeId, uc_dataId, 0, &t_blockInfo ); } #endif // _APP_RDN_ if (i_flag) return( i_bufOvw_work ); // (ERR) bit1:0/1(nrm) bit2:OVW bit3:2(no-collect) *** rev. 121220 *** for (;;) { if ( i_flag == 0 && // no error t_blockInfo.i_replyNum > 0 ) { // Available of Data i_bufOvw_work += (t_blockInfo.c_invalidFlg << 1); // Invalid flag *uip_ti_latest = t_blockInfo.ui_createTime; // if ( *uip_ti_latest < *uip_ti_oldest ) { // ***TMP*** // unsigned int i0 = *uip_ti_latest; // ***TMP*** // unsigned int i1 = *uip_ti_oldest; // ***TMP*** // } // ***TMP*** break; } // To next block #ifdef _APP_RDN_ if ( app_Rdn_nodeId( uc_nodeId ) == 0) { #endif // _APP_RDN_ i_flag = dpu_shiftBlock ( uc_nodeId, uc_dataId, i_bufId, -1, &t_blockInfo ); // OLDER #ifdef _APP_RDN_ } else { i_flag = app_Rdn_shiftBlock( uc_nodeId, uc_dataId, -1, &t_blockInfo ); // OLDER } #endif // _APP_RDN_ if ( i_flag ) break; } // **** CLCT: bit3 **** if ( i_flag == 0 && i_bufId_work == i_bufId && i_switch_work == 1 ) i_bufOvw_work += 8; // *** rev. 121220 *** return( i_bufOvw_work ); // *** rev. 121220 *** }