commit | 0ab9d8388afe4a01c8b2ecea7bea042d2b4646dd | [log] [tgz] |
---|---|---|
author | Lei YU <yulei.sh@bytedance.com> | Tue Jul 19 07:12:50 2022 +0000 |
committer | Lei YU <yulei.sh@bytedance.com> | Sat Oct 07 17:07:08 2023 +0800 |
tree | 73d1e7c6cec3f0cabe05aeefb0e83dde4beeaee2 | |
parent | 2db8d41fe0e819a38a6c8450ba97048ce7007a69 [diff] |
exprkt: Add maxIgnoreNaN to ignore the NaN value The max function in exprtk uses std::max() to get the max value. Comparing a value with nan has special rule and is not expected in virtual sensor's case. E.g. `max(nan, 1)` gives `nan`. Adding a new exprkt function `maxIgnoreNaN` to handle the above case so that it ignores all `nan` values. If all values are `nan` then it returns `nan`, otherwise it returns the max value of the valid values. Example usage in json config: ``` "Expression": "maxIgnoreNaN(T0, T1, T2, T3)" ``` Signed-off-by: Lei YU <yulei.sh@bytedance.com> Change-Id: Idd345cd2ce325e5a186b9816458ba3d3bc66a187
phosphor-virtual-sensor reads the configuration file virtual_sensor_config.json
from one of three locations:
/var/lib/phosphor-virtual-sensor
/usr/share/phosphor-virtual-sensor
By default the repository will install a sample config into (3).
There are two types of data in this file.
See virtual_sensor_config.json
in this repository for an example. Sensors added this way can use any expression that is accepted by exprtk.
For example:
{ "Desc": { "Config": "D-Bus", "Type": "ModifiedMedian" } }
Sensors added this way can only use a set of restricted calculations. Currently the only type supported is modifiedMedian
.
The virtual sensor configuration information needs to be added into the relevant hardware configuration file in entity-manager. This method of adding a virtual sensor allows a recipe that builds for different hardware configurations to have different virtual sensors for each configuration.
The virtual sensor configuration in entity manager follows a different format to the JSON in virtual_sensor_config.json
(specified in entity-manager/schemas/VirtualSensor.json).