Skip to content

Commit 2556ae1

Browse files
committed
CRLF
1 parent 1434058 commit 2556ae1

File tree

5 files changed

+745
-745
lines changed

5 files changed

+745
-745
lines changed
Lines changed: 144 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -1,144 +1,144 @@
1-
/* OS Sleep (Apple)
2-
*
3-
* From: https://github.com/PokemonAutomation/Arduino-Source
4-
*
5-
*/
6-
7-
#include <iostream>
8-
#include <mutex>
9-
#include <IOKit/pwr_mgt/IOPMLib.h>
10-
#include "CommonFramework/Logging/Logger.h"
11-
#include "SystemSleep.h"
12-
13-
namespace PokemonAutomation{
14-
15-
16-
17-
class AppleSleepController : public SystemSleepController{
18-
public:
19-
virtual ~AppleSleepController(){
20-
std::lock_guard<std::mutex> lg(m_lock);
21-
m_screen_on_requests = 0;
22-
m_no_sleep_requests = 0;
23-
update_state();
24-
}
25-
virtual void push_screen_on() override{
26-
std::lock_guard<std::mutex> lg(m_lock);
27-
m_screen_on_requests++;
28-
update_state();
29-
}
30-
virtual void pop_screen_on() override{
31-
std::lock_guard<std::mutex> lg(m_lock);
32-
m_screen_on_requests--;
33-
update_state();
34-
}
35-
virtual void push_no_sleep() override{
36-
std::lock_guard<std::mutex> lg(m_lock);
37-
m_no_sleep_requests++;
38-
update_state();
39-
}
40-
virtual void pop_no_sleep() override{
41-
std::lock_guard<std::mutex> lg(m_lock);
42-
m_no_sleep_requests--;
43-
update_state();
44-
}
45-
46-
47-
private:
48-
// Disable/Enable screen saver and OS sleep.
49-
// Return whether the setting is successful.
50-
bool prevent_sleep(bool prevent);
51-
void update_state();
52-
53-
bool disable_sleep();
54-
bool enable_sleep();
55-
56-
IOReturn m_prevention_succeeded = kIOReturnError;
57-
IOPMAssertionID m_session_id = 0;
58-
59-
size_t m_screen_on_requests = 0;
60-
size_t m_no_sleep_requests = 0;
61-
};
62-
63-
64-
// Code from https://stackoverflow.com/questions/5596319/how-to-programmatically-prevent-a-mac-from-going-to-sleep/8461182#8461182
65-
66-
67-
bool AppleSleepController::prevent_sleep(bool prevent){
68-
if (prevent){
69-
return disable_sleep();
70-
}else{
71-
return enable_sleep();
72-
}
73-
}
74-
75-
bool AppleSleepController::disable_sleep(){
76-
if (m_prevention_succeeded == kIOReturnSuccess){
77-
return true;
78-
}
79-
std::cout << "Disabling display sleep and OS sleep" << std::endl;
80-
// kIOPMAssertionTypeNoDisplaySleep prevents display sleep,
81-
// kIOPMAssertionTypeNoIdleSleep prevents idle sleep
82-
83-
// NOTE: IOPMAssertionCreateWithName limits the string to 128 characters.
84-
CFStringRef reasonForActivity = (CFStringRef) __builtin___CFStringMakeConstantString("SerialPrograms is running");
85-
86-
m_prevention_succeeded = kIOReturnError;
87-
m_session_id = 0;
88-
m_prevention_succeeded = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep,
89-
kIOPMAssertionLevelOn, reasonForActivity, &m_session_id);
90-
if (m_prevention_succeeded != kIOReturnSuccess){
91-
m_session_id = 0;
92-
std::cerr << "Cannot disable sleep. Error code " << m_prevention_succeeded << std::endl;
93-
return false;
94-
}
95-
96-
std::cout << "Disabled display sleep and OS sleep" << std::endl;
97-
return true;
98-
}
99-
100-
bool AppleSleepController::enable_sleep(){
101-
if (m_prevention_succeeded == kIOReturnSuccess){
102-
IOPMAssertionRelease(m_session_id);
103-
m_session_id = 0;
104-
m_prevention_succeeded = kIOReturnError;
105-
std::cout << "Enabled display sleep and OS sleep." << std::endl;
106-
}
107-
return true;
108-
}
109-
110-
111-
112-
void AppleSleepController::update_state(){
113-
// Must call under lock.
114-
115-
SleepSuppress before_state = m_state.load(std::memory_order_relaxed);
116-
SleepSuppress after_state = SleepSuppress::NONE;
117-
118-
// TODO: Distiguish these two.
119-
bool enabled = m_screen_on_requests > 0 || m_no_sleep_requests > 0;
120-
prevent_sleep(enabled);
121-
122-
after_state = enabled
123-
? SleepSuppress::SCREEN_ON
124-
: SleepSuppress::NONE,
125-
126-
m_state.store(after_state, std::memory_order_release);
127-
128-
if (before_state != after_state){
129-
notify_listeners(after_state);
130-
}
131-
}
132-
133-
134-
SystemSleepController& SystemSleepController::instance(){
135-
static AppleSleepController controller;
136-
return controller;
137-
}
138-
139-
140-
141-
142-
143-
144-
}
1+
/* OS Sleep (Apple)
2+
*
3+
* From: https://github.com/PokemonAutomation/Arduino-Source
4+
*
5+
*/
6+
7+
#include <iostream>
8+
#include <mutex>
9+
#include <IOKit/pwr_mgt/IOPMLib.h>
10+
#include "CommonFramework/Logging/Logger.h"
11+
#include "SystemSleep.h"
12+
13+
namespace PokemonAutomation{
14+
15+
16+
17+
class AppleSleepController : public SystemSleepController{
18+
public:
19+
virtual ~AppleSleepController(){
20+
std::lock_guard<std::mutex> lg(m_lock);
21+
m_screen_on_requests = 0;
22+
m_no_sleep_requests = 0;
23+
update_state();
24+
}
25+
virtual void push_screen_on() override{
26+
std::lock_guard<std::mutex> lg(m_lock);
27+
m_screen_on_requests++;
28+
update_state();
29+
}
30+
virtual void pop_screen_on() override{
31+
std::lock_guard<std::mutex> lg(m_lock);
32+
m_screen_on_requests--;
33+
update_state();
34+
}
35+
virtual void push_no_sleep() override{
36+
std::lock_guard<std::mutex> lg(m_lock);
37+
m_no_sleep_requests++;
38+
update_state();
39+
}
40+
virtual void pop_no_sleep() override{
41+
std::lock_guard<std::mutex> lg(m_lock);
42+
m_no_sleep_requests--;
43+
update_state();
44+
}
45+
46+
47+
private:
48+
// Disable/Enable screen saver and OS sleep.
49+
// Return whether the setting is successful.
50+
bool prevent_sleep(bool prevent);
51+
void update_state();
52+
53+
bool disable_sleep();
54+
bool enable_sleep();
55+
56+
IOReturn m_prevention_succeeded = kIOReturnError;
57+
IOPMAssertionID m_session_id = 0;
58+
59+
size_t m_screen_on_requests = 0;
60+
size_t m_no_sleep_requests = 0;
61+
};
62+
63+
64+
// Code from https://stackoverflow.com/questions/5596319/how-to-programmatically-prevent-a-mac-from-going-to-sleep/8461182#8461182
65+
66+
67+
bool AppleSleepController::prevent_sleep(bool prevent){
68+
if (prevent){
69+
return disable_sleep();
70+
}else{
71+
return enable_sleep();
72+
}
73+
}
74+
75+
bool AppleSleepController::disable_sleep(){
76+
if (m_prevention_succeeded == kIOReturnSuccess){
77+
return true;
78+
}
79+
std::cout << "Disabling display sleep and OS sleep" << std::endl;
80+
// kIOPMAssertionTypeNoDisplaySleep prevents display sleep,
81+
// kIOPMAssertionTypeNoIdleSleep prevents idle sleep
82+
83+
// NOTE: IOPMAssertionCreateWithName limits the string to 128 characters.
84+
CFStringRef reasonForActivity = (CFStringRef) __builtin___CFStringMakeConstantString("SerialPrograms is running");
85+
86+
m_prevention_succeeded = kIOReturnError;
87+
m_session_id = 0;
88+
m_prevention_succeeded = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep,
89+
kIOPMAssertionLevelOn, reasonForActivity, &m_session_id);
90+
if (m_prevention_succeeded != kIOReturnSuccess){
91+
m_session_id = 0;
92+
std::cerr << "Cannot disable sleep. Error code " << m_prevention_succeeded << std::endl;
93+
return false;
94+
}
95+
96+
std::cout << "Disabled display sleep and OS sleep" << std::endl;
97+
return true;
98+
}
99+
100+
bool AppleSleepController::enable_sleep(){
101+
if (m_prevention_succeeded == kIOReturnSuccess){
102+
IOPMAssertionRelease(m_session_id);
103+
m_session_id = 0;
104+
m_prevention_succeeded = kIOReturnError;
105+
std::cout << "Enabled display sleep and OS sleep." << std::endl;
106+
}
107+
return true;
108+
}
109+
110+
111+
112+
void AppleSleepController::update_state(){
113+
// Must call under lock.
114+
115+
SleepSuppress before_state = m_state.load(std::memory_order_relaxed);
116+
SleepSuppress after_state = SleepSuppress::NONE;
117+
118+
// TODO: Distiguish these two.
119+
bool enabled = m_screen_on_requests > 0 || m_no_sleep_requests > 0;
120+
prevent_sleep(enabled);
121+
122+
after_state = enabled
123+
? SleepSuppress::SCREEN_ON
124+
: SleepSuppress::NONE,
125+
126+
m_state.store(after_state, std::memory_order_release);
127+
128+
if (before_state != after_state){
129+
notify_listeners(after_state);
130+
}
131+
}
132+
133+
134+
SystemSleepController& SystemSleepController::instance(){
135+
static AppleSleepController controller;
136+
return controller;
137+
}
138+
139+
140+
141+
142+
143+
144+
}

0 commit comments

Comments
 (0)