Update repo
This commit is contained in:
@@ -0,0 +1,367 @@
|
||||
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() + "_sysctl.js");
|
||||
|
||||
|
||||
/* Intro splash on GUI */
|
||||
let longDescription = "";
|
||||
|
||||
|
||||
|
||||
var WATCHDOG_INSTANCE = [
|
||||
{ name: "WATCHDOG_BASE", displayName: "WATCHDOG"},
|
||||
|
||||
]
|
||||
|
||||
var wd_stdby = false;
|
||||
|
||||
if(Common.getDeviceName().toLowerCase() == 'f28004x')
|
||||
{
|
||||
wd_stdby = true
|
||||
}
|
||||
|
||||
var wd_prescale = false;
|
||||
|
||||
if(Common.getDeviceName().toLowerCase() == 'f2837xd' || Common.getDeviceName().toLowerCase() == 'f2837xs'|| Common.getDeviceName().toLowerCase() == 'f2807x')
|
||||
{
|
||||
wd_prescale = true;
|
||||
// inst.wdPredivideren = false;
|
||||
|
||||
}
|
||||
|
||||
function onchangeWDMode(inst, ui)
|
||||
{
|
||||
if (inst.wdMode == "SYSCTL_WD_MODE_RESET"){
|
||||
ui.registerInterrupts.hidden = true;
|
||||
ui.wdPulse.hidden = false;
|
||||
inst.registerInterrupts = false;
|
||||
}
|
||||
else {
|
||||
|
||||
ui.registerInterrupts.hidden = false;
|
||||
ui.wdPulse.hidden = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//function onchangeWindowEnable(inst, ui)
|
||||
//{
|
||||
// if (inst.wdWindowEnable == true){
|
||||
// ui.wdWindowThreshold.hidden = false;
|
||||
// }
|
||||
// else {
|
||||
// ui.wdWindowThreshold.hidden = true;
|
||||
// inst.wdWindowThreshold = 0;
|
||||
// }
|
||||
|
||||
//}
|
||||
|
||||
function onchangewdpredivider(inst, ui)
|
||||
{
|
||||
var calcwdtimeresults = calcwdtime(inst.wdPredivider,inst.wdPrescalar);
|
||||
|
||||
inst.wdClock = calcwdtimeresults.wdclock;
|
||||
inst.wdTime = calcwdtimeresults.wdtime;
|
||||
inst.wdPulse = calcwdtimeresults.wdpulse;
|
||||
|
||||
}
|
||||
function onchangewdprescalar(inst, ui)
|
||||
{
|
||||
if(inst.wdPredivider)
|
||||
{
|
||||
|
||||
// calcwdtime(inst.wdPredivider,inst.wdPrescalar);
|
||||
|
||||
var calcwdtimeresults = calcwdtime(inst.wdPredivider,inst.wdPrescalar);
|
||||
|
||||
inst.wdClock = calcwdtimeresults.wdclock;
|
||||
inst.wdTime = calcwdtimeresults.wdtime;
|
||||
inst.wdPulse = calcwdtimeresults.wdpulse;
|
||||
}
|
||||
else
|
||||
{
|
||||
// calcwdtime(inst.wdPredivider,inst.wdPrescalar);
|
||||
|
||||
var calcwdtimeresults = calcwdtime('SYSCTL_WD_PREDIV_512',inst.wdPrescalar);
|
||||
|
||||
inst.wdClock = calcwdtimeresults.wdclock;
|
||||
inst.wdTime = calcwdtimeresults.wdtime;
|
||||
inst.wdPulse = calcwdtimeresults.wdpulse;
|
||||
}
|
||||
}
|
||||
|
||||
function calcwdtime(predivide, prescale)
|
||||
{
|
||||
var localwdclock
|
||||
var predivsubstr;
|
||||
var prescalesubstr;
|
||||
var intprediv;
|
||||
var intprescale;
|
||||
var localwdtime;
|
||||
var localwdpulse;
|
||||
|
||||
|
||||
predivsubstr = predivide.substring(17);
|
||||
prescalesubstr = prescale.substring(19);
|
||||
if(wd_prescale){
|
||||
|
||||
intprediv = 512.0;
|
||||
}
|
||||
else {
|
||||
|
||||
intprediv = parseFloat(predivsubstr);
|
||||
}
|
||||
|
||||
intprescale = parseFloat(prescalesubstr);
|
||||
|
||||
|
||||
localwdclock = 10000000.0/intprediv;
|
||||
localwdclock = (localwdclock/intprescale)/1000.0 ;
|
||||
localwdtime = (1/localwdclock) * 256.0;
|
||||
localwdpulse = (1/localwdclock) * 512.0;
|
||||
|
||||
return {
|
||||
wdclock: localwdclock,
|
||||
wdtime : localwdtime,
|
||||
wdpulse : localwdpulse
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Array of Watchdog configurables that are common across device families */
|
||||
let config = [
|
||||
|
||||
{
|
||||
name : "watchdogBase",
|
||||
displayName : "Watchdog Instance",
|
||||
description : 'Instance of the Watchdog used.',
|
||||
hidden : false,
|
||||
default : WATCHDOG_INSTANCE[0].name,
|
||||
options : WATCHDOG_INSTANCE
|
||||
},
|
||||
|
||||
{
|
||||
name : "wdMode",
|
||||
displayName : "Set the WD Mode",
|
||||
description : 'Set the WD Action either Interrupt or Reset',
|
||||
hidden : false,
|
||||
onChange : onchangeWDMode,
|
||||
default : 'SYSCTL_WD_MODE_RESET',
|
||||
options : device_driverlib_peripheral.SysCtl_WDMode
|
||||
},
|
||||
];
|
||||
|
||||
if (["F2838x", "F28004x" ,"F28003x", "F28002x", "F280013x", "F280015x", "F28P55x"].includes(Common.getDeviceName()))
|
||||
{
|
||||
|
||||
config = config.concat([
|
||||
{
|
||||
name : "wdPredivider",
|
||||
displayName : "Watchdog Predivider",
|
||||
description : 'Watchdog Clock Predivider',
|
||||
hidden : false,
|
||||
onChange : onchangewdpredivider,
|
||||
default : 'SYSCTL_WD_PREDIV_512',
|
||||
options : device_driverlib_peripheral.SysCtl_WDPredivider,
|
||||
},
|
||||
]);
|
||||
}
|
||||
|
||||
config = config.concat([
|
||||
{
|
||||
name : "wdPrescalar",
|
||||
displayName : "Watchdog Prescalar",
|
||||
description : 'Watchdog Clock Prescalar',
|
||||
hidden : false,
|
||||
onChange : onchangewdprescalar,
|
||||
default : 'SYSCTL_WD_PRESCALE_1',
|
||||
options : device_driverlib_peripheral.SysCtl_WDPrescaler
|
||||
},
|
||||
{
|
||||
name : "wdClock",
|
||||
displayName : "Watchdog Clock(kHz)",
|
||||
description : 'Watchdog Clock',
|
||||
hidden : false,
|
||||
readOnly : true,
|
||||
default : 19.53125,
|
||||
|
||||
},
|
||||
{
|
||||
name : "wdTime",
|
||||
displayName : "Watchdog Countdown Time(ms)",
|
||||
description : 'Max time allowed between write to the WDKEY register',
|
||||
hidden : false,
|
||||
readOnly : true,
|
||||
default : 13.1072,
|
||||
|
||||
},
|
||||
{
|
||||
name : "wdPulse",
|
||||
displayName : "Watchdog Reset Pulse Duration(ms)",
|
||||
description : 'Time that Watchdog will hold XRSn low on WD Reset',
|
||||
hidden : false,
|
||||
readOnly : true,
|
||||
default : 26.2144,
|
||||
|
||||
},
|
||||
{
|
||||
name : "wdWindowThreshold",
|
||||
displayName : "Minimum Count of WDCTR Before Service",
|
||||
description : 'Watchdog lower limit threshold',
|
||||
hidden : false,
|
||||
default : 0,
|
||||
},
|
||||
])
|
||||
|
||||
var powerConfig = []
|
||||
|
||||
if (!["F28004x"].includes(Common.getDeviceName()))
|
||||
{
|
||||
powerConfig.push({
|
||||
name : "wdStandbyWakeup",
|
||||
displayName : "Watchdog Interrupt Standby Mode Wake Enable",
|
||||
description : 'Enable Watchdog Wakeup in Standby Mode',
|
||||
hidden : wd_stdby,
|
||||
default : false
|
||||
});
|
||||
}
|
||||
if (!["F2838x"].includes(Common.getDeviceName()))
|
||||
{
|
||||
powerConfig.push(
|
||||
{
|
||||
name : "wdHaltEnable",
|
||||
displayName : "Watchdog Interrupt Halt Mode Wake Enable",
|
||||
description : 'Enable Watchdog Wakeup in Halt mode',
|
||||
hidden : false,
|
||||
default : false
|
||||
});
|
||||
}
|
||||
|
||||
config.push({
|
||||
name: "GROUP_WD_Power",
|
||||
displayName: "Watchdog Wakeup from Low Power Modes",
|
||||
collapsed: false,
|
||||
config: powerConfig
|
||||
});
|
||||
|
||||
config = config.concat([
|
||||
{
|
||||
name : "enableModule",
|
||||
displayName : "Start the Watchdog",
|
||||
description : 'Starts the Watchdog',
|
||||
hidden : false,
|
||||
default : true
|
||||
},
|
||||
|
||||
{
|
||||
name : "registerInterrupts",
|
||||
displayName : "Register Interrupt Handler",
|
||||
description : 'Whether or not to register interrupt handlers in the interrupt module.',
|
||||
hidden : true,
|
||||
default : false
|
||||
},
|
||||
|
||||
|
||||
])
|
||||
|
||||
|
||||
function onValidate(inst, validation)
|
||||
{
|
||||
var usedWATCHDOGInsts = [];
|
||||
for (var instance_index in inst.$module.$instances)
|
||||
{
|
||||
var instance_obj = inst.$module.$instances[instance_index];
|
||||
usedWATCHDOGInsts.push(instance_obj.watchdogBase);
|
||||
}
|
||||
|
||||
var duplicatesResult = Common.findDuplicates(usedWATCHDOGInsts)
|
||||
|
||||
if (duplicatesResult.duplicates.length != 0)
|
||||
{
|
||||
var allDuplicates = "";
|
||||
for (var duplicateNamesIndex in duplicatesResult.duplicates)
|
||||
{
|
||||
allDuplicates = allDuplicates + Common.stringOrEmpty(allDuplicates, ", ")
|
||||
+ duplicatesResult.duplicates[duplicateNamesIndex];
|
||||
}
|
||||
validation.logError(
|
||||
"The Watchdog Instance used. Duplicates: " + allDuplicates,
|
||||
inst, "watchdogBase");
|
||||
}
|
||||
|
||||
|
||||
if (inst.wdWindowThreshold < 0 || inst.wdWindowThreshold > 255)
|
||||
{
|
||||
validation.logError(
|
||||
"Enter an integer for Watchdog Window Threshold between 0 and 255!",
|
||||
inst, "wdWindowThreshold");
|
||||
}
|
||||
if (!Number.isInteger(inst.wdWindowThreshold))
|
||||
{
|
||||
validation.logError(
|
||||
"Watchdog Window Threshold must be an integer",
|
||||
inst, "wdWindowThreshold");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
var sharedModuleInstances = undefined;
|
||||
|
||||
/* Need Wake Int Here */
|
||||
sharedModuleInstances = function (inst) {
|
||||
if (inst.registerInterrupts)
|
||||
{
|
||||
return (
|
||||
[
|
||||
{
|
||||
name: "wakeInt",
|
||||
displayName: "WAKE Interrupt",
|
||||
moduleName: "/driverlib/interrupt/interrupt_wake.js",
|
||||
collapsed: true,
|
||||
},
|
||||
]
|
||||
);
|
||||
}
|
||||
return []
|
||||
}
|
||||
|
||||
|
||||
|
||||
function filterHardware(component)
|
||||
{
|
||||
return (Common.typeMatches(component.type, ["WATCHDOG"]));
|
||||
}
|
||||
|
||||
var watchdogModule = {
|
||||
peripheralName: "WATCHDOG",
|
||||
displayName: "WATCHDOG",
|
||||
maxInstances: 1,
|
||||
defaultInstanceName: "myWATCHDOG",
|
||||
description: "Watchdog Peripheral",
|
||||
longDescription: longDescription,
|
||||
filterHardware : filterHardware,
|
||||
config: config,
|
||||
sharedModuleInstances : sharedModuleInstances,
|
||||
templates: {
|
||||
boardc : "/driverlib/watchdog/watchdog.board.c.xdt",
|
||||
boardh : "/driverlib/watchdog/watchdog.board.h.xdt"
|
||||
},
|
||||
validate : onValidate
|
||||
};
|
||||
|
||||
|
||||
if (watchdogModule.maxInstances <= 0)
|
||||
{
|
||||
delete watchdogModule.pinmuxRequirements;
|
||||
}
|
||||
|
||||
exports = watchdogModule;
|
||||
Reference in New Issue
Block a user