MCPcopy Index your code
hub / github.com/DreamSourceLab/DSView / load_decoders

Method load_decoders

DSView/pv/storesession.cpp:1324–1564  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1322}
1323
1324bool StoreSession::load_decoders(dock::ProtocolDock *widget, QJsonArray &dec_array)
1325{
1326 if (_session->get_device()->get_work_mode() != LOGIC)
1327 {
1328 dsv_info("StoreSession::load_decoders(), is not LOGIC mode.");
1329 return false;
1330 }
1331
1332 if (dec_array.isEmpty()){
1333 dsv_info("StoreSession::load_decoders(), json object array is empty.");
1334 return false;
1335 }
1336
1337 int dec_index = -1;
1338
1339 for (const QJsonValue &dec_value : dec_array)
1340 {
1341 QJsonObject dec_obj = dec_value.toObject();
1342 std::vector<view::DecodeTrace*> &pre_dsigs = _session->get_decode_signals();
1343 std::list<pv::data::decode::Decoder*> sub_decoders;
1344
1345 //get sub decoders
1346 if (dec_obj.contains("stacked decoders")) {
1347 for(const QJsonValue &value : dec_obj["stacked decoders"].toArray()) {
1348 QJsonObject stacked_obj = value.toObject();
1349
1350 GSList *dl = g_slist_copy((GSList*)srd_decoder_list());
1351 for(; dl; dl = dl->next) {
1352 const srd_decoder *const d = (srd_decoder*)dl->data;
1353 assert(d);
1354
1355 if (QString::fromUtf8(d->id) == stacked_obj["id"].toString()) {
1356 sub_decoders.push_back(new data::decode::Decoder(d));
1357 break;
1358 }
1359 }
1360 g_slist_free(dl);
1361 }
1362 }
1363
1364 //create protocol
1365 bool ret = widget->add_protocol_by_id(dec_obj["id"].toString(), true, sub_decoders);
1366 if (!ret)
1367 {
1368 for(auto sub : sub_decoders){
1369 delete sub;
1370 }
1371 sub_decoders.clear();
1372
1373 continue; //protocol is not exists;
1374 }
1375
1376 dec_index++;
1377
1378 if (dec_obj.contains("label")){
1379 _session->set_decoder_row_label(dec_index, dec_obj["label"].toString());
1380 }
1381

Callers 3

load_config_from_jsonMethod · 0.80
OnMessageMethod · 0.80

Calls 15

srd_decoder_listFunction · 0.85
get_work_modeMethod · 0.80
get_deviceMethod · 0.80
add_protocol_by_idMethod · 0.80
set_decoder_row_labelMethod · 0.80
set_view_indexMethod · 0.80
get_decoder_traceMethod · 0.80
sizeMethod · 0.80
set_probesMethod · 0.80
set_optionMethod · 0.80
set_index_listMethod · 0.80
get_rows_gshowMethod · 0.80

Tested by

no test coverage detected