driver_ubx.h 12 KB

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