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

📄 form_tdmb.cpp

📁 MTK 手机软件开发 META 源代码,开发环境: C++ Builder
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#pragma hdrstop

#ifndef _FORM_TDMB_H_
#include "form_TDMB.h"
#endif

// misc
#ifndef  _FT_UTILS_H_
#include "ft_utils.h"
#endif
//---------------------------------------------------------------------------
typedef enum
{
    TDMB_STATUS_BAR_INDEX_STATUS = 0,
    TDMB_STATUS_BAR_INDEX_SENT_AND_TOTAL,
    TDMB_STATUS_BAR_INDEX_PERCENT
}E_TDMB_STATUS_BAR_INDEX;

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmTDMB *frmTDMB;

//===========================================================================
static void CNF_TDMB_PowerOn(void)
{
    frmTDMB->CNF_TDMB_PowerOn();
}

//---------------------------------------------------------------------------
static void CNF_TDMB_SetFreq(void)
{
    frmTDMB->CNF_TDMB_SetFreq();
}

//---------------------------------------------------------------------------
static void CNF_TDMB_AutoScan(void)
{
    frmTDMB->CNF_TDMB_AutoScan();
}

//---------------------------------------------------------------------------
static void CNF_TDMB_GetSignal(void)
{
    frmTDMB->CNF_TDMB_GetSignal();
}

//---------------------------------------------------------------------------
static void CNF_TDMB_SelServiceOnly(void)
{
    frmTDMB->CNF_TDMB_SelServiceOnly();
}

//---------------------------------------------------------------------------
static void CNF_TDMB_RecordStream(void)
{
    frmTDMB->CNF_TDMB_RecordStream();
}

//---------------------------------------------------------------------------
static void CNF_TDMB_StopService(void)
{
    frmTDMB->CNF_TDMB_StopService();
}

//===========================================================================
__fastcall TfrmTDMB::TfrmTDMB(TComponent* Owner)
        : TForm(Owner)
{
    Init();

}

//---------------------------------------------------------------------------
void TfrmTDMB::Init(void)
{
    m_bInit = true;
    m_bAction = false;
    m_bService = false;
    m_bRecordStream = false;
    m_btnSetChannel->Enabled = true;
    m_btnAutoScan->Enabled = true;
    m_btnSelectService->Enabled = true;
    m_btnStartRS->Enabled = true;
    m_btnStop->Enabled = false;
    Disable_AllTimer();
    m_btnStop->Enabled = false;
    m_tvServices->Items->Clear();  
    ReDrawFields(TDMB_DRAW_MASK_SIGNAL);
}

//===========================================================================
void __fastcall TfrmTDMB::FormShow(TObject *Sender)
{

    Display_Channel((E_TDMB_BAND_T) m_cbBand->ItemIndex);
}

//---------------------------------------------------------------------------
void __fastcall TfrmTDMB::FormActivate(TObject *Sender)
{
    if (m_bInit)
    {
        m_bInit = false;
        m_TDMB_RF_Obj.ConfirmCallback = ::CNF_TDMB_PowerOn;
        m_TDMB_RF_Obj.REQ_Power_On_Start();

        CurrentPageLock();
    }
}

//---------------------------------------------------------------------------
void __fastcall TfrmTDMB::FormClose(TObject *Sender, TCloseAction &Action)
{
    Disable_AllTimer();
}

//---------------------------------------------------------------------------
void __fastcall TfrmTDMB::FormHide(TObject *Sender)
{
    Disable_AllTimer();
}

//---------------------------------------------------------------------------
void TfrmTDMB::Disable_AllTimer(void)
{
    m_tmSingal->Enabled = false;
    m_tmService->Enabled = false;
    m_tmGetFile->Enabled = false;
}

//---------------------------------------------------------------------------
void TfrmTDMB::CNF_TDMB_PowerOn(void)
{
    E_METAAPP_RESULT_T state = m_TDMB_RF_Obj.Get_ConfirmState();

    switch (state)
    {
        case METAAPP_SUCCESS:
        {
            m_sbTDMB->Panels->Items[0]->Text = (AnsiString)"  TDMB module power on successfully";
        }
        break;

        case METAAPP_FAIL:
        {
            m_sbTDMB->Panels->Items[0]->Text = (AnsiString)"  TDMB module power on fail";
            Application->MessageBox("Execution Failure : TDMB module power on", "FAILURE", MB_OK );
        }
        break;

        case METAAPP_TIMEOUT:
        {
            m_sbTDMB->Panels->Items[0]->Text = (AnsiString)"  TDMB module power on timeout";
            Application->MessageBox("Execution Timeout : TDMB module power on", "TIMEOUT", MB_OK );
        }
        break;

        case METAAPP_STOP:
        {
            m_sbTDMB->Panels->Items[0]->Text = (AnsiString)"  TDMB module power on stop";
        }
        break;

        default:
        {
        }
        break;
    }
    CurrentPageReset();
}

