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

150 lines
4.1 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 device_driverlib_peripheral =
system.getScript("/driverlib/device_driverlib_peripherals/" +
Common.getDeviceName().toLowerCase() + "_gpio.js");
var xint_inputxbar_map = {
"GPIO_INT_XINT1" : "XBAR_INPUT4",
"GPIO_INT_XINT2" : "XBAR_INPUT5",
"GPIO_INT_XINT3" : "XBAR_INPUT6",
"GPIO_INT_XINT4" : "XBAR_INPUT13",
"GPIO_INT_XINT5" : "XBAR_INPUT14",
}
/* Intro splash on GUI */
let longDescription = "The external interrupt module (XINT).";
/* Array of SCI configurables that are common across device families */
let config = [
{
name: "xintNum",
displayName: "XINT Instance",
options: device_driverlib_peripheral.GPIO_ExternalIntNum,
default: device_driverlib_peripheral.GPIO_ExternalIntNum[0].name
},
{
name: "intType",
displayName: "Interrupt Edge",
options: device_driverlib_peripheral.GPIO_IntType,
default: device_driverlib_peripheral.GPIO_IntType[0].name
},
{
name: "enableInt",
displayName: "Enable Interrupt",
default: false,
},
{
name: "registerInterrupts",
displayName: "Register Interrupt Handler",
default: false,
}
];
/*
* ======== filterHardware ========
* Control RX, TX Pin usage by the user specified dataDirection.
*
* param component - hardware object describing signals and
* resources they're attached to
*
* returns Boolean indicating whether or not to allow the component to
* be assigned to an instance's $hardware config
*/
function filterHardware(component)
{
return (Common.typeMatches(component.type, ["XINT"]));
}
function sharedModuleInstances(inst)
{
var sharedMods = []
//GROUP_XINT
sharedMods.push({
name: "inputxbar",
displayName: "INPUTXBAR",
moduleName: "/driverlib/inputxbar_input.js",
collapsed: true,
requiredArgs : {
inputxbarInput : xint_inputxbar_map[inst.xintNum]
}
})
return sharedMods
}
function moduleInstances(inst)
{
var mods = []
if (inst.registerInterrupts)
{
mods.push({
name: "xInt",
displayName: "XINT PIE Interrupt Configuration",
moduleName: "/driverlib/interrupt.js",
collapsed: true,
args: {
$name : inst.$name + "_INT",
int : "INT_" + inst.$name,
pinmuxPeripheralModule : "",
driverlibInt: "INT_" + inst.xintNum.replace("GPIO_INT_", "")
}
})
}
return mods
}
function onValidate(inst, validation)
{
var baseName = "xintNum"
var usedInsts = [];
for (var instance_index in inst.$module.$instances)
{
var instance_obj = inst.$module.$instances[instance_index];
usedInsts.push(instance_obj[baseName]);
}
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(
"The module instance used is duplicated and it must be unique. Duplicates: " + allDuplicates,
inst, baseName);
}
}
if (Common.onlyPinmux())
{
config = [];
}
var xintModule = {
peripheralName: "XINT",
displayName: "XINT",
maxInstances: device_driverlib_peripheral.GPIO_ExternalIntNum.length,
defaultInstanceName: "myXINT",
sharedModuleInstances: sharedModuleInstances,
moduleInstances: moduleInstances,
description: "External Interrupt (XINT)",
longDescription: longDescription,
filterHardware : filterHardware,
validate: onValidate,
config: config,
templates: {
boardc : "/driverlib/gpio/xint.board.c.xdt",
boardh : "/driverlib/gpio/xint.board.h.xdt"
},
};
exports = xintModule;