c2000ware-core-sdk/driverlib/.meta/clb_inputxbar_input.js

120 lines
3.3 KiB
JavaScript
Raw Normal View History

2023-06-24 09:05:38 +03:00
let Common = system.getScript("/driverlib/Common.js");
let Pinmux = system.getScript("/driverlib/pinmux.js");
let InputXbar_DevSpecific = system.getScript("/driverlib/inputxbar/inputxbar_deviceSpecific.js");
let device_driverlib_peripheral =
system.getScript("/driverlib/device_driverlib_peripherals/" +
Common.getDeviceName().toLowerCase() + "_xbar.js");
/* Intro splash on GUI */
let longDescription = "The CLB Input X-BAR is used to route signals from a GPIO to many different" +
" IP blocks such as the ADC(s), eCAP(s), ePWM(s), and external interrupts";
var inputXbarCount = 16
/* Array of Input X-bar configurables that are common across device families */
var config = [
];
var gpios = Common.getGPIOs();
var aios = Common.getAIOs();
var inputxbarGPIOOptions = [];
for (var gpioIndex = 0; gpioIndex < gpios.length; gpioIndex++)
{
inputxbarGPIOOptions.push({name: gpios[gpioIndex]});
}
for (var aioIndex = 0; aioIndex < aios.length; aioIndex++)
{
inputxbarGPIOOptions.push({name: aios[aioIndex]});
}
var inputNumOptions = []
for (var inputNum of device_driverlib_peripheral.XBAR_InputNum)
{
inputNumOptions.push({
name: inputNum.name
})
}
var inputxbarINPUTConfig = {
name : "inputxbarInput",
displayName : "INPUT",
description : 'The INPUT number for Input X-Bar',
hidden : false,
default : inputNumOptions[0].name,
options : inputNumOptions
}
var inputxbarGPIOConfig = {
name : "inputxbarGpio",
displayName : "INPUT Source",
description : 'GPIO for this Input X-Bar',
hidden : false,
default : inputxbarGPIOOptions[0].name,
options : inputxbarGPIOOptions
}
var inputxbarLOCKConfig = {
name : "inputxbarLock",
displayName : "INPUT Lock",
description : 'Lock this Input X-Bar',
hidden : false,
default : false
}
config.push(inputxbarINPUTConfig);
config.push(inputxbarGPIOConfig);
config.push(inputxbarLOCKConfig);
function onValidate(inst, validation)
{
var usedInsts = [];
for (var instance_index in inst.$module.$instances)
{
var instance_obj = inst.$module.$instances[instance_index];
usedInsts.push(instance_obj.inputxbarInput);
}
var duplicatesResult = Common.findDuplicates(usedInsts)
if (duplicatesResult.duplicates.length != 0)
{
var allDuplicates = "";
for (var duplicateNamesIndex in duplicatesResult.duplicates)
{
allDuplicates = allDuplicates + Common.stringOrEmpty(allDuplicates, ", ")
+ duplicatesResult.duplicates[duplicateNamesIndex];
}
validation.logError(
"This instance is already in use! Duplicates: " + allDuplicates,
inst, "inputxbarInput");
}
}
var clb_inputxbarModule = {
peripheralName: "CLB_INPUTXBAR",
displayName: "CLB INPUTXBAR INPUT",
maxInstances: inputXbarCount,
defaultInstanceName: "myCLBINPUTXBARINPUT",
description: "CLB Input X-bar",
config: config,
templates: {
boardc : "/driverlib/clb_inputxbar/clb_inputxbar_input.board.c.xdt",
boardh : "/driverlib/clb_inputxbar/clb_inputxbar_input.board.h.xdt"
},
validate : onValidate,
};
if (clb_inputxbarModule.maxInstances <= 0)
{
delete clb_inputxbarModule.pinmuxRequirements;
}
exports = clb_inputxbarModule;