296 lines
9.9 KiB
JavaScript
296 lines
9.9 KiB
JavaScript
|
|
let Common = system.getScript("/driverlib/Common.js");
|
||
|
|
let Pinmux = system.getScript("/driverlib/pinmux.js");
|
||
|
|
let device_driverlib_peripheral =
|
||
|
|
system.getScript("/driverlib/device_driverlib_peripherals/" +
|
||
|
|
Common.getDeviceName().toLowerCase() + "_epwm.js");
|
||
|
|
let epwm_json = system.getScript("/driverlib/epwm/epwm.json").epwm;
|
||
|
|
//console.log(epwm_json);
|
||
|
|
|
||
|
|
let OPEN_PAR = "(";
|
||
|
|
let CLOSE_PAR = ");";
|
||
|
|
let COMMA = ", ";
|
||
|
|
let _BASE = "_BASE"
|
||
|
|
|
||
|
|
|
||
|
|
function getCode(inst, inst_submodule, ui_name, commentOut, indicies){
|
||
|
|
var output = "";
|
||
|
|
var appendArguments = true;
|
||
|
|
var showOutput = true;
|
||
|
|
|
||
|
|
// These items have the same function
|
||
|
|
var duplicate_inst = ["epwmTimebase_hsClockDiv", "epwmDigitalCompare_stopValleyCaptureTriggerCount"];
|
||
|
|
var duplicate_pair = ["epwmTimebase_clockDiv", "epwmDigitalCompare_startValleyCaptureTriggerCount"];
|
||
|
|
|
||
|
|
// console.log("UI Name")
|
||
|
|
// console.log(ui_name)
|
||
|
|
|
||
|
|
var info = epwm_json.find(input => {
|
||
|
|
return (input.name === ui_name) && input.devices.includes(Common.getDeviceName())
|
||
|
|
})
|
||
|
|
|
||
|
|
if (!info){
|
||
|
|
//console.log("Missing JSON entry:");
|
||
|
|
//console.log(ui_name)
|
||
|
|
return "";
|
||
|
|
}
|
||
|
|
|
||
|
|
if(inst.hrpwm_enable)
|
||
|
|
{
|
||
|
|
var uis_with_same_driverlib_function = epwm_json.filter(input => {
|
||
|
|
return (input.driverlibFunctionHR === info.driverlibFunctionHR) && input.devices.includes(Common.getDeviceName())
|
||
|
|
})
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
var uis_with_same_driverlib_function = epwm_json.filter(input => {
|
||
|
|
return (input.driverlibFunction === info.driverlibFunction) && input.devices.includes(Common.getDeviceName())
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
//console.log("Code Info:");
|
||
|
|
//console.log(info);
|
||
|
|
//console.log("Other UIs with the same driverlib function:");
|
||
|
|
//console.log(uis_with_same_driverlib_function);
|
||
|
|
|
||
|
|
var require_other_ui_names = false;
|
||
|
|
var driverlibFunctionArgKeysArray = Object.keys(info.driverlibFunctionArg);
|
||
|
|
var outputFunctionArgs = new Array(driverlibFunctionArgKeysArray.length);
|
||
|
|
for (var functionArgIndex = 0; functionArgIndex < driverlibFunctionArgKeysArray.length; functionArgIndex++)
|
||
|
|
{
|
||
|
|
var functionArgName = driverlibFunctionArgKeysArray[functionArgIndex];
|
||
|
|
var functionArgValue = info.driverlibFunctionArg[functionArgName];
|
||
|
|
if (functionArgName == "base")
|
||
|
|
{
|
||
|
|
outputFunctionArgs[functionArgIndex] = inst.$name + _BASE;
|
||
|
|
}
|
||
|
|
else if (functionArgValue == "this")
|
||
|
|
{
|
||
|
|
outputFunctionArgs[functionArgIndex] = inst_submodule[ui_name];
|
||
|
|
}
|
||
|
|
else if (functionArgValue == "")
|
||
|
|
{
|
||
|
|
require_other_ui_names = true;
|
||
|
|
var requried_other_ui = uis_with_same_driverlib_function.find(input => {
|
||
|
|
if (input.driverlibFunctionArg[functionArgName] == "this")
|
||
|
|
{
|
||
|
|
return input
|
||
|
|
}
|
||
|
|
});
|
||
|
|
outputFunctionArgs[functionArgIndex] = inst_submodule[requried_other_ui.name];
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
outputFunctionArgs[functionArgIndex] = functionArgValue;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// For boolean type UI elements
|
||
|
|
// If it has an alternate driverlib version then it is boolean type
|
||
|
|
// Use driverlibFunctionAlt
|
||
|
|
// If driverlibFunction or driverlibFunctionAlt is empty then do not include arguments in the output
|
||
|
|
//console.log(inst.hrpwm_enable)
|
||
|
|
if(inst.hrpwm_enable)
|
||
|
|
{
|
||
|
|
//console.log(ui_name, inst_submodule[ui_name], info.hasOwnProperty('driverlibFunctionHRAlt'),info.hasOwnProperty('driverlibFunctionHR'))
|
||
|
|
if (info.hasOwnProperty('driverlibFunctionHRAlt'))
|
||
|
|
{
|
||
|
|
// Check to see if the set value is different from the default value
|
||
|
|
if (showOutput)
|
||
|
|
{
|
||
|
|
if (inst_submodule[ui_name])
|
||
|
|
{
|
||
|
|
//console.log("true", ui_name)
|
||
|
|
if (info.driverlibFunctionHR == "")
|
||
|
|
{
|
||
|
|
output = "";
|
||
|
|
appendArguments = false;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
output = info.driverlibFunctionHR;
|
||
|
|
appendArguments = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
//console.log("not true", ui_name)
|
||
|
|
if (info.driverlibFunctionHRAlt == "")
|
||
|
|
{
|
||
|
|
output = "";
|
||
|
|
appendArguments = false;
|
||
|
|
//console.log(ui_name)
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
output = info.driverlibFunctionHRAlt;
|
||
|
|
appendArguments = true;
|
||
|
|
}
|
||
|
|
//console.log(inst_submodule[ui_name], output)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
appendArguments = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
if (info.hasOwnProperty('driverlibFunctionHR'))
|
||
|
|
{
|
||
|
|
output = info.driverlibFunctionHR;
|
||
|
|
appendArguments = true;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
output = "";
|
||
|
|
appendArguments = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
if (info.hasOwnProperty('driverlibFunctionAlt'))
|
||
|
|
{
|
||
|
|
// Check to see if the set value is different from the default value
|
||
|
|
if (showOutput)
|
||
|
|
{
|
||
|
|
if (inst_submodule[ui_name])
|
||
|
|
{
|
||
|
|
if (info.driverlibFunction == "")
|
||
|
|
{
|
||
|
|
output = "";
|
||
|
|
appendArguments = false;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
output = info.driverlibFunction;
|
||
|
|
appendArguments = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
if (info.driverlibFunctionAlt == "")
|
||
|
|
{
|
||
|
|
output = "";
|
||
|
|
appendArguments = false;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
output = info.driverlibFunctionAlt;
|
||
|
|
appendArguments = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
appendArguments = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
if (info.hasOwnProperty('driverlibFunction'))
|
||
|
|
{
|
||
|
|
output = info.driverlibFunction;
|
||
|
|
appendArguments = true;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
output = "";
|
||
|
|
appendArguments = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//console.log(output)
|
||
|
|
// Only add arguments to a function if there is a function being outputted
|
||
|
|
// This is cross referenced with the code above
|
||
|
|
if (appendArguments)
|
||
|
|
{
|
||
|
|
//console.log(inst_submodule[ui_name], output)
|
||
|
|
output += OPEN_PAR;
|
||
|
|
//console.log(inst_submodule[ui_name], output)
|
||
|
|
for (var outputFunctionArgIndex = 0; outputFunctionArgIndex < outputFunctionArgs.length; outputFunctionArgIndex++)
|
||
|
|
{
|
||
|
|
// Check to see if the argument belongs to an OR'd input
|
||
|
|
if (String(outputFunctionArgs[outputFunctionArgIndex]).indexOf(',') > -1)
|
||
|
|
{
|
||
|
|
outputFunctionArgs[outputFunctionArgIndex] = String(outputFunctionArgs[outputFunctionArgIndex]).replace(/,/g, " | ")
|
||
|
|
//showOutput = true;
|
||
|
|
}
|
||
|
|
// Check to see if argument is empty (no options of an OR'ed select are selected) and output 0
|
||
|
|
if (String(outputFunctionArgs[outputFunctionArgIndex]) == "")
|
||
|
|
{
|
||
|
|
// Don't output the code if there is no argument for it
|
||
|
|
showOutput = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
output += outputFunctionArgs[outputFunctionArgIndex];
|
||
|
|
if (outputFunctionArgIndex != outputFunctionArgs.length - 1)
|
||
|
|
{
|
||
|
|
output += COMMA;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
output += CLOSE_PAR;
|
||
|
|
}
|
||
|
|
if (showOutput == false)
|
||
|
|
{
|
||
|
|
output = "";
|
||
|
|
}
|
||
|
|
if (showOutput == true && commentOut == true && output != "")
|
||
|
|
{
|
||
|
|
// Handle the special case where multiple sysconfig options have the same output function
|
||
|
|
if (duplicate_pair.includes(ui_name))
|
||
|
|
{
|
||
|
|
var len = indicies.length;
|
||
|
|
var duplicateIndex = duplicate_pair.indexOf(ui_name);
|
||
|
|
if(len == 2)
|
||
|
|
{
|
||
|
|
if (inst[duplicate_inst[duplicateIndex]] != inst.$module.config[indicies[0]].config[indicies[1]+1].default)
|
||
|
|
{
|
||
|
|
output = output;
|
||
|
|
}
|
||
|
|
else{output = "//" + output;}
|
||
|
|
}
|
||
|
|
else if (len == 3)
|
||
|
|
{
|
||
|
|
if (inst[duplicate_inst[duplicateIndex]] != inst.$module.config[indicies[0]].config[indicies[1]].config[indicies[2]+1].default)
|
||
|
|
{
|
||
|
|
output = output;
|
||
|
|
}
|
||
|
|
else{output = "//" + output;}
|
||
|
|
}
|
||
|
|
else if (len == 4)
|
||
|
|
{
|
||
|
|
if (inst[duplicate_inst[duplicateIndex]] != inst.$module.config[indicies[0]].config[indicies[1]].config[indicies[2]].config[indicies[3]+1].default)
|
||
|
|
{
|
||
|
|
output = output;
|
||
|
|
}
|
||
|
|
else{output = "//" + output;}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
output = "//" + output;
|
||
|
|
}
|
||
|
|
|
||
|
|
//if (ui_name == "epwmTimebase_clockDiv" && inst["epwmTimebase_hsClockDiv"] != "EPWM_HSCLOCK_DIVIDER_2")
|
||
|
|
//{
|
||
|
|
// output = output;
|
||
|
|
//}
|
||
|
|
//else if (ui_name == "epwmDigitalCompare_startValleyCaptureTriggerCount" && inst["epwmDigitalCompare_stopValleyCaptureTriggerCount"] != "0")
|
||
|
|
//{
|
||
|
|
// output = output;
|
||
|
|
//}
|
||
|
|
//else
|
||
|
|
//{
|
||
|
|
// output = "//" + output;
|
||
|
|
//}
|
||
|
|
}
|
||
|
|
return output;
|
||
|
|
}
|
||
|
|
|
||
|
|
exports = {
|
||
|
|
getCode : getCode,
|
||
|
|
};
|