rusefi_documentation/Lua-Scripting.md

129 lines
3.8 KiB
Markdown
Raw Normal View History

2021-04-29 10:57:27 -07:00
# Basics
## Conventions
- The Lua interpreter will trigger an error if there is a mistake in the program, check the rusEFI console to see errors and script output.
- All `index` parameters start with the first element at index at 0.
## Writing Your Script
The entire Lua script is read at startup, then a function called `onTick` is called periodically by rusEFI.
Here is a simple script you can run to illustrate this behavior:
```
print('Hello Lua startup!')
function onTick()
print('Hello onTick()')
end
```
### Controlling the Tick Rate
The function `setTickRate(hz)` can be used to configure how often rusEFI calls the `onTick` function. If your script does a lot of work in the `onTick()` function it may run slower than the desired rate.
2021-04-29 10:40:07 -07:00
# Function Reference
## Utility
### `print(msg)`
Print a line of text to the ECU's log.
- Parameters
- `msg`: The message to print. Pass a string or number and it will be printed to the log.
- Returns
- none
#### Usage example
Program:
```
n = 5.5
print('Hello Lua, number is: ' ..n)
```
Output:
`Hello Lua, number is 5.5`
2021-04-29 10:57:27 -07:00
### `setTickRate(hz)`
Sets the rate at which rusEFI calls your `onTick` function, in hz.
- Parameters
- `hz`: Desired tick rate, in hz. Values passed will be clamped to a minimum of 1hz, and maximum of 100hz.
- Returns
- none
2021-04-29 10:40:07 -07:00
### `table3d(tableIdx, x, y)`
Looks up a value from the specified FSIO table.
- Parameters
- `tableIdx`: Index of the table to use. Currently 4 tables are supported, so indices 0, 1, 2, and 3 are valid.
- `x`: X-axis value to look up in the table (this is often RPM)
- `y`: Y-axis value to look up in the table (this is often load)
- Returns
- A number representing the value looked up from the table.
## Input
### `getSensor(index)`
Reads the specified sensor.
- Parameters
- `index`: Index of the sensor to read. [A list of sensor indices can be found here.](https://github.com/rusefi/rusefi/blob/master/firmware/controllers/sensors/sensor_type.h)
- Returns
- A reading from the sensor, or `nil` if the sensor has a problem or isn't configured.
### `getSensorRaw(index)`
Reads the raw value from the specified sensor. For most sensors, this means the analog voltage on the relevant input pin.
- Parameters
- `index`: Index of the sensor to read. [A list of sensor indices can be found here.](https://github.com/rusefi/rusefi/blob/master/firmware/controllers/sensors/sensor_type.h)
- Returns
- The raw value that yielded the sensor reading, or 0 if the sensor doesn't support raw readings, isn't configured, or has failed.
2021-04-29 10:57:27 -07:00
### `hasSensor(index)`
Checks whether a particular sensor is configured (whether it is currently valid or not).
- Parameters
- `index`: Index of the sensor to check. [A list of sensor indices can be found here.](https://github.com/rusefi/rusefi/blob/master/firmware/controllers/sensors/sensor_type.h)
- Returns
- A boolean value, `true` if the sensor is configured, and `false` if not.
2021-04-29 10:40:07 -07:00
### `getAnalog(index)`
Reads an analog voltage from one of the FSIO ADC inputs.
- Parameters
- `index`: The index of the configured analog input to read. Currently 4 inputs are supported, so values of 0, 1, 2, 3 are valid for this parameter.
- Returns
- The raw analog voltage from the input pin. Most rusEFI ECUs can measure between 0 and 5 volts, so this value will be a number between 0 and 5.
### `getDigital(index)`
Reads a digital input from the specified channel.
- Parameters
- `index`: The index of the digital channel to read. See table below for values.
- Returns
- A boolean value representing the state of the input pin. `true` = high voltage (above ~2 volts), `false` = low voltage (below ~3 volts)
Valid `index` parameter values:
| Index | Channel Name |
| --- | ---:|
| 0 | Clutch down switch |
| 1 | Clutch up switch |
| 2 | Brake switch |
| 3 | AC switch |
## Output
coming soon...