apphandler: add firmware version aux bytes parsing

Default regex string only tries to match Major and Minor version.

To match more firmware version info, platforms need to define it own
regex string to match more strings, and assign correct mapping index in
matches array.

matches[0]: matched index for major ver
matches[1]: matched index for minor ver
matches[2]: matched index for aux[0] (set 0 to skip)
matches[3]: matched index for aux[1] (set 0 to skip)
matches[4]: matched index for aux[2] (set 0 to skip)
matches[5]: matched index for aux[3] (set 0 to skip)

Test Results:
```
regex = "([\d]+).([\d]+).([\d]+)-dev-([\d]+)-g([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})"
matches = {1,2,5,6,7,8}
version = 2.14.0-dev-750-g37a7c5ad1-dirty
          ^ ^  ^     ^    ^ ^ ^ ^
          | |  |     |    | | | |
          | |  |     |    | | | |-- Aux byte 3 (0xAD), index 8
          | |  |     |    | | |---- Aux byte 2 (0xC5), index 7
          | |  |     |    | |------ Aux byte 1 (0xA7), index 6
          | |  |     |    |-------- Aux byte 0 (0x37), index 5
          | |  |     |------------- Not used, index 4
          | |  |------------------- Not used, index 3
          | |---------------------- Minor (14), index 2
          |------------------------ Major (2), index 1
```

rev.major: 2
rev.minor: 14
rev.aux[0]: 55 (0x37)
rev.aux[1]: 167 (0xA7)
rev.aux[2]: 197 (0xC5)
rev.aux[3]: 173 (0xAD)

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