mirror of
https://github.com/DreamSourceLab/DSView.git
synced 2025-01-23 13:42:55 +08:00
check required channels of the decoder
This commit is contained in:
parent
3e8e7c7807
commit
54ce519978
@ -402,6 +402,17 @@ void DecoderStack::begin_decode_work()
|
||||
_decode_state = Stopped;
|
||||
}
|
||||
|
||||
bool DecoderStack::check_required_probes()
|
||||
{
|
||||
for(auto dec : _stack){
|
||||
if (!dec->have_required_probes()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void DecoderStack::do_decode_work()
|
||||
{
|
||||
//set the flag to exit from task thread
|
||||
@ -425,14 +436,12 @@ void DecoderStack::do_decode_work()
|
||||
_snapshot = NULL;
|
||||
|
||||
// Check that all decoders have the required channels
|
||||
for(auto dec : _stack){
|
||||
if (!dec->have_required_probes()) {
|
||||
_error_message = L_S(STR_PAGE_MSG, S_ID(IDS_MSG_DECODERSTACK_DECODE_WORK_ERROR),
|
||||
"One or more required channels have not been specified");
|
||||
dsv_err("ERROR:%s", _error_message.toStdString().c_str());
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!check_required_probes()) {
|
||||
_error_message = L_S(STR_PAGE_MSG, S_ID(IDS_MSG_DECODERSTACK_DECODE_WORK_ERROR),
|
||||
"One or more required channels have not been specified");
|
||||
dsv_err("ERROR:%s", _error_message.toStdString().c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
// We get the logic data of the first channel in the list.
|
||||
// This works because we are currently assuming all
|
||||
|
@ -181,6 +181,8 @@ public:
|
||||
return _progress;
|
||||
}
|
||||
|
||||
bool check_required_probes();
|
||||
|
||||
private:
|
||||
void decode_data(const uint64_t decode_start, const uint64_t decode_end, srd_session *const session);
|
||||
void execute_decode_stack();
|
||||
|
@ -664,10 +664,12 @@ bool DecodeTrace::create_popup(bool isnew)
|
||||
{
|
||||
(void)isnew;
|
||||
|
||||
int ret = false; //setting have changed flag
|
||||
int ret = false; //setting have changed flag
|
||||
bool bOpenDlg = true;
|
||||
|
||||
while (true)
|
||||
while (bOpenDlg)
|
||||
{
|
||||
bOpenDlg = false;
|
||||
QWidget *top = AppControl::Instance()->GetTopWindow();
|
||||
dialogs::DecoderOptionsDlg dlg(top);
|
||||
dlg.set_cursor_range(_decode_cursor1, _decode_cursor2);
|
||||
@ -688,14 +690,22 @@ bool DecodeTrace::create_popup(bool isnew)
|
||||
}
|
||||
|
||||
dlg.get_cursor_range(_decode_cursor1, _decode_cursor2);
|
||||
|
||||
// Reopen the dialog to select the required probes.
|
||||
if (ret && _decoder_stack->check_required_probes() == false)
|
||||
{
|
||||
QString errMsg = L_S(STR_PAGE_MSG, S_ID(IDS_MSG_DECODERSTACK_DECODE_WORK_ERROR),
|
||||
"One or more required channels have not been specified");
|
||||
MsgBox::Show(errMsg);
|
||||
|
||||
ret = false;
|
||||
bOpenDlg = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (dlg.is_reload_form()){
|
||||
ret = false;
|
||||
}
|
||||
|
||||
if (QDialog::Rejected == dlg_ret || dlg.is_reload_form() == false){
|
||||
break;
|
||||
bOpenDlg = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user