guhan balasubramanian guhan.sac at gmail.com
Fri Apr 13 12:41:49 AEST 2018

```Hi Tom,

Thanks for the explanation. But I still see some concerns in this
conversion logic.

For input, we have 4 given parameters as
1. Min and Max values of the sensor (y)
2. the Min and Max values of the byte value (x - assuming this is
always 0 to 255).

For output, we have 4 paramters to calculate
1. multiplierM (M)
2. offsetB (B)
3. bExp (k1)
4. rExp (k2)

We have two equations to compute 4 variables in this logic.

On Sat, Mar 10, 2018 at 9:45 AM, Tom Joseph <tomjose at linux.vnet.ibm.com>
wrote:

> Hello Guhan,
> The updated sensor-example.yaml has the Rexp field as well. These values
> are  calculated based on the minimum and maximum value of the sensor.
>
> If a temperature sensor has a range of -127 - +128, means y is -127 to
> +128 and the range of x is 0-255.
> By substituting x = 0 and y = -127 (k2 is the decimal precision and assume
> in this case as whole nos) implies Bexp = -127.
> Similarly substitute x = 255 and y = 128 and M is evaluated as 1.
>

In the above example, with 2 values [(0, -127) and (255, 128)] for (x,y) we
were able to calculate M and B. We are assuming k2 as 0 since we are taking
only whole numbers for our ranges (y values). But we are still assuming the
values for k1 as 0.

>
> Regards,
> Tom
>
>
> On Saturday 10 March 2018 08:01 AM, guhan balasubramanian wrote:
>
> Hi,
>
> According to the IPMI spec, we represent all sensor readings (Volt, Temp,
> Amp, etc.) as 1-byte.
>
> Since we represent them as 1-byte, we use a linearization formula to
> convert to actual value as follows:
>
> y = (M*x + B*10^(k1))*10^(k2)
>
> where x is the 1-byte value that is filled in the get sensor reading
> command.
>
> We see in the ipmitool example on how an example of 3.36 V is represented
> as 1-byte.
> https://computercheese.blogspot.com/2013/10/ipmi-
>
> Can any one please help on how the values for M, B, k1 and k2 are
> populated for each sensor?
>
> In the openbmc repo, I believe these values are present in the config.yaml
> of phosphor-ipmi-sensor-inventory (based on the following sample).
>
> 0xF1:
>   sensorType: 0x01
>   path: /xyz/openbmc_project/sensors/temperature/temp1
>   *multiplierM*: 511
>   *offsetB*: 0
>   *bExp*: 0
>   serviceInterface: org.freedesktop.DBus.Properties
>   interfaces:
>     xyz.openbmc_project.Sensor.Value:
>       Value:
>         Offsets:
>           0x0:
>             type: int64_t
>
> Thanks,
> Guhan
>
> With the given information, do you think there is a generic way
(algorithm) where we can compute all the 4 variables M, B, k1 and k2?

Thanks,
Guhan
-------------- next part --------------
An HTML attachment was scrubbed...