1 #include "debugHostSelector_button.hpp" 2 // add the button iface class to registry 3 static ButtonIFRegister<DebugHostSelector> buttonRegister; 4 using namespace phosphor::logging; 5 6 void DebugHostSelector::simPress() 7 { 8 pressed(); 9 } 10 11 void DebugHostSelector::simRelease() 12 { 13 released(); 14 } 15 16 void DebugHostSelector::simLongPress() 17 { 18 pressedLong(); 19 } 20 21 /** 22 * @brief This method is called from sd-event provided callback function 23 * callbackHandler if platform specific event handling is needed then a 24 * derived class instance with its specific event handling logic along with 25 * init() function can be created to override the default event handling 26 */ 27 28 void DebugHostSelector::handleEvent(sd_event_source* /* es */, int fd, 29 uint32_t /* revents*/) 30 { 31 int n = -1; 32 char buf = '0'; 33 34 n = ::lseek(fd, 0, SEEK_SET); 35 36 if (n < 0) 37 { 38 lg2::error("GPIO fd lseek error! : {FORM_FACTOR_TYPE}", 39 "FORM_FACTOR_TYPE", getFormFactorType()); 40 return; 41 } 42 43 n = ::read(fd, &buf, sizeof(buf)); 44 if (n < 0) 45 { 46 lg2::error("GPIO fd read error! : {FORM_FACTOR_TYPE}", 47 "FORM_FACTOR_TYPE", getFormFactorType()); 48 throw sdbusplus::xyz::openbmc_project::Chassis::Common::Error:: 49 IOError(); 50 } 51 52 if (buf == '0') 53 { 54 lg2::info("Button pressed : {FORM_FACTOR_TYPE}", "FORM_FACTOR_TYPE", 55 getFormFactorType()); 56 // emit pressed signal 57 pressed(); 58 } 59 else 60 { 61 lg2::info("Button released{FORM_FACTOR_TYPE}", "FORM_FACTOR_TYPE", 62 getFormFactorType()); 63 // emit released signal 64 released(); 65 } 66 }