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

📄 form_tdmb.cpp

📁 MTK 手机软件开发 META 源代码,开发环境: C++ Builder
💻 CPP
📖 第 1 页 / 共 3 页
字号:
        case METAAPP_FAIL:
        {
            m_sbTDMB->Panels->Items[0]->Text = (AnsiString)"  Get signal fail";
            Application->MessageBox("Execution Failure : Get signal", "FAILURE", MB_OK );
            m_tmSingal->Enabled = false;
        }
        break;

        case METAAPP_TIMEOUT:
        {
            m_sbTDMB->Panels->Items[0]->Text = (AnsiString)"  Get signal timeout";
            Application->MessageBox("Execution Timeout : Get signal", "TIMEOUT", MB_OK );
            m_tmSingal->Enabled = false;
        }
        break;

        case METAAPP_STOP:
        {
            m_sbTDMB->Panels->Items[0]->Text = (AnsiString)"  Get signal stop";
            m_tmSingal->Enabled = false;
        }
        break;

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

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool TfrmTDMB::Get_ServiceID(unsigned int &ch_kHz, unsigned int &ui_ServiceId, unsigned int &ui_SubChnId)
{
    AnsiString as_sel;
    TTreeNode *p_tnSel;
    for (int i=0; i<m_tvServices->Items->Count; i++)
    {
        p_tnSel = m_tvServices->Items->Item[i];
        if (p_tnSel->Selected)
        {
            as_sel = p_tnSel->Text;
            break;
        }
    }

    int pos_sv_begin = as_sel.AnsiPos("Service ID:");
    int pos_chid_begin = as_sel.AnsiPos("Channel ID:");

    if ((!pos_sv_begin) || (!pos_chid_begin))
    {

        return false;
    }

    while (p_tnSel != NULL)
    {
        p_tnSel = p_tnSel->GetPrev();
        if (NULL == p_tnSel)
        {
            return false;
        }

        // channel
        int pos_ch_begin = p_tnSel->Text.AnsiPos("CH = ");
        int pos_ch_end   = p_tnSel->Text.AnsiPos("MHz");
        if ((pos_ch_begin != 0) && (pos_ch_end != 0))
        {
            AnsiString as_ch = p_tnSel->Text.SubString(pos_ch_begin+5, pos_ch_end-pos_ch_begin-6);
            ch_kHz = atof(as_ch.c_str()) * 1000;
            break;
        }
    }

    // service ID
    pos_sv_begin += strlen("Service ID:");
    as_sel = as_sel.SubString(pos_sv_begin, as_sel.Length()-pos_sv_begin);
    int pos_sv_end = as_sel.AnsiPos("]");
    ui_ServiceId = as_sel.SubString(1, pos_sv_end -1).ToInt();

    // channel ID
    pos_chid_begin = pos_sv_end + strlen("Channel ID:") + 2;
    as_sel = as_sel.SubString(pos_chid_begin, as_sel.Length() - pos_chid_begin);
    int pos_ch_end = as_sel.AnsiPos("]");
    ui_SubChnId = as_sel.SubString(1, pos_ch_end -1).ToInt();

    return true;
}

//---------------------------------------------------------------------------
void __fastcall TfrmTDMB::m_btnSelectServiceClick(TObject *Sender)
{
    S_TDMB_SEL_SERV_ONLY_T serv_only;

    if (!Get_ServiceID(serv_only.ui_freq_khz, serv_only.req.m_u4ServiceId, serv_only.req.m_u4SubChnId))
    {
        return;
    }

    m_bAction = true;
    m_tmSingal->Enabled = false;

    m_TDMB_RF_Obj.ConfirmCallback = ::CNF_TDMB_SelServiceOnly;
    m_TDMB_RF_Obj.REQ_Select_Service_Only_Start(serv_only);

    CurrentPageLock();
}

