1
0

Implemented power:sleep action (closes #69)

This commit is contained in:
Patrick Gaskin
2020-08-04 11:36:02 -04:00
parent e7646a6502
commit 1d61ddf16b
2 changed files with 10 additions and 1 deletions

View File

@@ -100,6 +100,7 @@
# power - one of: # power - one of:
# shutdown (4.13.12638+) # shutdown (4.13.12638+)
# reboot (4.13.12638+) # reboot (4.13.12638+)
# sleep (4.13.12638+)
# skip - the number of actions to skip, or -1 to skip all remaining ones (i.e. end the chain) # skip - the number of actions to skip, or -1 to skip all remaining ones (i.e. end the chain)
# #
# chain_success:<action>:<arg> # chain_success:<action>:<arg>

View File

@@ -459,7 +459,7 @@ NM_ACTION_(nickel_misc) {
} }
NM_ACTION_(power) { NM_ACTION_(power) {
if (!strcmp(arg, "shutdown") || !strcmp(arg, "reboot")) { if (!strcmp(arg, "shutdown") || !strcmp(arg, "reboot") || !strcmp(arg, "sleep")) {
//libnickel 4.13.12638 * _ZN22N3PowerWorkflowManager14sharedInstanceEv //libnickel 4.13.12638 * _ZN22N3PowerWorkflowManager14sharedInstanceEv
N3PowerWorkflowManager *(*N3PowerWorkflowManager_sharedInstance)(); N3PowerWorkflowManager *(*N3PowerWorkflowManager_sharedInstance)();
reinterpret_cast<void*&>(N3PowerWorkflowManager_sharedInstance) = dlsym(RTLD_DEFAULT, "_ZN22N3PowerWorkflowManager14sharedInstanceEv"); reinterpret_cast<void*&>(N3PowerWorkflowManager_sharedInstance) = dlsym(RTLD_DEFAULT, "_ZN22N3PowerWorkflowManager14sharedInstanceEv");
@@ -484,6 +484,14 @@ NM_ACTION_(power) {
N3PowerWorkflowManager_reboot(pwm); N3PowerWorkflowManager_reboot(pwm);
return nm_action_result_toast("Rebooting..."); return nm_action_result_toast("Rebooting...");
} else if (!strcmp(arg, "sleep")) {
//libnickel 4.13.12638 * _ZN22N3PowerWorkflowManager12requestSleepEv
void (*N3PowerWorkflowManager_requestSleep)(N3PowerWorkflowManager*);
reinterpret_cast<void*&>(N3PowerWorkflowManager_requestSleep) = dlsym(RTLD_DEFAULT, "_ZN22N3PowerWorkflowManager12requestSleepEv");
NM_CHECK(nullptr, N3PowerWorkflowManager_requestSleep, "could not dlsym N3PowerWorkflowManager::requestSleep");
N3PowerWorkflowManager_requestSleep(pwm);
return nm_action_result_silent();
} }
} else { } else {
NM_ERR_RET(nullptr, "unknown power action '%s'", arg); NM_ERR_RET(nullptr, "unknown power action '%s'", arg);