Linux IIO development
 help / color / mirror / Atom feed
From: Javier Carrasco <javier.carrasco.cruz@gmail.com>
To: Christophe JAILLET <christophe.jaillet@wanadoo.fr>,
	dima.fedrau@gmail.com
Cc: 579lpy@gmail.com, jic23@kernel.org, lars@metafoo.de,
	linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] iio: humidity: hdc3020: add threshold events support
Date: Sat, 3 Feb 2024 11:06:02 +0100	[thread overview]
Message-ID: <b789eb01-5b5d-4513-88d2-1f14e95969d9@gmail.com> (raw)
In-Reply-To: <236dc9db-8525-413e-a77b-54df198c86f5@wanadoo.fr>

On 03.02.24 10:58, Christophe JAILLET wrote:
> Le 03/02/2024 à 10:05, Dimitri Fedrau a écrit :
>> Add threshold events support for temperature and relative humidity. To
>> enable them the higher and lower threshold registers must be programmed
>> and the higher threshold must be greater then or equal to the lower
>> threshold. Otherwise the event is disabled. Invalid hysteresis values
>> are ignored by the device. There is no further configuration possible.
>>
>> Tested by setting thresholds/hysteresis and turning the heater on/off.
>> Used iio_event_monitor in tools/iio to catch events while constantly
>> displaying temperature and humidity values.
>> Threshold and hysteresis values are cached in the driver, used i2c-tools
>> to read the threshold and hysteresis values from the device and make
>> sure cached values are consistent to values written to the device.
>>
>> Based on Fix:
>> a69eeaad093d "iio: humidity: hdc3020: fix temperature offset" in branch
>> fixes-togreg
>>
>> Signed-off-by: Dimitri Fedrau
>> <dima.fedrau-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>> ---
>>   drivers/iio/humidity/hdc3020.c | 339 +++++++++++++++++++++++++++++++++
>>   1 file changed, 339 insertions(+)

...

>> +    guard(mutex)(&data->lock);
>> +    switch (chan->type) {
>> +    case IIO_TEMP:
>> +        /*
>> +         * Store truncated temperature threshold into 9 LSBs while
>> +         * keeping the old humidity threshold in the 7 MSBs.
>> +         */
>> +        val = (((val + 45) * 65535 / 175) >> HDC3020_THRESH_TEMP_SHIFT);
> 
> Why 175?
> If the span is -40/+120, I guess it should be 160 and if it is -45/+120,
> 165. No?
> 
> Maybe something like:
>   #define MIN_TEMP -45 (or -40)
>   #define MAX_TEMP 120
> in order to avoid hard coded constant?
> 

the 45 and 175 values come from the conversion formula provided in the
datasheet (page 13), even though the sensor range is from –40°C to 125°C.

>> +        val &= HDC3020_THRESH_TEMP_MASK;
>> +        val |= (*thresh & HDC3020_THRESH_HUM_MASK);
>> +        break;
>> +    case IIO_HUMIDITYRELATIVE:
>> +        /*
>> +         * Store truncated humidity threshold into 7 MSBs while
>> +         * keeping the old temperature threshold in the 9 LSBs.
>> +         */
>> +        val = ((val * 65535 / 100) & HDC3020_THRESH_HUM_MASK);
>> +        val |= (*thresh & HDC3020_THRESH_TEMP_MASK);
>> +        break;
>> +    default:
>> +        return -EOPNOTSUPP;
>> +    }
>> +
>> +    put_unaligned_be16(val, &buf[2]);
>> +    buf[4] = crc8(hdc3020_crc8_table, buf + 2, 2, CRC8_INIT_VALUE);
>> +    ret = hdc3020_write_bytes(data, buf, 5);
>> +    if (ret)
>> +        return ret;
>> +
>> +    /* Update threshold */
>> +    *thresh = val;
>> +
>> +    return 0;
>> +}
> 
> CJ
> 

Best regards,
Javier Carrasco

  reply	other threads:[~2024-02-03 10:06 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-03  9:05 [PATCH] iio: humidity: hdc3020: add threshold events support Dimitri Fedrau
2024-02-03  9:30 ` Javier Carrasco
2024-02-03 14:42   ` Dimitri Fedrau
2024-02-03 15:53     ` Javier Carrasco
2024-02-03 16:08       ` Dimitri Fedrau
2024-02-03  9:58 ` Christophe JAILLET
2024-02-03 10:06   ` Javier Carrasco [this message]
2024-02-03 14:54     ` Dimitri Fedrau
2024-02-03 14:47   ` Dimitri Fedrau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b789eb01-5b5d-4513-88d2-1f14e95969d9@gmail.com \
    --to=javier.carrasco.cruz@gmail.com \
    --cc=579lpy@gmail.com \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=dima.fedrau@gmail.com \
    --cc=jic23@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox