status-temp/temp.c
changeset 12 ae09261c22e3
equal deleted inserted replaced
11:ad3d40f11f6d 12:ae09261c22e3
       
     1 #include <stdio.h>
       
     2 #include <stdlib.h>
       
     3 #include <math.h>
       
     4 
       
     5 #include <sys/types.h>
       
     6 #include <sys/stat.h>
       
     7 #include <fcntl.h>
       
     8 #include <assert.h>
       
     9 #include <string.h>
       
    10 #include <limits.h>
       
    11 #include <unistd.h>
       
    12 #include <errno.h>
       
    13 
       
    14 #include "config.h"
       
    15 
       
    16 
       
    17 int catint(char *name) {
       
    18     FILE* f = fopen(name, "r");
       
    19     int i = 0;
       
    20     if (fscanf(f, "%d", &i) != 1)
       
    21         i = -1;
       
    22     fclose(f);
       
    23     return i;
       
    24 }
       
    25 
       
    26 char *color_stop;
       
    27 char *color_red;
       
    28 char *color_orange;
       
    29 char *color_green;
       
    30 char *color_none;
       
    31 
       
    32 char *color(int low,int mid,int rev,int value) {
       
    33     if (value>mid) {
       
    34         return rev ? color_red : color_green;
       
    35     } else if (value>low) {
       
    36         return color_orange;
       
    37     }
       
    38     return rev ? color_green : color_red;
       
    39 }
       
    40 
       
    41 int main(int argc, char *argv[]) {
       
    42     if (argc<=2) {
       
    43         fprintf(stderr, "Usage: %s <term|pango> <sensor1> [sensor2] ...\n", argv[0]);
       
    44         fflush(stderr);
       
    45         return 1;
       
    46     }
       
    47 
       
    48     char *color;
       
    49     if (!strcmp(argv[1],"term")) {
       
    50         color_stop = "\x1b[0m";
       
    51         color_red = "\x1b[1;31m";
       
    52         color_green = "\x1b[1;32m";
       
    53         color_orange = "\x1b[1;33m";
       
    54         color_none = color_stop;
       
    55     } else if (!strcmp(argv[1],"pango")) {
       
    56         color_stop = "</span>";
       
    57         color_red = "<span color='#f33'>";
       
    58         color_green = "<span color='#0f0'>";
       
    59         color_orange = "<span color='#fa0'>";
       
    60         color_none = "<span>";
       
    61     } else {
       
    62         color_stop = color_red = color_green = color_orange = color_none = "";
       
    63     }
       
    64 
       
    65     int sleeptime = UPDATE_PERIOD;
       
    66     int alertflash = 1;
       
    67     while (1) {
       
    68         int i;
       
    69         int maxtemp = 0;
       
    70         for (i=2;i<argc;i++) {
       
    71             int temp = catint(argv[i]);
       
    72             if (temp > maxtemp)
       
    73                 maxtemp = temp;
       
    74         }
       
    75 
       
    76         float ctemp = maxtemp/1000;
       
    77 
       
    78         if (ctemp <= GREEN_VALUE)
       
    79             color = color_green;
       
    80         else if (ctemp >= RED_VALUE)
       
    81             color = color_red;
       
    82         else if (ctemp >= ORANGE_VALUE)
       
    83             color = color_orange;
       
    84         else
       
    85             color = color_none;
       
    86 
       
    87 #ifdef FLASH_AFTER
       
    88         if (ctemp >= FLASH_AFTER) {
       
    89             sleeptime = 1;
       
    90             alertflash = !alertflash;
       
    91         } else {
       
    92             sleeptime = UPDATE_PERIOD;
       
    93             alertflash = 1;
       
    94         }
       
    95 #endif
       
    96         if (alertflash) {
       
    97             printf("%s%2.1f%s\n",color, ctemp, color_stop);
       
    98         } else {
       
    99             int len = snprintf(NULL, 0, "%2.1f", ctemp);
       
   100             for (i=0; i<len; i++)
       
   101                 printf(" ");
       
   102             printf("\n");
       
   103         }
       
   104         fflush(stdout);
       
   105         sleep(sleeptime);
       
   106     }
       
   107 }