1#Example set speed events for phosphor-fan-control
2
3#groups:
4#    - name: [A unique name for this group]
5#      description: [A user description of what makes up the group]
6#      type: [The '/xyz/openbmc_project' path extension]
7#      members:
8#          [List of object paths under the path extension]
9#
10#matches:
11#    - name: [The name associated with a supported match string function]
12#      description: [A user description of what this match string represents]
13#      parameters:
14#          [List of required parameters for the match string function]
15#      signal: [Signal function name used with this match string]
16#
17#signals:
18#    - name: [The name associated with a supported signal function]
19#      description: [A user description of what this signal does]
20#      parameters:
21#          [List of required parameters for the signal function]
22#
23#preconditions:
24#    - name: [Name associated with a supported precondition]
25#      description: [A user description of the precondition's use]
26#      parameters:
27#          [List of required parameters for the precondition function]
28#
29#actions:
30#    - name: [The name associated with a supported action function]
31#      description: [A user description of what this action does]
32#      parameters:
33#          [Ordered list of required parameters for the associated function]
34#
35#events:
36#    - name: [A unique name for this event]
37#      zone_conditions:
38#          - name: [The name of the zone condition]
39#            zones:
40#                - [Zone number to include this set speed event with]
41#      group: [A group name from the list of groups]
42#      interface: [The Dbus interface on the group members' object path]
43#      property: [The property name and type on the interface to be used]
44#      action:
45#          name: [Name of an action from the list of actions]
46#          [List each required action parameter with a defined type and value
47#           for this event. The 'property' parameter utilizes the same type
48#           defined under the 'property' attribute.]
49
50#Example:
51#groups:
52#    - name: zone0_fans
53#      description: Group of fan inventory objects for zone 0
54#      type: /xyz/openbmc_project/inventory
55#      members:
56#          - /system/chassis/motherboard/fan0
57#          - /system/chassis/motherboard/fan1
58#          - /system/chassis/motherboard/fan2
59#          - /system/chassis/motherboard/fan3
60#    - name: zone0_ambient
61#      description: Group of ambient temperature sensors for zone 0
62#      type: /xyz/openbmc_project/sensors
63#      members:
64#          - /temperature/ambient
65#    - name: occ0_object
66#      description: Dbus object containing OCC0 properties
67#      type: /org/open_power/control
68#      members:
69#          - /occ0
70#    - name: zone0_regulators
71#      description: Group of regulator temperature sensors for zone 0
72#      type: /xyz/openbmc_project/sensors
73#      members:
74#          - /temperature/p0_vdd_temp
75#          - /temperature/p1_vdd_temp
76#    - name: zone0_dimms
77#      description: Group of dimm temperature sensors for zone 0
78#      type: /xyz/openbmc_project/sensors
79#      members:
80#          - /temperature/dimm0_temp
81#          - /temperature/dimm1_temp
82#          - /temperature/dimm2_temp
83#          - /temperature/dimm3_temp
84#          - /temperature/dimm4_temp
85#
86#signals:
87#    - name: propertiesChanged
88#      description: >
89#          A property changed signal
90#      parameters:
91#          - object
92#          - interface
93#      handler: propertySignal
94#    - name: interfacesAdded
95#      description: >
96#          An interfaces added signal
97#      parameters:
98#          - object
99#      handler: objectSignal
100#
101#handlers:
102#    - name: propertySignal
103#      description: >
104#          Handle property signals
105#      parameters:
106#          - type
107#          - object
108#          - interface
109#          - property
110#    - name: objectSignal
111#      description: >
112#          Handle object signals
113#      parameters:
114#          - type
115#          - object
116#          - interface
117#          - property
118#
119#preconditions:
120#    - name: property_states_match
121#      description: >
122#          All defined properties must match the values given to
123#          enable a set speed event otherwise fan speeds are set to full
124#      parameters:
125#          - groups
126#
127#actions:
128#    - name: count_state_before_speed
129#      description: Set the speed when a number of properties at a state
130#      parameters:
131#          - count
132#          - property
133#          - speed
134#    - name: set_floor_from_average_sensor_value
135#      description: Set floor speed from first entry with average less than key
136#      parameters:
137#          - map
138#    - name: set_ceiling_from_average_sensor_value
139#      description: Set ceiling speed based on key transition values with average
140#      parameters:
141#          - map
142#    - name: set_net_increase_speed
143#      description: >
144#          Set the speed increase delta based on the delta increase
145#          size times the given value and property's value difference
146#      parameters:
147#          - property
148#          - factor
149#          - delta
150#    - name: set_net_decrease_speed
151#      description: >
152#          Set the speed decrease delta based on the delta decrease
153#          size times the given value and property's value difference
154#      parameters:
155#          - property
156#          - factor
157#          - delta
158#
159#events:
160#    - name: missing_before_high_speed
161#      zone_conditions:
162#          - name: air_cooled_chassis
163#            zones:
164#                - 0
165#      group: zone0_fans
166#      interface: xyz.openbmc_project.Inventory.Item
167#      property:
168#          name: Present
169#          type: bool
170#      signals:
171#          - name: interfacesAdded
172#          - name: propertiesChanged
173#      actions:
174#          - name: count_state_before_speed
175#            count: 1
176#            property: false
177#            speed:
178#                value: 10500
179#                type: uint64_t
180#    - name: set_air_cooled_speed_boundaries_based_on_ambient
181#      zone_conditions:
182#          - name: air_cooled_chassis
183#            zones:
184#                - 0
185#      group: zone0_ambient
186#      interface: xyz.openbmc_project.Sensor.Value
187#      property:
188#          name: Value
189#          type: int64_t
190#      signals:
191#          - name: propertiesChanged
192#      actions:
193#          - name: set_floor_from_average_sensor_value
194#            map:
195#                value:
196#                    - 27000: 3500
197#                    - 32000: 4600
198#                    - 37000: 5200
199#                    - 40000: 5800
200#                type: std::map<int64_t, uint64_t>
201#          - name: set_ceiling_from_average_sensor_value
202#            map:
203#                value:
204#                    - 25000: 7200
205#                    - 27000: 10500
206#                type: std::map<int64_t, uint64_t>
207#    - name: set_water_cooled_speed_boundaries_based_on_ambient
208#      zone_conditions:
209#          - name: water_and_air_cooled_chassis
210#            zones:
211#                - 0
212#      group: zone0_ambient
213#      interface: xyz.openbmc_project.Sensor.Value
214#      property:
215#          name: Value
216#          type: int64_t
217#      signals:
218#          - name: propertiesChanged
219#      actions:
220#          - name: set_floor_from_average_sensor_value
221#            map:
222#                value:
223#                    - 27000: 3000
224#                    - 32000: 4300
225#                    - 37000: 5000
226#                    - 40000: 5800
227#                type: std::map<int64_t, uint64_t>
228#          - name: set_ceiling_from_average_sensor_value
229#            map:
230#                value:
231#                    - 25000: 7200
232#                    - 27000: 10500
233#                type: std::map<int64_t, uint64_t>
234#    - name: speed_changes_based_on_regulator_temps
235#      zone_conditions:
236#          - name: air_cooled_chassis
237#            zones:
238#                - 0
239#          - name: water_and_air_cooled_chassis
240#            zones:
241#                - 0
242#      group: zone0_regulators
243#      interface: xyz.openbmc_project.Sensor.Value
244#      property:
245#          name: Value
246#          type: int64_t
247#      signals:
248#          - name: propertiesChanged
249#      actions:
250#          - name: set_net_increase_speed
251#            property: 85000
252#            factor:
253#                value: 1000
254#                type: int64_t
255#            delta:
256#                value: 400
257#                type: uint64_t
258#          - name: set_net_decrease_speed
259#            property: 82000
260#            factor:
261#                value: 1000
262#                type: int64_t
263#            delta:
264#                value: 40
265#                type: uint64_t
266#      timer:
267#          interval: 5
268#    - name: occ_active_speed_changes
269#      precondition:
270#          name: property_states_match
271#          groups:
272#              - name: occ0_object
273#                interface: org.open_power.OCC.Status
274#                property:
275#                    name: OccActive
276#                    type: bool
277#                    value: true
278#              - name: occ1_object
279#                interface: org.open_power.OCC.Status
280#                property:
281#                    name: OccActive
282#                    type: bool
283#                    value: true
284#          signals:
285#              - name: interfacesAdded
286#              - name: propertiesChanged
287#          events:
288#              - name: speed_changes_based_on_dimm_temps
289#                zone_conditions:
290#                    - name: air_cooled_chassis
291#                      zones:
292#                          - 0
293#                    - name: water_and_air_cooled_chassis
294#                      zones:
295#                          - 0
296#                group: zone0_dimms
297#                interface: xyz.openbmc_project.Sensor.Value
298#                property:
299#                    name: Value
300#                    type: int64_t
301#                signals:
302#                    - name: interfacesAdded
303#                    - name: propertiesChanged
304#                actions:
305#                    - name: set_net_increase_speed
306#                      property: 64000
307#                      factor:
308#                          value: 1000
309#                          type: int64_t
310#                      delta:
311#                          value: 200
312#                          type: uint64_t
313#                    - name: set_net_decrease_speed
314#                      property: 61000
315#                      factor:
316#                          value: 1000
317#                          type: int64_t
318#                      delta:
319#                          value: 40
320#                          type: uint64_t
321#                timer:
322#                    interval: 5
323