X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fbarometer.c;h=c5e7f77b09380acdb31631d3c237cb71fc71013c;hb=53310b4899f08f496082c93726921f7a542390e5;hp=0fa9a33e551f0a558b0eb4996a14d7d45fd120c7;hpb=db3d3a96fef68c440bd66d31445404c05e263dc0;p=collectd.git diff --git a/src/barometer.c b/src/barometer.c index 0fa9a33e..c5e7f77b 100644 --- a/src/barometer.c +++ b/src/barometer.c @@ -253,11 +253,9 @@ static averaging_t temperature_averaging = { NULL, 0, 0L, 0 }; * * @return Zero when successful */ -static int averaging_create(averaging_t * avg, int size) +static int averaging_create(averaging_t *avg, int size) { - int a; - - avg->ring_buffer = (long int *) malloc(size * sizeof(*avg)); + avg->ring_buffer = calloc ((size_t) size, sizeof (*avg->ring_buffer)); if (avg->ring_buffer == NULL) { ERROR ("barometer: averaging_create - ring buffer allocation of size %d failed", @@ -265,11 +263,6 @@ static int averaging_create(averaging_t * avg, int size) return -1; } - for (a=0; aring_buffer[a] = 0L; - } - avg->ring_buffer_size = size; avg->ring_buffer_sum = 0L; avg->ring_buffer_head = 0; @@ -414,7 +407,7 @@ static int get_reference_temperature(double * result) gauge_t * values = NULL; /**< rate values */ size_t values_num = 0; /**< number of rate values */ - int i; + size_t i; gauge_t values_history[REF_TEMP_AVG_NUM]; @@ -454,9 +447,8 @@ static int get_reference_temperature(double * result) for(i=0; inum_values; ++i) { - DEBUG ("barometer: get_reference_temperature - history %d: %lf", - i, - values_history[i]); + DEBUG ("barometer: get_reference_temperature - history %zu: %lf", + i, values_history[i]); if(!isnan(values_history[i])) { avg_sum += values_history[i]; @@ -510,9 +501,8 @@ static int get_reference_temperature(double * result) for(i=0; i0) @@ -763,8 +753,8 @@ static int MPL115_read_averaged(double * pressure, double * temperature) { res = i2c_smbus_read_i2c_block_data(i2c_bus_fd, MPL115_ADDR_CONV, - MPL115_NUM_CONV, - mpl115_conv); + STATIC_ARRAY_SIZE (mpl115_conv), + mpl115_conv); if (res >= 0) break; @@ -784,7 +774,7 @@ static int MPL115_read_averaged(double * pressure, double * temperature) return -1; } } - + conv_pressure = ((mpl115_conv[0] << 8) | mpl115_conv[1]) >> 6; conv_temperature = ((mpl115_conv[2] << 8) | mpl115_conv[3]) >> 6; DEBUG ("barometer: MPL115_read_averaged, raw pressure ADC value = %d, " \ @@ -803,7 +793,7 @@ static int MPL115_read_averaged(double * pressure, double * temperature) adc_temperature, *pressure, *temperature); - + return 0; } @@ -1409,10 +1399,6 @@ static double abs_to_mean_sea_level_pressure(double abs_pressure) double temp = 0.0; int result = 0; - DEBUG ("barometer: abs_to_mean_sea_level_pressure: absPressure = %lf, method = %d", - abs_pressure, - config_normalize); - if (config_normalize >= MSLP_DEU_WETT) { result = get_reference_temperature(&temp); @@ -1430,7 +1416,7 @@ static double abs_to_mean_sea_level_pressure(double abs_pressure) case MSLP_INTERNATIONAL: mean = abs_pressure / \ - pow(1.0 - 0.0065*config_altitude/288.15, 0.0065*0.0289644/(8.31447*0.0065)); + pow(1.0 - 0.0065*config_altitude/288.15, 9.80665*0.0289644/(8.31447*0.0065)); break; case MSLP_DEU_WETT: @@ -1453,6 +1439,11 @@ static double abs_to_mean_sea_level_pressure(double abs_pressure) break; } + DEBUG ("barometer: abs_to_mean_sea_level_pressure: absPressure = %lf hPa, method = %d, meanPressure = %lf hPa", + abs_pressure, + config_normalize, + mean); + return mean; }