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#          [Ordered list of required parameters for the match string function]
15#
16#signals:
17#    - name: [The name associated with a supported signal function]
18#      description: [A user description of what this signal does]
19#      parameters:
20#          [Ordered list of required parameters for the signal function]
21#      match: [Match string function to use in subscribing to the signal]
22#
23#methods:
24#    - name: [The name associated with a supported method function]
25#      description: [A user description of what this method does]
26#      parameters:
27#          [Ordered list of required parameteres for the method function]
28#
29#handlers:
30#    - name: [The name associated with a supported handler function]
31#      description: [A user descriptiion of what this handler does]
32#      parameters:
33#          [Ordered list of required parameters for the handler function]
34#
35#preconditions: [Preconditions are intended to load or unload events based
36#                on the precondition's resulting state]
37#    - name: [Name associated with an available precondition function]
38#      description: [A user description of the precondition's use]
39#      parameters:
40#          [Ordered list of required parameters for the precondition function]
41#
42#actions:
43#    - name: [Name associated with an available action function]
44#      description: [A user description of what this action does]
45#      parameters:
46#          [Ordered list of required parameters for the associated function]
47#
48#events:
49#    - name: [A unique name for this event]
50#      precondition{OPTIONAL}:
51#          name: [Name of the precondition function]
52#          groups:
53#              - name: [A group name from the list of groups]
54#                zone_conditions{OPTIONAL}:
55#                    - name: [The name of the zone condition]
56#                      zones:
57#                          - [Zone number to include this set speed event with]
58#                interface: [Dbus interface on the group members' object path]
59#                property:
60#                    name: [Name of the property on the interface]
61#                    type: [The property's data type]
62#          triggers:
63#              [At least 1 trigger is required per event from those available:
64#               "init"   - Executes a method(with associated handler) at startup
65#                          and then process the event actions
66#               "signal" - Subscribes to a signal and executes the associated
67#                          handler when the signal is received and then process
68#                          the event actions
69#               "timer"  - Configures a type of timer over an interval that
70#                          processess the event actions each time the timer
71#                          expires]
72#              - name: [Name of trigger to execute the event]
73#                [Provide the required trigger parameter(s)]
74#          events: [Define the event that is to be loaded when the precondition
75#                   succeeds]
76#      groups:
77#          - name: [A group name from the list of groups]
78#            zone_conditions{OPTIONAL}:
79#                - name: [The name of the zone condition]
80#                  zones:
81#                      - [Zone number to include this set speed event with]
82#            interface: [The Dbus interface on the group members' object path]
83#            property:
84#                name: [Name of the property on the interface]
85#                type: [The property's data type]
86#      triggers:
87#          [At least 1 trigger is required per event from those available:
88#           "init"   - Executes a method(with associated handler) at startup
89#                      and then process the event actions
90#           "signal" - Subscribes to a signal and executes the associated
91#                      handler when the signal is received and then process
92#                      the event actions
93#           "timer"  - Configures a type of timer over an interval that
94#                      processess the event actions each time the timer expires]
95#          - name: [Name of trigger to execute the event]
96#            [Provide the required trigger parameter(s)]
97#      actions:
98#          - name: [Name of an action from the list of actions]
99#            [Ordered list of each required action parameter with a defined
100#             type and value for this event. The 'property' parameter utilizes
101#             the same type defined under the 'property' attribute.]
102
103#Example:
104#groups:
105#    - name: zone0_fans
106#      description: Group of fan inventory objects for zone 0
107#      type: /xyz/openbmc_project/inventory
108#      members:
109#          - /system/chassis/motherboard/fan0
110#          - /system/chassis/motherboard/fan1
111#          - /system/chassis/motherboard/fan2
112#          - /system/chassis/motherboard/fan3
113#    - name: zone0_ambient
114#      description: Group of ambient temperature sensors for zone 0
115#      type: /xyz/openbmc_project/sensors
116#      members:
117#          - /temperature/ambient
118#    - name: occ0_object
119#      description: Dbus object containing OCC0 properties
120#      type: /org/open_power/control
121#      members:
122#          - /occ0
123#    - name: zone0_regulators
124#      description: Group of regulator temperature sensors for zone 0
125#      type: /xyz/openbmc_project/sensors
126#      members:
127#          - /temperature/p0_vdd_temp
128#          - /temperature/p1_vdd_temp
129#    - name: zone0_dimms
130#      description: Group of dimm temperature sensors for zone 0
131#      type: /xyz/openbmc_project/sensors
132#      members:
133#          - /temperature/dimm0_temp
134#          - /temperature/dimm1_temp
135#          - /temperature/dimm2_temp
136#          - /temperature/dimm3_temp
137#          - /temperature/dimm4_temp
138#
139#matches:
140#    - name: propertiesChanged
141#      parameters:
142#          - object
143#          - interface
144#    - name: interfacesAdded
145#      parameters:
146#          - object
147#    - name: interfacesRemoved
148#      parameters:
149#          - object
150#
151#signals:
152#    - name: propertiesChanged
153#      description: >
154#          A property changed signal
155#      parameters:
156#          - object
157#          - interface
158#      match: propertiesChanged
159#    - name: interfacesAdded
160#      description: >
161#          An interfaces added signal
162#      parameters:
163#          - type
164#          - object
165#          - interface
166#          - property
167#      match: interfacesAdded
168#    - name: interfacesRemoved
169#      description: >
170#          An interfaces removed match
171#      parameters:
172#          - object
173#          - interface
174#      match: interfacesRemoved
175#
176#methods:
177#    - name: getProperties
178#      description: >
179#          Get the property values of the given group members
180#          by performing a `GetProperty` method call on each
181#      parameters:
182#          - type
183#
184#handlers:
185#    - name: setProperty
186#      description: >
187#          Sets a value for the givent object/interface/property
188#      parameters:
189#          - type
190#
191#preconditions:
192#    - name: property_states_match
193#      description: >
194#          All defined properties must match the values given to
195#          enable a set speed event otherwise fan speeds are set to full
196#      parameters:
197#          - groups
198#
199#actions:
200#    - name: count_state_before_speed
201#      description: Set the speed when a number of properties at a state
202#      parameters:
203#          - count
204#          - property
205#          - speed
206#    - name: set_floor_from_average_sensor_value
207#      description: Set floor speed from first entry with average less than key
208#      parameters:
209#          - map
210#    - name: set_ceiling_from_average_sensor_value
211#      description: Set ceiling speed based on key transition values with average
212#      parameters:
213#          - map
214#    - name: set_net_increase_speed
215#      description: >
216#          Set the speed increase delta based on the delta increase
217#          size times the given value and property's value difference
218#      parameters:
219#          - property
220#          - factor
221#          - delta
222#    - name: set_net_decrease_speed
223#      description: >
224#          Set the speed decrease delta based on the delta decrease
225#          size times the given value and property's value difference
226#      parameters:
227#          - property
228#          - factor
229#          - delta
230#    - name: update_default_floor
231#      description: >
232#          Update the default fan floor to the given speed
233#      parameters:
234#          - property
235#          - speed
236#
237#events:
238#    - name: missing_before_high_speed
239#      groups:
240#          - name: zone0_fans
241#            zone_conditions:
242#                - name: air_cooled_chassis
243#                  zones:
244#                      - 0
245#            interface: xyz.openbmc_project.Inventory.Item
246#            property:
247#                name: Present
248#                type: bool
249#      triggers:
250#          - name: init
251#            method: getProperties
252#            handler: setProperty
253#          - name: signal
254#            signal: propertiesChanged
255#            handler: setProperty
256#      actions:
257#          - name: count_state_before_speed
258#            count: 1
259#            property:
260#                value: false
261#                type: bool
262#            speed:
263#                value: 10500
264#                type: uint64_t
265#    - name: set_air_cooled_speed_boundaries_based_on_ambient
266#      groups:
267#          - name: zone0_ambient
268#            zone_conditions:
269#                - name: air_cooled_chassis
270#                  zones:
271#                      - 0
272#            interface: xyz.openbmc_project.Sensor.Value
273#            property:
274#                name: Value
275#                type: int64_t
276#      triggers:
277#          - name: init
278#            method: getProperties
279#            handler: setProperty
280#          - name: signal
281#            signal: propertiesChanged
282#            handler: setProperty
283#      actions:
284#          - name: set_floor_from_average_sensor_value
285#            map:
286#                value:
287#                    - 27000: 3500
288#                    - 32000: 4600
289#                    - 37000: 5200
290#                    - 40000: 5800
291#                type: std::map<int64_t, uint64_t>
292#          - name: set_ceiling_from_average_sensor_value
293#            map:
294#                value:
295#                    - 25000: 7200
296#                    - 27000: 10500
297#                type: std::map<int64_t, uint64_t>
298#    - name: set_water_cooled_speed_boundaries_based_on_ambient
299#      groups:
300#          - name: zone0_ambient
301#            zone_conditions:
302#                - name: water_and_air_cooled_chassis
303#                  zones:
304#                      - 0
305#            interface: xyz.openbmc_project.Sensor.Value
306#            property:
307#                name: Value
308#                type: int64_t
309#      triggers:
310#          - name: init
311#            method: getProperties
312#            handler: setProperty
313#          - name: signal
314#            signal: propertiesChanged
315#            handler: setProperty
316#      actions:
317#          - name: set_floor_from_average_sensor_value
318#            map:
319#                value:
320#                    - 27000: 3000
321#                    - 32000: 4300
322#                    - 37000: 5000
323#                    - 40000: 5800
324#                type: std::map<int64_t, uint64_t>
325#          - name: set_ceiling_from_average_sensor_value
326#            map:
327#                value:
328#                    - 25000: 7200
329#                    - 27000: 10500
330#                type: std::map<int64_t, uint64_t>
331#    - name: occ_active_speed_changes
332#      precondition:
333#          name: property_states_match
334#          groups:
335#              - name: occ0_object
336#                interface: org.open_power.OCC.Status
337#                property:
338#                    name: OccActive
339#                    type: bool
340#                    value: true
341#              - name: occ1_object
342#                interface: org.open_power.OCC.Status
343#                property:
344#                    name: OccActive
345#                    type: bool
346#                    value: true
347#          triggers:
348#              - name: init
349#                method: getProperties
350#                handler: setProperty
351#              - name: signal
352#                signal: interfacesAdded
353#                handler: setProperty
354#              - name: signal
355#                signal: propertiesChanged
356#                handler: setProperty
357#          events:
358#              - name: speed_control_sensors
359#                groups:
360#                    - name: zone0_regulators
361#                      interface: xyz.openbmc_project.Sensor.Value
362#                      property:
363#                          name: Value
364#                          type: int64_t
365#                    - name: zone0_dimms
366#                      interface: xyz.openbmc_project.Sensor.Value
367#                      property:
368#                          name: Value
369#                          type: int64_t
370#                triggers:
371#                    - name: init
372#                      method: getProperties
373#                      handler: setProperty
374#                    - name: signal
375#                      signal: interfacesAdded
376#                      handler: setProperty
377#                    - name: signal
378#                      signal: propertiesChanged
379#                      handler: setProperty
380#                    - name: signal
381#                      signal: interfacesRemoved
382#                      handler: removeInterface
383#              - name: 1sec_speed_change_request_sampling
384#                triggers:
385#                    - name: timer
386#                      interval: 1000000
387#                      type: repeating
388#                actions:
389#                    # Speed changes based on regulator temps
390#                    - name: set_net_increase_speed
391#                      groups:
392#                          - name: zone0_regulators
393#                            interface: xyz.openbmc_project.Sensor.Value
394#                            property:
395#                                name: Value
396#                                type: int64_t
397#                      property:
398#                          value: 85000
399#                          type: int64_t
400#                      factor:
401#                          value: 1000
402#                          type: int64_t
403#                      delta:
404#                          value: 400
405#                          type: uint64_t
406#                    - name: set_net_decrease_speed
407#                      groups:
408#                          - name: zone0_regulators
409#                            interface: xyz.openbmc_project.Sensor.Value
410#                            property:
411#                                name: Value
412#                                type: int64_t
413#                      property:
414#                          value: 82000
415#                          type: int64_t
416#                      factor:
417#                          value: 1000
418#                          type: int64_t
419#                       delta:
420#                          value: 40
421#                          type: uint64_t
422#                    # Speed changes based on dimm temps
423#                    - name: set_net_increase_speed
424#                      groups:
425#                          - name: zone0_dimms
426#                            interface: xyz.openbmc_project.Sensor.Value
427#                            property:
428#                                name: Value
429#                                type: int64_t
430#                      property:
431#                          value: 64000
432#                          type: int64_t
433#                      factor:
434#                          value: 1000
435#                          type: int64_t
436#                      delta:
437#                          value: 200
438#                          type: uint64_t
439#                    - name: set_net_decrease_speed
440#                      groups:
441#                          - name: zone0_dimms
442#                            interface: xyz.openbmc_project.Sensor.Value
443#                            property:
444#                                name: Value
445#                                type: int64_t
446#                      property:
447#                          value: 61000
448#                          type: int64_t
449#                      factor:
450#                          value: 1000
451#                          type: int64_t
452#                      delta:
453#                          value: 40
454#                          type: uint64_t
455