.. _program_listing_file__tmp_ws_src_ublox_dgnss_ublox_dgnss_node_include_ublox_dgnss_node_ubx_ubx_cfg_item.hpp: Program Listing for File ubx_cfg_item.hpp ========================================= |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/ublox_dgnss/ublox_dgnss_node/include/ublox_dgnss_node/ubx/ubx_cfg_item.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // Copyright 2021 Australian Robotics Supplies & Technology // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef UBLOX_DGNSS_NODE__UBX__UBX_CFG_ITEM_HPP_ #define UBLOX_DGNSS_NODE__UBX__UBX_CFG_ITEM_HPP_ #include #include #include #include #include #include "ublox_dgnss_node/ubx/ubx_types.hpp" #include "ublox_dgnss_node/ubx/ubx.hpp" namespace ubx::cfg { size_t storage_size_bytes(u8_t storage_size_id) { size_t size = 0; switch (storage_size_id) { case 0x01: size = 1; break; case 0x02: size = 1; break; case 0x03: size = 2; break; case 0x04: size = 4; break; case 0x05: size = 8; break; default: size = 0; } return size; } union ubx_key_id_t { u4_t all; struct ubx_key_id_bit_t { u2_t item_id : 12; u1_t reserved2 : 4; u1_t group_id : 8; u1_t reserverd1 : 4; u1_t storage_size_id : 3; u1_t reserved0 : 1; } bits; u4_t key_id() { return all; } u1_t storage_size_id() { return bits.storage_size_id; } u1_t group_id() { return bits.group_id; } u2_t item_id() { return bits.item_id; } // actually 12 bits size_t storage_size() { return storage_size_bytes(bits.storage_size_id); } std::string to_hex() { std::ostringstream oss; oss << "0x" << std::setfill('0') << std::setw(8) << std::right << std::hex << +all; return oss.str(); } }; struct key_value_t { ubx_key_id_t ubx_key_id; value_t ubx_value; }; enum ubx_unit_t { NA, // not applicable M, // meters Y, // years MONTH, // months D, // days H, // hours MIN, // minutes S, // seconds HZ, // frquency (Hz) MA, // milli amps (mA) MS, // milliseconds DEG, // degree ie Longitude, Latitude MM, // milimeter CM, // centimeter MPS, // meters per second }; struct ubx_cfg_item_t { const char * ubx_config_item; ubx_key_id_t ubx_key_id; ubx_type_t ubx_type; double_t scale; ubx_unit_t ubx_unit; }; // cfg infmsg const ubx_cfg_item_t CFG_INFMSG_UBX_USB = {"CFG_INFMSG_UBX_USB", 0x20920004, X1, 1, NA}; const ubx_cfg_item_t CFG_INFMSG_NMEA_USB = {"CFG_INFMSG_NMEA_USB", 0x20920009, X1, 1, NA}; enum CFG_INFMSG_ENUM { INFMSG_ERROR = 0x01, // Enable ERROR information messages INFMSG_WARNING = 0x02, // Enable WARNING information messages INFMSG_NOTICE = 0x04, // Enable NOTICE information messages INFMSG_TEST = 0x08, // Enable TEST information messages INFMSG_DEBUG = 0x10, // Enable DEBUG information messages }; // cfg uart1 const ubx_cfg_item_t CFG_UART1INPROT_UBX = {"CFG_UART1INPROT_UBX", 0x10730001, L, 1, NA}; const ubx_cfg_item_t CFG_UART1INPROT_NMEA = {"CFG_UART1INPROT_NMEA", 0x10730002, L, 1, NA}; const ubx_cfg_item_t CFG_UART1INPROT_RTCM3X = {"CFG_UART1INPROT_RTCM3X", 0x10730004, L, 1, NA}; const ubx_cfg_item_t CFG_UART1OUTPROT_UBX = {"CFG_UART1OUTPROT_UBX", 0x10740001, L, 1, NA}; const ubx_cfg_item_t CFG_UART1OUTPROT_NMEA = {"CFG_UART1OUTPROT_NMEA", 0x10740002, L, 1, NA}; const ubx_cfg_item_t CFG_UART1OUTPROT_RTCM3X = {"CFG_UART1OUTPROT_RTCM3X", 0x10740004, L, 1, NA}; // cfg usb const ubx_cfg_item_t CFG_USBINPROT_UBX = {"CFG_USBINPROT_UBX", 0x10770001, L, 1, NA}; const ubx_cfg_item_t CFG_USBINPROT_NMEA = {"CFG_USBINPROT_NMEA", 0x10770002, L, 1, NA}; const ubx_cfg_item_t CFG_USBINPROT_RTCM3X = {"CFG_USBINPROT_RTCM3X", 0x10770004, L, 1, NA}; const ubx_cfg_item_t CFG_USBOUTPROT_UBX = {"CFG_USBOUTPROT_UBX", 0x10780001, L, 1, NA}; const ubx_cfg_item_t CFG_USBOUTPROT_NMEA = {"CFG_USBOUTPROT_NMEA", 0x10780002, L, 1, NA}; const ubx_cfg_item_t CFG_USBOUTPROT_RTCM3X = {"CFG_USBOUTPROT_RTCM3X", 0x10780004, L, 1, NA}; // cfg tmode - time mode configuration const ubx_cfg_item_t CFG_TMODE_MODE = {"CFG_TMODE_MODE", 0x20030001, E1, 1, NA}; enum CFG_TMODE_MODE_ENUM {DISABLED = 0, SURVEY_IN = 1, FIXED = 2}; const ubx_cfg_item_t CFG_TMODE_POS_TYPE = {"CFG_TMODE_POS_TYPE", 0x20030002, E1, 1, NA}; enum CFG_TMODE_POS_TYPE_ENUM {ECEF = 0, LLH = 1}; // cfg navhpg - high precision navigation configuration const ubx_cfg_item_t CFG_NAVHPG_DGNSSMODE = {"CFG_NAVHPG_DGNSSMODE", 0x20140011, E1, 1, NA}; enum CFG_NAVHPG_DGNSSMODE_ENUM { RTK_FLOAT = 2, // no attempts made to fix ambiguities RTK_FIXED = 3 // Ambiguities are fixed whenever possible }; // cfg navspg - standard precision navigation configuration const ubx_cfg_item_t CFG_NAVSPG_FIXMODE = {"CFG_NAVSPG_FIXMODE", 0x20110011, E1, 1, NA}; enum CFG_NAVSPG_FIXMODE_ENUM { ONLY_2D = 1, // 2D Only ONLY_3D = 2, // 3D only AUTO = 3 // Auto 2D/3D }; const ubx_cfg_item_t CFG_NAVSPG_INIFIX3D = {"CFG_NAVSPG_INIFIX3D", 0x10110013, L, 1, NA}; const ubx_cfg_item_t CFG_NAVSPG_UTCSTANDARD = {"CFG_NAVSPG_UTCSTANDARD", 0x2011001c, E1, 1, NA}; enum CFG_NAVSPG_UTCSTANDARD_ENUM { UTC_AUTO = 0, // Automatic; receiver selects based on GNSS configuration UTC_USNO = 3, // UTC as operated by the US Naval Observatory (USNO) // derived from GPS time UTC_EU = 5, // UT as combined from multiple European laboratories // dervied from Galileo time UTC_SU = 6, // UTC as operated by the former Soviet Unnion (SU) // derived from GLONASS time UTC_NTSC = 7 // UTC as operated by the National Time Service Center (NTSC), Chin // derived from BeiDou time }; const ubx_cfg_item_t CFG_NAVSPG_DYNMODEL = {"CFG_NAVSPG_DYNMODEL", 0x20110021, E1, 1, NA}; enum CFG_NAVSPG_DYNMODEL_ENUM { DYN_MODEL_PORT = 0, // Portable DYN_MODEL_STAT = 2, // Stationary DYN_MODEL_PED = 3, // Pedestrian DYN_MODEL_AUTOMOT = 4, // Automotive DYN_MODEL_SEA = 5, // Sea DYN_MODEL_AIR1 = 6, // Airborne <1g acceleration DYN_MODEL_AIR2 = 7, // Airborne <2g acceleration DYN_MODEL_AIR4 = 8, // Airborne <4g acceleration DYN_MODEL_WRIST = 9, // Wrist-worn watch (not available in all products) DYN_MODEL_BIKE = 10, // Motorbike (not available in all products) DYN_MODEL_MOWER = 11, // Robotic lawn mower (not available in all products) DYN_MODEL_ESCOOTER = 12, // E-scooter (not available in all products) }; // cfg odo const ubx_cfg_item_t CFG_ODO_USE_ODO = {"CFG_ODO_USE_ODO", 0x10220001, L, 1, NA}; const ubx_cfg_item_t CFG_ODO_USE_COG = {"CFG_ODO_USE_COG", 0x10220002, L, 1, NA}; const ubx_cfg_item_t CFG_ODO_OUTLPVEL = {"CFG_ODO_OUTLPVEL", 0x10220003, L, 1, NA}; const ubx_cfg_item_t CFG_ODO_OUTLPCOG = {"CFG_ODO_OUTLPCOG", 0x10220004, L, 1, NA}; const ubx_cfg_item_t CFG_ODO_PROFILE = {"CFG_ODO_PROFILE", 0x20220005, E1, 1, NA}; enum CFG_ODO_PROFILE_ENUM { ODO_RUN = 0, // Running ODO_CYCL = 1, // Cycling ODO_SWIM = 2, // Swimming ODO_CAR = 3, // Car ODO_CUSTOM = 4, // Custom }; const ubx_cfg_item_t CFG_ODO_COGMAXSPEED = {"CFG_ODO_COGMAXSPEED", 0x20220021, U1, 1, MPS}; const ubx_cfg_item_t CFG_ODO_COGMAXPOSACC = {"CFG_ODO_COGMAXPOSACC", 0x20220022, U1, 1, NA}; const ubx_cfg_item_t CFG_ODO_VELLPGAIN = {"CFG_ODO_VALLPGAIN", 0x20220031, U1, 1, NA}; const ubx_cfg_item_t CFG_ODO_COGLPGAIN = {"CFG_ODO_COGLPGAIN", 0x20220032, U1, 1, NA}; // cfg rate - navigation and measurement rate configuration const ubx_cfg_item_t CFG_RATE_MEAS = {"CFG_RATE_MEAS", 0x30210001, U2, .001, S}; const ubx_cfg_item_t CFG_RATE_NAV = {"CFG_RATE_NAV", 0x30210002, U2, 1, NA}; const ubx_cfg_item_t CFG_RATE_TIMEREF = {"CFG_RATE_TIMEREF", 0x30210003, E1, 1, NA}; enum CFG_RATE_TIMEREF_ENUM { ALIGN_UTC = 0, // Align measurements to UTC time ALIGN_GPS = 1, // Align measurements to GPS time ALIGN_GLO = 2, // Align measurements to GLONASS time ALIGN_BDS = 3, // Align measurements to BeiDou time ALIGN_GAL = 4, // Align measurements to Galileo time }; // cfg sfimu - sensor fusion IMU configuration const ubx_cfg_item_t CFG_SFIMU_AUTO_MNTALG_ENA = {"CFG_SFIMU_AUTO_MNTALG_ENA", 0x10060027, L, 0, NA}; const ubx_cfg_item_t CFG_SFIMU_IMU_MNTALG_YAW = {"CFG_SFIMU_IMU_MNTALG_YAW", 0x4006002d, U4, .001, DEG}; const ubx_cfg_item_t CFG_SFIMU_IMU_MNTALG_PITCH = {"CFG_SFIMU_IMU_MNTALG_PITCH", 0x3006002e, I2, .001, DEG}; const ubx_cfg_item_t CFG_SFIMU_IMU_MNTALG_ROLL = {"CFG_SFIMU_IMU_MNTALG_ROLL", 0x3006002f, I2, .001, DEG}; // cfg sfodo - sensor fusion odometer configuration const ubx_cfg_item_t CFG_SFODO_COMBINE_TICKS = {"CFG_SFODO_COMBINE_TICKS", 0x10070001, L, 0, NA}; const ubx_cfg_item_t CFG_SFODO_COUNT_MAX = {"CFG_SFODO_COUNT_MAX", 0x40070009, U4, 0, NA}; const ubx_cfg_item_t CFG_SFODO_DIS_AUTOCOUNTMAX = {"CFG_SFODO_DIS_AUTOCOUNTMAX", 0x10070004, L, 0, NA}; const ubx_cfg_item_t CFG_SFODO_DIS_AUTODIRPINPOL = {"CFG_SFODO_DIS_AUTODIRPINPOL", 0x10070005, L, 0, NA}; const ubx_cfg_item_t CFG_SFODO_FACTOR = {"CFG_SFODO_FACTOR", 0x40070007, U4, 1e-6, NA}; const ubx_cfg_item_t CFG_SFODO_QUANT_ERROR = {"CFG_SFODO_QUANT_ERROR", 0x40070008, U4, 1e-6, M}; const ubx_cfg_item_t CFG_SFODO_LATENCY = {"CFG_SFODO_LATENCY", 0x3007000a, U2, 0, MS}; // cfg msgout - msg output rate configurations const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_STATUS_USB = {"CFG_MSGOUT_UBX_NAV_STATUS_USB", 0x2091001d, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_CLOCK_USB = {"CFG_MSGOUT_UBX_NAV_CLOCK_USB", 0x20910068, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_COV_USB = {"CFG_MSGOUT_UBX_NAV_COV_USB", 0x20910086, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_DOP_USB = {"CFG_MSGOUT_UBX_NAV_DOP_USB", 0x2091003b, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_EOE_USB = {"CFG_MSGOUT_UBX_NAV_EOE_USB", 0x20910162, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_POSECEF_USB = {"CFG_MSGOUT_UBX_NAV_POSECEF_USB", 0x20910027, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_HPPOSECEF_USB = {"CFG_MSGOUT_UBX_NAV_HPPOSECEF_USB", 0x20910031, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_POSLLH_USB = {"CFG_MSGOUT_UBX_NAV_POSLLH_USB", 0x2091002C, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_HPPOSLLH_USB = {"CFG_MSGOUT_UBX_NAV_HPPOSLLH_USB", 0x20910036, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_ODO_USB = {"CFG_MSGOUT_UBX_NAV_ODO_USB", 0x20910081, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_PVT_USB = {"CFG_MSGOUT_UBX_NAV_PVT_USB", 0x20910009, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_RELPOSNED_USB = {"CFG_MSGOUT_UBX_NAV_RELPOSNED_USB", 0x20910090, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_TIMEUTC_USB = {"CFG_MSGOUT_UBX_NAV_TIMEUTC_USB", 0x2091005e, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_VELECEF_USB = {"CFG_MSGOUT_UBX_NAV_VELECEF_USB", 0x20910040, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_NAV_VELNED_USB = {"CFG_MSGOUT_UBX_NAV_VELNED_USB", 0x20910045, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_RXM_RTCM_USB = {"CFG_MSGOUT_UBX_RXM_RTCM_USB", 0x2091026b, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_ESF_MEAS_USB = {"CFG_MSGOUT_UBX_ESF_MEAS_USB", 0x2091027a, U1, 0, NA}; const ubx_cfg_item_t CFG_MSGOUT_UBX_ESF_STATUS_USB = {"CFG_MSGOUT_UBX_ESF_STATUS_USB", 0x20910108, U1, 0, NA}; std::map ubxKeyCfgItemMap = { {CFG_INFMSG_UBX_USB.ubx_key_id, CFG_INFMSG_UBX_USB}, {CFG_INFMSG_NMEA_USB.ubx_key_id, CFG_INFMSG_NMEA_USB}, {CFG_UART1INPROT_UBX.ubx_key_id, CFG_UART1INPROT_UBX}, {CFG_UART1INPROT_NMEA.ubx_key_id, CFG_UART1INPROT_NMEA}, {CFG_UART1INPROT_RTCM3X.ubx_key_id, CFG_UART1INPROT_RTCM3X}, {CFG_UART1OUTPROT_UBX.ubx_key_id, CFG_UART1OUTPROT_UBX}, {CFG_UART1OUTPROT_NMEA.ubx_key_id, CFG_UART1OUTPROT_NMEA}, {CFG_UART1OUTPROT_RTCM3X.ubx_key_id, CFG_UART1OUTPROT_RTCM3X}, {CFG_USBINPROT_UBX.ubx_key_id, CFG_USBINPROT_UBX}, {CFG_USBINPROT_NMEA.ubx_key_id, CFG_USBINPROT_NMEA}, {CFG_USBINPROT_RTCM3X.ubx_key_id, CFG_USBINPROT_RTCM3X}, {CFG_USBOUTPROT_UBX.ubx_key_id, CFG_USBOUTPROT_UBX}, {CFG_USBOUTPROT_NMEA.ubx_key_id, CFG_USBOUTPROT_NMEA}, {CFG_USBOUTPROT_RTCM3X.ubx_key_id, CFG_USBOUTPROT_RTCM3X}, {CFG_TMODE_MODE.ubx_key_id, CFG_TMODE_MODE}, {CFG_TMODE_POS_TYPE.ubx_key_id, CFG_TMODE_POS_TYPE}, {CFG_NAVHPG_DGNSSMODE.ubx_key_id, CFG_NAVHPG_DGNSSMODE}, {CFG_NAVSPG_FIXMODE.ubx_key_id, CFG_NAVSPG_FIXMODE}, {CFG_NAVSPG_INIFIX3D.ubx_key_id, CFG_NAVSPG_INIFIX3D}, {CFG_NAVSPG_UTCSTANDARD.ubx_key_id, CFG_NAVSPG_UTCSTANDARD}, {CFG_NAVSPG_DYNMODEL.ubx_key_id, CFG_NAVSPG_DYNMODEL}, {CFG_ODO_USE_ODO.ubx_key_id, CFG_ODO_USE_ODO}, {CFG_ODO_USE_COG.ubx_key_id, CFG_ODO_USE_COG}, {CFG_ODO_OUTLPVEL.ubx_key_id, CFG_ODO_OUTLPVEL}, {CFG_ODO_OUTLPCOG.ubx_key_id, CFG_ODO_OUTLPCOG}, {CFG_ODO_PROFILE.ubx_key_id, CFG_ODO_PROFILE}, {CFG_ODO_COGMAXSPEED.ubx_key_id, CFG_ODO_COGMAXSPEED}, {CFG_ODO_COGMAXPOSACC.ubx_key_id, CFG_ODO_COGMAXPOSACC}, {CFG_ODO_VELLPGAIN.ubx_key_id, CFG_ODO_VELLPGAIN}, {CFG_ODO_COGLPGAIN.ubx_key_id, CFG_ODO_COGLPGAIN}, {CFG_RATE_MEAS.ubx_key_id, CFG_RATE_MEAS}, {CFG_RATE_NAV.ubx_key_id, CFG_RATE_NAV}, {CFG_RATE_TIMEREF.ubx_key_id, CFG_RATE_TIMEREF}, {CFG_SFIMU_AUTO_MNTALG_ENA.ubx_key_id, CFG_SFIMU_AUTO_MNTALG_ENA}, {CFG_SFIMU_IMU_MNTALG_YAW.ubx_key_id, CFG_SFIMU_IMU_MNTALG_YAW}, {CFG_SFIMU_IMU_MNTALG_PITCH.ubx_key_id, CFG_SFIMU_IMU_MNTALG_PITCH}, {CFG_SFIMU_IMU_MNTALG_ROLL.ubx_key_id, CFG_SFIMU_IMU_MNTALG_ROLL}, {CFG_SFODO_COMBINE_TICKS.ubx_key_id, CFG_SFODO_COMBINE_TICKS}, {CFG_SFODO_COUNT_MAX.ubx_key_id, CFG_SFODO_COUNT_MAX}, {CFG_SFODO_DIS_AUTOCOUNTMAX.ubx_key_id, CFG_SFODO_DIS_AUTOCOUNTMAX}, {CFG_SFODO_DIS_AUTODIRPINPOL.ubx_key_id, CFG_SFODO_DIS_AUTODIRPINPOL}, {CFG_SFODO_FACTOR.ubx_key_id, CFG_SFODO_FACTOR}, {CFG_SFODO_LATENCY.ubx_key_id, CFG_SFODO_LATENCY}, {CFG_SFODO_QUANT_ERROR.ubx_key_id, CFG_SFODO_QUANT_ERROR}, {CFG_MSGOUT_UBX_NAV_STATUS_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_STATUS_USB}, {CFG_MSGOUT_UBX_NAV_CLOCK_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_CLOCK_USB}, {CFG_MSGOUT_UBX_NAV_COV_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_COV_USB}, {CFG_MSGOUT_UBX_NAV_DOP_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_DOP_USB}, {CFG_MSGOUT_UBX_NAV_EOE_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_EOE_USB}, {CFG_MSGOUT_UBX_NAV_POSECEF_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_POSECEF_USB}, {CFG_MSGOUT_UBX_NAV_HPPOSECEF_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_HPPOSECEF_USB}, {CFG_MSGOUT_UBX_NAV_POSLLH_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_POSLLH_USB}, {CFG_MSGOUT_UBX_NAV_HPPOSLLH_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_HPPOSLLH_USB}, {CFG_MSGOUT_UBX_NAV_ODO_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_ODO_USB}, {CFG_MSGOUT_UBX_NAV_PVT_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_PVT_USB}, {CFG_MSGOUT_UBX_NAV_RELPOSNED_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_RELPOSNED_USB}, {CFG_MSGOUT_UBX_NAV_TIMEUTC_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_TIMEUTC_USB}, {CFG_MSGOUT_UBX_NAV_VELECEF_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_VELECEF_USB}, {CFG_MSGOUT_UBX_NAV_VELNED_USB.ubx_key_id, CFG_MSGOUT_UBX_NAV_VELNED_USB}, {CFG_MSGOUT_UBX_RXM_RTCM_USB.ubx_key_id, CFG_MSGOUT_UBX_RXM_RTCM_USB}, {CFG_MSGOUT_UBX_ESF_MEAS_USB.ubx_key_id, CFG_MSGOUT_UBX_ESF_MEAS_USB}, {CFG_MSGOUT_UBX_ESF_STATUS_USB.ubx_key_id, CFG_MSGOUT_UBX_ESF_STATUS_USB} }; bool operator<(const ubx_key_id_t & fk1, const ubx_key_id_t & fk2) { return fk1.all < fk2.all; } } // namespace ubx::cfg #endif // UBLOX_DGNSS_NODE__UBX__UBX_CFG_ITEM_HPP_