# yaml-language-server: $schema=http://json-schema.org/draft-07/schema # SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University # SPDX-License-Identifier: Apache-2.0 --- allOf: - type: object additionalProperties: description: | The Lua hook will pass the complete hook configuration to the `prepare()` Lua function. So you can add arbitrary settings here which are then consumed by the Lua script. properties: use_names: type: boolean default: true description: Enables or disables the use of signal names in the `process()` Lua function. If disabled, numeric indices will be used. script: type: string description: | Provide the path to a Lua script containing functions for the individual hook points. Define some or all of the following functions in your Lua script: #### `prepare(cfg)` Called during initialization with a Lua table which contains the full hook configuration. #### `start()` Called when the associated node or path is started #### `stop()` Called when the associated node or path is stopped #### `restart()` Called when the associated node or path is restarted. Falls back to `stop()` + `start()` if absent. #### `process(smp)` Called for each sample which is being processed. The sample is passed as a Lua table with the following fields: - `sequence` The sequence number of the sample. - `flags` The flags field of the sample. - `ts_origin` The origin timestamp as a Lua table containing the following keys: | Index | Description | |:-- |:-- | | 0 | seconds | | 1 | nanoseconds | - `ts_received` The receive timestamp a Lua table containing the following keys: | Index | Description | |:-- |:-- | | 0 | seconds | | 1 | nanoseconds | - `data` The sample data as a Lua table container either numeric indices or the signal names depending on the 'use_names' option of the hook. #### `periodic()` Called periodically with the rate of @ref node-config-stats. signals: description: | A definition of signals which this hook will emit. Here a list of signal definitions like @ref node-config-node-signals is expected. type: array items: allOf: - type: object properties: expression: type: string example: "math.sqrt(smp.data[0] ^ 2 + smp.data[1] ^ 2)" description: | An arbitrary Lua expression which will be evaluated and used for the value of the signal. Note you can access the current sample using the global Lua variable `smp`. # - $ref: ../signal_spec.yaml - $ref: ../hook.yaml