tree 5dcc246dc44e40e3dd9032016018a98a1163d1ad
parent 12b32010abcef89739034ab3dacbef11cb185660
author Jay Meyer <jaymeyer@us.ibm.com> 1602793997 -0500
committer Matthew Barth <msbarth@linux.ibm.com> 1609968475 +0000

Enhance fan tracing support - add device access info

Move file names for file errors to the journal message. Enhance
usablility.

Logging messages for file errors contain the file names and other
information inside structured entries rather than directly in the log
message.  This makes viewing errors more difficult than need be.  Before
this change, the journal report needed to be run with '-o verbose' to
see the file names.

Tested:
- For cooling-type/cooling_type.cpp
  Approx line 39:
    A dry-dock test of this message was performed by commenting out the
    return for the successful case just above and adding a successful
    return just below the journal message.
    Then the next test can output this log message:
    Failed to get libevdev from file descriptor 4, return code 0

  Approx line 71:
  Do this to get error below:
   "phosphor-cooling-type --air
   --dev=/dev/input/by-path/platform-gpio-keys-polled-event
   --path=/system/chassis/motherboard/ --event=21"
   Message:
    "Device does not support event type keycode 21"

- For cooling-type/main.cpp
   Approx line 73:
   Do this to provoke error below:
    "phosphor-cooling-type --air
     --dev=/dev/input/by-path/platform-gpio-keys-polled-event
      --path=/system/chassis/motherboard/ --event=6"
  Message:
    "Uncaught DBus method failure exception Busname:
      xyz.openbmc_project.Inventory.Manager Path:
      /xyz/openbmc_project/inventory Interface
      xyz.openbmc_project.Inventory.Manager Method: Notify"

 - For presence/fallback.cpp
   Approx line 56:
   Run fan presence application using a 'fallback' rpolicy
   for a fan and set that fan's gpio presence line to false within
   simulation.

   Journal Message:
 Using backup presence sensor for fan /system/chassis/motherboard/fan0

For presence/fallback.cpp
Approx line 82:
   Set a fan's gpio presence line to false within simulation and then run
   the fan presence application using a 'fallback' rpolicy for that fan.

Journal Message:
 Using backup presence sensor for fan /system/chassis/motherboard/fan0

- For presence/tach.cpp
   Approx line 76:
   Remove a fan sensor from the fan controller hwmon config that is
   configured within the fan presence application. Then unbind and
   rebind the fan controller device driver and start the fan presence
   application.

Journal Message:
   Unable to read fan tach sensor /xyz/openbmc_project/sensors/fan_tach/fan3_0

- For utility.hpp:
   Approx line 65:
    Do this to get error below:
     "phosphor-cooling-type --air
      --dev=/dev/input/by-path/platform-gpio-keys-polled-
      --path=/system/chassis/motherboard/ --event=21"
   Message:
     "Failed to open file device path
      /dev/input/by-path/platform-gpio-keys-polled-"

Signed-off-by: Jay Meyer <jaymeyer@us.ibm.com>
Change-Id: I592481d92b18b85e5ea5b7040389467530b581e1
