/******************************************************************************* * モジュール名称 :Application Header * * モジュールラベル :app_ewo.h * * タスク区分 :ヘッダ * * 機能 :define/Struct/Variable/Prototype * * 使用上の注意 :特になし * * 注意 :EDIT権限は、EWO組 * * 作成日・作成者 :2018/1/12 Y.Kasaba * *******************************************************************************/ #ifndef _APP_EWO_H_ #define _APP_EWO_H_ #include "app_common.h" // ********************** // ***** EWO-COMMON ***** // ********************** // E2PROM Write in APP01 & 02 extern unsigned char G1uc_EWO_E2PROM; // EWO: E2PROM operation: 1:start 2:EFD-LPF(1) 3:EFD-LPF(2) 4:EFD-SWEEP 5:EWOB-LPF 6:Hungary-table 0:none // Relays initialization extern unsigned char G1uc_EWO_relay_init; // EFD-SWEEP TABLE extern unsigned char Guc_EFD_SweepTbl; extern unsigned char Guc_EFD_SweepTbl_sum; // EFD-table check sum extern unsigned char G1uc_EFD_Sweep_Load; // Data mode in APP03 extern unsigned char Guc_EFD_mode; // ***TMP*** EFD-DPB: 0:ave 1:deci // Antenna angle (SSAS: 225deg) extern unsigned short Gus_EWO_Ec_X1ang; // X1(WPT-S1: 0) eclipse angle //extern unsigned short Gus_EWO_Ec_Y1ang; // Y1(MEF-S1: 90) eclipse angle //extern unsigned short Gus_EWO_Ec_X2ang; // X2(WPT-S2:180) eclipse angle //extern unsigned short Gus_EWO_Ec_Y2ang; // Y2(MEF-S2:270) eclipse angle extern unsigned char Guc_EwoMdmData_after; // 2 extern unsigned char Guc_EwoMdmData_before; // 8 // ******************* // ***** EWO-WFC ***** // ******************* // EWOE/B work area in APP03 #include "app_EWO_WFC.h" // EWOE/B work area in APP04 [AM2P: E-only, Decimationしない、を前提] extern short G14s_WFC_X_H[2048]; // Waveform-X-H i_dataId=0(65.536kHz,125ms) i_dataId=1(349.525kHz,23.5ms) ****TMP**** extern short G14s_WFC_Y_H[2048]; // Waveform-Y-H i_dataId=0(65.536kHz,125ms) i_dataId=1(349.525kHz,23.5ms) ****TMP**** #include "app_EWO_AM2P.h" #include "app_EWO_ISDM.h" // EWOE/B work area in APP05 (Defimationしない、を前提) extern short G5s_WFC_X_H[2048]; // Waveform-X-H i_dataId=0(65.536kHz,125ms) i_dataId=1(349.525kHz,23.5ms) ****TMP**** extern short G5s_WFC_Y_H[2048]; // Waveform-Y-H i_dataId=0(65.536kHz,125ms) i_dataId=1(349.525kHz,23.5ms) ****TMP**** extern short G5s_WFC_Z_H[2048]; // Waveform-Y-H i_dataId=0(65.536kHz,125ms) i_dataId=1(349.525kHz,23.5ms) ****TMP**** extern double Gf_EWO_compWaveBuf[240]; // ********************************** // ***** EWO-Dicimation Filters ***** // ********************************** // Decimation Filters (app_EWO_decimation.c // APP03のみで利用、であればこれでOK.APP04/05でも使うなら、別々に定数を定義しないといけない。 // 同時使用の可能性を排除できず。さもなくば、BUSY-flagで交通整理が必要になる。 #define Gd_EWO_DEC_MAX 8192 // Work area size //extern double Gf_EWO_DEC_work[Gd_EWO_DEC_MAX]; // Work area extern double G13f_EWO_DEC_work[Gd_EWO_DEC_MAX]; // Work area (for APP13) extern double G14f_EWO_DEC_work[Gd_EWO_DEC_MAX]; // Work area (for APP14) // extern double Gf_EWO_DEC_h2 [31]; // 1/2 ( 31 parameters) extern double Gf_EWO_DEC_h2_2 [25]; // 1/2 ( 25 parameters) 特性改善版 2012.08.09 extern double Gf_EWO_DEC_h2_efd [27]; // 1/2 ( 25 parameters) EFD用 2012.08.22 //extern double Gf_EWO_DEC_h32 [150]; // 1/32 (150 parameters) extern double Gf_EWO_DEC_h32 [156]; // 1/32 (156 parameters) 特性改善版 2012.08.09 //#define Gd_EWO_FFT_MAX_N 8192 extern double Gf_EWO_signal [16384]; // Gd_EWO_FFT_MAX_N * 2 extern int Gi_EWO_workarea [93]; //(int)app_math_sqrt(Gd_EWO_FFT_MAX_N) + 2]; extern double Gf_EWO_sin_table[8192]; // Gd_EWO_FFT_MAX_N extern double G14f_EWO_signal [2048]; // Gd_EWO_FFT_MAX_N * 2 extern int G14i_EWO_workarea [40]; //(int)app_math_sqrt(Gd_EWO_FFT_MAX_N) + 2]; extern double G14f_EWO_sin_table[1024]; // Gd_EWO_FFT_MAX_N // *************** // ***** EFD ***** // *************** // Work area extern short Gs_EFD_work [1280]; // for Packet data: 1.2kB - max extern double Gf_EFD_work [3200]; // ***TMP*** for Decimation 128x5x5 = 3200MAX extern double Gf_EFD_DEC_work[3200]; // ***TMP*** for Decimation 128x5x5 = 3200MAX extern double Gf_EFD_re[64]; // for FFT extern double Gf_EFD_im[64]; // for FFT extern unsigned char Guc_EFD_FFT [16]; // for FFT extern unsigned char Guc_EFD_FFT0[16][32]; // for FFT // extern unsigned int Gui_EFD_Spin; // DPB data: 0:Y 1:X //extern unsigned char Guc_EFD_packet[256]; // // Data mode extern unsigned char Guc_EFD_SPB_ena; // ENA/DIS for SPB (B0:WPT-S1 B1:WPT-S2 B2:MEF-S1 B3:MEF-S2) extern unsigned char Guc_EFD_DPB_ena; // ENA/DIS for DPB (B0:WPT-S B1:MEF-S) extern unsigned char Guc_EFD_SlowSweep; // Slow-Sweep mode: 1 extern unsigned char Guc_EFD_Bias1; // Bias1 extern unsigned char Guc_EFD_Bias2; // Bias2 // DPB: data #define Gd_EFD_DPB_Y 0 #define Gd_EFD_DPB_X 1 extern short Gs_EFD_DPB_Data[3200][2]; // DPB data: 0:Y 1:X extern unsigned short Gus_EFD_DPB_Size [5]; // extern unsigned int Gui_EFD_DPB_Ti [5]; // extern unsigned short Gus_EFD_DPB_TiSun[5]; // // SPB: data #define Gd_EFD_DPB_Y1 0 #define Gd_EFD_DPB_X1 1 #define Gd_EFD_DPB_Y2 2 #define Gd_EFD_DPB_X2 3 extern short Gs_EFD_SPB_Data[800][4]; // SPB data: 0:Y1 1:X1 2:Y2 3:X2 extern unsigned short Gus_EFD_SPB_Size [5]; // extern unsigned int Gui_EFD_SPB_Ti [5]; // extern unsigned short Gus_EFD_SPB_TiSun[5]; // // extern short Gs_EFD_SPB_DataM[4][4]; // SPB data: 0:Y1 1:X1 2:Y2 3:X2 extern short Gs_EFD_SPB_DataL[8][4]; // SPB data: 0:Y1 1:X1 2:Y2 3:X2 extern short Gs_EFD_SPB_DataM_num; // --- num of remained data extern short Gs_EFD_SPB_DataL_num; // --- num of remained data // SWEEP: data extern unsigned short Gus_EFD_SWEEP_Size; extern unsigned int Gui_EFD_SWEEP_Ti; // --- DATA EXCHANGE: SOR/EFD extern unsigned char Guc_SOR_data_status0; // SORBET: Status extern unsigned char Guc_SOR_data_status; // SORBET: Status extern unsigned char Guc_EFD_data_status; // EFD: Status // ************************ // ***** Hungary:ISDM ***** // ************************ //extern unsigned char Guc_EWO_ISDM_tbl[5048]; // ****TMP**** extern unsigned char Guc_EWO_ISDM_tbl[74]; // rev. 2012.11.26 Imachi // Contents-2 Hungary 5048B // ------------------------------------------ // Uint (4byte) 2 X 4byte = 8 // Short int(2byte) (13+40) X 2byte = 106 // Uchar (1byte) 5 X 1byte = 5 // ------------------------------------------ // sub Total 119B x 8 = 952 B // // + short int RefSpect[256][8] = 2x256x8 = 4096 byte // ==================================================== // total 5048 B // -------------------------------------------------------- // // // typedef struct conf { // uint E_Bgnd; // uint E_Proc; // word Min_Max_E_Step; // byte Min_Max_Lines; // word NB_SNR; // word NB_Pw_SN; // byte NB_Pw_Lines; // word NB_QF; // word Mid_SNR; // word Mid_Pw_SN; // byte Mid_Pw_Lines; // word Mid_QF; // word WB_SNR; // word WB_Pw_SN; // byte WB_Pw_Lines; // word WB_QF; // word Multi_SNR; // word Multi_Pw_SN; // byte Multi_Pw_Lines; // word Multi_QF; // word Init[40]; // }__attribute__((__packed__)) configstr; // ============================================= // configstr Config[8]; // unsigned short int RefSpect[256][8]; // ***************************************************************** // ********************* // ***** EWO-Macro ***** // ********************* // ****************************************************************************************************************** // EWO: Decimation Fiters --- 1/2 decimation filter with down sampling // ------------------------------------------------------------------------------------------------------------------ // int app_EWO_decimation_2( double *f_data, // [IN/OUT] 元波形および変換後の波形 // int i_data_num, // [INPUT] 元波形のデータ点数 [MAX: 8192] // int i_down_sample_rate ) // [INPUT] ダウンサンプリングレート (1:ダウンサンプルしない) // // 戻り値: 変換後のデータ点数. // // ダウンサンプル無: i_data_num-(フィルタ係数の数[31])/2 // // ダウンサンプリング時: 上記 / i_down_sample_rate // // Filter係数 31個 // ****************************************************************************************************************** extern int app_EWO_decimation_2( double *, int, double *, int ); extern int app_EWO_decimation_2_2( double *, int, double *, int ); // 特性改善版 2012.08.09 extern int app_EWO_decimation_2_efd( double *, int, double *, int ); // EFD 用 2012.08.22 // ****************************************************************************************************************** // EWO: Decimation Fiters --- 1/32 decimation filter with down sampling // ------------------------------------------------------------------------------------------------------------------ // int app_EWO_decimation_32( double *f_data, // [IN/OUT] 元波形および変換後の波形 // int i_data_num, // [INPUT] 元波形のデータ点数 [MAX: 8192] // int i_down_sample_rate ) // [INPUT] ダウンサンプリングレート (1:ダウンサンプルしない) // // 戻り値: 変換後のデータ点数 // // ダウンサンプル無: i_data_num-(フィルタ係数の数[150])/2 // // ダウンサンプリング時: 上記 / i_down_sample_rate // // Filter係数 150個 // ****************************************************************************************************************** extern int app_EWO_decimation_32( double *, int, double *, int ); /* ******************************************************************* EWO: FFT ==================================================================== void app_EWO_fft( double *f_waveform, int i_nData, double *f_spectrumAmp, double *f_spectrumPhase ) -------------------------------------------------------------------- 機能: 波形を FFT し,スペクトルの振幅と位相を返す. 値が戻るのは,正の周波数成分のみ. よって,スペクトルの各値が返る配列の大きさは,それぞれ波形 データ配列の半分の大きさでよい. 引数: double *f_waveform FFT 対象の波形(パラメータ) <=8192 int i_nData FFT データ点数(パラメータ) <=8192 double *f_spectrumAmp スペクトルの振幅(戻り値) <=8192 double *f_spectrumPhase スペクトルの位相(戻り値) <=8192 戻り値: なし ==================================================================== ==================================================================== void app_EWO_rfft( double *f_waveform, int i_nData, double *f_re, double *f_im ) -------------------------------------------------------------------- 機能: 波形を FFT し,スペクトルの振幅と位相を返す. 値が戻るのは,正の周波数成分のみ. よって,スペクトルの各値が返る配列の大きさは,それぞれ波形 データ配列の半分の大きさでよい. 引数: double *f_waveform FFT 対象の波形(パラメータ) <=8192 int i_nData FFT データ点数(パラメータ) <=8192 double *f_re スペクトルの実部(戻り値) <=8192 double *f_im スペクトルの虚部(戻り値) <=8192 戻り値: なし ==================================================================== ==================================================================== void app_EWO_rfft_dual( int i_nData, double* f_waveform1, double* f_re1, double* f_im1, double* f_waveform2, double* f_re2, double* f_im2 ) -------------------------------------------------------------------- 機能: 2つの波形を一度に FFT し,スペクトルの振幅と位相を返す. 値が戻るのは,正の周波数成分のみ. よって,スペクトルの各値が返る配列の大きさは,それぞれ波形 データ配列の半分の大きさでよい. 引数: int i_nData FFT データ点数(パラメータ) <=8192 double *f_waveform? FFT 対象の波形(パラメータ) <=8192 double *f_re? スペクトルの実部(戻り値) <=8192 double *f_im? スペクトルの虚部(戻り値) <=8192 戻り値: なし ==================================================================== ******************************************************************* */ extern void app_EWO_rfft( double* , int , double* , double* ); extern void app_EWO_rfft_dual( int i_nData, double* f_waveform1, double* f_re1, double* f_im1, double* f_waveform2, double* f_re2, double* f_im2 ); // !! For APP14 !! extern void app_EWO_rfft14( double* , int , double* , double* ); extern void app_EWO_rfft_dual14( int i_nData, double* f_waveform1, double* f_re1, double* f_im1, double* f_waveform2, double* f_re2, double* f_im2 ); // Compres waveform data /* extern unsigned int app_EWO_compWave( short *input, // [INPUT] Input data int inlen, // [INPUT] Input data長 unsigned short *output // [OUTPUT] Output data ); */ unsigned int app_EWO_compWave( short *input, // [INPUT] Input data int inlen, // [INPUT] Input data長 unsigned short *output, // [OUTPUT] Output data double *f_waveBuf // [INPUT/OUTPUT] 計算結果引継ぎバッファ ); // =========================================================================== // app_EWO_Hannig **** Hanning function: 0.5-0.5 cos(2πx) [x=0-1] **** // [INPUT] double f_data[] Original data // double f_work[] Return data // int i_num Num of data // =========================================================================== extern void app_EWO_Hanning( double [], double [], int ); // =========================================================================== // app_EWO_Hammig2 **** Hamming function: 0.54-0.46 cos(2πx) [x=0-1] **** // [INPUT] double f_data[] Original data // double f_work[] Return data // int i_num Num of data // =========================================================================== extern void app_EWO_Hamming2( double [], double [], int ); // =========================================================================== // app_EWO_Hammig **** Hamming function: 0.54-0.46 cos(2πx) [x=0-1] **** // [INPUT] short s_data[] Original data // double f_work[] Return data // int i_num Num of data // =========================================================================== extern void app_EWO_Hamming( short [], double [], int ); // =========================================================================== // app_EWO_Blackman **** Blackman function: 0.42 - 0.5 cos(2πx) + 0.08 cos(4πx) **** // [INPUT] short s_data[] Original data // double f_work[] Return data // int i_num Num of data // =========================================================================== extern void app_EWO_Blackman( short [], double [], int ); #endif /* _APP_EWO_H_ */