diff options
| author | Inqiyad Sabr <sabr@ariamath.xyz> | 2025-10-20 11:55:26 +0600 |
|---|---|---|
| committer | Inqiyad Sabr <sabr@ariamath.xyz> | 2025-10-20 11:55:26 +0600 |
| commit | 658b660be1c6bd0eb2b75d51de36422a2a306dc8 (patch) | |
| tree | 2643d593fd2c502e1b62332b1694b43bb605a333 /battery.c | |
| parent | ea5380fccb9f962203726540d69cb490048de7c0 (diff) | |
Changed every global variable to explicit variables
Diffstat (limited to 'battery.c')
| -rw-r--r-- | battery.c | 80 |
1 files changed, 38 insertions, 42 deletions
@@ -1,49 +1,45 @@ #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]; +#define BATDIR "/sys/class/power_supply/BAT0" +#define bat_val(f, n)\ + while((c = fgetc(f)) != '\n') n = 10 * n + (c - '0') +#define bat_open(f,F) if (!f) f = fopen(BATDIR"/"F,"r") +#define EN fenergy_now +#define EF fenergy_full +#define ST fbat_status +FILE *EN, *EF, *ST; +float bat_p; +int bat_state, bat_delay = 6; +char bat_str[13]; 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); + bat_open(EN,"energy_now"); + bat_open(EF,"energy_full"); + bat_open(ST,"status"); + if (fenergy_now) { + int c, en_n, ef_n; + 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"); + bat_val(fenergy_now, en_n); + bat_val(fenergy_full, ef_n); + bat_p = (float)en_n * 100 / ef_n; + char *icon; + bat_state = fgetc(fbat_status); + switch(bat_state) { + case 'N': icon = ""; break; + case 'C': icon = ""; break; + case 'D': if (bat_p > 79) icon = " "; + else if (bat_p > 50) icon = " "; + else if (bat_p > 30) icon = " "; + else if (bat_p > 10) icon = " "; + else icon = " "; + } snprintf(bat_str,13,"%s %02.2f%%",icon,bat_p); + } show_stat: + if (bat_state == 'D' && bat_p >= 30) + block(bat_str,"#222222","#83a59899","#83a59899"); + else if (bat_p < 30) + block(bat_str,"#222222","#ea544399","#ea544399"); + else if (bat_state == 'N' || bat_state == 'C') + block(bat_str,"#222222","#dfb24999","#dfb24999"); } |