⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form_bt.cpp

📁 MTK 手机软件开发 META 源代码,开发环境: C++ Builder
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    m_edtPKTTesterTXCount[13] = edtPKTTester2EV3TXCount;
    m_edtPKTTesterTXCount[14] = edtPKTTester2DH3TXCount;
    m_edtPKTTesterTXCount[15] = edtPKTTester2EV5TXCount;
    m_edtPKTTesterTXCount[16] = edtPKTTester2DH5TXCount;
    m_edtPKTTesterTXCount[17] = edtPKTTester3EV3TXCount;
    m_edtPKTTesterTXCount[18] = edtPKTTester3DH1TXCount;
    m_edtPKTTesterTXCount[19] = edtPKTTester3DH3TXCount;
    m_edtPKTTesterTXCount[20] = edtPKTTester3EV5TXCount;
    m_edtPKTTesterTXCount[21] = edtPKTTester3DH5TXCount;

    m_edtPKTTesterRXCount[0]  = edtPKTTesterDM1RXCount;
    m_edtPKTTesterRXCount[1]  = edtPKTTesterDH1RXCount;
    m_edtPKTTesterRXCount[2]  = edtPKTTesterDM3RXCount;
    m_edtPKTTesterRXCount[3]  = edtPKTTesterDH3RXCount;
    m_edtPKTTesterRXCount[4]  = edtPKTTesterDM5RXCount;
    m_edtPKTTesterRXCount[5]  = edtPKTTesterDH5RXCount;
    m_edtPKTTesterRXCount[6]  = edtPKTTesterHV1RXCount;
    m_edtPKTTesterRXCount[7]  = edtPKTTesterHV2RXCount;
    m_edtPKTTesterRXCount[8]  = edtPKTTesterHV3RXCount;
    m_edtPKTTesterRXCount[9]  = edtPKTTesterEV3RXCount;
    m_edtPKTTesterRXCount[10] = edtPKTTesterEV4RXCount;
    m_edtPKTTesterRXCount[11] = edtPKTTesterEV5RXCount;
    m_edtPKTTesterRXCount[12] = edtPKTTester2DH1RXCount;
    m_edtPKTTesterRXCount[13] = edtPKTTester2EV3RXCount;
    m_edtPKTTesterRXCount[14] = edtPKTTester2DH3RXCount;
    m_edtPKTTesterRXCount[15] = edtPKTTester2EV5RXCount;
    m_edtPKTTesterRXCount[16] = edtPKTTester2DH5RXCount;
    m_edtPKTTesterRXCount[17] = edtPKTTester3EV3RXCount;
    m_edtPKTTesterRXCount[18] = edtPKTTester3DH1RXCount;
    m_edtPKTTesterRXCount[19] = edtPKTTester3DH3RXCount;
    m_edtPKTTesterRXCount[20] = edtPKTTester3EV5RXCount;
    m_edtPKTTesterRXCount[21] = edtPKTTester3DH5RXCount;

    m_edtPKTDUTTXCount[0]  = edtPKTDUTDM1TXCount;
    m_edtPKTDUTTXCount[1]  = edtPKTDUTDH1TXCount;
    m_edtPKTDUTTXCount[2]  = edtPKTDUTDM3TXCount;
    m_edtPKTDUTTXCount[3]  = edtPKTDUTDH3TXCount;
    m_edtPKTDUTTXCount[4]  = edtPKTDUTDM5TXCount;
    m_edtPKTDUTTXCount[5]  = edtPKTDUTDH5TXCount;
    m_edtPKTDUTTXCount[6]  = edtPKTDUTHV1TXCount;
    m_edtPKTDUTTXCount[7]  = edtPKTDUTHV2TXCount;
    m_edtPKTDUTTXCount[8]  = edtPKTDUTHV3TXCount;
    m_edtPKTDUTTXCount[9]  = edtPKTDUTEV3TXCount;
    m_edtPKTDUTTXCount[10] = edtPKTDUTEV4TXCount;
    m_edtPKTDUTTXCount[11] = edtPKTDUTEV5TXCount;
    m_edtPKTDUTTXCount[12] = edtPKTDUT2DH1TXCount;
    m_edtPKTDUTTXCount[13] = edtPKTDUT2EV3TXCount;
    m_edtPKTDUTTXCount[14] = edtPKTDUT2DH3TXCount;
    m_edtPKTDUTTXCount[15] = edtPKTDUT2EV5TXCount;
    m_edtPKTDUTTXCount[16] = edtPKTDUT2DH5TXCount;
    m_edtPKTDUTTXCount[17] = edtPKTDUT3EV3TXCount;
    m_edtPKTDUTTXCount[18] = edtPKTDUT3DH1TXCount;
    m_edtPKTDUTTXCount[19] = edtPKTDUT3DH3TXCount;
    m_edtPKTDUTTXCount[20] = edtPKTDUT3EV5TXCount;
    m_edtPKTDUTTXCount[21] = edtPKTDUT3DH5TXCount;

    m_edtPKTDUTRXCount[0]  = edtPKTDUTDM1RXCount;
    m_edtPKTDUTRXCount[1]  = edtPKTDUTDH1RXCount;
    m_edtPKTDUTRXCount[2]  = edtPKTDUTDM3RXCount;
    m_edtPKTDUTRXCount[3]  = edtPKTDUTDH3RXCount;
    m_edtPKTDUTRXCount[4]  = edtPKTDUTDM5RXCount;
    m_edtPKTDUTRXCount[5]  = edtPKTDUTDH5RXCount;
    m_edtPKTDUTRXCount[6]  = edtPKTDUTHV1RXCount;
    m_edtPKTDUTRXCount[7]  = edtPKTDUTHV2RXCount;
    m_edtPKTDUTRXCount[8]  = edtPKTDUTHV3RXCount;
    m_edtPKTDUTRXCount[9]  = edtPKTDUTEV3RXCount;
    m_edtPKTDUTRXCount[10] = edtPKTDUTEV4RXCount;
    m_edtPKTDUTRXCount[11] = edtPKTDUTEV5RXCount;
    m_edtPKTDUTRXCount[12] = edtPKTDUT2DH1RXCount;
    m_edtPKTDUTRXCount[13] = edtPKTDUT2EV3RXCount;
    m_edtPKTDUTRXCount[14] = edtPKTDUT2DH3RXCount;
    m_edtPKTDUTRXCount[15] = edtPKTDUT2EV5RXCount;
    m_edtPKTDUTRXCount[16] = edtPKTDUT2DH5RXCount;
    m_edtPKTDUTRXCount[17] = edtPKTDUT3EV3RXCount;
    m_edtPKTDUTRXCount[18] = edtPKTDUT3DH1RXCount;
    m_edtPKTDUTRXCount[19] = edtPKTDUT3DH3RXCount;
    m_edtPKTDUTRXCount[20] = edtPKTDUT3EV5RXCount;
    m_edtPKTDUTRXCount[21] = edtPKTDUT3DH5RXCount;

    m_pT_CWT = NULL;

    // module test
    lblItem[ 0] = lblItem1;   lblItem[10] = lblItem11;   lblItem[20] = lblItem21;
    lblItem[ 1] = lblItem2;   lblItem[11] = lblItem12;   lblItem[21] = lblItem22;
    lblItem[ 2] = lblItem3;   lblItem[12] = lblItem13;
    lblItem[ 3] = lblItem4;   lblItem[13] = lblItem14;   m_rbTestItem[0] = m_rbMTTestItem0;
    lblItem[ 4] = lblItem5;   lblItem[14] = lblItem15;   m_rbTestItem[1] = m_rbMTTestItem1;
    lblItem[ 5] = lblItem6;   lblItem[15] = lblItem16;   m_rbTestItem[2] = m_rbMTTestItem2;
    lblItem[ 6] = lblItem7;   lblItem[16] = lblItem17;   m_rbTestItem[3] = m_rbMTTestItem3;
    lblItem[ 7] = lblItem8;   lblItem[17] = lblItem18;   m_rbTestItem[4] = m_rbMTTestItem4;
    lblItem[ 8] = lblItem9;   lblItem[18] = lblItem19;
    lblItem[ 9] = lblItem10;  lblItem[19] = lblItem20;
    for (int n = 0; n < BT_MT_TESTCASE_NUM; n++)
    {
        Script[n] = 0;
    }
    ActIdx = -1;

    m_pvSendHCIPar = NULL;
    m_pvReceiveHCIPar = NULL;
    Init();
    WindowProc = SubClassWndProc;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TfrmBT::AllocateVector( void )
{
    if( NULL == m_pvSendHCIPar )
        m_pvSendHCIPar    = new vector<S_BT_HCI_PARAMETER>;

    if( NULL == m_pvReceiveHCIPar )
        m_pvReceiveHCIPar = new vector<S_BT_HCI_PARAMETER>;
}

