ubx.c 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617
  1. /*
  2. * ubxproto
  3. * Copyright (c) 2014, Alexey Edelev aka semlanik, All rights reserved.
  4. *
  5. * This library is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU Lesser General Public
  7. * License as published by the Free Software Foundation; either
  8. * version 3.0 of the License, or (at your option) any later version.
  9. *
  10. * This library is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13. * Lesser General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU Lesser General Public
  16. * License along with this library.
  17. *
  18. * Additionally to GNU Lesser General Public License you MUST NOT
  19. * static link this library and MUST add link to author
  20. * and source of this library in your application.
  21. *
  22. * Actual LGPL text https://www.gnu.org/licenses/lgpl.html
  23. *
  24. * File: ubx.c
  25. */
  26. #include "ubxmessage.h"
  27. #include "ubx.h"
  28. #include "malloc.h"
  29. #include "memory.h"
  30. void fletcherChecksum(unsigned char* buffer, int size, unsigned char* checkSumA, unsigned char* checkSumB)
  31. {
  32. int i = 0;
  33. *checkSumA = 0;
  34. *checkSumB = 0;
  35. for(; i < size; i++)
  36. {
  37. *checkSumA += buffer[i];
  38. *checkSumB += *checkSumA;
  39. }
  40. }
  41. void completeMsg(struct UBXMsgBuffer* buffer, int payloadSize)
  42. {
  43. unsigned char* checkSumA = (unsigned char*)(buffer->data + UBX_HEADER_SIZE + payloadSize);
  44. unsigned char* checkSumB = (unsigned char*)(buffer->data + UBX_HEADER_SIZE + payloadSize + 1);
  45. fletcherChecksum((unsigned char*)(buffer->data + sizeof(UBX_PREAMBLE)), payloadSize + 4, checkSumA, checkSumB);
  46. }
  47. void initMsg(struct UBXMsg* msg, int payloadSize, enum UBXMessageClass msgClass, enum UBXMessageId msgId)
  48. {
  49. msg->preamble = htobe16(UBX_PREAMBLE);
  50. msg->hdr.msgClass = msgClass;
  51. msg->hdr.msgId = msgId;
  52. msg->hdr.length = payloadSize;
  53. }
  54. struct UBXMsgBuffer createBuffer(int payloadSize)
  55. {
  56. struct UBXMsgBuffer buffer = {0, 0};
  57. buffer.size = UBX_HEADER_SIZE + payloadSize + UBX_CHECKSUM_SIZE;
  58. buffer.data = malloc(buffer.size);
  59. memset(buffer.data, 0, buffer.size);
  60. return buffer;
  61. }
  62. struct UBXMsgBuffer getAID_ALPSRV(struct UBXMsg* clientMgs, const struct UBXAlpFileInfo *fileInfo)
  63. {
  64. int requestedAlpSize = (clientMgs->payload.AID_ALPSRV.size << 1);
  65. if(fileInfo->dataSize < (clientMgs->payload.AID_ALPSRV.offset + requestedAlpSize))
  66. {
  67. requestedAlpSize = fileInfo->dataSize - clientMgs->payload.AID_ALPSRV.offset - 1;
  68. }
  69. int alpMsgSize = sizeof(struct UBXAID_ALPSRV);
  70. int payloadSize = alpMsgSize + requestedAlpSize;
  71. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  72. struct UBXMsg* msg = (struct UBXMsg*) buffer.data;
  73. if(requestedAlpSize < 0)
  74. {
  75. return buffer;
  76. }
  77. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALPSRV);
  78. msg->payload.AID_ALPSRV.idSize = clientMgs->payload.AID_ALPSRV.idSize;
  79. msg->payload.AID_ALPSRV.type = clientMgs->payload.AID_ALPSRV.type;
  80. msg->payload.AID_ALPSRV.offset = clientMgs->payload.AID_ALPSRV.offset;
  81. msg->payload.AID_ALPSRV.size = clientMgs->payload.AID_ALPSRV.size;
  82. msg->payload.AID_ALPSRV.fileId = fileInfo->fileId;
  83. msg->payload.AID_ALPSRV.dataSize = requestedAlpSize;
  84. msg->payload.AID_ALPSRV.id1 = clientMgs->payload.AID_ALPSRV.id1;
  85. msg->payload.AID_ALPSRV.id2 = clientMgs->payload.AID_ALPSRV.id2;
  86. msg->payload.AID_ALPSRV.id3 = clientMgs->payload.AID_ALPSRV.id3;
  87. memcpy(buffer.data + UBX_HEADER_SIZE + alpMsgSize, fileInfo->alpData + msg->payload.AID_ALPSRV.offset, requestedAlpSize);
  88. completeMsg(&buffer, payloadSize);
  89. return buffer;
  90. }
  91. struct UBXMsgBuffer getCFG_MSG_POLL(enum UBXMessageClass msgClass, enum UBXMessageId msgId)
  92. {
  93. int payloadSize = sizeof(struct UBXCFG_MSG_POLL);
  94. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  95. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  96. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_MSG);
  97. msg->payload.CFG_MSG_POLL.msgClass = msgClass;
  98. msg->payload.CFG_MSG_POLL.msgId = msgId;
  99. completeMsg(&buffer, payloadSize);
  100. return buffer;
  101. }
  102. struct UBXMsgBuffer getCFG_MSG_RATE(enum UBXMessageClass msgClass, enum UBXMessageId msgId, u_int8_t rate)
  103. {
  104. int payloadSize = sizeof(struct UBXCFG_MSG_RATE);
  105. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  106. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  107. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_MSG);
  108. msg->payload.CFG_MSG_RATE.msgClass = msgClass;
  109. msg->payload.CFG_MSG_RATE.msgId = msgId;
  110. msg->payload.CFG_MSG_RATE.rate = rate;
  111. completeMsg(&buffer, payloadSize);
  112. return buffer;
  113. }
  114. struct UBXMsgBuffer getCFG_MSG_RATES(enum UBXMessageClass msgClass, enum UBXMessageId msgId, u_int8_t rate[6])
  115. {
  116. int payloadSize = sizeof(struct UBXCFG_MSG_RATES);
  117. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  118. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  119. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_MSG);
  120. msg->payload.CFG_MSG_RATES.msgClass = msgClass;
  121. msg->payload.CFG_MSG_RATES.msgId = msgId;
  122. memcpy(msg->payload.CFG_MSG_RATES.rate, rate, 6*sizeof(u_int8_t));
  123. completeMsg(&buffer, payloadSize);
  124. return buffer;
  125. }
  126. struct UBXMsgBuffer getCFG_RST(enum UBXResetMode mode, u_int16_t mask)
  127. {
  128. int payloadSize = sizeof(struct UBXCFG_RST);
  129. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  130. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  131. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RST);
  132. msg->payload.CFG_RST.resetMode = mode;
  133. msg->payload.CFG_RST.navBBRMask = mask;
  134. completeMsg(&buffer, payloadSize);
  135. return buffer;
  136. }
  137. struct UBXMsgBuffer getCFG_TP5_POLL_OPT(enum UBXCFGTimepulses tpIdx)
  138. {
  139. int payloadSize = sizeof(struct UBXCFG_TP5_POLL_OPT);
  140. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  141. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  142. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_TP5);
  143. msg->payload.CFG_TP5_POLL_OPT.tpIdx = tpIdx;
  144. completeMsg(&buffer, payloadSize);
  145. return buffer;
  146. }
  147. struct UBXMsgBuffer getCFG_TP5(enum UBXCFGTimepulses tpIdx,
  148. int16_t antCableDelay,
  149. int16_t rfGroupDelay,
  150. u_int32_t freqPeriod,
  151. u_int32_t freqPeriodLock,
  152. u_int32_t pulseLenRatio,
  153. u_int32_t pulseLenRatioLock,
  154. int32_t userConfigDelay,
  155. int32_t flags)
  156. {
  157. int payloadSize = sizeof(struct UBXCFG_TP5);
  158. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  159. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  160. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_TP5);
  161. msg->payload.CFG_TP5.tpIdx = tpIdx;
  162. msg->payload.CFG_TP5.antCableDelay = antCableDelay;
  163. msg->payload.CFG_TP5.rfGroupDelay = rfGroupDelay;
  164. msg->payload.CFG_TP5.freqPeriod = freqPeriod;
  165. msg->payload.CFG_TP5.freqPeriodLock = freqPeriodLock;
  166. msg->payload.CFG_TP5.pulseLenRatio = pulseLenRatio;
  167. msg->payload.CFG_TP5.pulseLenRatioLock = pulseLenRatioLock;
  168. msg->payload.CFG_TP5.userConfigDelay = userConfigDelay;
  169. msg->payload.CFG_TP5.flags = flags;
  170. completeMsg(&buffer, payloadSize);
  171. return buffer;
  172. }
  173. struct UBXMsgBuffer getAID_ALM_POLL()
  174. {
  175. int payloadSize = sizeof(struct UBXAID_ALM_POLL);
  176. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  177. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  178. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  179. completeMsg(&buffer, payloadSize);
  180. return buffer;
  181. }
  182. struct UBXMsgBuffer getAID_ALM_POLL_OPT(UBXU1_t svid)
  183. {
  184. int payloadSize = sizeof(struct UBXAID_ALM_POLL_OPT);
  185. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  186. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  187. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  188. msg->payload.AID_ALM_POLL_OPT.svid = svid;
  189. completeMsg(&buffer, payloadSize);
  190. return buffer;
  191. }
  192. struct UBXMsgBuffer getAID_ALM(UBXU4_t svid, UBXU4_t week)
  193. {
  194. int payloadSize = sizeof(struct UBXAID_ALM);
  195. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  196. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  197. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALM);
  198. msg->payload.AID_ALM.svid = svid;
  199. msg->payload.AID_ALM.week = week;
  200. completeMsg(&buffer, payloadSize);
  201. return buffer;
  202. }
  203. struct UBXMsgBuffer getAID_ALM_OPT(UBXU4_t svid, UBXU4_t week, UBXU4_t dwrd[8])
  204. {
  205. int payloadSize = sizeof(struct UBXAID_ALM_OPT);
  206. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  207. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  208. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALM);
  209. msg->payload.AID_ALM_OPT.svid = svid;
  210. msg->payload.AID_ALM_OPT.week = week;
  211. memcpy(msg->payload.AID_ALM_OPT.dwrd, dwrd, 8*sizeof(UBXU4_t));
  212. completeMsg(&buffer, payloadSize);
  213. return buffer;
  214. }
  215. struct UBXMsgBuffer getAID_ALP_POLL(UBXU4_t predTow,
  216. UBXU4_t predDur,
  217. UBXI4_t age,
  218. UBXU2_t predWno,
  219. UBXU2_t almWno,
  220. UBXU1_t svs)
  221. {
  222. int payloadSize = sizeof(struct UBXAID_ALP_POLL);
  223. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  224. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  225. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  226. msg->payload.AID_ALP_POLL.predTow = predTow;
  227. msg->payload.AID_ALP_POLL.predDur = predDur;
  228. msg->payload.AID_ALP_POLL.age = age;
  229. msg->payload.AID_ALP_POLL.predWno = predWno;
  230. msg->payload.AID_ALP_POLL.almWno = almWno;
  231. msg->payload.AID_ALP_POLL.svs = svs;
  232. completeMsg(&buffer, payloadSize);
  233. return buffer;
  234. }
  235. struct UBXMsgBuffer getAID_ALP_END()
  236. {
  237. int payloadSize = sizeof(struct UBXAID_ALP_END);
  238. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  239. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  240. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  241. msg->payload.AID_ALP_END.dummy = 0xAA;
  242. completeMsg(&buffer, payloadSize);
  243. return buffer;
  244. }
  245. struct UBXMsgBuffer getAID_ALP(){}
  246. struct UBXMsgBuffer getAID_AOP_POLL()
  247. {
  248. int payloadSize = sizeof(struct UBXAID_AOP_POLL);
  249. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  250. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  251. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP);
  252. completeMsg(&buffer, payloadSize);
  253. return buffer;
  254. }
  255. struct UBXMsgBuffer getAID_AOP_POLL_OPT(UBXU1_t svid)
  256. {
  257. int payloadSize = sizeof(struct UBXAID_AOP_POLL_OPT);
  258. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  259. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  260. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP);
  261. msg->payload.AID_AOP_POLL_OPT.svid = svid;
  262. completeMsg(&buffer, payloadSize);
  263. return buffer;
  264. }
  265. struct UBXMsgBuffer getAID_AOP(){}
  266. struct UBXMsgBuffer getAID_AOP_OPT(){}
  267. struct UBXMsgBuffer getAID_DATA_POLL()
  268. {
  269. int payloadSize = sizeof(struct UBXAID_DATA_POLL);
  270. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  271. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  272. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_DATA);
  273. completeMsg(&buffer, payloadSize);
  274. return buffer;
  275. }
  276. struct UBXMsgBuffer getAID_EPH_POLL()
  277. {
  278. int payloadSize = sizeof(struct UBXAID_EPH_POLL);
  279. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  280. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  281. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH);
  282. completeMsg(&buffer, payloadSize);
  283. return buffer;
  284. }
  285. struct UBXMsgBuffer getAID_EPH_POLL_OPT(UBXU1_t svid)
  286. {
  287. int payloadSize = sizeof(struct UBXAID_EPH_POLL_OPT);
  288. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  289. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  290. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH);
  291. msg->payload.AID_EPH_POLL_OPT.svid = svid;
  292. completeMsg(&buffer, payloadSize);
  293. return buffer;
  294. }
  295. struct UBXMsgBuffer getAID_EPH(){}
  296. struct UBXMsgBuffer getAID_EPH_OPT(){}
  297. struct UBXMsgBuffer getAID_HUI_POLL()
  298. {
  299. int payloadSize = sizeof(struct UBXAID_HUI_POLL);
  300. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  301. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  302. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_HUI);
  303. completeMsg(&buffer, payloadSize);
  304. return buffer;
  305. }
  306. struct UBXMsgBuffer getAID_HUI(){}
  307. struct UBXMsgBuffer getAID_INI_POLL()
  308. {
  309. int payloadSize = sizeof(struct UBXAID_INI_POLL);
  310. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  311. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  312. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_INI);
  313. completeMsg(&buffer, payloadSize);
  314. return buffer;
  315. }
  316. struct UBXMsgBuffer getAID_INI(){}
  317. struct UBXMsgBuffer getCFG_ANT(){}
  318. struct UBXMsgBuffer getCFG_ANT_POLL()
  319. {
  320. int payloadSize = sizeof(struct UBXCFG_ANT_POLL);
  321. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  322. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  323. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ANT);
  324. completeMsg(&buffer, payloadSize);
  325. return buffer;
  326. }
  327. struct UBXMsgBuffer getCFG_CFG(){}
  328. struct UBXMsgBuffer getCFG_CFG_OPT(){}
  329. struct UBXMsgBuffer getCFG_DAT_IN(){}
  330. struct UBXMsgBuffer getCFG_DAT_POLL()
  331. {
  332. int payloadSize = sizeof(struct UBXCFG_DAT_POLL);
  333. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  334. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  335. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_DAT);
  336. completeMsg(&buffer, payloadSize);
  337. return buffer;
  338. }
  339. struct UBXMsgBuffer getCFG_GNSS_POLL()
  340. {
  341. int payloadSize = sizeof(struct UBXCFG_GNSS_POLL);
  342. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  343. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  344. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_GNSS);
  345. completeMsg(&buffer, payloadSize);
  346. return buffer;
  347. }
  348. struct UBXMsgBuffer getCFG_GNSS(){}
  349. struct UBXMsgBuffer getCFG_INF_POLL(UBXU1_t protocolId)
  350. {
  351. int payloadSize = sizeof(struct UBXCFG_INF_POLL);
  352. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  353. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  354. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_INF);
  355. msg->payload.CFG_INF_POLL.protocolId = protocolId;
  356. completeMsg(&buffer, payloadSize);
  357. return buffer;
  358. }
  359. struct UBXMsgBuffer getCFG_INF(){}
  360. struct UBXMsgBuffer getCFG_ITFM_POLL()
  361. {
  362. int payloadSize = sizeof(struct UBXCFG_ITFM_POLL);
  363. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  364. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  365. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ITFM);
  366. completeMsg(&buffer, payloadSize);
  367. return buffer;
  368. }
  369. struct UBXMsgBuffer getCFG_ITFM(){}
  370. struct UBXMsgBuffer getCFG_LOGFILTER_POLL()
  371. {
  372. int payloadSize = sizeof(struct UBXCFG_LOGFILTER_POLL);
  373. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  374. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  375. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_LOGFILTER);
  376. completeMsg(&buffer, payloadSize);
  377. return buffer;
  378. }
  379. struct UBXMsgBuffer getCFG_LOGFILTER(){}
  380. struct UBXMsgBuffer getCFG_NAV5_POLL()
  381. {
  382. int payloadSize = sizeof(struct UBXCFG_NAV5_POLL);
  383. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  384. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  385. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAV5);
  386. completeMsg(&buffer, payloadSize);
  387. return buffer;
  388. }
  389. struct UBXMsgBuffer getCFG_NAV5(){}
  390. struct UBXMsgBuffer getCFG_NAVX5_POLL()
  391. {
  392. int payloadSize = sizeof(struct UBXCFG_NAVX5_POLL);
  393. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  394. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  395. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAVX5);
  396. completeMsg(&buffer, payloadSize);
  397. return buffer;
  398. }
  399. struct UBXMsgBuffer getCFG_NAVX5(){}
  400. struct UBXMsgBuffer getCFG_NMEA_POLL()
  401. {
  402. int payloadSize = sizeof(struct UBXCFG_NMEA_POLL);
  403. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  404. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  405. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NMEA);
  406. completeMsg(&buffer, payloadSize);
  407. return buffer;
  408. }
  409. struct UBXMsgBuffer getCFG_NMEA(){}
  410. struct UBXMsgBuffer getCFG_NVS(){}
  411. struct UBXMsgBuffer getCFG_PM2_POLL()
  412. {
  413. int payloadSize = sizeof(struct UBXCFG_PM2_POLL);
  414. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  415. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  416. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PM2);
  417. completeMsg(&buffer, payloadSize);
  418. return buffer;
  419. }
  420. struct UBXMsgBuffer getCFG_PM2(){}
  421. struct UBXMsgBuffer getCFG_PRT_POLL()
  422. {
  423. int payloadSize = sizeof(struct UBXCFG_PRT_POLL);
  424. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  425. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  426. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PRT);
  427. completeMsg(&buffer, payloadSize);
  428. return buffer;
  429. }
  430. struct UBXMsgBuffer getCFG_PRT_POLL_OPT(UBXU1_t portId)
  431. {
  432. int payloadSize = sizeof(struct UBXCFG_PRT_POLL_OPT);
  433. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  434. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  435. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PRT);
  436. msg->payload.CFG_PRT_POLL_OPT.portId = portId;
  437. completeMsg(&buffer, payloadSize);
  438. return buffer;
  439. }
  440. struct UBXMsgBuffer getCFG_PRT(){}
  441. struct UBXMsgBuffer getCFG_RATE_POLL()
  442. {
  443. int payloadSize = sizeof(struct UBXCFG_RATE_POLL);
  444. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  445. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  446. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RATE);
  447. completeMsg(&buffer, payloadSize);
  448. return buffer;
  449. }
  450. struct UBXMsgBuffer getCFG_RATE(){}
  451. struct UBXMsgBuffer getCFG_RINV(){}
  452. struct UBXMsgBuffer getCFG_RINV_POLL()
  453. {
  454. int payloadSize = sizeof(struct UBXCFG_RINV_POLL);
  455. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  456. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  457. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RINV);
  458. completeMsg(&buffer, payloadSize);
  459. return buffer;
  460. }
  461. struct UBXMsgBuffer getCFG_RXM(){}
  462. struct UBXMsgBuffer getCFG_RXM_POLL()
  463. {
  464. int payloadSize = sizeof(struct UBXCFG_RXM_POLL);
  465. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  466. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  467. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RXM);
  468. completeMsg(&buffer, payloadSize);
  469. return buffer;
  470. }
  471. struct UBXMsgBuffer getCFG_SBAS(){}
  472. struct UBXMsgBuffer getCFG_SBAS_POLL()
  473. {
  474. int payloadSize = sizeof(struct UBXCFG_SBAS_POLL);
  475. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  476. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  477. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_SBAS);
  478. completeMsg(&buffer, payloadSize);
  479. return buffer;
  480. }
  481. struct UBXMsgBuffer getCFG_TP5_POLL()
  482. {
  483. int payloadSize = sizeof(struct UBXCFG_TP5_POLL);
  484. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  485. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  486. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_TP5);
  487. completeMsg(&buffer, payloadSize);
  488. return buffer;
  489. }
  490. struct UBXMsgBuffer getCFG_USB_POLL()
  491. {
  492. int payloadSize = sizeof(struct UBXCFG_USB_POLL);
  493. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  494. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  495. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_USB);
  496. completeMsg(&buffer, payloadSize);
  497. return buffer;
  498. }
  499. struct UBXMsgBuffer getCFG_USB(){}
  500. struct UBXMsgBuffer getLOG_CREATE(){}
  501. struct UBXMsgBuffer getLOG_ERASE(){}
  502. struct UBXMsgBuffer getLOG_FINDTIME_IN(){}
  503. struct UBXMsgBuffer getLOG_INFO_POLL()
  504. {
  505. int payloadSize = sizeof(struct UBXCFG_INF_POLL);
  506. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  507. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  508. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_INF);
  509. completeMsg(&buffer, payloadSize);
  510. return buffer;
  511. }
  512. struct UBXMsgBuffer getLOG_RETRIEVE(){}
  513. struct UBXMsgBuffer getLOG_STRING(){}
  514. struct UBXMsgBuffer getMON_VER_POLL()
  515. {
  516. int payloadSize = sizeof(struct UBXMON_VER_POLL);
  517. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  518. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  519. initMsg(msg, payloadSize, UBXMsgClassMON, UBXMsgIdMON_VER);
  520. completeMsg(&buffer, payloadSize);
  521. return buffer;
  522. }
  523. struct UBXMsgBuffer getRXM_ALM_POLL()
  524. {
  525. int payloadSize = sizeof(struct UBXRXM_ALM_POLL);
  526. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  527. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  528. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_ALM);
  529. completeMsg(&buffer, payloadSize);
  530. return buffer;
  531. }
  532. struct UBXMsgBuffer getRXM_ALM_POLL_OPT(UBXU1_t svid)
  533. {
  534. int payloadSize = sizeof(struct UBXRXM_ALM_POLL_OPT);
  535. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  536. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  537. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_ALM);
  538. msg->payload.RXM_ALM_POLL_OPT.svid = svid;
  539. completeMsg(&buffer, payloadSize);
  540. return buffer;
  541. }
  542. struct UBXMsgBuffer getRXM_EPH_POLL()
  543. {
  544. int payloadSize = sizeof(struct UBXRXM_EPH_POLL);
  545. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  546. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  547. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_EPH);
  548. completeMsg(&buffer, payloadSize);
  549. return buffer;
  550. }
  551. struct UBXMsgBuffer getRXM_EPH_POLL_OPT(UBXU1_t svid)
  552. {
  553. int payloadSize = sizeof(struct UBXRXM_EPH_POLL_OPT);
  554. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  555. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  556. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_ALM);
  557. msg->payload.RXM_ALM_POLL_OPT.svid = svid;
  558. completeMsg(&buffer, payloadSize);
  559. return buffer;
  560. }
  561. struct UBXMsgBuffer getRXM_PMREQ(){}
  562. struct UBXMsgBuffer getRXM_SVSI(){}