126 lines
3.8 KiB
C++
126 lines
3.8 KiB
C++
#include "XNInterfaceGenServer.h"
|
|
#include "GetInterfaceData.h"
|
|
#include "GenIDL.h"
|
|
#include "FastDDSGen.h"
|
|
#include "DDSInterfaceGen.h"
|
|
#include "CMakeListsGen.h"
|
|
|
|
// 全局变量定义
|
|
int g_configrationID;
|
|
std::string g_configName;
|
|
AllInterfaceData g_interfaceData;
|
|
|
|
int XNInterfaceGen_Step1_InitParams(int configrationID, const char *errorMsg,
|
|
const int errorMsgSize)
|
|
{
|
|
g_configrationID = 0;
|
|
g_configName = "";
|
|
g_interfaceData.systemName = "";
|
|
g_interfaceData.planeName = "";
|
|
g_interfaceData.ataInterfaceData.clear();
|
|
GenIDL::clearIDLFilePath();
|
|
|
|
if (configrationID <= 0) {
|
|
memcpy((void *)errorMsg, "Invalid configrationID", errorMsgSize);
|
|
return -1;
|
|
}
|
|
g_configrationID = configrationID;
|
|
memcpy((void *)errorMsg, "Init params success", errorMsgSize);
|
|
return 0;
|
|
}
|
|
|
|
int XNInterfaceGen_Step2_GetInterfaceData(const char *errorMsg, const int errorMsgSize)
|
|
{
|
|
std::string errorMsgStr;
|
|
g_interfaceData = GetInterfaceData::getInterfaceData(g_configrationID, errorMsgStr);
|
|
g_configName = GetInterfaceData::getConfigName(g_configrationID, errorMsgStr);
|
|
if (!errorMsgStr.empty()) {
|
|
std::cout << "errorMsgStr: " << errorMsgStr << std::endl;
|
|
memcpy((void *)errorMsg, errorMsgStr.c_str(), errorMsgSize);
|
|
return -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int XNInterfaceGen_Step3_CreateConfigDir(const char *errorMsg, const int errorMsgSize)
|
|
{
|
|
bool ret = GenIDL::createConfigDirectory(g_configName);
|
|
if (!ret) {
|
|
std::cout << "Create config directory failed" << std::endl;
|
|
memcpy((void *)errorMsg, "Create config directory failed", errorMsgSize);
|
|
return -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int XNInterfaceGen_Step4_GenerateIDL(const char *errorMsg, const int errorMsgSize)
|
|
{
|
|
bool ret = GenIDL::generateIDL(g_interfaceData);
|
|
if (!ret) {
|
|
std::cout << "Generate IDL failed" << std::endl;
|
|
memcpy((void *)errorMsg, "Generate IDL failed", errorMsgSize);
|
|
return -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int XNInterfaceGen_Step5_GenerateFastDDS(const char *errorMsg, const int errorMsgSize)
|
|
{
|
|
bool ret = FastDDSGen::generateFastDDSCode(GenIDL::getIDLFilePath());
|
|
if (!ret) {
|
|
std::cout << "Generate FastDDS code failed" << std::endl;
|
|
memcpy((void *)errorMsg, "Generate FastDDS code failed", errorMsgSize);
|
|
return -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int XNInterfaceGen_Step6_GenerateDDSInterface(const char *errorMsg, const int errorMsgSize)
|
|
{
|
|
DDSInterfaceGen ddsInterfaceGen(GenIDL::getIDLFilePath());
|
|
bool ret = ddsInterfaceGen.generateDDSInterface(g_interfaceData);
|
|
if (!ret) {
|
|
std::cout << "Generate DDS interface failed" << std::endl;
|
|
memcpy((void *)errorMsg, "Generate DDS interface failed", errorMsgSize);
|
|
return -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int XNInterfaceGen_Step7_GenerateCMakeLists(const char *errorMsg, const int errorMsgSize)
|
|
{
|
|
bool ret =
|
|
CMakeListsGen::generateCMakeLists(g_interfaceData, GenIDL::getIDLFilePath(), g_configName);
|
|
if (!ret) {
|
|
std::cout << "Generate CMakeLists.txt failed" << std::endl;
|
|
memcpy((void *)errorMsg, "Generate CMakeLists.txt failed", errorMsgSize);
|
|
return -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int XNInterfaceGen_Step8_BuildAndInstall(const char *errorMsg, const int errorMsgSize)
|
|
{
|
|
std::string idlDirPath = fs::path(GenIDL::getIDLFilePath()).parent_path().string();
|
|
std::string buildCmd =
|
|
"cd " + idlDirPath + " && mkdir -p build && cd build && cmake .. && make && make install";
|
|
int buildRet = system(buildCmd.c_str());
|
|
if (buildRet != 0) {
|
|
std::cout << "CMake build or install failed" << std::endl;
|
|
memcpy((void *)errorMsg, "CMake build or install failed", errorMsgSize);
|
|
return -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int XNInterfaceGen_Step9_SudoLdconfig(const char *errorMsg, const int errorMsgSize)
|
|
{
|
|
std::string ldconfigCmd = "sudo ldconfig";
|
|
int ldconfigRet = system(ldconfigCmd.c_str());
|
|
if (ldconfigRet != 0) {
|
|
std::cout << "Sudo ldconfig failed" << std::endl;
|
|
memcpy((void *)errorMsg, "Sudo ldconfig failed", errorMsgSize);
|
|
return -1;
|
|
}
|
|
return 0;
|
|
} |