| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
NameOwnerChanged signals will be used within fan control to configure
set speed events for when services providing parameters to the fan
control application have unexpectedly terminated.
Change-Id: I04f3c7ca2842732e33dc94b0280ad4483f7f1286
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Using a null dbus message to the event signal will perform the necessary
steps to initialize the event parameters using the given signal
handler's function directly.
i.e.) In the case for subscribing to PropertiesChanged signals,
initially the given property must be read. When the PropertiesChanged
signal struct is given a null message, it finds the property, reads the
value, and then can perform the given signal handler function directly.
This produces the same functional path as receiving a PropertiesChanged
signal containing the property value within the message.
Change-Id: I35575cfff66eb0305156be786cb1f5536d42bb1c
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
| |
Scope is to add missing logs for InternalFailure errors
Change-Id: I12c958127c1303fba0057914682e651457a0e547
Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
|
|
|
|
|
|
|
|
|
| |
The available matches and their associated signals are now listed
within the events yaml and can be added to the list of matches to
register for per event.
Change-Id: I65f657038afe7c68a421adb4820ea09e275be06d
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
| |
Change-Id: I260319dbfc4cb87bfed8fd724ffc4978f34e7325
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
| |
Spelling errors found using github.com/lucasdemarchi/codespell
A tool to fix common misspellings.
This tool is licensed under GNU General Public License, version 2.
Change-Id: Iefb2ad70d313a4800cd413c7c2e5e2154bec49fb
Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
|
|
|
|
|
|
|
|
|
| |
The Fan class now uses the trust::Manager class
to ask if a sensor value is trusted before analyzing
its value against the upper and lower limits.
Change-Id: I81dd468877873ba84753d76395b4a59129824c0b
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It creates a list of group creator lambdas based on
the information in the monitor YAML file.
These lambdas are called by the manager class to create
the trust group instances.
A real life example is:
const std::vector<CreateGroupFunction> trustGroups
{
{
[]()
{
std::vector<std::string> names{
"fan0_1",
"fan1_1",
"fan2_1",
"fan3_1",
};
return std::make_unique<NonzeroSpeed>(names);
}
},
};
Change-Id: Ia883df35efb86242aae2f8ed7d1714e94e65a6e6
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
|
|
|
|
|
|
|
|
| |
Update the YAML documentation with sensor
trust information.
Change-Id: Ia5407b079b5dcfbd4063cec8dbba032fefa11b6b
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This class contains the trust groups, and is the interface
for asking if a sensor value can be trusted or not.
It will also start and stop timers on all sensors in the same
group as the timer in question whose trust value just changed.
This class will be used by the Fan class in the speed change
callback function to check if a sensor is trusted before
analyzing its value.
Change-Id: I134be095b6b5222f7bc0e457078cf01f75a36219
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This class provides the ability to only trust
the sensors in the group if at least one of them
has a nonzero speed.
It is being used for a system where the tach values for
a set of rotors are reported as zero by the fan controller
hardware when the other rotor on the fan is moving to a
new target speed. As all the fans are set to the same speed
at the same time, the rotors in question all report as
zeros at exactly the same time, and this is then used to
know when the values cannot be trusted.
Change-Id: I29a014014bc8455287f90e5b573a856814331a53
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The trust::Group class is an abstract base class that
introduces the concept of knowing if a tach sensor
reading can be trusted or not. If it isn't trusted,
then it shouldn't be used when calculating if the fan
is considered functional or not.
It's a group because it supports groups of sensors
all having the same trusted status. For example the
first use case is a group of sensors cannot be trusted
when all of their readings are zero. A group may of
course just have 1 sensor in it if required.
The class also provides the functionality to start and
stop the timers that are used to consider a sensor faulted.
The timers would be stopped when a group moves to untrusted,
and started when it goes back to the trusted state.
Derived classes provide the functionality that actually
determines the trust value.
The constructor takes the list of sensor names that should
be in the group. After the TachSensor classes have been
constructed, the registerSensor(sensor) function must be
called to add the sensor objects to the group.
The checkTrust() function is used to calculate the trust
status of the group.
Change-Id: Ib4b871c6a186105028d1cc186c49611fb0608325
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
|
|
|
|
|
|
|
|
|
| |
Upcoming commits will touch the TachSensor timer
outside of the Fan class, and it will be cleaner to
encapsulate the operations in TachSensor.
Change-Id: I8584c44eb5dbe6bb93191a006d20dfc37596eeb3
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
|
|
|
|
|
|
|
| |
Action functions are not required to have parameters.
Change-Id: I04bf8294d9be9141cc7d8d3183628c94b777154a
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This action function is intended to allow the base request speed to be
set to the max value from a group of properties. The base request speed
is the base speed used in requesting a new target speed. By default, the
base request speed is the current target speed.
For example, this action can be used to set the base request speed used
in calculating a new target speed to be based on the max tach feedback
speed from a group of fans instead of the current target speed.
Adding this action function requires the other non-template functions to
also be slightly modified due to linker errors.
Change-Id: Ibbe9b33678b10cb49466174088a587b27bf56d62
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
| |
For increase and decrease speed changes, the new target speed is
calculated from either a set speed request base value or the current
target speed by default.
Change-Id: Iad1411437a9945af0b9ae85649d487e36586ef2a
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
| |
The requested speed base is the speed value to base calculations for a
new target speed of increases or decreases from.
Change-Id: Iea413baa9c24c3240ddaf179b9faa259566f7e08
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
| |
Made updates to the example events.yaml to reflect the new format and
use.
Change-Id: I13b323487565f0c1c29eb97d9ddcf8da3295b21c
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
| |
Added some optimizations in the event yaml format to nest set speed
events that have the same preconditions and allow multiple actions to be
taken within a single set speed event.
Change-Id: I21ec395b6c9686e1efd5abc1be48d563480fec5f
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
| |
Each set speed event will contain a list of one-to-many actions to
perform for the given event group's property. This reduces the amount of
code generated and properly handles property changed events against the
group.
Change-Id: If2b8c0d0b8ecf6e1c974c43d96e1c6e9e952022b
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Allowing fan monitor to run in an init mode will set the fans to a
functional state at each poweron for fans that were non-functional at
poweroff. Then fan monitor can be started in monitor mode after the fans
have ramped up to full speed and can begin being monitored for faults.
This also allows for the removal of fan monitor doing a sd_notify prior
to fan control starting.
Change-Id: I634c9b4ec8bb30860dea54c8abd1cd6c56831d25
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Fan control is allowed to have properties not be found, so log these as
informational for users. If the property is not found, then any set
speed events related to that property should handle it appropriately.
Resolves openbmc/openbmc#2188
Change-Id: I7c9e5fc8a3291d19ab4b1853af340643d3fa67a2
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A zone is actively controlling its fan speeds when all groups subscribed
to allow active control are set to true. The zone keeps a list of these
groups and their active allow state, if at anytime an action (or
precondition) sets a group's active state to false, any dynamic set
speed requests do not occur. Only requests to set the zone's fans to
full speed is allowed.
Related to this, the zone's target speed should only be updated when a
requested speed is successfully set.
Change-Id: Iec6f15346fee5a6c6046d5b00e949e46aef400b9
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
| |
For groups within set speed events where the property values of the
group may not signal its action to occur, an optional timer may be added
to the event. This timer is configured as a repeating timer on the
interval provided where upon timer expiration, the event's action is
run.
Change-Id: I4cbe8a0ab1b734bfc7828706a6515af7f6d78b52
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
| |
The factor parameter is used to correctly determine the increase or
decrease speed delta based on sensor inputs that have a scale. To get
the net speed delta change, the factor is applied to the difference in
sensor value and the defined state at which a speed change should be
requested.
Change-Id: I2aaa8f6b294b38d1f38238593dd851c3a205eb7a
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
For each group in an event, subscribe to the interfacesAdded signals in
the case where the member(s) of a group may or may not exist when
initialized.
Additionally, updated to use the propertiesChanged function to remove
repetitive property change subscription lines generated.
Change-Id: I52b0cd839383ebb90e93a81b5bac02ee7c4f44b2
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
| |
Update getting a property value from the zone's cache to throw an
exception when not found. Handle these exceptions appropriately for each
action where it gets each property value of a group.
Change-Id: Icbc0b04f492d3680de77dbe3f27cabf7504ce6b4
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Set speed events are now allowed to have preconditions defined within
the event where those preconditions must be met before the set speed
event is enabled and active. The supported precondition added is against
a list of groups and their properties matching a given value.
The parser generates a precondition with the same layout as a set speed
event where the event is nested as the last parameter to the
precondition function. Having the set speed event as the last input
parameter to precondition functions is required.
Resolves openbmc/openbmc#1835
Change-Id: I7a247e7eb2d6b31ba9a60da1bc321a35edda9b24
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
| |
Allows the complete removal of a set speed event from the zone. This is
done when any precondition defined for the event to be active is not
met any longer.
Change-Id: Idbec357f76f0fd7db9107e8c9d3e00461872c528
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
| |
The property state check precondition validates that each given property
matches the defined value. When all the precondition groups' property
states match, the given set speed event is initialized and activated
allowing the zone speeds to be active controlled.
Change-Id: Ic16a0e1fc584c6fa695e354fa80fb1993002ffc7
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Set speed events can not subscribe to InterfaceAdded signals for
properties that are created after fan control initializes the event. Fan
control subscribes to property changed signals for all events upon
startup where any properties that do not exist are unable to be
subscribed to and be notified when their property changes. Therefore,
subscribing to the InterfacesAdded signals for properties as well allows
any property defined within a set speed event that may not exist upon
starting the fan control application get added or updated when the
interface it resides on is added.
When a subscribed InterfacesAdded signal is caught, the same setProperty
handler function will be used to add the property value for the object
path, interface, and property name defined to be subscribed to for
property change signals.
Change-Id: If6fe97288140b83e2e2d735fdf61d52de1ec2e88
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Any defined preconditions for a set speed event must be satisfied prior
to configuring the event parameters for fan control. These preconditions
will accept a list of group entries that include the value the group's
property must be to have the precondition met for that group. Once all
preconditions are met, the set speed event will be initialized and
become active.
Change-Id: Ia5555be55c5937c891af527bea63da1546655b2f
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
|
|
|
|
|
|
|
|
| |
Replace static systemd match callback wrappers with lamba
methods.
Change-Id: Ib8471478824d87483a60f527d29aa2d35ccb833f
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
| |
Change-Id: I96ed7de07acfc864c497a0130c3e5afab579d21d
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
|
|
|
|
| |
TachSensor uses the this pointer as the systemd callback
context for signal callbacks, which doesn't work with
move semantics.
Change-Id: I5e58fec9a7edfc457103d8a36f6076d90246f4f0
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
|
|
|
| |
Don't count sensors that don't exist as nonfunctional. Let some
other application decide if missing sensors are a problem or not.
Change-Id: Ie3d438c92df16bfd86ddc86db8a9dd143bf2cfb0
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
|
|
| |
Remove getService from tach_sensor as it is no longer used.
Change-Id: I568afb502379e05e85685d279033ab198c3cc91f
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
|
|
|
| |
Replace the implementation of readProperty with a call to the
common property accessor in sdbusplus.hpp.
Change-Id: Ic4ba75bad7458a99f3e29c9235e1a54ae62286fe
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
|
|
|
| |
Overload the wrapper methods in sdbusplus.hpp for clients
that already have a bus connection.
Change-Id: I662385e6afe52179293ccbd41212d208e34bfbc5
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
| |
Change-Id: Ibce6f79d4f4efb4a1605afc2958dd543f54ae726
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
| |
Change-Id: I72f801067ff09c91c53d32bf5ebb66fed3ec4dfc
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
|
|
| |
Allow a device path to be configured.
Change-Id: I2eabd71747b124eae96738d1332f58b96ece6dc9
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
|
|
|
| |
Do not allow missing tach sensors to abort the program.
Instead, assume the fan is not spinning.
Change-Id: Idc923b9c57b4d180aa16f0aa4933c65e7e4a2d42
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
|
|
| |
Add support for the anyof yaml keyword.
Change-Id: Ib28ca8ef9959cec29cb2d15a0bf758668375895f
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
|
|
|
| |
Add a bitwise logical or redundancy policy implementation
(fan is present if any sensor indicates as such).
Change-Id: I1d161478a4a6fe9d5690a385703e41c6fff9c81c
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
|
|
|
|
|
| |
Include a reference to the sensor changing state when sensor
implementations ping the policy object.
This allows policy logic based on multiple sensors, simultaneously.
Change-Id: I44cf00c7ecd220d0cc99e51ca6093bac6da7343c
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
|
|
| |
Add a basic comparison operator for presence sensors.
Change-Id: Ib147fd24f6e9ea1daf5f2b0b71943e0b4c96a8b7
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
| |
Change-Id: Ie0635bc28fcd1a2fd96764674e15c71f1dcbe51a
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
| |
Change-Id: Ic3390ba18d6f029fc16aee7492d51ac5f49bf2c0
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|
|
|
|
|
| |
Change-Id: I1d0a8e7d4c442beb271c83d5ef6be3ca69c7c115
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
|