/******************************************************************************* * モジュール名称 :APP01 - CMD from DMC to DPU (for EWO task) * * 作成日・作成者 :2015/2/10 Y.Kasaba, T.Imachi * * 参照 : app01_DPU.c を参照のこと * * 注意 : EDIT権限は、EWO組 * ********************************************************************************/ #define __APP_WFC_OFA__ #define __APP_WFC_AM2P__ #include "app_common.h" #include "app_EWO.h" // *** Prototype - Local *** unsigned char app01_EWO ( unsigned int, unsigned char * , int); // unsigned char app01_InitVar_EWO ( void ); //unsigned char app01_ErrClr_EWO ( void ); // unsigned char app01_DPU ( unsigned int, unsigned char * , int); // *** Local Macro *** void app01_EWO_E2PROM ( int, unsigned int, int, unsigned char *, int); // ******************************** // *** CMD analyses / execution *** // ******************************** unsigned char app01_EWO ( unsigned int ui_Cntl, unsigned char uc_Data[], int i_Size ) { unsigned char uc_flag = 0; int i; // -------------------------------------------------------- // ----- Common: INIT ------------------------------------- // -------------------------------------------------------- if (ui_Cntl==0x0010) { if (i_Size!=0) return(0xFF); // MD*U_EWO_HW_INIT (ex.name MD*U_EWO_E2PROM) G1uc_EWO_E2PROM = 0x01; // EWO: E2PROM operation: 1:start 2:EFD-LPF(1) 3:EFD-LPF(2) 4:EFD-SWEEP 6:EWOB-LPF 7:Hungary-table 0:none // G1uc_EWO_relay_init = 0x01; // Initialization of EWO relays and flags } // else if (ui_Cntl==0x0011) { if (i_Size!=3) return(0xFF); // MD*U_EWO_ECL_SET --- Antenna eclipse angle (SSAS: 225deg) ---- Gus_EWO_Ec_X1ang = ( uc_Data[0] * 5) % 360; // X1(WPT-S1: 0) eclipse angle Spin-Phase = 45deg (=0x09) << HK N(0-72)x5 >> // Y1(MEF-S1: 90) eclipse angle Spin-Phase = 135deg (=0x1B) << HK N(0-72)x5 >> // X2(WPT-S2:180) eclipse angle Spin-Phase = 225deg (=0x2D) << HK N(0-72)x5 >> // Y2(MEF-S2:270) eclipse angle Spin-Phase = 315deg (=0x3F) << HK N(0-72)x5 >> Guc_EwoMdmData_before = uc_Data[1]; Guc_EwoMdmData_after = uc_Data[2]; } // -------------------------------------------------------- // ----- Common: Mode set --------------------------------- // -------------------------------------------------------- else if (ui_Cntl==0x0100) { if (i_Size!=1) return(0xFF); // MD*U_EFD_FILTER_MODE Guc_EFD_mode = uc_Data[0]; // EFD-DPB-*: 0x*0:ave 0x*1:deci // EFD-DPB-L: 0x0*:8Hz 0x1*:4Hz 0x2*:2Hz // SORBET: 0x0*:1/5spin 0x8*:1/10spin // RMAP 23 01 6C 00 21 01 F6 00 04 00 00 00 00 00 0E 1A 21 C0 00 00 07 01 02 01 08 10 01 00 91 } // else if (ui_Cntl==0x0101) { if (i_Size!=3) return(0xFF); // MD*U_EWO_WFCE_OFA_CH G13uc_WFCE_L_channel = (uc_Data[0] & 0x03); // 0x00:|E|, 0x01:E1, 0x02:E2 G13uc_WFCE_M1_channel = (uc_Data[1] & 0x03); // 0x00:|E|, 0x01:E1, 0x02:E2 G13uc_WFCE_M2_channel = (uc_Data[2] & 0x03); // 0x00:|E|, 0x01:E1, 0x02:E2 } // else if (ui_Cntl==0x0102) { if (i_Size!=3) return(0xFF); // MD*U_EWO_WFCB_OFA_CH G13uc_WFCB_L_channel = (uc_Data[0] & 0x03); // 0x00:|B|, 0x01:Bx, 0x02:By, 0x03:Bz G13uc_WFCB_M1_channel = (uc_Data[1] & 0x03); // 0x00:|B|, 0x01:Bx, 0x02:By, 0x03:Bz G13uc_WFCB_M2_channel = (uc_Data[2] & 0x03); // 0x00:|B|, 0x01:Bx, 0x02:By, 0x03:Bz } // else if (ui_Cntl==0x0103) { if (i_Size!=1) return(0xFF); // MD*U_EWO_WFC_OFA_INTERVAL G13uc_WFC_OFA_interval = (uc_Data[0] & 0x03); // } // else if (ui_Cntl==0x0104) { if (i_Size!=1) return(0xFF); // OFA_COMP_SET 0:非圧縮 1:圧縮 rev. 2012.11.26 Imachi Guc_TLMm_cmp[Gd_N_EWOE] = Guc_TLMm_cmp[Gd_N_EWOB] = Guc_TLMm_cmp[Gd_N_EFD] = Guc_TLMm_cmp[Gd_N_AM2P] = uc_Data[0] & 0x03; // rev. by YK 121126 // if ( uc_Data[0] != 0) // rev. by YK 121126 // Guc_TLMm_cmp[Gd_N_EWOE] = Guc_TLMm_cmp[Gd_N_EWOB] = Guc_TLMm_cmp[Gd_N_EFD] = Guc_TLMm_cmp[Gd_N_AM2P] = 1; // rev. by YK 121126 // else // rev. by YK 121126 // Guc_TLMm_cmp[Gd_N_EWOE] = Guc_TLMm_cmp[Gd_N_EWOB] = Guc_TLMm_cmp[Gd_N_EFD] = Guc_TLMm_cmp[Gd_N_AM2P] = 0; // rev. by YK 121126 } // else if (ui_Cntl==0x0105) { if (i_Size!=3) return(0xFF); // MD*U_EWO_WFC_CAL_ON G14uc_WFC_CAL_stage = 1; G14s_AM2P_TCWord = ( (short)uc_Data[0] << 8 ) + (short)uc_Data[1]; G14uc_AM2P_shift = uc_Data[2]; } // else if (ui_Cntl==0x0110) { if (i_Size!=3) return(0xFF); // AM2P_OBS_SET if( uc_Data[0] == 0xff && uc_Data[1] == 0xff ){ // FF FF の場合,TC word を再セットせずに実行 G14uc_AM2P_stage = 2; } else { G14uc_AM2P_stage = 1; G14s_AM2P_TCWord = ( (short)uc_Data[0] << 8 ) + (short)uc_Data[1]; G14uc_AM2P_shift = uc_Data[2]; } } // else if (ui_Cntl==0x0120) { if (i_Size!=1) return(0xFF); // WFC_VL_CH_SET (旧 WFC_VL_STRT) G14uc_WFCB_VL_ch = uc_Data[0] & 0x07; G14uc_WFCE_VL_ch = ( uc_Data[0] >> 4 ) & 0x03; } // else if (ui_Cntl==0x0130) { if (i_Size!=1) return(0xFF); // WFC_H_COMP_SET 0:非圧縮 1:圧縮 if ( uc_Data[0] != 0) { Guc_TLMh_cmp[Gd_N_EWOE] = Guc_TLMh_cmp[Gd_N_EWOB] = 3; // rev. by YK 121126 // Guc_TLMh_cmp[Gd_N_EWOE] = Guc_TLMh_cmp[Gd_N_EWOB] = Guc_TLMh_cmp[Gd_N_EFD] = Guc_TLMh_cmp[Gd_N_AM2P] = 3; // rev. by YK 121126 } else { Guc_TLMh_cmp[Gd_N_EWOE] = Guc_TLMh_cmp[Gd_N_EWOB] = 0; // rev. by YK 121126 // Guc_TLMh_cmp[Gd_N_EWOE] = Guc_TLMh_cmp[Gd_N_EWOB] = Guc_TLMh_cmp[Gd_N_EFD] = Guc_TLMh_cmp[Gd_N_AM2P] = 0; // rev. by YK 121126 } } // else if (ui_Cntl==0x0131) { if (i_Size!=1) return(0xFF); // WFC_H_CH_SET G5uc_WFCB_H_ch = uc_Data[0] & 0x07; G5uc_WFCE_H_ch = ( uc_Data[0] >> 4 ) & 0x03; } // else if (ui_Cntl==0x0132) { if (i_Size!=1) return(0xFF); // WFC_H_PREC_SET G5ui_EWO_WFCH_prec = (unsigned int)uc_Data[0]; } // else if (ui_Cntl==0x0133) { if (i_Size!=1) return(0xFF); // WFC_H_RATE_SET // 2013.11.13 T.Imachi G5uc_EWO_WFCH_rate = uc_Data[0] & 0x7f; } // else if (ui_Cntl==0x0140) { if (i_Size!=1) return(0xFF); // WFC_MDM_ENA 0:DIS 1:ENA G14uc_WFC_MDM_eve_ena = uc_Data[0]; } // else if (ui_Cntl==0x01FF) { if (i_Size!=1) return(0xFF); // AM2P_SUSPND 0:ACT 1:Suspended G14uc_AM2P_suspend = uc_Data[0]; } // else if (ui_Cntl==0x0200) { if (i_Size!=3) return(0xFF); // AM2P_TC_SET [0]-[1]:TCword [2]:shift if( uc_Data[0] == 0xff && uc_Data[1] == 0xff && uc_Data[2] == 0xff ){ // 2012.12.20 Kasaba G14uc_AM2P_stage = 0; // ALL 0xff なら初期化のみ // 2012.12.17 Imachi } // 2012.12.17 Imachi else{ G14s_AM2P_TCWord_reserve = ( (short)uc_Data[0] << 8 ) + (short)uc_Data[1]; G14uc_AM2P_shift_reserve = uc_Data[2]; } } // else if (ui_Cntl==0x0201) { // if (i_Size!=2) return(0xFF); // AM2P_INT_SET 0x00:DIS 0x01-0xFE:INT 0xFF:OneShot if( i_Size == 2 ){ if( uc_Data[0] == 0 ){ G14uc_AM2P_disable = 1; // インターバルが0の場合、AM2P 停止フラグを立てるのみ } else{ // G14uc_AM2P_interval = uc_Data[0]; if( uc_Data[0] == 0xff ){ // G14ui_AM2P_interval = 0xffff; G14ui_AM2P_interval_preset = 0xffff; // 2013.08.12 T.imachi } else{ // G14ui_AM2P_interval = (unsigned int)uc_Data[0]; G14ui_AM2P_interval_preset = (unsigned int)uc_Data[0]; // 2013.08.12 T.imachi } // G14ui_AM2P_interval = (unsigned int)uc_Data[0]; G14uc_AM2P_disable = 0; } G14uc_AM2P_trg_num = uc_Data[1]; // トリガ回数 } else if( i_Size == 3 ){ if( uc_Data[0] == 0 && uc_Data[1] == 0 ){ G14uc_AM2P_disable = 1; // インターバルが0の場合、AM2P 停止フラグを立てるのみ } else{ // G14ui_AM2P_interval = (unsigned int)uc_Data[0] << 8 | (unsigned int)uc_Data[1]; G14ui_AM2P_interval_preset = (unsigned int)uc_Data[0] << 8 | (unsigned int)uc_Data[1]; // 2013.08.12 T.imachi G14uc_AM2P_disable = 0; } G14uc_AM2P_trg_num = uc_Data[2]; // トリガ回数 } else{ return( 0xFF ); } } // else if (ui_Cntl==0x0202) { // if (i_Size!=1) return(0xFF); // WFC_VL_INT_SET 0x00:DIS 0x01-0xFE:INT 0xFF:OneShot if( i_Size == 1 ){ // G14uc_WFC_VL_interval = uc_Data[0]; G14ui_WFC_VL_interval = uc_Data[0]; } else if( i_Size == 2 ){ G14ui_WFC_VL_interval = (unsigned int)uc_Data[0] << 8 | (unsigned int)uc_Data[1]; } else{ return( 0xFF ); } } // else if (ui_Cntl==0x0203) { if( i_Size == 3 ){ // ISDM_INT_SET [0-1] Interval [2] spectrum dump enable 2013.11.18 T.Imachi G14ui_ISDM_interval = (unsigned int)uc_Data[0] << 8 | (unsigned int)uc_Data[1]; G14uc_ISDM_dump_ena = uc_Data[2]; } else{ return( 0xFF ); } // if (i_Size!=1) return(0xFF); // ISDM_INT_SET 0x00:DIS 0x01-0xFE:INT 0xFF:OneShot /* if( i_Size == 1 ){ // G14uc_ISDM_interval = uc_Data[0]; G14ui_ISDM_interval = uc_Data[0]; } else if( i_Size == 2 ){ G14ui_ISDM_interval = (unsigned int)uc_Data[0] << 8 | (unsigned int)uc_Data[1]; } else{ return( 0xFF ); } */ } // else if (ui_Cntl==0x0204) { if (i_Size<3) return(0xFF); // ISDM_TBL_WRT [0]:Addr [1]:Length [2]-[n]:Data if ( ( uc_Data[0] + uc_Data[1] ) > 74 ) return(0xFF); // Invalid parameter for( i=0; i> 1; G13uc_EWOB_AGC_ena = uc_Data[0] & 0x01; } // else if (ui_Cntl==0x0209) { if (i_Size!=1) return(0xFF); // AGC_INT_SET G13uc_EWO_AGC_interval = uc_Data[0]; } // else if (ui_Cntl==0x020a) { if (i_Size!=4) return(0xFF); // WFCE_AGC_LIMIT_SET G13i_EWO_WFCE_upper_limit = ( (int)uc_Data[3] << 8 ) | (int)uc_Data[2]; G13i_EWO_WFCE_lower_limit = ( (int)uc_Data[1] << 8 ) | (int)uc_Data[0]; } // else if (ui_Cntl==0x020b) { if (i_Size!=4) return(0xFF); // WFCB_AGC_LIMIT_SET G13i_EWO_WFCB_upper_limit = ( (int)uc_Data[3] << 8 ) | (int)uc_Data[2]; G13i_EWO_WFCB_lower_limit = ( (int)uc_Data[1] << 8 ) | (int)uc_Data[0]; } // else if (ui_Cntl==0x020c) { if (i_Size!=1) return(0xFF); // ISDM_RAW_ENA // 2013.11.13 T.Imachi G14uc_ISDM_dump_ena = uc_Data[0]; } else if (ui_Cntl==0x020d) { if (i_Size!=1) return(0xFF); // WFC_VL_MOD_SET // 2013.12.17 T.Imachi G14uc_WFCE_VL_M_ena = ( uc_Data[0] >> 3 ) & 0x01; G14uc_WFCE_VL_L_ena = ( uc_Data[0] >> 2 ) & 0x01; G14uc_WFCB_VL_M_ena = ( uc_Data[0] >> 1 ) & 0x01; G14uc_WFCB_VL_L_ena = ( uc_Data[0] ) & 0x01; } // -------------------------------------------------------- // ----- Mode preset -------------------------------------- // -------------------------------------------------------- else if (ui_Cntl==0x0300) { if (i_Size!=1) return(0xFF); // AM2P_EWOE_FREQ_SELECT Guc_AM2P_EWOE_freq = uc_Data[0]; } else if (ui_Cntl==0x0301) { if (i_Size!=1) return(0xFF); // AM2P_EWOE_INPUT_SELECT Guc_AM2P_EWOE_input = uc_Data[0]; } // else if (ui_Cntl==0x0302) { if (i_Size!=1) return(0xFF); // AM2P_EWOE_GAIN_SET Guc_AM2P_EWOE_gain = uc_Data[0]; } // else if (ui_Cntl==0x0303) { if (i_Size!=1) return(0xFF); // AM2P_WPTP_GAIN_SET Guc_AM2P_WPTP_gain = uc_Data[0]; } // else if (ui_Cntl==0x0304) { if (i_Size!=2) return(0xFF); // AM2P_MEF_MODE_SET memcpy( &Guc_AM2P_MEF_mode[0], &uc_Data[0], 2 ); } // else if (ui_Cntl==0x0305) { if (i_Size!=3) return(0xFF); // AM2P_MEF_BIAS1_SET memcpy( &Guc_AM2P_MEF_BIAS1[0], &uc_Data[0], 3 ); } // else if (ui_Cntl==0x0306) { if (i_Size!=3) return(0xFF); // AM2P_MEF_BIAS2_SET memcpy( &Guc_AM2P_MEF_BIAS2[0], &uc_Data[0], 3 ); } // -------------------------------------------------------- // ----- System command override -------------------------- // -------------------------------------------------------- else if (ui_Cntl==0x0400) { if (i_Size!=1) return(0xFF); // EWOE_FREQ_SELECT Guc_EWOE_freq = uc_Data[0]; Guc_EWOE_freq_set = 1; } // else if (ui_Cntl==0x0401) { if (i_Size!=1) return(0xFF); // EWOE_INPUT_SELECT Guc_EWOE_input = uc_Data[0]; Guc_EWOE_input_set = 1; } // else if (ui_Cntl==0x0402) { if (i_Size!=1) return(0xFF); // EWOE_GAIN_SET Guc_EWOE_gain = uc_Data[0]; Guc_EWOE_gain_set = 1; } // else if (ui_Cntl==0x0403) { if (i_Size!=1) return(0xFF); // EWO_WPTP_GAIN_SET Guc_EWO_WPTP_gain = uc_Data[0]; Guc_EWO_WPTP_gain_set = 1; } // else if (ui_Cntl==0x0404) { if (i_Size!=2) return(0xFF); // EWO_MEF_MODE_SET memcpy( &Guc_EWO_MEF_mode[0], &uc_Data[0], 2 ); Guc_EWO_MEF_mode_set = 1; } // else if (ui_Cntl==0x0405) { if (i_Size!=3) return(0xFF); // EWO_MEF_BIAS1_SET memcpy( &Guc_EWO_MEF_BIAS1[0], &uc_Data[0], 3 ); Guc_EWO_MEF_BIAS1_set = 1; } // else if (ui_Cntl==0x0406) { if (i_Size!=3) return(0xFF); // EWO_MEF_BIAS2_SET memcpy( &Guc_EWO_MEF_BIAS2[0], &uc_Data[0], 3 ); Guc_EWO_MEF_BIAS2_set = 1; } // -------------------------------------------------------- // ----- EFD: Mode set ------------------------------------ // -------------------------------------------------------- else if (ui_Cntl==0x0800) { if (i_Size!=2) return(0xFF); // MD*U_EWO_EFD_MODE Guc_EFD_SPB_ena = uc_Data[0]; // Guc_EFD_SPB_ena M: B4:WPT-S1(0x10) B5:WPT-S2(0x20) B6:MEF-S1(0x40) B7:MEF-S2(0x80) // L: B0:WPT-S1(0x11) B1:WPT-S2(0x22) B2:MEF-S1(0x44) B3:MEF-S2(0x88) Guc_EFD_DPB_ena = uc_Data[1]; // ENA/DIS for DPB M: b4:WPT-Wa(0x10) b5:MEF-Wa(0x20) b6:WPT-Sp(0x40) b7:MEF-Sp(0x80) // L: b0:WPT-Wa(0x11) b1:MEF-Wa(0x22) b2:WPT-Sp(0x44) b3:MEF-Sp(0x88) // # DPB: M:ALL, L:Ex-wave, Ey-wave, SPB: M:ALL, L:Ex+, Ey+ (14:46) // RMAP 23 01 6C 00 21 01 F5 00 04 00 00 00 00 00 0F 1A 21 C0 00 00 08 01 02 01 08 10 08 00 F5 F7 // Guc_EFD_SPB_ena &= ( 0xF0 + (Guc_EFD_SPB_ena>>4) ); Guc_EFD_DPB_ena &= ( 0xF0 + (Guc_EFD_DPB_ena>>4) ); } // else if (ui_Cntl==0x0801) { if (i_Size!=1) return(0xFF); // MD*U_EWO_SWEEP_TBL G1uc_EFD_Sweep_Load = 1; // SWEEP-LOAD: ENA Guc_EFD_SweepTbl = uc_Data[0] & 0x03; // SWEEP-TABLE: 0-3 Guc_EFD_SweepTbl_sum= 0x00; // SWEEP-SUM } // else uc_flag = 0xFF; // *** Error: CMD not found *** return( uc_flag ); } // **********************************************************************************************************