Documentation Index
Fetch the complete documentation index at: https://notevil.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Open topic with navigation
CAPL Functions » VT System » vtsSetTriggerParamsEx
vtsSetTriggerParamsEx
Valid for: CANoe DE • CANoe:lite DE
Function Syntax
long vtsSetTriggerParamsEx (char Target[], eVTSTrigger Trigger, double MinPulseWidth, double RestartTime, dword PreTriggers, dword RestartTriggers, dword ThresholdEventCount, dword ExtSettings);
Description
The function configures additional parameters for VT System triggers. Basic parameters are configured using vtsSetTriggerParams.
You can find additional information about VT System triggers on the page Triggers.
Parameters
- Target: Name of the system variable/namespace that will be affected by this function call.
- Trigger: Specifies which trigger is configured. VT1004 module: Values see eVTSTrigger.
- MinPulseWidth: Specifies that the triggers fire only if no opposite edge or level event occurs within the specified time after the triggering event. This parameter is transferred to the VT System with nanosecond resolution. Valid values: 0 (0.0s)..1.0 (1.0s).
- RestartTime: Specifies the delay after which a trigger is restarted by another trigger. This parameter is transferred to the VT System with nanosecond resolution. Valid values: 0 (0.0s)..1.0 (1.0s).
- PreTriggers: This bitfield specifies preconditions for the configured trigger. Every set bit specifies a trigger that must be active before the configured trigger is activated. VT1004 module: 8 lowermost bits can be used.
- RestartTriggers: This bitfield specifies the triggers that restart the configured trigger. VT1004 module: 8 lowermost bits can be used.
- ThresholdEventCount: If this parameter is set to a value k higher than 0, trigger events are only visible and the event counter for the trigger is only incremented when the triggering event has occurred k + 1 times. Valid values: 0..4294967295.
- ExtSettings: This bitfield specifies additional settings. Values see eVTSTriggerEdgeType.
Return Values
- 0: Successful call
- -1: Call error
- -2: The namespace on which the command was called does not exist, is not a valid VT System namespace or does not support this command.
Example
Example: CAPL Test Module
The following example shows how triggers can be used to measure the width of a pulse, that is the distance between the rising and falling edge of a pulse.
variables
{
int64 gRiseTime = 0;
int64 gFallTime = 0;
}
void MainTest ()
{
MeasurePulseLength();
}
void MeasurePulseLength()
{
dword trigger1EventCount = 0;
dword trigger2EventCount = 0;
int64 pulseWidth = 0;
enum eVTSTrigger trigger = eVTSTrigger1;
enum eVTSTriggerSourceChannel sourceChannel = eVTSTriggerSourceChannel1;
enum eVTSTriggerEdgeType edgeType = eVTSTriggerEdgeTypeRising;
dword preTriggers = 0;
double minPulseWidth = 0.0;
// configure two triggers (one for the rising and one for the falling edge)
trigger = eVTSTrigger1;
sourceChannel = eVTSTriggerSourceChannel1;
edgeType = 0; // rising edge
preTriggers = 0; // no other trigger as precondition
minPulseWidth = 0.002; // pulse must have a width of at at least 2ms
vtsSetTriggerParams( "VTS::IgnitionChannels", trigger, sourceChannel, edgeType);
vtsSetTriggerParamsEx( "VTS::IgnitionChannels", trigger, minPulseWidth, 0.0, preTriggers, 0, 0, eVTSTriggerTypeEdge);
trigger = eVTSTrigger2;
sourceChannel = eVTSTriggerSourceChannel1;
edgeType = eVTSTriggerEdgeTypeFalling; // falling edge
preTriggers = 1; // first bit set: trigger 1 must be activated as a precondition
vtsSetTriggerParams( "VTS::IgnitionChannels", trigger, sourceChannel, edgeType);
vtsSetTriggerParamsEx( "VTS::IgnitionChannels", trigger, 0.0, 0.0, preTriggers, 0, 0, eVTSTriggerTypeEdge);
TestWaitForTimeout( 50); // wait some time to make sure the settings are transferred
// start triggers
trigger = eVTSTrigger1;
vtsStartTrigger( "VTS::IgnitionChannels", trigger);
trigger = eVTSTrigger2;
vtsStartTrigger( "VTS::IgnitionChannels", trigger);
// wait some time until a pulse has occurred
TestWaitForTimeout( 1000);
// check if pulse was detected and output pulse width
trigger1EventCount = @sysvar::VTS::IgnitionChannels::Trigger1EventCount;
trigger2EventCount = @sysvar::VTS::IgnitionChannels::Trigger2EventCount;
if (trigger1EventCount > 0 && trigger2EventCount > 0)
{
pulseWidth = gFallTime - gRiseTime;
Write( "Pulse width: %.3f µs", (pulseWidth/1000.0));
}
else
{
Write("No pulse detected!");
}
}
on sysvar_update sysvar::VTS::IgnitionChannels::Trigger1Event
{
// save time stamp of rising edge when event occurs
gRiseTime = sysGetVariableTimeNS( this);
}
on sysvar_update sysvar::VTS::IgnitionChannels::Trigger2Event
{
// save time stamp of falling edge when event occurs
gFallTime = sysGetVariableTimeNS( this);
}
SetTriggerParamsEx