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

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

 



On 04/07/15 14:38, Hartmut Knaack wrote:
> 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>
Applied to the togreg branch of iio.git.

Thanks,

Jonathan
>> ---
>> 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
> 

--
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