2023-06-24 09:05:38 +03:00
let Common = system . getScript ( "/driverlib/Common.js" ) ;
let InternalConnections = system . getScript ( "/driverlib/adc/adc_internalConnections.js" )
let device _driverlib _peripheral =
system . getScript ( "/driverlib/device_driverlib_peripherals/" +
Common . getDeviceName ( ) . toLowerCase ( ) + "_adc.js" ) ;
2023-07-24 12:14:00 +03:00
let device _driverlib _memmap =
system . getScript ( "/driverlib/device_driverlib_peripherals/" +
Common . getDeviceName ( ) . toLowerCase ( ) + "_memmap.js" ) ;
var ADC _SFTYCH _SOURCE = [ ] ;
if ( [ "F28P65x" ] . includes ( Common . getDeviceName ( ) ) )
{
for ( var sftychkr in device _driverlib _memmap . ADCSAFETYCHKMemoryMap )
{
for ( var chkrslt in device _driverlib _peripheral . ADC _SafetyCheckResult )
{
var currentchkrslt = device _driverlib _memmap . ADCSAFETYCHKMemoryMap [ sftychkr ] . name . replace ( "_BASE" , "" ) . replace ( "ADC" , "" )
var currentsftychkr = device _driverlib _peripheral . ADC _SafetyCheckResult [ chkrslt ] . name . replace ( "ADC_SAFETY_CHECK_" , "" )
ADC _SFTYCH _SOURCE . push (
{ name : device _driverlib _memmap . ADCSAFETYCHKMemoryMap [ sftychkr ] . name . replace ( "_BASE" , "" ) . replace ( "ADC" , "" ) + device _driverlib _peripheral . ADC _SafetyCheckResult [ chkrslt ] . name . replace ( "ADC_SAFETY_CHECK_" , "" ) ,
displayName : device _driverlib _memmap . ADCSAFETYCHKMemoryMap [ sftychkr ] . name . replace ( "_BASE" , "" ) . replace ( "ADCSAFETYCHK" , "SAFETY_CHECK" ) + " " + device _driverlib _peripheral . ADC _SafetyCheckResult [ chkrslt ] . name . replace ( "ADC_SAFETY_CHECK_" , "" )
} ,
)
}
}
}
2023-06-24 09:05:38 +03:00
function onChangeSafetyCheckerEVNTs ( inst , ui ) {
2023-07-24 12:14:00 +03:00
for ( var evntIndex in device _driverlib _peripheral . ADC _SafetyCheckEvent )
2023-06-24 09:05:38 +03:00
{
2023-07-24 12:14:00 +03:00
var currentEvnt = device _driverlib _peripheral . ADC _SafetyCheckEvent [ evntIndex ] . name
var evnti = ( currentEvnt ) . replace ( /[^0-9]/g , '' )
2023-06-24 09:05:38 +03:00
var sftyEVNTConfigs =
[
2023-07-24 12:14:00 +03:00
"chkEvent" + evnti . toString ( ) + "Source" ,
2023-06-24 09:05:38 +03:00
]
if ( ui )
{
for ( var sftyConfig of sftyEVNTConfigs )
{
2023-07-24 12:14:00 +03:00
if ( inst [ "enableEvent" ] . includes ( currentEvnt ) )
2023-06-24 09:05:38 +03:00
{
ui [ sftyConfig ] . hidden = false ;
}
else
{
ui [ sftyConfig ] . hidden = true ;
}
}
}
}
}
function onChangeSafetyCheckerINTs ( inst , ui ) {
if ( ui ) {
2023-07-24 12:14:00 +03:00
if ( ( inst . enableInterrupt ) ) {
ui [ "eventInterruptSource" ] . hidden = false ;
2023-06-24 09:05:38 +03:00
}
else {
2023-07-24 12:14:00 +03:00
ui [ "eventInterruptSource" ] . hidden = true ;
2023-06-24 09:05:38 +03:00
}
}
}
let config = [
{
name : "GROUP_ADC_CHECKER_TILES" ,
config : [ ] ,
}
] ;
var sftyINT _configs = [ ] ;
sftyINT _configs = sftyINT _configs . concat ( [
{
name : "enableInterrupt" ,
displayName : "Enable Interrupt" ,
description : 'Each ADC result safety checker tile can generate an interrupt signal from out-of-tolerance (OOT) flag and result overflow flags OVF1 and OVF2' ,
longDescription : 'Each ADC result safety checker tile generates an interrupt pulse when an enabled out-of-tolerance (OOT) or overflow OVF1 or OVF2 event occurs. No further interrupt pulses will be generated until the interrupt flag is cleared.' ,
hidden : false ,
2023-07-24 12:14:00 +03:00
default : false ,
2023-06-24 09:05:38 +03:00
onChange : onChangeSafetyCheckerINTs ,
} ,
{
2023-07-24 12:14:00 +03:00
name : "eventInterruptSource" ,
displayName : "Select source for interrupt" ,
2023-06-24 09:05:38 +03:00
description : 'Each ADC result safety checker tile can generate an interrupt signal from out-of-tolerance (OOT) flag and result overflow flags OVF1 and OVF2' ,
hidden : true ,
2023-07-24 12:14:00 +03:00
minSelections : 0 ,
default : [ ] ,
options : ADC _SFTYCH _SOURCE ,
2023-06-24 09:05:38 +03:00
onChange : onChangeSafetyCheckerINTs ,
} ,
{
name : "enableEvent" ,
displayName : "Enable Event" ,
description : 'safety checker tiles can generate events that can be sent to the X-BAR, so that automatic hardware actions such as an ePWM trip can be generated' ,
longDescription : '' ,
hidden : false ,
minSelections : 0 ,
default : [ ] ,
options : device _driverlib _peripheral . ADC _SafetyCheckEvent ,
onChange : onChangeSafetyCheckerEVNTs ,
} ,
] )
2023-07-24 12:14:00 +03:00
for ( var evntIndex in device _driverlib _peripheral . ADC _SafetyCheckEvent )
2023-06-24 09:05:38 +03:00
{
2023-07-24 12:14:00 +03:00
var currentEvnt = device _driverlib _peripheral . ADC _SafetyCheckEvent [ evntIndex ] . name
var evnti = ( currentEvnt ) . replace ( /[^0-9]/g , '' )
2023-06-24 09:05:38 +03:00
var sfty _Configs = [
{
2023-07-24 12:14:00 +03:00
name : "chkEvent" + evnti . toString ( ) + "Source" ,
displayName : "Select Source" ,
description : 'Select Source for this event' ,
2023-06-24 09:05:38 +03:00
hidden : true ,
2023-07-24 12:14:00 +03:00
minSelections : 0 ,
default : [ ] ,
options : ADC _SFTYCH _SOURCE ,
2023-06-24 09:05:38 +03:00
} ,
2023-07-24 12:14:00 +03:00
2023-06-24 09:05:38 +03:00
]
sftyINT _configs = sftyINT _configs . concat ( [ {
2023-07-24 12:14:00 +03:00
name : "GROUP_EVENT" + evnti . toString ( ) ,
displayName : "Safety Check Event " + evnti . toString ( ) ,
2023-06-24 09:05:38 +03:00
description : "" ,
longDescription : "" ,
config : sfty _Configs
} ] )
}
config = config . concat ( [
{
name : "GROUP_INT" ,
displayName : "Interrupt/Event Configuration" ,
description : "Interrupt/Event Configuration" ,
longDescription : "" ,
config : sftyINT _configs
} ,
] )
function onValidateStatic ( mod , stat )
{
// console.log("stat");
// Common.printDebugObject(stat);
// console.log("mod");
// Common.printDebugObject(mod);
}
function filterHardware ( component )
{
return ( Common . typeMatches ( component . type , [ "ADC" ] ) ) ;
}
function onValidate ( inst , validation ) {
}
var adcscModule = {
peripheralName : "ADCSafetyChecker" ,
displayName : "ADC SAFETY CHECKER" ,
maxInstances : 1 ,
defaultInstanceName : "myADCSafetyChecker" ,
description : "ADC Safety Checker Module" ,
longDescription : ( Common . getCollateralFindabilityList ( "ADC" ) ) ,
filterHardware : filterHardware ,
templates : {
2023-07-24 12:14:00 +03:00
// boardc : "/driverlib/adc/adcsafetychecker.board.c.xdt",
// boardh : "/driverlib/adc/adcsafetychecker.board.h.xdt"
2023-06-24 09:05:38 +03:00
} ,
moduleStatic : {
name : "adcSafety" ,
displayName : "ADC Safetyy Checker" ,
config : config ,
2023-07-24 12:14:00 +03:00
moduleInstances : ( inst ) =>
{
return [ {
name : "safetyCheckerTiles" ,
displayName : "Safety Checker Tiles" ,
moduleName : "/driverlib/adcsafetycheckertile.js" ,
useArray : true ,
collapsed : false ,
group : "GROUP_ADC_CHECKER_TILES" ,
} ]
}
2023-06-24 09:05:38 +03:00
} ,
validate : onValidate ,
} ;
exports = adcscModule ;