libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
linux_power.hpp
1#pragma once
2
3#include <unistd.h> // for geteuid()
4
5#include <cstdlib> // for system()
6#include <stdexcept> // for std::runtime_error
7
8#include "libxr.hpp"
9#include "logger.hpp"
10#include "power.hpp"
11
12namespace LibXR
13{
14
21{
22 public:
23 LinuxPowerManager() = default;
24
28 void Reset() override
29 {
30 CheckRoot();
31 int ret = std::system("reboot");
32 if (ret != 0)
33 {
34 throw std::runtime_error("Failed to reboot system");
35 }
36 }
37
41 void Shutdown() override
42 {
43 CheckRoot();
44 int ret = std::system("poweroff");
45 if (ret != 0)
46 {
47 throw std::runtime_error("Failed to shut down system");
48 }
49 }
50
51 private:
52 void CheckRoot()
53 {
54 if (geteuid() != 0)
55 {
56 XR_LOG_WARN("Must run as root");
57 }
58 }
59};
60
61} // namespace LibXR
Linux 电源管理实现 / Linux power manager implementation.
void Reset() override
重启系统 / Reboot system
void Shutdown() override
关闭系统 / Power off system
电源管理器基类 / Abstract base class for Power Manager
Definition power.hpp:18
LibXR 命名空间
Definition ch32_can.hpp:14