apphandler: Add firmware_revision support for ipmi config

Allow us to configure the firmware revision if needed. The field is
optional and will override the existing firmware revision.
This provide us a way to customize the firmware revision to anything we
want.

Tested:
With firmware_revision in dev_id.json
```
$ cat /usr/share/ipmi-providers/dev_id.json
$ ipmitool mc info
{
    "id": 0,
    "revision": 0,
    "addn_dev_support": 0,
    "firmware_revision": {
        "major": 35,
        "minor": 16
    },
    "manuf_id": 11129,
    "prod_id": 14426,
    "aux": 0
}

ipmitool mc info
Device ID                 : 0
Device Revision           : 0
Firmware Revision         : 35.10
IPMI Version              : 2.0
Manufacturer ID           : 11129
Manufacturer Name         : Google, Inc.
Product ID                : 14426 (0x385a)
Product Name              : Unknown (0x385A)
Device Available          : yes
Provides Device SDRs      : no
Additional Device Support :
Aux Firmware Rev Info     :
    0x00
    0x00
    0x00
    0x00
```

Change-Id: Ia05ceb9ff5ca46b104e70ad9230432e79fc70d07
Signed-off-by: Willy Tu <wltu@google.com>
1 file changed
tree: b5f2e9ca2e755e33800c8b840d66e36856eee746
  1. app/
  2. dbus-sdr/
  3. docs/
  4. include/
  5. libipmid/
  6. libipmid-host/
  7. scripts/
  8. softoff/
  9. subprojects/
  10. test/
  11. user_channel/
  12. xyz/
  13. .build.sh
  14. .clang-format
  15. .gitignore
  16. .shellcheck
  17. .travis.yml
  18. apphandler.cpp
  19. apphandler.hpp
  20. chassishandler.cpp
  21. chassishandler.hpp
  22. dcmihandler.cpp
  23. dcmihandler.hpp
  24. elog-errors.hpp
  25. entity_map_json.cpp
  26. entity_map_json.hpp
  27. error-HostEvent.hpp
  28. fruread.hpp
  29. generate_whitelist.sh
  30. generate_whitelist_create.sh
  31. globalhandler.cpp
  32. globalhandler.hpp
  33. groupext.cpp
  34. host-cmd-manager.cpp
  35. host-cmd-manager.hpp
  36. host-interface.cpp
  37. host-interface.hpp
  38. host-ipmid-whitelist.conf
  39. ipmi_fru_info_area.cpp
  40. ipmi_fru_info_area.hpp
  41. ipmid-new.cpp
  42. ipmisensor.cpp
  43. ipmiwhitelist.hpp
  44. LICENSE
  45. MAINTAINERS
  46. meson.build
  47. meson_options.txt
  48. OWNERS
  49. read_fru_data.cpp
  50. read_fru_data.hpp
  51. README.md
  52. selutility.cpp
  53. selutility.hpp
  54. sensordatahandler.cpp
  55. sensordatahandler.hpp
  56. sensorhandler.cpp
  57. sensorhandler.hpp
  58. settings.cpp
  59. settings.hpp
  60. storageaddsel.cpp
  61. storageaddsel.hpp
  62. storagehandler.cpp
  63. storagehandler.hpp
  64. sys_info_param.cpp
  65. sys_info_param.hpp
  66. systemintfcmds.cpp
  67. systemintfcmds.hpp
  68. testaddsel.cpp
  69. testit.cpp
  70. transporthandler.cpp
  71. transporthandler.hpp
  72. whitelist-filter.cpp
README.md

Compile ipmid with default options:

meson builddir
ninja -C builddir

Compile ipmid with yocto defaults:

meson builddir -Dbuildtype=minsize -Db_lto=true -Dtests=disabled
ninja -C builddir

If any of the dependencies are not found on the host system during configuration, meson automatically gets them via its wrap dependencies mentioned in ipmid/subprojects.

Enable/Disable meson wrap feature

meson builddir -Dwrap_mode=nofallback
ninja -C builddir

Enable debug traces

meson builddir -Dbuildtype=debug
ninja -C builddir

Generate test coverage report:

meson builddir -Db_coverage=true -Dtests=enabled
ninja -C builddir test
ninja -C builddir coverage