//---------------------------------------------------------------------------
void TfrmBT::DeAllocateVector( void )
{
    if( m_pvSendHCIPar != NULL )
    {
        if( ! m_pvSendHCIPar->empty() )
        {
            m_pvSendHCIPar->erase( m_pvSendHCIPar->begin(), m_pvSendHCIPar->end() );
        }

        delete m_pvSendHCIPar;
    }

    if( m_pvReceiveHCIPar != NULL )
    {
        if( ! m_pvReceiveHCIPar->empty() )
        {
            m_pvReceiveHCIPar->erase( m_pvReceiveHCIPar->begin(), m_pvReceiveHCIPar->end() );
        }
        delete m_pvReceiveHCIPar;
    }

}

//---------------------------------------------------------------------------
void TfrmBT::Init(void)
{
     m_bInit             = true;
     btnHCIStart->Enabled = true;
     btnRFTxStart->Enabled = true;
//     btnRFRxStart->Enabled = true;
     btnPKTStart->Enabled = true;
     btnPKTConnectDUT->Enabled = true;
     m_btnMTConnect->Enabled = m_cbMETAMode->Checked;
     shpPKTConnect->Brush->Color = clRed;
     m_shpMTConnect->Brush->Color = clRed;
     m_bConnectTargetok = false;
     m_bConnectingTarget = false;
}