//--------------------------------------------------------------------
void TfrmTDMB::CNF_TDMB_SelServiceOnly(void)
{
    m_bAction = false;
    E_METAAPP_RESULT_T state = m_TDMB_RF_Obj.Get_ConfirmState();

    switch (state)
    {
        case METAAPP_SUCCESS:
        {
            m_tmSingal->Enabled = true;
            m_bService = true;
            m_sbTDMB->Panels->Items[0]->Text = (AnsiString)"  Select service successfully";
        }
        break;

        case METAAPP_TDMB_DISK_FULL:
        {

        }
        break;

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

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

        case METAAPP_STOP:
        {
            m_sbTDMB->Panels->Items[0]->Text = (AnsiString)"  Select service stop";
        }
        break;

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


//---------------------------------------------------------------------------
void __fastcall TfrmTDMB::m_btnStartRSClick(TObject *Sender)
{
    S_TDMB_SEL_SERV_T serv;

    if (!Get_ServiceID(serv.ui_freq_khz, serv.req.m_u4ServiceId, serv.req.m_u4SubChnId))
    {
        m_sbTDMB->Panels->Items[0]->Text = (AnsiString) "  Invalid item click! Please select sub channel.";
        Application->MessageBox("Invalid item click! Please select sub channel.", "Warning", MB_OK);
        return;
    }

    if (!m_dlgService->Execute())
    {
        m_sbTDMB->Panels->Items[0]->Text = (AnsiString) "  Save stream to file fail";
        Application->MessageBox("Execution Failure : Save stream to file", "FAILURE", MB_OK);
        return;
    }
    
    m_bAction = true;
    m_tmSingal->Enabled = false;
    serv.req.m_pcfilepath = m_dlgService->FileName.c_str();

    m_TDMB_RF_Obj.ConfirmCallback = ::CNF_TDMB_RecordStream;
    m_TDMB_RF_Obj.REQ_RecordStream_Start(serv);

    CurrentPageLock();
}

//---------------------------------------------------------------------------
void TfrmTDMB::CNF_TDMB_RecordStream(void)
{
    m_bAction = false;
    E_METAAPP_RESULT_T state = m_TDMB_RF_Obj.Get_ConfirmState();

    switch (state)
    {
        case METAAPP_SUCCESS:
        {
            m_sbTDMB->Panels->Items[0]->Text = (AnsiString)"  Record stream progressing";
            m_tmSingal->Enabled = true;
            m_tmService->Enabled = true;
            m_bRecordStream = true;
            m_btnStop->Enabled = true;
        }
        break;

        case METAAPP_TDMB_DISK_FULL:
        {

        }
        break;

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

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

        case METAAPP_STOP:
        {
            m_sbTDMB->Panels->Items[0]->Text = (AnsiString)"  Record stream stop";
        }
        break;

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

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void __fastcall TfrmTDMB::m_btnStopClick(TObject *Sender)
{
    m_TDMB_RF_Obj.ConfirmCallback = ::CNF_TDMB_StopService;
    m_TDMB_RF_Obj.REQ_Stop_Service_Start();
    m_tmGetFile->Enabled = true;
    m_bService = false;
    m_bRecordStream = false;
    m_tmSingal->Enabled = false;
    CurrentPageLock();
    m_sbTDMB->Panels->Items[TDMB_STATUS_BAR_INDEX_STATUS]->Text = "  read record TS file from FAT progressing ";
}

//---------------------------------------------------------------------------
void TfrmTDMB::CNF_TDMB_StopService(void)
{
    m_tmService->Enabled = false;
    m_tmGetFile->Enabled = false;
    S_FAT_PROGRESS* p_progress =  m_TDMB_RF_Obj.Get_FatProgress();
    m_pbService->Position = p_progress->percent;
    m_sbTDMB->Panels->Items[TDMB_STATUS_BAR_INDEX_SENT_AND_TOTAL]->Text = "  " + IntToStr(p_progress->sent_bytes)+ " / " + IntToStr(p_progress->total_bytes)+ " bytes";
    m_sbTDMB->Panels->Items[TDMB_STATUS_BAR_INDEX_PERCENT]->Text = "  " + IntToStr(p_progress->percent) + "%";
    CurrentPageReset();
    E_METAAPP_RESULT_T state = m_TDMB_RF_Obj.Get_ConfirmState();

    switch (state)
    {
        case METAAPP_SUCCESS:
        {
            m_sbTDMB->Panels->Items[0]->Text = (AnsiString)"  Stop service successfully";
           // m_tmSingal->Enabled = true;

        }
        break;

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

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

        case METAAPP_STOP:
        {
            m_sbTDMB->Panels->Items[0]->Text = (AnsiString)"  Stop service stop";
        }
        break;

        default:
        {
        }
        break;
    }

}

void __fastcall TfrmTDMB::m_tmGetFileTimer(TObject *Sender)
{
    S_FAT_PROGRESS* p_progress =  m_TDMB_RF_Obj.Get_FatProgress();
    m_pbService->Position = p_progress->percent;
    m_sbTDMB->Panels->Items[TDMB_STATUS_BAR_INDEX_SENT_AND_TOTAL]->Text = "  " + IntToStr(p_progress->sent_bytes)+ " / " + IntToStr(p_progress->total_bytes)+ " bytes";
    m_sbTDMB->Panels->Items[TDMB_STATUS_BAR_INDEX_PERCENT]->Text = "  " + IntToStr(p_progress->percent) + "%";
}
//---------------------------------------------------------------------------

void __fastcall TfrmTDMB::m_tmServiceTimer(TObject *Sender)
{
    S_TDMB_SEL_SERV_ERROR_RESULT* p_result = m_TDMB_RF_Obj.Get_SelServiceResult();
    if (p_result->b_valid)
    {
        if (TDMB_FAT_DISK_FULL == p_result->e_result)
        {
            m_tmService->Enabled = false;
            m_bRecordStream = false;
            Application->MessageBox("FAT disk full, read record TS file from FAT", "WARNING", MB_OK);
            m_sbTDMB->Panels->Items[TDMB_STATUS_BAR_INDEX_STATUS]->Text = "  read record TS file from FAT progressing ";
            m_TDMB_RF_Obj.ConfirmCallback = ::CNF_TDMB_StopService;
            m_TDMB_RF_Obj.REQ_Stop_Service_Start();
            m_tmGetFile->Enabled = true;
            CurrentPageLock();
        }    
    }
}
//---------------------------------------------------------------------------





//---------------------------------------------------------------------------

⌨️ 快捷键说明

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