#include <stdio.h>
#include <unistd.h>

int main(int argc, char* argv[]) {
    if (argc != 6) {
        fprintf(stderr, 
        "Usage: brightact /sys/.../brightness delta delay1 delay2 /sys/power/wait_for_fb_sleep\n"
        );
        return 1;
    }
    
    const char* fname = argv[1];
    int delta = atoi(argv[2]);
    int delay1 = atoi(argv[3]);
    int delay2 = atoi(argv[4]);
    const char* wffbsn = argv[5];
    FILE *f;
    int b;
    
    for(;;) {
        f = fopen(fname, "r");
        if(!f) { perror("fopen"); return 2; }
        fscanf(f, "%d", &b);
        fclose(f);
        
        b+=delta;
        if (b>255) b=255;
        
        f=fopen(fname, "w"); fprintf(f, "%d", b); fclose(f);
        
        usleep(delay1);
        
        f = fopen(fname, "r"); fscanf(f, "%d", &b); fclose(f);
        
        b-=delta;
        if (b<0) b=0;
        f=fopen(fname, "w"); fprintf(f, "%d", b); fclose(f);
        
        usleep(delay2); 
     
        f = fopen(wffbsn, "r"); if(!f) { perror("fopen"); return 2; }
        fscanf(f, "%*s");
        fclose(f);
    }    
}