/******************************************************************************* * モジュール名称 :APP01 - CMD from DMC to DPU (for MGF* task) * * 作成日・作成者 :2011/11/27 Y.K. * * * * 参照 : app01_DPU.c を参照のこと * * 注意 : EDIT権限は、MGF組 * * 改定日・改定者 :2012/06/03 A. Matsuoka TLM Out Parameter Set * * 改定日・改定者 :2013/11/08 A. Matsuoka SW Parameter length * * 改定日・改定者 :2013/11/19 A. Matsuoka SW Parameter length * ********************************************************************************/ #include "app_common.h" #include "app_MGF.h" // *** Prototype - Local (MGF-I) *** unsigned char app01_MGFI ( unsigned int, unsigned char * , int); // // unsigned char app01_InitVar_MGFI ( void ); // unsigned char app01_ErrClr_MGFI ( void ); // *** Prototype - Local (MGF-O) *** unsigned char app01_MGFO ( unsigned int, unsigned char * , int); // // unsigned char app01_InitVar_MGFO ( void ); // unsigned char app01_ErrClr_MGFO ( void ); // *************************************** // *** MGF-O: CMD analyses / execution *** // *************************************** unsigned char app01_MGFO ( unsigned int ui_Cntl, unsigned char uc_Data[], int i_Size ) { unsigned char uc_flag = 0 ; int i, k1, k2, n ; union mgfo_pram_mrr_add { unsigned short s ; unsigned char uc[2] ; } mrr_add ; #ifdef TLM_STAT union uni_long { long l ; unsigned char uc[4] ; } u_long ; #endif switch (ui_Cntl) { // -------------------------------------------------------- // ----- Admin -------------------------------------------- // -------------------------------------------------------- /* Comment out by YK 111127 case 0x0000: if (i_Size!=0) return(0xFF); uc_flag = app01_InitVar_MGFO(); // MD*U_MGFO_INIT case 0x0001: if (i_Size!=0) return(0xFF); uc_flag = app01_ErrClr_MGFO (); // MD*U_MGFO_ERR_CLR */ // Multi-command execution with 1-sec interval case 0x8000: // Command ID for MGF-O command n = uc_Data[0] ; // number of stored command if(0xff==n) { Gl_MGFO_Cmm_n = 0 ; // clear all stored commands break ; } if(n>6) break ; // invarid command number if(n+Gl_MGFO_Cmm_n>30) break ; // too many commands to store for(i=0;i8) break ; // invarid command number if(n*2+Gl_MGFO_Mrr_n>32) break ; // too many commands to store mrr_add.uc[0] = uc_Data[1] ; mrr_add.uc[1] = uc_Data[2] ; for(i=0;i=5) break ; // for(i=0;i<20;i++) { // corrected 20110903 // Guc_MGF_Sw_Param[0][Gl_MGF_SwP_n[0]][i] = uc_Data[i]; // } memcpy(Guc_MGF_Sw_Param[0][Gl_MGF_SwP_n[0]], uc_Data, 19) ; // 20 -> 19 change 20131108 Matsuoka Gl_MGF_SwP_n[0]++ ; uc_flag=0; break; // TLM Out Parameter Set (8 bytes) case 0x8020: // Command ID // for(i=0;i<8;i++) { // Guc_MGF_TLM_Param[0][i] = uc_Data[i]; // } memcpy(Guc_MGF_TLM_Param[0], uc_Data, 8) ; uc_flag=0; break; default: uc_flag = 0xFF; break; // *** Error: CMD not found *** } return( uc_flag ); } // ********************************************************************************************************** // *************************************** // *** MGF-I: CMD analyses / execution *** // *************************************** unsigned char app01_MGFI ( unsigned int ui_Cntl, unsigned char uc_Data[], int i_Size ) { unsigned char uc_flag = 0; // int i ; #ifdef TLM_STAT union uni_long { long l ; short s[2] ; unsigned char uc[4] ; } u_long ; #endif switch (ui_Cntl) { // -------------------------------------------------------- // ----- Admin -------------------------------------------- // -------------------------------------------------------- /* Comment out by YK 111127 case 0x0000: if (i_Size!=0) return(0xFF); uc_flag = app01_InitVar_MGFI(); // MD*U_MGFI_INIT case 0x0001: if (i_Size!=0) return(0xFF); uc_flag = app01_ErrClr_MGFI (); // MD*U_MGFI_ERR_CLR */ // Hardware Parameter Set (4 bytes) case 0x8002: // Command ID // Guc_MGFI_Cmm_Param[0] =uc_Data[0]; // Sw Parameter 1 // Guc_MGFI_Cmm_Param[1] =uc_Data[1]; // Sw Parameter 1 // Guc_MGFI_Cmm_Param[2] =uc_Data[2]; // Sw Parameter 1 memcpy(Guc_MGFI_Cmm_Param, uc_Data, 3) ; Guc_MGFI_Cmm_Param[3] =uc_Data[3]; // Sw Parameter 1 Gs_MGF_dt_offset[1] = uc_Data[3] ; // Delay Gl_MGFI_Cmm_n = 2 ; #ifdef TLM_STAT Guc_MGF_TLM_stat[1][86] = 2 ; #endif uc_flag=0; break; // Software Parameter Set (20 bytes) case 0x8011: // Command ID if(Gl_MGF_SwP_n[1]>=5) break ; // for(i=0;i<20;i++) { // Guc_MGF_Sw_Param[1][Gl_MGF_SwP_n[1]][i] = uc_Data[i] ; // } memcpy(Guc_MGF_Sw_Param[1][Gl_MGF_SwP_n[1]], uc_Data, 19) ; // 20 -> 19 change 20131108 Matsuoka Gl_MGF_SwP_n[1]++ ; uc_flag=0; break; // TLM Out Parameter Set (8 bytes) case 0x8021: // Command ID // for(i=0;i<8;i++) { // Guc_MGF_TLM_Param[1][i] =uc_Data[i]; // Command Parameter // } memcpy(Guc_MGF_TLM_Param[1], uc_Data, 8) ; uc_flag=0; break; default: uc_flag = 0xFF; break; // *** Error: CMD not found *** } #ifdef TLM_STAT u_long.s[0] = Gs_MGF_dt_offset[1] ; memcpy(&Guc_MGF_TLM_stat[1][90], u_long.uc, 2) ; #endif return( uc_flag ); } // **********************************************************************************************************