//===========================================================================
void TfrmTDMB::CurrentPageReset(void)
{
    if (m_bService || m_bRecordStream)
    {
        m_btnStop->Enabled = true;
    }
    else
    {
        m_btnSetChannel->Enabled = true;
        m_btnAutoScan->Enabled = true;
        m_tvServices->Enabled = true;
        m_btnSelectService->Enabled = true;
        m_btnStartRS->Enabled = true;
    }
}

//---------------------------------------------------------------------------
void TfrmTDMB::CurrentPageLock(void)
{
    m_btnSetChannel->Enabled = false;
    m_btnAutoScan->Enabled = false;
    m_tvServices->Enabled = false;
    m_btnSelectService->Enabled = false;
    m_btnStartRS->Enabled = false;
    m_btnStop->Enabled = false;
}

//---------------------------------------------------------------------------
void TfrmTDMB::ReDrawFields(E_TDMB_DRAW_MASK mask)
{
    if (mask & TDMB_DRAW_MASK_CHANNEL)
    {
        Display_Channel((E_TDMB_BAND_T) m_cbBand->ItemIndex);
    }

    if (mask & TDMB_DRAW_MASK_FREQ_SERVICES)
    {
        Display_FreqEnsembleDB();
    }

    if (mask & TDMB_DRAW_MASK_SCAN_SERVICES)
    {
        Display_ScanEnsembleDB();
    }

    if (mask & TDMB_DRAW_MASK_SIGNAL)
    {
        if (m_bService || m_bRecordStream)
        {
            m_stSNR->Caption     = IntToStr(m_sSignal.m_u2Snr);
            char str[256];
            sprintf(str, "%.2f", (m_sSignal.m_u2PreBer / 100.0));
            m_stPreBER->Caption = (AnsiString) str;
            AnsiString as = "-";
            as += IntToStr(m_sSignal.m_u2RSSI);
            m_stRSSI->Caption = as;
        }
        else
        {
            m_tmSingal->Enabled = false;
            m_stSNR->Caption     = "N/A";
            m_stPreBER->Caption  = "N/A";
            m_stRSSI->Caption    = "N/A";
        }
    }
}

//===========================================================================
void TfrmTDMB::Display_Channel(E_TDMB_BAND_T band)
{
    m_cbChannel->Clear();

    switch (band)
    {
        case TDMB_KOREA_BAND_IDX:
        {
            AnsiString as_channel[] =
            {
                "7A (175.280 MHz)",
                "7B (177.008 MHz)",
                "7C (178.736 MHz)",
                "8A (181.280 MHz)",
                "8B (183.008 MHz)",
                "8C (184.736 MHz)",
                "9A (187.280 MHz)",
                "9B (189.008 MHz)",
                "9C (190.736 MHz)",
                "10A (193.280 MHz)",
                "10B (195.008 MHz)",
                "10C (196.736 MHz)",
                "11A (199.280 MHz)",
                "11B (201.008 MHz)",
                "11C (202.736 MHz)",
                "12A (205.280 MHz)",
                "12B (207.008 MHz)",
                "12C (208.736 MHz)",
                "13A (211.280 MHz)",
                "13B (213.008 MHz)",
                "13C (214.736 MHz)",
            };

            for (int i=0; i<TDMB_KOREA_BAND_CHANNEL_NUM; i++)
            {
                m_cbChannel->Items->Add(as_channel[i]);
            }
        }
        break;

        case TDMB_VHF_BAND3_IDX:
        {
            AnsiString as_channel[] =
            {
                "5A (174.928 MHz)",
                "5B (176.640 MHz)",
                "5C (178.352 MHz)",
                "5D (180.064 MHz)",
                "6A (181.936 MHz)",
                "6B (183.648 MHz)",
                "6C (185.360 MHz)",
                "6D (187.072 MHz)",
                "7A (188.928 MHz)",
                "7B (190.640 MHz)",
                "7C (192.352 MHz)",
                "7D (194.064 MHz)",
                "8A (195.936 MHz)",
                "8B (197.648 MHz)",
                "8C (199.360 MHz)",
                "8D (201.072 MHz)",
                "9A (202.928 MHz)",
                "9B (204.640 MHz)",
                "9C (206.352 MHz)",
                "9D (208.064 MHz)",
                "10A (209.936 MHz)",
                "10N (210.096 MHz)",
                "10B (211.648 MHz)",
                "10C (213.360 MHz)",
                "10D (215.072 MHz)",
                "11A (216.928 MHz)",
                "11N (217.088 MHz)",
                "11B (218.640 MHz)",
                "11C (220.352 MHz)",
                "11D (222.064 MHz)",
                "12A (223.936 MHz)",
                "12N (224.096 MHz)",
                "12B (225.648 MHz)",
                "12C (227.360 MHz)",
                "12D (229.072 MHz)",
                "13A (230.784 MHz)",
                "13B (232.496 MHz)",
                "13C (234.208 MHz)",
                "13D (235.776 MHz)",
                "13E (237.488 MHz)",
                "13F (239.200 MHz)"
            };

            for (int i=0; i<TDMB_VHF_BAND3_CHANNEL_NUM; i++)
            {
                m_cbChannel->Items->Add(as_channel[i]);
            }
        }
        break;

        case TDMB_LBAND_IDX:
        {

⌨️ 快捷键说明

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