form_FirCoeffCal.h
上传用户:gelin96
上传日期:2017-01-08
资源大小:20993k
文件大小:17k
源码类别:

MTK

开发平台:

C++ Builder

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*****************************************************************************
  36.  *
  37.  * Filename:
  38.  * ---------
  39.  *   form_FirCoeffCal.h
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  FIR coefficient calibration form header
  48.  *
  49.  * Author:
  50.  * -------
  51.  *  Andy Ueng (mtk00490)
  52.  *
  53.  *============================================================================
  54.  *             HISTORY
  55.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  56.  *------------------------------------------------------------------------------
  57.  * $Revision$
  58.  * $Modtime$
  59.  * $Log$
  60.  * 
  61.  *------------------------------------------------------------------------------
  62.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  63.  *============================================================================
  64.  ****************************************************************************/
  65. //---------------------------------------------------------------------------
  66. #ifndef _FORM_FIRCOEFFCAL_H_
  67. #define _FORM_FIRCOEFFCAL_H_
  68. //---------------------------------------------------------------------------
  69. #include <Classes.hpp>
  70. #include <Controls.hpp>
  71. #include <StdCtrls.hpp>
  72. #include <Forms.hpp>
  73. #include <ComCtrls.hpp>
  74. #include <Dialogs.hpp>
  75. #include <ExtCtrls.hpp>
  76. #include <Graphics.hpp>
  77. #include "sp_coef_cal.h"
  78. //------------------------------------------------------------------------------
  79. #define  TOTAL_BOUNDARY_FREQ_NUM  17
  80. //------------------------------------------------------------------------------
  81. //------------------------------------------------------------------------------
  82. class TfrmFIRCoeffCal : public TForm
  83. {
  84. __published: // IDE-managed Components
  85.         TLabel *lbl1xxHz;
  86.         TEdit *edt1xxHzdB;
  87.         TLabel *lbl2xxHz;
  88.         TEdit *edt2xxHzdB;
  89.         TLabel *lbl6xxHz;
  90.         TLabel *lbl3xxHz;
  91.         TEdit *edt3xxHzdB;
  92.         TEdit *edt6xxHzdB;
  93.         TEdit *edt7xxHzdB;
  94.         TLabel *lbl7xxHz;
  95.         TEdit *edt1xxxHzdB;
  96.         TLabel *lbl1xxxHz;
  97.         TEdit *edt2xxxHzdB;
  98.         TLabel *lbl2xxxHz;
  99.         TLabel *lbl3xxxHz;
  100.         TEdit *edt3xxxHzdB;
  101.         TLabel *lbl34xxHz;
  102.         TEdit *edt34xxHzdB;
  103.         TLabel *lbl39xxHz;
  104.         TEdit *edt39xxHzdB;
  105.         TLabel *Label11;
  106.         TEdit *edtFIRTaps;
  107.         TLabel *Label12;
  108.         TEdit *edtExtraDB;
  109.         TLabel *Label13;
  110.         TComboBox *cbExtraFreq;
  111.         TButton *btnIdealize;
  112.         TGroupBox *GroupBox1;
  113.         TRadioButton *rbTx;
  114.         TRadioButton *rbRx;
  115.         TStatusBar *sbAudioCal;
  116.         TButton *btnLoad;
  117.         TOpenDialog *dlgOpenUpl;
  118.         TStaticText *stInputFileName;
  119.         TImage *imAudioCal;
  120.         TLabel *lblVertical0;
  121.         TLabel *lblVertical1;
  122.         TLabel *lblVertical2;
  123.         TLabel *lblVertical3;
  124.         TLabel *lblVertical4;
  125.         TLabel *lblVertical5;
  126.         TLabel *lblVertical6;
  127.         TLabel *Label15;
  128.         TLabel *lbl100Hz;
  129.         TLabel *lbl1000Hz;
  130.         TLabel *Label16;
  131.         TLabel *Label17;
  132.         TButton *btnRun;
  133.         TStaticText *lblHint;
  134.         TTimer *HintTimer;
  135.         TLabel *lblVertical7;
  136.         TLabel *lblVertical8;
  137.         TEdit *edt5xxHzdB;
  138.         TLabel *lbl5xxHz;
  139.         TEdit *edt8xxHzdB;
  140.         TLabel *lbl8xxHz;
  141.         TEdit *edt13xxHzdB;
  142.         TEdit *edt18xxHzdB;
  143.         TLabel *lbl13xxHz;
  144.         TLabel *lbl18xxHz;
  145.         TEdit *edt25xxHzdB;
  146.         TLabel *lbl25xxHz;
  147.         TStaticText *stOutputTxFileName;
  148.         TStaticText *stOutputRxFileName;
  149.         TButton *btnSetupOutpuRxFile;
  150.         TButton *btnSetupOutputTxFile;
  151.         TLabel *Label1;
  152.         TLabel *Label2;
  153.         TLabel *Label3;
  154.         TSaveDialog *SaveDialog;
  155.         TLabel *Label4;
  156.         TEdit *edtFirScale;
  157.         TComboBox *cb1xxHz;
  158.         TComboBox *cb2xxHz;
  159.         TComboBox *cb3xxHz;
  160.         TComboBox *cb5xxHz;
  161.         TComboBox *cb6xxHz;
  162.         TComboBox *cb7xxHz;
  163.         TComboBox *cb8xxHz;
  164.         TComboBox *cb1xxxHz;
  165.         TComboBox *cb13xxHz;
  166.         TComboBox *cb18xxHz;
  167.         TComboBox *cb2xxxHz;
  168.         TComboBox *cb25xxHz;
  169.         TComboBox *cb3xxxHz;
  170.         TComboBox *cb34xxHz;
  171.         TComboBox *cb39xxHz;
  172.         TGroupBox *gbEquipment;
  173.         TRadioButton *rbUPL;
  174.         TGroupBox *gbFileFormat;
  175.         TRadioButton *rbLinear;
  176.         TRadioButton *rbLogdB;
  177.         TOpenDialog *dlgOpenAcqua;
  178.         TRadioButton *rbMicrotronix;
  179.         TComboBox *cbBoundary;
  180.         TLabel *Label5;
  181.         TOpenDialog *dlgOpenMicrotronix;
  182.         TRadioButton *rbAcqua;
  183.         TRadioButton *m_rbVita;
  184.         TOpenDialog *m_dlgOpenVita;
  185.         TRadioButton *m_rbUPV;
  186.         TOpenDialog *m_dlgUPV;
  187.         void __fastcall btnLoadClick(TObject *Sender);
  188.         void __fastcall cbExtraFreqChange(TObject *Sender);
  189.         void __fastcall rbTxClick(TObject *Sender);
  190.         void __fastcall rbRxClick(TObject *Sender);
  191.         void __fastcall btnIdealizeClick(TObject *Sender);
  192.         void __fastcall btnRunClick(TObject *Sender);
  193.         void __fastcall edt1xxHzdBExit(TObject *Sender);
  194.         void __fastcall edt2xxHzdBExit(TObject *Sender);
  195.         void __fastcall edt3xxHzdBExit(TObject *Sender);
  196.         void __fastcall edt6xxHzdBExit(TObject *Sender);
  197.         void __fastcall edt7xxHzdBExit(TObject *Sender);
  198.         void __fastcall edt1xxxHzdBExit(TObject *Sender);
  199.         void __fastcall edt2xxxHzdBExit(TObject *Sender);
  200.         void __fastcall edt3xxxHzdBExit(TObject *Sender);
  201.         void __fastcall edt34xxHzdBExit(TObject *Sender);
  202.         void __fastcall edt39xxHzdBExit(TObject *Sender);
  203.         void __fastcall FormCreate(TObject *Sender);
  204.         void __fastcall edtFIRTapsExit(TObject *Sender);
  205.         void __fastcall FormDragDrop(TObject *Sender, TObject *Source,
  206.           int X, int Y);
  207.         void __fastcall FormDockOver(TObject *Sender,
  208.           TDragDockObject *Source, int X, int Y, TDragState State,
  209.           bool &Accept);
  210.         void __fastcall Image1DragDrop(TObject *Sender, TObject *Source,
  211.           int X, int Y);
  212.         void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
  213.           TShiftState Shift, int X, int Y);
  214.         void __fastcall imAudioCalMouseDown(TObject *Sender,
  215.           TMouseButton Button, TShiftState Shift, int X, int Y);
  216.         void __fastcall edtExtraDBExit(TObject *Sender);
  217.         void __fastcall imAudioCalDragOver(TObject *Sender,
  218.           TObject *Source, int X, int Y, TDragState State, bool &Accept);
  219.         void __fastcall imAudioCalEndDrag(TObject *Sender, TObject *Target,
  220.           int X, int Y);
  221.         void __fastcall edt5xxHzdBExit(TObject *Sender);
  222.         void __fastcall edt8xxHzdBExit(TObject *Sender);
  223.         void __fastcall edt13xxHzdBExit(TObject *Sender);
  224.         void __fastcall edt18xxHzdBExit(TObject *Sender);
  225.         void __fastcall edt25xxHzdBExit(TObject *Sender);
  226.         void __fastcall btnSetupOutputTxFileClick(TObject *Sender);
  227.         void __fastcall btnSetupOutpuRxFileClick(TObject *Sender);
  228.         void __fastcall FormShow(TObject *Sender);
  229.         void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
  230.         void __fastcall mTimerTimer(TObject *Sender);
  231.         void __fastcall rbSpecClick(TObject *Sender);
  232.         void __fastcall rbGoodSoundClick(TObject *Sender);
  233.         void __fastcall edtFirScaleCheck(TObject *Sender);
  234.         void __fastcall cb1xxHzChange(TObject *Sender);
  235.         void __fastcall cb2xxHzChange(TObject *Sender);
  236.         void __fastcall cb3xxHzChange(TObject *Sender);
  237.         void __fastcall cb5xxHzChange(TObject *Sender);
  238.         void __fastcall cb6xxHzChange(TObject *Sender);
  239.         void __fastcall cb7xxHzChange(TObject *Sender);
  240.         void __fastcall cb8xxHzChange(TObject *Sender);
  241.         void __fastcall cb1xxxHzChange(TObject *Sender);
  242.         void __fastcall cb13xxHzChange(TObject *Sender);
  243.         void __fastcall cb18xxHzChange(TObject *Sender);
  244.         void __fastcall cb2xxxHzChange(TObject *Sender);
  245.         void __fastcall cb25xxHzChange(TObject *Sender);
  246.         void __fastcall cb3xxxHzChange(TObject *Sender);
  247.         void __fastcall cb34xxHzChange(TObject *Sender);
  248.         void __fastcall cb39xxHzChange(TObject *Sender);
  249.         void __fastcall HintTimerTimer(TObject *Sender);
  250.         void __fastcall rbUPLClick(TObject *Sender);
  251.         void __fastcall rbAcquaClick(TObject *Sender);
  252.         void __fastcall cbBoundaryChange(TObject *Sender);
  253.         void __fastcall FormActivate(TObject *Sender);
  254.         void __fastcall rbMicrotronixClick(TObject *Sender);
  255.         void __fastcall m_rbVitaClick(TObject *Sender);
  256.         void __fastcall m_rbUPVClick(TObject *Sender);
  257.         
  258. private: // User declarations
  259.         // common
  260.         bool m_b45TapSupport;
  261.         bool m_bInit;
  262.         
  263.         // flag
  264.         bool  isTRCLoadOk;
  265.         bool  isOrgCurvePlot;
  266.         bool  isWantedCurvePlot;
  267.         bool  isCompensateCurvePlot;
  268.         int max_y_grid, min_y_grid;
  269.         TLabel *lblVertical[VERTICAL_LABEL_NUM], *lblHz[TOTAL_SEL_FREQ_NUM];
  270.         TEdit *edtHzdB[TOTAL_SEL_FREQ_NUM];
  271.         CSPCOEFCAL  SP_COEF_CAL_Object;
  272.         double  LogFloor;
  273.         double  pi;
  274.         double  TrcScale;
  275.         sSpCoefCalParameters  OrgSpCoef, WantedSpCoef, IdealSpCoef, OldFirSpCoef;
  276.         sSpCoefCalParameters  m_sTargetSpCoef;
  277.         sSpCoefCalParameters  UIWantedSpCoef, NewFirSpCoef, ck_NewSpCoef;
  278.         sSpCoefCalParameters  ProcessSpCoef;
  279.         sSelectedParameters  SelectedSpCoef, UISelectedSpCoef;
  280.         sFirCoefParameters  old_FIR, Tx_FIR, Rx_FIR;
  281.         sFirCoefParameters   old_FIR_norm;
  282.         sFirRespParameters  FirResp_freqz_H, FirResp_freqz_F;
  283.         int     m_iTxLimitNum;
  284.         int     m_iRxLimitNum;
  285.         double  m_dTxUpLimit[TOTAL_BOUNDARY_FREQ_NUM];
  286.         double  m_dTxLowLimit[TOTAL_BOUNDARY_FREQ_NUM];
  287.         double  m_dRxUpLimit[TOTAL_BOUNDARY_FREQ_NUM];
  288.         double  m_dRxLowLimit[TOTAL_BOUNDARY_FREQ_NUM];
  289.         double  m_dLow_bound_dB[TOTAL_BOUNDARY_FREQ_NUM];
  290.         double  m_dUp_bound_dB[TOTAL_BOUNDARY_FREQ_NUM];
  291.        // double  m_dUITxUpLimit[8], m_dUITxLowLimit[8], m_dUIRxUpLimit[8], m_dUIRxLowLimit[8];
  292.         double  m_dLow_limit_dB;
  293.         double  m_dHz100_limit_dB;
  294.         double  m_dMean_bound_dB[TOTAL_BOUNDARY_FREQ_NUM];
  295.         float  FirScale;
  296.         int  m_iTxLimitFreq[TOTAL_BOUNDARY_FREQ_NUM];
  297.         int  m_iRxLimitFreq[TOTAL_BOUNDARY_FREQ_NUM];
  298.         int  m_iHz_bound[TOTAL_BOUNDARY_FREQ_NUM];
  299.       //  int  UITxLimitFreq[8], UIRxLimitFreq[8];
  300.         int  m_iWantedTaps;
  301.         int  m_iWantedHz[TOTAL_SEL_FREQ_NUM];
  302.         // UI
  303.         int  vStart, hStart, hStart2, vScale, hScale, vDistance, hDistance, Segments;
  304.         int  hInScale1, hOutScale1, hInScale2, hOutScale2;
  305.         sAudioPoint  WantedPoint;
  306.         bool isWantedCircleOnDrag;
  307.         int  WantedCircleOnDragIndex;
  308.         bool m_bFirstFormShow;
  309. public: // User declarations
  310.         void _fastcall SubClassWndProc( Messages::TMessage &Message);
  311.         __fastcall TfrmFIRCoeffCal(TComponent* Owner);
  312.         void Init();
  313.         // UI
  314.         void  DisplayDirection( void );
  315.         void  SaveDirection( void );
  316.         void  DisplayBoundary( void );
  317.         void  SaveBoundary( void );
  318.         void  DisplayEquipment( void );
  319.         void  SaveEquipment( void );
  320.         void  DisplayFileFormat( void );
  321.         void  SaveFileFormat( void );
  322.         void  Set_Boundary( void );
  323.         bool  edtdBCheck(TObject *Sender);
  324.         void  ClearImage( void );
  325.         void  GetMinMaxY( sSpCoefCalParameters *p_SpCoef, double *p_min_y, double *p_max_y );
  326.         void  IdealizeExcute( void );
  327.         // plot curve
  328.         void  PlotCurve( int plot_mask );
  329.         void  PlotGrid(int min_x, int max_x, int min_y, int max_y);
  330.         void  PlotBoundaryCurve( void );
  331.         void  PlotWantedCurve( void );
  332.         void  PlotOrgCurve( void );
  333.         void  PlotCompensatedCurve( void );
  334.         void  PlotWantedCircle( void );
  335.        // void  DisplayEditor( void );
  336.         // other UI
  337.         void  UpdateAllSelectParameters( void );
  338.         void  UpdateAllSelectEditor( void );
  339.         void  UpdateExtradBEditor( void );
  340.         void  UpdateEditor( void );
  341.         void  UpdateSelectedLabel( void );
  342.         void  UpdatecbExtraFreq( sSpCoefCalParameters* p_SpCoef );
  343.         void  Updatecb1xxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  344.         void  Updatecb2xxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  345.         void  Updatecb3xxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  346.         void  Updatecb5xxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  347.         void  Updatecb6xxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  348.         void  Updatecb7xxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  349.         void  Updatecb8xxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  350.         void  Updatecb1xxxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  351.         void  Updatecb15xxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  352.         void  Updatecb18xxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  353.         void  Updatecb2xxxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  354.         void  Updatecb25xxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  355.         void  Updatecb3xxxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  356.         void  Updatecb34xxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  357.         void  Updatecb39xxHz( sSpCoefCalParameters* p_SpCoef, int idx );
  358.         void  GetWantedIndex( sSpCoefCalParameters *p_SpCoefCal, sSelectedParameters *p_SpSelected );
  359.         void  GetIndexOfMostSimilar( int wanted_Hz, sSpCoefCalParameters *p_SpCoefCal, unsigned int* p_index );
  360.         void  Update_dB(sSelectedParameters *p_SelPar, int index, double dB, sSpCoefCalParameters *p_UPL_database);
  361.         //void  Update_dB(sSpCoefCalParameters *p_SpCoefCal, int index, double dB);
  362.        // int   getWantedSpCoefIndex(double Hz, sSpCoefCalParameters *p_SpCoefCal);
  363.         int   getSelectedSpCoefIndex(double Hz, sSelectedParameters *p_SelectedSpCoef);
  364.         int   getWantedSpCoefIndex(double Hz, sSpCoefCalParameters *p_WantedSpCoef);
  365.    //     bool  getHzFromStr( AnsiString as_str, double &Hz);
  366.         void  Update_edtExtraDB( int select_idx, double dB );
  367.         void  ShowHintLabel( TControl *sender, char* hint );
  368.         void  PointTodB( int Wanted_idx );
  369.         // file
  370.         bool  LoadTRCFile(char *filename);
  371.         bool  LoadAcquaFile(char *filename);
  372.         bool  LoadMicrotronixFile(char *i_filename);
  373.         bool  LoadUpvFile(char *i_filename);
  374.         bool  LoadVitaFile(char *i_filename);
  375.         bool  read_8k_Acoustic_FIR_setup(AnsiString asSetupFile, AnsiString asExeName);
  376.         bool  write_8k_Acoustic_FIR_setup(AnsiString asSetupFileName, AnsiString asExeName);
  377.         // mfile
  378.         void  Req_freqz( void );
  379. };
  380. //---------------------------------------------------------------------------
  381. extern PACKAGE TfrmFIRCoeffCal *frmFIRCoeffCal;
  382. //---------------------------------------------------------------------------
  383. #endif