Well, there are two other options:
1) Adding the ability to do BASE_CUSTOM for FT_FLOAT and FT_DOUBLE
2) Declaring as FT_[U]INT32 with BASE_CUSTOM, and do the type punning in
the custom function, as done in
tvb_get_nttohieee_float() in tvbuff.c for when FT_FLOAT is used anyway. For
bonus points, implement (or export
and make no longer static) get_ieee_float() in the same that exists for
VAXen and other non IEEE754 floating point
machines where simple type punning won't work.

John Thacker



On Mon, Jul 6, 2020 at 5:51 PM Jaap Keuter <jaap.keu...@xs4all.nl> wrote:

> Hi,
>
> So, you want to keep this function call:
>
> proto_tree_add_item(wgs84_tree, hf_conf_pmu_lat, tvb, offset, 4,
> ENC_BIG_ENDIAN);
>
> with this header field definition:
>
> { &hf_conf_pmu_lat, { "PMU Latitude", "synphasor.conf.pmu_latitude",
> FT_FLOAT,
>     BASE_NONE | BASE_UNIT_STRING, &units_degree_degrees, 0x0, NULL, HFILL
> }}
>
> but have it output "*Unspecified Location*" in case the value is +/-
> infinity.
>
> Unfortunately the use of BASE_CUSTOM is not available for FT_FLOAT, so I
> see no other way than this:
>
> if (isinf(pmu_lat)) {
>     proto_tree_add_float_format_value(wgs84_tree, hf_conf_pmu_lat_unknown,
> tvb, offset, 4, INFINITY, unspecified_location);
> } else {
>     proto_tree_add_item(wgs84_tree, hf_conf_pmu_lat, tvb, offset, 4,
> ENC_BIG_ENDIAN);
> }
>
> and these header field definitions:
>
> { &hf_conf_pmu_lat_unknown, { "PMU Latitude",
> "synphasor.conf.pmu_latitude", FT_FLOAT,
>     BASE_NONE, NULL, 0x0, NULL, HFILL }}
> { &hf_conf_pmu_lat, { "PMU Latitude", "synphasor.conf.pmu_latitude",
> FT_FLOAT,
>     BASE_NONE | BASE_UNIT_STRING, &units_degree_degrees, 0x0, NULL, HFILL
> }}
>
> Now at least the field abbrev "synphasor.conf.pmu_latitude" has a
> constant type FT_FLOAT.
>
> I hope I got this right.
> Jaap
>
>
> On 7/6/20 10:12 PM, Елисеев Дмитрий Алексеевич wrote:
>
> Hello, Jaap Keuter!
> I made some fast cheks and need some help.
> I need some function like:
>
>
> *proto_tree_add_item(wgs84_tree, hf_conf_pmu_lat, tvb, offset, 4,
> ENC_BIG_ENDIAN); { &hf_conf_pmu_lat, { "PMU Latitude",
> "synphasor.conf.pmu_latitude", FT_FLOAT, *
> *          BASE_NONE | BASE_UNIT_STRING, &units_degree_degrees, 0x0, NULL,
> HFILL }}*
>
> witch replace Infinity with text: "*Unspecified Location*"
>
> С уважением,
> Дмитрий Елисеев
> *инженер*
> сектора испытаний систем управления и автоматики
> АО «НТЦ ЕЭС»
> т: 29-29-499 доб. 214
> a: ул. Курчатова, д. 1, лит.А , Санкт-Петербург, Россия, 194223
> e: elis...@ntcees.ru
>
>
> * От: * Jaap Keuter <jaap.keu...@xs4all.nl> <jaap.keu...@xs4all.nl>
> * Кому: * Dmitriy Eliseev <elisee...@ntcees.ru> <elisee...@ntcees.ru>,
> Developer support list for Wireshark <wireshark-dev@wireshark.org>
> <wireshark-dev@wireshark.org>
> * Отправлено: * 06.07.2020 19:10
> * Тема: * Issues in synphasor dissector
>
> Hi Dmitriy,
>
> There are still some issues with the synphasor dissector. There are a
> number of fields with the same field abbreviation, but incompatible type.
> These are lines from the 'conflict check' run by the buildbot:
>
> 'synphasor.conf.chnam_len' exists multiple times with NOT compatible
> types: FT_STRING and FT_UINT8
> 'synphasor.conf.phasor_flags' exists multiple times with NOT compatible
> types: FT_UINT16 and FT_BOOLEAN
> 'synphasor.conf.pmu_latitude' exists multiple times with NOT compatible
> types: FT_STRING and FT_FLOAT
> 'synphasor.conf.pmu_longitude' exists multiple times with NOT compatible
> types: FT_STRING and FT_FLOAT
> 'synphasor.conf.pmu_elevation' exists multiple times with NOT compatible
> types: FT_STRING and FT_FLOAT
>
>
> https://buildbot.wireshark.org/petri-dish/builders/Ubuntu%20Petri%20Dish%20x64/builds/12010/steps/conflict%20check/logs/stdio
>
> You seem to be knowledgeable about this protocol and dissector. Would you
> be able to address these reported issues?
>
> Thanks,
> Jaap
>
>
> ___________________________________________________________________________
> 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