ubx.c 139 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174
  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, UBXU1_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, UBXU1_t rate[])
  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(int mode, UBXU2_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_RST_OPT(enum UBXBBRSpecialSets special, UBXU2_t mask)
  138. {
  139. int payloadSize = sizeof(struct UBXCFG_RST);
  140. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  141. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  142. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RST);
  143. msg->payload.CFG_RST.resetMode = special;
  144. msg->payload.CFG_RST.navBBRMask = mask;
  145. completeMsg(&buffer, payloadSize);
  146. return buffer;
  147. }
  148. struct UBXMsgBuffer getCFG_TP5_POLL_OPT(enum UBXCFGTimepulses tpIdx)
  149. {
  150. int payloadSize = sizeof(struct UBXCFG_TP5_POLL_OPT);
  151. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  152. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  153. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_TP5);
  154. msg->payload.CFG_TP5_POLL_OPT.tpIdx = tpIdx;
  155. completeMsg(&buffer, payloadSize);
  156. return buffer;
  157. }
  158. struct UBXMsgBuffer getCFG_TP5(enum UBXCFGTimepulses tpIdx,
  159. int16_t antCableDelay,
  160. int16_t rfGroupDelay,
  161. u_int32_t freqPeriod,
  162. u_int32_t freqPeriodLock,
  163. u_int32_t pulseLenRatio,
  164. u_int32_t pulseLenRatioLock,
  165. int32_t userConfigDelay,
  166. int32_t flags)
  167. {
  168. int payloadSize = sizeof(struct UBXCFG_TP5);
  169. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  170. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  171. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_TP5);
  172. msg->payload.CFG_TP5.tpIdx = tpIdx;
  173. msg->payload.CFG_TP5.antCableDelay = antCableDelay;
  174. msg->payload.CFG_TP5.rfGroupDelay = rfGroupDelay;
  175. msg->payload.CFG_TP5.freqPeriod = freqPeriod;
  176. msg->payload.CFG_TP5.freqPeriodLock = freqPeriodLock;
  177. msg->payload.CFG_TP5.pulseLenRatio = pulseLenRatio;
  178. msg->payload.CFG_TP5.pulseLenRatioLock = pulseLenRatioLock;
  179. msg->payload.CFG_TP5.userConfigDelay = userConfigDelay;
  180. msg->payload.CFG_TP5.flags = flags;
  181. completeMsg(&buffer, payloadSize);
  182. return buffer;
  183. }
  184. struct UBXMsgBuffer getAID_ALM_POLL()
  185. {
  186. int payloadSize = sizeof(struct UBXAID_ALM_POLL);
  187. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  188. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  189. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  190. completeMsg(&buffer, payloadSize);
  191. return buffer;
  192. }
  193. struct UBXMsgBuffer getAID_ALM_POLL_OPT(UBXU1_t svid)
  194. {
  195. int payloadSize = sizeof(struct UBXAID_ALM_POLL_OPT);
  196. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  197. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  198. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  199. msg->payload.AID_ALM_POLL_OPT.svid = svid;
  200. completeMsg(&buffer, payloadSize);
  201. return buffer;
  202. }
  203. struct UBXMsgBuffer getAID_ALM(UBXU4_t svid, UBXU4_t week)
  204. {
  205. int payloadSize = sizeof(struct UBXAID_ALM);
  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.svid = svid;
  210. msg->payload.AID_ALM.week = week;
  211. completeMsg(&buffer, payloadSize);
  212. return buffer;
  213. }
  214. struct UBXMsgBuffer getAID_ALM_OPT(UBXU4_t svid, UBXU4_t week, UBXU4_t dwrd[8])
  215. {
  216. int payloadSize = sizeof(struct UBXAID_ALM_OPT);
  217. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  218. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  219. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALM);
  220. msg->payload.AID_ALM_OPT.svid = svid;
  221. msg->payload.AID_ALM_OPT.week = week;
  222. memcpy(msg->payload.AID_ALM_OPT.dwrd, dwrd, 8*sizeof(UBXU4_t));
  223. completeMsg(&buffer, payloadSize);
  224. return buffer;
  225. }
  226. struct UBXMsgBuffer getAID_ALP_POLL(UBXU4_t predTow,
  227. UBXU4_t predDur,
  228. UBXI4_t age,
  229. UBXU2_t predWno,
  230. UBXU2_t almWno,
  231. UBXU1_t svs)
  232. {
  233. int payloadSize = sizeof(struct UBXAID_ALP_POLL);
  234. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  235. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  236. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  237. msg->payload.AID_ALP_POLL.predTow = predTow;
  238. msg->payload.AID_ALP_POLL.predDur = predDur;
  239. msg->payload.AID_ALP_POLL.age = age;
  240. msg->payload.AID_ALP_POLL.predWno = predWno;
  241. msg->payload.AID_ALP_POLL.almWno = almWno;
  242. msg->payload.AID_ALP_POLL.svs = svs;
  243. completeMsg(&buffer, payloadSize);
  244. return buffer;
  245. }
  246. struct UBXMsgBuffer getAID_ALP_END()
  247. {
  248. int payloadSize = sizeof(struct UBXAID_ALP_END);
  249. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  250. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  251. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  252. msg->payload.AID_ALP_END.dummy = 0xAA;
  253. completeMsg(&buffer, payloadSize);
  254. return buffer;
  255. }
  256. struct UBXMsgBuffer getAID_ALP(UBXU2_t* chunk, int chunkSize)
  257. {
  258. int payloadSize = sizeof(struct UBXAID_ALP) + chunkSize;
  259. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  260. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  261. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  262. memcpy(&(msg->payload) + sizeof(struct UBXAID_ALP), chunk, chunkSize);
  263. completeMsg(&buffer, payloadSize);
  264. return buffer;
  265. }
  266. struct UBXMsgBuffer getAID_AOP_POLL()
  267. {
  268. int payloadSize = sizeof(struct UBXAID_AOP_POLL);
  269. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  270. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  271. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP);
  272. completeMsg(&buffer, payloadSize);
  273. return buffer;
  274. }
  275. struct UBXMsgBuffer getAID_AOP_POLL_OPT(UBXU1_t svid)
  276. {
  277. int payloadSize = sizeof(struct UBXAID_AOP_POLL_OPT);
  278. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  279. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  280. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP);
  281. msg->payload.AID_AOP_POLL_OPT.svid = svid;
  282. completeMsg(&buffer, payloadSize);
  283. return buffer;
  284. }
  285. struct UBXMsgBuffer getAID_AOP(UBXU1_t svid, UBXU1_t data[59])
  286. {
  287. int payloadSize = sizeof(struct UBXAID_AOP);
  288. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  289. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  290. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP);
  291. msg->payload.AID_AOP.svid = svid;
  292. memcpy(msg->payload.AID_AOP.data, data, 59*sizeof(UBXU1_t));
  293. completeMsg(&buffer, payloadSize);
  294. return buffer;
  295. }
  296. struct UBXMsgBuffer getAID_AOP_OPT(UBXU1_t svid, UBXU1_t data[59], UBXU1_t optional0[48], UBXU1_t optional1[48], UBXU1_t optional2[48])
  297. {
  298. int payloadSize = sizeof(struct UBXAID_AOP_OPT);
  299. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  300. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  301. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP);
  302. msg->payload.AID_AOP_OPT.svid = svid;
  303. memcpy(msg->payload.AID_AOP_OPT.data, data, 59*sizeof(UBXU1_t));
  304. memcpy(msg->payload.AID_AOP_OPT.optional0, optional0, 48*sizeof(UBXU1_t));
  305. memcpy(msg->payload.AID_AOP_OPT.optional1, optional1, 48*sizeof(UBXU1_t));
  306. memcpy(msg->payload.AID_AOP_OPT.optional2, optional2, 48*sizeof(UBXU1_t));
  307. completeMsg(&buffer, payloadSize);
  308. return buffer;
  309. }
  310. struct UBXMsgBuffer getAID_DATA_POLL()
  311. {
  312. int payloadSize = sizeof(struct UBXAID_DATA_POLL);
  313. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  314. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  315. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_DATA);
  316. completeMsg(&buffer, payloadSize);
  317. return buffer;
  318. }
  319. struct UBXMsgBuffer getAID_EPH_POLL()
  320. {
  321. int payloadSize = sizeof(struct UBXAID_EPH_POLL);
  322. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  323. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  324. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH);
  325. completeMsg(&buffer, payloadSize);
  326. return buffer;
  327. }
  328. struct UBXMsgBuffer getAID_EPH_POLL_OPT(UBXU1_t svid)
  329. {
  330. int payloadSize = sizeof(struct UBXAID_EPH_POLL_OPT);
  331. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  332. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  333. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH);
  334. msg->payload.AID_EPH_POLL_OPT.svid = svid;
  335. completeMsg(&buffer, payloadSize);
  336. return buffer;
  337. }
  338. struct UBXMsgBuffer getAID_EPH(UBXU4_t svid, UBXU4_t how)
  339. {
  340. int payloadSize = sizeof(struct UBXAID_EPH);
  341. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  342. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  343. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH);
  344. msg->payload.AID_EPH.svid = svid;
  345. msg->payload.AID_EPH.how = how;
  346. completeMsg(&buffer, payloadSize);
  347. return buffer;
  348. }
  349. struct UBXMsgBuffer getAID_EPH_OPT(UBXU4_t svid, UBXU4_t how, UBXU4_t sf1d[8], UBXU4_t sf2d[8], UBXU4_t sf3d[8])
  350. {
  351. int payloadSize = sizeof(struct UBXAID_EPH_OPT);
  352. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  353. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  354. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH);
  355. msg->payload.AID_EPH_OPT.svid = svid;
  356. msg->payload.AID_EPH_OPT.how = how;
  357. memcpy(msg->payload.AID_EPH_OPT.sf1d, sf1d, 8*sizeof(UBXU4_t));
  358. memcpy(msg->payload.AID_EPH_OPT.sf2d, sf2d, 8*sizeof(UBXU4_t));
  359. memcpy(msg->payload.AID_EPH_OPT.sf3d, sf3d, 8*sizeof(UBXU4_t));
  360. completeMsg(&buffer, payloadSize);
  361. return buffer;
  362. }
  363. struct UBXMsgBuffer getAID_HUI_POLL()
  364. {
  365. int payloadSize = sizeof(struct UBXAID_HUI_POLL);
  366. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  367. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  368. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_HUI);
  369. completeMsg(&buffer, payloadSize);
  370. return buffer;
  371. }
  372. struct UBXMsgBuffer getAID_HUI(UBXI4_t health,
  373. UBXR4_t utcA0,
  374. UBXR4_t utcA1,
  375. UBXI4_t utcTOW,
  376. UBXI2_t utcWNT,
  377. UBXI2_t utcLS,
  378. UBXI2_t utcWNF,
  379. UBXI2_t utcDN,
  380. UBXI2_t utcLSF,
  381. UBXI2_t utcSpare,
  382. UBXR4_t klobA0,
  383. UBXR4_t klobA1,
  384. UBXR4_t klobA2,
  385. UBXR4_t klobA3,
  386. UBXR4_t klobB0,
  387. UBXR4_t klobB1,
  388. UBXR4_t klobB2,
  389. UBXR4_t klobB3,
  390. UBXX2_t flags)
  391. {
  392. int payloadSize = sizeof(struct UBXAID_HUI);
  393. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  394. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  395. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_HUI);
  396. msg->payload.AID_HUI.health = health;
  397. msg->payload.AID_HUI.utcA0 = utcA0;
  398. msg->payload.AID_HUI.utcA1 = utcA1;
  399. msg->payload.AID_HUI.utcTOW = utcTOW;
  400. msg->payload.AID_HUI.utcWNT = utcWNT;
  401. msg->payload.AID_HUI.utcLS = utcLS;
  402. msg->payload.AID_HUI.utcWNF = utcWNF;
  403. msg->payload.AID_HUI.utcDN = utcDN;
  404. msg->payload.AID_HUI.utcLSF = utcLSF;
  405. msg->payload.AID_HUI.utcSpare = utcSpare;
  406. msg->payload.AID_HUI.klobA0 = klobA0;
  407. msg->payload.AID_HUI.klobA1 = klobA1;
  408. msg->payload.AID_HUI.klobA2 = klobA2;
  409. msg->payload.AID_HUI.klobA3 = klobA3;
  410. msg->payload.AID_HUI.klobA0 = klobB0;
  411. msg->payload.AID_HUI.klobA1 = klobB1;
  412. msg->payload.AID_HUI.klobA2 = klobB2;
  413. msg->payload.AID_HUI.klobA3 = klobB3;
  414. msg->payload.AID_HUI.flags = flags;
  415. completeMsg(&buffer, payloadSize);
  416. return buffer;
  417. }
  418. struct UBXMsgBuffer getAID_INI_POLL()
  419. {
  420. int payloadSize = sizeof(struct UBXAID_INI_POLL);
  421. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  422. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  423. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_INI);
  424. completeMsg(&buffer, payloadSize);
  425. return buffer;
  426. }
  427. struct UBXMsgBuffer getAID_INI(UBXI1_t ecefXOrLat,
  428. UBXI1_t ecefYOrLat,
  429. UBXI1_t ecefZOrLat,
  430. UBXU1_t posAcc,
  431. UBXI1_t tmCfg,
  432. UBXU2_t wnoOrDate,
  433. UBXU4_t towOrDate,
  434. UBXI4_t towNs,
  435. UBXU4_t tAccMS,
  436. UBXU4_t tAccNS,
  437. UBXI4_t clkDOrFreq,
  438. UBXU4_t clkDAccOrFreqAcc,
  439. UBXX4_t flags)
  440. {
  441. int payloadSize = sizeof(struct UBXAID_INI);
  442. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  443. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  444. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_INI);
  445. msg->payload.AID_INI.ecefXOrLat = ecefXOrLat;
  446. msg->payload.AID_INI.ecefYOrLat = ecefYOrLat;
  447. msg->payload.AID_INI.ecefZOrLat = ecefZOrLat;
  448. msg->payload.AID_INI.posAcc = posAcc;
  449. msg->payload.AID_INI.tmCfg = tmCfg;
  450. msg->payload.AID_INI.wnoOrDate = wnoOrDate;
  451. msg->payload.AID_INI.towOrDate = towOrDate;
  452. msg->payload.AID_INI.towNs = towNs;
  453. msg->payload.AID_INI.tAccMS = tAccMS;
  454. msg->payload.AID_INI.tAccNS = tAccNS;
  455. msg->payload.AID_INI.clkDOrFreq = clkDOrFreq;
  456. msg->payload.AID_INI.clkDAccOrFreqAcc = clkDAccOrFreqAcc;
  457. msg->payload.AID_INI.flags = flags;
  458. completeMsg(&buffer, payloadSize);
  459. return buffer;
  460. }
  461. struct UBXMsgBuffer getCFG_ANT(UBXX2_t flags, struct UBXANTPins pins)
  462. {
  463. int payloadSize = sizeof(struct UBXCFG_ANT);
  464. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  465. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  466. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ANT);
  467. msg->payload.CFG_ANT.flags = flags;
  468. msg->payload.CFG_ANT.pins = pins;
  469. completeMsg(&buffer, payloadSize);
  470. return buffer;
  471. }
  472. struct UBXMsgBuffer getCFG_ANT_POLL()
  473. {
  474. int payloadSize = sizeof(struct UBXCFG_ANT_POLL);
  475. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  476. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  477. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ANT);
  478. completeMsg(&buffer, payloadSize);
  479. return buffer;
  480. }
  481. struct UBXMsgBuffer getCFG_CFG(UBXX4_t clearMask, UBXX4_t saveMask, UBXX4_t loadMask)
  482. {
  483. int payloadSize = sizeof(struct UBXCFG_CFG);
  484. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  485. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  486. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_CFG);
  487. msg->payload.CFG_CFG.clearMask = clearMask;
  488. msg->payload.CFG_CFG.saveMask = saveMask;
  489. msg->payload.CFG_CFG.loadMask = loadMask;
  490. completeMsg(&buffer, payloadSize);
  491. return buffer;
  492. }
  493. struct UBXMsgBuffer getCFG_CFG_OPT(UBXX4_t clearMask, UBXX4_t saveMask, UBXX4_t loadMask, UBXX1_t deviceMask)
  494. {
  495. int payloadSize = sizeof(struct UBXCFG_CFG_OPT);
  496. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  497. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  498. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_CFG);
  499. msg->payload.CFG_CFG_OPT.clearMask = clearMask;
  500. msg->payload.CFG_CFG_OPT.saveMask = saveMask;
  501. msg->payload.CFG_CFG_OPT.loadMask = loadMask;
  502. msg->payload.CFG_CFG_OPT.deviceMask = deviceMask;
  503. completeMsg(&buffer, payloadSize);
  504. return buffer;
  505. }
  506. struct UBXMsgBuffer getCFG_DAT_IN(UBXR8_t majA, UBXR8_t flat, UBXR4_t dX, UBXR4_t dY, UBXR4_t dZ, UBXR4_t rotX, UBXR4_t rotY, UBXR4_t rotZ, UBXR4_t scale)
  507. {
  508. int payloadSize = sizeof(struct UBXCFG_DAT_IN);
  509. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  510. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  511. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_CFG);
  512. msg->payload.CFG_DAT_IN.majA = majA;
  513. msg->payload.CFG_DAT_IN.flat = flat;
  514. msg->payload.CFG_DAT_IN.dX = dX;
  515. msg->payload.CFG_DAT_IN.dY = dY;
  516. msg->payload.CFG_DAT_IN.dZ = dZ;
  517. msg->payload.CFG_DAT_IN.rotX = rotX;
  518. msg->payload.CFG_DAT_IN.rotY = rotY;
  519. msg->payload.CFG_DAT_IN.rotZ = rotZ;
  520. msg->payload.CFG_DAT_IN.scale = scale;
  521. completeMsg(&buffer, payloadSize);
  522. return buffer;
  523. }
  524. struct UBXMsgBuffer getCFG_DAT_POLL()
  525. {
  526. int payloadSize = sizeof(struct UBXCFG_DAT_POLL);
  527. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  528. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  529. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_DAT);
  530. completeMsg(&buffer, payloadSize);
  531. return buffer;
  532. }
  533. struct UBXMsgBuffer getCFG_GNSS_POLL()
  534. {
  535. int payloadSize = sizeof(struct UBXCFG_GNSS_POLL);
  536. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  537. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  538. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_GNSS);
  539. completeMsg(&buffer, payloadSize);
  540. return buffer;
  541. }
  542. struct UBXMsgBuffer getCFG_GNSS(UBXU1_t msgVer,
  543. UBXU1_t numTrkChHw,
  544. UBXU1_t numTrkChUse,
  545. UBXU1_t numConfigBlocks,
  546. struct UBXCFG_GNSS_PART* gnssPart,
  547. int gnssPartCount)
  548. {
  549. int payloadSize = sizeof(struct UBXCFG_GNSS) + gnssPartCount*sizeof(struct UBXCFG_GNSS_PART);
  550. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  551. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  552. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_GNSS);
  553. msg->payload.CFG_GNSS.msgVer = msgVer;
  554. msg->payload.CFG_GNSS.numTrkChHw = numTrkChHw;
  555. msg->payload.CFG_GNSS.numTrkChUse = numTrkChUse;
  556. msg->payload.CFG_GNSS.numConfigBlocks = numConfigBlocks;
  557. memcpy(&(msg->payload.CFG_GNSS) + sizeof(struct UBXCFG_GNSS), gnssPart, gnssPartCount*sizeof(struct UBXCFG_GNSS_PART));
  558. completeMsg(&buffer, payloadSize);
  559. return buffer;
  560. }
  561. struct UBXMsgBuffer getCFG_INF_POLL(UBXU1_t protocolId)
  562. {
  563. int payloadSize = sizeof(struct UBXCFG_INF_POLL);
  564. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  565. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  566. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_INF);
  567. msg->payload.CFG_INF_POLL.protocolId = protocolId;
  568. completeMsg(&buffer, payloadSize);
  569. return buffer;
  570. }
  571. struct UBXMsgBuffer getCFG_INF(struct UBXCFG_INF_PART* infPart, int infPartCount)
  572. {
  573. int payloadSize = sizeof(struct UBXCFG_INF) + sizeof(struct UBXCFG_INF_PART)*infPartCount;
  574. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  575. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  576. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_INF);
  577. memcpy(&(msg->payload.CFG_INF) + sizeof(struct UBXCFG_INF), infPart, infPartCount*sizeof(struct UBXCFG_INF_PART));
  578. completeMsg(&buffer, payloadSize);
  579. return buffer;
  580. }
  581. struct UBXMsgBuffer getCFG_ITFM_POLL()
  582. {
  583. int payloadSize = sizeof(struct UBXCFG_ITFM_POLL);
  584. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  585. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  586. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ITFM);
  587. completeMsg(&buffer, payloadSize);
  588. return buffer;
  589. }
  590. struct UBXMsgBuffer getCFG_ITFM(struct UBXITFMConfig config,
  591. struct UBXITFMConfig2 config2)
  592. {
  593. int payloadSize = sizeof(struct UBXCFG_ITFM);
  594. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  595. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  596. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ITFM);
  597. msg->payload.CFG_ITFM.config = config;
  598. msg->payload.CFG_ITFM.config2 = config2;
  599. completeMsg(&buffer, payloadSize);
  600. return buffer;
  601. }
  602. struct UBXMsgBuffer getCFG_LOGFILTER_POLL()
  603. {
  604. int payloadSize = sizeof(struct UBXCFG_LOGFILTER_POLL);
  605. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  606. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  607. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_LOGFILTER);
  608. completeMsg(&buffer, payloadSize);
  609. return buffer;
  610. }
  611. struct UBXMsgBuffer getCFG_LOGFILTER(UBXU1_t version,
  612. UBXX1_t flags,
  613. UBXU2_t minIterval,
  614. UBXU2_t timeThreshold,
  615. UBXU2_t speedThreshold,
  616. UBXU4_t positionThreshold)
  617. {
  618. int payloadSize = sizeof(struct UBXCFG_LOGFILTER);
  619. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  620. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  621. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_LOGFILTER);
  622. msg->payload.CFG_LOGFILTER.version = version;
  623. msg->payload.CFG_LOGFILTER.flags = flags;
  624. msg->payload.CFG_LOGFILTER.minIterval = minIterval;
  625. msg->payload.CFG_LOGFILTER.timeThreshold = timeThreshold;
  626. msg->payload.CFG_LOGFILTER.speedThreshold = speedThreshold;
  627. msg->payload.CFG_LOGFILTER.positionThreshold = positionThreshold;
  628. completeMsg(&buffer, payloadSize);
  629. return buffer;
  630. }
  631. struct UBXMsgBuffer getCFG_NAV5_POLL()
  632. {
  633. int payloadSize = sizeof(struct UBXCFG_NAV5_POLL);
  634. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  635. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  636. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAV5);
  637. completeMsg(&buffer, payloadSize);
  638. return buffer;
  639. }
  640. struct UBXMsgBuffer getCFG_NAV5(UBXX2_t mask,
  641. enum UBXNAV5Model dynModel,
  642. enum UBXNAV5FixMode fixMode,
  643. UBXI4_t fixedAlt,
  644. UBXU4_t fixedAltVar,
  645. UBXI1_t minElev,
  646. UBXU1_t drLimit,
  647. UBXU2_t pDop,
  648. UBXU2_t tDop,
  649. UBXU2_t pAcc,
  650. UBXU2_t tAcc,
  651. UBXU1_t staticHoldThresh,
  652. UBXU1_t dgpsTimeOut,
  653. UBXU1_t cnoThreshNumSVs,
  654. UBXU1_t cnoThresh)
  655. {
  656. int payloadSize = sizeof(struct UBXCFG_NAV5);
  657. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  658. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  659. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAV5);
  660. msg->payload.CFG_NAV5.mask = mask;
  661. msg->payload.CFG_NAV5.dynModel = dynModel;
  662. msg->payload.CFG_NAV5.fixMode = fixMode;
  663. msg->payload.CFG_NAV5.fixedAlt = fixedAlt;
  664. msg->payload.CFG_NAV5.fixedAltVar = fixedAltVar;
  665. msg->payload.CFG_NAV5.minElev = minElev;
  666. msg->payload.CFG_NAV5.drLimit = drLimit;
  667. msg->payload.CFG_NAV5.pDop = pDop;
  668. msg->payload.CFG_NAV5.tDop = tDop;
  669. msg->payload.CFG_NAV5.pAcc = pAcc;
  670. msg->payload.CFG_NAV5.tAcc = tAcc;
  671. msg->payload.CFG_NAV5.staticHoldThresh = staticHoldThresh;
  672. msg->payload.CFG_NAV5.dgpsTimeOut = dgpsTimeOut;
  673. msg->payload.CFG_NAV5.cnoThreshNumSVs = cnoThreshNumSVs;
  674. msg->payload.CFG_NAV5.cnoThresh = cnoThresh;
  675. msg->payload.CFG_NAV5.reserved2 = 0;
  676. msg->payload.CFG_NAV5.reserved3 = 0;
  677. msg->payload.CFG_NAV5.reserved4 = 0;
  678. completeMsg(&buffer, payloadSize);
  679. return buffer;
  680. }
  681. struct UBXMsgBuffer getCFG_NAVX5_POLL()
  682. {
  683. int payloadSize = sizeof(struct UBXCFG_NAVX5_POLL);
  684. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  685. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  686. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAVX5);
  687. completeMsg(&buffer, payloadSize);
  688. return buffer;
  689. }
  690. struct UBXMsgBuffer getCFG_NAVX5(UBXU2_t version,
  691. UBXX2_t mask1,
  692. UBXU1_t minSVs,
  693. UBXU1_t maxSVs,
  694. UBXU1_t minCNO,
  695. UBXU1_t iniFix3D,
  696. UBXU2_t wknRollover,
  697. UBXU1_t usePPP,
  698. UBXU1_t aopCFG,
  699. UBXU1_t aopOrbMaxErr)
  700. {
  701. int payloadSize = sizeof(struct UBXCFG_NAVX5);
  702. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  703. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  704. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAVX5);
  705. msg->payload.CFG_NAVX5.version = version;
  706. msg->payload.CFG_NAVX5.mask1 = mask1;
  707. msg->payload.CFG_NAVX5.reserved0 = 0;
  708. msg->payload.CFG_NAVX5.reserved1 = 0;
  709. msg->payload.CFG_NAVX5.reserved2 = 0;
  710. msg->payload.CFG_NAVX5.minSVs = minSVs;
  711. msg->payload.CFG_NAVX5.maxSVs = maxSVs;
  712. msg->payload.CFG_NAVX5.minCNO = minCNO;
  713. msg->payload.CFG_NAVX5.reserved5 = 0;
  714. msg->payload.CFG_NAVX5.iniFix3D = iniFix3D;
  715. msg->payload.CFG_NAVX5.reserved6 = 0;
  716. msg->payload.CFG_NAVX5.reserved7 = 0;
  717. msg->payload.CFG_NAVX5.reserved8 = 0;
  718. msg->payload.CFG_NAVX5.wknRollover = wknRollover;
  719. msg->payload.CFG_NAVX5.reserved9 = 0;
  720. msg->payload.CFG_NAVX5.reserved10 = 0;
  721. msg->payload.CFG_NAVX5.reserved11 = 0;
  722. msg->payload.CFG_NAVX5.usePPP = usePPP;
  723. msg->payload.CFG_NAVX5.aopCFG = aopCFG;
  724. msg->payload.CFG_NAVX5.reserved12 = 0;
  725. msg->payload.CFG_NAVX5.reserved13 = 0;
  726. msg->payload.CFG_NAVX5.aopOrbMaxErr = aopOrbMaxErr;
  727. msg->payload.CFG_NAVX5.reserved14 = 0;
  728. msg->payload.CFG_NAVX5.reserved15 = 0;
  729. msg->payload.CFG_NAVX5.reserved3 = 0;
  730. msg->payload.CFG_NAVX5.reserved4 = 0;
  731. completeMsg(&buffer, payloadSize);
  732. return buffer;
  733. }
  734. struct UBXMsgBuffer getCFG_NMEA_POLL()
  735. {
  736. int payloadSize = sizeof(struct UBXCFG_NMEA_POLL);
  737. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  738. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  739. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NMEA);
  740. completeMsg(&buffer, payloadSize);
  741. return buffer;
  742. }
  743. struct UBXMsgBuffer getCFG_NMEA(UBXX1_t filter,
  744. UBXU1_t nmeaVersion,
  745. UBXU1_t numSV,
  746. UBXX1_t flags,
  747. UBXX4_t gnssToFilter,
  748. enum UBXNMEASVNumbering svNumbering,
  749. enum UBXNMEATalkerIds mainTalkerId,
  750. enum UBXNMEAGSVTalkerIds gsvTalkerId)
  751. {
  752. int payloadSize = sizeof(struct UBXCFG_NMEA);
  753. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  754. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  755. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NMEA);
  756. msg->payload.CFG_NMEA.filter = filter;
  757. msg->payload.CFG_NMEA.nmeaVersion = nmeaVersion;
  758. msg->payload.CFG_NMEA.numSV = numSV;
  759. msg->payload.CFG_NMEA.flags = flags;
  760. msg->payload.CFG_NMEA.gnssToFilter = gnssToFilter;
  761. msg->payload.CFG_NMEA.svNumbering = svNumbering;
  762. msg->payload.CFG_NMEA.mainTalkerId = mainTalkerId;
  763. msg->payload.CFG_NMEA.gsvTalkerId = gsvTalkerId;
  764. msg->payload.CFG_NMEA.reserved = 0;
  765. completeMsg(&buffer, payloadSize);
  766. return buffer;
  767. }
  768. struct UBXMsgBuffer getCFG_NVS(UBXX4_t clearMask,
  769. UBXX4_t saveMask,
  770. UBXX4_t loadMask,
  771. UBXX1_t deviceMask)
  772. {
  773. int payloadSize = sizeof(struct UBXCFG_NVS);
  774. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  775. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  776. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NVS);
  777. msg->payload.CFG_NVS.clearMask = clearMask;
  778. msg->payload.CFG_NVS.saveMask = saveMask;
  779. msg->payload.CFG_NVS.loadMask = loadMask;
  780. msg->payload.CFG_NVS.deviceMask = deviceMask;
  781. completeMsg(&buffer, payloadSize);
  782. return buffer;
  783. }
  784. struct UBXMsgBuffer getCFG_PM2_POLL()
  785. {
  786. int payloadSize = sizeof(struct UBXCFG_PM2_POLL);
  787. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  788. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  789. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PM2);
  790. completeMsg(&buffer, payloadSize);
  791. return buffer;
  792. }
  793. struct UBXMsgBuffer getCFG_PM2(struct UBXCFG_PM2Flags flags, UBXU4_t updatePeriod, UBXU4_t searchPeriod, UBXU4_t gridOffset, UBXU2_t onTime, UBXU2_t minAcqTime)
  794. {
  795. int payloadSize = sizeof(struct UBXCFG_PM2);
  796. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  797. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  798. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PM2);
  799. msg->payload.CFG_PM2.flags = flags;
  800. msg->payload.CFG_PM2.updatePeriod = updatePeriod;
  801. msg->payload.CFG_PM2.searchPeriod = searchPeriod;
  802. msg->payload.CFG_PM2.gridOffset = gridOffset;
  803. msg->payload.CFG_PM2.onTime = onTime;
  804. msg->payload.CFG_PM2.minAcqTime = minAcqTime;
  805. completeMsg(&buffer, payloadSize);
  806. return buffer;
  807. }
  808. struct UBXMsgBuffer getCFG_PRT_POLL()
  809. {
  810. int payloadSize = sizeof(struct UBXCFG_PRT_POLL);
  811. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  812. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  813. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PRT);
  814. completeMsg(&buffer, payloadSize);
  815. return buffer;
  816. }
  817. struct UBXMsgBuffer getCFG_PRT_POLL_OPT(UBXU1_t portId)
  818. {
  819. int payloadSize = sizeof(struct UBXCFG_PRT_POLL_OPT);
  820. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  821. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  822. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PRT);
  823. msg->payload.CFG_PRT_POLL_OPT.portId = portId;
  824. completeMsg(&buffer, payloadSize);
  825. return buffer;
  826. }
  827. struct UBXMsgBuffer getCFG_PRT_UART()
  828. {
  829. //TODO
  830. struct UBXMsgBuffer buffer = createBuffer(0);
  831. return buffer;
  832. }
  833. struct UBXMsgBuffer getCFG_PRT_USB()
  834. {
  835. //TODO
  836. struct UBXMsgBuffer buffer = createBuffer(0);
  837. return buffer;
  838. }
  839. struct UBXMsgBuffer getCFG_PRT_SPI()
  840. {
  841. //TODO
  842. struct UBXMsgBuffer buffer = createBuffer(0);
  843. return buffer;
  844. }
  845. struct UBXMsgBuffer getCFG_PRT_DDC()
  846. {
  847. //TODO
  848. struct UBXMsgBuffer buffer = createBuffer(0);
  849. return buffer;
  850. }
  851. struct UBXMsgBuffer getCFG_RATE_POLL()
  852. {
  853. int payloadSize = sizeof(struct UBXCFG_RATE_POLL);
  854. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  855. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  856. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RATE);
  857. completeMsg(&buffer, payloadSize);
  858. return buffer;
  859. }
  860. struct UBXMsgBuffer getCFG_RATE(UBXU2_t measRate, UBXU2_t navRate, UBXU2_t timeRef)
  861. {
  862. int payloadSize = sizeof(struct UBXCFG_RATE);
  863. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  864. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  865. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RATE);
  866. msg->payload.CFG_RATE.measRate = measRate;
  867. msg->payload.CFG_RATE.navRate = navRate;
  868. msg->payload.CFG_RATE.timeRef = timeRef;
  869. completeMsg(&buffer, payloadSize);
  870. return buffer;
  871. }
  872. struct UBXMsgBuffer getCFG_RINV(UBXX1_t flags, UBXU1_t* data, int dataSize)
  873. {
  874. int payloadSize = sizeof(struct UBXCFG_RINV) + dataSize*sizeof(UBXU1_t);
  875. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  876. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  877. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RINV);
  878. msg->payload.CFG_RINV.flags = flags;
  879. memcpy(&(msg->payload.CFG_RINV) + sizeof(struct UBXCFG_RINV), data, dataSize*sizeof(UBXU1_t));
  880. completeMsg(&buffer, payloadSize);
  881. return buffer;
  882. }
  883. struct UBXMsgBuffer getCFG_RINV_POLL()
  884. {
  885. int payloadSize = sizeof(struct UBXCFG_RINV_POLL);
  886. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  887. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  888. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RINV);
  889. completeMsg(&buffer, payloadSize);
  890. return buffer;
  891. }
  892. struct UBXMsgBuffer getCFG_RXM(UBXU1_t lpMode)
  893. {
  894. int payloadSize = sizeof(struct UBXCFG_RXM);
  895. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  896. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  897. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RXM);
  898. msg->payload.CFG_RXM.reserved1 = 8;
  899. msg->payload.CFG_RXM.lpMode = lpMode;
  900. completeMsg(&buffer, payloadSize);
  901. return buffer;
  902. }
  903. struct UBXMsgBuffer getCFG_RXM_POLL()
  904. {
  905. int payloadSize = sizeof(struct UBXCFG_RXM_POLL);
  906. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  907. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  908. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RXM);
  909. completeMsg(&buffer, payloadSize);
  910. return buffer;
  911. }
  912. struct UBXMsgBuffer getCFG_SBAS(UBXX1_t mode, UBXX1_t usage, UBXU1_t maxSBAS, UBXX1_t scanmode2, UBXX4_t scanmode1)
  913. {
  914. int payloadSize = sizeof(struct UBXCFG_SBAS);
  915. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  916. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  917. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_SBAS);
  918. msg->payload.CFG_SBAS.mode = mode;
  919. msg->payload.CFG_SBAS.usage = usage;
  920. msg->payload.CFG_SBAS.maxSBAS = maxSBAS;
  921. msg->payload.CFG_SBAS.scanmode2 = scanmode2;
  922. msg->payload.CFG_SBAS.scanmode1 = scanmode1;
  923. completeMsg(&buffer, payloadSize);
  924. return buffer;
  925. }
  926. struct UBXMsgBuffer getCFG_SBAS_POLL()
  927. {
  928. int payloadSize = sizeof(struct UBXCFG_SBAS_POLL);
  929. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  930. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  931. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_SBAS);
  932. completeMsg(&buffer, payloadSize);
  933. return buffer;
  934. }
  935. struct UBXMsgBuffer getCFG_TP5_POLL()
  936. {
  937. int payloadSize = sizeof(struct UBXCFG_TP5_POLL);
  938. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  939. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  940. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_TP5);
  941. completeMsg(&buffer, payloadSize);
  942. return buffer;
  943. }
  944. struct UBXMsgBuffer getCFG_USB_POLL()
  945. {
  946. int payloadSize = sizeof(struct UBXCFG_USB_POLL);
  947. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  948. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  949. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_USB);
  950. completeMsg(&buffer, payloadSize);
  951. return buffer;
  952. }
  953. struct UBXMsgBuffer getCFG_USB(UBXU2_t vendorId,
  954. UBXU2_t productId,
  955. UBXU2_t powerConsumption,
  956. UBXX2_t flags,
  957. UBXCH_t* vendorString,
  958. UBXCH_t* productString,
  959. UBXCH_t* serialNumber)
  960. {
  961. int payloadSize = sizeof(struct UBXCFG_USB);
  962. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  963. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  964. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_USB);
  965. msg->payload.CFG_USB.vendorId = vendorId;
  966. msg->payload.CFG_USB.productId = productId;
  967. msg->payload.CFG_USB.reserved1 = 0;
  968. msg->payload.CFG_USB.reserved2 = 1;
  969. msg->payload.CFG_USB.powerConsumption = powerConsumption;
  970. msg->payload.CFG_USB.flags = flags;
  971. int vendorStringSize = strlen(vendorString)>32?32:strlen(vendorString);
  972. memcpy(msg->payload.CFG_USB.vendorString, vendorString, vendorStringSize);
  973. int productStringSize = strlen(productString)>32?32:strlen(productString);
  974. memcpy(msg->payload.CFG_USB.productString, productString, productStringSize);
  975. int serialNumberSize = strlen(serialNumber)>32?32:strlen(serialNumber);
  976. memcpy(msg->payload.CFG_USB.serialNumber, serialNumber, serialNumberSize);
  977. completeMsg(&buffer, payloadSize);
  978. return buffer;
  979. }
  980. struct UBXMsgBuffer getLOG_CREATE(UBXU1_t version, UBXX1_t logCfg, UBXU1_t logSize, UBXU4_t userDefinedSize)
  981. {
  982. int payloadSize = sizeof(struct UBXLOG_CREATE);
  983. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  984. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  985. initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_CREATE);
  986. msg->payload.LOG_CREATE.version = version;
  987. msg->payload.LOG_CREATE.logCfg = logCfg;
  988. msg->payload.LOG_CREATE.reserved = 0;
  989. msg->payload.LOG_CREATE.logSize = logSize;
  990. msg->payload.LOG_CREATE.userDefinedSize = userDefinedSize;
  991. completeMsg(&buffer, payloadSize);
  992. return buffer;
  993. }
  994. struct UBXMsgBuffer getLOG_ERASE()
  995. {
  996. int payloadSize = sizeof(struct UBXLOG_ERASE);
  997. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  998. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  999. initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_ERASE);
  1000. completeMsg(&buffer, payloadSize);
  1001. return buffer;
  1002. }
  1003. struct UBXMsgBuffer getLOG_FINDTIME_IN(UBXU2_t year, UBXU1_t month, UBXU1_t day, UBXU1_t hour, UBXU1_t minute, UBXU1_t second)
  1004. {
  1005. int payloadSize = sizeof(struct UBXLOG_FINDTIME_IN);
  1006. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  1007. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  1008. initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_FINDTIME);
  1009. msg->payload.LOG_FINDTIME_IN.version = 0;
  1010. msg->payload.LOG_FINDTIME_IN.type = 0;
  1011. msg->payload.LOG_FINDTIME_IN.year = year;
  1012. msg->payload.LOG_FINDTIME_IN.month = month;
  1013. msg->payload.LOG_FINDTIME_IN.day = day;
  1014. msg->payload.LOG_FINDTIME_IN.hour = hour;
  1015. msg->payload.LOG_FINDTIME_IN.minute = minute;
  1016. msg->payload.LOG_FINDTIME_IN.second = second;
  1017. completeMsg(&buffer, payloadSize);
  1018. return buffer;
  1019. }
  1020. struct UBXMsgBuffer getLOG_INFO_POLL()
  1021. {
  1022. int payloadSize = sizeof(struct UBXLOG_INFO_POLL);
  1023. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  1024. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  1025. initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_INFO);
  1026. completeMsg(&buffer, payloadSize);
  1027. return buffer;
  1028. }
  1029. struct UBXMsgBuffer getLOG_RETRIEVE(UBXU4_t startNumber,
  1030. UBXU4_t entryCount,
  1031. UBXU1_t version)
  1032. {
  1033. int payloadSize = sizeof(struct UBXLOG_RETRIEVE);
  1034. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  1035. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  1036. initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_RETRIEVE);
  1037. msg->payload.LOG_RETRIEVE.startNumber = startNumber;
  1038. msg->payload.LOG_RETRIEVE.entryCount = entryCount;
  1039. msg->payload.LOG_RETRIEVE.version = version;
  1040. completeMsg(&buffer, payloadSize);
  1041. return buffer;
  1042. }
  1043. struct UBXMsgBuffer getLOG_STRING()
  1044. {
  1045. int payloadSize = sizeof(struct UBXLOG_STRING);
  1046. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  1047. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  1048. initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_STRING);
  1049. completeMsg(&buffer, payloadSize);
  1050. return buffer;
  1051. }
  1052. struct UBXMsgBuffer getMON_VER_POLL()
  1053. {
  1054. int payloadSize = sizeof(struct UBXMON_VER_POLL);
  1055. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  1056. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  1057. initMsg(msg, payloadSize, UBXMsgClassMON, UBXMsgIdMON_VER);
  1058. completeMsg(&buffer, payloadSize);
  1059. return buffer;
  1060. }
  1061. struct UBXMsgBuffer getRXM_ALM_POLL()
  1062. {
  1063. int payloadSize = sizeof(struct UBXRXM_ALM_POLL);
  1064. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  1065. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  1066. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_ALM);
  1067. completeMsg(&buffer, payloadSize);
  1068. return buffer;
  1069. }
  1070. struct UBXMsgBuffer getRXM_ALM_POLL_OPT(UBXU1_t svid)
  1071. {
  1072. int payloadSize = sizeof(struct UBXRXM_ALM_POLL_OPT);
  1073. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  1074. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  1075. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_ALM);
  1076. msg->payload.RXM_ALM_POLL_OPT.svid = svid;
  1077. completeMsg(&buffer, payloadSize);
  1078. return buffer;
  1079. }
  1080. struct UBXMsgBuffer getRXM_EPH_POLL()
  1081. {
  1082. int payloadSize = sizeof(struct UBXRXM_EPH_POLL);
  1083. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  1084. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  1085. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_EPH);
  1086. completeMsg(&buffer, payloadSize);
  1087. return buffer;
  1088. }
  1089. struct UBXMsgBuffer getRXM_EPH_POLL_OPT(UBXU1_t svid)
  1090. {
  1091. int payloadSize = sizeof(struct UBXRXM_EPH_POLL_OPT);
  1092. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  1093. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  1094. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_ALM);
  1095. msg->payload.RXM_ALM_POLL_OPT.svid = svid;
  1096. completeMsg(&buffer, payloadSize);
  1097. return buffer;
  1098. }
  1099. struct UBXMsgBuffer getRXM_PMREQ(UBXU4_t duration, UBXX4_t flags)
  1100. {
  1101. int payloadSize = sizeof(struct UBXRXM_PMREQ);
  1102. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  1103. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  1104. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_PMREQ);
  1105. msg->payload.RXM_PMREQ.duration = duration;
  1106. msg->payload.RXM_PMREQ.flags = flags;
  1107. completeMsg(&buffer, payloadSize);
  1108. return buffer;
  1109. }
  1110. struct UBXMsgBuffer getRXM_SVSI(UBXU4_t iTOW,
  1111. UBXI2_t week,
  1112. UBXU1_t numVis,
  1113. UBXU1_t numSV,
  1114. struct UBXRXM_SVSI_PART* svsiPart,
  1115. int svsiPartCount)
  1116. {
  1117. int payloadSize = sizeof(struct UBXRXM_SVSI) + svsiPartCount*sizeof(struct UBXRXM_SVSI_PART);
  1118. struct UBXMsgBuffer buffer = createBuffer(payloadSize);
  1119. struct UBXMsg* msg = (struct UBXMsg*)buffer.data;
  1120. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_SVSI);
  1121. msg->payload.RXM_SVSI.iTOW = iTOW;
  1122. msg->payload.RXM_SVSI.week = week;
  1123. msg->payload.RXM_SVSI.numVis = numVis;
  1124. msg->payload.RXM_SVSI.numSV = numSV;
  1125. memcpy(&(msg->payload.RXM_SVSI) + sizeof(struct UBXRXM_SVSI), svsiPart, svsiPartCount*sizeof(struct UBXRXM_SVSI_PART));
  1126. completeMsg(&buffer, payloadSize);
  1127. return buffer;
  1128. }
  1129. /*!
  1130. * \enum UBXMessageClass
  1131. * \brief UBXMessageClass is a grouping of messages which are related to each other.
  1132. * The following table lists all the current message classes.
  1133. * \var UBXMsgClassNAV
  1134. * Navigation Results: Position, Speed, Time, Acc, Heading, DOP, SVs used
  1135. * \var UBXMsgClassRXM
  1136. * Receiver Manager Messages: Satellite Status, RTC Status
  1137. * \var UBXMsgClassINF
  1138. * Information Messages: Printf-Style Messages, with IDs such as Error, Warning, Notice
  1139. * \var UBXMsgClassACK
  1140. * Ack/Nack Messages: as replies to CFG Input Messages
  1141. * \var UBXMsgClassCFG
  1142. * Configuration Input Messages: Set Dynamic Model, Set DOP Mask, Set Baud Rate, etc.
  1143. * \var UBXMsgClassMON
  1144. * Monitoring Messages: Comunication Status, CPU Load, Stack Usage, Task Status
  1145. * \var UBXMsgClassAID
  1146. * AssistNow Aiding Messages: Ephemeris, Almanac, other A-GPS data input
  1147. * \var UBXMsgClassTIM
  1148. * Timing Messages: Time Pulse Output, Timemark Results
  1149. * \var UBXMsgClassLOG
  1150. * Logging Messages: Log creation, deletion, info and retrieval
  1151. * \var UBXMsgClassInvalid
  1152. * Default invalid message class
  1153. */
  1154. /*!
  1155. * \enum UBXMessageId
  1156. * \brief UBXMessageId is a type of messages
  1157. * \var UBXMsgIdACK_NACK
  1158. * Message Acknowledged
  1159. * \var UBXMsgIdACK_ACK
  1160. * Message Not-Acknowledged
  1161. *
  1162. * \var UBXMsgIdAID_ALM
  1163. * GPS Aiding Almanac Data
  1164. * \var UBXMsgIdAID_ALPSRV
  1165. * AlmanacPlus data
  1166. * \var UBXMsgIdAID_ALP
  1167. * ALP file data transfer
  1168. * \var UBXMsgIdAID_AOP
  1169. * AssistNow Autonomous data
  1170. * \var UBXMsgIdAID_DATA
  1171. * GPS Initial Aiding Data
  1172. * \var UBXMsgIdAID_EPH
  1173. * GPS Aiding Ephemeris Data
  1174. * \var UBXMsgIdAID_HUI
  1175. * GPS Health, UTC and ionosphere parameters
  1176. * \var UBXMsgIdAID_INI
  1177. * Aiding position, time, frequency, clock drift
  1178. * \var UBXMsgIdAID_REQ
  1179. * Sends a poll (AID-DATA) for all GPS Aiding Data
  1180. *
  1181. * \var UBXMsgIdCFG_ANT
  1182. * Antenna Control Settings
  1183. * \var UBXMsgIdCFG_CFG
  1184. * Clear, Save and Load configurations
  1185. * \var UBXMsgIdCFG_DAT
  1186. * Datum Setting
  1187. * \var UBXMsgIdCFG_GNSS
  1188. * GNSS system configuration
  1189. * \var UBXMsgIdCFG_INF
  1190. * Information message configuration
  1191. * \var UBXMsgIdCFG_ITFM
  1192. * Jamming/Interference Monitor configuration.
  1193. * \var UBXMsgIdCFG_LOGFILTER
  1194. * Data Logger Configuration
  1195. * \var UBXMsgIdCFG_MSG
  1196. * Message Configuration
  1197. * \var UBXMsgIdCFG_NAV5
  1198. * Navigation Engine Settings
  1199. * \var UBXMsgIdCFG_NAVX5
  1200. * Navigation Engine Expert Settings
  1201. * \var UBXMsgIdCFG_NMEA
  1202. * NMEA protocol configuration
  1203. * \var UBXMsgIdCFG_NVS
  1204. * Clear, Save and Load non-volatile storage data
  1205. * \var UBXMsgIdCFG_PM2
  1206. * Extended Power Management configuration
  1207. * \var UBXMsgIdCFG_PRT
  1208. * Ports Configuration
  1209. * \var UBXMsgIdCFG_RATE
  1210. * Navigation/Measurement Rate Settings
  1211. * \var UBXMsgIdCFG_RINV
  1212. * Contents of Remote Inventory
  1213. * \var UBXMsgIdCFG_RST
  1214. * Reset Receiver / Clear Backup Data Structures
  1215. * \var UBXMsgIdCFG_RXM
  1216. * RXM configuration
  1217. * \var UBXMsgIdCFG_SBAS
  1218. * SBAS Configuration
  1219. * \var UBXMsgIdCFG_TP5
  1220. * Time Pulse Parameters
  1221. * \var UBXMsgIdCFG_USB
  1222. * USB Configuration
  1223. *
  1224. * \var UBXMsgIdINF_DEBUG
  1225. * ASCII String output, indicating debug output
  1226. * \var UBXMsgIdINF_ERROR
  1227. * ASCII String output, indicating an error
  1228. * \var UBXMsgIdINF_NOTICE
  1229. * ASCII String output, with informational contents
  1230. * \var UBXMsgIdINF_TEST
  1231. * ASCII String output, indicating test output
  1232. * \var UBXMsgIdINF_WARNING
  1233. * ASCII String output, indicating a warning
  1234. *
  1235. * \var UBXMsgIdLOG_CREATE
  1236. * Create Log File
  1237. * \var UBXMsgIdLOG_ERASE
  1238. * Erase Logged Data
  1239. * \var UBXMsgIdLOG_FINDTIME
  1240. * Find the index of the first log entry <= given time
  1241. * \var UBXMsgIdLOG_INFO
  1242. * Log information
  1243. * \var UBXMsgIdLOG_RETRIEVEPOS
  1244. * Position fix log entry
  1245. * \var UBXMsgIdLOG_RETRIEVESTRING
  1246. * Byte string log entry
  1247. * \var UBXMsgIdLOG_RETRIEVE
  1248. * Request log data
  1249. * \var UBXMsgIdLOG_STRING
  1250. * Store arbitrary string in on-board Flash memory
  1251. *
  1252. * \var UBXMsgIdMON_HW2
  1253. * Extended Hardware Status
  1254. * \var UBXMsgIdMON_HW
  1255. * Hardware Status
  1256. * \var UBXMsgIdMON_IO
  1257. * I/O Subsystem Status
  1258. * \var UBXMsgIdMON_MSGPP
  1259. * Message Parse and Process Status
  1260. * \var UBXMsgIdMON_RXBUF
  1261. * Receiver Buffer Status
  1262. * \var UBXMsgIdMON_RXR
  1263. * Receiver Status Information
  1264. * \var UBXMsgIdMON_TXBUF
  1265. * Transmitter Buffer Status
  1266. * \var UBXMsgIdMON_VER
  1267. * Receiver/Software Version
  1268. *
  1269. * \var UBXMsgIdNAV_AOPSTATUS
  1270. * AssistNow Autonomous Status
  1271. * \var UBXMsgIdNAV_CLOCK
  1272. * Clock Solution
  1273. * \var UBXMsgIdNAV_DGPS
  1274. * DGPS Data Used for NAV
  1275. * \var UBXMsgIdNAV_DOP
  1276. * Dilution of precision
  1277. * \var UBXMsgIdNAV_POSECEF
  1278. * Position Solution in ECEF
  1279. * \var UBXMsgIdNAV_POSLLH
  1280. * Geodetic Position Solution
  1281. * \var UBXMsgIdNAV_PVT
  1282. * Navigation Position Velocity Time Solution
  1283. * \var UBXMsgIdNAV_SBAS
  1284. * SBAS Status Data
  1285. * \var UBXMsgIdNAV_SOL
  1286. * Navigation Solution Information
  1287. * \var UBXMsgIdNAV_STATUS
  1288. * Receiver Navigation Status
  1289. * \var UBXMsgIdNAV_SVINFO
  1290. * Space Vehicle Information
  1291. * \var UBXMsgIdNAV_TIMEGPS
  1292. * GPS Time Solution
  1293. * \var UBXMsgIdNAV_TIMEUTC
  1294. * UTC Time Solution
  1295. * \var UBXMsgIdNAV_VELECEF
  1296. * Velocity Solution in ECEF
  1297. * \var UBXMsgIdNAV_VELNED
  1298. * Velocity Solution in NED
  1299. *
  1300. * \var UBXMsgIdRXM_ALM
  1301. * GPS Constellation Almanac Data
  1302. * \var UBXMsgIdRXM_EPH
  1303. * GPS Constellation Ephemeris Data
  1304. * \var UBXMsgIdRXM_PMREQ
  1305. * Requests a Power Management task
  1306. * \var UBXMsgIdRXM_RAW
  1307. * Raw Measurement Data
  1308. * \var UBXMsgIdRXM_SFRB
  1309. * Subframe Buffer
  1310. * \var UBXMsgIdRXM_SVSI
  1311. * SV Status Info
  1312. *
  1313. * \var UBXMsgIdTIM_TM2
  1314. * Time mark data
  1315. * \var UBXMsgIdTIM_TP
  1316. * Time Pulse Timedata
  1317. * \var UBXMsgIdTIM_VRFY
  1318. * Sourced Time Verification
  1319. *
  1320. * \var MsgIdInvalid
  1321. * Default invalid message identificator
  1322. */
  1323. /*!
  1324. * \enum UBXResetMode
  1325. * \brief UBXResetMode describes possible reset modes
  1326. * for #UBXCFG_RST message.
  1327. * \var UBXHardwareReset
  1328. * Hardware reset (Watchdog) immediately
  1329. * \var UBXControlledReset
  1330. * Controlled Software reset
  1331. * \var UBXControlledResetGNSSOnly
  1332. * Controlled Software reset (GNSS only)
  1333. * \var UBXHardwareResetAfterShutdown
  1334. * Hardware reset (Watchdog) after
  1335. * \var UBXControlledGNSSStop
  1336. * Controlled GNSS stop
  1337. * \var UBXControlledGNSSStart
  1338. * Controlled GNSS start
  1339. */
  1340. /*!
  1341. * \enum UBXBBRSpecialSets
  1342. * \brief UBXBBRSpecialSets implements special sets for
  1343. * #UBXCFG_RST message.
  1344. * \var UBXBBRHotstart
  1345. * Hotstart
  1346. * \var UBXBBRWarmstart
  1347. * Warmstart
  1348. * \var UBXBBRColdstart
  1349. * Coldstart
  1350. */
  1351. /*!
  1352. * \enum UBXBBRMask
  1353. * \brief UBXBBRMask implements members for BBR(built-in battery-backed RAM) bitmask
  1354. * for #UBXCFG_RST message.
  1355. * \var UBXBBReph
  1356. * Ephemeris
  1357. * \var UBXBBRalm
  1358. * Almanac
  1359. * \var UBXBBRhealth
  1360. * Health
  1361. * \var UBXBBRklob
  1362. * Klobuchar parameters
  1363. * \var UBXBBRpos
  1364. * Position
  1365. * \var UBXBBRclkd
  1366. * Clock Drift
  1367. * \var UBXBBRosc
  1368. * Oscillator Parameter
  1369. * \var UBXBBRutc
  1370. * UTC Correction + GPS Leap Seconds Parameters
  1371. * \var UBXBBRrtc
  1372. * RTC
  1373. * \var UBXBBRsfdr
  1374. * SFDR Parameters
  1375. * \var UBXBBRvmon
  1376. * SFDR Vehicle Monitoring Parameters
  1377. * \var UBXBBRtct
  1378. * TCT Parameters
  1379. * \var UBXBBRaop
  1380. * Autonomous Orbit Parameters
  1381. */
  1382. /*!
  1383. * \enum UBXHUIFlags
  1384. * \brief UBXHUIFlags implements HUI flags bitmask
  1385. * for #UBXAID_HUI message.
  1386. * \var UBXHUIHealthValid
  1387. * Healthmask field in this message is valid
  1388. * \var UBXHUIUTCValid
  1389. * UTC parameter fields in this message are valid
  1390. * \var UBXHUIKlobValid
  1391. * Klobuchar parameter fields in this message are valid
  1392. */
  1393. /*!
  1394. * \enum UBXINItmCfg
  1395. * \brief UBXINItmCfg implements Time mark configuration bitmask
  1396. * for #UBXAID_INI message.
  1397. * \var UBXINIfEdge
  1398. * Use falling edge (default rising)
  1399. * \var UBXINItm1
  1400. * Time mark on extint 1 (default extint 0)
  1401. * \var UBXINIf1
  1402. * Frequency on extint 1 (default extint 0)
  1403. */
  1404. /*!
  1405. * \enum UBXINIFlags
  1406. * \brief UBXINIFlags implements INI flags bitmask
  1407. * for #UBXAID_INI message.
  1408. * \var UBXINIpos
  1409. * Position is valid
  1410. * \var UBXINItime
  1411. * Time is valid
  1412. * \var UBXINIclockD
  1413. * Clock drift data contains valid clock drift, must not be set together with clockF
  1414. * \var UBXINItp
  1415. * Use time pulse
  1416. * \var UBXINIclockF
  1417. * Clock drift data contains valid frequency, must not be set together with clockD
  1418. * \var UBXINIlla
  1419. * Position is given in lat/long/alt (default is ECEF)
  1420. * \var UBXINIaltInv
  1421. * Altitude is not valid, in case lla was set
  1422. * \var UBXINIprevTm
  1423. * Use time mark received before AID-INI message (default uses mark received after message)
  1424. * \var UBXINIutc
  1425. * Time is given as UTC date/time (default is GPS wno/tow)
  1426. */
  1427. /*!
  1428. * \enum UBXANTFlags
  1429. * \brief UBXANTFlags implements ANT flags bitmask
  1430. * for #UBXCFG_ANT message.
  1431. * \var UBXANTsvcs
  1432. * Enable Antenna Supply Voltage Control Signal
  1433. * \var UBXANTscd
  1434. * Enable Short Circuit Detection
  1435. * \var UBXANTocd
  1436. * Enable Open Circuit Detection
  1437. * \var UBXANTpdwnOnSCD
  1438. * Power Down Antenna supply if Short Circuit is detected. (only in combination with Bit 1)
  1439. * \var UBXANTrecovery
  1440. * Enable automatic recovery from short state
  1441. */
  1442. /*!
  1443. * \enum UBXCFGMask
  1444. * \brief UBXCFGMask implements CFG flags bitmask
  1445. * for #UBXCFG_CFG message and #UBXCFG_NVS.
  1446. * \var UBXCFGioPort
  1447. * Port Settings\n
  1448. * \note #UBXCFG_CFG only
  1449. * \var UBXCFGmsgConf
  1450. * Message Configuration\n
  1451. * \note#UBXCFG_CFG only
  1452. * \var UBXCFGinfMsg
  1453. * INF Message Configuration\n
  1454. * \note#UBXCFG_CFG only
  1455. * \var UBXCFGnavConf
  1456. * Navigation Configuration\n
  1457. * \note#UBXCFG_CFG only
  1458. * \var UBXCFGrxmConf
  1459. * Receiver Manager Configuration\n
  1460. * \note#UBXCFG_CFG only
  1461. * \var UBXCFGrinvConf
  1462. * Remote Inventory Configuration\n
  1463. * \note#UBXCFG_CFG only
  1464. * \var UBXCFGantConf
  1465. * Antenna Configuration\n
  1466. * \note#UBXCFG_CFG only
  1467. * \var UBXCFGalm
  1468. * GPS Almanac data\n
  1469. * \note#UBXCFG_NVS only
  1470. * \var UBXCFGaopConf
  1471. * AOP data\n
  1472. * \note#UBXCFG_NVS only
  1473. */
  1474. /*!
  1475. * \enum UBXCFGMask
  1476. * \brief UBXCFGMask implements CFG flags bitmask
  1477. * for #UBXCFG_CFG message and #UBXCFG_NVS.
  1478. * Mask selects the devices for #UBXCFG_CFG
  1479. * and #UBXCFG_NVS commands.
  1480. * \var UBXCFGdevBBR
  1481. * built-in battery-backed RAM
  1482. * \var UBXCFGdevFlash
  1483. * external flash memory
  1484. * \var UBXCFGdevEEPROM
  1485. * external EEPROM
  1486. * \var UBXCFGdevSpiFlash
  1487. * external SPI Flash
  1488. */
  1489. /*!
  1490. * \enum UBXCFGTimepulses
  1491. * \brief UBXCFGTimepulses contains possible timepulse
  1492. * selections for #UBXCFG_TP5 message.
  1493. * \var UBXCFGTimepulse
  1494. * TIMEPULSE selection
  1495. * \var UBXCFGTimepulse2
  1496. * TIMEPULSE2 selection
  1497. */
  1498. /*!
  1499. * \enum UBXCFGTimepulseFlags
  1500. * \brief UBXCFGTimepulseFlags implements timepulse flags
  1501. * for #UBXCFG_TP5 message.
  1502. * \var UBXCFGTimepulseActive
  1503. * if set enable time pulse; if pin assigned to another function, other function takes precedence
  1504. * \var UBXCFGTimepulseLockGpsFreq
  1505. * if set synchronize time pulse to GPS as soon as GPS time is valid, otherwise use local clock
  1506. * \var UBXCFGTimepulseLockedOtherSet
  1507. * if set use 'freqPeriodLock' and 'pulseLenRatioLock' as soon as GPS time is valid and 'freqPeriod' and
  1508. * 'pulseLenRatio' if GPS time is invalid,
  1509. * if flag is cleared 'freqPeriod' and 'pulseLenRatio' used regardless of GPS time
  1510. * \var UBXCFGTimepulseIsFreq
  1511. * if set 'freqPeriodLock' and 'freqPeriod' interpreted as frequency, otherwise interpreted as period
  1512. * \var UBXCFGTimepulseIsLenght
  1513. * if set 'pulseLenRatioLock' and 'pulseLenRatio' interpreted as pulse length, otherwise interpreted as duty cycle
  1514. * \var UBXCFGTimepulseAlignToTow
  1515. * align pulse to top of second (period time must be integer fraction of 1s)
  1516. * \var UBXCFGTimepulsePolarity
  1517. * pulse polarity:\n
  1518. * 0 = falling edge at top of second\n
  1519. * 1 = rising edge at top of second
  1520. * \var UBXCFGTimepulseGridUTSGPS
  1521. * timegrid to use:\n
  1522. * 0 = UTC\n
  1523. * 1 = GPS
  1524. */
  1525. /*!
  1526. * \enum UBXCFGProtocolIds
  1527. * \brief UBXCFGProtocolIds
  1528. * Protocol Identifiers, identifying the output
  1529. * protocol for #UBXCFG_INF.
  1530. * \var UBXProtocol
  1531. * UBX Protocol
  1532. * \var UBXNMEAProtocol
  1533. * NMEA Protocol
  1534. */
  1535. /*!
  1536. * \enum UBXGNSSIds
  1537. * \brief UBXGNSSIds
  1538. * GNSS identificators used for #UBXCFG_GNSS in #UBXCFG_GNSS_PART
  1539. * \var UBXGPS
  1540. * GPS
  1541. * \var UBXSBAS
  1542. * SBAS
  1543. * \var UBXQZSS
  1544. * QZSS
  1545. * \var UBXGLONASS
  1546. * GLONASS
  1547. */
  1548. /*!
  1549. * \enum UBXCFGInfMsgMask
  1550. * \brief UBXCFGInfMsgMask implements
  1551. * bit mask, saying which information messages are enabled on each I/O port
  1552. * \var UBXInfError
  1553. * Error
  1554. * \var UBXInfWarning
  1555. * Warning
  1556. * \var UBXInfNotice
  1557. * Notice
  1558. * \var UBXInfDebug
  1559. * Debug
  1560. * \var UBXInfTest
  1561. * Test
  1562. */
  1563. /*!
  1564. * \enum UBXITFMAntSetting
  1565. * \brief UBXITFMAntSetting implements possible antenna settings for
  1566. * #UBXCFG_ITFM in UBXCFG_ITFM::config2 part.
  1567. * \var UBXITFMAntUnknown
  1568. * Unknown
  1569. * \var UBXITFMAntPassive
  1570. * Passive
  1571. * \var UBXITFMAntActive
  1572. * Active
  1573. */
  1574. /*!
  1575. * \enum UBXLOGFILTERFlags
  1576. * \brief UBXLOGFILTERFlags implements log filter flags bitmask for
  1577. * #UBXCFG_LOGFILTER
  1578. * \var UBXLOGFILTERRecordEnabled
  1579. * 1 = enable recording\n
  1580. * 0 = disable recording
  1581. * \var UBXLOGFILTERPsmOncePerWakupEnabled
  1582. * 1 = enable recording only one single position per PSM on/off mode wake up period\n
  1583. * 0 = disable once per wake up
  1584. * \var UBXLOGFILTERApplyAllFilterSettings
  1585. * 1 = apply all filter settings\n
  1586. * 0 = only apply recordEnabled
  1587. */
  1588. /*!
  1589. * \enum UBXNAV5Mask
  1590. * \brief UBXNAV5Mask implements flags bitmask
  1591. * for #UBXCFG_NAV5 message
  1592. * \var UBXNAV5Dyn
  1593. * Apply dynamic model settings
  1594. * \var UBXNAV5MinEl
  1595. * Apply minimum elevation settings
  1596. * \var UBXNAV5PosFixMode
  1597. * Apply fix mode settings
  1598. * \var UBXNAV5DrLim
  1599. * Reserved
  1600. * \var UBXNAV5PosMask
  1601. * Apply position mask settings
  1602. * \var UBXNAV5TimeMask
  1603. * Apply time mask settings
  1604. * \var UBXNAV5StaticHoldMask
  1605. * Apply static hold settings
  1606. * \var UBXNAV5DgpsMask
  1607. * Apply DGPS settings.
  1608. */
  1609. /*!
  1610. * \enum UBXNAV5Model
  1611. * \brief UBXNAV5Model
  1612. * enum describes dynamic platform models
  1613. * for #UBXCFG_NAV5 message
  1614. * \var UBXNAV5ModelPortable
  1615. * Portable
  1616. * \var UBXNAV5ModelStationary
  1617. * Stationary
  1618. * \var UBXNAV5ModelPedestrian
  1619. * Pedestrian
  1620. * \var UBXNAV5ModelAutomotive
  1621. * Automotive
  1622. * \var UBXNAV5ModelSea
  1623. * Sea
  1624. * \var UBXNAV5ModelAirborne1g
  1625. * Airborne1g
  1626. * \var UBXNAV5ModelAirborne2g
  1627. * Airborne2g
  1628. * \var UBXNAV5ModelAirborne4g
  1629. * Airborne4g
  1630. */
  1631. /*!
  1632. * \enum UBXNAV5FixMode
  1633. * \brief UBXNAV5FixMode
  1634. * enum describes position fixing mode
  1635. * for #UBXCFG_NAV5 message
  1636. * \var UBXNAV5Fix2DOnly
  1637. * 2D Only
  1638. * \var UBXNAV5Fix3DOnly
  1639. * 3D Only
  1640. * \var UBXNAV5FixAuto2D3D
  1641. * Auto 2D/3D
  1642. */
  1643. /*!
  1644. * \enum UBXNAVX5Mask
  1645. * \brief UBXNAVX5Mask
  1646. * implements flags bitmask
  1647. * for #UBXCFG_NAVX5 message
  1648. * \var UBXNAVX5AopMinMax
  1649. * Apply min/max SVs settings
  1650. * \var UBXNAVX5AopMinCno
  1651. * Apply minimum C/N0 setting
  1652. * \var UBXNAVX5AopInitial3dfix
  1653. * Apply initial 3D fix settings
  1654. * \var UBXNAVX5AopWknRoll
  1655. * Apply GPS weeknumber rollover settings
  1656. * \var UBXNAVX5AopPPP
  1657. * Apply PPP flag\n
  1658. * \note Only supported on certain product variants
  1659. * \var UBXNAVX5Aop
  1660. * Apply useAOP flag and aopOrbMaxErr setting (AssistNow Autonomous)
  1661. */
  1662. /*!
  1663. * \enum UBXNMEAFilter
  1664. * \brief UBXNMEAFilter
  1665. * implements NMEA message filter bitmask
  1666. * for #UBXCFG_NMEA
  1667. * \var UBXNMEAPosFilter
  1668. * Enable position output for failed or invalid fixes
  1669. * \var UBXNMEAMskPosFilter
  1670. * Enable position output for invalid fixes
  1671. * \var UBXNMEATimeFilter
  1672. * Enable time output for invalid times
  1673. * \var UBXNMEADateFilter
  1674. * Enable date output for invalid dates
  1675. * \var UBXNMEAGPSOnlyFilter
  1676. * Restrict output to GPS satellites only
  1677. * \var UBXNMEATrackFilter
  1678. * Enable COG output even if COG is frozen
  1679. */
  1680. /*!
  1681. * \enum UBXNMEAVersion
  1682. * \brief UBXNMEAVersion
  1683. * describes supported NMEA protocol version
  1684. * \var UBXNMEAVersion23
  1685. * NMEA version 2.3
  1686. * \var UBXNMEAVersion21
  1687. * NMEA version 2.1
  1688. */
  1689. /*!
  1690. * \enum UBXNMEAFlags
  1691. * \brief UBXNMEAFlags
  1692. * implements flags bitmask for #UBXCFG_NMEA
  1693. * \var UBXNMEACompatFlag
  1694. * enable compatibility mode.\n
  1695. * This might be needed for certain applications when customer's NMEA parser expects a fixed number of digits in
  1696. * position coordinates
  1697. * \var UBXNMEAConsiderFlag
  1698. * enable considering mode.
  1699. */
  1700. /*!
  1701. * \enum UBXNMEAGNSSToFilter
  1702. * \brief UBXNMEAGNSSToFilter
  1703. * implements bitmask to filters out satellites based
  1704. * on their GNSS.
  1705. * \var UBXNMEAGPSFilter
  1706. * Disable reporting of GPS satellites
  1707. * \var UBXNMEASBASFilter
  1708. * Disable reporting of SBAS satellites
  1709. * \var UBXNMEAQZSSFilter
  1710. * Disable reporting of QZSS satellites
  1711. * \var UBXNMEAGLONASSFilter
  1712. * Disable reporting of GLONASS satellites
  1713. */
  1714. /*!
  1715. * \enum UBXNMEASVNumbering
  1716. * \brief UBXNMEASVNumbering
  1717. *
  1718. * \var UBXNMEASVNumStrict
  1719. * Satellites are not output
  1720. * \var UBXNMEASVNumExtended
  1721. * Use UBX proprietary numbering
  1722. */
  1723. /*!
  1724. * \enum UBXNMEATalkerIds
  1725. * \brief UBXNMEATalkerIds
  1726. *
  1727. * \var UBXNMEATalkerNotOverriden
  1728. * Main Talker ID is not overridden
  1729. * \var UBXNMEATalkerGP
  1730. * Set main Talker ID to 'GP'
  1731. * \var UBXNMEATalkerGL
  1732. * Set main Talker ID to 'GL'
  1733. * \var UBXNMEATalkerGN
  1734. * Set main Talker ID to 'GN'
  1735. */
  1736. /*!
  1737. * \enum UBXNMEAGSVTalkerIds
  1738. * \brief UBXNMEAGSVTalkerIds
  1739. *
  1740. * \var UBXNMEAGSVTalkerGNSSSpecific
  1741. * Use GNSS specific Talker ID (as defined by NMEA)
  1742. * \var UBXNMEAGSVTalkerMain
  1743. * Use the main Talker ID
  1744. */
  1745. /*!
  1746. * \enum UBXPM2LimitPeakCurrent
  1747. * \brief UBXPM2LimitPeakCurrent
  1748. *
  1749. * \var UBXPM2LimitCurrentDisabled
  1750. * disabled
  1751. * \var UBXPM2LimitCurrentEnabled
  1752. * enabled, peak current is limited
  1753. */
  1754. /*!
  1755. * \enum UBXPM2Mode
  1756. * \brief UBXPM2Mode
  1757. *
  1758. * \var UBXPM2OnOffOperation
  1759. * ON/OFF operation
  1760. * \var UBXPM2CyclicTrackOperation
  1761. * Cyclic tracking operation
  1762. */
  1763. /*!
  1764. * \enum UBXPRTModeCharLen
  1765. * \brief UBXPRTModeCharLen used for #UBXCFG_PRT
  1766. *
  1767. * \var UBXPRTMode5BitCharLen
  1768. * 5bit \n
  1769. * \note Not supported
  1770. * \var UBXPRTMode6BitCharLen
  1771. * 6bit\n
  1772. * \note Not supported
  1773. * \var UBXPRTMode7BitCharLen
  1774. * 7bit\n
  1775. * \note Supported only with parity
  1776. * \var UBXPRTMode8BitCharLen
  1777. * 8bit
  1778. */
  1779. /*!
  1780. * \enum UBXPRTModeParity
  1781. * \brief UBXPRTModeParity used for #UBXCFG_PRT
  1782. *
  1783. * \var UBXPRTModeEvenParity
  1784. * Even Parity
  1785. * \var UBXPRTModeOddParity
  1786. * Odd Parity
  1787. * \var UBXPRTModeNoParity
  1788. * No Parity
  1789. * \var UBXPRTModeReserved
  1790. * Reserved\n
  1791. * \note Exclude this member from target value
  1792. */
  1793. /*!
  1794. * \enum UBXPRTModeStopBits
  1795. * \brief UBXPRTModeStopBits used for #UBXCFG_PRT
  1796. *
  1797. * \var UBXPRTMode1StopBit
  1798. * 1 Stop Bit
  1799. * \var UBXPRTMode1dot5StopBit
  1800. * 1.5 Stop Bit
  1801. * \var UBXPRTMode2StopBit
  1802. * 2 Stop Bit
  1803. * \var UBXPRTMode0dot5StopBit
  1804. * 0.5 Stop Bit
  1805. */
  1806. /*!
  1807. * \enum UBXPRTInProtoMask
  1808. * \brief UBXPRTInProtoMask used for #UBXCFG_PRT
  1809. *
  1810. * \var UBXPRTInProtoInUBX
  1811. * UBX protocol
  1812. * \var UBXPRTInProtoInNMEA
  1813. * NMEA protocol
  1814. * \var UBXPRTInProtoInRTCM
  1815. * RTCM protocol
  1816. */
  1817. /*!
  1818. * \enum UBXPRTOutProtoMask
  1819. * \brief UBXPRTOutProtoMask used for #UBXCFG_PRT
  1820. *
  1821. * \var UBXPRTOutProtoOutUBX
  1822. * UBX protocol
  1823. * \var UBXPRTOutProtoOutNMEA
  1824. * NMEA protocol
  1825. */
  1826. /*!
  1827. * \enum UBXPRTFlags
  1828. * \brief UBXPRTFlags used for #UBXCFG_PRT
  1829. *
  1830. * \var UBXPRTExtendedTxTimeout
  1831. * Extended TX timeout: if set, the port will timeout if allocated TX memory >=4 kB and no activity for 1.5s
  1832. */
  1833. /*!
  1834. * \enum UBXPRTSPIMode
  1835. * \brief UBXPRTSPIMode used for #UBXCFG_PRT
  1836. *
  1837. * \var UBXPRTSPIMode0
  1838. * 0 SPI Mode 0: CPOL = 0, CPHA = 0
  1839. * \var UBXPRTSPIMode1
  1840. * SPI Mode 1: CPOL = 0, CPHA = 1
  1841. * \var UBXPRTSPIMode2
  1842. * SPI Mode 2: CPOL = 1, CPHA = 0
  1843. * \var UBXPRTSPIMode3
  1844. * SPI Mode 3: CPOL = 1, CPHA = 1
  1845. */
  1846. /*!
  1847. * \enum UBXRINVFlags
  1848. * \brief UBXRINVFlags used for #UBXCFG_RINV
  1849. *
  1850. * \var UBXRINVDump
  1851. * Dump data at startup. Does not work if flag binary is set.
  1852. * \var UBXRINVBinary
  1853. * Data is binary
  1854. */
  1855. /*!
  1856. * \enum UBXRXMLowPowerModes
  1857. * \brief UBXRXMLowPowerModes used for #UBXCFG_RXM
  1858. *
  1859. * \var UBXRXMContinousMode
  1860. * Continous Mode
  1861. * \var UBXRXMPowerSaveMode
  1862. * Power Save Mode
  1863. */
  1864. /*!
  1865. * \enum UBXSBASModes
  1866. * \brief UBXSBASModes used for #UBXCFG_SBAS
  1867. *
  1868. * \var UBXSBASModeEnabled
  1869. * SBAS Enabled (1) / Disabled (0)
  1870. * \var UBXSBASModeTest
  1871. * SBAS Testbed: Use data anyhow (1) / Ignore data when in Test Mode (SBAS Msg 0)
  1872. */
  1873. /*!
  1874. * \enum UBXSBASUsage
  1875. * \brief UBXSBASUsage
  1876. *
  1877. * \var UBXSBASUsageRange
  1878. * Use SBAS GEOs as a ranging source (for navigation)
  1879. * \var UBXSBASUsageDiffCorr
  1880. * Use SBAS Differential Corrections
  1881. * \var UBXSBASUsageIntegrity
  1882. * Use SBAS Integrity Information
  1883. */
  1884. /*!
  1885. * \enum UBXSBASScanModes2
  1886. * \brief UBXSBASScanModes2
  1887. *
  1888. * \var UBXSBASScanModePRN152
  1889. * \var UBXSBASScanModePRN153
  1890. * \var UBXSBASScanModePRN154
  1891. * \var UBXSBASScanModePRN155
  1892. * \var UBXSBASScanModePRN156
  1893. * \var UBXSBASScanModePRN157
  1894. * \var UBXSBASScanModePRN158
  1895. */
  1896. /*!
  1897. * \enum UBXSBASScanModes1
  1898. * \brief UBXSBASScanModes1
  1899. *
  1900. * \var UBXSBASScanModePRN120
  1901. * \var UBXSBASScanModePRN121
  1902. * \var UBXSBASScanModePRN122
  1903. * \var UBXSBASScanModePRN123
  1904. * \var UBXSBASScanModePRN124
  1905. * \var UBXSBASScanModePRN125
  1906. * \var UBXSBASScanModePRN126
  1907. * \var UBXSBASScanModePRN127
  1908. * \var UBXSBASScanModePRN128
  1909. * \var UBXSBASScanModePRN129
  1910. * \var UBXSBASScanModePRN130
  1911. * \var UBXSBASScanModePRN131
  1912. * \var UBXSBASScanModePRN132
  1913. * \var UBXSBASScanModePRN133
  1914. * \var UBXSBASScanModePRN134
  1915. * \var UBXSBASScanModePRN135
  1916. * \var UBXSBASScanModePRN136
  1917. * \var UBXSBASScanModePRN137
  1918. * \var UBXSBASScanModePRN138
  1919. * \var UBXSBASScanModePRN139
  1920. * \var UBXSBASScanModePRN140
  1921. * \var UBXSBASScanModePRN141
  1922. * \var UBXSBASScanModePRN142
  1923. * \var UBXSBASScanModePRN143
  1924. * \var UBXSBASScanModePRN144
  1925. * \var UBXSBASScanModePRN145
  1926. * \var UBXSBASScanModePRN146
  1927. * \var UBXSBASScanModePRN147
  1928. * \var UBXSBASScanModePRN148
  1929. * \var UBXSBASScanModePRN149
  1930. * \var UBXSBASScanModePRN150
  1931. * \var UBXSBASScanModePRN151
  1932. */
  1933. /*!
  1934. * \enum UBXUSBFlags
  1935. * \brief UBXUSBFlags
  1936. *
  1937. * \var USBFlagReEnum
  1938. * force re-enumeration
  1939. * \var USBFlagPowerMode
  1940. * self-powered (1), bus-powered (0)
  1941. */
  1942. /*!
  1943. * \enum UBXLOGCfg
  1944. * \brief UBXLOGCfg
  1945. * \var UBXLOGCfgCircular
  1946. * Log is circular (new entries overwrite old ones in a full log) if this bit set
  1947. */
  1948. /*!
  1949. * \enum UBXLOGSize
  1950. * \brief UBXLOGSize
  1951. *
  1952. * \var UBXLOGMaximumSafeSize
  1953. * Maximum safe size\n
  1954. * \note Ensures that logging will not be interupted and enough space
  1955. * will be left avaiable for all other uses of the filestore
  1956. * \var UBXLOGMinimunSize
  1957. * Minimun size
  1958. * \var UBXLOGUserDefined
  1959. * User defined\n
  1960. * \note See UBXLOG_CREATE::userDefinedSize
  1961. */
  1962. /*!
  1963. * \enum UBXLOGStatus
  1964. * \brief UBXLOGStatus
  1965. *
  1966. * \var UBXLOGStatusRecording
  1967. * Log entry recording is currently turned on
  1968. * \var UBXLOGStatusInactive
  1969. * Logging system not active - no log present
  1970. * \var UBXLOGStatusCircular
  1971. * The current log is circular
  1972. */
  1973. /*!
  1974. * \enum UBXRETRIEVEPOSFixType
  1975. * \brief UBXRETRIEVEPOSFixType
  1976. *
  1977. * \var UBXRETRIEVEPOS2DFix
  1978. * 2D-Fix
  1979. * \var UBXRETRIEVEPOS3DFix
  1980. * 3D-Fix
  1981. */
  1982. /*!
  1983. * \enum UBXRXRFlags
  1984. * \brief UBXRXRFlags
  1985. *
  1986. * \var UBXRXRAwake
  1987. * not in Backup mode
  1988. */
  1989. /*!
  1990. * \enum UBXAOPStatus
  1991. * \brief UBXAOPStatus
  1992. *
  1993. * \var UBXAOPStatusIdle
  1994. * AOP idle
  1995. * \var UBXAOPStatusRunning
  1996. * AOP running
  1997. */
  1998. /*!
  1999. * \enum UBXAOPCfg
  2000. * \brief UBXAOPCfg
  2001. *
  2002. * \var UBXAOPCfgUseAOP
  2003. * AOP enabled flag
  2004. */
  2005. /*!
  2006. * \enum UBXGPSFix
  2007. * \brief UBXGPSFix
  2008. *
  2009. * \var UBXGPSNoFix
  2010. * No Fix
  2011. * \var UBXGPSDeadReckoning
  2012. * Dead Reckoning only
  2013. * \var UBXGPS2DFix
  2014. * 2D-Fix
  2015. * \var UBXGPS3DFix
  2016. * 3D-Fix
  2017. * \var UBXGPSGNSSDeadReckoning
  2018. * GNSS + dead reckoning combined
  2019. * \var UBXGPSTimeOnlyFix
  2020. * Time only fix
  2021. */
  2022. /*!
  2023. * \enum UBXPVTValid
  2024. * \brief UBXPVTValid
  2025. *
  2026. * \var UBXPVTValidDate
  2027. * Valid UTC Date
  2028. * \var UBXPVTValidTime
  2029. * Valid UTC Time of Day
  2030. * \var UBXPVTFullyResolved
  2031. * UTC Time of Day has been fully resolved (no seconds uncertainty)
  2032. */
  2033. /*!
  2034. * \enum UBXPVTPSMStates
  2035. * \brief UBXPVTPSMStates
  2036. *
  2037. * \var UBXPVTPSMStateNA
  2038. * n/a (i.e no PSM is active)
  2039. * \var UBXPVTPSMStateEnabled
  2040. * Enabled (an intermediate state before Acquisition state)
  2041. * \var UBXPVTPSMStateAcquisition
  2042. * Acquisition
  2043. * \var UBXPVTPSMStateTracking
  2044. * Tracking
  2045. * \var UBXPVTPSMStatePowerOptim
  2046. * Power optimized tracking
  2047. * \var UBXPVTPSMStateInactive
  2048. * Inactive
  2049. */
  2050. /*!
  2051. * \enum UBXSBASService
  2052. * \brief UBXSBASService
  2053. *
  2054. * \var UBXSBASServiceRanging
  2055. * Service ranging
  2056. * \var UBXSBASServiceCorrections
  2057. * Service corrections
  2058. * \var UBXSBASServiceIntegrity
  2059. * Service integrity
  2060. * \var UBXSBASServiceTestmode
  2061. * Service in testmode
  2062. */
  2063. /*!
  2064. * \enum UBXSBASSOLFlags
  2065. * \brief UBXSBASSOLFlags
  2066. *
  2067. {
  2068. * \var UBXSBASSOLGPSfixOK
  2069. * Fix within limits. Position and velocity valid and within DOP and ACC Masks.
  2070. * \var UBXSBASSOLDiffSoln
  2071. * DGPS used
  2072. * \var UBXSBASSOLWKNSet
  2073. * Valid GPS week number
  2074. * \var UBXSBASSOLTOWSet
  2075. * Valid GPS time of week (iTOW & fTOW)
  2076. */
  2077. /*!
  2078. * \enum UBXSVINFOChipGen
  2079. * \brief UBXSVINFOChipGen
  2080. *
  2081. * \var UBXSVINFOAntarisChip
  2082. * Antaris, Antaris 4
  2083. * \var UBXSVINFOUBlox5Chip
  2084. * u-blox 5
  2085. * \var UBXSVINFOUBlox6Chip
  2086. * u-blox 6
  2087. */
  2088. /*!
  2089. * \enum UBXSVINFOFlags
  2090. * \brief UBXSVINFOFlags
  2091. *
  2092. {
  2093. * \var UBXSVINFOFlagsSVUsed
  2094. * SV is used for navigation
  2095. * \var UBXSVINFOFlagsDiffCorr
  2096. * Differential correction data is available for this SV
  2097. * \var UBXSVINFOFlagsOrbitAvail
  2098. * Orbit information is available for this SV (Ephemeris or Almanac)
  2099. * \var UBXSVINFOFlagsOrbitEph
  2100. * Orbit information is Ephemeris
  2101. * \var UBXSVINFOFlagsUnhealthy
  2102. * SV is unhealthy / shall not be used
  2103. * \var UBXSVINFOFlagsOrbitAlm
  2104. * Orbit information is Almanac Plus
  2105. * \var UBXSVINFOFlagsOrbitAop
  2106. * Orbit information is AssistNow Autonomous
  2107. * \var UBXSVINFOFlagsSmoothed
  2108. * Carrier smoothed pseudorange used
  2109. */
  2110. /*!
  2111. * \enum UBXSVINFOQualityId
  2112. * \brief UBXSVINFOQualityId
  2113. *
  2114. * \var UBXSVINFOQualityChannelIdle
  2115. * This channel is idle
  2116. * \var UBXSVINFOQualityChannelSearching
  2117. * Channel is searching
  2118. * \var UBXSVINFOQualitySignalAquired
  2119. * Signal aquired
  2120. * \var UBXSVINFOQualitySignalDetected
  2121. * Signal detected but unusable
  2122. * \var UBXSVINFOQualityCodeLockOnSignal
  2123. * Code Lock on Signal
  2124. * \var UBXSVINFOQualityCodeCarrierLocked
  2125. * Code and Carrier locked
  2126. */
  2127. /*!
  2128. * \enum UBXTIMEGPSValidityFlags
  2129. * \brief UBXTIMEGPSValidityFlags
  2130. *
  2131. * \var UBXTIMEGPSTowValid
  2132. * Valid GPS time of week (iTOW & fTOW)
  2133. * \var UBXTIMEGPSWeekValid
  2134. * Valid GPS week number
  2135. * \var UBXTIMEGPSLeapSValid
  2136. * Valid GPS leap seconds
  2137. */
  2138. /*!
  2139. * \enum UBXTIMEUTCValidityFlags
  2140. * \brief UBXTIMEUTCValidityFlags
  2141. *
  2142. * \var UBXTIMEUTCValidTOW
  2143. * Valid Time of Week
  2144. * \var UBXTIMEUTCValidWKN
  2145. * Valid Week Number
  2146. * \var UBXTIMEUTCValidUTC
  2147. * Valid UTC Time
  2148. */
  2149. /*!
  2150. * \enum UBXPMREQFlags
  2151. * \brief UBXPMREQFlags
  2152. *
  2153. * \var UBXPMREQBackup
  2154. * The receiver goes into backup mode for a time period defined by duration
  2155. */
  2156. /*!
  2157. * \enum UBXTM2FlagsMode
  2158. * \brief UBXTM2FlagsMode
  2159. *
  2160. * \var UBXTM2FlagsModeSingle
  2161. * Single mode
  2162. * \var UBXTM2FlagsModeRunning
  2163. * Running mode
  2164. */
  2165. /*!
  2166. * \enum UBXTM2FlagsRun
  2167. * \brief UBXTM2FlagsRun
  2168. *
  2169. * \var UBXTM2FlagsRunArmed
  2170. * Armed
  2171. * \var UBXTM2FlagsRunStopped
  2172. * Stopped
  2173. */
  2174. /*!
  2175. * \enum UBXTM2FlagsTimeBase
  2176. * \brief UBXTM2FlagsTimeBase
  2177. *
  2178. * \var UBXTM2FlagsTimeBaseReceiverTime
  2179. * Time base is Receiver Time
  2180. * \var UBXTM2FlagsTimeBaseGPS
  2181. * Time base is GPS
  2182. * \var UBXTM2FlagsTimeBaseUTC
  2183. * Time base is UTC
  2184. */
  2185. /*!
  2186. * \enum UBXTM2FlagsUTC
  2187. * \brief UBXTM2FlagsUTC
  2188. *
  2189. * \var UBXTM2FlagsUTCNotAvailable
  2190. * UTC not available
  2191. * \var UBXTM2FlagsUTCAvailable
  2192. * UTC available
  2193. */
  2194. /*!
  2195. * \enum UBXTM2FlagsTime
  2196. * \brief UBXTM2FlagsTime
  2197. *
  2198. * \var UBXTM2FlagsTimeInvalid
  2199. * Time is not valid
  2200. * \var UBXTM2FlagsTimeValid
  2201. * Time is valid (Valid GPS fix)
  2202. */
  2203. /*!
  2204. * \enum UBXTPFlags
  2205. * \brief UBXTPFlags
  2206. *
  2207. * \var UBXTPTimeBaseUTC
  2208. * If is set time base is UTC. If not set time base is GPS
  2209. * \var UBXTPUTCAvailable
  2210. * UTC available
  2211. */
  2212. /*!
  2213. * \enum UBXVRFYFlagsSource
  2214. * \brief UBXVRFYFlagsSource
  2215. *
  2216. * \var UBXVRFYNoTimeAidingDone
  2217. * No time aiding done
  2218. * \var UBXVRFYSourceRTC
  2219. * Source was RTC
  2220. * \var UBXVRFYSourceAID_INI
  2221. * Source was AID-INI
  2222. */
  2223. /*! \struct UBXHdr
  2224. * \brief This structure is UBX message header
  2225. * \var UBXHdr::msgClass
  2226. * Message class. A class is a grouping of messages which are related to each other.
  2227. * See #UBXMessageClass
  2228. * \var UBXHdr::msgId
  2229. * Message identificator. See #UBXMessageId
  2230. * \var UBXHdr::length
  2231. * Length is defined as being the length of the payload, only. It does not include
  2232. * Sync Chars, Length Field, Class, ID or CRC fields. The number format of the
  2233. * length field is an unsigned 16-Bit integer in Little Endian Format.
  2234. */
  2235. /*! \struct UBXMsg
  2236. * \brief This structure is base for every message in
  2237. * UBX protocol
  2238. * \var UBXMsg::preamble
  2239. * preable of UBX message is allways 0xB562
  2240. * \var UBXMsg::hdr
  2241. * UBX message header of #UBXHdr type.
  2242. * \var UBXMsg::payload
  2243. * Union of #UBXMsgs type that contains all possible payloads
  2244. * for current protocol version
  2245. */
  2246. /*! \struct UBXMsgBuffer
  2247. * \brief This structure is used by every message getters
  2248. * to wrap returned message data.
  2249. * \var UBXMsgBuffer::size
  2250. * size of buffer
  2251. * \var UBXMsgBuffer::data
  2252. * pointer to data heap
  2253. */
  2254. /*! \union UBXMsgs
  2255. * \brief This union contains all possible payloads
  2256. * in current protocol version
  2257. */
  2258. /*! \struct UBXAlpFileInfo
  2259. * \brief This structure contains data of alpfile
  2260. * It's simple wrapper on byte array with file id
  2261. * specification
  2262. * \var UBXAlpFileInfo::fileId
  2263. * File id used to indetificate part appurtenance
  2264. * \var UBXMsg::alpData
  2265. * Part of file data
  2266. * \var UBXMsg::dataSize
  2267. * Size of part in bytes
  2268. */
  2269. /*!
  2270. * \struct UBXAID_ALPSRV
  2271. * This message is sent by the ALP client to the ALP server in order to request data. The given
  2272. * identifier must be prepended to the requested data when submitting the data.
  2273. * \brief ALP client requests AlmanacPlus data from server
  2274. * \var UBXAID_ALPSRV::idSize
  2275. * Identifier size. This data, beginning at message start, must prepend the returned data.
  2276. * \var UBXAID_ALPSRV::type
  2277. * Requested data type. Must be different from 0xff, otherwise this is not a data request.
  2278. * \var UBXAID_ALPSRV::offset
  2279. * Requested data offset [16bit words]
  2280. * \var UBXAID_ALPSRV::size
  2281. * Requested data size [16bit words]
  2282. * \var UBXAID_ALPSRV::fileId
  2283. * Unused when requesting data, filled in when sending back the data
  2284. * \var UBXAID_ALPSRV::dataSize
  2285. * Actual data size. Unused when requesting data, filled in when sending back the data.
  2286. * \var UBXAID_ALPSRV::id1
  2287. * Identifier data
  2288. * \var UBXAID_ALPSRV::id2
  2289. * Identifier data
  2290. * \var UBXAID_ALPSRV::id3
  2291. * Identifier data
  2292. */
  2293. /*!
  2294. * \struct UBXACK_ACK
  2295. * Output upon processing of an input message
  2296. * \brief Message acknowledged
  2297. * \var UBXACK_ACK::msgClass
  2298. * Class ID of the Acknowledged Message
  2299. * \see #UBXMessageClass to fill this field
  2300. * \var UBXACK_ACK::msgId
  2301. * Message ID of the Acknowledged Message
  2302. * \see #UBXMessageId to fill this field
  2303. */
  2304. /*!
  2305. * \struct UBXACK_NACK
  2306. * Output upon processing of an input message
  2307. * \brief Message Not-Acknowledged
  2308. * \var UBXACK_NACK::msgClass
  2309. * Class ID of the Acknowledged Message
  2310. * \see #UBXMessageClass to fill this field
  2311. * \var UBXACK_NACK::msgId
  2312. * Message ID of the Acknowledged Message
  2313. * \see #UBXMessageId to fill this field
  2314. */
  2315. /*!
  2316. * \struct UBXAID_ALM_POLL
  2317. * Poll GPS Aiding Data (Almanac) for all 32 SVs by sending this message to the receiver
  2318. * without any payload. The receiver will return 32 messages of type AID-ALM as defined
  2319. * below.
  2320. * \note No payload
  2321. * \brief Poll GPS Aiding Almanac Data
  2322. */
  2323. /*!
  2324. * \struct UBXAID_ALM_POLL_OPT
  2325. * Poll GPS Aiding Data (Almanac) for an SV by sending this message to the receiver. The
  2326. * receiver will return one message of type AID-ALM as defined below.
  2327. * \brief Poll GPS Aiding Almanac Data for a SV
  2328. *
  2329. * \var UBXAID_ALM_POLL_OPT::svid
  2330. * SV ID for which the receiver shall return its
  2331. * Almanac Data (Valid Range: 1 .. 32 or 51, 56,
  2332. * 63).
  2333. */
  2334. /*!
  2335. * \struct UBXAID_ALM
  2336. * - If the WEEK Value is 0, DWRD0 to DWRD7 are not sent as the Almanac is not available
  2337. * for the given SV. This may happen even if NAV-SVINFO and RXM-SVSI are indicating
  2338. * almanac availability as the internal data may not represent the content of an original
  2339. * broadcast almanac (or only parts thereof).
  2340. * - DWORD0 to DWORD7 contain the 8 words following the Hand-Over Word ( HOW )
  2341. * from the GPS navigation message, either pages 1 to 24 of sub-frame 5 or pages 2 to 10
  2342. * of subframe 4. See IS-GPS-200 for a full description of the contents of the Almanac
  2343. * pages.
  2344. * - In DWORD0 to DWORD7, the parity bits have been removed, and the 24 bits of data are
  2345. * located in Bits 0 to 23. Bits 24 to 31 shall be ignored.
  2346. * - Example: Parameter e (Eccentricity) from Almanac Subframe 4/5, Word 3, Bits 69-84
  2347. * within the subframe can be found in DWRD0, Bits 15-0 whereas Bit 0 is the LSB.
  2348. * \brief GPS Aiding Almanac Input/Output Message
  2349. *
  2350. * \var UBXAID_ALM::svid
  2351. * SV ID for which this
  2352. * Almanac Data is (Valid Range: 1 .. 32 or 51, 56,
  2353. * 63).
  2354. * \var UBXAID_ALM::week
  2355. * Issue Date of Almanac (GPS week number)
  2356. */
  2357. /*!
  2358. * \struct UBXAID_ALM_OPT
  2359. * - If the WEEK Value is 0, DWRD0 to DWRD7 are not sent as the Almanac is not available
  2360. * for the given SV. This may happen even if NAV-SVINFO and RXM-SVSI are indicating
  2361. * almanac availability as the internal data may not represent the content of an original
  2362. * broadcast almanac (or only parts thereof).
  2363. * - DWORD0 to DWORD7 contain the 8 words following the Hand-Over Word ( HOW )
  2364. * from the GPS navigation message, either pages 1 to 24 of sub-frame 5 or pages 2 to 10
  2365. * of subframe 4. See IS-GPS-200 for a full description of the contents of the Almanac
  2366. * pages.
  2367. * - In DWORD0 to DWORD7, the parity bits have been removed, and the 24 bits of data are
  2368. * located in Bits 0 to 23. Bits 24 to 31 shall be ignored.
  2369. * - Example: Parameter e (Eccentricity) from Almanac Subframe 4/5, Word 3, Bits 69-84
  2370. * within the subframe can be found in DWRD0, Bits 15-0 whereas Bit 0 is the LSB.
  2371. * \brief GPS Aiding Almanac Input/Output Message
  2372. *
  2373. * \var UBXAID_ALM_OPT::svid
  2374. * SV ID for which this
  2375. * Almanac Data is (Valid Range: 1 .. 32 or 51, 56,
  2376. * 63).
  2377. * \var UBXAID_ALM_OPT::week
  2378. * Issue Date of Almanac (GPS week number)
  2379. * \var UBXAID_ALM_OPT::dwrd[8]
  2380. * Almanac Words
  2381. */
  2382. /*!
  2383. * \struct UBXAID_ALP
  2384. * This message is used to transfer a chunk of data from the AlmanacPlus file to the receiver.
  2385. * Upon reception of this message, the receiver will write the payload data to its internal
  2386. * non-volatile memory, eventually also erasing that part of the memory first. Make sure that
  2387. * the payload size is even sized (i.e. always a multiple of 2). Do not use payloads larger than
  2388. * ~ 700 bytes, as this would exceed the receiver's internal buffering capabilities. The receiver
  2389. * will (not-) acknowledge this message using the message alternatives given below. The host
  2390. * shall wait for an acknowledge message before sending the next chunk.
  2391. * \note This structure contains variable payload:\n
  2392. * UBXU2_t alpData ALP file data
  2393. * \brief ALP file data transfer to the receiver
  2394. */
  2395. /*!
  2396. * \struct UBXAID_ALP_END
  2397. * This message is used to indicate that all chunks have been transferred, and normal receiver
  2398. * operation can resume. Upon reception of this message, the receiver will verify all chunks
  2399. * received so far, and enable AssistNow Offline and GPS receiver operation if successful. This
  2400. * message could also be sent to cancel an incomplete download.
  2401. * \brief Mark end of data transfer
  2402. * \var UBXAID_ALP_END::dummy
  2403. * - Value is ignored if it's end of data transfer
  2404. * - If value is set to 0x01 message acknowledges a data transfer
  2405. * - If value is set to 0x00 message indicates problems with a data transfer
  2406. */
  2407. /*!
  2408. * \struct UBXAID_ALP_POLL
  2409. * \brief Poll the AlmanacPlus status
  2410. *
  2411. * \var UBXAID_ALP_POLL::predTow
  2412. * Prediction start time of week
  2413. * \var UBXAID_ALP_POLL::predDur
  2414. * Prediction duration from start of first data set to
  2415. * end of last data set
  2416. * \var UBXAID_ALP_POLL::age
  2417. * Current age of ALP data
  2418. * \var UBXAID_ALP_POLL::predWno
  2419. * Prediction start week number
  2420. * \var UBXAID_ALP_POLL::almWno
  2421. * Truncated week number of reference almanac
  2422. * \var UBXAID_ALP_POLL::reserved1
  2423. * Reserved
  2424. * \var UBXAID_ALP_POLL::svs
  2425. * Number of satellite data sets contained in the
  2426. * ALP UBXAID_ALP_POLL::data
  2427. * \var UBXAID_ALP_POLL::reserved2
  2428. * Reserved
  2429. * \var UBXAID_ALP_POLL::reserved3
  2430. * Reserved
  2431. */
  2432. /*!
  2433. * \struct UBXAID_AOP_POLL
  2434. * Poll AssistNow Autonomous aiding data for all satellits by sending this empty message. The
  2435. * receiver will return an AID-AOP message (see definition below) for each satellite for which
  2436. * data is available. For satellites for which no data is available it will return a corresponding
  2437. * AID-AOP poll request message.
  2438. * \note No payload
  2439. * \brief Poll AssistNow Autonomous data
  2440. */
  2441. /*!
  2442. * \struct UBXAID_AOP_POLL_OPT
  2443. * Poll the AssistNow Autonomous data for the specified satellite. The receiver will return a
  2444. * AID-AOP message (see definition below) if data is available for the requested satellite. If no
  2445. * data is available it will return corresponding AID-AOP poll request message (i.e. this
  2446. * message).
  2447. * \brief Poll AssistNow Autonomous data for one satellite
  2448. * \var UBXAID_AOP_POLL_OPT::svid
  2449. * GPS SV id for which the data is requested (valid range: 1..32).
  2450. */
  2451. /*!
  2452. * \struct UBXAID_AOP
  2453. * If enabled, this message is output at irregular intervals. It is output whenever AssistNow
  2454. * Autonomous has produced new data for a satellite. Depending on the availability of the
  2455. * optional data the receiver will output either version of the message. If this message is
  2456. * polled using one of the two poll requests described above the receiver will send this
  2457. * message if AOP data is available or the corresponding poll request message if no AOP data
  2458. * is available for each satellite (i.e. svid 1..32). At the user's choice the optional data may be
  2459. * chopped from the payload of a previously polled message when sending the message back
  2460. * to the receiver. Sending a valid AID-AOP message to the receiver will automatically enable
  2461. * the AssistNow Autonomous feature on the receiver. See the section AssistNow
  2462. * Autonomous in the receiver description for details on this feature.
  2463. * \brief AssistNow Autonomous data
  2464. * \var UBXAID_AOP::svid
  2465. * GPS SV id
  2466. * \var UBXAID_AOP::data[59]
  2467. * AssistNow Autonomous data
  2468. */
  2469. /*!
  2470. * \struct UBXAID_AOP_OPT
  2471. * If enabled, this message is output at irregular intervals. It is output whenever AssistNow
  2472. * Autonomous has produced new data for a satellite. Depending on the availability of the
  2473. * optional data the receiver will output either version of the message. If this message is
  2474. * polled using one of the two poll requests described above the receiver will send this
  2475. * message if AOP data is available or the corresponding poll request message if no AOP data
  2476. * is available for each satellite (i.e. svid 1..32). At the user's choice the optional data may be
  2477. * chopped from the payload of a previously polled message when sending the message back
  2478. * to the receiver. Sending a valid AID-AOP message to the receiver will automatically enable
  2479. * the AssistNow Autonomous feature on the receiver. See the section AssistNow
  2480. * Autonomous in the receiver description for details on this feature.
  2481. * \brief AssistNow Autonomous data
  2482. * \var UBXAID_AOP_OPT::svid
  2483. * GPS SV id
  2484. * \var UBXAID_AOP_OPT::data[59]
  2485. * AssistNow Autonomous data
  2486. * \var UBXAID_AOP_OPT::optional0[48]
  2487. * Optional data chunk 1/3
  2488. * \var UBXAID_AOP_OPT::optional1[48]
  2489. * Optional data chunk 2/3
  2490. * \var UBXAID_AOP_OPT::optional2[48]
  2491. * Optional data chunk 3/3
  2492. */
  2493. /*!
  2494. * \struct UBXAID_DATA_POLL
  2495. * If this poll is received, the messages AID-INI, AID-HUI, AID-EPH and AID-ALM are sent.
  2496. * \note No payload
  2497. * \brief Polls all GPS Initial Aiding Data
  2498. */
  2499. /*!
  2500. * \struct UBXAID_EPH_POLL
  2501. * This message has an empty payload!
  2502. * Poll GPS Aiding Data (Ephemeris) for all 32 SVs by sending this message to the receivewithout any payload.
  2503. * The receiver will return 32 messages of type #UBXAID_EPH
  2504. * \note No payload
  2505. * \brief Poll GPS Aiding Ephemeris Data
  2506. *
  2507. */
  2508. /*!
  2509. * \struct UBXAID_EPH_POLL_OPT
  2510. * Poll GPS Constellation Data (Ephemeris) for an SV by sending this message to the receiver.
  2511. * The receiver will return 32 messages of type #UBXAID_EPH
  2512. * \brief Poll GPS Aiding Ephemeris Data for a SV
  2513. *
  2514. * \var UBXAID_EPH_POLL_OPT::svid
  2515. * SV ID for which the receiver shall return its
  2516. * Ephemeris Data (Valid Range: 1 .. 32).
  2517. */
  2518. /*!
  2519. * \struct UBXAID_EPH
  2520. * - SF1D0 to SF3D7 is only sent if ephemeris is available for this SV. If not, the payload may
  2521. * be reduced to 8 Bytes, or all bytes are set to zero, indicating that this SV Number does
  2522. * not have valid ephemeris for the moment. This may happen even if NAV-SVINFO and
  2523. * RXM-SVSI are indicating ephemeris availability as the internal data may not represent the
  2524. * content of an original broadcast ephemeris (or only parts thereof).
  2525. * - SF1D0 to SF3D7 contain the 24 words following the Hand-Over Word ( HOW ) from the
  2526. * GPS navigation message, subframes 1 to 3. The Truncated TOW Count is not valid and
  2527. * cannot be used. See IS-GPS-200 for a full description of the contents of the Subframes.
  2528. * - In SF1D0 to SF3D7, the parity bits have been removed, and the 24 bits of data are
  2529. * located in Bits 0 to 23. Bits 24 to 31 shall be ignored.
  2530. * - When polled, the data contained in this message does not represent the full original
  2531. * ephemeris broadcast. Some fields that are irrelevant to u-blox receivers may be missing.
  2532. * The week number in Subframe 1 has already been modified to match the Time Of
  2533. * Ephemeris (TOE).
  2534. * \brief GPS Aiding Ephemeris Input/Output Message
  2535. * \var UBXAID_EPH::svid
  2536. * SV ID for which this ephemeris data is (Valid
  2537. * Range: 1 .. 32).
  2538. * \var UBXAID_EPH::how
  2539. * Hand-Over Word of first Subframe. This is
  2540. * required if data is sent to the receiver.
  2541. * 0 indicates that no Ephemeris Data is following.
  2542. */
  2543. /*!
  2544. * \struct UBXAID_EPH_OPT
  2545. * - SF1D0 to SF3D7 is only sent if ephemeris is available for this SV. If not, the payload may
  2546. * be reduced to 8 Bytes, or all bytes are set to zero, indicating that this SV Number does
  2547. * not have valid ephemeris for the moment. This may happen even if NAV-SVINFO and
  2548. * RXM-SVSI are indicating ephemeris availability as the internal data may not represent the
  2549. * content of an original broadcast ephemeris (or only parts thereof).
  2550. * - SF1D0 to SF3D7 contain the 24 words following the Hand-Over Word ( HOW ) from the
  2551. * GPS navigation message, subframes 1 to 3. The Truncated TOW Count is not valid and
  2552. * cannot be used. See IS-GPS-200 for a full description of the contents of the Subframes.
  2553. * - In SF1D0 to SF3D7, the parity bits have been removed, and the 24 bits of data are
  2554. * located in Bits 0 to 23. Bits 24 to 31 shall be ignored.
  2555. * - When polled, the data contained in this message does not represent the full original
  2556. * ephemeris broadcast. Some fields that are irrelevant to u-blox receivers may be missing.
  2557. * The week number in Subframe 1 has already been modified to match the Time Of
  2558. * Ephemeris (TOE).
  2559. * \brief GPS Aiding Ephemeris Input/Output Message
  2560. * \var UBXAID_EPH_OPT::svid
  2561. * SV ID for which this ephemeris data is (Valid
  2562. * Range: 1 .. 32).
  2563. * \var UBXAID_EPH_OPT::how
  2564. * Hand-Over Word of first Subframe. This is
  2565. * required if data is sent to the receiver.
  2566. * 0 indicates that no Ephemeris Data is following.
  2567. * \var UBXAID_EPH_OPT::sf1d[8]
  2568. * Subframe 1 Words 3..10 (SF1D0..SF1D7)
  2569. * \var UBXAID_EPH_OPT::sf2d[8]
  2570. * Subframe 2 Words 3..10 (SF1D0..SF1D7)
  2571. * \var UBXAID_EPH_OPT::sf3d[8]
  2572. * Subframe 3 Words 3..10 (SF1D0..SF1D7)
  2573. */
  2574. /*!
  2575. * \struct UBXAID_HUI_POLL
  2576. * \note No payload
  2577. * \brief Poll GPS Health, UTC and ionosphere parameters
  2578. */
  2579. /*!
  2580. * \struct UBXAID_HUI
  2581. * This message contains a health bit mask, UTC time and Klobuchar parameters. For more
  2582. * information on these parameters, please see the ICD-GPS-200 documentation.
  2583. * \brief GPS Health, UTC and ionosphere parameters
  2584. * \var UBXAID_HUI::health
  2585. * Bitmask, every bit represenst a GPS SV (1-32). If
  2586. * the bit is set the SV is healthy.
  2587. * \var UBXAID_HUI::utcA0
  2588. * UTC - parameter A0
  2589. * \var UBXAID_HUI::utcA1
  2590. * UTC - parameter A1
  2591. * \var UBXAID_HUI::utcTOW
  2592. * UTC - reference time of week
  2593. * \var UBXAID_HUI::utcWNT
  2594. * UTC - reference week number
  2595. * \var UBXAID_HUI::utcLS
  2596. * UTC - time difference due to leap seconds before event
  2597. * \var UBXAID_HUI::utcWNF
  2598. * UTC - week number when next leap second event occurs
  2599. * \var UBXAID_HUI::utcDN
  2600. * UTC - day of week when next leap second event occurs
  2601. * \var UBXAID_HUI::utcLSF
  2602. * UTC - time difference due to leap seconds after event
  2603. * \var UBXAID_HUI::utcSpare
  2604. * UTC - Spare to ensure structure is a multiple of 4 bytes
  2605. * \var UBXAID_HUI::klobA0
  2606. * Klobuchar - alpha 0
  2607. * \var UBXAID_HUI::klobA1
  2608. * Klobuchar - alpha 1
  2609. * \var UBXAID_HUI::klobA2
  2610. * Klobuchar - alpha 2
  2611. * \var UBXAID_HUI::klobA3
  2612. * Klobuchar - alpha 3
  2613. * \var UBXAID_HUI::klobB0
  2614. * Klobuchar - beta 0
  2615. * \var UBXAID_HUI::klobB1
  2616. * Klobuchar - beta 1
  2617. * \var UBXAID_HUI::klobB2
  2618. * Klobuchar - beta 2
  2619. * \var UBXAID_HUI::klobB3
  2620. * Klobuchar - beta 3
  2621. * \var UBXAID_HUI::flags
  2622. * Flags.
  2623. * \see #UBXHUIFlags to fill this field
  2624. */
  2625. /*!
  2626. * \struct UBXAID_INI_POLL
  2627. * \note No payload
  2628. * \brief Poll GPS Initial Aiding Data
  2629. */
  2630. /*!
  2631. * \struct UBXAID_INI
  2632. * This message contains position, time and clock drift information. The position can be input
  2633. * in either the ECEF X/Y/Z coordinate system or as lat/lon/height. The time can either be input
  2634. * as inexact value via the standard communication interface, suffering from latency
  2635. * depending on the baudrate, or using harware time synchronization where an accuracte
  2636. * time pulse is input on the external interrupts. It is also possible to supply hardware
  2637. * frequency aiding by connecting a continuous signal to an external interrupt.
  2638. * \brief Aiding position, time, frequency, clock drift
  2639. *
  2640. * \var UBXAID_INI::ecefXOrLat
  2641. * WGS84 ECEF X coordinate or latitude, depending on UBXAID_INI::flags
  2642. * \var UBXAID_INI::ecefYOrLat
  2643. * WGS84 ECEF Y coordinate or longitude, depending on UBXAID_INI::flags
  2644. * \var UBXAID_INI::ecefZOrLat
  2645. * WGS84 ECEF Z coordinate or altitude, depending on UBXAID_INI::flags
  2646. * \var UBXAID_INI::posAcc
  2647. * Position accuracy
  2648. * \var UBXAID_INI::tmCfg
  2649. * Time mark configuration
  2650. * \see #UBXINItmCfg to fill this field
  2651. * \var UBXAID_INI::wnoOrDate
  2652. * Actual week number or yearSince2000/Month (YYMM), depending on UBXAID_INI::flags
  2653. * \var UBXAID_INI::towOrDate
  2654. * Actual time of week or
  2655. * DayOfMonth/Hour/Minute/Second
  2656. * (DDHHMMSS), depending on UBXAID_INI::flags
  2657. * \var UBXAID_INI::towNs
  2658. * Fractional part of time of week
  2659. * \var UBXAID_INI::tAccMS
  2660. * Milliseconds part of time accuracy
  2661. * \var UBXAID_INI::tAccNS
  2662. * Nanoseconds part of time accuracy
  2663. * \var UBXAID_INI::clkDOrFreq
  2664. * Clock drift or frequency, depending on UBXAID_INI::flags
  2665. * \var UBXAID_INI::clkDAccOrFreqAcc
  2666. * Accuracy of clock drift or frequency, depending on UBXAID_INI::flags
  2667. * \var UBXAID_INI::flags
  2668. * Bitmask with the flags
  2669. * \see #UBXINIFlags to fill this field
  2670. */
  2671. /*!
  2672. * \struct UBXAID_REQ
  2673. * AID-REQ is not a message but a placeholder for configuration purposes.
  2674. * If the virtual AID-REQ is configured to be output (see CFG-MSG), the receiver will output a
  2675. * request for aiding data (AID-DATA) after a start-up if its internally stored data (position,
  2676. * time) don't allow it to perform a hot start. If position and time information could be
  2677. * retrieved from internal storage, no AID-REQ will be sent, even when the receiver is missing
  2678. * valid ephemeris data. Only GPS orbits are supported for GNSS.
  2679. * \note No payload
  2680. * \brief Sends a poll UXBAID_DATA for all GPS Aiding Data
  2681. */
  2682. /*!
  2683. * \struct UBXCFG_ANT_POLL
  2684. * Sending this (empty / no-payload) message to the receiver results in the receiver returning a
  2685. * message of type #UBXCFG_ANT
  2686. * \note No payload
  2687. * \brief Poll Antenna Control Settings
  2688. */
  2689. /*!
  2690. * \struct UBXANTPins
  2691. * It describes antenna pin configuration
  2692. * \brief This sturcture is a part of #UBXCFG_ANT message
  2693. * \var UBXANTPins::UBXANTpinSwitch
  2694. * PIO-Pin used for switching antenna supply (internal to TIM-LP/TIM-LF)
  2695. * \var UBXANTPins::UBXANTpinSCD
  2696. * PIO-Pin used for detecting a short in the antenna supply
  2697. * \var UBXANTPins::UBXANTpinOCD
  2698. * PIO-Pin used for detecting open/not connected antenna
  2699. * \var UBXANTPins::UBXANTreconfig
  2700. * If set to one, and this command is sent to the receiver, the receiver will reconfigure the pins as specified
  2701. */
  2702. /*!
  2703. * \struct UBXCFG_ANT
  2704. * \brief Antenna Control Settings
  2705. * \var UBXCFG_ANT::flags
  2706. * Antenna flag mask
  2707. * \see #UBXANTFlags to fill this field
  2708. * \var UBXCFG_ANT::pins
  2709. * Antenna Pin Configuration
  2710. */
  2711. /*!
  2712. * \struct UBXCFG_CFG
  2713. * See the Receiver Configuration chapter(u-blox official documentation) for a detailed description on how Receiver
  2714. * Configuration should be used. The three masks are made up of individual bits, each bit
  2715. * indicating the sub-section of all configurations on which the corresponding action shall be
  2716. * carried out. The reserved bits in the masks must be set to '0'. For detailed information
  2717. * please refer to the Organization of the Configuration Sections (u-blox official documentation). Please note that commands
  2718. * can be combined. The sequence of execution is Clear, Save, Load
  2719. * \brief Clear, Save and Load configurations
  2720. *
  2721. * \var UBXCFG_CFG::clearMask
  2722. * Mask with configuration sub-sections to Clear
  2723. * \note Load Default Configurations to Permanent
  2724. * Configurations in non-volatile memory
  2725. * \see #UBXCFGMask to fill this field
  2726. * \var UBXCFG_CFG::saveMask
  2727. * Mask with configuration sub-section to Save
  2728. * \note Save Current Configuration to Non-volatile
  2729. * Memory
  2730. * \see #UBXCFGMask to fill this field
  2731. * \var UBXCFG_CFG::loadMask
  2732. * Mask with configuration sub-sections to Load
  2733. * \note Load Permanent Configurations from
  2734. * Non-volatile Memory to Current
  2735. * Configurations
  2736. * \see #UBXCFGMask to fill this field
  2737. */
  2738. /*!
  2739. * \struct UBXCFG_CFG_OPT
  2740. * See the Receiver Configuration chapter(u-blox official documentation) for a detailed description on how Receiver
  2741. * Configuration should be used. The three masks are made up of individual bits, each bit
  2742. * indicating the sub-section of all configurations on which the corresponding action shall be
  2743. * carried out. The reserved bits in the masks must be set to '0'. For detailed information
  2744. * please refer to the Organization of the Configuration Sections (u-blox official documentation). Please note that commands
  2745. * can be combined. The sequence of execution is Clear, Save, Load
  2746. * \brief Clear, Save and Load configurations
  2747. *
  2748. * \var UBXCFG_CFG_OPT::clearMask
  2749. * Mask with configuration sub-sections to Clear
  2750. * \note Load Default Configurations to Permanent
  2751. * Configurations in non-volatile memory
  2752. * \see #UBXCFGMask to fill this field
  2753. * \var UBXCFG_CFG_OPT::saveMask
  2754. * Mask with configuration sub-section to Save
  2755. * \note Save Current Configuration to Non-volatile
  2756. * Memory
  2757. * \see #UBXCFGMask to fill this field
  2758. * \var UBXCFG_CFG_OPT::loadMask
  2759. * Mask with configuration sub-sections to Load
  2760. * \note Load Permanent Configurations from
  2761. * Non-volatile Memory to Current
  2762. * Configurations
  2763. * \see #UBXCFGMask to fill this field
  2764. * \var UBXCFG_CFG_OPT::deviceMask
  2765. * Mask which selects the devices for this
  2766. * command
  2767. * \see #UBXCFGDeviceMask to fill this field
  2768. */
  2769. /*!
  2770. * \struct UBXCFG_DAT_POLL
  2771. * Upon sending of this message, the receiver returns UBXCFG_DAT
  2772. * \note No payload
  2773. * \brief Poll Datum Setting
  2774. */
  2775. /*!
  2776. * \struct UBXCFG_DAT_IN
  2777. * \brief Set User-defined Datum
  2778. *
  2779. * \var UBXCFG_DAT_IN::majA
  2780. * Semi-major Axis
  2781. * \note accepted range = 6,300,000.0
  2782. * to 6,500,000.0 metres
  2783. * \var UBXCFG_DAT_IN::flat
  2784. * 1.0 / Flattening
  2785. * \note accepted range is 0.0 to 500.0
  2786. * \var UBXCFG_DAT_IN::dX
  2787. * X Axis shift at the origin
  2788. * \note accepted range is +/-5000.0 metres
  2789. * \var UBXCFG_DAT_IN::dY
  2790. * Y Axis shift at the origin
  2791. * \note accepted range is +/-5000.0 metres
  2792. * \var UBXCFG_DAT_IN::dZ
  2793. * Z Axis shift at the origin
  2794. * \note accepted range is +/-5000.0 metres
  2795. * \var UBXCFG_DAT_IN::rotX
  2796. * Rotation about the X Axis
  2797. * \note accepted range is +/-20.0 milli-arc seconds
  2798. * \var UBXCFG_DAT_IN::rotY
  2799. * Rotation about the Y Axis
  2800. * \note accepted range is +/-20.0 milli-arc seconds
  2801. * \var UBXCFG_DAT_IN::rotZ
  2802. * Rotation about the Z Axis
  2803. * \note accepted range is +/-20.0 milli-arc seconds
  2804. * \var UBXCFG_DAT_IN::scale
  2805. * Scale change
  2806. * \note accepted range is 0.0 to 50.0 parts per million
  2807. */
  2808. /*!
  2809. * \struct UBXCFG_DAT_OUT
  2810. * Returns the parameters of the currently defined datum. If no user-defined datum has been
  2811. * set, this will default to WGS84.
  2812. * \brief The currently defined Datum
  2813. * \var UBXCFG_DAT_OUT::datumNum
  2814. * Datum Number: 0 = WGS84, -1 = user-defined
  2815. * \var UBXCFG_DAT_OUT::datumName[6]
  2816. * ASCII String: WGS84 or USER
  2817. * \var UBXCFG_DAT_OUT::majA
  2818. * Semi-major Axis
  2819. * \note accepted range = 6,300,000.0
  2820. * to 6,500,000.0 metres
  2821. * \var UBXCFG_DAT_OUT::flat
  2822. * 1.0 / Flattening
  2823. * \note accepted range is 0.0 to 500.0
  2824. * \var UBXCFG_DAT_OUT::dX
  2825. * X Axis shift at the origin
  2826. * \note accepted range is +/-5000.0 metres
  2827. * \var UBXCFG_DAT_OUT::dY
  2828. * Y Axis shift at the origin
  2829. * \note accepted range is +/-5000.0 metres
  2830. * \var UBXCFG_DAT_OUT::dZ
  2831. * Z Axis shift at the origin
  2832. * \note accepted range is +/-5000.0 metres
  2833. * \var UBXCFG_DAT_OUT::rotX
  2834. * Rotation about the X Axis
  2835. * \note accepted range is +/-20.0 milli-arc seconds
  2836. * \var UBXCFG_DAT_OUT::rotY
  2837. * Rotation about the Y Axis
  2838. * \note accepted range is +/-20.0 milli-arc seconds
  2839. * \var UBXCFG_DAT_OUT::rotZ
  2840. * Rotation about the Z Axis
  2841. * \note accepted range is +/-20.0 milli-arc seconds
  2842. * \var UBXCFG_DAT_OUT::scale
  2843. * Scale change
  2844. * \note accepted range is 0.0 to 50.0 parts per million
  2845. */
  2846. /*!
  2847. * \struct UBXCFG_GNSS_POLL
  2848. * Polls the configuration of the GNSS system configuration\
  2849. * \note No payload
  2850. * \brief Polls the configuration of the GNSS system configuration
  2851. */
  2852. /*!
  2853. * \struct UBXCFG_GNSS
  2854. * Gets or sets the GNSS system channel sharing configuration. The receiver will send an
  2855. * #UBXACK_ACK message if the configuration is valid, an #UBXACK_NAK if any configuration
  2856. * parameter is invalid.
  2857. * The number of tracking channels in use must not exceed the number of tracking channels
  2858. * available on hardware, and the sum of all reserved tracking channels needs to be smaller or
  2859. * equal the number of tracking channels in use. Additionally, the maximum number of
  2860. * tracking channels used for the specific GNSS system must be greater or equal to the
  2861. * number of reserved tracking channels.
  2862. * See section GNSS Configuration for a discussion of the use of this message and section
  2863. * Satellite Numbering for a description of the GNSS IDs available.
  2864. * Configuration specific to the GNSS system can be done via other messages. Configuration
  2865. * specific to SBAS can be done with #UBXCFG_SBAS.
  2866. * Note that GLONASS operation cannot be selected when the receiver is configured to
  2867. * operate in Power Save Mode (using #UBXCFG_RXM).
  2868. * \note This message contains variable payload. See #UBXCFG_GNSS_PART to add variable payload.
  2869. * \brief GNSS system configuration
  2870. *
  2871. * \var UBXCFG_GNSS::msgVer
  2872. * Message version
  2873. * \var UBXCFG_GNSS::numTrkChHw
  2874. * Number of tracking channels available in
  2875. * hardware
  2876. * \note Read only
  2877. * \var UBXCFG_GNSS::numTrkChUse
  2878. * Number of tracking channels to use
  2879. * \note Should be <= UBXCFG_GNSS::numTrkChHw
  2880. * \var UBXCFG_GNSS::numConfigBlocks
  2881. * Number of configuration blocks following
  2882. */
  2883. /*!
  2884. * \struct UBXCFG_GNSS_PART
  2885. * \brief This structure is variable payload for #UBXCFG_GNSS
  2886. * \var UBXCFG_GNSS_PART::gnssId
  2887. * GNSS identifier
  2888. * \see #UBXGNSSIds to fill this field
  2889. * \var UBXCFG_GNSS_PART::resTrkCh
  2890. * Number of reserved (minimum) tracking
  2891. * channels for this GNSS system
  2892. * \var UBXCFG_GNSS_PART::maxTrkCh
  2893. * Maximum number of tracking channels used for
  2894. * this GNSS system
  2895. * \note should be >= UBXCFG_GNSS_PART::resTrkCh
  2896. * \var UBXCFG_GNSS_PART::reserved1
  2897. * Reserved
  2898. * \var UBXCFG_GNSS_PART::flags
  2899. * Bitfield of flags.\n
  2900. * The only acceptable values:\n
  2901. * - 0 - disabled
  2902. * - 1 - enabled
  2903. */
  2904. /*!
  2905. * \struct UBXCFG_INF_POLL
  2906. * \brief Poll INF message configuration for one protocol
  2907. *
  2908. * \var protocolId
  2909. * Protocol Identifier, identifying the output
  2910. * protocol for this Poll Request.
  2911. * \see #UBXCFGProtocolIds to fill this field
  2912. */
  2913. /*!
  2914. * \struct UBXCFG_INF
  2915. * The value of infMsgMask[x] below are that each bit represents one of the INF class
  2916. * messages (Bit 0 for ERROR, Bit 1 for WARNING and so on.). For a complete list, please see
  2917. * the Message Class INF(). Several configurations can be concatenated to one input
  2918. * message. In this case the payload length can be a multiple of the normal length. Output
  2919. * messages from the module contain only one configuration unit. Please note that I/O Ports 1
  2920. * and 2 correspond to serial ports 1 and 2. I/O port 0 is DDC. I/O port 3 is USB. I/O port 4 is
  2921. * SPI. I/O port 5 is reserved for future use.
  2922. * \note This message has variable payload of #UBXCFG_INF_PART type
  2923. * \brief Information message configuration
  2924. */
  2925. /*!
  2926. * \struct UBXCFG_INF_PART
  2927. * \brief The UBXCFG_INF_PART structure is variable payload for #UBXCFG_INF message
  2928. *
  2929. * \var protocolId
  2930. * Protocol Identifier, identifying for which
  2931. * protocol the configuration is set/get
  2932. * \see #UBXCFGProtocolIds to fill this field
  2933. * \var reserved0
  2934. * Reserved
  2935. * \var reserved1
  2936. * Reserved
  2937. * \var infMsgMask[6]
  2938. * A bit mask, saying which information messages
  2939. * are enabled on each I/O port
  2940. * \see #UBXCFGInfMsgMask to fill this field
  2941. */
  2942. /*!
  2943. * \struct UBXCFG_ITFM_POLL
  2944. * \note No payload
  2945. * \brief Polls the Jamming/Interference Monitor configuration.
  2946. */
  2947. /*!
  2948. * \struct UBXITFMConfig
  2949. * \brief This structure describes bitfields of UBXCFG_ITFM::config field
  2950. * \var UBXITFMConfig::bbThreshold
  2951. * Broadband jamming detection threshold
  2952. * \note unit - dB
  2953. * \var UBXITFMConfig::cwThreshold
  2954. * CW jamming detection threshold
  2955. * \note unit - dB
  2956. * \var UBXITFMConfig::reserved1
  2957. * Reserved algorithm settings
  2958. * \note should be set to 0x16B156
  2959. * \var UBXITFMConfig::enbled
  2960. * Enable interference detection
  2961. */
  2962. /*!
  2963. * \struct UBXITFMConfig2
  2964. * \brief This structure describes bitfields of UBXCFG_ITFM::config2 field
  2965. * \var UBXITFMConfig2::reserved2
  2966. * Reserved
  2967. * \note Should be 0x31E
  2968. * \var UBXITFMConfig2::antSetting
  2969. * Antenna setting
  2970. * \see #UBXITFMAntSetting to fill this field
  2971. * \var UBXITFMConfig2::reserved3
  2972. * Reserved
  2973. * \note Should be 0x00
  2974. */
  2975. /*!
  2976. * \struct UBXCFG_ITFM
  2977. * \brief Jamming/Interference Monitor configuration
  2978. *
  2979. * \var UBXCFG_ITFM::config
  2980. * Interference config word
  2981. * \see #UBXITFMConfig to fill this field
  2982. * \var UBXCFG_ITFM::config2
  2983. * Extra settings for jamming/interference monitor
  2984. * \see #UBXITFMConfig2 to fill this field
  2985. */
  2986. /*!
  2987. * \struct UBXCFG_LOGFILTER_POLL
  2988. * Upon sending of this message, the receiver returns CFG-LOGFILTER as defined below
  2989. * \note No payload
  2990. * \brief Poll Data Logger filter Configuration
  2991. */
  2992. /*!
  2993. * \struct UBXCFG_LOGFILTER
  2994. * This message is used to enable/disable logging and to get or set the position entry filter
  2995. * settings.
  2996. * Position entries can be filtered based on time difference, position difference or current
  2997. * speed thresholds. Position and speed filtering also have a minimum time interval.
  2998. * A position is logged if any of the thresholds are exceeded. If a threshold is set to zero it is
  2999. * ignored. The maximum rate of position logging is 1Hz.
  3000. * The filter settings will only be applied if the 'applyAllFilterSettings' flag is set. This enables
  3001. * recording to be enabled/disabled without affecting the other settings.
  3002. * \brief Data Logger Configuration
  3003. *
  3004. * \var UBXCFG_LOGFILTER::version
  3005. * The version of this message
  3006. * \note Set to 1
  3007. * \var UBXCFG_LOGFILTER::flags
  3008. * Flags
  3009. * \see #UBXLOGFILTERFlags to fill this field
  3010. * \var UBXCFG_LOGFILTER::minIterval
  3011. * Minimum time interval between logged
  3012. * positions
  3013. * \note This is only applied in
  3014. * combination with the speed and/or
  3015. * position thresholds
  3016. * \note 0 - not set
  3017. * \var UBXCFG_LOGFILTER::timeThreshold
  3018. * If the time difference is greater than the
  3019. * threshold then the position is logged
  3020. * \note 0 - not set
  3021. * \var UBXCFG_LOGFILTER::speedThreshold
  3022. * If the current speed is greater than the
  3023. * threshold then the position is logged
  3024. * \note 0 - not set
  3025. * \note UBXCFG_LOGFILTER::minInterval also applies
  3026. * \var UBXCFG_LOGFILTER::positionThreshold
  3027. * If the 3D position difference is greater than the
  3028. * threshold then the position is logged
  3029. * \note 0 - not set
  3030. * \note minInterval also applies
  3031. */
  3032. /*!
  3033. * \struct UBXCFG_MSG_POLL
  3034. * \brief Poll a message configuration
  3035. *
  3036. * \var UBXCFG_MSG_POLL::msgClass
  3037. * Message Class
  3038. * \see #UBXMessageClass to fill this field
  3039. * \var UBXCFG_MSG_POLL::msgId
  3040. * Message Id
  3041. * \see #UBXMessageId to fill this field
  3042. */
  3043. /*!
  3044. * \struct UBXCFG_MSG_RATES
  3045. * Set/Get message rate configurations to/from the receiver. See also section "How to change
  3046. * between protocols" (u-blox official documentation).
  3047. * - Send rate is relative to the event a message is registered on. For example, if the rate of a
  3048. * navigation message is set to 2, the message is sent every second navigation solution. For
  3049. * configuring NMEA messages, the section "NMEA Messages Overview" (u-blox official documentation describes Class and
  3050. * Identifier numbers used.
  3051. * \brief Set Message Rates
  3052. * \var UBXCFG_MSG_RATES::msgClass
  3053. * Message Class
  3054. * \see #UBXMessageClass to fill this field
  3055. * \var UBXCFG_MSG_RATES::msgId
  3056. * Message Id
  3057. * \see #UBXMessageId to fill this field
  3058. * \var UBXCFG_MSG_RATES::rate[6]
  3059. * Send rate on I/O Port (6 Ports)
  3060. */
  3061. /*!
  3062. * \struct UBXCFG_MSG_RATE
  3063. * Set/Get message rate configurations to/from the receiver. See also section "How to change
  3064. * between protocols" (u-blox official documentation).
  3065. * \brief Set Message Rate
  3066. * \var UBXCFG_MSG_RATE::msgClass
  3067. * Message Class
  3068. * \see #UBXMessageClass to fill this field
  3069. * \var UBXCFG_MSG_RATE::msgId
  3070. * Message Id
  3071. * \see #UBXMessageId to fill this field
  3072. * \var UBXCFG_MSG_RATE::rate
  3073. * Send rate on current Port
  3074. */
  3075. /*!
  3076. * \struct UBXCFG_NAV5_POLL
  3077. * \note No payload
  3078. * \brief Poll Navigation Engine Settings
  3079. */
  3080. /*!
  3081. * \struct UBXCFG_NAV5
  3082. * See the Navigation "Configuration Settings Description" (u-blox official documentation) for a detailed description of how
  3083. * these settings affect receiver operation.
  3084. * \brief Navigation Engine Settings
  3085. *
  3086. * \var mask
  3087. * Parameters Bitmask. Only the masked parameters will be applied.
  3088. * \see #UBXNAV5Mask to fill this field
  3089. * \var UBXCFG_NAV5::dynModel
  3090. * Dynamic Platform model
  3091. * \see #UBXNAV5Model to fill this field
  3092. * \var UBXCFG_NAV5::fixMode
  3093. * Position Fixing Mode
  3094. * \see #UBXNAV5FixMode to fill this field
  3095. * \var UBXCFG_NAV5::fixedAlt
  3096. * Fixed altitude (mean sea level) for 2D fix mode
  3097. * \var UBXCFG_NAV5::fixedAltVar
  3098. * Fixed altitude variance for 2D mode
  3099. * \var UBXCFG_NAV5::minElev
  3100. * Minimum Elevation for a GNSS satellite to be
  3101. * used in NAV
  3102. * \var UBXCFG_NAV5::drLimit
  3103. * Reserved
  3104. * \var UBXCFG_NAV5::pDop
  3105. * Position DOP Mask to use
  3106. * \var UBXCFG_NAV5::tDop
  3107. * Time DOP Mask to use
  3108. * \var UBXCFG_NAV5::pAcc
  3109. * Position Accuracy Mask
  3110. * \var UBXCFG_NAV5::tAcc
  3111. * Time Accuracy Mask
  3112. * \var UBXCFG_NAV5::staticHoldThresh
  3113. * Static hold threshold
  3114. * \var UBXCFG_NAV5::dgpsTimeOut
  3115. * DGPS timeout
  3116. * \var UBXCFG_NAV5::cnoThreshNumSVs
  3117. * Number of satellites required to have C/N0
  3118. * above cnoThresh for a fix to be attempted
  3119. * \var UBXCFG_NAV5::cnoThresh
  3120. * C/N0 threshold for deciding whether to attempt
  3121. * a fix
  3122. * \var UBXCFG_NAV5::reserved2
  3123. * Reserved
  3124. * \note Set to 0
  3125. * \var UBXCFG_NAV5::reserved3
  3126. * Reserved
  3127. * \note Set to 0
  3128. * \var UBXCFG_NAV5::reserved4
  3129. * Reserved
  3130. * \note Set to 0
  3131. */
  3132. /*!
  3133. * \struct UBXCFG_NAVX5_POLL
  3134. * Sending this (empty / no-payload) message to the receiver results in the receiver returning a
  3135. * message of type CFG-NAVX5 with a payload as defined below.
  3136. * \note No payload
  3137. * \brief Poll Navigation Engine Expert Settings
  3138. */
  3139. /*!
  3140. * \struct UBXCFG_NAVX5
  3141. * \brief Navigation Engine Expert Settings
  3142. *
  3143. * \var UBXCFG_NAVX5::version
  3144. * Message version
  3145. * \note 0 for this version
  3146. * \var UBXCFG_NAVX5::mask1
  3147. * First Parameters Bitmask. Only the flagged
  3148. * parameters will be applied, unused bits must be
  3149. * set to 0
  3150. * \see #UBXNAVX5Mask to fill this field
  3151. * \var UBXCFG_NAVX5::reserved0
  3152. * Reserved
  3153. * \note Set to 0
  3154. * \var UBXCFG_NAVX5::reserved1
  3155. * Reserved
  3156. * \note Set to 0
  3157. * \var UBXCFG_NAVX5::reserved2
  3158. * Reserved
  3159. * \note Set to 0
  3160. * \var UBXCFG_NAVX5::minSVs
  3161. * Minimum number of satellites for navigation
  3162. * \var UBXCFG_NAVX5::maxSVs
  3163. * Maximum number of satellites for navigation
  3164. * \var UBXCFG_NAVX5::minCNO
  3165. * Minimum satellite signal level for navigation
  3166. * \var UBXCFG_NAVX5::reserved5
  3167. * Reserved
  3168. * \note Set to 0
  3169. * \var UBXCFG_NAVX5::iniFix3D
  3170. * Initial Fix must be 3D flag
  3171. * \note
  3172. * - 0 - false
  3173. * - 1 - true
  3174. * \var UBXCFG_NAVX5::reserved6
  3175. * Reserved
  3176. * \note Set to 0
  3177. * \var UBXCFG_NAVX5::reserved7
  3178. * Reserved
  3179. * \note Set to 0
  3180. * \var UBXCFG_NAVX5::reserved8
  3181. * Reserved
  3182. * \note Set to 0
  3183. * \var UBXCFG_NAVX5::wknRollover
  3184. * GPS week rollover number; GPS week numbers
  3185. * will be set correctly from this week up to 1024
  3186. * weeks after this week.
  3187. * \note 0 reverts to firmware default.
  3188. * \var UBXCFG_NAVX5::reserved9
  3189. * Reserved
  3190. * \note Set to 0
  3191. * \var UBXCFG_NAVX5::reserved10
  3192. * Reserved
  3193. * \note Set to 0
  3194. * \var UBXCFG_NAVX5::reserved11
  3195. * Reserved
  3196. * \note Set to 0
  3197. * \var UBXCFG_NAVX5::usePPP
  3198. * Use Precise Point Positioning flag
  3199. * \note Only supported on certain product variants
  3200. * \note
  3201. * - 0 - false
  3202. * - 1 - true
  3203. * \var UBXCFG_NAVX5::aopCFG
  3204. * AssistNow Autonomous configuration
  3205. * /note
  3206. * - 0 - disabled
  3207. * - 1 - enabled
  3208. * \var UBXCFG_NAVX5::reserved12
  3209. * \note Set to 0
  3210. * \var UBXCFG_NAVX5::reserved13
  3211. * Reserved
  3212. * \note Set to 0
  3213. * \var UBXCFG_NAVX5::aopOrbMaxErr
  3214. * maximum acceptable (modelled) AssistNow
  3215. * Autonomous orbit error
  3216. * \note valid range = 5..1000,
  3217. * \note 0 - reset to firmware default
  3218. * \var UBXCFG_NAVX5::reserved14
  3219. * Reserved
  3220. * \note Set to 0
  3221. * \var UBXCFG_NAVX5::reserved15
  3222. * Reserved
  3223. * \note Set to 0
  3224. * \var UBXCFG_NAVX5::reserved3
  3225. * Reserved
  3226. * \note Set to 0
  3227. * \var UBXCFG_NAVX5::reserved4
  3228. * Reserved
  3229. * \note Set to 0
  3230. */
  3231. /*!
  3232. * \struct UBXCFG_NMEA_POLL
  3233. * \note No payload
  3234. * \brief Poll the NMEA protocol configuration
  3235. */
  3236. /*!
  3237. * \struct UBXCFG_NMEA
  3238. * Set/Get the NMEA protocol configuration. See section "NMEA Protocol Configuration" (u-blox official documentation) for a
  3239. * detailed description of the configuration effects on NMEA output.
  3240. * \brief NMEA protocol configuration
  3241. *
  3242. * \var UBXCFG_NMEA::filter
  3243. * Filter flags
  3244. * \see #UBXNMEAFilter to fill this field
  3245. * \var UBXCFG_NMEA::nmeaVersion
  3246. * NMEA version
  3247. * \see #UBXNMEAVersion to fill this field
  3248. * \var UBXCFG_NMEA::numSV
  3249. * Maximum Number of SVs to report in NMEA
  3250. * protocol.\n
  3251. * This does not affect the receiver's operation.
  3252. * It only limits the number of SVs reported in
  3253. * NMEA mode (this might be needed with older
  3254. * mapping applications which only support 8- or
  3255. * 12-channel receivers).
  3256. * \var UBXCFG_NMEA::flags
  3257. * Flags
  3258. * \see #UBXNMEAFlags to fill this field
  3259. * \var UBXCFG_NMEA::gnssToFilter
  3260. * Filters out satellites based on their GNSS. If a
  3261. * bitfield is enabled, the corresponding satellites
  3262. * will be not output.
  3263. * \see #UBXNMEAGNSSToFilter to fill this field
  3264. * \var UBXCFG_NMEA::svNumbering
  3265. * Configures the display of satellites that do not
  3266. * have an NMEA-defined value.
  3267. * \note This does not apply to satellites with an
  3268. * unknown ID.
  3269. * \var UBXCFG_NMEA::mainTalkerId
  3270. * By default the main Talker ID (i.e. the Talker ID
  3271. * used for all messages other than GSV) is
  3272. * determined by the GNSS assignment of the
  3273. * receiver's channels (see #UBXCFG_GNSS).
  3274. * This field enables the main Talker ID to be
  3275. * overridden.
  3276. * \var UBXCFG_NMEA::gsvTalkerId
  3277. * By default the Talker ID for GSV messages is
  3278. * GNSS specific (as defined by NMEA).
  3279. * This field enables the GSV Talker ID to be
  3280. * overridden.
  3281. * \var UBXCFG_NMEA::reserved
  3282. * Reserved
  3283. * \note Set to 0
  3284. */
  3285. /*!
  3286. * \struct UBXCFG_NVS
  3287. * \brief The UBXCFG_NVS structure is
  3288. *
  3289. * \var UBXCFG_NVS::clearMask
  3290. * Mask of data to be cleared
  3291. * \see #UBXCFGMask CFG_NVS section to fill this field
  3292. * \var UBXCFG_NVS::saveMask
  3293. * Mask of data to be saved
  3294. * \see #UBXCFGMask CFG_NVS section to fill this field
  3295. * \var UBXCFG_NVS::loadMask
  3296. * Mask of data to be loaded,
  3297. * \see #UBXCFGMask CFG_NVS section to fill this field
  3298. * \var UBXCFG_NVS::deviceMask
  3299. * Mask of devices to consider
  3300. * \note Default: all devices
  3301. * \see #UBXCFGDeviceMask to fill this field
  3302. */
  3303. /*!
  3304. * \struct UBXCFG_PM2_POLL
  3305. * \note No payload
  3306. * \brief Poll extended Power Management configuration
  3307. */
  3308. /*!
  3309. * \struct UBXCFG_PM2Flags
  3310. * \var UBXCFG_PM2Flags::blank1
  3311. * Stub to make gap
  3312. * \var UBXCFG_PM2Flags::reserved
  3313. * Reserved
  3314. * \note Must be set to '000'
  3315. * \var UBXCFG_PM2Flags::extIntSelect
  3316. * EXTINT Pin Select
  3317. * \note
  3318. * - 0 - EXTINT0
  3319. * - 1 - EXTINT1
  3320. * \var UBXCFG_PM2Flags::extIntWake
  3321. * EXTINT Pin Control
  3322. * \note
  3323. * - 0 - disabled
  3324. * - 1 - enabled, force receiver into BACKUP mode when selected EXTINT pin is 'low'
  3325. * \var UBXCFG_PM2Flags::extIntBackup
  3326. * EXTINT Pin Control
  3327. * - 0 - disabled
  3328. * - 1 - enabled, force receiver into BACKUP mode when selected EXTINT pin is 'low'
  3329. * \var UBXCFG_PM2Flags::blank2
  3330. * Stub to make gap
  3331. * \var UBXCFG_PM2Flags::limitPeakCurr
  3332. * Limit Peak Current
  3333. * \see #UBXPM2LimitPeakCurrent to fill this field
  3334. * \var UBXCFG_PM2Flags::waitTimeFix
  3335. * Wait for Timefix
  3336. * \note
  3337. * - 0 - wait for normal Fix ok, before starting on-time
  3338. * - 1 - wait for time fix ok, before starting on-time
  3339. * \var UBXCFG_PM2Flags::updateRTC
  3340. * Update Real Time Clock
  3341. * - 0 - Do not wake-up to update RTC. RTC is updated during normal on-time.
  3342. * - 1 - Update RTC. The receiver adds extra wake-up cycles to update the RTC.
  3343. * \var UBXCFG_PM2Flags::updateEPH
  3344. * Update Ephemeris
  3345. * - 0 - Do not wake-up to update Ephemeris data
  3346. * - 1 - Update Ephemeris. The receiver adds extra wake-up cycles to update the Ephemeris data
  3347. * \var UBXCFG_PM2Flags::blank3
  3348. * Stub to make gap
  3349. * \var UBXCFG_PM2Flags::doNotEnterOff
  3350. * Behavior of receiver in case of no fix
  3351. * - 0 - receiver enters inactive for search state
  3352. * - 1 - receiver does not enter inactive for search state but keeps trying to acquire a fix instead
  3353. * \var UBXCFG_PM2Flags::mode
  3354. * Mode of operation
  3355. * \see #UBXPM2Mode to fill this field
  3356. */
  3357. /*!
  3358. * \struct UBXCFG_PM2
  3359. * \brief Extended Power Management configuration
  3360. * \var UBXCFG_PM2::version
  3361. * Message version
  3362. * \note 1 for this version
  3363. * \var UBXCFG_PM2::reserved1
  3364. * Reserved
  3365. * \var UBXCFG_PM2::reserved2
  3366. * Reserved
  3367. * \var UBXCFG_PM2::reserved3
  3368. * Reserved
  3369. * \var UBXCFG_PM2::flags
  3370. * PSM configuration flags
  3371. * \note See UBXCFG_PM2Flags to fill this field
  3372. * \var UBXCFG_PM2::updatePeriod
  3373. * Position update period.
  3374. * \note If set to 0, the receiver will never retry a fix
  3375. * \var UBXCFG_PM2::searchPeriod
  3376. * Acquisition retry period
  3377. * \note If set to 0, the receiver will never retry a startup
  3378. * \var UBXCFG_PM2::gridOffset
  3379. * Grid offset relative to GPS start of week
  3380. * \var UBXCFG_PM2::onTime
  3381. * On time after first successful fix
  3382. * \var UBXCFG_PM2::minAcqTime
  3383. * Minimal search time
  3384. * \var UBXCFG_PM2::reserved4
  3385. * Reserved
  3386. * \var UBXCFG_PM2::reserved5
  3387. * Reserved
  3388. * \var UBXCFG_PM2::reserved6
  3389. * Reserved
  3390. * \var UBXCFG_PM2::reserved7
  3391. * Reserved
  3392. * \var UBXCFG_PM2::reserved8
  3393. * Reserved
  3394. * \var UBXCFG_PM2::reserved9
  3395. * Reserved
  3396. * \var UBXCFG_PM2::reserved10
  3397. * Reserved
  3398. * \var UBXCFG_PM2::reserved11
  3399. * Reserved
  3400. */
  3401. /*!
  3402. * \struct UBXCFG_PRT_POLL
  3403. * \note No payload
  3404. * \brief Polls the configuration of the used I/O Port
  3405. */
  3406. /*!
  3407. * \struct UBXCFG_PRT_POLL_OPT
  3408. * \brief Polls the configuration for one I/O Port
  3409. *
  3410. * \var UBXCFG_PRT_POLL_OPT::portId
  3411. * Port Identifier Number
  3412. * \see #UBXCFG_PRT for valid values
  3413. */
  3414. /*!
  3415. * \struct UBXCFG_PRTTxReady
  3416. * \brief This structure described TX ready PIN configuration for UBXCFG_PRT::txReady
  3417. * \var UBXCFG_PRTTxReady::en
  3418. * Enable TX ready feature for this port
  3419. * \note
  3420. * - 0 - disable
  3421. * - 1 - enabled
  3422. * \var UBXCFG_PRTTxReady::pol
  3423. * Polarity
  3424. * - 0 - High-active
  3425. * - 1 - Low-active
  3426. * \var UBXCFG_PRTTxReady::pin
  3427. * PIO to be used
  3428. * \note must not be in use already by another function
  3429. * \var UBXCFG_PRTTxReady::thres
  3430. * Threshold
  3431. * The TX ready PIN goes active after >= thres*8 bytes are pending for the port and going inactive after the last
  3432. * pending bytes have been written to hardware (0-4 bytes before end of stream).
  3433. * \note Given value is multiplied by 8 bytes
  3434. */
  3435. /*!
  3436. * \struct UBXCFG_PRTUARTMode
  3437. * It is part of #UBXCFG_PRTMode union
  3438. * \brief This structure describes port settings for UART
  3439. * \var UBXCFG_PRTUARTMode::blank0
  3440. * Stub for gap
  3441. * \var UBXCFG_PRTUARTMode::reserved1
  3442. * Reserved
  3443. * \note Set to 1 for compatibility with A4
  3444. * \var UBXCFG_PRTUARTMode::blank1
  3445. * Stub for gap
  3446. * \var UBXCFG_PRTUARTMode::charLen
  3447. * Character Length
  3448. * \see #UBXPRTModeCharLen to fill this field
  3449. * \var UBXCFG_PRTUARTMode::blank2
  3450. * Stub for gap
  3451. * \var UBXCFG_PRTUARTMode::parity
  3452. * Parity
  3453. * \see #UBXPRTModeParity to fill this field
  3454. * \var UBXCFG_PRTUARTMode::nStopBits
  3455. * Number of Stop Bits
  3456. * \see #UBXPRTModeStopBits to fill this field
  3457. * \var UBXCFG_PRTUARTMode::blank3
  3458. * Stub for gap
  3459. */
  3460. /*!
  3461. * \struct UBXCFG_PRTSPIMode
  3462. * It is part of #UBXCFG_PRTMode union
  3463. * \brief This structure describes port settings for SPI
  3464. * \var UBXCFG_PRTSPIMode::blank0
  3465. * Stub for gap
  3466. * \var UBXCFG_PRTSPIMode::spiMode
  3467. * Mode
  3468. * \see #UBXPRTSPIMode to fill this field
  3469. * \var UBXCFG_PRTSPIMode::blank1
  3470. * Stub for gap
  3471. * \var UBXCFG_PRTSPIMode::flowControl
  3472. * Flow control
  3473. * \note
  3474. * - 0 - disabled
  3475. * - 1 - enabled
  3476. * \var UBXCFG_PRTSPIMode::blank2
  3477. * Stub for gap
  3478. * \var UBXCFG_PRTSPIMode::ffCnt
  3479. * Number of bytes containing 0xFF to receive before switching off reception.
  3480. * \note Range: 0(mechanism off)-255
  3481. * \var UBXCFG_PRTSPIMode::blank3
  3482. * Stub for gap
  3483. */
  3484. /*!
  3485. * \struct UBXCFG_PRTDDCMode
  3486. * It is part of #UBXCFG_PRTMode union
  3487. * \brief This structure describes port settings for DDC(I2C)
  3488. * \var UBXCFG_PRTDDCMode::blank0
  3489. * \var UBXCFG_PRTDDCMode::slaveAddr
  3490. * Slave address
  3491. * \note Range: 0x07 < slaveAddr < 0x78. Bit 0 shall be 0
  3492. * \var UBXCFG_PRTDDCMode::blank1
  3493. * Stub for gap
  3494. */
  3495. /*!
  3496. * \union UBXCFG_PRTMode
  3497. * It is used to fill UBXCFG_PRT::mode field
  3498. * \brief This union contains mode settings for all ports
  3499. * \var UBXCFG_PRTMode::UART
  3500. * UART mode settings
  3501. * \var UBXCFG_PRTMode::SPI
  3502. * SPI mode settings
  3503. * \var UBXCFG_PRTMode::DDC
  3504. * DDC mode settings
  3505. * \var UBXCFG_PRTMode::USB
  3506. * Reserved
  3507. * \note for USB port there are no mode settings
  3508. */
  3509. /*!
  3510. * \union UBXCFG_PRT5Option
  3511. * \brief This union used as 5-th option of #UBXCFG_PRT
  3512. * \var UBXCFG_PRT5Option::UARTbaudRate
  3513. * Setup baudrate for UART ports
  3514. * \var UBXCFG_PRT5Option::OtherReserved
  3515. * Setting is reserved for all ports except UART
  3516. */
  3517. /*!
  3518. * \struct UBXCFG_PRT
  3519. * For more detailed description please look at official u-blox documentation
  3520. * \brief Port Configuration message scope for all ports
  3521. * \var UBXCFG_PRT::portID
  3522. * Port Identifier Number
  3523. * \var UBXCFG_PRT::reserved0
  3524. * Reserved for all ports
  3525. * \var UBXCFG_PRT::txReady
  3526. * \see #UBXCFG_PRTTxReady to fill this field
  3527. * TX ready PIN configuration
  3528. * \var UBXCFG_PRT::mode;
  3529. * A bit mask describing port mode
  3530. * \see #UBXCFG_PRTMode to fille this field
  3531. * \var UBXCFG_PRT::option;
  3532. * Optional block
  3533. * \see #UBXCFG_PRT5Option to fill this field
  3534. * \var UBXCFG_PRT::inProtoMask
  3535. * A mask describing which input protocols are
  3536. * active.
  3537. * Each bit of this mask is used for a protocol.
  3538. * \note Multiple protocols can be defined
  3539. * on a single port.
  3540. * \see #UBXPRTInProtoMask to fill this field
  3541. * \var UBXCFG_PRT::outProtoMask
  3542. * A mask describing which output protocols are
  3543. * active.
  3544. * Each bit of this mask is used for a protocol.
  3545. * \note Multiple protocols can be defined
  3546. * on a single port
  3547. * \see #UBXPRTOutProtoMask to fill this field
  3548. * \var UBXCFG_PRT::flags
  3549. * Flags bit mask
  3550. * \see #UBXPRTFlags to fill this field
  3551. * \note Shall be 0 for USB
  3552. * \var UBXCFG_PRT::reserved5
  3553. * Reserved
  3554. * \note Always set to 0
  3555. */
  3556. /*!
  3557. * \struct UBXCFG_RATE_POLL
  3558. * Sending this message to the receiver results in the receiver returning a message of type #UBXCFG_RATE
  3559. * \note No payload
  3560. * \brief Poll Navigation/Measurement Rate Settings
  3561. */
  3562. /*!
  3563. * \struct UBXCFG_RATE
  3564. * The u-blox positioning technology supports navigation update rates higher or lower than 1
  3565. * update per second. The calculation of the navigation solution will always be aligned to the
  3566. * top of a second.
  3567. * - The update rate has a direct influence on the power consumption. The more fixes that
  3568. * are required, the more CPU power and communication resources are required.
  3569. * - For most applications a 1 Hz update rate would be sufficient.
  3570. * - When using Power Save Mode, measurement and navigation rate can differ from the
  3571. * values configured here. See "Measurement and navigation rate with Power Save Mode" (u-blox official documentation)
  3572. * for details.
  3573. * \brief Navigation/Measurement Rate Settings
  3574. *
  3575. * \var UBXCFG_RATE::measRate
  3576. * Measurement Rate, GPS measurements are
  3577. * taken every measRate milliseconds
  3578. * \var UBXCFG_RATE::navRate
  3579. * Navigation Rate, in number of measurement
  3580. * cycles.
  3581. * \note This parameter cannot be changed, and
  3582. * must be set to 1.
  3583. * \var UBXCFG_RATE::timeRef
  3584. * Alignment to reference time.
  3585. * \note
  3586. * - 0 - UTC time
  3587. * - 1 - GPS time
  3588. */
  3589. /*!
  3590. * \struct UBXCFG_RINV_POLL
  3591. * \note No payload
  3592. * \brief Poll contents of Remote Inventory
  3593. */
  3594. /*!
  3595. * \struct UBXCFG_RINV
  3596. * \note This message has variable payload
  3597. * If size of variable payload is greater than 30, the excess bytes are discarded. In future firmware versions, this limit
  3598. * may change.
  3599. * \brief The UBXCFG_RINV structure is
  3600. * \var UBXCFG_RINV::flags
  3601. * Flags
  3602. * \see #UBXRINVFlags to fill this field
  3603. */
  3604. /*!
  3605. * \struct UBXCFG_RST
  3606. * \brief Reset Receiver / Clear Backup Data Structures
  3607. *
  3608. * \var UBXCFG_RST::navBBRMask
  3609. * BBR Sections to clear.
  3610. * \see #UBXBBRSpecialSets for special sets
  3611. * \see #UBXBBRMask to fill this field manually
  3612. * \var UBXCFG_RST::resetMode
  3613. * Reset Type
  3614. * \see #UBXResetMode to fill this field
  3615. * \var UBXCFG_RST::reserved1
  3616. * Reserved
  3617. */
  3618. /*!
  3619. * \struct UBXCFG_RXM_POLL
  3620. * \note No payload
  3621. * \brief Poll RXM configuration
  3622. */
  3623. /*!
  3624. * \struct UBXCFG_RXM
  3625. * For a detailed description see section "Power Management"(u-blox official documentation)
  3626. * \note Power Save Mode cannot be selected when the receiver is configured to process
  3627. * GLONASS signals using #UBXCFG_GNSS.
  3628. * \brief RXM configuration
  3629. *
  3630. * \var reserved1
  3631. * Reserved
  3632. * \note Shall be set to 8
  3633. * \var lpMode
  3634. * Low power mode
  3635. * \see #UBXRXMLowPowerModes to fill this field
  3636. */
  3637. /*!
  3638. * \struct UBXCFG_SBAS_POLL
  3639. * \note No payload
  3640. * \brief Poll contents of SBAS Configuration
  3641. *
  3642. */
  3643. /*!
  3644. * \struct UBXCFG_SBAS
  3645. * \brief The UBXCFG_SBAS structure is
  3646. *
  3647. * \var mode
  3648. *
  3649. * \see #UBXSBASModes to fill this field
  3650. * \var usage
  3651. *
  3652. * \see #UBXSBASUsage to fill this field
  3653. * \var maxSBAS
  3654. *
  3655. * \var scanmode2
  3656. *
  3657. * \see #UBXSBASScanModes2 to fill this field
  3658. * \var scanmode1
  3659. *
  3660. * \see #UBXSBASScanModes1 to fill this field
  3661. */
  3662. /*!
  3663. * \struct UBXCFG_TP5_POLL
  3664. * \brief The UBXCFG_TP5_POLL structure is
  3665. *
  3666. //No payload
  3667. */
  3668. /*!
  3669. * \struct UBXCFG_TP5_POLL_OPT
  3670. * \brief The UBXCFG_TP5_POLL_OPT structure is
  3671. *
  3672. * \var tpIdx
  3673. *
  3674. */
  3675. /*!
  3676. * \struct UBXCFG_TP5
  3677. * \brief The UBXCFG_TP5 structure is
  3678. *
  3679. * \var tpIdx
  3680. *
  3681. * \var reserved0
  3682. *
  3683. * \var reserved1
  3684. *
  3685. * \var antCableDelay
  3686. *
  3687. * \var rfGroupDelay
  3688. *
  3689. * \var freqPeriod
  3690. *
  3691. * \var freqPeriodLock
  3692. *
  3693. * \var pulseLenRatio
  3694. *
  3695. * \var pulseLenRatioLock
  3696. *
  3697. * \var userConfigDelay
  3698. *
  3699. * \var flags
  3700. *
  3701. * \see #UBXCFGTimepulseFlags to fill this field
  3702. */
  3703. /*!
  3704. * \struct UBXCFG_USB_POLL
  3705. * \brief The UBXCFG_USB_POLL structure is
  3706. *
  3707. //No payload
  3708. */
  3709. /*!
  3710. * \struct UBXCFG_USB
  3711. * \brief The UBXCFG_USB structure is
  3712. *
  3713. * \var vendorId
  3714. *
  3715. * \var productId
  3716. *
  3717. * \var reserved1
  3718. * //Set to 0
  3719. * \var reserved2
  3720. * //Set to 1
  3721. * \var powerConsumption
  3722. *
  3723. * \var flags
  3724. *
  3725. * \var vendorString[32]
  3726. *
  3727. * \var productString[32]
  3728. *
  3729. * \var serialNumber[32]
  3730. *
  3731. */
  3732. /*!
  3733. * \struct UBXINF_DEBUG
  3734. * \brief The UBXINF_DEBUG structure is
  3735. *
  3736. //Variable payload of UBXCH_t
  3737. */
  3738. /*!
  3739. * \struct UBXINF_ERROR
  3740. * \brief The UBXINF_ERROR structure is
  3741. *
  3742. //Variable payload of UBXCH_t
  3743. */
  3744. /*!
  3745. * \struct UBXINF_NOTICE
  3746. * \brief The UBXINF_NOTICE structure is
  3747. *
  3748. //Variable payload of UBXCH_t
  3749. */
  3750. /*!
  3751. * \struct UBXINF_TEST
  3752. * \brief The UBXINF_TEST structure is
  3753. *
  3754. //Variable payload of UBXCH_t
  3755. */
  3756. /*!
  3757. * \struct UBXINF_WARNING
  3758. * \brief The UBXINF_WARNING structure is
  3759. *
  3760. //Variable payload of UBXCH_t
  3761. */
  3762. /*!
  3763. * \struct UBXLOG_CREATE
  3764. * \brief The UBXLOG_CREATE structure is
  3765. *
  3766. * \var version
  3767. *
  3768. * \var logCfg
  3769. * //See UBXLOGCfg
  3770. * \var reserved
  3771. * //Set to 0
  3772. * \var logSize
  3773. *
  3774. * \var userDefinedSize
  3775. *
  3776. */
  3777. /*!
  3778. * \struct UBXLOG_ERASE
  3779. * \brief The UBXLOG_ERASE structure is
  3780. *
  3781. //No payload
  3782. */
  3783. /*!
  3784. * \struct UBXLOG_FINDTIME_IN
  3785. * \brief The UBXLOG_FINDTIME_IN structure is
  3786. *
  3787. * \var version
  3788. * //Shall be 0
  3789. * \var type
  3790. * //Shall be 0
  3791. * \var reserved1
  3792. *
  3793. * \var year
  3794. *
  3795. * \var month
  3796. *
  3797. * \var day
  3798. *
  3799. * \var hour
  3800. *
  3801. * \var minute
  3802. *
  3803. * \var second
  3804. *
  3805. * \var reserved2
  3806. *
  3807. */
  3808. /*!
  3809. * \struct UBXLOG_FINDTIME_OUT
  3810. * \brief The UBXLOG_FINDTIME_OUT structure is
  3811. *
  3812. * \var version
  3813. * //Shall be 1
  3814. * \var type
  3815. * //Shall be 1
  3816. * \var reserved1
  3817. *
  3818. * \var entryNumber
  3819. *
  3820. */
  3821. /*!
  3822. * \struct UBXLOG_INFO_POLL
  3823. * \brief The UBXLOG_INFO_POLL structure is
  3824. *
  3825. //No payload
  3826. */
  3827. /*!
  3828. * \struct UBXLOG_INFO
  3829. {
  3830. * \var version
  3831. *
  3832. * \var reserved1[3]
  3833. *
  3834. * \var filestoreCapacity
  3835. *
  3836. * \var reserved2
  3837. *
  3838. * \var reserved3
  3839. *
  3840. * \var currentMaxLogSize
  3841. *
  3842. * \var currentLogSize
  3843. *
  3844. * \var entryCount
  3845. *
  3846. * \var oldestYear
  3847. *
  3848. * \var oldestMonth
  3849. *
  3850. * \var oldestDay
  3851. *
  3852. * \var oldestHour
  3853. *
  3854. * \var oldestMinute
  3855. *
  3856. * \var oldestSecond
  3857. *
  3858. * \var reserved4
  3859. *
  3860. * \var newestYear
  3861. *
  3862. * \var newestMonth
  3863. *
  3864. * \var newestDay
  3865. *
  3866. * \var newestHour
  3867. *
  3868. * \var newestMinute
  3869. *
  3870. * \var newestSecond
  3871. *
  3872. * \var reserved5
  3873. *
  3874. * \var status
  3875. *
  3876. * \see #UBXLOGStatus to fill this field
  3877. * \var reserved6[3]
  3878. *
  3879. */
  3880. /*!
  3881. * \struct UBXLOG_RETRIEVEPOS
  3882. * \brief The UBXLOG_RETRIEVEPOS structure is
  3883. *
  3884. * \var entryIndex
  3885. *
  3886. * \var lon
  3887. *
  3888. * \var lat
  3889. *
  3890. * \var hMSL
  3891. *
  3892. * \var hAcc
  3893. *
  3894. * \var gSpeed
  3895. *
  3896. * \var heading
  3897. *
  3898. * \var version
  3899. * //Shall be 0
  3900. * \var fixType
  3901. *
  3902. * \see #UBXRETRIEVEPOSFixType to fill this field
  3903. * \var year
  3904. *
  3905. * \var month
  3906. *
  3907. * \var day
  3908. *
  3909. * \var hour
  3910. *
  3911. * \var minute
  3912. *
  3913. * \var second
  3914. *
  3915. * \var reserved1
  3916. *
  3917. * \var numSV
  3918. *
  3919. * \var reserved2
  3920. *
  3921. */
  3922. /*!
  3923. * \struct UBXLOG_RETRIEVESTRING
  3924. * \brief The UBXLOG_RETRIEVESTRING structure is
  3925. *
  3926. * \var entryIndex
  3927. *
  3928. * \var version
  3929. * //Shall be 0
  3930. * \var reserved1
  3931. *
  3932. * \var year
  3933. *
  3934. * \var month
  3935. *
  3936. * \var day
  3937. *
  3938. * \var hour
  3939. *
  3940. * \var minute
  3941. *
  3942. * \var second
  3943. *
  3944. * \var reserved2
  3945. *
  3946. * \var byteCount
  3947. *
  3948. //Variable payload according byteCount
  3949. */
  3950. /*!
  3951. * \struct UBXLOG_RETRIEVE
  3952. * \brief The UBXLOG_RETRIEVE structure is
  3953. *
  3954. * \var startNumber
  3955. *
  3956. * \var entryCount
  3957. *
  3958. * \var version
  3959. *
  3960. * \var reserved[3]
  3961. *
  3962. */
  3963. /*!
  3964. * \struct UBXLOG_STRING
  3965. * \brief The UBXLOG_STRING structure is
  3966. *
  3967. //Variable payload UBXU1_t
  3968. */
  3969. /*!
  3970. * \struct UBXMON_HW2
  3971. * \brief The UBXMON_HW2 structure is
  3972. *
  3973. * \var ofsI
  3974. *
  3975. * \var magI
  3976. *
  3977. * \var ofsQ
  3978. *
  3979. * \var magQ
  3980. *
  3981. * \var cfgSource
  3982. *
  3983. * \var reserved0[3]
  3984. *
  3985. * \var lowLevCfg
  3986. *
  3987. * \var reserved1[2]
  3988. *
  3989. * \var postStatus
  3990. *
  3991. * \var reserved2
  3992. *
  3993. */
  3994. /*!
  3995. * \struct UBXHWFlags
  3996. {
  3997. * \var UBXHWFlagsRTCCalib:1
  3998. *
  3999. * \var UBXHWFlagsSafeBoot:1
  4000. *
  4001. * \var UBXHWFlagsJammingState:2
  4002. *
  4003. */
  4004. /*!
  4005. * \struct UBXMON_HW
  4006. * \brief The UBXMON_HW structure is
  4007. *
  4008. * \var pinSel
  4009. *
  4010. * \var pinBank
  4011. *
  4012. * \var pinDir
  4013. *
  4014. * \var pinVal
  4015. *
  4016. * \var noisePerMS
  4017. *
  4018. * \var agcCnt
  4019. *
  4020. * \var aStatus
  4021. *
  4022. * \var aPower
  4023. *
  4024. struct UBXHWFlags flags;
  4025. * \var reserved1
  4026. *
  4027. * \var usedMask
  4028. *
  4029. * \var VP[17]
  4030. *
  4031. * \var jamInd
  4032. *
  4033. * \var reserved3
  4034. *
  4035. * \var pinIrq
  4036. *
  4037. * \var pullH
  4038. *
  4039. * \var pullL
  4040. *
  4041. */
  4042. /*!
  4043. * \struct UBXMON_IO_PART
  4044. {
  4045. * \var rxBytes
  4046. *
  4047. * \var txBytes
  4048. *
  4049. * \var parityErrs
  4050. *
  4051. * \var framingErrs
  4052. *
  4053. * \var overrunErrs
  4054. *
  4055. * \var breakCond
  4056. *
  4057. * \var rxBusy
  4058. *
  4059. * \var txBusy
  4060. *
  4061. * \var reserved1
  4062. *
  4063. */
  4064. /*!
  4065. * \struct UBXMON_IO
  4066. * \brief The UBXMON_IO structure is
  4067. *
  4068. struct UBXMON_IO_PART ioPortInfo[UBX_IO_PORTS_NUM];
  4069. */
  4070. /*!
  4071. * \struct UBXMON_MSGPP
  4072. * \brief The UBXMON_MSGPP structure is
  4073. *
  4074. * \var msg1[8]
  4075. *
  4076. * \var msg2[8]
  4077. *
  4078. * \var msg3[8]
  4079. *
  4080. * \var msg4[8]
  4081. *
  4082. * \var msg5[8]
  4083. *
  4084. * \var msg6[8]
  4085. *
  4086. * \var skipped[6]
  4087. *
  4088. */
  4089. /*!
  4090. * \struct UBXMON_RXBUF
  4091. * \brief The UBXMON_RXBUF structure is
  4092. *
  4093. * \var pending[6]
  4094. *
  4095. * \var usage[6]
  4096. *
  4097. * \var peakUsage[6]
  4098. *
  4099. */
  4100. /*!
  4101. * \struct UBXMON_RXR
  4102. * \brief The UBXMON_RXR structure is
  4103. *
  4104. * \var flags
  4105. *
  4106. * \see #UBXRXRFlags to fill this field
  4107. */
  4108. /*!
  4109. * \struct UBXMON_TXBUF
  4110. * \brief The UBXMON_TXBUF structure is
  4111. *
  4112. * \var pending[6]
  4113. *
  4114. * \var usage[6]
  4115. *
  4116. * \var peakUsage[6]
  4117. *
  4118. */
  4119. /*!
  4120. * \struct UBXMON_VER_POLL
  4121. * \brief The UBXMON_VER_POLL structure is
  4122. *
  4123. //No payload
  4124. */
  4125. /*!
  4126. * \struct UBXMON_VER
  4127. * \brief The UBXMON_VER structure is
  4128. *
  4129. * \var swVersion[30]
  4130. *
  4131. * \var hwVersion[10]
  4132. *
  4133. //Variable payload of UBXMON_VER_PART type
  4134. */
  4135. /*!
  4136. * \struct UBXMON_VER_PART
  4137. {
  4138. * \var extension[30]
  4139. *
  4140. */
  4141. /*!
  4142. * \struct UBXNAV_AOPSTATUS
  4143. * \brief The UBXNAV_AOPSTATUS structure is
  4144. *
  4145. * \var iTOW
  4146. *
  4147. * \var aopCfg
  4148. *
  4149. * \see #UBXAOPCfg to fill this field
  4150. * \var status
  4151. *
  4152. * \see #UBXAOPStatus to fill this field
  4153. * \var reserved0
  4154. *
  4155. * \var reserved1
  4156. *
  4157. * \var availGPS
  4158. *
  4159. * \var reserved2
  4160. *
  4161. * \var reserved3
  4162. *
  4163. */
  4164. /*!
  4165. * \struct UBXNAV_CLOCK
  4166. * \brief The UBXNAV_CLOCK structure is
  4167. *
  4168. * \var iTOW
  4169. *
  4170. * \var clkB
  4171. *
  4172. * \var clkD
  4173. *
  4174. * \var tAcc
  4175. *
  4176. * \var fAcc
  4177. *
  4178. */
  4179. /*!
  4180. * \struct UBXNAV_DGPS
  4181. * \brief The UBXNAV_DGPS structure is
  4182. *
  4183. * \var iTOW
  4184. *
  4185. * \var age
  4186. *
  4187. * \var baseId
  4188. *
  4189. * \var baseHealth
  4190. *
  4191. * \var numCh
  4192. *
  4193. * \var status
  4194. *
  4195. * \var reserved1
  4196. *
  4197. */
  4198. /*!
  4199. * \struct UBXDGPSFlags
  4200. {
  4201. * \var channel:4
  4202. *
  4203. * \var dgpsUsed:1
  4204. *
  4205. */
  4206. /*!
  4207. * \struct UBXNAV_DGPS_PART
  4208. * \brief The UBXNAV_DGPS_PART structure is
  4209. *
  4210. * \var svid
  4211. *
  4212. struct UBXDGPSFlags flags;
  4213. * \var ageC
  4214. *
  4215. * \var prc
  4216. *
  4217. * \var prrc
  4218. *
  4219. */
  4220. /*!
  4221. * \struct UBXNAV_DOP
  4222. * \brief The UBXNAV_DOP structure is
  4223. *
  4224. * \var iTOW
  4225. *
  4226. * \var gDOP
  4227. *
  4228. * \var pDOP
  4229. *
  4230. * \var tDOP
  4231. *
  4232. * \var vDOP
  4233. *
  4234. * \var hDOP
  4235. *
  4236. * \var nDOP
  4237. *
  4238. * \var eDOP
  4239. *
  4240. */
  4241. /*!
  4242. * \struct UBXNAV_POSECEF
  4243. * \brief The UBXNAV_POSECEF structure is
  4244. *
  4245. * \var iTOW
  4246. *
  4247. * \var ecefX
  4248. *
  4249. * \var ecefY
  4250. *
  4251. * \var ecefZ
  4252. *
  4253. * \var pAcc
  4254. *
  4255. */
  4256. /*!
  4257. * \struct UBXNAV_POSLLH
  4258. * \brief The UBXNAV_POSLLH structure is
  4259. *
  4260. * \var iTOW
  4261. *
  4262. * \var lon
  4263. *
  4264. * \var lat
  4265. *
  4266. * \var height
  4267. *
  4268. * \var hMSL
  4269. *
  4270. * \var hAcc
  4271. *
  4272. * \var vAcc
  4273. *
  4274. */
  4275. /*!
  4276. * \struct UBXPVTFlags
  4277. {
  4278. * \var gnssFixOk:1
  4279. *
  4280. * \var diffSoln:1
  4281. *
  4282. * \var psmState:3
  4283. *
  4284. * \see #UBXPVTPSMStates to fill this field
  4285. */
  4286. /*!
  4287. * \struct UBXNAV_PVT
  4288. * \brief The UBXNAV_PVT structure is
  4289. *
  4290. * \var iTOW
  4291. *
  4292. * \var year
  4293. *
  4294. * \var month
  4295. *
  4296. * \var day
  4297. *
  4298. * \var hour
  4299. *
  4300. * \var min
  4301. *
  4302. * \var sec
  4303. *
  4304. * \var valid
  4305. *
  4306. * \see #UBXPVTValid to fill this field
  4307. * \var tAcc
  4308. *
  4309. * \var nano
  4310. *
  4311. * \var fixType
  4312. *
  4313. * \see #UBXGPSFix to fill this field
  4314. struct UBXPVTFlags flags;
  4315. * \var reserved1
  4316. *
  4317. * \var numSV
  4318. *
  4319. * \var lon
  4320. *
  4321. * \var lat
  4322. *
  4323. * \var height
  4324. *
  4325. * \var hMSL
  4326. *
  4327. * \var hAcc
  4328. *
  4329. * \var vAcc
  4330. *
  4331. * \var velN
  4332. *
  4333. * \var velE
  4334. *
  4335. * \var velD
  4336. *
  4337. * \var gSpeed
  4338. *
  4339. * \var heading
  4340. *
  4341. * \var sAcc
  4342. *
  4343. * \var headingAcc
  4344. *
  4345. * \var pDOP
  4346. *
  4347. * \var reserved2
  4348. *
  4349. * \var reserved3
  4350. *
  4351. */
  4352. /*!
  4353. * \struct UBXNAV_SBAS
  4354. * \brief The UBXNAV_SBAS structure is
  4355. *
  4356. * \var iTOW
  4357. *
  4358. * \var geo
  4359. *
  4360. * \var mode
  4361. *
  4362. * \var sys
  4363. *
  4364. * \var service
  4365. *
  4366. * \see #UBXSBASService to fill this field
  4367. * \var cnt
  4368. *
  4369. * \var reserved0[3]
  4370. *
  4371. //Variable payload of UBXNAV_SBAS_PART type
  4372. */
  4373. /*!
  4374. * \struct UBXNAV_SBAS_PART
  4375. * \brief The UBXNAV_SBAS_PART structure is
  4376. *
  4377. * \var svid
  4378. *
  4379. * \var flags
  4380. *
  4381. * \var udre
  4382. *
  4383. * \var svSys
  4384. *
  4385. * \var svService
  4386. *
  4387. * \var reserved1
  4388. *
  4389. * \var prc
  4390. *
  4391. * \var reserved2
  4392. *
  4393. * \var ic
  4394. *
  4395. */
  4396. /*!
  4397. * \struct UBXNAV_SOL
  4398. * \brief The UBXNAV_SOL structure is
  4399. *
  4400. * \var iTOW
  4401. *
  4402. * \var fTOW
  4403. *
  4404. * \var week
  4405. *
  4406. * \var gpsFix
  4407. *
  4408. * \see #UBXGPSFix to fill this field
  4409. * \var flags
  4410. *
  4411. * \see #UBXSBASSOLFlags to fill this field
  4412. * \var ecefX
  4413. *
  4414. * \var ecefY
  4415. *
  4416. * \var ecefZ
  4417. *
  4418. * \var pAcc
  4419. *
  4420. * \var ecefVX
  4421. *
  4422. * \var ecefVY
  4423. *
  4424. * \var ecefVZ
  4425. *
  4426. * \var sAcc
  4427. *
  4428. * \var pDOP
  4429. *
  4430. * \var reserved1
  4431. *
  4432. * \var numSV
  4433. *
  4434. * \var reserved2
  4435. *
  4436. */
  4437. /*!
  4438. * \struct UBXNAV_STATUS
  4439. * \brief The UBXNAV_STATUS structure is
  4440. *
  4441. * \var iTOW
  4442. *
  4443. * \var gpsFix
  4444. *
  4445. * \var flags
  4446. *
  4447. * \see #UBXGPSFix to fill this field
  4448. * \var fixStat
  4449. *
  4450. * \see #UBXSBASSOLFlags to fill this field
  4451. * \var flags2
  4452. *
  4453. * \var ttff
  4454. *
  4455. * \var msss
  4456. *
  4457. */
  4458. /*!
  4459. * \struct UBXSVINFOGlobalFlags
  4460. {
  4461. * \var chipGen:3
  4462. *
  4463. * \see #UBXSVINFOChipGen to fill this field
  4464. */
  4465. /*!
  4466. * \struct UBXNAV_SVINFO
  4467. * \brief The UBXNAV_SVINFO structure is
  4468. *
  4469. * \var iTOW
  4470. *
  4471. * \var numCh
  4472. *
  4473. struct UBXSVINFOGlobalFlags globalFlags;
  4474. * \var reserved2
  4475. *
  4476. //Variable payload of UBXNAV_SVINFO_PART type
  4477. */
  4478. /*!
  4479. * \struct UBXSVINFOQuality
  4480. {
  4481. * \var qualityInd:4
  4482. *
  4483. * \see #UBXSVINFOQualityId to fill this field
  4484. */
  4485. /*!
  4486. * \struct UBXNAV_SVINFO_PART
  4487. * \brief The UBXNAV_SVINFO_PART structure is
  4488. *
  4489. * \var chn
  4490. *
  4491. * \var svid
  4492. *
  4493. * \var flags
  4494. *
  4495. * \see #UBXSVINFOFlags to fill this field
  4496. * \var quality
  4497. *
  4498. * \var cno
  4499. *
  4500. * \var elev
  4501. *
  4502. * \var azim
  4503. *
  4504. * \var prRes
  4505. *
  4506. */
  4507. /*!
  4508. * \struct UBXNAV_TIMEGPS
  4509. * \brief The UBXNAV_TIMEGPS structure is
  4510. *
  4511. * \var iTOW
  4512. *
  4513. * \var fTOW
  4514. *
  4515. * \var week
  4516. *
  4517. * \var leapS
  4518. *
  4519. * \var valid
  4520. *
  4521. * \see #UBXTIMEGPSValidityFlags to fill this field
  4522. * \var tAcc
  4523. *
  4524. */
  4525. /*!
  4526. * \struct UBXNAV_TIMEUTC
  4527. * \brief The UBXNAV_TIMEUTC structure is
  4528. *
  4529. * \var iTOW
  4530. *
  4531. * \var tAcc
  4532. *
  4533. * \var nano
  4534. *
  4535. * \var year
  4536. *
  4537. * \var month
  4538. *
  4539. * \var day
  4540. *
  4541. * \var hour
  4542. *
  4543. * \var min
  4544. *
  4545. * \var sec
  4546. *
  4547. * \var valid
  4548. *
  4549. * \see #UBXTIMEUTCValidityFlags to fill this field
  4550. */
  4551. /*!
  4552. * \struct UBXNAV_VELECEF
  4553. * \brief The UBXNAV_VELECEF structure is
  4554. *
  4555. * \var iTOW
  4556. *
  4557. * \var ecefVX
  4558. *
  4559. * \var ecefVY
  4560. *
  4561. * \var ecefVZ
  4562. *
  4563. * \var sAcc
  4564. *
  4565. */
  4566. /*!
  4567. * \struct UBXNAV_VELNED
  4568. * \brief The UBXNAV_VELNED structure is
  4569. *
  4570. * \var iTOW
  4571. *
  4572. * \var velN
  4573. *
  4574. * \var velE
  4575. *
  4576. * \var velD
  4577. *
  4578. * \var speed
  4579. *
  4580. * \var gSpeed
  4581. *
  4582. * \var heading
  4583. *
  4584. * \var sAcc
  4585. *
  4586. * \var cAcc
  4587. *
  4588. */
  4589. /*!
  4590. * \struct UBXRXM_ALM_POLL
  4591. * \brief The UBXRXM_ALM_POLL structure is
  4592. *
  4593. //No payload
  4594. */
  4595. /*!
  4596. * \struct UBXRXM_ALM_POLL_OPT
  4597. * \brief The UBXRXM_ALM_POLL_OPT structure is
  4598. *
  4599. * \var svid
  4600. *
  4601. */
  4602. /*!
  4603. * \struct UBXRXM_ALM
  4604. * \brief The UBXRXM_ALM structure is
  4605. *
  4606. * \note This RMX messages marked as obsolete API use AID instead
  4607. * \var svid
  4608. *
  4609. * \var week
  4610. *
  4611. */
  4612. /*!
  4613. * \struct UBXRXM_ALM_OPT
  4614. * \brief The UBXRXM_ALM_OPT structure is
  4615. * \note This RMX messages marked as obsolete API use AID instead
  4616. * \var svid
  4617. *
  4618. * \var week
  4619. *
  4620. * \var dwrd[8]
  4621. *
  4622. */
  4623. /*!
  4624. * \struct UBXRXM_EPH_POLL
  4625. * \brief The UBXRXM_EPH_POLL structure is
  4626. *
  4627. //No payload
  4628. */
  4629. /*!
  4630. * \struct UBXRXM_EPH_POLL_OPT
  4631. * \brief The UBXRXM_EPH_POLL_OPT structure is
  4632. *
  4633. * \var svid
  4634. *
  4635. */
  4636. /*!
  4637. * \struct UBXRXM_EPH
  4638. * \brief The UBXRXM_EPH structure is
  4639. *
  4640. * \note This RMX messages marked as obsolete API use AID instead
  4641. * \var svid
  4642. *
  4643. * \var how
  4644. *
  4645. */
  4646. /*!
  4647. * \struct UBXRXM_EPH_OPT
  4648. * \brief The UBXRXM_EPH_OPT structure is
  4649. *
  4650. * \note This RMX messages marked as obsolete API use AID instead
  4651. * \var svid
  4652. *
  4653. * \var how
  4654. *
  4655. * \var sf1d[8]
  4656. *
  4657. * \var sf2d[8]
  4658. *
  4659. * \var sf3d[8]
  4660. *
  4661. */
  4662. /*!
  4663. * \struct UBXRXM_PMREQ
  4664. * \brief The UBXRXM_PMREQ structure is
  4665. *
  4666. * \var duration
  4667. *
  4668. * \var flags
  4669. *
  4670. * \see #UBXPMREQFlags to fill this field
  4671. */
  4672. /*!
  4673. * \struct UBXRXM_RAW
  4674. * \brief The UBXRXM_RAW structure is
  4675. *
  4676. * \var rcvTow
  4677. *
  4678. * \var week
  4679. *
  4680. * \var numSV
  4681. *
  4682. * \var reserved1
  4683. *
  4684. //Variable payload of UBXRXM_RAW_PART type
  4685. */
  4686. /*!
  4687. * \struct UBXRXM_RAW_PART
  4688. * \brief The UBXRXM_RAW_PART structure is
  4689. * \var cpMes
  4690. *
  4691. * \var prMes
  4692. *
  4693. * \var doMes
  4694. *
  4695. * \var sv
  4696. *
  4697. * \var mesQI
  4698. *
  4699. * \var cno
  4700. *
  4701. * \var lli
  4702. *
  4703. */
  4704. /*!
  4705. * \struct UBXRXM_SFRB
  4706. * \brief The UBXRXM_SFRB structure is
  4707. *
  4708. * \var chn
  4709. *
  4710. * \var svid
  4711. *
  4712. * \var dwrd[10]
  4713. *
  4714. */
  4715. /*!
  4716. * \struct UBXRXM_SVSI
  4717. * \brief The UBXRXM_SVSI structure is
  4718. *
  4719. * \var iTOW
  4720. *
  4721. * \var week
  4722. *
  4723. * \var numVis
  4724. *
  4725. * \var numSV
  4726. *
  4727. * Variable payload of UBXRXM_SVSI_PART type
  4728. */
  4729. /*!
  4730. * \struct UBXSVSISVFlags
  4731. {
  4732. * \var ura:4
  4733. *
  4734. * \var healthy:1
  4735. *
  4736. * \var ephVal:1
  4737. *
  4738. * \var almVal:1
  4739. *
  4740. * \var notAvail:1
  4741. *
  4742. */
  4743. /*!
  4744. * \struct UBXSVSIAge
  4745. * \var almAge:4
  4746. *
  4747. * \var ephAge:4
  4748. *
  4749. */
  4750. /*!
  4751. * \struct UBXRXM_SVSI_PART
  4752. * \var svid
  4753. *
  4754. struct UBXSVSISVFlags svFlag;
  4755. * \var azim
  4756. *
  4757. * \var elev
  4758. *
  4759. struct UBXSVSIAge age;
  4760. */
  4761. /*!
  4762. * \struct UBXTM2Flags
  4763. * \var mode:1
  4764. *
  4765. * \see #UBXTM2FlagsMode to fill this field
  4766. * \var run:1
  4767. *
  4768. * \see #UBXTM2FlagsRun to fill this field
  4769. * \var newFallingEdge:1
  4770. *
  4771. * \var timeBase:2
  4772. *
  4773. * \see #UBXTM2FlagsTimeBase to fill this field
  4774. * \var utc:1
  4775. *
  4776. * \see #UBXTM2FlagsUTC to fill this field
  4777. * \var time:1
  4778. *
  4779. * \see #UBXTM2FlagsTime to fill this field
  4780. * \var newRisingEdge:1
  4781. *
  4782. */
  4783. /*!
  4784. * \struct UBXTIM_TM2
  4785. * \brief The UBXTIM_TM2 structure is
  4786. *
  4787. * \var ch
  4788. *
  4789. struct UBXTM2Flags flags;
  4790. * \var count
  4791. *
  4792. * \var wnR
  4793. *
  4794. * \var wnF
  4795. *
  4796. * \var towMsR
  4797. *
  4798. * \var towSubMsR
  4799. *
  4800. * \var towMsF
  4801. *
  4802. * \var towSubMsF
  4803. *
  4804. * \var accEst
  4805. *
  4806. */
  4807. /*!
  4808. * \struct UBXTIM_TP
  4809. * \brief The UBXTIM_TP structure is
  4810. *
  4811. * \var towMS
  4812. *
  4813. * \var towSubMS
  4814. *
  4815. * \var qErr
  4816. *
  4817. * \var week
  4818. *
  4819. * \var flags
  4820. *
  4821. * \var reserved1
  4822. *
  4823. */
  4824. /*!
  4825. * \struct UBXVRFYFlags
  4826. * \brief The UBXVRFYFlags structure is
  4827. *
  4828. * \var UBXVRFYFlags::src
  4829. * Blabla variable
  4830. * \see #UBXVRFYFlagsSource to fill this field
  4831. */
  4832. /*!
  4833. * \struct UBXTIM_VRFY
  4834. * \brief The UBXTIM_VRFY structure is
  4835. *
  4836. * \var itow
  4837. *
  4838. * \var frac
  4839. *
  4840. * \var deltaMs
  4841. *
  4842. * \var deltaNs
  4843. *
  4844. * \var wno
  4845. *
  4846. * \var flags;
  4847. *
  4848. * \var reserved1
  4849. *
  4850. */