Support multi power buttons with multi behaviors

For supporting more-than-one power buttons behaviors,
add new matches and instances by following json config.

This change is for multiple slots integrated on one chassis,
and each slot has button to control power status.

For example:
/xyz/openbmc_project/Chassis/Buttons/Power01 for button on slot1
/xyz/openbmc_project/Chassis/Buttons/Power02 for button on slot2

Moreover, support multi-level power control by json config,
chassis now can do action by corresponding pressing duration.

Tested:
Press buttons and check corresponding behaviors.

Change-Id: I7789f0367d5e846dd9e68f966ba0755fc916217a
Signed-off-by: Rush Chen <rush.chen.wiwynn@gmail.com>
diff --git a/meson_config.hpp.in b/meson_config.hpp.in
index 6610a44..ffc82a6 100644
--- a/meson_config.hpp.in
+++ b/meson_config.hpp.in
@@ -1,5 +1,6 @@
 #pragma once
 
+#include <array>
 #include <chrono>
 
 constexpr inline auto POWER_DBUS_OBJECT_NAME =
@@ -23,9 +24,12 @@
     "/xyz/openbmc_project/state/host";
 
 constexpr inline auto GPIO_BASE_LABEL_NAME = "1e780000.gpio";
+constexpr inline auto gpioDefFile = "/etc/default/obmc/gpio/gpio_defs.json";
 #define LOOKUP_GPIO_BASE @LOOKUP_GPIO_BASE@
 
 constexpr inline auto POWER_BUTTON_PROFILE = @POWER_BUTTON_PROFILE@;
 constexpr inline auto ID_LED_GROUP = @ID_LED_GROUP@;
 constexpr inline const auto LONG_PRESS_TIME_MS =
     std::chrono::milliseconds(@LONG_PRESS_TIME_MS@);
+
+constexpr inline static auto instances = std::to_array({ @INSTANCES@ });