1 /* 2 * This file is Copyright (c) 2010 by the GPSD project 3 * BSD terms apply: see the file COPYING in the distribution root for details 4 */ 5 #ifndef _GPSD_UBX_H_ 6 #define _GPSD_UBX_H_ 7 8 #define UBX_MESSAGE_BASE_SIZE 6 9 #define UBX_MESSAGE_DATA_OFFSET UBX_MESSAGE_BASE_SIZE 10 11 typedef enum { 12 UBX_CLASS_NAV = 0x01, /**< Navigation */ 13 UBX_CLASS_RXM = 0x02, /**< Receiver Manager */ 14 UBX_CLASS_INF = 0x04, /**< Informative text messages */ 15 UBX_CLASS_ACK = 0x05, /**< (Not) Acknowledges for cfg messages */ 16 UBX_CLASS_CFG = 0x06, /**< Configuration requests */ 17 UBX_CLASS_UPD = 0x09, /**< Firmware updates */ 18 UBX_CLASS_MON = 0x0a, /**< System monitoring */ 19 UBX_CLASS_AID = 0x0b, /**< AGPS (Deprecated) */ 20 UBX_CLASS_TIM = 0x0d, /**< Time */ 21 UBX_CLASS_ESF = 0x10, /**< External Sensor Fusion */ 22 UBX_CLASS_MGA = 0x13, /**< Multi GNSS Assistance */ 23 UBX_CLASS_LOG = 0x21, /**< Log */ 24 UBX_CLASS_SEC = 0x27, /**< Security */ 25 UBX_CLASS_HNR = 0x28, /**< High Rate Nav Results */ 26 UBX_CLASS_NMEA = 0xf0, /**< NMEA, for configuring */ 27 UBX_CLASS_RTCM3 = 0xf5, /**< RTCM3, for configuring */ 28 } ubx_classes_t; 29 30 #define UBX_MSGID(cls_, id_) (((cls_)<<8)|(id_)) 31 32 typedef enum { 33 UBX_NAV_POSECEF = UBX_MSGID(UBX_CLASS_NAV, 0x01), 34 UBX_NAV_POSLLH = UBX_MSGID(UBX_CLASS_NAV, 0x02), 35 UBX_NAV_STATUS = UBX_MSGID(UBX_CLASS_NAV, 0x03), 36 UBX_NAV_DOP = UBX_MSGID(UBX_CLASS_NAV, 0x04), 37 UBX_NAV_ATT = UBX_MSGID(UBX_CLASS_NAV, 0x05), 38 UBX_NAV_SOL = UBX_MSGID(UBX_CLASS_NAV, 0x06), 39 UBX_NAV_PVT = UBX_MSGID(UBX_CLASS_NAV, 0x07), 40 UBX_NAV_POSUTM = UBX_MSGID(UBX_CLASS_NAV, 0x08), 41 UBX_NAV_ODO = UBX_MSGID(UBX_CLASS_NAV, 0x09), 42 UBX_NAV_RESETODO = UBX_MSGID(UBX_CLASS_NAV, 0x10), 43 UBX_NAV_VELECEF = UBX_MSGID(UBX_CLASS_NAV, 0x11), 44 UBX_NAV_VELNED = UBX_MSGID(UBX_CLASS_NAV, 0x12), 45 UBX_NAV_HPPOSECEF = UBX_MSGID(UBX_CLASS_NAV, 0x13), 46 UBX_NAV_HPPOSLLH = UBX_MSGID(UBX_CLASS_NAV, 0x14), 47 UBX_NAV_TIMEGPS = UBX_MSGID(UBX_CLASS_NAV, 0x20), 48 UBX_NAV_TIMEUTC = UBX_MSGID(UBX_CLASS_NAV, 0x21), 49 UBX_NAV_CLOCK = UBX_MSGID(UBX_CLASS_NAV, 0x22), 50 UBX_NAV_TIMEGLO = UBX_MSGID(UBX_CLASS_NAV, 0x23), 51 UBX_NAV_TIMEBDS = UBX_MSGID(UBX_CLASS_NAV, 0x24), 52 UBX_NAV_TIMEGAL = UBX_MSGID(UBX_CLASS_NAV, 0x25), 53 UBX_NAV_TIMELS = UBX_MSGID(UBX_CLASS_NAV, 0x26), 54 UBX_NAV_SVINFO = UBX_MSGID(UBX_CLASS_NAV, 0x30), 55 UBX_NAV_DGPS = UBX_MSGID(UBX_CLASS_NAV, 0x31), 56 UBX_NAV_SBAS = UBX_MSGID(UBX_CLASS_NAV, 0x32), 57 UBX_NAV_ORB = UBX_MSGID(UBX_CLASS_NAV, 0x34), 58 UBX_NAV_SAT = UBX_MSGID(UBX_CLASS_NAV, 0x35), 59 UBX_NAV_GEOFENCE = UBX_MSGID(UBX_CLASS_NAV, 0x39), 60 UBX_NAV_SVIN = UBX_MSGID(UBX_CLASS_NAV, 0x3b), 61 UBX_NAV_RELPOSNED = UBX_MSGID(UBX_CLASS_NAV, 0x3c), 62 UBX_NAV_EKFSTATUS = UBX_MSGID(UBX_CLASS_NAV, 0x40), 63 UBX_NAV_SIG = UBX_MSGID(UBX_CLASS_NAV, 0x43), 64 UBX_NAV_AOPSTATUS = UBX_MSGID(UBX_CLASS_NAV, 0x60), 65 UBX_NAV_EOE = UBX_MSGID(UBX_CLASS_NAV, 0x61), 66 67 UBX_RXM_RAW = UBX_MSGID(UBX_CLASS_RXM, 0x10), 68 UBX_RXM_SFRB = UBX_MSGID(UBX_CLASS_RXM, 0x11), 69 UBX_RXM_SFRBX = UBX_MSGID(UBX_CLASS_RXM, 0x13), 70 UBX_RXM_MEASX = UBX_MSGID(UBX_CLASS_RXM, 0x14), 71 UBX_RXM_RAWX = UBX_MSGID(UBX_CLASS_RXM, 0x15), 72 UBX_RXM_SVSI = UBX_MSGID(UBX_CLASS_RXM, 0x20), 73 UBX_RXM_ALM = UBX_MSGID(UBX_CLASS_RXM, 0x30), 74 UBX_RXM_EPH = UBX_MSGID(UBX_CLASS_RXM, 0x31), 75 UBX_RXM_RTCM = UBX_MSGID(UBX_CLASS_RXM, 0x32), 76 UBX_RXM_POSREQ = UBX_MSGID(UBX_CLASS_RXM, 0x40), 77 UBX_RXM_PMREQ = UBX_MSGID(UBX_CLASS_RXM, 0x41), 78 UBX_RXM_RLM = UBX_MSGID(UBX_CLASS_RXM, 0x59), 79 UBX_RXM_IMES = UBX_MSGID(UBX_CLASS_RXM, 0x61), 80 81 UBX_INF_ERROR = UBX_MSGID(UBX_CLASS_INF, 0X00), 82 UBX_INF_WARNING = UBX_MSGID(UBX_CLASS_INF, 0X01), 83 UBX_INF_NOTICE = UBX_MSGID(UBX_CLASS_INF, 0x02), 84 UBX_INF_TEST = UBX_MSGID(UBX_CLASS_INF, 0x03), 85 UBX_INF_DEBUG = UBX_MSGID(UBX_CLASS_INF, 0x04), 86 /* where is UBX-INF-USER documented? */ 87 UBX_INF_USER = UBX_MSGID(UBX_CLASS_INF, 0x07), 88 89 UBX_ACK_NAK = UBX_MSGID(UBX_CLASS_ACK, 0x00), 90 UBX_ACK_ACK = UBX_MSGID(UBX_CLASS_ACK, 0x01), 91 92 UBX_CFG_PRT = UBX_MSGID(UBX_CLASS_CFG, 0x00), 93 UBX_CFG_MSG = UBX_MSGID(UBX_CLASS_CFG, 0x01), 94 UBX_CFG_INF = UBX_MSGID(UBX_CLASS_CFG, 0x02), 95 UBX_CFG_RST = UBX_MSGID(UBX_CLASS_CFG, 0x04), 96 UBX_CFG_DAT = UBX_MSGID(UBX_CLASS_CFG, 0x06), 97 UBX_CFG_RATE = UBX_MSGID(UBX_CLASS_CFG, 0x08), 98 UBX_CFG_CFG = UBX_MSGID(UBX_CLASS_CFG, 0x09), 99 UBX_CFG_RXM = UBX_MSGID(UBX_CLASS_CFG, 0x11), 100 UBX_CFG_ANT = UBX_MSGID(UBX_CLASS_CFG, 0x13), 101 UBX_CFG_SBAS = UBX_MSGID(UBX_CLASS_CFG, 0x16), 102 UBX_CFG_NMEA = UBX_MSGID(UBX_CLASS_CFG, 0x17), 103 UBX_CFG_USB = UBX_MSGID(UBX_CLASS_CFG, 0x1b), 104 UBX_CFG_ODO = UBX_MSGID(UBX_CLASS_CFG, 0x1e), 105 UBX_CFG_NAVX5 = UBX_MSGID(UBX_CLASS_CFG, 0x23), 106 UBX_CFG_NAV5 = UBX_MSGID(UBX_CLASS_CFG, 0x24), 107 UBX_CFG_TP5 = UBX_MSGID(UBX_CLASS_CFG, 0x31), 108 UBX_CFG_RINV = UBX_MSGID(UBX_CLASS_CFG, 0x34), 109 UBX_CFG_ITFM = UBX_MSGID(UBX_CLASS_CFG, 0x39), 110 UBX_CFG_PM2 = UBX_MSGID(UBX_CLASS_CFG, 0x3b), 111 UBX_CFG_TMODE2 = UBX_MSGID(UBX_CLASS_CFG, 0x3D), 112 UBX_CFG_GNSS = UBX_MSGID(UBX_CLASS_CFG, 0x3e), 113 UBX_CFG_LOGFILTER = UBX_MSGID(UBX_CLASS_CFG, 0x47), 114 UBX_CFG_TXSLOT = UBX_MSGID(UBX_CLASS_CFG, 0x53), 115 UBX_CFG_PWR = UBX_MSGID(UBX_CLASS_CFG, 0x57), 116 UBX_CFG_HNR = UBX_MSGID(UBX_CLASS_CFG, 0x5c), 117 UBX_CFG_ESRC = UBX_MSGID(UBX_CLASS_CFG, 0x60), 118 UBX_CFG_DOSC = UBX_MSGID(UBX_CLASS_CFG, 0x61), 119 UBX_CFG_SMGR = UBX_MSGID(UBX_CLASS_CFG, 0x62), 120 UBX_CFG_GEOFENCE = UBX_MSGID(UBX_CLASS_CFG, 0x69), 121 UBX_CFG_DGNSS = UBX_MSGID(UBX_CLASS_CFG, 0x70), 122 UBX_CFG_TMODE3 = UBX_MSGID(UBX_CLASS_CFG, 0x71), 123 UBX_CFG_FIXSEED = UBX_MSGID(UBX_CLASS_CFG, 0x84), 124 UBX_CFG_DYNSEED = UBX_MSGID(UBX_CLASS_CFG, 0x85), 125 UBX_CFG_PMS = UBX_MSGID(UBX_CLASS_CFG, 0x86), 126 127 UBX_UPD_DOWNL = UBX_MSGID(UBX_CLASS_UPD, 0x01), 128 UBX_UPD_UPLOAD = UBX_MSGID(UBX_CLASS_UPD, 0x02), 129 UBX_UPD_EXEC = UBX_MSGID(UBX_CLASS_UPD, 0x03), 130 UBX_UPD_MEMCPY = UBX_MSGID(UBX_CLASS_UPD, 0x04), 131 UBX_UPD_SOS = UBX_MSGID(UBX_CLASS_UPD, 0x14), 132 133 UBX_MON_SCHED = UBX_MSGID(UBX_CLASS_MON, 0x01), 134 UBX_MON_IO = UBX_MSGID(UBX_CLASS_MON, 0x02), 135 UBX_MON_IPC = UBX_MSGID(UBX_CLASS_MON, 0x03), 136 UBX_MON_VER = UBX_MSGID(UBX_CLASS_MON, 0x04), 137 UBX_MON_EXCEPT = UBX_MSGID(UBX_CLASS_MON, 0x05), 138 UBX_MON_MSGPP = UBX_MSGID(UBX_CLASS_MON, 0x06), 139 UBX_MON_RXBUF = UBX_MSGID(UBX_CLASS_MON, 0x07), 140 UBX_MON_TXBUF = UBX_MSGID(UBX_CLASS_MON, 0x08), 141 UBX_MON_HW = UBX_MSGID(UBX_CLASS_MON, 0x09), 142 UBX_MON_USB = UBX_MSGID(UBX_CLASS_MON, 0x0a), 143 UBX_MON_HW2 = UBX_MSGID(UBX_CLASS_MON, 0x0b), 144 UBX_MON_RXR = UBX_MSGID(UBX_CLASS_MON, 0x21), 145 UBX_MON_PATCH = UBX_MSGID(UBX_CLASS_MON, 0x27), 146 UBX_MON_GNSS = UBX_MSGID(UBX_CLASS_MON, 0x28), 147 UBX_MON_SMGR = UBX_MSGID(UBX_CLASS_MON, 0x2e), 148 149 /* USB-AID- Deprecated */ 150 UBX_AID_REQ = UBX_MSGID(UBX_CLASS_AID, 0x00), 151 UBX_AID_INI = UBX_MSGID(UBX_CLASS_AID, 0x01), 152 UBX_AID_HUI = UBX_MSGID(UBX_CLASS_AID, 0x02), 153 UBX_AID_DATA = UBX_MSGID(UBX_CLASS_AID, 0x10), 154 UBX_AID_ALM = UBX_MSGID(UBX_CLASS_AID, 0x30), 155 UBX_AID_EPH = UBX_MSGID(UBX_CLASS_AID, 0x31), 156 UBX_AID_AOP = UBX_MSGID(UBX_CLASS_AID, 0x33), 157 158 UBX_TIM_TP = UBX_MSGID(UBX_CLASS_TIM, 0x01), 159 UBX_TIM_TM = UBX_MSGID(UBX_CLASS_TIM, 0x02), 160 UBX_TIM_TM2 = UBX_MSGID(UBX_CLASS_TIM, 0x03), 161 UBX_TIM_SVIN = UBX_MSGID(UBX_CLASS_TIM, 0x04), 162 UBX_TIM_VRFY = UBX_MSGID(UBX_CLASS_TIM, 0x06), 163 UBX_TIM_DOSC = UBX_MSGID(UBX_CLASS_TIM, 0x11), 164 UBX_TIM_TOS = UBX_MSGID(UBX_CLASS_TIM, 0x12), 165 UBX_TIM_SMEAS = UBX_MSGID(UBX_CLASS_TIM, 0x13), 166 UBX_TIM_VCOCAL = UBX_MSGID(UBX_CLASS_TIM, 0x15), 167 UBX_TIM_FCHG = UBX_MSGID(UBX_CLASS_TIM, 0x16), 168 UBX_TIM_HOC = UBX_MSGID(UBX_CLASS_TIM, 0x17), 169 170 UBX_ESF_MEAS = UBX_MSGID(UBX_CLASS_SEC, 0x02), 171 UBX_ESF_RAW = UBX_MSGID(UBX_CLASS_SEC, 0x03), 172 UBX_ESF_STATUS = UBX_MSGID(UBX_CLASS_SEC, 0x10), 173 UBX_ESF_INS = UBX_MSGID(UBX_CLASS_SEC, 0x15), 174 175 UBX_MGA_GPS = UBX_MSGID(UBX_CLASS_MGA, 0x00), 176 UBX_MGA_GAL = UBX_MSGID(UBX_CLASS_MGA, 0x02), 177 UBX_MGA_BDS = UBX_MSGID(UBX_CLASS_MGA, 0x03), 178 UBX_MGA_QZSS = UBX_MSGID(UBX_CLASS_MGA, 0x05), 179 UBX_MGA_GLO = UBX_MSGID(UBX_CLASS_MGA, 0x06), 180 UBX_MGA_ANO = UBX_MSGID(UBX_CLASS_MGA, 0x20), 181 UBX_MGA_FLASH = UBX_MSGID(UBX_CLASS_MGA, 0x21), 182 UBX_MGA_INI = UBX_MSGID(UBX_CLASS_MGA, 0x40), 183 UBX_MGA_ACK = UBX_MSGID(UBX_CLASS_MGA, 0x60), 184 UBX_MGA_DBD = UBX_MSGID(UBX_CLASS_MGA, 0x80), 185 186 UBX_LOG_ERASE = UBX_MSGID(UBX_CLASS_LOG, 0x03), 187 UBX_LOG_STRING = UBX_MSGID(UBX_CLASS_LOG, 0x04), 188 UBX_LOG_CREATE = UBX_MSGID(UBX_CLASS_LOG, 0x07), 189 UBX_LOG_INFO = UBX_MSGID(UBX_CLASS_LOG, 0x08), 190 UBX_LOG_RETRIEVE = UBX_MSGID(UBX_CLASS_LOG, 0x09), 191 UBX_LOG_RETRIEVEPOS = UBX_MSGID(UBX_CLASS_LOG, 0x0b), 192 UBX_LOG_RETRIEVESTRING = UBX_MSGID(UBX_CLASS_LOG, 0x0d), 193 UBX_LOG_FINDTIME = UBX_MSGID(UBX_CLASS_LOG, 0x0e), 194 UBX_LOG_RETRIEVEPOSEXTRA = UBX_MSGID(UBX_CLASS_LOG, 0x0f), 195 196 UBX_SEC_SIGN = UBX_MSGID(UBX_CLASS_SEC, 0x01), 197 UBX_SEC_UNIQID = UBX_MSGID(UBX_CLASS_SEC, 0x03), 198 199 UBX_HNR_PVT = UBX_MSGID(UBX_CLASS_HNR, 0x00), 200 } ubx_message_t; 201 202 typedef enum { 203 UBX_MODE_NOFIX = 0x00, /* no fix available */ 204 UBX_MODE_DR = 0x01, /* Dead reckoning */ 205 UBX_MODE_2D = 0x02, /* 2D fix */ 206 UBX_MODE_3D = 0x03, /* 3D fix */ 207 UBX_MODE_GPSDR = 0x04, /* GPS + dead reckoning */ 208 UBX_MODE_TMONLY = 0x05, /* Time-only fix */ 209 } ubx_mode_t; 210 211 #define UBX_SOL_FLAG_GPS_FIX_OK 0x01 212 #define UBX_SOL_FLAG_DGPS 0x02 213 #define UBX_SOL_VALID_WEEK 0x04 214 #define UBX_SOL_VALID_TIME 0x08 215 216 #define UBX_TIMEGPS_VALID_TIME 0x01 217 #define UBX_TIMEGPS_VALID_WEEK 0x02 218 #define UBX_TIMEGPS_VALID_LEAP_SECOND 0x04 219 220 /* from UBX_NAV_SVINFO */ 221 #define UBX_SAT_USED 0x01 222 #define UBX_SAT_DGPS 0x02 223 #define UBX_SAT_EPHALM 0x04 224 #define UBX_SAT_EPHEM 0x08 225 #define UBX_SAT_UNHEALTHY 0x10 226 227 #define UBX_SIG_IDLE 0 228 #define UBX_SIG_SRCH1 1 229 #define UBX_SIG_SRCH2 2 230 #define UBX_SIG_DETECT 3 231 #define UBX_SIG_CDLK 4 232 #define UBX_SIG_CDCRLK1 5 233 #define UBX_SIG_CDCRLK2 6 234 #define UBX_SIG_NAVMSG 7 235 236 #define UBX_NAV_PVT_VALID_DATE 0x01 237 #define UBX_NAV_PVT_VALID_TIME 0x02 238 #define UBX_NAV_PVT_VALID_RESL 0x04 239 #define UBX_NAV_PVT_VALID_DATE_TIME (UBX_NAV_PVT_VALID_DATE | UBX_NAV_PVT_VALID_TIME) 240 #define UBX_NAV_PVT_VALID_MAG 0x08 241 242 #define UBX_NAV_PVT_FLAG_GPS_FIX_OK 0x01 243 #define UBX_NAV_PVT_FLAG_DGPS 0x02 244 #define UBX_NAV_PVT_FLAG_HDG_OK 0x20 245 246 #endif /* _GPSD_UBX_H_ */ 247