//---------------------------------------------------------------------------
void __fastcall TfrmBT::FormHide(TObject *Sender)
{
    m_sCWT.iBootStop = BOOT_STOP;
    AbortConnectWithTarget();
}

//==============================================================================
void _fastcall TfrmBT::SubClassWndProc( Messages::TMessage &Message)
{
    switch ( Message.Msg )
    {
        case WM_ML_BT_BD_ADDRESS_MSG:
        {
            DisplayPKTBDAddress( (E_BT_PACKET_DEVICE_T) Message.WParam );
        }
        break;

        case WM_ML_BT_START_MONITOR_MSG:
        {
            MonitorTimer->Enabled = true; 
        }
        break;

//        case WM_ML_BT_DISPLAY_SCT_UI_MSG:
//        {
//        }
//        break;
        
        case WM_ML_BT_PRINT_MSG:
        {
            switch( (E_BT_PAGEIDX) Message.WParam )
            {
                case PAGEIDX_BT_HCI:
                {
                    FillHCIResult();
                }
                break;

                case PAGEIDX_BT_RF:
                {   FillRFResult();
                }
                break;

                case PAGEIDX_BT_PKT:
                {   FillPKTResult();
                }
                break;

                case PAGEIDX_BT_SCT:
                {   FillSCTResult();
                }
                break;

                case PAGEIDX_BT_TT:
                {   FillTTResult();
                }
                break;

                case PAGEIDX_BT_CT:
                {   FillCTResult();
                }
                break;
            }
        }
        break;

        case WM_ML_BT_PIN_MSG:
        {
            btnCTEnterPIN->Enabled = true;
            ShowHintLabel( edtCTPIN, "Please enter PIN code" );
        }
        break;

        case MW_ML_BT_CONNECT_MSG:
        {
            switch( (E_BT_PAGEIDX) Message.WParam )
            {
                case PAGEIDX_BT_CT:
                {
                    ReDrawCTFields( DRAM_MASK_CT_DISCOVERED_LIST |
                                    DRAM_MASK_CT_CONNECT_LIST    |
                                    DRAM_MASK_CT_ACL_STATUS      |
                                    DRAM_MASK_CT_BUTTON );

                    sbCT->Panels->Items[0]->Text = (AnsiString)"  Connect from remote BT device";
                }
                break;

                case PAGEIDX_BT_TT:
                {
                    m_sBTTTRes = m_cBT_TT_Obj.Get_TTResult();
                    ReDrawTTFields( DRAM_MASK_TT_ACL_STATUS      |
                                    DRAM_MASK_TT_BUTTON );

                    sbTT->Panels->Items[0]->Text = (AnsiString)"  Connect from remote BT device";
                }
                break;
            }

        }
        break;

        case WM_ML_BT_DISCONNECT_MSG:
        {
            switch( (E_BT_PAGEIDX) Message.WParam )
            {
                case PAGEIDX_BT_CT:
                {
                    ReDrawCTFields( DRAM_MASK_CT_DISCOVERED_LIST |
                                    DRAM_MASK_CT_CONNECT_LIST    |
                                    DRAM_MASK_CT_ACL_STATUS      |
                                    DRAM_MASK_CT_BUTTON );

                    sbCT->Panels->Items[0]->Text = (AnsiString)"  Disconnect from remote BT device";
                }
                break;

                case PAGEIDX_BT_TT:
                {
                    m_sBTTTRes = m_cBT_TT_Obj.Get_TTResult();
                    ReDrawTTFields( DRAM_MASK_TT_ACL_STATUS      |
                                    DRAM_MASK_TT_BUTTON );

                    sbTT->Panels->Items[0]->Text = (AnsiString)"  Disconnect from remote BT device";
                }
                break;
            }

        }
        break;

        case WM_ML_BT_TT_TX_STATUS:
        {
            unsigned int ui_pkt_length = (unsigned int) Message.WParam;
            unsigned int ui_used_time;
            if (BT_TT_VER_0 == m_eTtVer)
            {
                S_TIME time;
                time = ::Get_CurrentTime();
                int msec = DifferenceMiniSec(&m_sTTTxStartTime, &time);
                ui_used_time = (unsigned int) msec;
            }
            else
            {
                ui_used_time = (unsigned int) Message.LParam;
            }

            if (0 == ui_used_time)
            {
                return;
            }
            int data_len = edtTTDataLen->Text.ToInt();
            float tx_throughput = 1000.0 * ui_pkt_length / ui_used_time;
            int count = ui_pkt_length/data_len;
            char str[64];
            sprintf(str, "%.3f", tx_throughput);
            stTTTxCount->Caption = IntToStr(count);
            stTTTxThroughput->Caption = (AnsiString) str;

            if (count >= edtTTPacketCount->Text.ToInt())
            {
                CurrentPageReset();
            }
        }
        break;

        case WM_ML_BT_TT_RX_STATUS:
        {
            unsigned int ui_pkt_length = (unsigned int) Message.WParam;
            unsigned int ui_used_time;
            if (BT_TT_VER_0 == m_eTtVer)
            {
                S_TIME time;
                time = ::Get_CurrentTime();
                int msec = DifferenceMiniSec(&m_sTTRxStartTime, &time);
                ui_used_time = (unsigned int) msec;
            }
            else
            {
                ui_used_time = (unsigned int) Message.LParam;
            }

            if (0 == ui_used_time)
            {
                return;
            }
           // int data_len = edtTTDataLen->Text.ToInt();
            float rx_throughput = 1000.0 * ui_pkt_length / ui_used_time;
            char str[64];
            sprintf(str, "%.3f", rx_throughput);
            stTTRxBytes->Caption = IntToStr(ui_pkt_length);
            stTTRxThroughput->Caption = (AnsiString) str;
        }
        break;

        default:
             this->WndProc( Message );
        break;
    }
}

//===========================================================================
////////////////////////////  Form event handler   //////////////////////////
//===========================================================================
void __fastcall TfrmBT::FormCreate(TObject *Sender)
{
    m_bFirstFormShow = true;

    // allocate memory
    m_pHCILog = new TStringList;
    m_pRFLog  = new TStringList;
    m_pPKTLog = new TStringList;
    m_pSCTLog = new TStringList;
    m_pCTLog  = new TStringList;
    m_pTTLog  = new TStringList;

    AllocateVector();

    if( rbHCICategory->Checked )
    {
        cbHCICategory->Enabled = true;
        cbHCIGroup->Enabled    = false;
    }
    else
    {
        cbHCICategory->Enabled = false;
        cbHCIGroup->Enabled    = true;
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -