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