1#include <Messenger.h> 2#include <Roster.h> 3 4#include <RosterPrivate.h> 5 6#include "power_button_monitor.h" 7 8 9PowerButtonMonitor::PowerButtonMonitor() : BHandler ("power_button_monitor") { 10 power_button_fd = open("/dev/power/button/power",O_RDONLY); 11} 12 13PowerButtonMonitor::~PowerButtonMonitor() { 14 if (power_button_fd > 0) 15 close(power_button_fd); 16} 17 18void PowerButtonMonitor::MessageReceived(BMessage *msg) { 19 if (msg->what != POLL_POWER_BUTTON_STATUS) 20 return; 21 22 if (power_button_fd <= 0) 23 return; 24 25 uint8 button_pressed; 26 read(power_button_fd,&button_pressed,1); 27 28 if (button_pressed) { 29 BRoster roster; 30 BRoster::Private rosterPrivate(roster); 31 32 rosterPrivate.ShutDown(false, false, false); 33 } 34} 35