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