| Kuiying Wang | a9d39e3 | 2018-08-14 13:47:32 +0800 | [diff] [blame] | 1 | /* | 
|  | 2 | // Copyright (c) 2018 Intel Corporation | 
|  | 3 | // | 
|  | 4 | // Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | 5 | // you may not use this file except in compliance with the License. | 
|  | 6 | // You may obtain a copy of the License at | 
|  | 7 | // | 
|  | 8 | //      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | 9 | // | 
|  | 10 | // Unless required by applicable law or agreed to in writing, software | 
|  | 11 | // distributed under the License is distributed on an "AS IS" BASIS, | 
|  | 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | 13 | // See the License for the specific language governing permissions and | 
|  | 14 | // limitations under the License. | 
|  | 15 | */ | 
|  | 16 |  | 
|  | 17 | #pragma once | 
| George Liu | d6a1bae | 2022-06-20 13:47:31 +0800 | [diff] [blame] | 18 | #include "config.h" | 
|  | 19 |  | 
| Naveen Moses | a1af329 | 2021-12-15 11:47:01 +0530 | [diff] [blame] | 20 | #include "button_factory.hpp" | 
|  | 21 | #include "button_interface.hpp" | 
| Kuiying Wang | a9d39e3 | 2018-08-14 13:47:32 +0800 | [diff] [blame] | 22 | #include "common.hpp" | 
|  | 23 | #include "gpio.hpp" | 
| Patrick Venture | 0d9377d | 2018-11-01 19:34:59 -0700 | [diff] [blame] | 24 | #include "xyz/openbmc_project/Chassis/Buttons/ID/server.hpp" | 
|  | 25 | #include "xyz/openbmc_project/Chassis/Common/error.hpp" | 
| Kuiying Wang | a9d39e3 | 2018-08-14 13:47:32 +0800 | [diff] [blame] | 26 |  | 
| Patrick Venture | 0d9377d | 2018-11-01 19:34:59 -0700 | [diff] [blame] | 27 | #include <unistd.h> | 
|  | 28 |  | 
|  | 29 | #include <phosphor-logging/elog-errors.hpp> | 
|  | 30 |  | 
| Naveen Moses | a1af329 | 2021-12-15 11:47:01 +0530 | [diff] [blame] | 31 | static constexpr std::string_view ID_BUTTON = "ID_BTN"; | 
| Kuiying Wang | a9d39e3 | 2018-08-14 13:47:32 +0800 | [diff] [blame] | 32 |  | 
| George Liu | 5b98f4d | 2022-06-20 13:31:14 +0800 | [diff] [blame] | 33 | class IDButton : | 
| Patrick Williams | 9a529a6 | 2022-07-22 19:26:54 -0500 | [diff] [blame] | 34 | public sdbusplus::server::object_t< | 
| George Liu | 5b98f4d | 2022-06-20 13:31:14 +0800 | [diff] [blame] | 35 | sdbusplus::xyz::openbmc_project::Chassis::Buttons::server::ID>, | 
|  | 36 | public ButtonIface | 
| Kuiying Wang | a9d39e3 | 2018-08-14 13:47:32 +0800 | [diff] [blame] | 37 | { | 
| Naveen Moses | a1af329 | 2021-12-15 11:47:01 +0530 | [diff] [blame] | 38 | public: | 
| Patrick Williams | 9a529a6 | 2022-07-22 19:26:54 -0500 | [diff] [blame] | 39 | IDButton(sdbusplus::bus_t& bus, const char* path, EventPtr& event, | 
| Naveen Moses | a1af329 | 2021-12-15 11:47:01 +0530 | [diff] [blame] | 40 | buttonConfig& buttonCfg) : | 
| Patrick Williams | 9a529a6 | 2022-07-22 19:26:54 -0500 | [diff] [blame] | 41 | sdbusplus::server::object_t< | 
| Kuiying Wang | a9d39e3 | 2018-08-14 13:47:32 +0800 | [diff] [blame] | 42 | sdbusplus::xyz::openbmc_project::Chassis::Buttons::server::ID>( | 
|  | 43 | bus, path), | 
| Naveen Moses | a1af329 | 2021-12-15 11:47:01 +0530 | [diff] [blame] | 44 | ButtonIface(bus, event, buttonCfg) | 
| Kuiying Wang | a9d39e3 | 2018-08-14 13:47:32 +0800 | [diff] [blame] | 45 | { | 
| Naveen Moses | a1af329 | 2021-12-15 11:47:01 +0530 | [diff] [blame] | 46 | init(); | 
| Kuiying Wang | a9d39e3 | 2018-08-14 13:47:32 +0800 | [diff] [blame] | 47 | } | 
|  | 48 |  | 
|  | 49 | ~IDButton() | 
|  | 50 | { | 
| Naveen Moses | a1af329 | 2021-12-15 11:47:01 +0530 | [diff] [blame] | 51 | deInit(); | 
| Kuiying Wang | a9d39e3 | 2018-08-14 13:47:32 +0800 | [diff] [blame] | 52 | } | 
|  | 53 |  | 
|  | 54 | void simPress() override; | 
|  | 55 |  | 
| Naveen Moses | a1af329 | 2021-12-15 11:47:01 +0530 | [diff] [blame] | 56 | static constexpr std::string_view getFormFactorName() | 
| Matt Spinler | 8605bdf | 2018-11-05 14:55:46 -0600 | [diff] [blame] | 57 | { | 
|  | 58 | return ID_BUTTON; | 
|  | 59 | } | 
| Naveen Moses | a1af329 | 2021-12-15 11:47:01 +0530 | [diff] [blame] | 60 | static constexpr const char* getDbusObjectPath() | 
| Kuiying Wang | a9d39e3 | 2018-08-14 13:47:32 +0800 | [diff] [blame] | 61 | { | 
| Naveen Moses | a1af329 | 2021-12-15 11:47:01 +0530 | [diff] [blame] | 62 | return ID_DBUS_OBJECT_NAME; | 
| Kuiying Wang | a9d39e3 | 2018-08-14 13:47:32 +0800 | [diff] [blame] | 63 | } | 
|  | 64 |  | 
| Naveen Moses | a1af329 | 2021-12-15 11:47:01 +0530 | [diff] [blame] | 65 | void handleEvent(sd_event_source* es, int fd, uint32_t revents) override; | 
| Kuiying Wang | a9d39e3 | 2018-08-14 13:47:32 +0800 | [diff] [blame] | 66 | }; |