Re: [PATCH v2] tools: iio: Add single-byte case for generic_buffer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Resending to see if vger.kernel.org is up again.

Tiberiu Breana schrieb am 03.07.2015 um 11:57:
> Some sensors export data in an 8-bit format.
> Add a single-byte case for the generic_buffer tool so that
> these sensors' buffer data can be visualized.
> 
> Signed-off-by: Tiberiu Breana <tiberiu.a.breana@xxxxxxxxx>
Reviewed-by: Hartmut Knaack <knaack.h@xxxxxx>
> ---
> v2: added the print1byte function to apply the channel shift and
> address both signed and unsigned cases.
> ---
>  tools/iio/generic_buffer.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/tools/iio/generic_buffer.c b/tools/iio/generic_buffer.c
> index fc362d2..0e73723 100644
> --- a/tools/iio/generic_buffer.c
> +++ b/tools/iio/generic_buffer.c
> @@ -61,6 +61,23 @@ int size_from_channelarray(struct iio_channel_info *channels, int num_channels)
>  	return bytes;
>  }
>  
> +void print1byte(uint8_t input, struct iio_channel_info *info)
> +{
> +	/*
> +	 * Shift before conversion to avoid sign extension
> +	 * of left aligned data
> +	 */
> +	input >>= info->shift;
> +	input &= info->mask;
> +	if (info->is_signed) {
> +		int8_t val = (int8_t)(input << (8 - info->bits_used)) >>
> +			     (8 - info->bits_used);
> +		printf("%05f ", ((float)val + info->offset) * info->scale);
> +	} else {
> +		printf("%05f ", ((float)input + info->offset) * info->scale);
> +	}
> +}
> +
>  void print2byte(uint16_t input, struct iio_channel_info *info)
>  {
>  	/* First swap if incorrect endian */
> @@ -152,6 +169,10 @@ void process_scan(char *data,
>  	for (k = 0; k < num_channels; k++)
>  		switch (channels[k].bytes) {
>  			/* only a few cases implemented so far */

Not sure though how long we should keep that comment. ^^^^^
I probably had more reason to get rid of it during my rework.

> +		case 1:
> +			print1byte(*(uint8_t *)(data + channels[k].location),
> +				   &channels[k]);
> +			break;
>  		case 2:
>  			print2byte(*(uint16_t *)(data + channels[k].location),
>  				   &channels[k]);
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux