I am coding an SNMP Agent. I need to send values that have a decimal point to an SNMP Manager.
I have a couple options:
If I truncate the number I lose a lot of information that I need.
If I multiply by a constant, then the manager will display strange units that the end-user would rather not see. (grams instead of kilograms).
So, I'm doing option 3. What do I do?
The usual, standard way this is done is to define a TEXTUAL-CONVENTION with an integral type (such as Integer32 or Unsigned32) and a DISPLAY-HINT with "d-N" format, where N is the number of places the decimal should be shifted for display purposes.
Thus, for a value with a single decimal place ranging from (say) 0.0 to 10.0, you would use a TEXTUAL-CONVENTION of type Unsigned32(0..100) and a DISPLAY-HINT of "d-1". On the wire, the value ranges from 0 to 100, but the manager (by way of the MIB module being loaded) will shift the decimal one place to display a range of 0.0 to 10.0.
Other ways of doing it are not conducive to interoperability.