1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#include <stdio.h>
#include <string.h>
#include "block.h"
#define DIR "/sys/class/power_supply/BAT0"
#define EN DIR"/energy_now"
#define EF DIR"/energy_full"
#define ST DIR"/status"
FILE *en;
FILE *ef;
FILE *st;
int c, state, bat_delay = 6;
float en_n, ef_n;
float p;
char pch[13], icon[5];
void battery(void) {
if (bat_delay++ < 6) goto show_stat;
else bat_delay = 0;
if (!en) en = fopen(EN,"r");
if (!ef) ef = fopen(EF,"r");
if (!st) st = fopen(ST,"r");
if (en && ef && st) {
rewind(en);
rewind(ef);
rewind(st);
en_n = ef_n = 0;
while((c = fgetc(en)) != '\n')
en_n = 10 * en_n + (c - '0');
while((c = fgetc(ef)) != '\n')
ef_n = 10 * ef_n + (c - '0');
p = en_n * 100 / ef_n;
state = fgetc(st);
switch(state) {
case 'N': strncpy(icon,"",4); break;
case 'C': strncpy(icon,"",5); break;
case 'D': if (p > 0 && p <= 10) strncpy(icon," ",5);
else if (p > 10 && p <= 30) strncpy(icon," ",5);
else if (p > 30 && p <= 50) strncpy(icon," ",5);
else if (p > 50 && p <= 79) strncpy(icon," ",5);
else if (p > 79) strncpy(icon," ",5);
} snprintf(pch,13,"%s %02.2f%%",icon,p);
}
show_stat:
if (state == 'D')
block(pch,"#222222","#83a59899","#83a59899");
else if (p < 30)
block(pch,"#222222","#ea544399","#ea544399");
else if (state == 'N' || state == 'C')
block(pch,"#222222","#dfb24999","#dfb24999");
}
|