xref: /haiku/src/bin/dpms.cpp (revision 21258e2674226d6aa732321b6f8494841895af5f)
1 /*
2  * dpms CLI tool
3  * (c) François Revol, revol@free.fr
4  */
5 
6 #include <stdio.h>
7 #include <string.h>
8 #include <Application.h>
9 #include <Accelerant.h>
10 #include <Screen.h>
11 
12 int usage(char *prog)
13 {
14 	printf("%s on|standby|suspend|off|caps|state\n", prog);
15 	printf("on|standby|suspend|off\tsets corresponding state\n");
16 	printf("caps\tprints capabilities\n");
17 	printf("state\tprints the current state\n");
18 	return 1;
19 }
20 
21 int main(int argc, char **argv)
22 {
23 	BApplication app("application/x-vnd.Haiku.dpms");
24 	BScreen bs;
25 	if (argc < 2)
26 		return usage(argv[0]);
27 	if (!strcmp(argv[1], "on"))
28 		bs.SetDPMS(B_DPMS_ON);
29 	else if (!strcmp(argv[1], "standby"))
30 		bs.SetDPMS(B_DPMS_STAND_BY);
31 	else if (!strcmp(argv[1], "suspend"))
32 		bs.SetDPMS(B_DPMS_SUSPEND);
33 	else if (!strcmp(argv[1], "off"))
34 		bs.SetDPMS(B_DPMS_OFF);
35 	else if (!strcmp(argv[1], "caps")) {
36 		uint32 caps = bs.DPMSCapabilites(); // nice typo...
37 		printf("dpms capabilities: %s%s%s%s\n", (caps & B_DPMS_ON)?("on"):(""),
38 							(caps & B_DPMS_STAND_BY)?(", standby"):(""),
39 							(caps & B_DPMS_SUSPEND)?(", suspend"):(""),
40 							(caps & B_DPMS_OFF)?(", off"):(""));
41 	} else if (!strcmp(argv[1], "state")) {
42 		uint32 st = bs.DPMSState();
43 		printf("%s\n", (st & B_DPMS_ON)?("on"):
44 				((st & B_DPMS_STAND_BY)?("standby"):
45 				 ((st & B_DPMS_SUSPEND)?("suspend"):
46 				  ((st & B_DPMS_OFF)?("off"):("?")))));
47 	} else
48 		return usage(argv[0]);
49 	return 0;
50 }
51