SXXXXXXX_PyDownloadFwViaSRIO/_OLD/Vecchia_app/FpgaBeamMeUpBuilder/flashtarget.cpp
2026-01-22 17:10:05 +01:00

185 lines
5.5 KiB
C++

#include "flashtarget.h"
#include <QApplication>
#include <QSettings>
#include <QFileInfo>
#include <QDebug>
// cursor pointer used to ensure a single instance of the class.
flashTargetClass* flashTargetClass::s_instance = 0;
/* This function is called to create an instance of the class.
* Calling the constructor publicly is not allowed. The constructor
* is private and is only called by this Instance function.
*/
flashTargetClass* flashTargetClass::instance()
{
// Only allow one instance of class to be generated.
if (!s_instance)
s_instance = new flashTargetClass;
return s_instance;
}
flashTargetClass::flashTargetClass()
{
target_filedb = QApplication::applicationDirPath()+'/'+fileNameTarget;
}
flashTargetClass::~flashTargetClass()
{
}
targetItem flashTargetClass::getTarget(unsigned int _idx)
{
return listTargets[_idx];
}
/********************************************************
* Read targets from file ini
* Input parameters:
* Results: true if ok
* false if error
*/
bool flashTargetClass::readTargets()
{
listModels.clear();
listTargets.clear();
if(!QFileInfo::exists(target_filedb))
{
return false;
}
QSettings config(target_filedb, QSettings::IniFormat);
//DEFAULT SECTION
config.beginGroup("default");
def_ip = config.value("ip", QString("192.168.2.100")).toString();
def_port = config.value("port", 69).toUInt();
def_target = config.value("defTarget", QString("TGT-0")).toString();
config.endGroup();
//TARGET GROUP
QStringList groups=config.childGroups();
QString idModel = "";
foreach(QString g, groups)
{
if (g.startsWith("MODEL", Qt::CaseInsensitive))
{
modelItem entry_model;
config.beginGroup(g);
entry_model.idModel = config.value("idModel").toString();
entry_model.byte3_4 = config.value("3_4Byte", 0).toInt();
entry_model.description = config.value("description").toString();
entry_model.g = g;
entry_model.model = config.value("model").toString();
entry_model.numSector = config.value("numSector", 128).toInt();
entry_model.type = config.value("type", 0).toInt();
entry_model.goldenAddressStopArea = config.value("goldenAddressStopArea", QString()).toString();
entry_model.golderAddressStartArea = config.value("golderAddressStartArea", QString()).toString();
entry_model.userAddressStartArea = config.value("userAddressStartArea", QString()).toString();
entry_model.userAddresStopArea = config.value("userAddresStopArea", QString()).toString();
config.endGroup();
listModels.append(entry_model);
}
else
if (g.startsWith("TGT", Qt::CaseInsensitive))
{
targetItem entry_target;
config.beginGroup(g);
entry_target.g = g;
entry_target.idTgt = config.value("idTgt").toString();
entry_target.description = config.value("description").toString();
entry_target.slotAddress = config.value("slotAddress", QString()).toString();
entry_target.arch = config.value("arch", QString("?")).toString();
entry_target.name = config.value("name", QString("CPU")).toString();
entry_target.filePrefix = config.value("filePrefix").toString();
idModel = config.value("idModel", 0).toString();
copyDataFromModel(&(entry_target.model), idModel);
config.endGroup();
listTargets.append(entry_target);
}
}
qDebug()<<"models :"<<listModels.count();
qDebug()<<"targets :"<<listTargets.count();
return true;
}
bool flashTargetClass::writeTargets()
{
}
QStringList flashTargetClass::getInfoLists()
{
QStringList list;
QString msg;
for (int i = 0; i<listTargets.count(); i++)
{
msg = QString("%1 - %2").arg(listTargets[i].name).arg(listTargets[i].slotAddress);
list.append(msg);
}
return list;
}
QString flashTargetClass::getDefIp()
{
return def_ip;
}
unsigned int flashTargetClass::getDefPort()
{
return def_port;
}
QString flashTargetClass::getDefTarget()
{
return def_target;
}
modelItem* flashTargetClass::getModel(QString _idModel)
{
for (int i = 0; i<listModels.count(); i++)
{
if (listModels[i].idModel==_idModel)
return &listModels[i];
}
return 0;
}
bool flashTargetClass::copyDataFromModel(modelItem * _model, QString _idModel)
{
modelItem *modelData = getModel(_idModel);
if (modelData==0)
return false;
_model->byte3_4 = modelData->byte3_4;
_model->description = modelData->description;
_model->g = modelData->g;
_model->idModel = modelData->idModel;
_model->model = modelData->model;
_model->numSector = modelData->numSector;
_model->type = modelData->type;
_model->goldenAddressStopArea = modelData->goldenAddressStopArea;
_model->golderAddressStartArea = modelData->golderAddressStartArea;
_model->userAddressStartArea = modelData->userAddressStartArea;
_model->userAddresStopArea = modelData->userAddresStopArea;
return true;
}