summaryrefslogtreecommitdiff
path: root/xfce4-sensors-plugin/lm_sensors3x.patch
blob: d457f43ffece2f7d22f46dc20687c732e6b83bd7 (plain)
    1 diff -up xfce4-sensors-plugin-0.10.99.2/panel-plugin/middlelayer.c.lmsens3x xfce4-sensors-plugin-0.10.99.2/panel-plugin/middlelayer.c
    2 --- xfce4-sensors-plugin-0.10.99.2/panel-plugin/middlelayer.c.lmsens3x	2007-10-28 16:21:52.000000000 +0100
    3 +++ xfce4-sensors-plugin-0.10.99.2/panel-plugin/middlelayer.c	2007-11-23 22:58:34.000000000 +0100
    4 @@ -110,6 +110,7 @@ refresh_all_chips (GPtrArray *chips )
    5  }
    6  
    7  
    8 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
    9  void
   10  categorize_sensor_type (t_chipfeature* chipfeature)
   11  {
   12 @@ -141,7 +142,7 @@ categorize_sensor_type (t_chipfeature* c
   13  
   14     TRACE ("leaves categorize_sensor_type");
   15  }
   16 -
   17 +#endif
   18  
   19  int
   20  sensors_get_feature_wrapper (t_chip *chip, int number, double *value)
   21 @@ -153,7 +154,11 @@ sensors_get_feature_wrapper (t_chip *chi
   22  
   23      if (chip->type==LMSENSOR ) {
   24          #ifdef HAVE_LIBSENSORS
   25 -            return sensors_get_feature (*(chip->chip_name), number, value);
   26 +            #if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
   27 +                return sensors_get_feature (*(chip->chip_name), number, value);
   28 +            #else
   29 +                return sensors_get_value (chip->chip_name, number, value);
   30 +            #endif
   31          #else
   32              return -1;
   33          #endif
   34 diff -up xfce4-sensors-plugin-0.10.99.2/panel-plugin/lmsensors.c.lmsens3x xfce4-sensors-plugin-0.10.99.2/panel-plugin/lmsensors.c
   35 --- xfce4-sensors-plugin-0.10.99.2/panel-plugin/lmsensors.c.lmsens3x	2007-10-20 19:40:40.000000000 +0200
   36 +++ xfce4-sensors-plugin-0.10.99.2/panel-plugin/lmsensors.c	2007-11-23 22:59:15.000000000 +0100
   37 @@ -47,12 +47,28 @@ t_chip *setup_chip (GPtrArray *chips, co
   38      chip->chip_name = (sensors_chip_name *) g_malloc (sizeof(sensors_chip_name));
   39      memcpy ( (void *) (chip->chip_name), (void *) name, sizeof(sensors_chip_name) );
   40  
   41 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
   42      chip->sensorId = g_strdup_printf ("%s-%x-%x", name->prefix, name->bus, name->addr);
   43 +#else
   44 +    switch (name->bus.type) {
   45 +        case SENSORS_BUS_TYPE_I2C:
   46 +        case SENSORS_BUS_TYPE_SPI:
   47 +            chip->sensorId = g_strdup_printf ("%s-%x-%x", name->prefix,
   48 +                                              name->bus.nr, name->addr);
   49 +            break;
   50 +        default:
   51 +            chip->sensorId = g_strdup_printf ("%s-%x", name->prefix, name->addr);
   52 +    }
   53 +#endif
   54      chip->num_features=0;
   55      chip->name = g_strdup (_("LM Sensors"));
   56      chip->chip_features = g_ptr_array_new();
   57  
   58 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
   59      chip->description = g_strdup (sensors_get_adapter_name (num_sensorchips-1));
   60 +#else
   61 +    chip->description = g_strdup (sensors_get_adapter_name (&name->bus));
   62 +#endif
   63  
   64      TRACE("leaves setup_chip");
   65  
   66 @@ -71,14 +87,23 @@ void setup_chipfeature (t_chipfeature *c
   67      chipfeature->address = number;
   68      chipfeature->show = FALSE;
   69  
   70 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
   71      categorize_sensor_type (chipfeature);
   72 +#endif
   73  
   74      TRACE("leaves setup_chipfeature");
   75  }
   76  
   77  
   78 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
   79  t_chipfeature *find_chipfeature    (const sensors_chip_name *name, t_chip *chip, int number)
   80  {
   81 +#else
   82 +t_chipfeature *find_chipfeature    (const sensors_chip_name *name, t_chip *chip, const sensors_feature *feature)
   83 +{
   84 +    const sensors_subfeature *sub_feature = NULL;
   85 +    int number = -1;
   86 +#endif
   87      int res;
   88      double sensorFeature;
   89      t_chipfeature *chipfeature;
   90 @@ -87,6 +112,7 @@ t_chipfeature *find_chipfeature    (cons
   91  
   92      chipfeature = g_new0 (t_chipfeature, 1);
   93  
   94 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
   95      if (sensors_get_ignored (*(name), number)==1) {
   96          res = sensors_get_label(*(name), number,
   97                                  &(chipfeature->name));
   98 @@ -95,6 +121,87 @@ t_chipfeature *find_chipfeature    (cons
   99              res = sensors_get_feature (*(name), number,
  100                                          &sensorFeature);
  101  
  102 +#else /* libsensors 4 code */
  103 +
  104 +    switch (feature->type) {
  105 +    case SENSORS_FEATURE_IN:
  106 +        sub_feature = sensors_get_subfeature(name, feature,
  107 +                                             SENSORS_SUBFEATURE_IN_INPUT);
  108 +        if (!sub_feature)
  109 +            break;
  110 +
  111 +        number = sub_feature->number;
  112 +        chipfeature->class = VOLTAGE;
  113 +        chipfeature->min_value = 2.8;
  114 +        chipfeature->max_value = 12.2;
  115 +
  116 +        if ((sub_feature = sensors_get_subfeature(name, feature,
  117 +                SENSORS_SUBFEATURE_IN_MIN)) &&
  118 +                !sensors_get_value(name, sub_feature->number, &sensorFeature))
  119 +            chipfeature->min_value = sensorFeature;
  120 +
  121 +        if ((sub_feature = sensors_get_subfeature(name, feature,
  122 +                SENSORS_SUBFEATURE_IN_MAX)) &&
  123 +                !sensors_get_value(name, sub_feature->number, &sensorFeature))
  124 +            chipfeature->max_value = sensorFeature;
  125 +
  126 +        break;
  127 +
  128 +    case SENSORS_FEATURE_FAN:
  129 +        sub_feature = sensors_get_subfeature(name, feature,
  130 +                                             SENSORS_SUBFEATURE_FAN_INPUT);
  131 +        if (!sub_feature)
  132 +            break;
  133 +
  134 +        number = sub_feature->number;
  135 +        chipfeature->class = SPEED;
  136 +        chipfeature->min_value = 1000.0;
  137 +        chipfeature->max_value = 3500.0;
  138 +
  139 +        if ((sub_feature = sensors_get_subfeature(name, feature,
  140 +                SENSORS_SUBFEATURE_FAN_MIN)) &&
  141 +                !sensors_get_value(name, sub_feature->number, &sensorFeature))
  142 +            chipfeature->min_value = sensorFeature;
  143 +
  144 +        break;
  145 +
  146 +    case SENSORS_FEATURE_TEMP:
  147 +        sub_feature = sensors_get_subfeature(name, feature,
  148 +                                             SENSORS_SUBFEATURE_TEMP_INPUT);
  149 +        if (!sub_feature)
  150 +            break;
  151 +
  152 +        number = sub_feature->number;
  153 +        chipfeature->class = TEMPERATURE;
  154 +        chipfeature->min_value = 0.0;
  155 +        chipfeature->max_value = 80.0;
  156 +
  157 +        if ((sub_feature = sensors_get_subfeature(name, feature,
  158 +                SENSORS_SUBFEATURE_TEMP_MIN)) &&
  159 +                !sensors_get_value(name, sub_feature->number, &sensorFeature))
  160 +            chipfeature->min_value = sensorFeature;
  161 +
  162 +        if (((sub_feature = sensors_get_subfeature(name, feature,
  163 +                SENSORS_SUBFEATURE_TEMP_MAX)) ||
  164 +                (sub_feature = sensors_get_subfeature(name, feature,
  165 +                SENSORS_SUBFEATURE_TEMP_CRIT))) &&
  166 +                !sensors_get_value(name, sub_feature->number, &sensorFeature))
  167 +            chipfeature->max_value = sensorFeature;
  168 +    }
  169 +
  170 +    if (number != -1) {
  171 +
  172 +        chipfeature->name = sensors_get_label(name, feature);
  173 +
  174 +        if (!chipfeature->name)
  175 +            chipfeature->name = feature->name;
  176 +
  177 +        if (chipfeature->name) {
  178 +            res = sensors_get_value (name, number,
  179 +                                        &sensorFeature);
  180 +
  181 +#endif /* libsensor3 / libsensors4 code */
  182 +
  183              if (res==0) {
  184                  setup_chipfeature (chipfeature, number, sensorFeature);
  185                  chip->num_features++;
  186 @@ -103,6 +210,7 @@ t_chipfeature *find_chipfeature    (cons
  187              }
  188          }
  189      }
  190 +    g_free(chipfeature);
  191  
  192      TRACE("leaves find_chipfeature with null");
  193      return NULL;
  194 @@ -114,8 +222,9 @@ int initialize_libsensors (GPtrArray *ch
  195      int sensorsInit, nr1, nr2, num_sensorchips; /*    , numchips;  */
  196      t_chip *chip;
  197      t_chipfeature *chipfeature; /* , *furtherchipfeature; */
  198 -    FILE *file;
  199      const sensors_chip_name *detected_chip;
  200 +#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
  201 +    FILE *file;
  202      const sensors_feature_data *sfd;
  203  
  204      TRACE("enters initialize_libsensors");
  205 @@ -167,6 +276,45 @@ int initialize_libsensors (GPtrArray *ch
  206          TRACE ("leaves initialize_libsensors with -1");
  207          return -1;
  208      }
  209 +#else
  210 +    const sensors_feature *sfd;
  211 +    TRACE("enters initialize_libsensors");
  212 +    
  213 +    sensorsInit = sensors_init(NULL);
  214 +    if (sensorsInit != 0)
  215 +    {
  216 +        g_printf(_("Error: Could not connect to sensors!"));
  217 +        /* FIXME: better popup window? write to special logfile? */
  218 +        return -2;
  219 +    }
  220 +
  221 +    num_sensorchips = 0;
  222 +    detected_chip = sensors_get_detected_chips (NULL, &num_sensorchips);
  223 +    /* iterate over chips on mainboard */
  224 +    while (detected_chip!=NULL)
  225 +    {
  226 +        chip = setup_chip (chips, detected_chip, num_sensorchips);
  227 +
  228 +        nr1 = 0;
  229 +        nr2 = 0;
  230 +        /* iterate over chip features, i.e. id, cpu temp, mb temp... */
  231 +        /* numchips = get_number_chip_features (detected_chip); */
  232 +        sfd = sensors_get_features (detected_chip, &nr1);
  233 +        while (sfd != NULL)
  234 +        {
  235 +            chipfeature = find_chipfeature (detected_chip, chip, sfd);
  236 +            if (chipfeature!=NULL) {
  237 +                g_ptr_array_add (chip->chip_features, chipfeature);
  238 +            }
  239 +            sfd = sensors_get_features (detected_chip, &nr1);
  240 +        }
  241 +
  242 +        detected_chip = sensors_get_detected_chips (NULL, &num_sensorchips);
  243 +    } /* end while sensor chipNames */
  244 +
  245 +    TRACE ("leaves initialize_libsensors with 1");
  246 +    return 1;
  247 +#endif
  248  }
  249  
  250  

Generated by cgit