Program Listing for File fmu.h#
↰ Return to documentation for file (sdv_dbc_util\fmu.h)
#ifndef SOFTCAR_FMU_H
#define SOFTCAR_FMU_H
#ifdef WIN32
#include <Rpc.h>
#endif
#include "../global/dbcparser/dbcparser.h"
#include <fstream>
#include "codegen_base.h"
struct signalDefinition
{
std::string message_name;
std::string name;
std::string attributes;
uint32_t index = 0;
bool isInput = false;
bool isDouble = false;
uint32_t uiSize = 0;
dbc::SSignalDef::EValueType signalType = dbc::SSignalDef::EValueType::signed_integer;
};
class CSoftcarFMUGen : public CCodeGeneratorBase
{
public:
CSoftcarFMUGen(const std::filesystem::path& rpathOutputDir, const dbc::CDbcParser& rparser, const std::string& ssModelIdentifier, const std::string& rsVersion, const std::vector<std::string>& rvecNodes);
private:
typedef std::map<std::string, std::string> CKeywordMap;
void UpdateKeywordMap(const std::string& rsModelIdentifier, const std::string& rsVersion,
const std::vector<std::string>& rvecNodes, CKeywordMap& rmapKeywords) const;
void CreateResourcesFiles(const std::filesystem::path& rRootPath) const;
void CreateSourceFiles(const std::filesystem::path& rRootPath) const;
void CreateIncludeFiles(const std::filesystem::path& rRootPath) const;
void CreateFMUFiles(const std::filesystem::path& rRootPath, const std::string& rsModelIdentifier, CKeywordMap& rmapKeywords) const;
bool CleanUpDirectory(const std::filesystem::path& rpathRootDirectory) const;
bool CreateDirectories(const std::filesystem::path& rpathRootDirectory, const std::filesystem::path& rpathSubDirectory) const;
std::string Code_AllSignalsIdentifierList(const std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string Code_SignalIdentifierList(const signalDefinition& rSignal) const;
static std::string ReplaceKeywords(const std::string& rsStr, const CKeywordMap& rmapKeywords, char cMarker = '%');
std::string CodeBuildDescriptionXML(const std::string& rsModelIdentifier) const;
std::string CodeDBCFileVersion(const std::string& rsVersion) const;
std::string CodeModelIdentifier(const std::string& rsModelIdentifier) const;
std::string CodeFMIFile_VariableList(const std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeFMIFile_SignalVariableList(const signalDefinition& rSignal) const;
std::string CodeConfigH_Rx_ValueReference(const dbc::SMessageDef& rsMsg, uint32_t& rIndex,
std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeConfigH_Tx_ValueReference(const dbc::SMessageDef& rsMsg, uint32_t& rIndex,
std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeConfigH_Rx_SignalForValueReference(const dbc::SSignalDef& rsSig, const uint32_t index,
const std::string& rsMessageName, std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeConfigH_Tx_SignalForValueReference(const dbc::SSignalDef& rsSig, const uint32_t index,
const std::string& rsMessageName, std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeConfigH_ModelDataList(const std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeConfigH_SignalForModelData(const signalDefinition& rSignal) const;
std::string CodeVariableList(const std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeVariableName(const signalDefinition& rSignal) const;
std::string CodeModelCPP_GlobalDefinitionList(const std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeModelCPP_GlobalSignalDefinition(const signalDefinition& rSignal) const;
std::string CodeModelCPP_GlobalRegisterList(const std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeModelCPP_GlobalRegisterCheckList(const std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeModelCPP_GlobalRegisterSignal(const signalDefinition& rSignal) const;
std::string CodeModelCPP_GlobalRegisterSignalCheck(const signalDefinition& rSignal, bool first) const;
std::string CodeModelCPP_GlobalResetList(const std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeModelCPP_GlobalResetSignal(const signalDefinition& rSignal) const;
std::string CodeModelCPP_EventUpdateList(const std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeModelCPP_EventUpdateSignalDefinitionWrite(const signalDefinition& rSignal) const;
std::string CodeModelCPP_EventUpdateSignalDefinitionRead(const signalDefinition& rSignal) const;
std::string CodeModelCPP_GetFloat64(const std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeModelCPP_GetInt32(const std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeModelCPP_SetFloat64(const std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeModelCPP_SetInt32(const std::vector<signalDefinition>& rvecSignalDefinitions) const;
std::string CodeModelCPP_GetFloat64SignalDefinition(const signalDefinition& rSignal) const;
std::string CodeModelCPP_GetInt32SignalDefinition(const signalDefinition& rSignal) const;
std::string CodeModelCPP_SetFloat64SignalDefinition(const signalDefinition& rSignal) const;
std::string CodeModelCPP_SetInt32SignalDefinition(const signalDefinition& rSignal) const;
std::string CodeModelCPP_OpenAPILoadFunction() const;
std::string CodeGetDefaultValueOfTxSignal(const dbc::SSignalDef& rSignal) const;
std::string GetAttributes(const dbc::SSignalDef& rSignal, const bool& isDouble) const;
std::string newUUID() const;
const dbc::CDbcParser& m_rparser;
};
#endif // !defined SOFTCAR_FMU_H