# Simulation DataSource

## PV syntax

The standard prefix for the datasource is `sim://` which can be omitted if configured as the default datasource.

Syntax | Description
--- | ---
`sim://delayedConnectionChannel(delayInSeconds, value)` | A channel that connects after an initial delay. This is useful to test timeout behavior of applications. The value can be a number, a string, an array of numbers or an array of strings.
`sim://intermittentChannel(delayInSeconds, value)` | A channel that keeps connecting and disonnecting. This is useful to test disconnect behavior of applications. The value can be a number, a string, an array of numbers or an array of strings.
`sim://const(number)` `sim://const("string")` `sim://const(number, number, ...)` `sim://const("string", "string", "string", ...)` | A constant which can be a number, a string, a number array or a string array.
`sim://flipflop` `sim://flipflop(timeStep)` | A boolean value that changes state every timeStep. The default is equivalent to `sim://flipflop(0.5)`.
`sim://gaussianNoise` `sim://gaussianNoise(average, stdDev, timeStep)` | Random numbers gaussian distributed around average with stdDev width, generated every timeStep. The default is equivalent to `sim://gaussianNoise(0, 1, 0.1)`.
`sim://gaussianWaveform` `sim://gaussianWaveform(periodInSeconds, stdDev, nSamples, updateRateInSeconds)` | A waveform with nSamples shaped like a gaussian that cycles around in time every periodInSeconds, generated every updateRateInSeconds. The default is equivalent to `sim://gaussianWaveform(1, 100, 100, 0.1)`.
`sim://sineWaveform` `sim://sineWaveform(periodInSeconds, wavelengthInSamples, nSamples, updateRateInSeconds)` | A waveform with nSamples shaped like a sine wave of width wavelengthInSamples that cycles around in time every periodInSeconds, generated every updateRateInSeconds. The default is equivalent to `sim://sineWaveform(1, 100, 100, 0.1)`.
`sim://squareWaveform` `sim://squareWaveform(periodInSeconds, wavelengthInSamples, nSamples, updateRateInSeconds)` | A waveform with nSamples shaped like a square wave of width wavelengthInSamples that cycles around in time every periodInSeconds, generated every updateRateInSeconds. The default is equivalent to `sim://squareWaveform(1, 100, 100, 0.1)`.
`sim://triangleWaveform` `sim://triangleWaveform(periodInSeconds, wavelengthInSamples, nSamples, updateRateInSeconds)` | A waveform with nSamples shaped like a triangle wave of width wavelengthInSamples that cycles around in time every periodInSeconds, generated every updateRateInSeconds. The default is equivalent to `sim://triangleWaveform(1, 100, 100, 0.1)`.
`sim://sawtoothWaveform` `sim://sawtoothWaveform(periodInSeconds, wavelengthInSamples, nSamples, updateRateInSeconds)` | A waveform with nSamples shaped like a sawtooth wave of width wavelengthInSamples that cycles around in time every periodInSeconds, generated every updateRateInSeconds. The default is equivalent to `sim://sawtoothWaveform(1, 100, 100, 0.1)`.
`sim://noise` `sim://noise(minValue, maxValue, timeStep)` | Random numbers uniformly distributed between the minValue and the maxValue, generated every timeStep. The default is equivalent to `sim://noise(-5, 5, 1)`.
`sim://noiseWaveform` `sim://noiseWaveform(minValue, maxValue, timeStep)` `sim://noiseWaveform(minValue, maxValue, nSamples, timeStep)` | A waveform filled with nSampes random numbers uniformly distributed between the minValue and the maxValue, generated every timeStep. The default is equivalent to `sim://noiseWaveform(-5, 5, 100, 1)`.
`sim://ramp` `sim://ramp(minValue, maxValue, timeStep)` `sim://ramp(minValue, maxValue, step, timeStep)` | A ramp (sawtooth wave) between the minValue and maxValue, increasing by the step amount every timeStep. If step is negative, the wave starts at maxValue and decreases The default is equivalent to `sim://ramp(-5, 5, 1, 1)`.
`sim://sine` `sim://sine(minValue, maxValue, timeStep)` `sim://sine(minValue, maxValue, samplePerCycle, timeStep)` | A sine wave between the minValue and maxValue divided into samplePerCycle samples in each period, updating every timeStep. The default is equivalent to `sim://sine(-5, 5, 10, 1)`.
`sim://strings` `sim://strings(timeStep)` | A string generated every timeStamp. The default is equivalent to `sim://strings(0.1)`.
`sim://table` `sim://table(timeStep)` | Generates a table. The default is equivalent to `sim://table(0.1)`.