c2000ware-core-sdk/libraries/.meta/control/dcl/refgen_data.js
2023-12-13 16:46:16 +05:30

139 lines
10 KiB
JavaScript

//==========================================================================
// REFERENCE FILES AND HEADER FILES
// Functions and data for the reference files that should be pulled in
//==========================================================================
// c and asm files, to be pulled in using submodules
var refFiles = {
"DCL_calcGamma": {"name":"DCL_calcGamma", "path":"../libraries/control/DCL/c28/source/DCL_calcGamma.asm", "alwaysInclude":false},
"DCL_clamp_C1": {"name":"DCL_clamp_C1", "path":"../libraries/control/DCL/c28/source/DCL_clamp_C1.asm", "alwaysInclude":false},
"DCL_clamp_L1": {"name":"DCL_clamp_L1", "path":"../libraries/control/DCL/c28/source/DCL_clamp_L1.asm", "alwaysInclude":false},
"DCL_DF11_C1": {"name":"DCL_DF11_C1", "path":"../libraries/control/DCL/c28/source/DCL_DF11_C1.asm", "alwaysInclude":false},
"DCL_DF11_L1": {"name":"DCL_DF11_L1", "path":"../libraries/control/DCL/c28/source/DCL_DF11_L1.asm", "alwaysInclude":false},
"DCL_DF13_C1": {"name":"DCL_DF13_C1", "path":"../libraries/control/DCL/c28/source/DCL_DF13_C1.asm", "alwaysInclude":false},
"DCL_DF13_C2C3": {"name":"DCL_DF13_C2C3", "path":"../libraries/control/DCL/c28/source/DCL_DF13_C2C3.asm", "alwaysInclude":false},
"DCL_DF13_L1": {"name":"DCL_DF13_L1", "path":"../libraries/control/DCL/c28/source/DCL_DF13_L1.asm", "alwaysInclude":false},
"DCL_DF13_L2L3": {"name":"DCL_DF13_L2L3", "path":"../libraries/control/DCL/c28/source/DCL_DF13_L2L3.asm", "alwaysInclude":false},
"DCL_DF22_C1": {"name":"DCL_DF22_C1", "path":"../libraries/control/DCL/c28/source/DCL_DF22_C1.asm", "alwaysInclude":false},
"DCL_DF22_C2C3": {"name":"DCL_DF22_C2C3", "path":"../libraries/control/DCL/c28/source/DCL_DF22_C2C3.asm", "alwaysInclude":false},
"DCL_DF22_L1": {"name":"DCL_DF22_L1", "path":"../libraries/control/DCL/c28/source/DCL_DF22_L1.asm", "alwaysInclude":false},
"DCL_DF22_L2L3": {"name":"DCL_DF22_L2L3", "path":"../libraries/control/DCL/c28/source/DCL_DF22_L2L3.asm", "alwaysInclude":false},
"DCL_DF23_C1": {"name":"DCL_DF23_C1", "path":"../libraries/control/DCL/c28/source/DCL_DF23_C1.asm", "alwaysInclude":false},
"DCL_DF23_C2C3": {"name":"DCL_DF23_C2C3", "path":"../libraries/control/DCL/c28/source/DCL_DF23_C2C3.asm", "alwaysInclude":false},
"DCL_DF23_L1": {"name":"DCL_DF23_L1", "path":"../libraries/control/DCL/c28/source/DCL_DF23_L1.asm", "alwaysInclude":false},
"DCL_DF23_L2L3": {"name":"DCL_DF23_L2L3", "path":"../libraries/control/DCL/c28/source/DCL_DF23_L2L3.asm", "alwaysInclude":false},
"DCL_error": {"name":"DCL_error", "path":"../libraries/control/DCL/c28/source/DCL_error.c", "alwaysInclude":false},
"DCL_frwlog": {"name":"DCL_frwlog", "path":"../libraries/control/DCL/c28/source/DCL_frwlog.asm", "alwaysInclude":false},
"DCL_futils": {"name":"DCL_futils", "path":"../libraries/control/DCL/c28/source/DCL_futils.asm", "alwaysInclude":false},
"DCL_futils32": {"name":"DCL_futils32", "path":"../libraries/control/DCL/c28/source/DCL_futils32.asm", "alwaysInclude":false},
"DCL_index": {"name":"DCL_index", "path":"../libraries/control/DCL/c28/source/DCL_index.asm", "alwaysInclude":false},
"DCL_NLPID_C3": {"name":"DCL_NLPID_C3", "path":"../libraries/control/DCL/c28/source/DCL_NLPID_C3.asm", "alwaysInclude":false},
"DCL_PI_A1": {"name":"DCL_PI_A1", "path":"../libraries/control/DCL/c28/source/DCL_PI_A1.asm", "alwaysInclude":false},
"DCL_PI_C1": {"name":"DCL_PI_C1", "path":"../libraries/control/DCL/c28/source/DCL_PI_C1.asm", "alwaysInclude":false},
"DCL_PI_C4": {"name":"DCL_PI_C4", "path":"../libraries/control/DCL/c28/source/DCL_PI_C4.asm", "alwaysInclude":false},
"DCL_PI_C7": {"name":"DCL_PI_C7", "path":"../libraries/control/DCL/c28/source/DCL_PI_C7.asm", "alwaysInclude":false},
"DCL_PI_L1": {"name":"DCL_PI_L1", "path":"../libraries/control/DCL/c28/source/DCL_PI_L1.asm", "alwaysInclude":false},
"DCL_PI_L2": {"name":"DCL_PI_L2", "path":"../libraries/control/DCL/c28/source/DCL_PI_L2.asm", "alwaysInclude":false},
"DCL_PI2_C2": {"name":"DCL_PI2_C2", "path":"../libraries/control/DCL/c28/source/DCL_PI2_C2.asm", "alwaysInclude":false},
"DCL_PID_A1": {"name":"DCL_PID_A1", "path":"../libraries/control/DCL/c28/source/DCL_PID_A1.asm", "alwaysInclude":false},
"DCL_PID_C1": {"name":"DCL_PID_C1", "path":"../libraries/control/DCL/c28/source/DCL_PID_C1.asm", "alwaysInclude":false},
"DCL_PID_C4": {"name":"DCL_PID_C4", "path":"../libraries/control/DCL/c28/source/DCL_PID_C4.asm", "alwaysInclude":false},
"DCL_PID_L1": {"name":"DCL_PID_L1", "path":"../libraries/control/DCL/c28/source/DCL_PID_L1.asm", "alwaysInclude":false},
"DCL_PID_L2": {"name":"DCL_PID_L2", "path":"../libraries/control/DCL/c28/source/DCL_PID_L2.asm", "alwaysInclude":false}
}
// h files, to be pulled in using c2000_libraries.h.xdt
// some of these header files have certain refFiles (asm/c files) dependencies
// NOTE: (probably) cannot move the refFilesList into the control_struct_dict since each header file references these reference files lists. If a reference file doesn't exist when the header file is imported, it may flag an error.
var headerFiles = {
"DCL": {"path":"../libraries/control/DCL/c28/include/DCL.h", "refFilesList":["DCL_error"]},
"DCLC28": {"path":"../libraries/control/DCL/c28/include/DCLC28.h", "refFilesList":["DCL_futils32","DCL_PID_A1","DCL_futils32","DCL_PI_A1"]},
"DCLCLA": {"path":"../libraries/control/DCL/c28/include/DCLCLA.h", "refFilesList":["DCL_PID_L1","DCL_PID_L2","DCL_PI_L1","DCL_PI_L2","DCL_DF11_L1","DCL_DF13_L1","DCL_DF13_L2L3","DCL_DF13_L2L3","DCL_DF22_L1","DCL_DF22_L2L3","DCL_DF22_L2L3","DCL_DF23_L1","DCL_DF23_L2L3","DCL_DF23_L2L3","DCL_clamp_L1"]},
"DCLF32": {"path":"../libraries/control/DCL/c28/include/DCLF32.h", "refFilesList":["DCL_futils","DCL_PID_C1","DCL_PID_C4","DCL_futils","DCL_PI_C1","DCL_PI_C4","DCL_PI_C7","DCL_futils","DCL_futils","DCL_DF11_C1","DCL_futils","DCL_DF13_C1","DCL_DF13_C2C3","DCL_DF13_C2C3","DCL_futils","DCL_DF22_C1","DCL_DF22_C2C3","DCL_DF22_C2C3","DCL_futils","DCL_DF23_C1","DCL_DF23_C2C3","DCL_DF23_C2C3","DCL_clamp_C1","DCL_futils"]},
"DCLF64": {"path":"../libraries/control/DCL/c28/include/DCLF64.h", "refFilesList":[]},
"DCL_fdlog": {"path":"../libraries/control/DCL/c28/include/DCL_fdlog.h", "refFilesList":["DCL_frwlog","DCL_frwlog"]},
"DCL_fdlog64": {"path":"../libraries/control/DCL/c28/include/DCL_fdlog64.h", "refFilesList":[]},
"DCL_log32": {"path":"../libraries/control/DCL/c28/include/DCL_log32.h", "refFilesList":[]},
"DCL_MLOG": {"path":"../libraries/control/DCL/c28/include/DCL_MLOG.h", "refFilesList":[]},
"DCL_MLOG32": {"path":"../libraries/control/DCL/c28/include/DCL_MLOG32.h", "refFilesList":[]},
"DCL_NLPID": {"path":"../libraries/control/DCL/c28/include/DCL_NLPID.h", "refFilesList":["DCL_futils","DCL_calcGamma","DCL_NLPID_C3"]},
"DCL_refgen": {"path":"../libraries/control/DCL/c28/include/DCL_refgen.h", "refFilesList":[]},
"DCL_refgen64": {"path":"../libraries/control/DCL/c28/include/DCL_refgen64.h", "refFilesList":[]},
"DCL_TCM": {"path":"../libraries/control/DCL/c28/include/DCL_TCM.h", "refFilesList":["DCL_index","DCL_index","DCL_index"]},
}
//==========================================================================
// CONTROL STRUCT LOOKUP DICTIONARY
// For each controller structure, determine which header files to use, and
// the config lookup list for this controller
//==========================================================================
var control_struct_dict = {
"REFGEN": {"headerFilesList":["DCL","DCL_refgen"]}, // add all of config_entries to the list
"REFGEN64": {"headerFilesList":["DCL","DCL_refgen64"]}, // add all of config_entries to the list
}
function getHeaderFilesList(controlStruct)
{
return control_struct_dict[controlStruct]['headerFilesList'];
}
function getOptIncludePaths(controlStruct)
{
var headerFilesList = control_struct_dict[controlStruct]['headerFilesList'];
var includePathList = []
for (var i in headerFilesList)
{
var headerFileName = headerFilesList[i];
var headerFileObj = headerFiles[headerFileName];
var headerFilePath = headerFileObj["path"];
var includePath = headerFilePath.split("/").slice(0,-1).join("/");
if (!(includePathList.includes(includePath)))
{
includePathList.push(includePath);
}
}
return includePathList;
}
function getRefFilesModuleArrFromControlStruct(controlStruct)
{
if (controlStruct.length === 0)
{
return [];
}
var arr = [];
var headerFilesList = control_struct_dict[controlStruct]['headerFilesList'];
var pathToDynamicJsFiles = "/libraries/control/dcl/templates/dynamic_mods/"
for (var i in headerFilesList)
{
var h = headerFilesList[i]
var refFilesList = headerFiles[h]['refFilesList'];
for (var j in refFilesList)
{
var refFileName = refFilesList[j]
var moduleNamePath = pathToDynamicJsFiles + refFileName + "_dynamic.js"
// if it hasn't been added yet, add it
var alreadyInArray = arr.some(el => refFileName === el["name"])
if (!alreadyInArray)
{
arr.push({
name:refFileName,
moduleName:moduleNamePath,
});
}
}
}
// all available Sysconfig devices use at least FPU32, and so require FPU.js to be included
arr.push({name:"fpu", moduleName:"/libraries/.meta/math/FPU/FPU.js", hidden:false});
return arr;
}
//==========================================================================
// EXPORTS
// Export all of the functions so variables/structures can be accessed
// in other .js files
//==========================================================================
exports = {
getRefFilesModuleArrFromControlStruct: getRefFilesModuleArrFromControlStruct,
getHeaderFilesList:getHeaderFilesList,
getOptIncludePaths:getOptIncludePaths,
}