Have you tried defining the field using ProtoField.float
or ProtoField.double?

https://www.wireshark.org/docs/wsdg_html/#lua_class_ProtoField

11.3.7.17. ProtoField.float(abbr, [name], [valuestring], [desc])

11.3.7.18. ProtoField.double(abbr, [name], [valuestring], [desc])

On Mon, Mar 20, 2023 at 11:55 AM Dennis Lambe <den...@sparkcharge.io> wrote:

> I am writing a dissector plugin in Lua, and I'm running into a problem
> with unit strings. I'm new to Wireshark plugins and new to Lua, so I'm
> not 100% sure any of what I'm doing is the right way to do it.
>
> The protocol I'm dissecting contains fields which are transmitted as
> integers, but should be adjusted by a scale and offset which may be
> ints or floats. I want them displayed with unit strings. This works as
> I expect it to with INT or UINT fields, but not with FLOAT or DOUBLE
> fields.
>
> When I create a new ProtoField with an INT or UINT type and include a
> unit string, and then add a computed value to the tree, the unit
> string appears after the value in the Packet Detail pane and in
> columns created with Apply as Column, as I would expect.
>
> ```lua
> field_PECCLimits1_limitPowerMax = ProtoField.new(
>     "limitPowerMax", "pecclimits1.limitpowermax",
>     ftypes.UINT24, {" W"}, bit.bor(base.DEC, base.UNIT_STRING), nil, ""
> )
> -- ... then, in the dissector
>     local item = subtree:add(field_PECCLimits1_limitPowerMax, range(4,
> 2), value)
> ```
>
> However, when I do the same thing with a FLOAT or DOUBLE ProtoField,
> the value appears in the Packet Detail pane and in columns *without*
> the unit string appended.
>
> ```lua
> field_PECCLimits1_limitVoltageMax = ProtoField.new(
>     "limitVoltageMax", "pecclimits1.limitvoltagemax",
>     ftypes.DOUBLE, {" V"}, base.UNIT_STRING, nil, ""
> )
> -- ... then, in the dissector
>    local item = subtree:add(field_PECCLimits1_limitVoltageMax,
> range(2, 2), value)
> ```
>
> I can see from the output of `tshark -G values` that the unit strings
> are successfully associated with the fields, but they aren't showing
> up in the UI.
> U       pecclimits1.limitvoltagemax      V      (no plural)
> U       pecclimits1.limitpowermax        W      (no plural)
>
> I've attached a complete working example of code that demonstrates
> these symptoms, a packet that can be dissected using it, and a
> screenshot of what I'm seeing.
>
> Wireshark Version 4.0.4 (v4.0.4-0-gea14d468d9ca) with Lua 5.2.4.
>
> Can anybody shed some light on this mystery?
>
> Thanks
> --
> Dennis Lambe (He/Him)
> Lead Firmware Engineer
> sparkcharge.io
> ___________________________________________________________________________
> Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
> Archives:    https://www.wireshark.org/lists/wireshark-dev
> Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
>              mailto:wireshark-dev-requ...@wireshark.org
> ?subject=unsubscribe
>
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

Reply via email to