ubx.c 219 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975
  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 "portable_endian.h"
  27. #include "ubxmessage.h"
  28. #include "ubx.h"
  29. #include "malloc.h"
  30. #include "memory.h"
  31. void fletcherChecksum(unsigned char* buffer, int size, unsigned char* checkSumA, unsigned char* checkSumB)
  32. {
  33. int i = 0;
  34. *checkSumA = 0;
  35. *checkSumB = 0;
  36. for(; i < size; i++)
  37. {
  38. *checkSumA += buffer[i];
  39. *checkSumB += *checkSumA;
  40. }
  41. }
  42. extern void clearUBXMsgBuffer(const UBXMsgBuffer* buffer)
  43. {
  44. free(buffer->data);
  45. }
  46. void completeMsg(UBXMsgBuffer* buffer, int payloadSize)
  47. {
  48. unsigned char* checkSumA = (unsigned char*)(buffer->data + UBX_HEADER_SIZE + payloadSize);
  49. unsigned char* checkSumB = (unsigned char*)(buffer->data + UBX_HEADER_SIZE + payloadSize + 1);
  50. fletcherChecksum((unsigned char*)(buffer->data + sizeof(UBX_PREAMBLE)), payloadSize + 4, checkSumA, checkSumB);
  51. }
  52. void initMsg(UBXMsg* msg, int payloadSize, UBXMessageClass msgClass, UBXMessageId msgId)
  53. {
  54. msg->preamble = htobe16(UBX_PREAMBLE);
  55. msg->hdr.msgClass = msgClass;
  56. msg->hdr.msgId = msgId;
  57. msg->hdr.length = payloadSize;
  58. }
  59. UBXMsgBuffer createBuffer(int payloadSize)
  60. {
  61. UBXMsgBuffer buffer = {0, 0};
  62. buffer.size = UBX_HEADER_SIZE + payloadSize + UBX_CHECKSUM_SIZE;
  63. buffer.data = (char*)malloc(buffer.size);
  64. memset(buffer.data, 0, buffer.size);
  65. return buffer;
  66. }
  67. UBXMsgBuffer getAID_ALPSRV(UBXMsg* clientMgs, const UBXAlpFileInfo *fileInfo)
  68. {
  69. int requestedAlpSize = (clientMgs->payload.AID_ALPSRV.size << 1);
  70. int alpMsgSize = 0;
  71. int payloadSize = 0;
  72. UBXMsgBuffer buffer;
  73. UBXMsg* msg = 0;
  74. if(fileInfo->dataSize < (clientMgs->payload.AID_ALPSRV.offset + requestedAlpSize))
  75. {
  76. requestedAlpSize = fileInfo->dataSize - clientMgs->payload.AID_ALPSRV.offset - 1;
  77. }
  78. alpMsgSize = sizeof(UBXAID_ALPSRV);
  79. payloadSize = alpMsgSize + requestedAlpSize;
  80. buffer = createBuffer(payloadSize);
  81. msg = (UBXMsg*) buffer.data;
  82. if(requestedAlpSize < 0)
  83. {
  84. return buffer;
  85. }
  86. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALPSRV);
  87. msg->payload.AID_ALPSRV.idSize = clientMgs->payload.AID_ALPSRV.idSize;
  88. msg->payload.AID_ALPSRV.type = clientMgs->payload.AID_ALPSRV.type;
  89. msg->payload.AID_ALPSRV.offset = clientMgs->payload.AID_ALPSRV.offset;
  90. msg->payload.AID_ALPSRV.size = clientMgs->payload.AID_ALPSRV.size;
  91. msg->payload.AID_ALPSRV.fileId = fileInfo->fileId;
  92. msg->payload.AID_ALPSRV.dataSize = requestedAlpSize;
  93. msg->payload.AID_ALPSRV.id1 = clientMgs->payload.AID_ALPSRV.id1;
  94. msg->payload.AID_ALPSRV.id2 = clientMgs->payload.AID_ALPSRV.id2;
  95. msg->payload.AID_ALPSRV.id3 = clientMgs->payload.AID_ALPSRV.id3;
  96. memcpy(buffer.data + UBX_HEADER_SIZE + alpMsgSize, fileInfo->alpData + msg->payload.AID_ALPSRV.offset, requestedAlpSize);
  97. completeMsg(&buffer, payloadSize);
  98. return buffer;
  99. }
  100. UBXMsgBuffer getCFG_MSG_POLL(UBXMessageClass msgClass, UBXMessageId msgId)
  101. {
  102. int payloadSize = sizeof(UBXCFG_MSG_POLL);
  103. UBXMsgBuffer buffer = createBuffer(payloadSize);
  104. UBXMsg* msg = (UBXMsg*)buffer.data;
  105. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_MSG);
  106. msg->payload.CFG_MSG_POLL.msgClass = msgClass;
  107. msg->payload.CFG_MSG_POLL.msgId = msgId;
  108. completeMsg(&buffer, payloadSize);
  109. return buffer;
  110. }
  111. UBXMsgBuffer getCFG_MSG_RATE(UBXMessageClass msgClass, UBXMessageId msgId, UBXU1_t rate)
  112. {
  113. int payloadSize = sizeof(UBXCFG_MSG_RATE);
  114. UBXMsgBuffer buffer = createBuffer(payloadSize);
  115. UBXMsg* msg = (UBXMsg*)buffer.data;
  116. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_MSG);
  117. msg->payload.CFG_MSG_RATE.msgClass = msgClass;
  118. msg->payload.CFG_MSG_RATE.msgId = msgId;
  119. msg->payload.CFG_MSG_RATE.rate = rate;
  120. completeMsg(&buffer, payloadSize);
  121. return buffer;
  122. }
  123. UBXMsgBuffer getCFG_MSG_RATES(UBXMessageClass msgClass, UBXMessageId msgId, UBXU1_t rate[])
  124. {
  125. int payloadSize = sizeof(UBXCFG_MSG_RATES);
  126. UBXMsgBuffer buffer = createBuffer(payloadSize);
  127. UBXMsg* msg = (UBXMsg*)buffer.data;
  128. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_MSG);
  129. msg->payload.CFG_MSG_RATES.msgClass = msgClass;
  130. msg->payload.CFG_MSG_RATES.msgId = msgId;
  131. memcpy(msg->payload.CFG_MSG_RATES.rate, rate, 6*sizeof(UBXU1_t));
  132. completeMsg(&buffer, payloadSize);
  133. return buffer;
  134. }
  135. UBXMsgBuffer getCFG_RST(int mode, UBXU2_t mask)
  136. {
  137. int payloadSize = sizeof(UBXCFG_RST);
  138. UBXMsgBuffer buffer = createBuffer(payloadSize);
  139. UBXMsg* msg = (UBXMsg*)buffer.data;
  140. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RST);
  141. msg->payload.CFG_RST.resetMode = mode;
  142. msg->payload.CFG_RST.navBBRMask = mask;
  143. completeMsg(&buffer, payloadSize);
  144. return buffer;
  145. }
  146. UBXMsgBuffer getCFG_RST_OPT(int mode, UBXBBRSpecialSets special)
  147. {
  148. int payloadSize = sizeof(UBXCFG_RST);
  149. UBXMsgBuffer buffer = createBuffer(payloadSize);
  150. UBXMsg* msg = (UBXMsg*)buffer.data;
  151. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RST);
  152. msg->payload.CFG_RST.resetMode = mode;
  153. msg->payload.CFG_RST.navBBRMask = special;
  154. completeMsg(&buffer, payloadSize);
  155. return buffer;
  156. }
  157. UBXMsgBuffer getCFG_TP5_POLL_OPT(UBXCFGTimepulses tpIdx)
  158. {
  159. int payloadSize = sizeof(UBXCFG_TP5_POLL_OPT);
  160. UBXMsgBuffer buffer = createBuffer(payloadSize);
  161. UBXMsg* msg = (UBXMsg*)buffer.data;
  162. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_TP5);
  163. msg->payload.CFG_TP5_POLL_OPT.tpIdx = tpIdx;
  164. completeMsg(&buffer, payloadSize);
  165. return buffer;
  166. }
  167. UBXMsgBuffer getCFG_TP5(UBXCFGTimepulses tpIdx, UBXI2_t antCableDelay, UBXI2_t rfGroupDelay,
  168. UBXU4_t freqPeriod, UBXU4_t freqPeriodLock, UBXU4_t pulseLenRatio,
  169. UBXU4_t pulseLenRatioLock, UBXU4_t userConfigDelay, UBXU4_t flags)
  170. {
  171. int payloadSize = sizeof(UBXCFG_TP5);
  172. UBXMsgBuffer buffer = createBuffer(payloadSize);
  173. UBXMsg* msg = (UBXMsg*)buffer.data;
  174. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_TP5);
  175. msg->payload.CFG_TP5.tpIdx = tpIdx;
  176. msg->payload.CFG_TP5.antCableDelay = antCableDelay;
  177. msg->payload.CFG_TP5.rfGroupDelay = rfGroupDelay;
  178. msg->payload.CFG_TP5.freqPeriod = freqPeriod;
  179. msg->payload.CFG_TP5.freqPeriodLock = freqPeriodLock;
  180. msg->payload.CFG_TP5.pulseLenRatio = pulseLenRatio;
  181. msg->payload.CFG_TP5.pulseLenRatioLock = pulseLenRatioLock;
  182. msg->payload.CFG_TP5.userConfigDelay = userConfigDelay;
  183. msg->payload.CFG_TP5.flags = flags;
  184. completeMsg(&buffer, payloadSize);
  185. return buffer;
  186. }
  187. UBXMsgBuffer getAID_ALM_POLL()
  188. {
  189. int payloadSize = 0;
  190. UBXMsgBuffer buffer = createBuffer(payloadSize);
  191. UBXMsg* msg = (UBXMsg*)buffer.data;
  192. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  193. completeMsg(&buffer, payloadSize);
  194. return buffer;
  195. }
  196. UBXMsgBuffer getAID_ALM_POLL_OPT(UBXU1_t svid)
  197. {
  198. int payloadSize = sizeof(UBXAID_ALM_POLL_OPT);
  199. UBXMsgBuffer buffer = createBuffer(payloadSize);
  200. UBXMsg* msg = (UBXMsg*)buffer.data;
  201. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  202. msg->payload.AID_ALM_POLL_OPT.svid = svid;
  203. completeMsg(&buffer, payloadSize);
  204. return buffer;
  205. }
  206. UBXMsgBuffer getAID_ALM(UBXU4_t svid, UBXU4_t week)
  207. {
  208. int payloadSize = sizeof(UBXAID_ALM);
  209. UBXMsgBuffer buffer = createBuffer(payloadSize);
  210. UBXMsg* msg = (UBXMsg*)buffer.data;
  211. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALM);
  212. msg->payload.AID_ALM.svid = svid;
  213. msg->payload.AID_ALM.week = week;
  214. completeMsg(&buffer, payloadSize);
  215. return buffer;
  216. }
  217. UBXMsgBuffer getAID_ALM_OPT(UBXU4_t svid, UBXU4_t week, UBXU4_t dwrd[8])
  218. {
  219. int payloadSize = sizeof(UBXAID_ALM_OPT);
  220. UBXMsgBuffer buffer = createBuffer(payloadSize);
  221. UBXMsg* msg = (UBXMsg*)buffer.data;
  222. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALM);
  223. msg->payload.AID_ALM_OPT.svid = svid;
  224. msg->payload.AID_ALM_OPT.week = week;
  225. memcpy(msg->payload.AID_ALM_OPT.dwrd, dwrd, 8*sizeof(UBXU4_t));
  226. completeMsg(&buffer, payloadSize);
  227. return buffer;
  228. }
  229. UBXMsgBuffer getAID_ALP_POLL(UBXU4_t predTow,
  230. UBXU4_t predDur,
  231. UBXI4_t age,
  232. UBXU2_t predWno,
  233. UBXU2_t almWno,
  234. UBXU1_t svs)
  235. {
  236. int payloadSize = sizeof(UBXAID_ALP_POLL);
  237. UBXMsgBuffer buffer = createBuffer(payloadSize);
  238. UBXMsg* msg = (UBXMsg*)buffer.data;
  239. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  240. msg->payload.AID_ALP_POLL.predTow = predTow;
  241. msg->payload.AID_ALP_POLL.predDur = predDur;
  242. msg->payload.AID_ALP_POLL.age = age;
  243. msg->payload.AID_ALP_POLL.predWno = predWno;
  244. msg->payload.AID_ALP_POLL.almWno = almWno;
  245. msg->payload.AID_ALP_POLL.svs = svs;
  246. completeMsg(&buffer, payloadSize);
  247. return buffer;
  248. }
  249. UBXMsgBuffer getAID_ALP_END()
  250. {
  251. int payloadSize = sizeof(UBXAID_ALP_END);
  252. UBXMsgBuffer buffer = createBuffer(payloadSize);
  253. UBXMsg* msg = (UBXMsg*)buffer.data;
  254. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  255. msg->payload.AID_ALP_END.dummy = 0xAA;
  256. completeMsg(&buffer, payloadSize);
  257. return buffer;
  258. }
  259. UBXMsgBuffer getAID_ALP(UBXU2_t* chunk, int chunkSize)
  260. {
  261. int payloadSize = chunkSize;
  262. UBXMsgBuffer buffer = createBuffer(payloadSize);
  263. UBXMsg* msg = (UBXMsg*)buffer.data;
  264. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP);
  265. memcpy(((char*)&(msg->payload)) + sizeof(UBXAID_ALP), chunk, chunkSize);
  266. completeMsg(&buffer, payloadSize);
  267. return buffer;
  268. }
  269. UBXMsgBuffer getAID_AOP_POLL()
  270. {
  271. int payloadSize = 0;
  272. UBXMsgBuffer buffer = createBuffer(payloadSize);
  273. UBXMsg* msg = (UBXMsg*)buffer.data;
  274. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP);
  275. completeMsg(&buffer, payloadSize);
  276. return buffer;
  277. }
  278. UBXMsgBuffer getAID_AOP_POLL_OPT(UBXU1_t svid)
  279. {
  280. int payloadSize = sizeof(UBXAID_AOP_POLL_OPT);
  281. UBXMsgBuffer buffer = createBuffer(payloadSize);
  282. UBXMsg* msg = (UBXMsg*)buffer.data;
  283. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP);
  284. msg->payload.AID_AOP_POLL_OPT.svid = svid;
  285. completeMsg(&buffer, payloadSize);
  286. return buffer;
  287. }
  288. UBXMsgBuffer getAID_AOP(UBXU1_t svid, UBXU1_t data[59])
  289. {
  290. int payloadSize = sizeof(UBXAID_AOP);
  291. UBXMsgBuffer buffer = createBuffer(payloadSize);
  292. UBXMsg* msg = (UBXMsg*)buffer.data;
  293. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP);
  294. msg->payload.AID_AOP.svid = svid;
  295. memcpy(msg->payload.AID_AOP.data, data, 59*sizeof(UBXU1_t));
  296. completeMsg(&buffer, payloadSize);
  297. return buffer;
  298. }
  299. UBXMsgBuffer getAID_AOP_OPT(UBXU1_t svid, UBXU1_t data[59], UBXU1_t optional0[48], UBXU1_t optional1[48], UBXU1_t optional2[48])
  300. {
  301. int payloadSize = sizeof(UBXAID_AOP_OPT);
  302. UBXMsgBuffer buffer = createBuffer(payloadSize);
  303. UBXMsg* msg = (UBXMsg*)buffer.data;
  304. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP);
  305. msg->payload.AID_AOP_OPT.svid = svid;
  306. memcpy(msg->payload.AID_AOP_OPT.data, data, 59*sizeof(UBXU1_t));
  307. memcpy(msg->payload.AID_AOP_OPT.optional0, optional0, 48*sizeof(UBXU1_t));
  308. memcpy(msg->payload.AID_AOP_OPT.optional1, optional1, 48*sizeof(UBXU1_t));
  309. memcpy(msg->payload.AID_AOP_OPT.optional2, optional2, 48*sizeof(UBXU1_t));
  310. completeMsg(&buffer, payloadSize);
  311. return buffer;
  312. }
  313. UBXMsgBuffer getAID_DATA_POLL()
  314. {
  315. int payloadSize = 0;
  316. UBXMsgBuffer buffer = createBuffer(payloadSize);
  317. UBXMsg* msg = (UBXMsg*)buffer.data;
  318. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_DATA);
  319. completeMsg(&buffer, payloadSize);
  320. return buffer;
  321. }
  322. UBXMsgBuffer getAID_EPH_POLL()
  323. {
  324. int payloadSize = 0;
  325. UBXMsgBuffer buffer = createBuffer(payloadSize);
  326. UBXMsg* msg = (UBXMsg*)buffer.data;
  327. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH);
  328. completeMsg(&buffer, payloadSize);
  329. return buffer;
  330. }
  331. UBXMsgBuffer getAID_EPH_POLL_OPT(UBXU1_t svid)
  332. {
  333. int payloadSize = sizeof(UBXAID_EPH_POLL_OPT);
  334. UBXMsgBuffer buffer = createBuffer(payloadSize);
  335. UBXMsg* msg = (UBXMsg*)buffer.data;
  336. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH);
  337. msg->payload.AID_EPH_POLL_OPT.svid = svid;
  338. completeMsg(&buffer, payloadSize);
  339. return buffer;
  340. }
  341. UBXMsgBuffer getAID_EPH(UBXU4_t svid, UBXU4_t how)
  342. {
  343. int payloadSize = sizeof(UBXAID_EPH);
  344. UBXMsgBuffer buffer = createBuffer(payloadSize);
  345. UBXMsg* msg = (UBXMsg*)buffer.data;
  346. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH);
  347. msg->payload.AID_EPH.svid = svid;
  348. msg->payload.AID_EPH.how = how;
  349. completeMsg(&buffer, payloadSize);
  350. return buffer;
  351. }
  352. UBXMsgBuffer getAID_EPH_OPT(UBXU4_t svid, UBXU4_t how, UBXU4_t sf1d[8], UBXU4_t sf2d[8], UBXU4_t sf3d[8])
  353. {
  354. int payloadSize = sizeof(UBXAID_EPH_OPT);
  355. UBXMsgBuffer buffer = createBuffer(payloadSize);
  356. UBXMsg* msg = (UBXMsg*)buffer.data;
  357. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH);
  358. msg->payload.AID_EPH_OPT.svid = svid;
  359. msg->payload.AID_EPH_OPT.how = how;
  360. memcpy(msg->payload.AID_EPH_OPT.sf1d, sf1d, 8*sizeof(UBXU4_t));
  361. memcpy(msg->payload.AID_EPH_OPT.sf2d, sf2d, 8*sizeof(UBXU4_t));
  362. memcpy(msg->payload.AID_EPH_OPT.sf3d, sf3d, 8*sizeof(UBXU4_t));
  363. completeMsg(&buffer, payloadSize);
  364. return buffer;
  365. }
  366. UBXMsgBuffer getAID_HUI_POLL()
  367. {
  368. int payloadSize = 0;
  369. UBXMsgBuffer buffer = createBuffer(payloadSize);
  370. UBXMsg* msg = (UBXMsg*)buffer.data;
  371. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_HUI);
  372. completeMsg(&buffer, payloadSize);
  373. return buffer;
  374. }
  375. UBXMsgBuffer getAID_HUI(UBXI4_t health, UBXR4_t utcA0, UBXR4_t utcA1,
  376. UBXI4_t utcTOW, UBXI2_t utcWNT, UBXI2_t utcLS,
  377. UBXI2_t utcWNF, UBXI2_t utcDN, UBXI2_t utcLSF,
  378. UBXI2_t utcSpare, UBXR4_t klobA0, UBXR4_t klobA1,
  379. UBXR4_t klobA2, UBXR4_t klobA3, UBXR4_t klobB0,
  380. UBXR4_t klobB1, UBXR4_t klobB2, UBXR4_t klobB3,
  381. UBXX2_t flags)
  382. {
  383. int payloadSize = sizeof(UBXAID_HUI);
  384. UBXMsgBuffer buffer = createBuffer(payloadSize);
  385. UBXMsg* msg = (UBXMsg*)buffer.data;
  386. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_HUI);
  387. msg->payload.AID_HUI.health = health;
  388. msg->payload.AID_HUI.utcA0 = utcA0;
  389. msg->payload.AID_HUI.utcA1 = utcA1;
  390. msg->payload.AID_HUI.utcTOW = utcTOW;
  391. msg->payload.AID_HUI.utcWNT = utcWNT;
  392. msg->payload.AID_HUI.utcLS = utcLS;
  393. msg->payload.AID_HUI.utcWNF = utcWNF;
  394. msg->payload.AID_HUI.utcDN = utcDN;
  395. msg->payload.AID_HUI.utcLSF = utcLSF;
  396. msg->payload.AID_HUI.utcSpare = utcSpare;
  397. msg->payload.AID_HUI.klobA0 = klobA0;
  398. msg->payload.AID_HUI.klobA1 = klobA1;
  399. msg->payload.AID_HUI.klobA2 = klobA2;
  400. msg->payload.AID_HUI.klobA3 = klobA3;
  401. msg->payload.AID_HUI.klobA0 = klobB0;
  402. msg->payload.AID_HUI.klobA1 = klobB1;
  403. msg->payload.AID_HUI.klobA2 = klobB2;
  404. msg->payload.AID_HUI.klobA3 = klobB3;
  405. msg->payload.AID_HUI.flags = flags;
  406. completeMsg(&buffer, payloadSize);
  407. return buffer;
  408. }
  409. UBXMsgBuffer getAID_INI_POLL()
  410. {
  411. int payloadSize = 0;
  412. UBXMsgBuffer buffer = createBuffer(payloadSize);
  413. UBXMsg* msg = (UBXMsg*)buffer.data;
  414. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_INI);
  415. completeMsg(&buffer, payloadSize);
  416. return buffer;
  417. }
  418. UBXMsgBuffer getAID_INI(UBXI1_t ecefXOrLat,
  419. UBXI1_t ecefYOrLat,
  420. UBXI1_t ecefZOrLat,
  421. UBXU1_t posAcc,
  422. UBXI1_t tmCfg,
  423. UBXU2_t wnoOrDate,
  424. UBXU4_t towOrDate,
  425. UBXI4_t towNs,
  426. UBXU4_t tAccMS,
  427. UBXU4_t tAccNS,
  428. UBXI4_t clkDOrFreq,
  429. UBXU4_t clkDAccOrFreqAcc,
  430. UBXX4_t flags)
  431. {
  432. int payloadSize = sizeof(UBXAID_INI);
  433. UBXMsgBuffer buffer = createBuffer(payloadSize);
  434. UBXMsg* msg = (UBXMsg*)buffer.data;
  435. initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_INI);
  436. msg->payload.AID_INI.ecefXOrLat = ecefXOrLat;
  437. msg->payload.AID_INI.ecefYOrLat = ecefYOrLat;
  438. msg->payload.AID_INI.ecefZOrLat = ecefZOrLat;
  439. msg->payload.AID_INI.posAcc = posAcc;
  440. msg->payload.AID_INI.tmCfg = tmCfg;
  441. msg->payload.AID_INI.wnoOrDate = wnoOrDate;
  442. msg->payload.AID_INI.towOrDate = towOrDate;
  443. msg->payload.AID_INI.towNs = towNs;
  444. msg->payload.AID_INI.tAccMS = tAccMS;
  445. msg->payload.AID_INI.tAccNS = tAccNS;
  446. msg->payload.AID_INI.clkDOrFreq = clkDOrFreq;
  447. msg->payload.AID_INI.clkDAccOrFreqAcc = clkDAccOrFreqAcc;
  448. msg->payload.AID_INI.flags = flags;
  449. completeMsg(&buffer, payloadSize);
  450. return buffer;
  451. }
  452. UBXMsgBuffer getCFG_ANT(UBXX2_t flags, UBXANTPins pins)
  453. {
  454. int payloadSize = sizeof(UBXCFG_ANT);
  455. UBXMsgBuffer buffer = createBuffer(payloadSize);
  456. UBXMsg* msg = (UBXMsg*)buffer.data;
  457. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ANT);
  458. msg->payload.CFG_ANT.flags = flags;
  459. msg->payload.CFG_ANT.pins = pins;
  460. completeMsg(&buffer, payloadSize);
  461. return buffer;
  462. }
  463. UBXMsgBuffer getCFG_ANT_POLL()
  464. {
  465. int payloadSize = 0;
  466. UBXMsgBuffer buffer = createBuffer(payloadSize);
  467. UBXMsg* msg = (UBXMsg*)buffer.data;
  468. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ANT);
  469. completeMsg(&buffer, payloadSize);
  470. return buffer;
  471. }
  472. UBXMsgBuffer getCFG_CFG(UBXX4_t clearMask, UBXX4_t saveMask, UBXX4_t loadMask)
  473. {
  474. int payloadSize = sizeof(UBXCFG_CFG);
  475. UBXMsgBuffer buffer = createBuffer(payloadSize);
  476. UBXMsg* msg = (UBXMsg*)buffer.data;
  477. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_CFG);
  478. msg->payload.CFG_CFG.clearMask = clearMask;
  479. msg->payload.CFG_CFG.saveMask = saveMask;
  480. msg->payload.CFG_CFG.loadMask = loadMask;
  481. completeMsg(&buffer, payloadSize);
  482. return buffer;
  483. }
  484. UBXMsgBuffer getCFG_CFG_OPT(UBXX4_t clearMask, UBXX4_t saveMask, UBXX4_t loadMask, UBXX1_t deviceMask)
  485. {
  486. int payloadSize = sizeof(UBXCFG_CFG_OPT);
  487. UBXMsgBuffer buffer = createBuffer(payloadSize);
  488. UBXMsg* msg = (UBXMsg*)buffer.data;
  489. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_CFG);
  490. msg->payload.CFG_CFG_OPT.clearMask = clearMask;
  491. msg->payload.CFG_CFG_OPT.saveMask = saveMask;
  492. msg->payload.CFG_CFG_OPT.loadMask = loadMask;
  493. msg->payload.CFG_CFG_OPT.deviceMask = deviceMask;
  494. completeMsg(&buffer, payloadSize);
  495. return buffer;
  496. }
  497. 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)
  498. {
  499. int payloadSize = sizeof(UBXCFG_DAT_IN);
  500. UBXMsgBuffer buffer = createBuffer(payloadSize);
  501. UBXMsg* msg = (UBXMsg*)buffer.data;
  502. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_CFG);
  503. msg->payload.CFG_DAT_IN.majA = majA;
  504. msg->payload.CFG_DAT_IN.flat = flat;
  505. msg->payload.CFG_DAT_IN.dX = dX;
  506. msg->payload.CFG_DAT_IN.dY = dY;
  507. msg->payload.CFG_DAT_IN.dZ = dZ;
  508. msg->payload.CFG_DAT_IN.rotX = rotX;
  509. msg->payload.CFG_DAT_IN.rotY = rotY;
  510. msg->payload.CFG_DAT_IN.rotZ = rotZ;
  511. msg->payload.CFG_DAT_IN.scale = scale;
  512. completeMsg(&buffer, payloadSize);
  513. return buffer;
  514. }
  515. UBXMsgBuffer getCFG_DAT_POLL()
  516. {
  517. int payloadSize = 0;
  518. UBXMsgBuffer buffer = createBuffer(payloadSize);
  519. UBXMsg* msg = (UBXMsg*)buffer.data;
  520. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_DAT);
  521. completeMsg(&buffer, payloadSize);
  522. return buffer;
  523. }
  524. UBXMsgBuffer getCFG_GNSS_POLL()
  525. {
  526. int payloadSize = 0;
  527. UBXMsgBuffer buffer = createBuffer(payloadSize);
  528. UBXMsg* msg = (UBXMsg*)buffer.data;
  529. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_GNSS);
  530. completeMsg(&buffer, payloadSize);
  531. return buffer;
  532. }
  533. UBXMsgBuffer getCFG_GNSS(UBXU1_t msgVer,
  534. UBXU1_t numTrkChHw,
  535. UBXU1_t numTrkChUse,
  536. UBXU1_t numConfigBlocks,
  537. UBXCFG_GNSS_PART* gnssPart)
  538. {
  539. int payloadSize = sizeof(UBXCFG_GNSS) + numConfigBlocks*sizeof(UBXCFG_GNSS_PART);
  540. UBXMsgBuffer buffer = createBuffer(payloadSize);
  541. UBXMsg* msg = (UBXMsg*)buffer.data;
  542. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_GNSS);
  543. msg->payload.CFG_GNSS.msgVer = msgVer;
  544. msg->payload.CFG_GNSS.numTrkChHw = numTrkChHw;
  545. msg->payload.CFG_GNSS.numTrkChUse = numTrkChUse;
  546. msg->payload.CFG_GNSS.numConfigBlocks = numConfigBlocks;
  547. memcpy(((char*)&(msg->payload.CFG_GNSS)) + sizeof(UBXCFG_GNSS), gnssPart, numConfigBlocks*sizeof(UBXCFG_GNSS_PART));
  548. completeMsg(&buffer, payloadSize);
  549. return buffer;
  550. }
  551. UBXMsgBuffer getCFG_INF_POLL(UBXU1_t protocolId)
  552. {
  553. int payloadSize = sizeof(UBXCFG_INF_POLL);
  554. UBXMsgBuffer buffer = createBuffer(payloadSize);
  555. UBXMsg* msg = (UBXMsg*)buffer.data;
  556. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_INF);
  557. msg->payload.CFG_INF_POLL.protocolId = protocolId;
  558. completeMsg(&buffer, payloadSize);
  559. return buffer;
  560. }
  561. UBXMsgBuffer getCFG_INF(UBXCFG_INF_PART* infPart, int infPartCount)
  562. {
  563. int payloadSize = sizeof(UBXCFG_INF_PART)*infPartCount;
  564. UBXMsgBuffer buffer = createBuffer(payloadSize);
  565. UBXMsg* msg = (UBXMsg*)buffer.data;
  566. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_INF);
  567. memcpy(&(msg->payload.CFG_INF), infPart, infPartCount*sizeof(UBXCFG_INF_PART));
  568. completeMsg(&buffer, payloadSize);
  569. return buffer;
  570. }
  571. UBXMsgBuffer getCFG_ITFM_POLL()
  572. {
  573. int payloadSize = 0;
  574. UBXMsgBuffer buffer = createBuffer(payloadSize);
  575. UBXMsg* msg = (UBXMsg*)buffer.data;
  576. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ITFM);
  577. completeMsg(&buffer, payloadSize);
  578. return buffer;
  579. }
  580. UBXMsgBuffer getCFG_ITFM(UBXITFMConfig config,
  581. UBXITFMConfig2 config2)
  582. {
  583. int payloadSize = sizeof(UBXCFG_ITFM);
  584. UBXMsgBuffer buffer = createBuffer(payloadSize);
  585. UBXMsg* msg = (UBXMsg*)buffer.data;
  586. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ITFM);
  587. msg->payload.CFG_ITFM.config = config;
  588. msg->payload.CFG_ITFM.config2 = config2;
  589. completeMsg(&buffer, payloadSize);
  590. return buffer;
  591. }
  592. UBXMsgBuffer getCFG_LOGFILTER_POLL()
  593. {
  594. int payloadSize = 0;
  595. UBXMsgBuffer buffer = createBuffer(payloadSize);
  596. UBXMsg* msg = (UBXMsg*)buffer.data;
  597. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_LOGFILTER);
  598. completeMsg(&buffer, payloadSize);
  599. return buffer;
  600. }
  601. UBXMsgBuffer getCFG_LOGFILTER(UBXU1_t version,
  602. UBXX1_t flags,
  603. UBXU2_t minIterval,
  604. UBXU2_t timeThreshold,
  605. UBXU2_t speedThreshold,
  606. UBXU4_t positionThreshold)
  607. {
  608. int payloadSize = sizeof(UBXCFG_LOGFILTER);
  609. UBXMsgBuffer buffer = createBuffer(payloadSize);
  610. UBXMsg* msg = (UBXMsg*)buffer.data;
  611. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_LOGFILTER);
  612. msg->payload.CFG_LOGFILTER.version = version;
  613. msg->payload.CFG_LOGFILTER.flags = flags;
  614. msg->payload.CFG_LOGFILTER.minIterval = minIterval;
  615. msg->payload.CFG_LOGFILTER.timeThreshold = timeThreshold;
  616. msg->payload.CFG_LOGFILTER.speedThreshold = speedThreshold;
  617. msg->payload.CFG_LOGFILTER.positionThreshold = positionThreshold;
  618. completeMsg(&buffer, payloadSize);
  619. return buffer;
  620. }
  621. UBXMsgBuffer getCFG_NAV5_POLL()
  622. {
  623. int payloadSize = 0;
  624. UBXMsgBuffer buffer = createBuffer(payloadSize);
  625. UBXMsg* msg = (UBXMsg*)buffer.data;
  626. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAV5);
  627. completeMsg(&buffer, payloadSize);
  628. return buffer;
  629. }
  630. UBXMsgBuffer getCFG_NAV5(UBXX2_t mask,
  631. UBXNAV5Model dynModel,
  632. UBXNAV5FixMode fixMode,
  633. UBXI4_t fixedAlt,
  634. UBXU4_t fixedAltVar,
  635. UBXI1_t minElev,
  636. UBXU2_t pDop,
  637. UBXU2_t tDop,
  638. UBXU2_t pAcc,
  639. UBXU2_t tAcc,
  640. UBXU1_t staticHoldThresh,
  641. UBXU1_t dgpsTimeOut,
  642. UBXU1_t cnoThreshNumSVs,
  643. UBXU1_t cnoThresh)
  644. {
  645. int payloadSize = sizeof(UBXCFG_NAV5);
  646. UBXMsgBuffer buffer = createBuffer(payloadSize);
  647. UBXMsg* msg = (UBXMsg*)buffer.data;
  648. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAV5);
  649. msg->payload.CFG_NAV5.mask = mask;
  650. msg->payload.CFG_NAV5.dynModel = dynModel;
  651. msg->payload.CFG_NAV5.fixMode = fixMode;
  652. msg->payload.CFG_NAV5.fixedAlt = fixedAlt;
  653. msg->payload.CFG_NAV5.fixedAltVar = fixedAltVar;
  654. msg->payload.CFG_NAV5.minElev = minElev;
  655. msg->payload.CFG_NAV5.pDop = pDop;
  656. msg->payload.CFG_NAV5.tDop = tDop;
  657. msg->payload.CFG_NAV5.pAcc = pAcc;
  658. msg->payload.CFG_NAV5.tAcc = tAcc;
  659. msg->payload.CFG_NAV5.staticHoldThresh = staticHoldThresh;
  660. msg->payload.CFG_NAV5.dgpsTimeOut = dgpsTimeOut;
  661. msg->payload.CFG_NAV5.cnoThreshNumSVs = cnoThreshNumSVs;
  662. msg->payload.CFG_NAV5.cnoThresh = cnoThresh;
  663. msg->payload.CFG_NAV5.reserved2 = 0;
  664. msg->payload.CFG_NAV5.reserved3 = 0;
  665. msg->payload.CFG_NAV5.reserved4 = 0;
  666. completeMsg(&buffer, payloadSize);
  667. return buffer;
  668. }
  669. UBXMsgBuffer getCFG_NAVX5_POLL()
  670. {
  671. int payloadSize = 0;
  672. UBXMsgBuffer buffer = createBuffer(payloadSize);
  673. UBXMsg* msg = (UBXMsg*)buffer.data;
  674. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAVX5);
  675. completeMsg(&buffer, payloadSize);
  676. return buffer;
  677. }
  678. UBXMsgBuffer getCFG_NAVX5(UBXU2_t version,
  679. UBXX2_t mask1,
  680. UBXU1_t minSVs,
  681. UBXU1_t maxSVs,
  682. UBXU1_t minCNO,
  683. UBXU1_t iniFix3D,
  684. UBXU2_t wknRollover,
  685. UBXU1_t usePPP,
  686. UBXU1_t aopCFG,
  687. UBXU1_t aopOrbMaxErr)
  688. {
  689. int payloadSize = sizeof(UBXCFG_NAVX5);
  690. UBXMsgBuffer buffer = createBuffer(payloadSize);
  691. UBXMsg* msg = (UBXMsg*)buffer.data;
  692. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAVX5);
  693. msg->payload.CFG_NAVX5.version = version;
  694. msg->payload.CFG_NAVX5.mask1 = mask1;
  695. msg->payload.CFG_NAVX5.reserved0 = 0;
  696. msg->payload.CFG_NAVX5.reserved1 = 0;
  697. msg->payload.CFG_NAVX5.reserved2 = 0;
  698. msg->payload.CFG_NAVX5.minSVs = minSVs;
  699. msg->payload.CFG_NAVX5.maxSVs = maxSVs;
  700. msg->payload.CFG_NAVX5.minCNO = minCNO;
  701. msg->payload.CFG_NAVX5.reserved5 = 0;
  702. msg->payload.CFG_NAVX5.iniFix3D = iniFix3D;
  703. msg->payload.CFG_NAVX5.reserved6 = 0;
  704. msg->payload.CFG_NAVX5.reserved7 = 0;
  705. msg->payload.CFG_NAVX5.reserved8 = 0;
  706. msg->payload.CFG_NAVX5.wknRollover = wknRollover;
  707. msg->payload.CFG_NAVX5.reserved9 = 0;
  708. msg->payload.CFG_NAVX5.reserved10 = 0;
  709. msg->payload.CFG_NAVX5.reserved11 = 0;
  710. msg->payload.CFG_NAVX5.usePPP = usePPP;
  711. msg->payload.CFG_NAVX5.aopCFG = aopCFG;
  712. msg->payload.CFG_NAVX5.reserved12 = 0;
  713. msg->payload.CFG_NAVX5.reserved13 = 0;
  714. msg->payload.CFG_NAVX5.aopOrbMaxErr = aopOrbMaxErr;
  715. msg->payload.CFG_NAVX5.reserved14 = 0;
  716. msg->payload.CFG_NAVX5.reserved15 = 0;
  717. msg->payload.CFG_NAVX5.reserved3 = 0;
  718. msg->payload.CFG_NAVX5.reserved4 = 0;
  719. completeMsg(&buffer, payloadSize);
  720. return buffer;
  721. }
  722. UBXMsgBuffer getCFG_NMEA_POLL()
  723. {
  724. int payloadSize = 0;
  725. UBXMsgBuffer buffer = createBuffer(payloadSize);
  726. UBXMsg* msg = (UBXMsg*)buffer.data;
  727. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NMEA);
  728. completeMsg(&buffer, payloadSize);
  729. return buffer;
  730. }
  731. UBXMsgBuffer getCFG_NMEA(UBXX1_t filter,
  732. UBXU1_t nmeaVersion,
  733. UBXU1_t numSV,
  734. UBXX1_t flags,
  735. UBXX4_t gnssToFilter,
  736. UBXNMEASVNumbering svNumbering,
  737. UBXNMEATalkerIds mainTalkerId,
  738. UBXNMEAGSVTalkerIds gsvTalkerId)
  739. {
  740. int payloadSize = sizeof(UBXCFG_NMEA);
  741. UBXMsgBuffer buffer = createBuffer(payloadSize);
  742. UBXMsg* msg = (UBXMsg*)buffer.data;
  743. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NMEA);
  744. msg->payload.CFG_NMEA.filter = filter;
  745. msg->payload.CFG_NMEA.nmeaVersion = nmeaVersion;
  746. msg->payload.CFG_NMEA.numSV = numSV;
  747. msg->payload.CFG_NMEA.flags = flags;
  748. msg->payload.CFG_NMEA.gnssToFilter = gnssToFilter;
  749. msg->payload.CFG_NMEA.svNumbering = svNumbering;
  750. msg->payload.CFG_NMEA.mainTalkerId = mainTalkerId;
  751. msg->payload.CFG_NMEA.gsvTalkerId = gsvTalkerId;
  752. msg->payload.CFG_NMEA.reserved = 0;
  753. completeMsg(&buffer, payloadSize);
  754. return buffer;
  755. }
  756. UBXMsgBuffer getCFG_NVS(UBXX4_t clearMask,
  757. UBXX4_t saveMask,
  758. UBXX4_t loadMask,
  759. UBXX1_t deviceMask)
  760. {
  761. int payloadSize = sizeof(UBXCFG_NVS);
  762. UBXMsgBuffer buffer = createBuffer(payloadSize);
  763. UBXMsg* msg = (UBXMsg*)buffer.data;
  764. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NVS);
  765. msg->payload.CFG_NVS.clearMask = clearMask;
  766. msg->payload.CFG_NVS.saveMask = saveMask;
  767. msg->payload.CFG_NVS.loadMask = loadMask;
  768. msg->payload.CFG_NVS.deviceMask = deviceMask;
  769. completeMsg(&buffer, payloadSize);
  770. return buffer;
  771. }
  772. UBXMsgBuffer getCFG_PM2_POLL()
  773. {
  774. int payloadSize = 0;
  775. UBXMsgBuffer buffer = createBuffer(payloadSize);
  776. UBXMsg* msg = (UBXMsg*)buffer.data;
  777. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PM2);
  778. completeMsg(&buffer, payloadSize);
  779. return buffer;
  780. }
  781. UBXMsgBuffer getCFG_PM2(UBXCFG_PM2Flags flags, UBXU4_t updatePeriod, UBXU4_t searchPeriod, UBXU4_t gridOffset, UBXU2_t onTime, UBXU2_t minAcqTime)
  782. {
  783. int payloadSize = sizeof(UBXCFG_PM2);
  784. UBXMsgBuffer buffer = createBuffer(payloadSize);
  785. UBXMsg* msg = (UBXMsg*)buffer.data;
  786. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PM2);
  787. msg->payload.CFG_PM2.flags = flags;
  788. msg->payload.CFG_PM2.updatePeriod = updatePeriod;
  789. msg->payload.CFG_PM2.searchPeriod = searchPeriod;
  790. msg->payload.CFG_PM2.gridOffset = gridOffset;
  791. msg->payload.CFG_PM2.onTime = onTime;
  792. msg->payload.CFG_PM2.minAcqTime = minAcqTime;
  793. completeMsg(&buffer, payloadSize);
  794. return buffer;
  795. }
  796. UBXMsgBuffer getCFG_PRT_POLL()
  797. {
  798. int payloadSize = 0;
  799. UBXMsgBuffer buffer = createBuffer(payloadSize);
  800. UBXMsg* msg = (UBXMsg*)buffer.data;
  801. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PRT);
  802. completeMsg(&buffer, payloadSize);
  803. return buffer;
  804. }
  805. UBXMsgBuffer getCFG_PRT_POLL_OPT(UBXU1_t portId)
  806. {
  807. int payloadSize = sizeof(UBXCFG_PRT_POLL_OPT);
  808. UBXMsgBuffer buffer = createBuffer(payloadSize);
  809. UBXMsg* msg = (UBXMsg*)buffer.data;
  810. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PRT);
  811. msg->payload.CFG_PRT_POLL_OPT.portId = portId;
  812. completeMsg(&buffer, payloadSize);
  813. return buffer;
  814. }
  815. UBXMsgBuffer getCFG_PRT_UART()
  816. {
  817. //TODO
  818. UBXMsgBuffer buffer = createBuffer(0);
  819. return buffer;
  820. }
  821. UBXMsgBuffer getCFG_PRT_USB()
  822. {
  823. //TODO
  824. UBXMsgBuffer buffer = createBuffer(0);
  825. return buffer;
  826. }
  827. UBXMsgBuffer getCFG_PRT_SPI()
  828. {
  829. //TODO
  830. UBXMsgBuffer buffer = createBuffer(0);
  831. return buffer;
  832. }
  833. UBXMsgBuffer getCFG_PRT_DDC()
  834. {
  835. //TODO
  836. UBXMsgBuffer buffer = createBuffer(0);
  837. return buffer;
  838. }
  839. UBXMsgBuffer getCFG_RATE_POLL()
  840. {
  841. int payloadSize = 0;
  842. UBXMsgBuffer buffer = createBuffer(payloadSize);
  843. UBXMsg* msg = (UBXMsg*)buffer.data;
  844. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RATE);
  845. completeMsg(&buffer, payloadSize);
  846. return buffer;
  847. }
  848. UBXMsgBuffer getCFG_RATE(UBXU2_t measRate, UBXU2_t navRate, UBXU2_t timeRef)
  849. {
  850. int payloadSize = sizeof(UBXCFG_RATE);
  851. UBXMsgBuffer buffer = createBuffer(payloadSize);
  852. UBXMsg* msg = (UBXMsg*)buffer.data;
  853. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RATE);
  854. msg->payload.CFG_RATE.measRate = measRate;
  855. msg->payload.CFG_RATE.navRate = navRate;
  856. msg->payload.CFG_RATE.timeRef = timeRef;
  857. completeMsg(&buffer, payloadSize);
  858. return buffer;
  859. }
  860. UBXMsgBuffer getCFG_RINV(UBXX1_t flags, UBXU1_t* data, int dataSize)
  861. {
  862. int payloadSize = sizeof(UBXCFG_RINV) + dataSize*sizeof(UBXU1_t);
  863. UBXMsgBuffer buffer = createBuffer(payloadSize);
  864. UBXMsg* msg = (UBXMsg*)buffer.data;
  865. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RINV);
  866. msg->payload.CFG_RINV.flags = flags;
  867. memcpy(((char*)&(msg->payload.CFG_RINV)) + sizeof(UBXCFG_RINV), data, dataSize*sizeof(UBXU1_t));
  868. completeMsg(&buffer, payloadSize);
  869. return buffer;
  870. }
  871. UBXMsgBuffer getCFG_RINV_POLL()
  872. {
  873. int payloadSize = 0;
  874. UBXMsgBuffer buffer = createBuffer(payloadSize);
  875. UBXMsg* msg = (UBXMsg*)buffer.data;
  876. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RINV);
  877. completeMsg(&buffer, payloadSize);
  878. return buffer;
  879. }
  880. UBXMsgBuffer getCFG_RXM(UBXU1_t lpMode)
  881. {
  882. int payloadSize = sizeof(UBXCFG_RXM);
  883. UBXMsgBuffer buffer = createBuffer(payloadSize);
  884. UBXMsg* msg = (UBXMsg*)buffer.data;
  885. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RXM);
  886. msg->payload.CFG_RXM.reserved1 = 8;
  887. msg->payload.CFG_RXM.lpMode = lpMode;
  888. completeMsg(&buffer, payloadSize);
  889. return buffer;
  890. }
  891. UBXMsgBuffer getCFG_RXM_POLL()
  892. {
  893. int payloadSize = 0;
  894. UBXMsgBuffer buffer = createBuffer(payloadSize);
  895. UBXMsg* msg = (UBXMsg*)buffer.data;
  896. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RXM);
  897. completeMsg(&buffer, payloadSize);
  898. return buffer;
  899. }
  900. UBXMsgBuffer getCFG_SBAS(UBXX1_t mode, UBXX1_t usage, UBXU1_t maxSBAS, UBXX1_t scanmode2, UBXX4_t scanmode1)
  901. {
  902. int payloadSize = sizeof(UBXCFG_SBAS);
  903. UBXMsgBuffer buffer = createBuffer(payloadSize);
  904. UBXMsg* msg = (UBXMsg*)buffer.data;
  905. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_SBAS);
  906. msg->payload.CFG_SBAS.mode = mode;
  907. msg->payload.CFG_SBAS.usage = usage;
  908. msg->payload.CFG_SBAS.maxSBAS = maxSBAS;
  909. msg->payload.CFG_SBAS.scanmode2 = scanmode2;
  910. msg->payload.CFG_SBAS.scanmode1 = scanmode1;
  911. completeMsg(&buffer, payloadSize);
  912. return buffer;
  913. }
  914. UBXMsgBuffer getCFG_SBAS_POLL()
  915. {
  916. int payloadSize = 0;
  917. UBXMsgBuffer buffer = createBuffer(payloadSize);
  918. UBXMsg* msg = (UBXMsg*)buffer.data;
  919. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_SBAS);
  920. completeMsg(&buffer, payloadSize);
  921. return buffer;
  922. }
  923. UBXMsgBuffer getCFG_TP5_POLL()
  924. {
  925. int payloadSize = 0;
  926. UBXMsgBuffer buffer = createBuffer(payloadSize);
  927. UBXMsg* msg = (UBXMsg*)buffer.data;
  928. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_TP5);
  929. completeMsg(&buffer, payloadSize);
  930. return buffer;
  931. }
  932. UBXMsgBuffer getCFG_USB_POLL()
  933. {
  934. int payloadSize = 0;
  935. UBXMsgBuffer buffer = createBuffer(payloadSize);
  936. UBXMsg* msg = (UBXMsg*)buffer.data;
  937. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_USB);
  938. completeMsg(&buffer, payloadSize);
  939. return buffer;
  940. }
  941. UBXMsgBuffer getCFG_USB(UBXU2_t vendorId,
  942. UBXU2_t productId,
  943. UBXU2_t powerConsumption,
  944. UBXX2_t flags,
  945. UBXCH_t* vendorString,
  946. UBXCH_t* productString,
  947. UBXCH_t* serialNumber)
  948. {
  949. int payloadSize = sizeof(UBXCFG_USB);
  950. UBXMsgBuffer buffer = createBuffer(payloadSize);
  951. UBXMsg* msg = (UBXMsg*)buffer.data;
  952. int vendorStringSize = 0;
  953. int productStringSize = 0;
  954. int serialNumberSize = 0;
  955. initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_USB);
  956. msg->payload.CFG_USB.vendorId = vendorId;
  957. msg->payload.CFG_USB.productId = productId;
  958. msg->payload.CFG_USB.reserved1 = 0;
  959. msg->payload.CFG_USB.reserved2 = 1;
  960. msg->payload.CFG_USB.powerConsumption = powerConsumption;
  961. msg->payload.CFG_USB.flags = flags;
  962. vendorStringSize = strlen(vendorString)>32?32:strlen(vendorString);
  963. memcpy(msg->payload.CFG_USB.vendorString, vendorString, vendorStringSize);
  964. productStringSize = strlen(productString)>32?32:strlen(productString);
  965. memcpy(msg->payload.CFG_USB.productString, productString, productStringSize);
  966. serialNumberSize = strlen(serialNumber)>32?32:strlen(serialNumber);
  967. memcpy(msg->payload.CFG_USB.serialNumber, serialNumber, serialNumberSize);
  968. completeMsg(&buffer, payloadSize);
  969. return buffer;
  970. }
  971. UBXMsgBuffer getLOG_CREATE(UBXX1_t logCfg, UBXU1_t logSize, UBXU4_t userDefinedSize)
  972. {
  973. int payloadSize = sizeof(UBXLOG_CREATE);
  974. UBXMsgBuffer buffer = createBuffer(payloadSize);
  975. UBXMsg* msg = (UBXMsg*)buffer.data;
  976. initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_CREATE);
  977. msg->payload.LOG_CREATE.version = 0;
  978. msg->payload.LOG_CREATE.logCfg = logCfg;
  979. msg->payload.LOG_CREATE.reserved = 0;
  980. msg->payload.LOG_CREATE.logSize = logSize;
  981. msg->payload.LOG_CREATE.userDefinedSize = userDefinedSize;
  982. completeMsg(&buffer, payloadSize);
  983. return buffer;
  984. }
  985. UBXMsgBuffer getLOG_ERASE()
  986. {
  987. int payloadSize = 0;
  988. UBXMsgBuffer buffer = createBuffer(payloadSize);
  989. UBXMsg* msg = (UBXMsg*)buffer.data;
  990. initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_ERASE);
  991. completeMsg(&buffer, payloadSize);
  992. return buffer;
  993. }
  994. UBXMsgBuffer getLOG_FINDTIME_IN(UBXU2_t year, UBXU1_t month, UBXU1_t day, UBXU1_t hour, UBXU1_t minute, UBXU1_t second)
  995. {
  996. int payloadSize = sizeof(UBXLOG_FINDTIME_IN);
  997. UBXMsgBuffer buffer = createBuffer(payloadSize);
  998. UBXMsg* msg = (UBXMsg*)buffer.data;
  999. initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_FINDTIME);
  1000. msg->payload.LOG_FINDTIME_IN.version = 0;
  1001. msg->payload.LOG_FINDTIME_IN.type = 0;
  1002. msg->payload.LOG_FINDTIME_IN.year = year;
  1003. msg->payload.LOG_FINDTIME_IN.month = month;
  1004. msg->payload.LOG_FINDTIME_IN.day = day;
  1005. msg->payload.LOG_FINDTIME_IN.hour = hour;
  1006. msg->payload.LOG_FINDTIME_IN.minute = minute;
  1007. msg->payload.LOG_FINDTIME_IN.second = second;
  1008. completeMsg(&buffer, payloadSize);
  1009. return buffer;
  1010. }
  1011. UBXMsgBuffer getLOG_INFO_POLL()
  1012. {
  1013. int payloadSize = 0;
  1014. UBXMsgBuffer buffer = createBuffer(payloadSize);
  1015. UBXMsg* msg = (UBXMsg*)buffer.data;
  1016. initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_INFO);
  1017. completeMsg(&buffer, payloadSize);
  1018. return buffer;
  1019. }
  1020. UBXMsgBuffer getLOG_RETRIEVE(UBXU4_t startNumber,
  1021. UBXU4_t entryCount,
  1022. UBXU1_t version)
  1023. {
  1024. int payloadSize = sizeof(UBXLOG_RETRIEVE);
  1025. UBXMsgBuffer buffer = createBuffer(payloadSize);
  1026. UBXMsg* msg = (UBXMsg*)buffer.data;
  1027. initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_RETRIEVE);
  1028. msg->payload.LOG_RETRIEVE.startNumber = startNumber;
  1029. msg->payload.LOG_RETRIEVE.entryCount = entryCount;
  1030. msg->payload.LOG_RETRIEVE.version = version;
  1031. completeMsg(&buffer, payloadSize);
  1032. return buffer;
  1033. }
  1034. UBXMsgBuffer getLOG_STRING(UBXCH_t* str)
  1035. {
  1036. int payloadSize = strlen(str);
  1037. UBXMsgBuffer buffer = createBuffer(payloadSize);
  1038. UBXMsg* msg = (UBXMsg*)buffer.data;
  1039. initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_STRING);
  1040. memcpy(&(msg->payload.LOG_STRING), str, payloadSize);
  1041. completeMsg(&buffer, payloadSize);
  1042. return buffer;
  1043. }
  1044. UBXMsgBuffer getMON_VER_POLL()
  1045. {
  1046. int payloadSize = 0;
  1047. UBXMsgBuffer buffer = createBuffer(payloadSize);
  1048. UBXMsg* msg = (UBXMsg*)buffer.data;
  1049. initMsg(msg, payloadSize, UBXMsgClassMON, UBXMsgIdMON_VER);
  1050. completeMsg(&buffer, payloadSize);
  1051. return buffer;
  1052. }
  1053. UBXMsgBuffer getRXM_ALM_POLL()
  1054. {
  1055. int payloadSize = 0;
  1056. UBXMsgBuffer buffer = createBuffer(payloadSize);
  1057. UBXMsg* msg = (UBXMsg*)buffer.data;
  1058. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_ALM);
  1059. completeMsg(&buffer, payloadSize);
  1060. return buffer;
  1061. }
  1062. UBXMsgBuffer getRXM_ALM_POLL_OPT(UBXU1_t svid)
  1063. {
  1064. int payloadSize = sizeof(UBXRXM_ALM_POLL_OPT);
  1065. UBXMsgBuffer buffer = createBuffer(payloadSize);
  1066. UBXMsg* msg = (UBXMsg*)buffer.data;
  1067. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_ALM);
  1068. msg->payload.RXM_ALM_POLL_OPT.svid = svid;
  1069. completeMsg(&buffer, payloadSize);
  1070. return buffer;
  1071. }
  1072. UBXMsgBuffer getRXM_EPH_POLL()
  1073. {
  1074. int payloadSize = 0;
  1075. UBXMsgBuffer buffer = createBuffer(payloadSize);
  1076. UBXMsg* msg = (UBXMsg*)buffer.data;
  1077. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_EPH);
  1078. completeMsg(&buffer, payloadSize);
  1079. return buffer;
  1080. }
  1081. UBXMsgBuffer getRXM_EPH_POLL_OPT(UBXU1_t svid)
  1082. {
  1083. int payloadSize = sizeof(UBXRXM_EPH_POLL_OPT);
  1084. UBXMsgBuffer buffer = createBuffer(payloadSize);
  1085. UBXMsg* msg = (UBXMsg*)buffer.data;
  1086. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_ALM);
  1087. msg->payload.RXM_ALM_POLL_OPT.svid = svid;
  1088. completeMsg(&buffer, payloadSize);
  1089. return buffer;
  1090. }
  1091. UBXMsgBuffer getRXM_PMREQ(UBXU4_t duration, UBXX4_t flags)
  1092. {
  1093. int payloadSize = sizeof(UBXRXM_PMREQ);
  1094. UBXMsgBuffer buffer = createBuffer(payloadSize);
  1095. UBXMsg* msg = (UBXMsg*)buffer.data;
  1096. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_PMREQ);
  1097. msg->payload.RXM_PMREQ.duration = duration;
  1098. msg->payload.RXM_PMREQ.flags = flags;
  1099. completeMsg(&buffer, payloadSize);
  1100. return buffer;
  1101. }
  1102. UBXMsgBuffer getRXM_SVSI(UBXU4_t iTOW,
  1103. UBXI2_t week,
  1104. UBXU1_t numVis,
  1105. UBXU1_t numSV,
  1106. UBXRXM_SVSI_PART* svsiPart,
  1107. int svsiPartCount)
  1108. {
  1109. int payloadSize = sizeof(UBXRXM_SVSI) + svsiPartCount*sizeof(UBXRXM_SVSI_PART);
  1110. UBXMsgBuffer buffer = createBuffer(payloadSize);
  1111. UBXMsg* msg = (UBXMsg*)buffer.data;
  1112. initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_SVSI);
  1113. msg->payload.RXM_SVSI.iTOW = iTOW;
  1114. msg->payload.RXM_SVSI.week = week;
  1115. msg->payload.RXM_SVSI.numVis = numVis;
  1116. msg->payload.RXM_SVSI.numSV = numSV;
  1117. memcpy(((char*)&(msg->payload.RXM_SVSI)) + sizeof(UBXRXM_SVSI), svsiPart, svsiPartCount*sizeof(UBXRXM_SVSI_PART));
  1118. completeMsg(&buffer, payloadSize);
  1119. return buffer;
  1120. }
  1121. /*!
  1122. * \defgroup Functions
  1123. */
  1124. /*!
  1125. * \defgroup Enumerations
  1126. */
  1127. /*!
  1128. * \defgroup Types
  1129. */
  1130. /*! \addtogroup Enumerations
  1131. * @{
  1132. */
  1133. /*!
  1134. * \enum UBXMessageClass
  1135. * \brief UBXMessageClass is a grouping of messages which are related to each other.
  1136. * The following table lists all the current message classes.
  1137. * \var UBXMsgClassNAV
  1138. * Navigation Results: Position, Speed, Time, Acc, Heading, DOP, SVs used
  1139. * \var UBXMsgClassRXM
  1140. * Receiver Manager Messages: Satellite Status, RTC Status
  1141. * \var UBXMsgClassINF
  1142. * Information Messages: Printf-Style Messages, with IDs such as Error, Warning, Notice
  1143. * \var UBXMsgClassACK
  1144. * Ack/Nack Messages: as replies to CFG Input Messages
  1145. * \var UBXMsgClassCFG
  1146. * Configuration Input Messages: Set Dynamic Model, Set DOP Mask, Set Baud Rate, etc.
  1147. * \var UBXMsgClassMON
  1148. * Monitoring Messages: Comunication Status, CPU Load, Stack Usage, Task Status
  1149. * \var UBXMsgClassAID
  1150. * AssistNow Aiding Messages: Ephemeris, Almanac, other A-GPS data input
  1151. * \var UBXMsgClassTIM
  1152. * Timing Messages: Time Pulse Output, Timemark Results
  1153. * \var UBXMsgClassLOG
  1154. * Logging Messages: Log creation, deletion, info and retrieval
  1155. * \var UBXMsgClassInvalid
  1156. * Default invalid message class
  1157. */
  1158. /*!
  1159. * \enum UBXMessageId
  1160. * \brief UBXMessageId is a type of messages
  1161. * \var UBXMsgIdACK_NACK
  1162. * Message Acknowledged
  1163. * \var UBXMsgIdACK_ACK
  1164. * Message Not-Acknowledged
  1165. *
  1166. * \var UBXMsgIdAID_ALM
  1167. * GPS Aiding Almanac Data
  1168. * \var UBXMsgIdAID_ALPSRV
  1169. * AlmanacPlus data
  1170. * \var UBXMsgIdAID_ALP
  1171. * ALP file data transfer
  1172. * \var UBXMsgIdAID_AOP
  1173. * AssistNow Autonomous data
  1174. * \var UBXMsgIdAID_DATA
  1175. * GPS Initial Aiding Data
  1176. * \var UBXMsgIdAID_EPH
  1177. * GPS Aiding Ephemeris Data
  1178. * \var UBXMsgIdAID_HUI
  1179. * GPS Health, UTC and ionosphere parameters
  1180. * \var UBXMsgIdAID_INI
  1181. * Aiding position, time, frequency, clock drift
  1182. * \var UBXMsgIdAID_REQ
  1183. * Sends a poll (AID-DATA) for all GPS Aiding Data
  1184. *
  1185. * \var UBXMsgIdCFG_ANT
  1186. * Antenna Control Settings
  1187. * \var UBXMsgIdCFG_CFG
  1188. * Clear, Save and Load configurations
  1189. * \var UBXMsgIdCFG_DAT
  1190. * Datum Setting
  1191. * \var UBXMsgIdCFG_GNSS
  1192. * GNSS system configuration
  1193. * \var UBXMsgIdCFG_INF
  1194. * Information message configuration
  1195. * \var UBXMsgIdCFG_ITFM
  1196. * Jamming/Interference Monitor configuration.
  1197. * \var UBXMsgIdCFG_LOGFILTER
  1198. * Data Logger Configuration
  1199. * \var UBXMsgIdCFG_MSG
  1200. * Message Configuration
  1201. * \var UBXMsgIdCFG_NAV5
  1202. * Navigation Engine Settings
  1203. * \var UBXMsgIdCFG_NAVX5
  1204. * Navigation Engine Expert Settings
  1205. * \var UBXMsgIdCFG_NMEA
  1206. * NMEA protocol configuration
  1207. * \var UBXMsgIdCFG_NVS
  1208. * Clear, Save and Load non-volatile storage data
  1209. * \var UBXMsgIdCFG_PM2
  1210. * Extended Power Management configuration
  1211. * \var UBXMsgIdCFG_PRT
  1212. * Ports Configuration
  1213. * \var UBXMsgIdCFG_RATE
  1214. * Navigation/Measurement Rate Settings
  1215. * \var UBXMsgIdCFG_RINV
  1216. * Contents of Remote Inventory
  1217. * \var UBXMsgIdCFG_RST
  1218. * Reset Receiver / Clear Backup Data Structures
  1219. * \var UBXMsgIdCFG_RXM
  1220. * RXM configuration
  1221. * \var UBXMsgIdCFG_SBAS
  1222. * SBAS Configuration
  1223. * \var UBXMsgIdCFG_TP5
  1224. * Time Pulse Parameters
  1225. * \var UBXMsgIdCFG_USB
  1226. * USB Configuration
  1227. *
  1228. * \var UBXMsgIdINF_DEBUG
  1229. * ASCII String output, indicating debug output
  1230. * \var UBXMsgIdINF_ERROR
  1231. * ASCII String output, indicating an error
  1232. * \var UBXMsgIdINF_NOTICE
  1233. * ASCII String output, with informational contents
  1234. * \var UBXMsgIdINF_TEST
  1235. * ASCII String output, indicating test output
  1236. * \var UBXMsgIdINF_WARNING
  1237. * ASCII String output, indicating a warning
  1238. *
  1239. * \var UBXMsgIdLOG_CREATE
  1240. * Create Log File
  1241. * \var UBXMsgIdLOG_ERASE
  1242. * Erase Logged Data
  1243. * \var UBXMsgIdLOG_FINDTIME
  1244. * Find the index of the first log entry <= given time
  1245. * \var UBXMsgIdLOG_INFO
  1246. * Log information
  1247. * \var UBXMsgIdLOG_RETRIEVEPOS
  1248. * Position fix log entry
  1249. * \var UBXMsgIdLOG_RETRIEVESTRING
  1250. * Byte string log entry
  1251. * \var UBXMsgIdLOG_RETRIEVE
  1252. * Request log data
  1253. * \var UBXMsgIdLOG_STRING
  1254. * Store arbitrary string in on-board Flash memory
  1255. *
  1256. * \var UBXMsgIdMON_HW2
  1257. * Extended Hardware Status
  1258. * \var UBXMsgIdMON_HW
  1259. * Hardware Status
  1260. * \var UBXMsgIdMON_IO
  1261. * I/O Subsystem Status
  1262. * \var UBXMsgIdMON_MSGPP
  1263. * Message Parse and Process Status
  1264. * \var UBXMsgIdMON_RXBUF
  1265. * Receiver Buffer Status
  1266. * \var UBXMsgIdMON_RXR
  1267. * Receiver Status Information
  1268. * \var UBXMsgIdMON_TXBUF
  1269. * Transmitter Buffer Status
  1270. * \var UBXMsgIdMON_VER
  1271. * Receiver/Software Version
  1272. *
  1273. * \var UBXMsgIdNAV_AOPSTATUS
  1274. * AssistNow Autonomous Status
  1275. * \var UBXMsgIdNAV_CLOCK
  1276. * Clock Solution
  1277. * \var UBXMsgIdNAV_DGPS
  1278. * DGPS Data Used for NAV
  1279. * \var UBXMsgIdNAV_DOP
  1280. * Dilution of precision
  1281. * \var UBXMsgIdNAV_POSECEF
  1282. * Position Solution in ECEF
  1283. * \var UBXMsgIdNAV_POSLLH
  1284. * Geodetic Position Solution
  1285. * \var UBXMsgIdNAV_PVT
  1286. * Navigation Position Velocity Time Solution
  1287. * \var UBXMsgIdNAV_SBAS
  1288. * SBAS Status Data
  1289. * \var UBXMsgIdNAV_SOL
  1290. * Navigation Solution Information
  1291. * \var UBXMsgIdNAV_STATUS
  1292. * Receiver Navigation Status
  1293. * \var UBXMsgIdNAV_SVINFO
  1294. * Space Vehicle Information
  1295. * \var UBXMsgIdNAV_TIMEGPS
  1296. * GPS Time Solution
  1297. * \var UBXMsgIdNAV_TIMEUTC
  1298. * UTC Time Solution
  1299. * \var UBXMsgIdNAV_VELECEF
  1300. * Velocity Solution in ECEF
  1301. * \var UBXMsgIdNAV_VELNED
  1302. * Velocity Solution in NED
  1303. *
  1304. * \var UBXMsgIdRXM_ALM
  1305. * GPS Constellation Almanac Data
  1306. * \var UBXMsgIdRXM_EPH
  1307. * GPS Constellation Ephemeris Data
  1308. * \var UBXMsgIdRXM_PMREQ
  1309. * Requests a Power Management task
  1310. * \var UBXMsgIdRXM_RAW
  1311. * Raw Measurement Data
  1312. * \var UBXMsgIdRXM_SFRB
  1313. * Subframe Buffer
  1314. * \var UBXMsgIdRXM_SVSI
  1315. * SV Status Info
  1316. *
  1317. * \var UBXMsgIdTIM_TM2
  1318. * Time mark data
  1319. * \var UBXMsgIdTIM_TP
  1320. * Time Pulse Timedata
  1321. * \var UBXMsgIdTIM_VRFY
  1322. * Sourced Time Verification
  1323. *
  1324. * \var UBXMsgIdInvalid
  1325. * Default invalid message identificator
  1326. */
  1327. /*!
  1328. * \enum UBXResetMode
  1329. * \brief UBXResetMode describes possible reset modes
  1330. * for #UBXCFG_RST message.
  1331. * \var UBXHardwareReset
  1332. * Hardware reset (Watchdog) immediately
  1333. * \var UBXControlledReset
  1334. * Controlled Software reset
  1335. * \var UBXControlledResetGNSSOnly
  1336. * Controlled Software reset (GNSS only)
  1337. * \var UBXHardwareResetAfterShutdown
  1338. * Hardware reset (Watchdog) after
  1339. * \var UBXControlledGNSSStop
  1340. * Controlled GNSS stop
  1341. * \var UBXControlledGNSSStart
  1342. * Controlled GNSS start
  1343. */
  1344. /*!
  1345. * \enum UBXBBRSpecialSets
  1346. * \brief UBXBBRSpecialSets implements special sets for
  1347. * #UBXCFG_RST message.
  1348. * \var UBXBBRHotstart
  1349. * Hotstart
  1350. * \var UBXBBRWarmstart
  1351. * Warmstart
  1352. * \var UBXBBRColdstart
  1353. * Coldstart
  1354. */
  1355. /*!
  1356. * \enum UBXBBRMask
  1357. * \brief UBXBBRMask implements members for BBR(built-in battery-backed RAM) bitmask
  1358. * for #UBXCFG_RST message.
  1359. * \var UBXBBReph
  1360. * Ephemeris
  1361. * \var UBXBBRalm
  1362. * Almanac
  1363. * \var UBXBBRhealth
  1364. * Health
  1365. * \var UBXBBRklob
  1366. * Klobuchar parameters
  1367. * \var UBXBBRpos
  1368. * Position
  1369. * \var UBXBBRclkd
  1370. * Clock Drift
  1371. * \var UBXBBRosc
  1372. * Oscillator Parameter
  1373. * \var UBXBBRutc
  1374. * UTC Correction + GPS Leap Seconds Parameters
  1375. * \var UBXBBRrtc
  1376. * RTC
  1377. * \var UBXBBRsfdr
  1378. * SFDR Parameters
  1379. * \var UBXBBRvmon
  1380. * SFDR Vehicle Monitoring Parameters
  1381. * \var UBXBBRtct
  1382. * TCT Parameters
  1383. * \var UBXBBRaop
  1384. * Autonomous Orbit Parameters
  1385. */
  1386. /*!
  1387. * \enum UBXHUIFlags
  1388. * \brief UBXHUIFlags implements HUI flags bitmask
  1389. * for #UBXAID_HUI message.
  1390. * \var UBXHUIHealthValid
  1391. * Healthmask field in this message is valid
  1392. * \var UBXHUIUTCValid
  1393. * UTC parameter fields in this message are valid
  1394. * \var UBXHUIKlobValid
  1395. * Klobuchar parameter fields in this message are valid
  1396. */
  1397. /*!
  1398. * \enum UBXINItmCfg
  1399. * \brief UBXINItmCfg implements Time mark configuration bitmask
  1400. * for #UBXAID_INI message.
  1401. * \var UBXINIfEdge
  1402. * Use falling edge (default rising)
  1403. * \var UBXINItm1
  1404. * Time mark on extint 1 (default extint 0)
  1405. * \var UBXINIf1
  1406. * Frequency on extint 1 (default extint 0)
  1407. */
  1408. /*!
  1409. * \enum UBXINIFlags
  1410. * \brief UBXINIFlags implements INI flags bitmask
  1411. * for #UBXAID_INI message.
  1412. * \var UBXINIpos
  1413. * Position is valid
  1414. * \var UBXINItime
  1415. * Time is valid
  1416. * \var UBXINIclockD
  1417. * Clock drift data contains valid clock drift, must not be set together with clockF
  1418. * \var UBXINItp
  1419. * Use time pulse
  1420. * \var UBXINIclockF
  1421. * Clock drift data contains valid frequency, must not be set together with clockD
  1422. * \var UBXINIlla
  1423. * Position is given in lat/long/alt (default is ECEF)
  1424. * \var UBXINIaltInv
  1425. * Altitude is not valid, in case lla was set
  1426. * \var UBXINIprevTm
  1427. * Use time mark received before AID-INI message (default uses mark received after message)
  1428. * \var UBXINIutc
  1429. * Time is given as UTC date/time (default is GPS wno/tow)
  1430. */
  1431. /*!
  1432. * \enum UBXANTFlags
  1433. * \brief UBXANTFlags implements ANT flags bitmask
  1434. * for #UBXCFG_ANT message.
  1435. * \var UBXANTsvcs
  1436. * Enable Antenna Supply Voltage Control Signal
  1437. * \var UBXANTscd
  1438. * Enable Short Circuit Detection
  1439. * \var UBXANTocd
  1440. * Enable Open Circuit Detection
  1441. * \var UBXANTpdwnOnSCD
  1442. * Power Down Antenna supply if Short Circuit is detected. (only in combination with Bit 1)
  1443. * \var UBXANTrecovery
  1444. * Enable automatic recovery from short state
  1445. */
  1446. /*!
  1447. * \enum UBXCFGMask
  1448. * \brief UBXCFGMask implements CFG flags bitmask
  1449. * for #UBXCFG_CFG message and #UBXCFG_NVS.
  1450. * \var UBXCFGioPort
  1451. * Port Settings\n
  1452. * \note #UBXCFG_CFG only
  1453. * \var UBXCFGmsgConf
  1454. * Message Configuration\n
  1455. * \note#UBXCFG_CFG only
  1456. * \var UBXCFGinfMsg
  1457. * INF Message Configuration\n
  1458. * \note#UBXCFG_CFG only
  1459. * \var UBXCFGnavConf
  1460. * Navigation Configuration\n
  1461. * \note#UBXCFG_CFG only
  1462. * \var UBXCFGrxmConf
  1463. * Receiver Manager Configuration\n
  1464. * \note#UBXCFG_CFG only
  1465. * \var UBXCFGrinvConf
  1466. * Remote Inventory Configuration\n
  1467. * \note#UBXCFG_CFG only
  1468. * \var UBXCFGantConf
  1469. * Antenna Configuration\n
  1470. * \note#UBXCFG_CFG only
  1471. * \var UBXCFGalm
  1472. * GPS Almanac data\n
  1473. * \note#UBXCFG_NVS only
  1474. * \var UBXCFGaopConf
  1475. * AOP data\n
  1476. * \note#UBXCFG_NVS only
  1477. */
  1478. /*!
  1479. * \enum UBXCFGMask
  1480. * \brief UBXCFGMask implements CFG flags bitmask
  1481. * for #UBXCFG_CFG message and #UBXCFG_NVS.
  1482. * Mask selects the devices for #UBXCFG_CFG
  1483. * and #UBXCFG_NVS commands.
  1484. * \var UBXCFGdevBBR
  1485. * built-in battery-backed RAM
  1486. * \var UBXCFGdevFlash
  1487. * external flash memory
  1488. * \var UBXCFGdevEEPROM
  1489. * external EEPROM
  1490. * \var UBXCFGdevSpiFlash
  1491. * external SPI Flash
  1492. */
  1493. /*!
  1494. * \enum UBXCFGTimepulses
  1495. * \brief UBXCFGTimepulses contains possible timepulse
  1496. * selections for #UBXCFG_TP5 message.
  1497. * \var UBXCFGTimepulse
  1498. * TIMEPULSE selection
  1499. * \var UBXCFGTimepulse2
  1500. * TIMEPULSE2 selection
  1501. */
  1502. /*!
  1503. * \enum UBXCFGTimepulseFlags
  1504. * \brief UBXCFGTimepulseFlags implements timepulse flags
  1505. * for #UBXCFG_TP5 message.
  1506. * \var UBXCFGTimepulseActive
  1507. * if set enable time pulse; if pin assigned to another function, other function takes precedence
  1508. * \var UBXCFGTimepulseLockGpsFreq
  1509. * if set synchronize time pulse to GPS as soon as GPS time is valid, otherwise use local clock
  1510. * \var UBXCFGTimepulseLockedOtherSet
  1511. * if set use 'freqPeriodLock' and 'pulseLenRatioLock' as soon as GPS time is valid and 'freqPeriod' and
  1512. * 'pulseLenRatio' if GPS time is invalid,
  1513. * if flag is cleared 'freqPeriod' and 'pulseLenRatio' used regardless of GPS time
  1514. * \var UBXCFGTimepulseIsFreq
  1515. * if set 'freqPeriodLock' and 'freqPeriod' interpreted as frequency, otherwise interpreted as period
  1516. * \var UBXCFGTimepulseIsLenght
  1517. * if set 'pulseLenRatioLock' and 'pulseLenRatio' interpreted as pulse length, otherwise interpreted as duty cycle
  1518. * \var UBXCFGTimepulseAlignToTow
  1519. * align pulse to top of second (period time must be integer fraction of 1s)
  1520. * \var UBXCFGTimepulsePolarity
  1521. * pulse polarity:\n
  1522. * 0 = falling edge at top of second\n
  1523. * 1 = rising edge at top of second
  1524. * \var UBXCFGTimepulseGridUTSGPS
  1525. * timegrid to use:\n
  1526. * 0 = UTC\n
  1527. * 1 = GPS
  1528. */
  1529. /*!
  1530. * \enum UBXCFGProtocolIds
  1531. * \brief UBXCFGProtocolIds
  1532. * Protocol Identifiers, identifying the output
  1533. * protocol for #UBXCFG_INF.
  1534. * \var UBXProtocol
  1535. * UBX Protocol
  1536. * \var UBXNMEAProtocol
  1537. * NMEA Protocol
  1538. */
  1539. /*!
  1540. * \enum UBXGNSSIds
  1541. * \brief UBXGNSSIds
  1542. * GNSS identificators used for #UBXCFG_GNSS in #UBXCFG_GNSS_PART
  1543. * \var UBXGPS
  1544. * GPS
  1545. * \var UBXSBAS
  1546. * SBAS
  1547. * \var UBXQZSS
  1548. * QZSS
  1549. * \var UBXGLONASS
  1550. * GLONASS
  1551. */
  1552. /*!
  1553. * \enum UBXCFGInfMsgMask
  1554. * \brief UBXCFGInfMsgMask implements
  1555. * bit mask, saying which information messages are enabled on each I/O port
  1556. * \var UBXInfError
  1557. * Error
  1558. * \var UBXInfWarning
  1559. * Warning
  1560. * \var UBXInfNotice
  1561. * Notice
  1562. * \var UBXInfDebug
  1563. * Debug
  1564. * \var UBXInfTest
  1565. * Test
  1566. */
  1567. /*!
  1568. * \enum UBXITFMAntSetting
  1569. * \brief UBXITFMAntSetting implements possible antenna settings for
  1570. * #UBXCFG_ITFM in UBXCFG_ITFM::config2 part.
  1571. * \var UBXITFMAntUnknown
  1572. * Unknown
  1573. * \var UBXITFMAntPassive
  1574. * Passive
  1575. * \var UBXITFMAntActive
  1576. * Active
  1577. */
  1578. /*!
  1579. * \enum UBXLOGFILTERFlags
  1580. * \brief UBXLOGFILTERFlags implements log filter flags bitmask for
  1581. * #UBXCFG_LOGFILTER
  1582. * \var UBXLOGFILTERRecordEnabled
  1583. * 1 = enable recording\n
  1584. * 0 = disable recording
  1585. * \var UBXLOGFILTERPsmOncePerWakupEnabled
  1586. * 1 = enable recording only one single position per PSM on/off mode wake up period\n
  1587. * 0 = disable once per wake up
  1588. * \var UBXLOGFILTERApplyAllFilterSettings
  1589. * 1 = apply all filter settings\n
  1590. * 0 = only apply recordEnabled
  1591. */
  1592. /*!
  1593. * \enum UBXNAV5Mask
  1594. * \brief UBXNAV5Mask implements flags bitmask
  1595. * for #UBXCFG_NAV5 message
  1596. * \var UBXNAV5Dyn
  1597. * Apply dynamic model settings
  1598. * \var UBXNAV5MinEl
  1599. * Apply minimum elevation settings
  1600. * \var UBXNAV5PosFixMode
  1601. * Apply fix mode settings
  1602. * \var UBXNAV5DrLim
  1603. * Reserved
  1604. * \var UBXNAV5PosMask
  1605. * Apply position mask settings
  1606. * \var UBXNAV5TimeMask
  1607. * Apply time mask settings
  1608. * \var UBXNAV5StaticHoldMask
  1609. * Apply static hold settings
  1610. * \var UBXNAV5DgpsMask
  1611. * Apply DGPS settings.
  1612. */
  1613. /*!
  1614. * \enum UBXNAV5Model
  1615. * \brief UBXNAV5Model
  1616. * enum describes dynamic platform models
  1617. * for #UBXCFG_NAV5 message
  1618. * \var UBXNAV5ModelPortable
  1619. * Portable
  1620. * \var UBXNAV5ModelStationary
  1621. * Stationary
  1622. * \var UBXNAV5ModelPedestrian
  1623. * Pedestrian
  1624. * \var UBXNAV5ModelAutomotive
  1625. * Automotive
  1626. * \var UBXNAV5ModelSea
  1627. * Sea
  1628. * \var UBXNAV5ModelAirborne1g
  1629. * Airborne1g
  1630. * \var UBXNAV5ModelAirborne2g
  1631. * Airborne2g
  1632. * \var UBXNAV5ModelAirborne4g
  1633. * Airborne4g
  1634. */
  1635. /*!
  1636. * \enum UBXNAV5FixMode
  1637. * \brief UBXNAV5FixMode
  1638. * enum describes position fixing mode
  1639. * for #UBXCFG_NAV5 message
  1640. * \var UBXNAV5Fix2DOnly
  1641. * 2D Only
  1642. * \var UBXNAV5Fix3DOnly
  1643. * 3D Only
  1644. * \var UBXNAV5FixAuto2D3D
  1645. * Auto 2D/3D
  1646. */
  1647. /*!
  1648. * \enum UBXNAVX5Mask
  1649. * \brief UBXNAVX5Mask
  1650. * implements flags bitmask
  1651. * for #UBXCFG_NAVX5 message
  1652. * \var UBXNAVX5AopMinMax
  1653. * Apply min/max SVs settings
  1654. * \var UBXNAVX5AopMinCno
  1655. * Apply minimum C/N0 setting
  1656. * \var UBXNAVX5AopInitial3dfix
  1657. * Apply initial 3D fix settings
  1658. * \var UBXNAVX5AopWknRoll
  1659. * Apply GPS weeknumber rollover settings
  1660. * \var UBXNAVX5AopPPP
  1661. * Apply PPP flag\n
  1662. * \note Only supported on certain product variants
  1663. * \var UBXNAVX5Aop
  1664. * Apply useAOP flag and aopOrbMaxErr setting (AssistNow Autonomous)
  1665. */
  1666. /*!
  1667. * \enum UBXNMEAFilter
  1668. * \brief UBXNMEAFilter
  1669. * implements NMEA message filter bitmask
  1670. * for #UBXCFG_NMEA
  1671. * \var UBXNMEAPosFilter
  1672. * Enable position output for failed or invalid fixes
  1673. * \var UBXNMEAMskPosFilter
  1674. * Enable position output for invalid fixes
  1675. * \var UBXNMEATimeFilter
  1676. * Enable time output for invalid times
  1677. * \var UBXNMEADateFilter
  1678. * Enable date output for invalid dates
  1679. * \var UBXNMEAGPSOnlyFilter
  1680. * Restrict output to GPS satellites only
  1681. * \var UBXNMEATrackFilter
  1682. * Enable COG output even if COG is frozen
  1683. */
  1684. /*!
  1685. * \enum UBXNMEAVersion
  1686. * \brief UBXNMEAVersion
  1687. * describes supported NMEA protocol version
  1688. * \var UBXNMEAVersion23
  1689. * NMEA version 2.3
  1690. * \var UBXNMEAVersion21
  1691. * NMEA version 2.1
  1692. */
  1693. /*!
  1694. * \enum UBXNMEAFlags
  1695. * \brief UBXNMEAFlags
  1696. * implements flags bitmask for #UBXCFG_NMEA
  1697. * \var UBXNMEACompatFlag
  1698. * enable compatibility mode.\n
  1699. * This might be needed for certain applications when customer's NMEA parser expects a fixed number of digits in
  1700. * position coordinates
  1701. * \var UBXNMEAConsiderFlag
  1702. * enable considering mode.
  1703. */
  1704. /*!
  1705. * \enum UBXNMEAGNSSToFilter
  1706. * \brief UBXNMEAGNSSToFilter
  1707. * implements bitmask to filters out satellites based
  1708. * on their GNSS.
  1709. * \var UBXNMEAGPSFilter
  1710. * Disable reporting of GPS satellites
  1711. * \var UBXNMEASBASFilter
  1712. * Disable reporting of SBAS satellites
  1713. * \var UBXNMEAQZSSFilter
  1714. * Disable reporting of QZSS satellites
  1715. * \var UBXNMEAGLONASSFilter
  1716. * Disable reporting of GLONASS satellites
  1717. */
  1718. /*!
  1719. * \enum UBXNMEASVNumbering
  1720. * \brief UBXNMEASVNumbering
  1721. *
  1722. * \var UBXNMEASVNumStrict
  1723. * Satellites are not output
  1724. * \var UBXNMEASVNumExtended
  1725. * Use UBX proprietary numbering
  1726. */
  1727. /*!
  1728. * \enum UBXNMEATalkerIds
  1729. * \brief UBXNMEATalkerIds
  1730. *
  1731. * \var UBXNMEATalkerNotOverriden
  1732. * Main Talker ID is not overridden
  1733. * \var UBXNMEATalkerGP
  1734. * Set main Talker ID to 'GP'
  1735. * \var UBXNMEATalkerGL
  1736. * Set main Talker ID to 'GL'
  1737. * \var UBXNMEATalkerGN
  1738. * Set main Talker ID to 'GN'
  1739. */
  1740. /*!
  1741. * \enum UBXNMEAGSVTalkerIds
  1742. * \brief UBXNMEAGSVTalkerIds
  1743. *
  1744. * \var UBXNMEAGSVTalkerGNSSSpecific
  1745. * Use GNSS specific Talker ID (as defined by NMEA)
  1746. * \var UBXNMEAGSVTalkerMain
  1747. * Use the main Talker ID
  1748. */
  1749. /*!
  1750. * \enum UBXPM2LimitPeakCurrent
  1751. * \brief UBXPM2LimitPeakCurrent
  1752. *
  1753. * \var UBXPM2LimitCurrentDisabled
  1754. * disabled
  1755. * \var UBXPM2LimitCurrentEnabled
  1756. * enabled, peak current is limited
  1757. */
  1758. /*!
  1759. * \enum UBXPM2Mode
  1760. * \brief UBXPM2Mode
  1761. *
  1762. * \var UBXPM2OnOffOperation
  1763. * ON/OFF operation
  1764. * \var UBXPM2CyclicTrackOperation
  1765. * Cyclic tracking operation
  1766. */
  1767. /*!
  1768. * \enum UBXPRTModeCharLen
  1769. * \brief UBXPRTModeCharLen used for #UBXCFG_PRT
  1770. *
  1771. * \var UBXPRTMode5BitCharLen
  1772. * 5bit \n
  1773. * \note Not supported
  1774. * \var UBXPRTMode6BitCharLen
  1775. * 6bit\n
  1776. * \note Not supported
  1777. * \var UBXPRTMode7BitCharLen
  1778. * 7bit\n
  1779. * \note Supported only with parity
  1780. * \var UBXPRTMode8BitCharLen
  1781. * 8bit
  1782. */
  1783. /*!
  1784. * \enum UBXPRTModeParity
  1785. * \brief UBXPRTModeParity used for #UBXCFG_PRT
  1786. *
  1787. * \var UBXPRTModeEvenParity
  1788. * Even Parity
  1789. * \var UBXPRTModeOddParity
  1790. * Odd Parity
  1791. * \var UBXPRTModeNoParity
  1792. * No Parity
  1793. * \var UBXPRTModeReserved
  1794. * Reserved\n
  1795. * \note Exclude this member from target value
  1796. */
  1797. /*!
  1798. * \enum UBXPRTModeStopBits
  1799. * \brief UBXPRTModeStopBits used for #UBXCFG_PRT
  1800. *
  1801. * \var UBXPRTMode1StopBit
  1802. * 1 Stop Bit
  1803. * \var UBXPRTMode1dot5StopBit
  1804. * 1.5 Stop Bit
  1805. * \var UBXPRTMode2StopBit
  1806. * 2 Stop Bit
  1807. * \var UBXPRTMode0dot5StopBit
  1808. * 0.5 Stop Bit
  1809. */
  1810. /*!
  1811. * \enum UBXPRTInProtoMask
  1812. * \brief UBXPRTInProtoMask used for #UBXCFG_PRT
  1813. *
  1814. * \var UBXPRTInProtoInUBX
  1815. * UBX protocol
  1816. * \var UBXPRTInProtoInNMEA
  1817. * NMEA protocol
  1818. * \var UBXPRTInProtoInRTCM
  1819. * RTCM protocol
  1820. */
  1821. /*!
  1822. * \enum UBXPRTOutProtoMask
  1823. * \brief UBXPRTOutProtoMask used for #UBXCFG_PRT
  1824. *
  1825. * \var UBXPRTOutProtoOutUBX
  1826. * UBX protocol
  1827. * \var UBXPRTOutProtoOutNMEA
  1828. * NMEA protocol
  1829. */
  1830. /*!
  1831. * \enum UBXPRTFlags
  1832. * \brief UBXPRTFlags used for #UBXCFG_PRT
  1833. *
  1834. * \var UBXPRTExtendedTxTimeout
  1835. * Extended TX timeout: if set, the port will timeout if allocated TX memory >=4 kB and no activity for 1.5s
  1836. */
  1837. /*!
  1838. * \enum UBXPRTSPIMode
  1839. * \brief UBXPRTSPIMode used for #UBXCFG_PRT
  1840. *
  1841. * \var UBXPRTSPIMode0
  1842. * 0 SPI Mode 0: CPOL = 0, CPHA = 0
  1843. * \var UBXPRTSPIMode1
  1844. * SPI Mode 1: CPOL = 0, CPHA = 1
  1845. * \var UBXPRTSPIMode2
  1846. * SPI Mode 2: CPOL = 1, CPHA = 0
  1847. * \var UBXPRTSPIMode3
  1848. * SPI Mode 3: CPOL = 1, CPHA = 1
  1849. */
  1850. /*!
  1851. * \enum UBXRINVFlags
  1852. * \brief UBXRINVFlags used for #UBXCFG_RINV
  1853. *
  1854. * \var UBXRINVDump
  1855. * Dump data at startup. Does not work if flag binary is set.
  1856. * \var UBXRINVBinary
  1857. * Data is binary
  1858. */
  1859. /*!
  1860. * \enum UBXRXMLowPowerModes
  1861. * \brief UBXRXMLowPowerModes used for #UBXCFG_RXM
  1862. *
  1863. * \var UBXRXMContinousMode
  1864. * Continous Mode
  1865. * \var UBXRXMPowerSaveMode
  1866. * Power Save Mode
  1867. */
  1868. /*!
  1869. * \enum UBXSBASModes
  1870. * \brief UBXSBASModes used for #UBXCFG_SBAS
  1871. *
  1872. * \var UBXSBASModeEnabled
  1873. * SBAS Enabled (1) / Disabled (0)
  1874. * \var UBXSBASModeTest
  1875. * SBAS Testbed: Use data anyhow (1) / Ignore data when in Test Mode (SBAS Msg 0)
  1876. */
  1877. /*!
  1878. * \enum UBXSBASUsage
  1879. * \brief UBXSBASUsage
  1880. *
  1881. * \var UBXSBASUsageRange
  1882. * Use SBAS GEOs as a ranging source (for navigation)
  1883. * \var UBXSBASUsageDiffCorr
  1884. * Use SBAS Differential Corrections
  1885. * \var UBXSBASUsageIntegrity
  1886. * Use SBAS Integrity Information
  1887. */
  1888. /*!
  1889. * \enum UBXSBASScanModes2
  1890. * \brief UBXSBASScanModes2
  1891. *
  1892. * \var UBXSBASScanModePRN152
  1893. * \var UBXSBASScanModePRN153
  1894. * \var UBXSBASScanModePRN154
  1895. * \var UBXSBASScanModePRN155
  1896. * \var UBXSBASScanModePRN156
  1897. * \var UBXSBASScanModePRN157
  1898. * \var UBXSBASScanModePRN158
  1899. */
  1900. /*!
  1901. * \enum UBXSBASScanModes1
  1902. * \brief UBXSBASScanModes1
  1903. *
  1904. * \var UBXSBASScanModePRN120
  1905. * \var UBXSBASScanModePRN121
  1906. * \var UBXSBASScanModePRN122
  1907. * \var UBXSBASScanModePRN123
  1908. * \var UBXSBASScanModePRN124
  1909. * \var UBXSBASScanModePRN125
  1910. * \var UBXSBASScanModePRN126
  1911. * \var UBXSBASScanModePRN127
  1912. * \var UBXSBASScanModePRN128
  1913. * \var UBXSBASScanModePRN129
  1914. * \var UBXSBASScanModePRN130
  1915. * \var UBXSBASScanModePRN131
  1916. * \var UBXSBASScanModePRN132
  1917. * \var UBXSBASScanModePRN133
  1918. * \var UBXSBASScanModePRN134
  1919. * \var UBXSBASScanModePRN135
  1920. * \var UBXSBASScanModePRN136
  1921. * \var UBXSBASScanModePRN137
  1922. * \var UBXSBASScanModePRN138
  1923. * \var UBXSBASScanModePRN139
  1924. * \var UBXSBASScanModePRN140
  1925. * \var UBXSBASScanModePRN141
  1926. * \var UBXSBASScanModePRN142
  1927. * \var UBXSBASScanModePRN143
  1928. * \var UBXSBASScanModePRN144
  1929. * \var UBXSBASScanModePRN145
  1930. * \var UBXSBASScanModePRN146
  1931. * \var UBXSBASScanModePRN147
  1932. * \var UBXSBASScanModePRN148
  1933. * \var UBXSBASScanModePRN149
  1934. * \var UBXSBASScanModePRN150
  1935. * \var UBXSBASScanModePRN151
  1936. */
  1937. /*!
  1938. * \enum UBXUSBFlags
  1939. * \brief UBXUSBFlags
  1940. *
  1941. * \var USBFlagReEnum
  1942. * force re-enumeration
  1943. * \var USBFlagPowerMode
  1944. * self-powered (1), bus-powered (0)
  1945. */
  1946. /*!
  1947. * \enum UBXLOGCfg
  1948. * \brief UBXLOGCfg
  1949. * \var UBXLOGCfgCircular
  1950. * Log is circular (new entries overwrite old ones in a full log) if this bit set
  1951. */
  1952. /*!
  1953. * \enum UBXLOGSize
  1954. * \brief UBXLOGSize
  1955. *
  1956. * \var UBXLOGMaximumSafeSize
  1957. * Maximum safe size\n
  1958. * \note Ensures that logging will not be interupted and enough space
  1959. * will be left avaiable for all other uses of the filestore
  1960. * \var UBXLOGMinimunSize
  1961. * Minimun size
  1962. * \var UBXLOGUserDefined
  1963. * User defined\n
  1964. * \note See UBXLOG_CREATE::userDefinedSize
  1965. */
  1966. /*!
  1967. * \enum UBXLOGStatus
  1968. * \brief UBXLOGStatus
  1969. *
  1970. * \var UBXLOGStatusRecording
  1971. * Log entry recording is currently turned on
  1972. * \var UBXLOGStatusInactive
  1973. * Logging system not active - no log present
  1974. * \var UBXLOGStatusCircular
  1975. * The current log is circular
  1976. */
  1977. /*!
  1978. * \enum UBXRETRIEVEPOSFixType
  1979. * \brief UBXRETRIEVEPOSFixType
  1980. *
  1981. * \var UBXRETRIEVEPOS2DFix
  1982. * 2D-Fix
  1983. * \var UBXRETRIEVEPOS3DFix
  1984. * 3D-Fix
  1985. */
  1986. /*!
  1987. * \enum UBXRXRFlags
  1988. * \brief UBXRXRFlags
  1989. *
  1990. * \var UBXRXRAwake
  1991. * not in Backup mode
  1992. */
  1993. /*!
  1994. * \enum UBXAOPStatus
  1995. * \brief UBXAOPStatus
  1996. *
  1997. * \var UBXAOPStatusIdle
  1998. * AOP idle
  1999. * \var UBXAOPStatusRunning
  2000. * AOP running
  2001. */
  2002. /*!
  2003. * \enum UBXAOPCfg
  2004. * \brief UBXAOPCfg
  2005. *
  2006. * \var UBXAOPCfgUseAOP
  2007. * AOP enabled flag
  2008. */
  2009. /*!
  2010. * \enum UBXGPSFix
  2011. * \brief UBXGPSFix
  2012. *
  2013. * \var UBXGPSNoFix
  2014. * No Fix
  2015. * \var UBXGPSDeadReckoning
  2016. * Dead Reckoning only
  2017. * \var UBXGPS2DFix
  2018. * 2D-Fix
  2019. * \var UBXGPS3DFix
  2020. * 3D-Fix
  2021. * \var UBXGPSGNSSDeadReckoning
  2022. * GNSS + dead reckoning combined
  2023. * \var UBXGPSTimeOnlyFix
  2024. * Time only fix
  2025. */
  2026. /*!
  2027. * \enum UBXPVTValid
  2028. * \brief UBXPVTValid
  2029. *
  2030. * \var UBXPVTValidDate
  2031. * Valid UTC Date
  2032. * \var UBXPVTValidTime
  2033. * Valid UTC Time of Day
  2034. * \var UBXPVTFullyResolved
  2035. * UTC Time of Day has been fully resolved (no seconds uncertainty)
  2036. */
  2037. /*!
  2038. * \enum UBXPVTPSMStates
  2039. * \brief UBXPVTPSMStates
  2040. *
  2041. * \var UBXPVTPSMStateNA
  2042. * n/a (i.e no PSM is active)
  2043. * \var UBXPVTPSMStateEnabled
  2044. * Enabled (an intermediate state before Acquisition state)
  2045. * \var UBXPVTPSMStateAcquisition
  2046. * Acquisition
  2047. * \var UBXPVTPSMStateTracking
  2048. * Tracking
  2049. * \var UBXPVTPSMStatePowerOptim
  2050. * Power optimized tracking
  2051. * \var UBXPVTPSMStateInactive
  2052. * Inactive
  2053. */
  2054. /*!
  2055. * \enum UBXSBASService
  2056. * \brief UBXSBASService
  2057. *
  2058. * \var UBXSBASServiceRanging
  2059. * Service ranging
  2060. * \var UBXSBASServiceCorrections
  2061. * Service corrections
  2062. * \var UBXSBASServiceIntegrity
  2063. * Service integrity
  2064. * \var UBXSBASServiceTestmode
  2065. * Service in testmode
  2066. */
  2067. /*!
  2068. * \enum UBXSBASSOLFlags
  2069. * \brief UBXSBASSOLFlags
  2070. *
  2071. {
  2072. * \var UBXSBASSOLGPSfixOK
  2073. * Fix within limits. Position and velocity valid and within DOP and ACC Masks.
  2074. * \var UBXSBASSOLDiffSoln
  2075. * DGPS used
  2076. * \var UBXSBASSOLWKNSet
  2077. * Valid GPS week number
  2078. * \var UBXSBASSOLTOWSet
  2079. * Valid GPS time of week (iTOW & fTOW)
  2080. */
  2081. /*!
  2082. * \enum UBXSVINFOChipGen
  2083. * \brief UBXSVINFOChipGen
  2084. *
  2085. * \var UBXSVINFOAntarisChip
  2086. * Antaris, Antaris 4
  2087. * \var UBXSVINFOUBlox5Chip
  2088. * u-blox© 5
  2089. * \var UBXSVINFOUBlox6Chip
  2090. * u-blox© 6
  2091. */
  2092. /*!
  2093. * \enum UBXSVINFOFlags
  2094. * \brief UBXSVINFOFlags
  2095. *
  2096. {
  2097. * \var UBXSVINFOFlagsSVUsed
  2098. * SV is used for navigation
  2099. * \var UBXSVINFOFlagsDiffCorr
  2100. * Differential correction data is available for this SV
  2101. * \var UBXSVINFOFlagsOrbitAvail
  2102. * Orbit information is available for this SV (Ephemeris or Almanac)
  2103. * \var UBXSVINFOFlagsOrbitEph
  2104. * Orbit information is Ephemeris
  2105. * \var UBXSVINFOFlagsUnhealthy
  2106. * SV is unhealthy / shall not be used
  2107. * \var UBXSVINFOFlagsOrbitAlm
  2108. * Orbit information is Almanac Plus
  2109. * \var UBXSVINFOFlagsOrbitAop
  2110. * Orbit information is AssistNow Autonomous
  2111. * \var UBXSVINFOFlagsSmoothed
  2112. * Carrier smoothed pseudorange used
  2113. */
  2114. /*!
  2115. * \enum UBXSVINFOQualityId
  2116. * \brief UBXSVINFOQualityId
  2117. *
  2118. * \var UBXSVINFOQualityChannelIdle
  2119. * This channel is idle
  2120. * \var UBXSVINFOQualityChannelSearching
  2121. * Channel is searching
  2122. * \var UBXSVINFOQualitySignalAquired
  2123. * Signal aquired
  2124. * \var UBXSVINFOQualitySignalDetected
  2125. * Signal detected but unusable
  2126. * \var UBXSVINFOQualityCodeLockOnSignal
  2127. * Code Lock on Signal
  2128. * \var UBXSVINFOQualityCodeCarrierLocked
  2129. * Code and Carrier locked
  2130. */
  2131. /*!
  2132. * \enum UBXTIMEGPSValidityFlags
  2133. * \brief UBXTIMEGPSValidityFlags
  2134. *
  2135. * \var UBXTIMEGPSTowValid
  2136. * Valid GPS time of week (iTOW & fTOW)
  2137. * \var UBXTIMEGPSWeekValid
  2138. * Valid GPS week number
  2139. * \var UBXTIMEGPSLeapSValid
  2140. * Valid GPS leap seconds
  2141. */
  2142. /*!
  2143. * \enum UBXTIMEUTCValidityFlags
  2144. * \brief UBXTIMEUTCValidityFlags
  2145. *
  2146. * \var UBXTIMEUTCValidTOW
  2147. * Valid Time of Week
  2148. * \var UBXTIMEUTCValidWKN
  2149. * Valid Week Number
  2150. * \var UBXTIMEUTCValidUTC
  2151. * Valid UTC Time
  2152. */
  2153. /*!
  2154. * \enum UBXPMREQFlags
  2155. * \brief UBXPMREQFlags
  2156. *
  2157. * \var UBXPMREQBackup
  2158. * The receiver goes into backup mode for a time period defined by duration
  2159. */
  2160. /*!
  2161. * \enum UBXTM2FlagsMode
  2162. * \brief UBXTM2FlagsMode
  2163. *
  2164. * \var UBXTM2FlagsModeSingle
  2165. * Single mode
  2166. * \var UBXTM2FlagsModeRunning
  2167. * Running mode
  2168. */
  2169. /*!
  2170. * \enum UBXTM2FlagsRun
  2171. * \brief UBXTM2FlagsRun
  2172. *
  2173. * \var UBXTM2FlagsRunArmed
  2174. * Armed
  2175. * \var UBXTM2FlagsRunStopped
  2176. * Stopped
  2177. */
  2178. /*!
  2179. * \enum UBXTM2FlagsTimeBase
  2180. * \brief UBXTM2FlagsTimeBase
  2181. *
  2182. * \var UBXTM2FlagsTimeBaseReceiverTime
  2183. * Time base is Receiver Time
  2184. * \var UBXTM2FlagsTimeBaseGPS
  2185. * Time base is GPS
  2186. * \var UBXTM2FlagsTimeBaseUTC
  2187. * Time base is UTC
  2188. */
  2189. /*!
  2190. * \enum UBXTM2FlagsUTC
  2191. * \brief UBXTM2FlagsUTC
  2192. *
  2193. * \var UBXTM2FlagsUTCNotAvailable
  2194. * UTC not available
  2195. * \var UBXTM2FlagsUTCAvailable
  2196. * UTC available
  2197. */
  2198. /*!
  2199. * \enum UBXTM2FlagsTime
  2200. * \brief UBXTM2FlagsTime
  2201. *
  2202. * \var UBXTM2FlagsTimeInvalid
  2203. * Time is not valid
  2204. * \var UBXTM2FlagsTimeValid
  2205. * Time is valid (Valid GPS fix)
  2206. */
  2207. /*!
  2208. * \enum UBXTPFlags
  2209. * \brief UBXTPFlags
  2210. *
  2211. * \var UBXTPTimeBaseUTC
  2212. * If is set time base is UTC. If not set time base is GPS
  2213. * \var UBXTPUTCAvailable
  2214. * UTC available
  2215. */
  2216. /*!
  2217. * \enum UBXVRFYFlagsSource
  2218. * \brief UBXVRFYFlagsSource
  2219. *
  2220. * \var UBXVRFYNoTimeAidingDone
  2221. * No time aiding done
  2222. * \var UBXVRFYSourceRTC
  2223. * Source was RTC
  2224. * \var UBXVRFYSourceAID_INI
  2225. * Source was AID-INI
  2226. */
  2227. /*! @} */
  2228. /*! \struct UBXHdr
  2229. * \brief This structure is UBX message header
  2230. * \var UBXHdr::msgClass
  2231. * Message class. A class is a grouping of messages which are related to each other.
  2232. * See #UBXMessageClass
  2233. * \var UBXHdr::msgId
  2234. * Message identificator. See #UBXMessageId
  2235. * \var UBXHdr::length
  2236. * Length is defined as being the length of the payload, only. It does not include
  2237. * Sync Chars, Length Field, Class, ID or CRC fields. The number format of the
  2238. * length field is an unsigned 16-Bit integer in Little Endian Format.
  2239. */
  2240. /*! \struct UBXMsg
  2241. * \brief This structure is base for every message in
  2242. * UBX protocol
  2243. * \var UBXMsg::preamble
  2244. * preable of UBX message is allways 0xB562
  2245. * \var UBXMsg::hdr
  2246. * UBX message header of #UBXHdr type.
  2247. * \var UBXMsg::payload
  2248. * Union of #UBXMsgs type that contains all possible payloads
  2249. * for current protocol version
  2250. */
  2251. /*! \struct UBXMsgBuffer
  2252. * \brief This structure is used by every message getters
  2253. * to wrap returned message data.
  2254. * \var UBXMsgBuffer::size
  2255. * size of buffer
  2256. * \var UBXMsgBuffer::data
  2257. * pointer to data heap
  2258. */
  2259. /*! \union UBXMsgs
  2260. * \brief This union contains all possible payloads
  2261. * in current protocol version
  2262. */
  2263. /*! \struct UBXAlpFileInfo
  2264. * \brief This structure contains data of alpfile
  2265. * It's simple wrapper on byte array with file id
  2266. * specification
  2267. * \var UBXAlpFileInfo::fileId
  2268. * File id used to indetificate part appurtenance
  2269. * \var UBXMsg::alpData
  2270. * Part of file data
  2271. * \var UBXMsg::dataSize
  2272. * Size of part in bytes
  2273. */
  2274. /*!
  2275. * \struct UBXAID_ALPSRV
  2276. * This message is sent by the ALP client to the ALP server in order to request data. The given
  2277. * identifier must be prepended to the requested data when submitting the data.
  2278. * \brief ALP client requests AlmanacPlus data from server
  2279. * \var UBXAID_ALPSRV::idSize
  2280. * Identifier size. This data, beginning at message start, must prepend the returned data.
  2281. * \var UBXAID_ALPSRV::type
  2282. * Requested data type. Must be different from 0xff, otherwise this is not a data request.
  2283. * \var UBXAID_ALPSRV::offset
  2284. * Requested data offset [16bit words]
  2285. * \var UBXAID_ALPSRV::size
  2286. * Requested data size [16bit words]
  2287. * \var UBXAID_ALPSRV::fileId
  2288. * Unused when requesting data, filled in when sending back the data
  2289. * \var UBXAID_ALPSRV::dataSize
  2290. * Actual data size. Unused when requesting data, filled in when sending back the data.
  2291. * \var UBXAID_ALPSRV::id1
  2292. * Identifier data
  2293. * \var UBXAID_ALPSRV::id2
  2294. * Identifier data
  2295. * \var UBXAID_ALPSRV::id3
  2296. * Identifier data
  2297. */
  2298. /*!
  2299. * \struct UBXACK_ACK
  2300. * Output upon processing of an input message
  2301. * \brief Message acknowledged
  2302. * \var UBXACK_ACK::msgClass
  2303. * Class ID of the Acknowledged Message
  2304. * \see #UBXMessageClass to fill this field
  2305. * \var UBXACK_ACK::msgId
  2306. * Message ID of the Acknowledged Message
  2307. * \see #UBXMessageId to fill this field
  2308. */
  2309. /*!
  2310. * \struct UBXACK_NACK
  2311. * Output upon processing of an input message
  2312. * \brief Message Not-Acknowledged
  2313. * \var UBXACK_NACK::msgClass
  2314. * Class ID of the Acknowledged Message
  2315. * \see #UBXMessageClass to fill this field
  2316. * \var UBXACK_NACK::msgId
  2317. * Message ID of the Acknowledged Message
  2318. * \see #UBXMessageId to fill this field
  2319. */
  2320. /*!
  2321. * \struct UBXAID_ALM_POLL
  2322. * Poll GPS Aiding Data (Almanac) for all 32 SVs by sending this message to the receiver
  2323. * without any payload. The receiver will return 32 messages of type AID-ALM as defined
  2324. * below.
  2325. * \note No payload
  2326. * \brief Poll GPS Aiding Almanac Data
  2327. */
  2328. /*!
  2329. * \struct UBXAID_ALM_POLL_OPT
  2330. * Poll GPS Aiding Data (Almanac) for an SV by sending this message to the receiver. The
  2331. * receiver will return one message of type AID-ALM as defined below.
  2332. * \brief Poll GPS Aiding Almanac Data for a SV
  2333. *
  2334. * \var UBXAID_ALM_POLL_OPT::svid
  2335. * SV ID for which the receiver shall return its
  2336. * Almanac Data (Valid Range: 1 .. 32 or 51, 56,
  2337. * 63).
  2338. */
  2339. /*!
  2340. * \struct UBXAID_ALM
  2341. * - If the WEEK Value is 0, DWRD0 to DWRD7 are not sent as the Almanac is not available
  2342. * for the given SV. This may happen even if NAV-SVINFO and RXM-SVSI are indicating
  2343. * almanac availability as the internal data may not represent the content of an original
  2344. * broadcast almanac (or only parts thereof).
  2345. * - DWORD0 to DWORD7 contain the 8 words following the Hand-Over Word ( HOW )
  2346. * from the GPS navigation message, either pages 1 to 24 of sub-frame 5 or pages 2 to 10
  2347. * of subframe 4. See IS-GPS-200 for a full description of the contents of the Almanac
  2348. * pages.
  2349. * - In DWORD0 to DWORD7, the parity bits have been removed, and the 24 bits of data are
  2350. * located in Bits 0 to 23. Bits 24 to 31 shall be ignored.
  2351. * - Example: Parameter e (Eccentricity) from Almanac Subframe 4/5, Word 3, Bits 69-84
  2352. * within the subframe can be found in DWRD0, Bits 15-0 whereas Bit 0 is the LSB.
  2353. * \brief GPS Aiding Almanac Input/Output Message
  2354. *
  2355. * \var UBXAID_ALM::svid
  2356. * SV ID for which this
  2357. * Almanac Data is (Valid Range: 1 .. 32 or 51, 56,
  2358. * 63).
  2359. * \var UBXAID_ALM::week
  2360. * Issue Date of Almanac (GPS week number)
  2361. */
  2362. /*!
  2363. * \struct UBXAID_ALM_OPT
  2364. * - If the WEEK Value is 0, DWRD0 to DWRD7 are not sent as the Almanac is not available
  2365. * for the given SV. This may happen even if NAV-SVINFO and RXM-SVSI are indicating
  2366. * almanac availability as the internal data may not represent the content of an original
  2367. * broadcast almanac (or only parts thereof).
  2368. * - DWORD0 to DWORD7 contain the 8 words following the Hand-Over Word ( HOW )
  2369. * from the GPS navigation message, either pages 1 to 24 of sub-frame 5 or pages 2 to 10
  2370. * of subframe 4. See IS-GPS-200 for a full description of the contents of the Almanac
  2371. * pages.
  2372. * - In DWORD0 to DWORD7, the parity bits have been removed, and the 24 bits of data are
  2373. * located in Bits 0 to 23. Bits 24 to 31 shall be ignored.
  2374. * - Example: Parameter e (Eccentricity) from Almanac Subframe 4/5, Word 3, Bits 69-84
  2375. * within the subframe can be found in DWRD0, Bits 15-0 whereas Bit 0 is the LSB.
  2376. * \brief GPS Aiding Almanac Input/Output Message
  2377. *
  2378. * \var UBXAID_ALM_OPT::svid
  2379. * SV ID for which this
  2380. * Almanac Data is (Valid Range: 1 .. 32 or 51, 56,
  2381. * 63).
  2382. * \var UBXAID_ALM_OPT::week
  2383. * Issue Date of Almanac (GPS week number)
  2384. * \var UBXAID_ALM_OPT::dwrd[8]
  2385. * Almanac Words
  2386. */
  2387. /*!
  2388. * \struct UBXAID_ALP
  2389. * This message is used to transfer a chunk of data from the AlmanacPlus file to the receiver.
  2390. * Upon reception of this message, the receiver will write the payload data to its internal
  2391. * non-volatile memory, eventually also erasing that part of the memory first. Make sure that
  2392. * the payload size is even sized (i.e. always a multiple of 2). Do not use payloads larger than
  2393. * ~ 700 bytes, as this would exceed the receiver's internal buffering capabilities. The receiver
  2394. * will (not-) acknowledge this message using the message alternatives given below. The host
  2395. * shall wait for an acknowledge message before sending the next chunk.
  2396. * \note This structure contains variable payload:\n
  2397. * UBXU2_t alpData ALP file data
  2398. * \brief ALP file data transfer to the receiver
  2399. */
  2400. /*!
  2401. * \struct UBXAID_ALP_END
  2402. * This message is used to indicate that all chunks have been transferred, and normal receiver
  2403. * operation can resume. Upon reception of this message, the receiver will verify all chunks
  2404. * received so far, and enable AssistNow Offline and GPS receiver operation if successful. This
  2405. * message could also be sent to cancel an incomplete download.
  2406. * \brief Mark end of data transfer
  2407. * \var UBXAID_ALP_END::dummy
  2408. * - Value is ignored if it's end of data transfer
  2409. * - If value is set to 0x01 message acknowledges a data transfer
  2410. * - If value is set to 0x00 message indicates problems with a data transfer
  2411. */
  2412. /*!
  2413. * \struct UBXAID_ALP_POLL
  2414. * \brief Poll the AlmanacPlus status
  2415. *
  2416. * \var UBXAID_ALP_POLL::predTow
  2417. * Prediction start time of week
  2418. * \var UBXAID_ALP_POLL::predDur
  2419. * Prediction duration from start of first data set to
  2420. * end of last data set
  2421. * \var UBXAID_ALP_POLL::age
  2422. * Current age of ALP data
  2423. * \var UBXAID_ALP_POLL::predWno
  2424. * Prediction start week number
  2425. * \var UBXAID_ALP_POLL::almWno
  2426. * Truncated week number of reference almanac
  2427. * \var UBXAID_ALP_POLL::reserved1
  2428. * Reserved
  2429. * \var UBXAID_ALP_POLL::svs
  2430. * Number of satellite data sets contained in the
  2431. * ALP UBXAID_ALP_POLL::data
  2432. * \var UBXAID_ALP_POLL::reserved2
  2433. * Reserved
  2434. * \var UBXAID_ALP_POLL::reserved3
  2435. * Reserved
  2436. */
  2437. /*!
  2438. * \struct UBXAID_AOP_POLL
  2439. * Poll AssistNow Autonomous aiding data for all satellits by sending this empty message. The
  2440. * receiver will return an AID-AOP message (see definition below) for each satellite for which
  2441. * data is available. For satellites for which no data is available it will return a corresponding
  2442. * AID-AOP poll request message.
  2443. * \note No payload
  2444. * \brief Poll AssistNow Autonomous data
  2445. */
  2446. /*!
  2447. * \struct UBXAID_AOP_POLL_OPT
  2448. * Poll the AssistNow Autonomous data for the specified satellite. The receiver will return a
  2449. * AID-AOP message (see definition below) if data is available for the requested satellite. If no
  2450. * data is available it will return corresponding AID-AOP poll request message (i.e. this
  2451. * message).
  2452. * \brief Poll AssistNow Autonomous data for one satellite
  2453. * \var UBXAID_AOP_POLL_OPT::svid
  2454. * GPS SV id for which the data is requested
  2455. * \note Range: 1..32
  2456. */
  2457. /*!
  2458. * \struct UBXAID_AOP
  2459. * If enabled, this message is output at irregular intervals. It is output whenever AssistNow
  2460. * Autonomous has produced new data for a satellite. Depending on the availability of the
  2461. * optional data the receiver will output either version of the message. If this message is
  2462. * polled using one of the two poll requests described above the receiver will send this
  2463. * message if AOP data is available or the corresponding poll request message if no AOP data
  2464. * is available for each satellite (i.e. svid 1..32). At the user's choice the optional data may be
  2465. * chopped from the payload of a previously polled message when sending the message back
  2466. * to the receiver. Sending a valid AID-AOP message to the receiver will automatically enable
  2467. * the AssistNow Autonomous feature on the receiver. See the section AssistNow
  2468. * Autonomous in the receiver description for details on this feature.
  2469. * \brief AssistNow Autonomous data
  2470. * \var UBXAID_AOP::svid
  2471. * GPS SV id
  2472. * \var UBXAID_AOP::data[59]
  2473. * AssistNow Autonomous data
  2474. */
  2475. /*!
  2476. * \struct UBXAID_AOP_OPT
  2477. * If enabled, this message is output at irregular intervals. It is output whenever AssistNow
  2478. * Autonomous has produced new data for a satellite. Depending on the availability of the
  2479. * optional data the receiver will output either version of the message. If this message is
  2480. * polled using one of the two poll requests described above the receiver will send this
  2481. * message if AOP data is available or the corresponding poll request message if no AOP data
  2482. * is available for each satellite (i.e. svid 1..32). At the user's choice the optional data may be
  2483. * chopped from the payload of a previously polled message when sending the message back
  2484. * to the receiver. Sending a valid AID-AOP message to the receiver will automatically enable
  2485. * the AssistNow Autonomous feature on the receiver. See the section AssistNow
  2486. * Autonomous in the receiver description for details on this feature.
  2487. * \brief AssistNow Autonomous data
  2488. * \var UBXAID_AOP_OPT::svid
  2489. * GPS SV id
  2490. * \var UBXAID_AOP_OPT::data[59]
  2491. * AssistNow Autonomous data
  2492. * \var UBXAID_AOP_OPT::optional0[48]
  2493. * Optional data chunk 1/3
  2494. * \var UBXAID_AOP_OPT::optional1[48]
  2495. * Optional data chunk 2/3
  2496. * \var UBXAID_AOP_OPT::optional2[48]
  2497. * Optional data chunk 3/3
  2498. */
  2499. /*!
  2500. * \struct UBXAID_DATA_POLL
  2501. * If this poll is received, the messages AID-INI, AID-HUI, AID-EPH and AID-ALM are sent.
  2502. * \note No payload
  2503. * \brief Polls all GPS Initial Aiding Data
  2504. */
  2505. /*!
  2506. * \struct UBXAID_EPH_POLL
  2507. * This message has an empty payload!
  2508. * Poll GPS Aiding Data (Ephemeris) for all 32 SVs by sending this message to the receivewithout any payload.
  2509. * The receiver will return 32 messages of type #UBXAID_EPH
  2510. * \note No payload
  2511. * \brief Poll GPS Aiding Ephemeris Data
  2512. *
  2513. */
  2514. /*!
  2515. * \struct UBXAID_EPH_POLL_OPT
  2516. * Poll GPS Constellation Data (Ephemeris) for an SV by sending this message to the receiver.
  2517. * The receiver will return 32 messages of type #UBXAID_EPH
  2518. * \brief Poll GPS Aiding Ephemeris Data for a SV
  2519. *
  2520. * \var UBXAID_EPH_POLL_OPT::svid
  2521. * SV ID for which the receiver shall return its
  2522. * Ephemeris Data (Valid Range: 1 .. 32).
  2523. */
  2524. /*!
  2525. * \struct UBXAID_EPH
  2526. * - SF1D0 to SF3D7 is only sent if ephemeris is available for this SV. If not, the payload may
  2527. * be reduced to 8 Bytes, or all bytes are set to zero, indicating that this SV Number does
  2528. * not have valid ephemeris for the moment. This may happen even if NAV-SVINFO and
  2529. * RXM-SVSI are indicating ephemeris availability as the internal data may not represent the
  2530. * content of an original broadcast ephemeris (or only parts thereof).
  2531. * - SF1D0 to SF3D7 contain the 24 words following the Hand-Over Word ( HOW ) from the
  2532. * GPS navigation message, subframes 1 to 3. The Truncated TOW Count is not valid and
  2533. * cannot be used. See IS-GPS-200 for a full description of the contents of the Subframes.
  2534. * - In SF1D0 to SF3D7, the parity bits have been removed, and the 24 bits of data are
  2535. * located in Bits 0 to 23. Bits 24 to 31 shall be ignored.
  2536. * - When polled, the data contained in this message does not represent the full original
  2537. * ephemeris broadcast. Some fields that are irrelevant to u-blox© receivers may be missing.
  2538. * The week number in Subframe 1 has already been modified to match the Time Of
  2539. * Ephemeris (TOE).
  2540. * \brief GPS Aiding Ephemeris Input/Output Message
  2541. * \var UBXAID_EPH::svid
  2542. * SV ID for which this ephemeris data is
  2543. * \note Range: 1..32
  2544. * \var UBXAID_EPH::how
  2545. * Hand-Over Word of first Subframe. This is
  2546. * required if data is sent to the receiver.
  2547. * 0 indicates that no Ephemeris Data is following.
  2548. */
  2549. /*!
  2550. * \struct UBXAID_EPH_OPT
  2551. * - SF1D0 to SF3D7 is only sent if ephemeris is available for this SV. If not, the payload may
  2552. * be reduced to 8 Bytes, or all bytes are set to zero, indicating that this SV Number does
  2553. * not have valid ephemeris for the moment. This may happen even if NAV-SVINFO and
  2554. * RXM-SVSI are indicating ephemeris availability as the internal data may not represent the
  2555. * content of an original broadcast ephemeris (or only parts thereof).
  2556. * - SF1D0 to SF3D7 contain the 24 words following the Hand-Over Word ( HOW ) from the
  2557. * GPS navigation message, subframes 1 to 3. The Truncated TOW Count is not valid and
  2558. * cannot be used. See IS-GPS-200 for a full description of the contents of the Subframes.
  2559. * - In SF1D0 to SF3D7, the parity bits have been removed, and the 24 bits of data are
  2560. * located in Bits 0 to 23. Bits 24 to 31 shall be ignored.
  2561. * - When polled, the data contained in this message does not represent the full original
  2562. * ephemeris broadcast. Some fields that are irrelevant to u-blox© receivers may be missing.
  2563. * The week number in Subframe 1 has already been modified to match the Time Of
  2564. * Ephemeris (TOE).
  2565. * \brief GPS Aiding Ephemeris Input/Output Message
  2566. * \var UBXAID_EPH_OPT::svid
  2567. * SV ID for which this ephemeris data is
  2568. * \note Range: 1..32
  2569. * \var UBXAID_EPH_OPT::how
  2570. * Hand-Over Word of first Subframe. This is
  2571. * required if data is sent to the receiver.
  2572. * 0 indicates that no Ephemeris Data is following.
  2573. * \var UBXAID_EPH_OPT::sf1d[8]
  2574. * Subframe 1 Words 3..10 (SF1D0..SF1D7)
  2575. * \var UBXAID_EPH_OPT::sf2d[8]
  2576. * Subframe 2 Words 3..10 (SF1D0..SF1D7)
  2577. * \var UBXAID_EPH_OPT::sf3d[8]
  2578. * Subframe 3 Words 3..10 (SF1D0..SF1D7)
  2579. */
  2580. /*!
  2581. * \struct UBXAID_HUI_POLL
  2582. * \note No payload
  2583. * \brief Poll GPS Health, UTC and ionosphere parameters
  2584. */
  2585. /*!
  2586. * \struct UBXAID_HUI
  2587. * This message contains a health bit mask, UTC time and Klobuchar parameters. For more
  2588. * information on these parameters, please see the ICD-GPS-200 documentation.
  2589. * \brief GPS Health, UTC and ionosphere parameters
  2590. * \var UBXAID_HUI::health
  2591. * Bitmask, every bit represenst a GPS SV (1-32). If
  2592. * the bit is set the SV is healthy.
  2593. * \var UBXAID_HUI::utcA0
  2594. * UTC - parameter A0
  2595. * \var UBXAID_HUI::utcA1
  2596. * UTC - parameter A1
  2597. * \var UBXAID_HUI::utcTOW
  2598. * UTC - reference time of week
  2599. * \var UBXAID_HUI::utcWNT
  2600. * UTC - reference week number
  2601. * \var UBXAID_HUI::utcLS
  2602. * UTC - time difference due to leap seconds before event
  2603. * \var UBXAID_HUI::utcWNF
  2604. * UTC - week number when next leap second event occurs
  2605. * \var UBXAID_HUI::utcDN
  2606. * UTC - day of week when next leap second event occurs
  2607. * \var UBXAID_HUI::utcLSF
  2608. * UTC - time difference due to leap seconds after event
  2609. * \var UBXAID_HUI::utcSpare
  2610. * UTC - Spare to ensure structure is a multiple of 4 bytes
  2611. * \var UBXAID_HUI::klobA0
  2612. * Klobuchar - alpha 0
  2613. * \var UBXAID_HUI::klobA1
  2614. * Klobuchar - alpha 1
  2615. * \var UBXAID_HUI::klobA2
  2616. * Klobuchar - alpha 2
  2617. * \var UBXAID_HUI::klobA3
  2618. * Klobuchar - alpha 3
  2619. * \var UBXAID_HUI::klobB0
  2620. * Klobuchar - beta 0
  2621. * \var UBXAID_HUI::klobB1
  2622. * Klobuchar - beta 1
  2623. * \var UBXAID_HUI::klobB2
  2624. * Klobuchar - beta 2
  2625. * \var UBXAID_HUI::klobB3
  2626. * Klobuchar - beta 3
  2627. * \var UBXAID_HUI::flags
  2628. * Flags.
  2629. * \see #UBXHUIFlags to fill this field
  2630. */
  2631. /*!
  2632. * \struct UBXAID_INI_POLL
  2633. * \note No payload
  2634. * \brief Poll GPS Initial Aiding Data
  2635. */
  2636. /*!
  2637. * \struct UBXAID_INI
  2638. * This message contains position, time and clock drift information. The position can be input
  2639. * in either the ECEF X/Y/Z coordinate system or as lat/lon/height. The time can either be input
  2640. * as inexact value via the standard communication interface, suffering from latency
  2641. * depending on the baudrate, or using harware time synchronization where an accuracte
  2642. * time pulse is input on the external interrupts. It is also possible to supply hardware
  2643. * frequency aiding by connecting a continuous signal to an external interrupt.
  2644. * \brief Aiding position, time, frequency, clock drift
  2645. *
  2646. * \var UBXAID_INI::ecefXOrLat
  2647. * WGS84 ECEF X coordinate or latitude, depending on UBXAID_INI::flags
  2648. * \var UBXAID_INI::ecefYOrLat
  2649. * WGS84 ECEF Y coordinate or longitude, depending on UBXAID_INI::flags
  2650. * \var UBXAID_INI::ecefZOrLat
  2651. * WGS84 ECEF Z coordinate or altitude, depending on UBXAID_INI::flags
  2652. * \var UBXAID_INI::posAcc
  2653. * Position accuracy
  2654. * \var UBXAID_INI::tmCfg
  2655. * Time mark configuration
  2656. * \see #UBXINItmCfg to fill this field
  2657. * \var UBXAID_INI::wnoOrDate
  2658. * Actual week number or yearSince2000/Month (YYMM), depending on UBXAID_INI::flags
  2659. * \var UBXAID_INI::towOrDate
  2660. * Actual time of week or
  2661. * DayOfMonth/Hour/Minute/Second
  2662. * (DDHHMMSS), depending on UBXAID_INI::flags
  2663. * \var UBXAID_INI::towNs
  2664. * Fractional part of time of week
  2665. * \var UBXAID_INI::tAccMS
  2666. * Milliseconds part of time accuracy
  2667. * \var UBXAID_INI::tAccNS
  2668. * Nanoseconds part of time accuracy
  2669. * \var UBXAID_INI::clkDOrFreq
  2670. * Clock drift or frequency, depending on UBXAID_INI::flags
  2671. * \var UBXAID_INI::clkDAccOrFreqAcc
  2672. * Accuracy of clock drift or frequency, depending on UBXAID_INI::flags
  2673. * \var UBXAID_INI::flags
  2674. * Bitmask with the flags
  2675. * \see #UBXINIFlags to fill this field
  2676. */
  2677. /*!
  2678. * \struct UBXAID_REQ
  2679. * AID-REQ is not a message but a placeholder for configuration purposes.
  2680. * If the virtual AID-REQ is configured to be output (see CFG-MSG), the receiver will output a
  2681. * request for aiding data (AID-DATA) after a start-up if its internally stored data (position,
  2682. * time) don't allow it to perform a hot start. If position and time information could be
  2683. * retrieved from internal storage, no AID-REQ will be sent, even when the receiver is missing
  2684. * valid ephemeris data. Only GPS orbits are supported for GNSS.
  2685. * \note No payload
  2686. * \brief Sends a poll UXBAID_DATA for all GPS Aiding Data
  2687. */
  2688. /*!
  2689. * \struct UBXCFG_ANT_POLL
  2690. * Sending this (empty / no-payload) message to the receiver results in the receiver returning a
  2691. * message of type #UBXCFG_ANT
  2692. * \note No payload
  2693. * \brief Poll Antenna Control Settings
  2694. */
  2695. /*!
  2696. * \struct UBXANTPins
  2697. * It describes antenna pin configuration
  2698. * \brief This sturcture is a part of #UBXCFG_ANT message
  2699. * \var UBXANTPins::UBXANTpinSwitch
  2700. * PIO-Pin used for switching antenna supply (internal to TIM-LP/TIM-LF)
  2701. * \var UBXANTPins::UBXANTpinSCD
  2702. * PIO-Pin used for detecting a short in the antenna supply
  2703. * \var UBXANTPins::UBXANTpinOCD
  2704. * PIO-Pin used for detecting open/not connected antenna
  2705. * \var UBXANTPins::UBXANTreconfig
  2706. * If set to one, and this command is sent to the receiver, the receiver will reconfigure the pins as specified
  2707. */
  2708. /*!
  2709. * \struct UBXCFG_ANT
  2710. * \brief Antenna Control Settings
  2711. * \var UBXCFG_ANT::flags
  2712. * Antenna flag mask
  2713. * \see #UBXANTFlags to fill this field
  2714. * \var UBXCFG_ANT::pins
  2715. * Antenna Pin Configuration
  2716. */
  2717. /*!
  2718. * \struct UBXCFG_CFG
  2719. * See the Receiver Configuration chapter(u-blox© official documentation) for a detailed description on how Receiver
  2720. * Configuration should be used. The three masks are made up of individual bits, each bit
  2721. * indicating the sub-section of all configurations on which the corresponding action shall be
  2722. * carried out. The reserved bits in the masks must be set to '0'. For detailed information
  2723. * please refer to the Organization of the Configuration Sections (u-blox© official documentation). Please note that commands
  2724. * can be combined. The sequence of execution is Clear, Save, Load
  2725. * \brief Clear, Save and Load configurations
  2726. *
  2727. * \var UBXCFG_CFG::clearMask
  2728. * Mask with configuration sub-sections to Clear
  2729. * \note Load Default Configurations to Permanent
  2730. * Configurations in non-volatile memory
  2731. * \see #UBXCFGMask to fill this field
  2732. * \var UBXCFG_CFG::saveMask
  2733. * Mask with configuration sub-section to Save
  2734. * \note Save Current Configuration to Non-volatile
  2735. * Memory
  2736. * \see #UBXCFGMask to fill this field
  2737. * \var UBXCFG_CFG::loadMask
  2738. * Mask with configuration sub-sections to Load
  2739. * \note Load Permanent Configurations from
  2740. * Non-volatile Memory to Current
  2741. * Configurations
  2742. * \see #UBXCFGMask to fill this field
  2743. */
  2744. /*!
  2745. * \struct UBXCFG_CFG_OPT
  2746. * See the Receiver Configuration chapter(u-blox© official documentation) for a detailed description on how Receiver
  2747. * Configuration should be used. The three masks are made up of individual bits, each bit
  2748. * indicating the sub-section of all configurations on which the corresponding action shall be
  2749. * carried out. The reserved bits in the masks must be set to '0'. For detailed information
  2750. * please refer to the Organization of the Configuration Sections (u-blox© official documentation). Please note that commands
  2751. * can be combined. The sequence of execution is Clear, Save, Load
  2752. * \brief Clear, Save and Load configurations
  2753. *
  2754. * \var UBXCFG_CFG_OPT::clearMask
  2755. * Mask with configuration sub-sections to Clear
  2756. * \note Load Default Configurations to Permanent
  2757. * Configurations in non-volatile memory
  2758. * \see #UBXCFGMask to fill this field
  2759. * \var UBXCFG_CFG_OPT::saveMask
  2760. * Mask with configuration sub-section to Save
  2761. * \note Save Current Configuration to Non-volatile
  2762. * Memory
  2763. * \see #UBXCFGMask to fill this field
  2764. * \var UBXCFG_CFG_OPT::loadMask
  2765. * Mask with configuration sub-sections to Load
  2766. * \note Load Permanent Configurations from
  2767. * Non-volatile Memory to Current
  2768. * Configurations
  2769. * \see #UBXCFGMask to fill this field
  2770. * \var UBXCFG_CFG_OPT::deviceMask
  2771. * Mask which selects the devices for this
  2772. * command
  2773. * \see #UBXCFGDeviceMask to fill this field
  2774. */
  2775. /*!
  2776. * \struct UBXCFG_DAT_POLL
  2777. * Upon sending of this message, the receiver returns UBXCFG_DAT
  2778. * \note No payload
  2779. * \brief Poll Datum Setting
  2780. */
  2781. /*!
  2782. * \struct UBXCFG_DAT_IN
  2783. * \brief Set User-defined Datum
  2784. *
  2785. * \var UBXCFG_DAT_IN::majA
  2786. * Semi-major Axis
  2787. * \note accepted range = 6,300,000.0
  2788. * to 6,500,000.0 metres
  2789. * \var UBXCFG_DAT_IN::flat
  2790. * 1.0 / Flattening
  2791. * \note accepted range is 0.0 to 500.0
  2792. * \var UBXCFG_DAT_IN::dX
  2793. * X Axis shift at the origin
  2794. * \note accepted range is +/-5000.0 metres
  2795. * \var UBXCFG_DAT_IN::dY
  2796. * Y Axis shift at the origin
  2797. * \note accepted range is +/-5000.0 metres
  2798. * \var UBXCFG_DAT_IN::dZ
  2799. * Z Axis shift at the origin
  2800. * \note accepted range is +/-5000.0 metres
  2801. * \var UBXCFG_DAT_IN::rotX
  2802. * Rotation about the X Axis
  2803. * \note accepted range is +/-20.0 milli-arc seconds
  2804. * \var UBXCFG_DAT_IN::rotY
  2805. * Rotation about the Y Axis
  2806. * \note accepted range is +/-20.0 milli-arc seconds
  2807. * \var UBXCFG_DAT_IN::rotZ
  2808. * Rotation about the Z Axis
  2809. * \note accepted range is +/-20.0 milli-arc seconds
  2810. * \var UBXCFG_DAT_IN::scale
  2811. * Scale change
  2812. * \note accepted range is 0.0 to 50.0 parts per million
  2813. */
  2814. /*!
  2815. * \struct UBXCFG_DAT_OUT
  2816. * Returns the parameters of the currently defined datum. If no user-defined datum has been
  2817. * set, this will default to WGS84.
  2818. * \brief The currently defined Datum
  2819. * \var UBXCFG_DAT_OUT::datumNum
  2820. * Datum Number: 0 = WGS84, -1 = user-defined
  2821. * \var UBXCFG_DAT_OUT::datumName[6]
  2822. * ASCII String: WGS84 or USER
  2823. * \var UBXCFG_DAT_OUT::majA
  2824. * Semi-major Axis
  2825. * \note accepted range = 6,300,000.0
  2826. * to 6,500,000.0 metres
  2827. * \var UBXCFG_DAT_OUT::flat
  2828. * 1.0 / Flattening
  2829. * \note accepted range is 0.0 to 500.0
  2830. * \var UBXCFG_DAT_OUT::dX
  2831. * X Axis shift at the origin
  2832. * \note accepted range is +/-5000.0 metres
  2833. * \var UBXCFG_DAT_OUT::dY
  2834. * Y Axis shift at the origin
  2835. * \note accepted range is +/-5000.0 metres
  2836. * \var UBXCFG_DAT_OUT::dZ
  2837. * Z Axis shift at the origin
  2838. * \note accepted range is +/-5000.0 metres
  2839. * \var UBXCFG_DAT_OUT::rotX
  2840. * Rotation about the X Axis
  2841. * \note accepted range is +/-20.0 milli-arc seconds
  2842. * \var UBXCFG_DAT_OUT::rotY
  2843. * Rotation about the Y Axis
  2844. * \note accepted range is +/-20.0 milli-arc seconds
  2845. * \var UBXCFG_DAT_OUT::rotZ
  2846. * Rotation about the Z Axis
  2847. * \note accepted range is +/-20.0 milli-arc seconds
  2848. * \var UBXCFG_DAT_OUT::scale
  2849. * Scale change
  2850. * \note accepted range is 0.0 to 50.0 parts per million
  2851. */
  2852. /*!
  2853. * \struct UBXCFG_GNSS_POLL
  2854. * Polls the configuration of the GNSS system configuration\
  2855. * \note No payload
  2856. * \brief Polls the configuration of the GNSS system configuration
  2857. */
  2858. /*!
  2859. * \struct UBXCFG_GNSS
  2860. * Gets or sets the GNSS system channel sharing configuration. The receiver will send an
  2861. * #UBXACK_ACK message if the configuration is valid, an #UBXACK_NACK if any configuration
  2862. * parameter is invalid.
  2863. * The number of tracking channels in use must not exceed the number of tracking channels
  2864. * available on hardware, and the sum of all reserved tracking channels needs to be smaller or
  2865. * equal the number of tracking channels in use. Additionally, the maximum number of
  2866. * tracking channels used for the specific GNSS system must be greater or equal to the
  2867. * number of reserved tracking channels.
  2868. * See section GNSS Configuration for a discussion of the use of this message and section
  2869. * Satellite Numbering for a description of the GNSS IDs available.
  2870. * Configuration specific to the GNSS system can be done via other messages. Configuration
  2871. * specific to SBAS can be done with #UBXCFG_SBAS.
  2872. * Note that GLONASS operation cannot be selected when the receiver is configured to
  2873. * operate in Power Save Mode (using #UBXCFG_RXM).
  2874. * \note This message contains variable payload. See #UBXCFG_GNSS_PART to add variable payload.
  2875. * \brief GNSS system configuration
  2876. *
  2877. * \var UBXCFG_GNSS::msgVer
  2878. * Message version
  2879. * \var UBXCFG_GNSS::numTrkChHw
  2880. * Number of tracking channels available in
  2881. * hardware
  2882. * \note Read only
  2883. * \var UBXCFG_GNSS::numTrkChUse
  2884. * Number of tracking channels to use
  2885. * \note Should be <= UBXCFG_GNSS::numTrkChHw
  2886. * \var UBXCFG_GNSS::numConfigBlocks
  2887. * Number of configuration blocks following
  2888. */
  2889. /*!
  2890. * \struct UBXCFG_GNSS_PART
  2891. * \brief This structure is variable payload for #UBXCFG_GNSS
  2892. * \var UBXCFG_GNSS_PART::gnssId
  2893. * GNSS identifier
  2894. * \see #UBXGNSSIds to fill this field
  2895. * \var UBXCFG_GNSS_PART::resTrkCh
  2896. * Number of reserved (minimum) tracking
  2897. * channels for this GNSS system
  2898. * \var UBXCFG_GNSS_PART::maxTrkCh
  2899. * Maximum number of tracking channels used for
  2900. * this GNSS system
  2901. * \note should be >= UBXCFG_GNSS_PART::resTrkCh
  2902. * \var UBXCFG_GNSS_PART::reserved1
  2903. * Reserved
  2904. * \var UBXCFG_GNSS_PART::flags
  2905. * Bitfield of flags.\n
  2906. * The only acceptable values:\n
  2907. * - 0 - disabled
  2908. * - 1 - enabled
  2909. */
  2910. /*!
  2911. * \struct UBXCFG_INF_POLL
  2912. * \brief Poll INF message configuration for one protocol
  2913. *
  2914. * \var protocolId
  2915. * Protocol Identifier, identifying the output
  2916. * protocol for this Poll Request.
  2917. * \see #UBXCFGProtocolIds to fill this field
  2918. */
  2919. /*!
  2920. * \struct UBXCFG_INF
  2921. * The value of infMsgMask[x] below are that each bit represents one of the INF class
  2922. * messages (Bit 0 for ERROR, Bit 1 for WARNING and so on.). For a complete list, please see
  2923. * the Message Class INF(). Several configurations can be concatenated to one input
  2924. * message. In this case the payload length can be a multiple of the normal length. Output
  2925. * messages from the module contain only one configuration unit. Please note that I/O Ports 1
  2926. * 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
  2927. * SPI. I/O port 5 is reserved for future use.
  2928. * \note This message has variable payload of #UBXCFG_INF_PART type
  2929. * \brief Information message configuration
  2930. */
  2931. /*!
  2932. * \struct UBXCFG_INF_PART
  2933. * \brief The UBXCFG_INF_PART structure is variable payload for #UBXCFG_INF message
  2934. *
  2935. * \var protocolId
  2936. * Protocol Identifier, identifying for which
  2937. * protocol the configuration is set/get
  2938. * \see #UBXCFGProtocolIds to fill this field
  2939. * \var reserved0
  2940. * Reserved
  2941. * \var reserved1
  2942. * Reserved
  2943. * \var infMsgMask[6]
  2944. * A bit mask, saying which information messages
  2945. * are enabled on each I/O port
  2946. * \see #UBXCFGInfMsgMask to fill this field
  2947. */
  2948. /*!
  2949. * \struct UBXCFG_ITFM_POLL
  2950. * \note No payload
  2951. * \brief Polls the Jamming/Interference Monitor configuration.
  2952. */
  2953. /*!
  2954. * \struct UBXITFMConfig
  2955. * \brief This structure describes bitfields of UBXCFG_ITFM::config field
  2956. * \var UBXITFMConfig::bbThreshold
  2957. * Broadband jamming detection threshold
  2958. * \note unit - dB
  2959. * \var UBXITFMConfig::cwThreshold
  2960. * CW jamming detection threshold
  2961. * \note unit - dB
  2962. * \var UBXITFMConfig::reserved1
  2963. * Reserved algorithm settings
  2964. * \note should be set to 0x16B156
  2965. * \var UBXITFMConfig::enbled
  2966. * Enable interference detection
  2967. */
  2968. /*!
  2969. * \struct UBXITFMConfig2
  2970. * \brief This structure describes bitfields of UBXCFG_ITFM::config2 field
  2971. * \var UBXITFMConfig2::reserved2
  2972. * Reserved
  2973. * \note Should be 0x31E
  2974. * \var UBXITFMConfig2::antSetting
  2975. * Antenna setting
  2976. * \see #UBXITFMAntSetting to fill this field
  2977. * \var UBXITFMConfig2::reserved3
  2978. * Reserved
  2979. * \note Should be 0x00
  2980. */
  2981. /*!
  2982. * \struct UBXCFG_ITFM
  2983. * \brief Jamming/Interference Monitor configuration
  2984. *
  2985. * \var UBXCFG_ITFM::config
  2986. * Interference config word
  2987. * \see #UBXITFMConfig to fill this field
  2988. * \var UBXCFG_ITFM::config2
  2989. * Extra settings for jamming/interference monitor
  2990. * \see #UBXITFMConfig2 to fill this field
  2991. */
  2992. /*!
  2993. * \struct UBXCFG_LOGFILTER_POLL
  2994. * Upon sending of this message, the receiver returns CFG-LOGFILTER as defined below
  2995. * \note No payload
  2996. * \brief Poll Data Logger filter Configuration
  2997. */
  2998. /*!
  2999. * \struct UBXCFG_LOGFILTER
  3000. * This message is used to enable/disable logging and to get or set the position entry filter
  3001. * settings.
  3002. * Position entries can be filtered based on time difference, position difference or current
  3003. * speed thresholds. Position and speed filtering also have a minimum time interval.
  3004. * A position is logged if any of the thresholds are exceeded. If a threshold is set to zero it is
  3005. * ignored. The maximum rate of position logging is 1Hz.
  3006. * The filter settings will only be applied if the 'applyAllFilterSettings' flag is set. This enables
  3007. * recording to be enabled/disabled without affecting the other settings.
  3008. * \brief Data Logger Configuration
  3009. *
  3010. * \var UBXCFG_LOGFILTER::version
  3011. * The version of this message
  3012. * \note Set to 1
  3013. * \var UBXCFG_LOGFILTER::flags
  3014. * Flags
  3015. * \see #UBXLOGFILTERFlags to fill this field
  3016. * \var UBXCFG_LOGFILTER::minIterval
  3017. * Minimum time interval between logged
  3018. * positions
  3019. * \note This is only applied in
  3020. * combination with the speed and/or
  3021. * position thresholds
  3022. * \note 0 - not set
  3023. * \var UBXCFG_LOGFILTER::timeThreshold
  3024. * If the time difference is greater than the
  3025. * threshold then the position is logged
  3026. * \note 0 - not set
  3027. * \var UBXCFG_LOGFILTER::speedThreshold
  3028. * If the current speed is greater than the
  3029. * threshold then the position is logged
  3030. * \note 0 - not set
  3031. * \note UBXCFG_LOGFILTER::minInterval also applies
  3032. * \var UBXCFG_LOGFILTER::positionThreshold
  3033. * If the 3D position difference is greater than the
  3034. * threshold then the position is logged
  3035. * \note 0 - not set
  3036. * \note minInterval also applies
  3037. */
  3038. /*!
  3039. * \struct UBXCFG_MSG_POLL
  3040. * \brief Poll a message configuration
  3041. *
  3042. * \var UBXCFG_MSG_POLL::msgClass
  3043. * Message Class
  3044. * \see #UBXMessageClass to fill this field
  3045. * \var UBXCFG_MSG_POLL::msgId
  3046. * Message Id
  3047. * \see #UBXMessageId to fill this field
  3048. */
  3049. /*!
  3050. * \struct UBXCFG_MSG_RATES
  3051. * Set/Get message rate configurations to/from the receiver. See also section "How to change
  3052. * between protocols" (u-blox© official documentation).
  3053. * - Send rate is relative to the event a message is registered on. For example, if the rate of a
  3054. * navigation message is set to 2, the message is sent every second navigation solution. For
  3055. * configuring NMEA messages, the section "NMEA Messages Overview" (u-blox© official documentation describes Class and
  3056. * Identifier numbers used.
  3057. * \brief Set Message Rates
  3058. * \var UBXCFG_MSG_RATES::msgClass
  3059. * Message Class
  3060. * \see #UBXMessageClass to fill this field
  3061. * \var UBXCFG_MSG_RATES::msgId
  3062. * Message Id
  3063. * \see #UBXMessageId to fill this field
  3064. * \var UBXCFG_MSG_RATES::rate[6]
  3065. * Send rate on I/O Port (6 Ports)
  3066. */
  3067. /*!
  3068. * \struct UBXCFG_MSG_RATE
  3069. * Set/Get message rate configurations to/from the receiver. See also section "How to change
  3070. * between protocols" (u-blox© official documentation).
  3071. * \brief Set Message Rate
  3072. * \var UBXCFG_MSG_RATE::msgClass
  3073. * Message Class
  3074. * \see #UBXMessageClass to fill this field
  3075. * \var UBXCFG_MSG_RATE::msgId
  3076. * Message Id
  3077. * \see #UBXMessageId to fill this field
  3078. * \var UBXCFG_MSG_RATE::rate
  3079. * Send rate on current Port
  3080. */
  3081. /*!
  3082. * \struct UBXCFG_NAV5_POLL
  3083. * \note No payload
  3084. * \brief Poll Navigation Engine Settings
  3085. */
  3086. /*!
  3087. * \struct UBXCFG_NAV5
  3088. * See the Navigation "Configuration Settings Description" (u-blox© official documentation) for a detailed description of how
  3089. * these settings affect receiver operation.
  3090. * \brief Navigation Engine Settings
  3091. *
  3092. * \var mask
  3093. * Parameters Bitmask. Only the masked parameters will be applied.
  3094. * \see #UBXNAV5Mask to fill this field
  3095. * \var UBXCFG_NAV5::dynModel
  3096. * Dynamic Platform model
  3097. * \see #UBXNAV5Model to fill this field
  3098. * \var UBXCFG_NAV5::fixMode
  3099. * Position Fixing Mode
  3100. * \see #UBXNAV5FixMode to fill this field
  3101. * \var UBXCFG_NAV5::fixedAlt
  3102. * Fixed altitude (mean sea level) for 2D fix mode
  3103. * \var UBXCFG_NAV5::fixedAltVar
  3104. * Fixed altitude variance for 2D mode
  3105. * \var UBXCFG_NAV5::minElev
  3106. * Minimum Elevation for a GNSS satellite to be
  3107. * used in NAV
  3108. * \var UBXCFG_NAV5::drLimit
  3109. * Reserved
  3110. * \var UBXCFG_NAV5::pDop
  3111. * Position DOP Mask to use
  3112. * \var UBXCFG_NAV5::tDop
  3113. * Time DOP Mask to use
  3114. * \var UBXCFG_NAV5::pAcc
  3115. * Position Accuracy Mask
  3116. * \var UBXCFG_NAV5::tAcc
  3117. * Time Accuracy Mask
  3118. * \var UBXCFG_NAV5::staticHoldThresh
  3119. * Static hold threshold
  3120. * \var UBXCFG_NAV5::dgpsTimeOut
  3121. * DGPS timeout
  3122. * \var UBXCFG_NAV5::cnoThreshNumSVs
  3123. * Number of satellites required to have C/N0
  3124. * above cnoThresh for a fix to be attempted
  3125. * \var UBXCFG_NAV5::cnoThresh
  3126. * C/N0 threshold for deciding whether to attempt
  3127. * a fix
  3128. * \var UBXCFG_NAV5::reserved2
  3129. * Reserved
  3130. * \note Set to 0
  3131. * \var UBXCFG_NAV5::reserved3
  3132. * Reserved
  3133. * \note Set to 0
  3134. * \var UBXCFG_NAV5::reserved4
  3135. * Reserved
  3136. * \note Set to 0
  3137. */
  3138. /*!
  3139. * \struct UBXCFG_NAVX5_POLL
  3140. * Sending this (empty / no-payload) message to the receiver results in the receiver returning a
  3141. * message of type CFG-NAVX5 with a payload as defined below.
  3142. * \note No payload
  3143. * \brief Poll Navigation Engine Expert Settings
  3144. */
  3145. /*!
  3146. * \struct UBXCFG_NAVX5
  3147. * \brief Navigation Engine Expert Settings
  3148. *
  3149. * \var UBXCFG_NAVX5::version
  3150. * Message version
  3151. * \note 0 for this version
  3152. * \var UBXCFG_NAVX5::mask1
  3153. * First Parameters Bitmask. Only the flagged
  3154. * parameters will be applied, unused bits must be
  3155. * set to 0
  3156. * \see #UBXNAVX5Mask to fill this field
  3157. * \var UBXCFG_NAVX5::reserved0
  3158. * Reserved
  3159. * \note Set to 0
  3160. * \var UBXCFG_NAVX5::reserved1
  3161. * Reserved
  3162. * \note Set to 0
  3163. * \var UBXCFG_NAVX5::reserved2
  3164. * Reserved
  3165. * \note Set to 0
  3166. * \var UBXCFG_NAVX5::minSVs
  3167. * Minimum number of satellites for navigation
  3168. * \var UBXCFG_NAVX5::maxSVs
  3169. * Maximum number of satellites for navigation
  3170. * \var UBXCFG_NAVX5::minCNO
  3171. * Minimum satellite signal level for navigation
  3172. * \var UBXCFG_NAVX5::reserved5
  3173. * Reserved
  3174. * \note Set to 0
  3175. * \var UBXCFG_NAVX5::iniFix3D
  3176. * Initial Fix must be 3D flag
  3177. * \note
  3178. * - 0 - false
  3179. * - 1 - true
  3180. * \var UBXCFG_NAVX5::reserved6
  3181. * Reserved
  3182. * \note Set to 0
  3183. * \var UBXCFG_NAVX5::reserved7
  3184. * Reserved
  3185. * \note Set to 0
  3186. * \var UBXCFG_NAVX5::reserved8
  3187. * Reserved
  3188. * \note Set to 0
  3189. * \var UBXCFG_NAVX5::wknRollover
  3190. * GPS week rollover number; GPS week numbers
  3191. * will be set correctly from this week up to 1024
  3192. * weeks after this week.
  3193. * \note 0 reverts to firmware default.
  3194. * \var UBXCFG_NAVX5::reserved9
  3195. * Reserved
  3196. * \note Set to 0
  3197. * \var UBXCFG_NAVX5::reserved10
  3198. * Reserved
  3199. * \note Set to 0
  3200. * \var UBXCFG_NAVX5::reserved11
  3201. * Reserved
  3202. * \note Set to 0
  3203. * \var UBXCFG_NAVX5::usePPP
  3204. * Use Precise Point Positioning flag
  3205. * \note Only supported on certain product variants
  3206. * \note
  3207. * - 0 - false
  3208. * - 1 - true
  3209. * \var UBXCFG_NAVX5::aopCFG
  3210. * AssistNow Autonomous configuration
  3211. * /note
  3212. * - 0 - disabled
  3213. * - 1 - enabled
  3214. * \var UBXCFG_NAVX5::reserved12
  3215. * \note Set to 0
  3216. * \var UBXCFG_NAVX5::reserved13
  3217. * Reserved
  3218. * \note Set to 0
  3219. * \var UBXCFG_NAVX5::aopOrbMaxErr
  3220. * maximum acceptable (modelled) AssistNow
  3221. * Autonomous orbit error
  3222. * \note valid range = 5..1000,
  3223. * \note 0 - reset to firmware default
  3224. * \var UBXCFG_NAVX5::reserved14
  3225. * Reserved
  3226. * \note Set to 0
  3227. * \var UBXCFG_NAVX5::reserved15
  3228. * Reserved
  3229. * \note Set to 0
  3230. * \var UBXCFG_NAVX5::reserved3
  3231. * Reserved
  3232. * \note Set to 0
  3233. * \var UBXCFG_NAVX5::reserved4
  3234. * Reserved
  3235. * \note Set to 0
  3236. */
  3237. /*!
  3238. * \struct UBXCFG_NMEA_POLL
  3239. * \note No payload
  3240. * \brief Poll the NMEA protocol configuration
  3241. */
  3242. /*!
  3243. * \struct UBXCFG_NMEA
  3244. * Set/Get the NMEA protocol configuration. See section "NMEA Protocol Configuration" (u-blox© official documentation) for a
  3245. * detailed description of the configuration effects on NMEA output.
  3246. * \brief NMEA protocol configuration
  3247. *
  3248. * \var UBXCFG_NMEA::filter
  3249. * Filter flags
  3250. * \see #UBXNMEAFilter to fill this field
  3251. * \var UBXCFG_NMEA::nmeaVersion
  3252. * NMEA version
  3253. * \see #UBXNMEAVersion to fill this field
  3254. * \var UBXCFG_NMEA::numSV
  3255. * Maximum Number of SVs to report in NMEA
  3256. * protocol.\n
  3257. * This does not affect the receiver's operation.
  3258. * It only limits the number of SVs reported in
  3259. * NMEA mode (this might be needed with older
  3260. * mapping applications which only support 8- or
  3261. * 12-channel receivers).
  3262. * \var UBXCFG_NMEA::flags
  3263. * Flags
  3264. * \see #UBXNMEAFlags to fill this field
  3265. * \var UBXCFG_NMEA::gnssToFilter
  3266. * Filters out satellites based on their GNSS. If a
  3267. * bitfield is enabled, the corresponding satellites
  3268. * will be not output.
  3269. * \see #UBXNMEAGNSSToFilter to fill this field
  3270. * \var UBXCFG_NMEA::svNumbering
  3271. * Configures the display of satellites that do not
  3272. * have an NMEA-defined value.
  3273. * \note This does not apply to satellites with an
  3274. * unknown ID.
  3275. * \var UBXCFG_NMEA::mainTalkerId
  3276. * By default the main Talker ID (i.e. the Talker ID
  3277. * used for all messages other than GSV) is
  3278. * determined by the GNSS assignment of the
  3279. * receiver's channels (see #UBXCFG_GNSS).
  3280. * This field enables the main Talker ID to be
  3281. * overridden.
  3282. * \var UBXCFG_NMEA::gsvTalkerId
  3283. * By default the Talker ID for GSV messages is
  3284. * GNSS specific (as defined by NMEA).
  3285. * This field enables the GSV Talker ID to be
  3286. * overridden.
  3287. * \var UBXCFG_NMEA::reserved
  3288. * Reserved
  3289. * \note Set to 0
  3290. */
  3291. /*!
  3292. * \struct UBXCFG_NVS
  3293. * Three masks are made up of individual bits that indicate which data is to be cleared, saved
  3294. * and/or loaded. The fourth mask defines on which devices the corresponding action shall be
  3295. * carried out. Please note that only one command should be flagged at once. Otherwise all
  3296. * commands are processed in the order Clear, Save, and Load. All reserved bits must be set
  3297. * to zero.
  3298. * \brief Clear, Save and Load non-volatile storage data
  3299. * \var UBXCFG_NVS::clearMask
  3300. * Mask of data to be cleared
  3301. * \see #UBXCFGMask CFG_NVS section to fill this field
  3302. * \var UBXCFG_NVS::saveMask
  3303. * Mask of data to be saved
  3304. * \see #UBXCFGMask CFG_NVS section to fill this field
  3305. * \var UBXCFG_NVS::loadMask
  3306. * Mask of data to be loaded,
  3307. * \see #UBXCFGMask CFG_NVS section to fill this field
  3308. * \var UBXCFG_NVS::deviceMask
  3309. * Mask of devices to consider
  3310. * \note Default: all devices
  3311. * \see #UBXCFGDeviceMask to fill this field
  3312. */
  3313. /*!
  3314. * \struct UBXCFG_PM2_POLL
  3315. * \note No payload
  3316. * \brief Poll extended Power Management configuration
  3317. */
  3318. /*!
  3319. * \struct UBXCFG_PM2Flags
  3320. * \brief Implements bitmask for UBXCFG_PM2::flags
  3321. * \var UBXCFG_PM2Flags::blank1
  3322. * Stub to make gap
  3323. * \var UBXCFG_PM2Flags::reserved
  3324. * Reserved
  3325. * \note Must be set to '000'
  3326. * \var UBXCFG_PM2Flags::extIntSelect
  3327. * EXTINT Pin Select
  3328. * \note
  3329. * - 0 - EXTINT0
  3330. * - 1 - EXTINT1
  3331. * \var UBXCFG_PM2Flags::extIntWake
  3332. * EXTINT Pin Control
  3333. * \note
  3334. * - 0 - disabled
  3335. * - 1 - enabled, force receiver into BACKUP mode when selected EXTINT pin is 'low'
  3336. * \var UBXCFG_PM2Flags::extIntBackup
  3337. * EXTINT Pin Control
  3338. * - 0 - disabled
  3339. * - 1 - enabled, force receiver into BACKUP mode when selected EXTINT pin is 'low'
  3340. * \var UBXCFG_PM2Flags::blank2
  3341. * Stub to make gap
  3342. * \var UBXCFG_PM2Flags::limitPeakCurr
  3343. * Limit Peak Current
  3344. * \see #UBXPM2LimitPeakCurrent to fill this field
  3345. * \var UBXCFG_PM2Flags::waitTimeFix
  3346. * Wait for Timefix
  3347. * \note
  3348. * - 0 - wait for normal Fix ok, before starting on-time
  3349. * - 1 - wait for time fix ok, before starting on-time
  3350. * \var UBXCFG_PM2Flags::updateRTC
  3351. * Update Real Time Clock
  3352. * - 0 - Do not wake-up to update RTC. RTC is updated during normal on-time.
  3353. * - 1 - Update RTC. The receiver adds extra wake-up cycles to update the RTC.
  3354. * \var UBXCFG_PM2Flags::updateEPH
  3355. * Update Ephemeris
  3356. * - 0 - Do not wake-up to update Ephemeris data
  3357. * - 1 - Update Ephemeris. The receiver adds extra wake-up cycles to update the Ephemeris data
  3358. * \var UBXCFG_PM2Flags::blank3
  3359. * Stub to make gap
  3360. * \var UBXCFG_PM2Flags::doNotEnterOff
  3361. * Behavior of receiver in case of no fix
  3362. * - 0 - receiver enters inactive for search state
  3363. * - 1 - receiver does not enter inactive for search state but keeps trying to acquire a fix instead
  3364. * \var UBXCFG_PM2Flags::mode
  3365. * Mode of operation
  3366. * \see #UBXPM2Mode to fill this field
  3367. */
  3368. /*!
  3369. * \struct UBXCFG_PM2
  3370. * \brief Extended Power Management configuration
  3371. * \var UBXCFG_PM2::version
  3372. * Message version
  3373. * \note 1 for this version
  3374. * \var UBXCFG_PM2::reserved1
  3375. * Reserved
  3376. * \var UBXCFG_PM2::reserved2
  3377. * Reserved
  3378. * \var UBXCFG_PM2::reserved3
  3379. * Reserved
  3380. * \var UBXCFG_PM2::flags
  3381. * PSM configuration flags
  3382. * \note See UBXCFG_PM2Flags to fill this field
  3383. * \var UBXCFG_PM2::updatePeriod
  3384. * Position update period.
  3385. * \note If set to 0, the receiver will never retry a fix
  3386. * \var UBXCFG_PM2::searchPeriod
  3387. * Acquisition retry period
  3388. * \note If set to 0, the receiver will never retry a startup
  3389. * \var UBXCFG_PM2::gridOffset
  3390. * Grid offset relative to GPS start of week
  3391. * \var UBXCFG_PM2::onTime
  3392. * On time after first successful fix
  3393. * \var UBXCFG_PM2::minAcqTime
  3394. * Minimal search time
  3395. * \var UBXCFG_PM2::reserved4
  3396. * Reserved
  3397. * \var UBXCFG_PM2::reserved5
  3398. * Reserved
  3399. * \var UBXCFG_PM2::reserved6
  3400. * Reserved
  3401. * \var UBXCFG_PM2::reserved7
  3402. * Reserved
  3403. * \var UBXCFG_PM2::reserved8
  3404. * Reserved
  3405. * \var UBXCFG_PM2::reserved9
  3406. * Reserved
  3407. * \var UBXCFG_PM2::reserved10
  3408. * Reserved
  3409. * \var UBXCFG_PM2::reserved11
  3410. * Reserved
  3411. */
  3412. /*!
  3413. * \struct UBXCFG_PRT_POLL
  3414. * \note No payload
  3415. * \brief Polls the configuration of the used I/O Port
  3416. */
  3417. /*!
  3418. * \struct UBXCFG_PRT_POLL_OPT
  3419. * \brief Polls the configuration for one I/O Port
  3420. *
  3421. * \var UBXCFG_PRT_POLL_OPT::portId
  3422. * Port Identifier Number
  3423. * \see #UBXCFG_PRT for valid values
  3424. */
  3425. /*!
  3426. * \struct UBXCFG_PRTTxReady
  3427. * \brief This structure described TX ready PIN configuration for UBXCFG_PRT::txReady
  3428. * \var UBXCFG_PRTTxReady::en
  3429. * Enable TX ready feature for this port
  3430. * \note
  3431. * - 0 - disable
  3432. * - 1 - enabled
  3433. * \var UBXCFG_PRTTxReady::pol
  3434. * Polarity
  3435. * - 0 - High-active
  3436. * - 1 - Low-active
  3437. * \var UBXCFG_PRTTxReady::pin
  3438. * PIO to be used
  3439. * \note must not be in use already by another function
  3440. * \var UBXCFG_PRTTxReady::thres
  3441. * Threshold
  3442. * The TX ready PIN goes active after >= thres*8 bytes are pending for the port and going inactive after the last
  3443. * pending bytes have been written to hardware (0-4 bytes before end of stream).
  3444. * \note Given value is multiplied by 8 bytes
  3445. */
  3446. /*!
  3447. * \struct UBXCFG_PRTUARTMode
  3448. * It is part of #UBXCFG_PRTMode union
  3449. * \brief This structure describes port settings for UART
  3450. * \var UBXCFG_PRTUARTMode::blank0
  3451. * Stub for gap
  3452. * \var UBXCFG_PRTUARTMode::reserved1
  3453. * Reserved
  3454. * \note Set to 1 for compatibility with A4
  3455. * \var UBXCFG_PRTUARTMode::blank1
  3456. * Stub for gap
  3457. * \var UBXCFG_PRTUARTMode::charLen
  3458. * Character Length
  3459. * \see #UBXPRTModeCharLen to fill this field
  3460. * \var UBXCFG_PRTUARTMode::blank2
  3461. * Stub for gap
  3462. * \var UBXCFG_PRTUARTMode::parity
  3463. * Parity
  3464. * \see #UBXPRTModeParity to fill this field
  3465. * \var UBXCFG_PRTUARTMode::nStopBits
  3466. * Number of Stop Bits
  3467. * \see #UBXPRTModeStopBits to fill this field
  3468. * \var UBXCFG_PRTUARTMode::blank3
  3469. * Stub for gap
  3470. */
  3471. /*!
  3472. * \struct UBXCFG_PRTSPIMode
  3473. * It is part of #UBXCFG_PRTMode union
  3474. * \brief This structure describes port settings for SPI
  3475. * \var UBXCFG_PRTSPIMode::blank0
  3476. * Stub for gap
  3477. * \var UBXCFG_PRTSPIMode::spiMode
  3478. * Mode
  3479. * \see #UBXPRTSPIMode to fill this field
  3480. * \var UBXCFG_PRTSPIMode::blank1
  3481. * Stub for gap
  3482. * \var UBXCFG_PRTSPIMode::flowControl
  3483. * Flow control
  3484. * \note
  3485. * - 0 - disabled
  3486. * - 1 - enabled
  3487. * \var UBXCFG_PRTSPIMode::blank2
  3488. * Stub for gap
  3489. * \var UBXCFG_PRTSPIMode::ffCnt
  3490. * Number of bytes containing 0xFF to receive before switching off reception.
  3491. * \note Range: 0(mechanism off)-255
  3492. * \var UBXCFG_PRTSPIMode::blank3
  3493. * Stub for gap
  3494. */
  3495. /*!
  3496. * \struct UBXCFG_PRTDDCMode
  3497. * It is part of #UBXCFG_PRTMode union
  3498. * \brief This structure describes port settings for DDC(I2C)
  3499. * \var UBXCFG_PRTDDCMode::blank0
  3500. * Stub for gap
  3501. * \var UBXCFG_PRTDDCMode::slaveAddr
  3502. * Slave address
  3503. * \note Range: 0x07 < slaveAddr < 0x78. Bit 0 shall be 0
  3504. * \var UBXCFG_PRTDDCMode::blank1
  3505. * Stub for gap
  3506. */
  3507. /*!
  3508. * \union UBXCFG_PRTMode
  3509. * It is used to fill UBXCFG_PRT::mode field
  3510. * \brief This union contains mode settings for all ports
  3511. * \var UBXCFG_PRTMode::UART
  3512. * UART mode settings
  3513. * \var UBXCFG_PRTMode::SPI
  3514. * SPI mode settings
  3515. * \var UBXCFG_PRTMode::DDC
  3516. * DDC mode settings
  3517. * \var UBXCFG_PRTMode::USB
  3518. * Reserved
  3519. * \note for USB port there are no mode settings
  3520. */
  3521. /*!
  3522. * \union UBXCFG_PRT5Option
  3523. * \brief This union used as 5-th option of #UBXCFG_PRT
  3524. * \var UBXCFG_PRT5Option::UARTbaudRate
  3525. * Setup baudrate for UART ports
  3526. * \var UBXCFG_PRT5Option::OtherReserved
  3527. * Setting is reserved for all ports except UART
  3528. */
  3529. /*!
  3530. * \struct UBXCFG_PRT
  3531. * For more detailed description please look at official u-blox© documentation
  3532. * \brief Port Configuration message scope for all ports
  3533. * \var UBXCFG_PRT::portID
  3534. * Port Identifier Number
  3535. * \var UBXCFG_PRT::reserved0
  3536. * Reserved for all ports
  3537. * \var UBXCFG_PRT::txReady
  3538. * \see #UBXCFG_PRTTxReady to fill this field
  3539. * TX ready PIN configuration
  3540. * \var UBXCFG_PRT::mode;
  3541. * A bit mask describing port mode
  3542. * \see #UBXCFG_PRTMode to fille this field
  3543. * \var UBXCFG_PRT::option;
  3544. * Optional block
  3545. * \see #UBXCFG_PRT5Option to fill this field
  3546. * \var UBXCFG_PRT::inProtoMask
  3547. * A mask describing which input protocols are
  3548. * active.
  3549. * Each bit of this mask is used for a protocol.
  3550. * \note Multiple protocols can be defined
  3551. * on a single port.
  3552. * \see #UBXPRTInProtoMask to fill this field
  3553. * \var UBXCFG_PRT::outProtoMask
  3554. * A mask describing which output protocols are
  3555. * active.
  3556. * Each bit of this mask is used for a protocol.
  3557. * \note Multiple protocols can be defined
  3558. * on a single port
  3559. * \see #UBXPRTOutProtoMask to fill this field
  3560. * \var UBXCFG_PRT::flags
  3561. * Flags bit mask
  3562. * \see #UBXPRTFlags to fill this field
  3563. * \note Shall be 0 for USB
  3564. * \var UBXCFG_PRT::reserved5
  3565. * Reserved
  3566. * \note Always set to 0
  3567. */
  3568. /*!
  3569. * \struct UBXCFG_RATE_POLL
  3570. * Sending this message to the receiver results in the receiver returning a message of type #UBXCFG_RATE
  3571. * \note No payload
  3572. * \brief Poll Navigation/Measurement Rate Settings
  3573. */
  3574. /*!
  3575. * \struct UBXCFG_RATE
  3576. * The u-blox© positioning technology supports navigation update rates higher or lower than 1
  3577. * update per second. The calculation of the navigation solution will always be aligned to the
  3578. * top of a second.
  3579. * - The update rate has a direct influence on the power consumption. The more fixes that
  3580. * are required, the more CPU power and communication resources are required.
  3581. * - For most applications a 1 Hz update rate would be sufficient.
  3582. * - When using Power Save Mode, measurement and navigation rate can differ from the
  3583. * values configured here. See "Measurement and navigation rate with Power Save Mode" (u-blox© official documentation)
  3584. * for details.
  3585. * \brief Navigation/Measurement Rate Settings
  3586. *
  3587. * \var UBXCFG_RATE::measRate
  3588. * Measurement Rate, GPS measurements are
  3589. * taken every measRate milliseconds
  3590. * \var UBXCFG_RATE::navRate
  3591. * Navigation Rate, in number of measurement
  3592. * cycles.
  3593. * \note This parameter cannot be changed, and
  3594. * must be set to 1.
  3595. * \var UBXCFG_RATE::timeRef
  3596. * Alignment to reference time.
  3597. * \note
  3598. * - 0 - UTC time
  3599. * - 1 - GPS time
  3600. */
  3601. /*!
  3602. * \struct UBXCFG_RINV_POLL
  3603. * \note No payload
  3604. * \brief Poll contents of Remote Inventory
  3605. */
  3606. /*!
  3607. * \struct UBXCFG_RINV
  3608. * \note This message has variable payload
  3609. * If size of variable payload is greater than 30, the excess bytes are discarded. In future firmware versions, this limit
  3610. * may change.
  3611. * \brief Contents of Remote Inventory
  3612. * \var UBXCFG_RINV::flags
  3613. * Flags
  3614. * \see #UBXRINVFlags to fill this field
  3615. */
  3616. /*!
  3617. * \struct UBXCFG_RST
  3618. * \brief Reset Receiver / Clear Backup Data Structures
  3619. *
  3620. * \var UBXCFG_RST::navBBRMask
  3621. * BBR Sections to clear.
  3622. * \see #UBXBBRSpecialSets for special sets
  3623. * \see #UBXBBRMask to fill this field manually
  3624. * \var UBXCFG_RST::resetMode
  3625. * Reset Type
  3626. * \see #UBXResetMode to fill this field
  3627. * \var UBXCFG_RST::reserved1
  3628. * Reserved
  3629. */
  3630. /*!
  3631. * \struct UBXCFG_RXM_POLL
  3632. * \note No payload
  3633. * \brief Poll RXM configuration
  3634. */
  3635. /*!
  3636. * \struct UBXCFG_RXM
  3637. * For a detailed description see section "Power Management"(u-blox© official documentation)
  3638. * \note Power Save Mode cannot be selected when the receiver is configured to process
  3639. * GLONASS signals using #UBXCFG_GNSS.
  3640. * \brief RXM configuration
  3641. *
  3642. * \var UBXCFG_RXM::reserved1
  3643. * Reserved
  3644. * \note Shall be set to 8
  3645. * \var UBXCFG_RXM::lpMode
  3646. * Low power mode
  3647. * \see #UBXRXMLowPowerModes to fill this field
  3648. */
  3649. /*!
  3650. * \struct UBXCFG_SBAS_POLL
  3651. * \note No payload
  3652. * \brief Poll contents of SBAS Configuration
  3653. *
  3654. */
  3655. /*!
  3656. * \struct UBXCFG_SBAS
  3657. * This message configures the SBAS receiver subsystem (i.e. WAAS, EGNOS, MSAS)
  3658. * \see "SBAS Configuration Settings Description" (u-blox© official documentation)
  3659. * for a detailed description of how these settings affect receiver operation.
  3660. * \brief SBAS Configuration
  3661. *
  3662. * \var UBXCFG_SBAS::mode
  3663. * SBAS Mode
  3664. * \see #UBXSBASModes to fill this field
  3665. * \var UBXCFG_SBAS::usage
  3666. * SBAS Usage
  3667. * \see #UBXSBASUsage to fill this field
  3668. * \var UBXCFG_SBAS::maxSBAS
  3669. * Maximum Number of SBAS prioritized tracking
  3670. * channels to use
  3671. * \note valid range: 0 - 3
  3672. * \deprecated obsolete and superseeded by #UBXCFG_GNSS in protocol
  3673. * versions 14.00+.
  3674. * \var UBXCFG_SBAS::scanmode2
  3675. * Continuation of scanmode bitmask below
  3676. * \see #UBXSBASScanModes2 to fill this field
  3677. * \var UBXCFG_SBAS::scanmode1
  3678. * Which SBAS PRN numbers to search for (Bitmask)
  3679. * If all Bits are set to zero, auto-scan (i.e. all valid
  3680. * PRNs) are searched.
  3681. * Every bit corresponds to a PRN number
  3682. * \see #UBXSBASScanModes1 to fill this field
  3683. */
  3684. /*!
  3685. * \struct UBXCFG_TP5_POLL
  3686. * Sending this message to the receiver results in the receiver returning a
  3687. * message of type #UBXCFG_TP5 with a payload for timepulse 0.
  3688. * \note No payload
  3689. * \brief Poll Time Pulse Parameters
  3690. */
  3691. /*!
  3692. * \struct UBXCFG_TP5_POLL_OPT
  3693. * Sending this message to the receiver results in the receiver returning a message of type
  3694. * #UBXCFG_TP5 with a payload for the specified time pulse.
  3695. * \brief Poll Time Pulse Parameters
  3696. * \var UBXCFG_TP5_POLL_OPT::tpIdx
  3697. * Time pulse selection
  3698. * \see #UBXCFGTimepulses to fill this field
  3699. */
  3700. /*!
  3701. * \struct UBXCFG_TP5
  3702. * This message is used to get/set time pulse parameters. For more information see section
  3703. * "Time pulse" (u-blox© official documentation).
  3704. * \brief The UBXCFG_TP5 structure is
  3705. *
  3706. * \var UBXCFG_TP5::tpIdx
  3707. * Time pulse selection
  3708. * \see #UBXCFGTimepulses to fill this field
  3709. * \var UBXCFG_TP5::reserved0
  3710. * Reserved
  3711. * \var UBXCFG_TP5::reserved1
  3712. * Reserved
  3713. * \var UBXCFG_TP5::antCableDelay
  3714. * Antenna cable delay
  3715. * \var UBXCFG_TP5::rfGroupDelay
  3716. * RF group delay
  3717. * \var UBXCFG_TP5::freqPeriod
  3718. * Frequency or period time
  3719. * \note Depending on setting of bit 'isFreq'
  3720. * \var UBXCFG_TP5::freqPeriodLock
  3721. * Frequency or period time when locked to GPS
  3722. * time
  3723. * \note Only used if 'lockedOtherSet' is set
  3724. * \var UBXCFG_TP5::pulseLenRatio
  3725. * Pulse length or duty cycle
  3726. * \note Depending on 'isLength'
  3727. * \var UBXCFG_TP5::pulseLenRatioLock
  3728. * Pulse length or duty cycle when locked to GPS
  3729. * time
  3730. * \note only used if 'lockedOtherSet' is set
  3731. * \var UBXCFG_TP5::userConfigDelay
  3732. * User configurable time pulse delay
  3733. * \var UBXCFG_TP5::flags
  3734. * Configuration flags
  3735. * \see #UBXCFGTimepulseFlags to fill this field
  3736. */
  3737. /*!
  3738. * \struct UBXCFG_USB_POLL
  3739. * \note No payload
  3740. * \brief Poll a USB configuration
  3741. */
  3742. /*!
  3743. * \struct UBXCFG_USB
  3744. * \brief USB Configuration
  3745. *
  3746. * \var UBXCFG_USB::vendorId
  3747. * Vendor ID. This field shall only be set to
  3748. * registered Vendor IDs.
  3749. * \note Changing this field
  3750. * requires special Host drivers.
  3751. * \var UBXCFG_USB::productId
  3752. * Product ID.
  3753. * \note Changing this field requires special
  3754. * Host drivers.
  3755. * \var UBXCFG_USB::reserved1
  3756. * Reserved
  3757. * \note Set to 0
  3758. * \var UBXCFG_USB::reserved2
  3759. * Reserved
  3760. * \note Set to 1
  3761. * \var UBXCFG_USB::powerConsumption
  3762. * Power consumed by the device
  3763. * \var UBXCFG_USB::flags
  3764. * Various configuration flags
  3765. * \see #UBXUSBFlags to fill this field
  3766. * \var UBXCFG_USB::vendorString[32]
  3767. * String containing the vendor name. 32 ASCII bytes
  3768. * including 0-termination.
  3769. * \var UBXCFG_USB::productString[32]
  3770. * String containing the product name. 32 ASCI bytes
  3771. * including 0-termination.
  3772. * \var UBXCFG_USB::serialNumber[32]
  3773. * String containing the serial number. 32 ASCII
  3774. * bytes including 0-termination.
  3775. * \note Changing the String fields requires special Host
  3776. * drivers.
  3777. */
  3778. /*!
  3779. * \struct UBXINF_DEBUG
  3780. * This message has a variable length payload, representing an ASCII string.
  3781. * \note This message has a variable length payload
  3782. * \brief ASCII String output, indicating debug output
  3783. */
  3784. /*!
  3785. * \struct UBXINF_ERROR
  3786. * This message has a variable length payload, representing an ASCII string.
  3787. * \note This message has a variable length payload
  3788. * \brief ASCII String output, indicating an error
  3789. */
  3790. /*!
  3791. * \struct UBXINF_NOTICE
  3792. * This message has a variable length payload, representing an ASCII string.
  3793. * \note This message has a variable length payload
  3794. * \brief ASCII String output, with informational contents
  3795. */
  3796. /*!
  3797. * \struct UBXINF_TEST
  3798. * This message has a variable length payload, representing an ASCII string.
  3799. * \note This message has a variable length payload
  3800. * \brief ASCII String output, indicating test output
  3801. */
  3802. /*!
  3803. * \struct UBXINF_WARNING
  3804. * This message has a variable length payload, representing an ASCII string.
  3805. * \note This message has a variable length payload
  3806. * \brief ASCII String output, indicating a warning
  3807. */
  3808. /*!
  3809. * \struct UBXLOG_CREATE
  3810. * This message is used to create an initial logging file and activate the logging subsystem.
  3811. * #UBXACK_ACK or #UBXACK_NACK are returned to indicate success or failure.
  3812. * This message does not handle activation of recording or filtering of log entries
  3813. * \see #UBXCFG_LOGFILTER
  3814. * \brief Create Log File
  3815. * \var UBXLOG_CREATE::version
  3816. * The version of this message.
  3817. * \note Set to 0
  3818. * \var UBXLOG_CREATE::logCfg
  3819. * Config flags
  3820. * \see #UBXLOGCfg to fill this field
  3821. * \var UBXLOG_CREATE::reserved
  3822. * Reserved
  3823. * \note Set to 0
  3824. * \var UBXLOG_CREATE::logSize
  3825. * Indicates the size of the log
  3826. * \see #UBXLOGSize to fill this field
  3827. * \var UBXLOG_CREATE::userDefinedSize
  3828. * Sets the maximum amount of space in the
  3829. * filestore that can be used by the logging task
  3830. * \note This field is only applicable if logSize is set to user defined.
  3831. */
  3832. /*!
  3833. * \struct UBXLOG_ERASE
  3834. * This message deactivates the logging system and erases all logged data.
  3835. * #UBXACK_ACK or #UBXACK_NACK are returned to indicate success or failure.
  3836. * \note No payload
  3837. * \brief Erase Logged Data
  3838. */
  3839. /*!
  3840. * \struct UBXLOG_FINDTIME_IN
  3841. * This message can be used to search a log for the index of the first entry less than or equal
  3842. * to the given time. This index can then be used with the #UBXLOG_RETRIEVE message to
  3843. * provide time-based retrieval of log entries.
  3844. * \brief Finds the index of the first log entry <= given time
  3845. *
  3846. * \var UBXLOG_FINDTIME_IN::version
  3847. * Message version
  3848. * \note Set to 0
  3849. * \var UBXLOG_FINDTIME_IN::type
  3850. * Message type
  3851. * \note 0 for request
  3852. * \var UBXLOG_FINDTIME_IN::reserved1
  3853. * Reserved
  3854. * \var UBXLOG_FINDTIME_IN::year
  3855. * Year of UTC time
  3856. * \note Range 1-65635
  3857. * \var UBXLOG_FINDTIME_IN::month
  3858. * Month of UTC time
  3859. * \note Range 1-12
  3860. * \var UBXLOG_FINDTIME_IN::day
  3861. * Day of UTC time
  3862. * \note Range 1-31
  3863. * \var UBXLOG_FINDTIME_IN::hour
  3864. * Hour of UTC time
  3865. * \note Range 0-23
  3866. * \var UBXLOG_FINDTIME_IN::minute
  3867. * Minute of UTC time
  3868. * \note Range 0-59
  3869. * \var UBXLOG_FINDTIME_IN::second
  3870. * Second of UTC time
  3871. * \note Range 0-60 - looks like mistake in official documentation
  3872. * \var UBXLOG_FINDTIME_IN::reserved2
  3873. * Reserved
  3874. */
  3875. /*!
  3876. * \struct UBXLOG_FINDTIME_OUT
  3877. * \brief This message is the response to FINDTIME request.
  3878. *
  3879. * \var UBXLOG_FINDTIME_OUT::version
  3880. * Message version
  3881. * \note Set to 1
  3882. * \var UBXLOG_FINDTIME_OUT::type
  3883. * \note Is set to 1 for response
  3884. * \var UBXLOG_FINDTIME_OUT::reserved1
  3885. * Reserved
  3886. * \var UBXLOG_FINDTIME_OUT::entryNumber
  3887. * Index of the most recent entry with time <= specified
  3888. */
  3889. /*!
  3890. * \struct UBXLOG_INFO_POLL
  3891. * \note No payload
  3892. * \brief Poll for log information
  3893. */
  3894. /*!
  3895. * \struct UBXLOG_INFO
  3896. * This message is used to report information about the logging subsystem.
  3897. * \note
  3898. * - The reported maximum log size will be smaller than that originally specified in
  3899. * LOG-CREATE due to logging and filestore implementation overheads.
  3900. * - Log entries are compressed in a variable length fashion, so it may be difficult to predict
  3901. * log space usage with any precision.
  3902. * - There may be times when the receiver does not have an accurate time (e.g. if the week
  3903. * number is not yet known), in which case some entries will not have a timestamp - this
  3904. * may result in the oldest/newest entry time values not taking account of these entries.
  3905. * \brief Log information
  3906. * \var UBXLOG_INFO::version
  3907. * The version of this message
  3908. * \note Set to 1
  3909. * \var UBXLOG_INFO::reserved1[3]
  3910. * Reserved
  3911. * \var UBXLOG_INFO::filestoreCapacity
  3912. * The capacity of the filestore
  3913. * \var UBXLOG_INFO::reserved2
  3914. * Reserved
  3915. * \var UBXLOG_INFO::reserved3
  3916. * Reserved
  3917. * \var UBXLOG_INFO::currentMaxLogSize
  3918. * The maximum size the current log is allowed to grow to
  3919. * \var UBXLOG_INFO::currentLogSize
  3920. * Approximate amount of space in log currently occupied
  3921. * \var UBXLOG_INFO::entryCount
  3922. * Number of entries in the log.
  3923. * \note For circular logs this value will decrease
  3924. * when a group of entries is deleted to make
  3925. * space for new ones.
  3926. * \var UBXLOG_INFO::oldestYear
  3927. * Oldest entry UTC year.
  3928. * \note Range 1-65635 or zero if
  3929. * there are no entries with known time
  3930. * \var UBXLOG_INFO::oldestMonth
  3931. * Oldest month
  3932. * \note Range 1-12
  3933. * \var UBXLOG_INFO::oldestDay
  3934. * Oldest day
  3935. * \note Range 1-31
  3936. * \var UBXLOG_INFO::oldestHour
  3937. * Oldest hour
  3938. * \note Range 0-23
  3939. * \var UBXLOG_INFO::oldestMinute
  3940. * Oldest minute
  3941. * \note Range 0-59
  3942. * \var UBXLOG_INFO::oldestSecond
  3943. * Oldest second
  3944. * \note Range 0-60
  3945. * \var UBXLOG_INFO::reserved4
  3946. * Reserved
  3947. * \var UBXLOG_INFO::newestYear
  3948. * Newest entry UTC year year.
  3949. * \note Range 1-65635 or zero if
  3950. * there are no entries with known time
  3951. * \var UBXLOG_INFO::newestMonth
  3952. * Newest month
  3953. * \note Range 1-12
  3954. * \var UBXLOG_INFO::newestDay
  3955. * Newest day
  3956. * \note Range 1-31
  3957. * \var UBXLOG_INFO::newestHour
  3958. * Newest hour
  3959. * \note Range 0-23
  3960. * \var UBXLOG_INFO::newestMinute
  3961. * Newest minute
  3962. * \note Range 0-59
  3963. * \var UBXLOG_INFO::newestSecond
  3964. * Newest second
  3965. * \note Range 0-60
  3966. * \var UBXLOG_INFO::reserved5
  3967. * Reserved
  3968. * \var UBXLOG_INFO::status
  3969. * Log status flags
  3970. * \see #UBXLOGStatus to fill this field
  3971. * \var UBXLOG_INFO::reserved6[3]
  3972. * Reserved
  3973. */
  3974. /*!
  3975. * \struct UBXLOG_RETRIEVEPOS
  3976. * This message is used to report a position fix log entry
  3977. * \brief Position fix log entry
  3978. * \var UBXLOG_RETRIEVEPOS::entryIndex
  3979. * The index of this log entry
  3980. * \var UBXLOG_RETRIEVEPOS::lon
  3981. * Longitude
  3982. * \var UBXLOG_RETRIEVEPOS::lat
  3983. * Latitude
  3984. * \var UBXLOG_RETRIEVEPOS::hMSL
  3985. * Height above mean sea level
  3986. * \var UBXLOG_RETRIEVEPOS::hAcc
  3987. * Horizontal accuracy estimate
  3988. * \var UBXLOG_RETRIEVEPOS::gSpeed
  3989. * Ground speed (2-D)
  3990. * \var UBXLOG_RETRIEVEPOS::heading
  3991. * Heading
  3992. * \var UBXLOG_RETRIEVEPOS::version
  3993. * The version of this message.
  3994. * \note Set to 0
  3995. * \var UBXLOG_RETRIEVEPOS::fixType
  3996. * Fix type
  3997. * \see #UBXRETRIEVEPOSFixType to fill this field
  3998. * \var UBXLOG_RETRIEVEPOS::year
  3999. * Year
  4000. * \note Range 1-65635
  4001. * \var UBXLOG_RETRIEVEPOS::month
  4002. * Month
  4003. * \note Range 1-12
  4004. * \var UBXLOG_RETRIEVEPOS::day
  4005. * Day
  4006. * \note Range 1-31
  4007. * \var UBXLOG_RETRIEVEPOS::hour
  4008. * Hour
  4009. * \note Range 0-23
  4010. * \var UBXLOG_RETRIEVEPOS::minute
  4011. * Minute
  4012. * \note Range 0-59
  4013. * \var UBXLOG_RETRIEVEPOS::second
  4014. * Second
  4015. * \note Range 0-60
  4016. * \var UBXLOG_RETRIEVEPOS::reserved1
  4017. * Reserved
  4018. * \var UBXLOG_RETRIEVEPOS::numSV
  4019. * Number of satellites used in the position fix
  4020. * \var UBXLOG_RETRIEVEPOS::reserved2
  4021. * Reserved
  4022. */
  4023. /*!
  4024. * \struct UBXLOG_RETRIEVESTRING
  4025. * This message is used to report a byte string log entry
  4026. * \note this message contains variable payload of UBXLOG_RETRIEVESTRING::byteCount size
  4027. * \brief Byte string log entry
  4028. * \var UBXLOG_RETRIEVESTRING::entryIndex
  4029. * The index of this log entry
  4030. * \var UBXLOG_RETRIEVESTRING::version
  4031. * \note Set to 0
  4032. * \var UBXLOG_RETRIEVESTRING::reserved1
  4033. * Reserved
  4034. * \var UBXLOG_RETRIEVESTRING::year
  4035. * Year
  4036. * \note Range 1-65635
  4037. * \var UBXLOG_RETRIEVESTRING::month
  4038. * Month
  4039. * \note Range 1-12
  4040. * \var UBXLOG_RETRIEVESTRING::day
  4041. * Day
  4042. * \note Range 1-31
  4043. * \var UBXLOG_RETRIEVESTRING::hour
  4044. * Hour
  4045. * \note Range 0-23
  4046. * \var UBXLOG_RETRIEVESTRING::minute
  4047. * Minute
  4048. * \note Range 0-59
  4049. * \var UBXLOG_RETRIEVESTRING::second
  4050. * Second
  4051. * \note Range 0-60
  4052. * \var UBXLOG_RETRIEVESTRING::reserved2
  4053. * Reserved
  4054. * \var UBXLOG_RETRIEVESTRING::byteCount
  4055. * Size of string in bytes
  4056. */
  4057. /*!
  4058. * \struct UBXLOG_RETRIEVE
  4059. * This message is used to request logged data.
  4060. * Log entries are returned in chronological order, using the messages
  4061. * #UBXLOG_RETRIEVEPOS and #UBXLOG_RETRIEVESTRING. The maximum number of
  4062. * entries that can be returned in response to a single UBX-LOG-RETRIEVE message is 256. If
  4063. * more entries than this are required the mesage will need to be sent multiple times with
  4064. * different startNumbers. The retrieve will be stopped if any UBX-LOG message is received.
  4065. * \note The speed of transfer can be maximised by using a high data rate and temporarily stopping
  4066. * the GPS processing see #UBXCFG_RST
  4067. * \note log recording must first be disabled see #UBXCFG_LOGFILTER
  4068. * \brief Request log data
  4069. * \var UBXLOG_RETRIEVE::startNumber
  4070. * Index of first entry to be transferred
  4071. * \var UBXLOG_RETRIEVE::entryCount
  4072. * Number of log entries to transfer. The maximum
  4073. * is 256
  4074. * \var UBXLOG_RETRIEVE::version
  4075. * The version of this message
  4076. * \note Set to 0
  4077. * \var UBXLOG_RETRIEVE::reserved[3]
  4078. * Reserved
  4079. */
  4080. /*!
  4081. * \struct UBXLOG_STRING
  4082. * This message can be used to store an arbitrary byte string in the on-board flash memory.
  4083. * The maximum length that can be stored is 256 bytes.
  4084. * \note this message has variable payload
  4085. * \brief Store arbitrary string in on-board Flash memory
  4086. */
  4087. /*!
  4088. * \struct UBXMON_HW2
  4089. * Status of different aspects of the hardware such as Imbalance, Low-Level Configuration
  4090. * and POST Results.
  4091. * The first four parameters of this message represent the complex signal from the RF front
  4092. * end. The following rules of thumb apply:
  4093. * - The smaller the absolute value of the variable ofsI and ofsQ respectively, the better.
  4094. * - Ideally, the magnitude of the I-part (UBXMON_HW2::magI) and the Q-part (UBXMON_HW2::magQ) of the complex signal
  4095. * should be the same.
  4096. * \brief Extended Hardware Status
  4097. *
  4098. * \var UBXMON_HW2::ofsI
  4099. * Imbalance of I-part of complex signal, scaled.
  4100. * \note
  4101. * - -128 - max. negative imbalance
  4102. * - 127 - max. positive imbalance
  4103. * \var UBXMON_HW2::magI
  4104. * Magnitude of I-part of complex signal, scaled
  4105. * \note
  4106. * - 0 - no signal
  4107. * - 255 = max. magnitude
  4108. * \var UBXMON_HW2::ofsQ
  4109. * Imbalance of Q-part of complex signal, scaled.
  4110. * \note
  4111. * - -128 = max. negative imbalance
  4112. * - 127 = max. positive imbalance
  4113. * \var UBXMON_HW2::magQ
  4114. * Magnitude of Q-part of complex signal, scaled
  4115. * \note
  4116. * - 0 - no signal
  4117. * - 255 = max. magnitude
  4118. * \var UBXMON_HW2::cfgSource
  4119. * Source of low-level configuration
  4120. * \todo Following values will be covered with enum in future
  4121. * - 114 - ROM
  4122. * - 111 - OTP
  4123. * - 112 - config pins
  4124. * - 102 - flash image)
  4125. * \var UBXMON_HW2::reserved0[3]
  4126. * Reserved
  4127. * \var UBXMON_HW2::lowLevCfg
  4128. * Low-level configuration
  4129. * \var UBXMON_HW2::reserved1[2]
  4130. * Reserved
  4131. * \var UBXMON_HW2::postStatus
  4132. * POST status word
  4133. * \var UBXMON_HW2::reserved2
  4134. * Reserved
  4135. */
  4136. /*!
  4137. * \struct UBXHWFlags
  4138. * \brief This structure describes UBXMON_HW::flags value
  4139. * \var UBXHWFlags::UBXHWFlagsRTCCalib
  4140. * RTC is calibrated
  4141. * \var UBXHWFlags::UBXHWFlagsSafeBoot
  4142. * SafeBoot mode
  4143. * - 0 - inactive
  4144. * - 1 - active
  4145. * \var UBXHWFlags::UBXHWFlagsJammingState
  4146. * Output from Jamming/Interference Monitor
  4147. * \todo Following values will be covered with enum in future
  4148. * - 0 - unknown or feature disabled
  4149. * - 1 - ok - no significant jamming
  4150. * - 2 - warning - interference visible but fix OK
  4151. * - 3 - critical - interference visible and no fix
  4152. */
  4153. /*!
  4154. * \struct UBXMON_HW
  4155. * Status of different aspect of the hardware, such as Antenna, PIO/Peripheral Pins, Noise
  4156. * Level, Automatic Gain Control (AGC)
  4157. * \brief Hardware Status
  4158. *
  4159. * \var UBXMON_HW::pinSel
  4160. * Mask of Pins Set as Peripheral/PIO
  4161. * \var UBXMON_HW::pinBank
  4162. * Mask of Pins Set as Bank A/B
  4163. * \var UBXMON_HW::pinDir
  4164. * Mask of Pins Set as Input/Output
  4165. * \var UBXMON_HW::pinVal
  4166. * Mask of Pins Value Low/High
  4167. * \var UBXMON_HW::noisePerMS
  4168. * Noise Level as measured by the GPS Core
  4169. * \var UBXMON_HW::agcCnt
  4170. * AGC Monitor
  4171. * \note counts SIGHI xor SIGLO
  4172. * \note Range 0 to 8191
  4173. * \var UBXMON_HW::aStatus
  4174. * Status of the Antenna Supervisor State Machine
  4175. * \todo Following values will be covered with enum in future
  4176. * - 0 - INIT
  4177. * - 1 - DONTKNOW
  4178. * - 2 - OK
  4179. * - 3 - SHORT
  4180. * - 4 - OPEN
  4181. * \var UBXMON_HW::aPower
  4182. * Current PowerStatus of Antenna
  4183. * \todo Following values will be covered with enum in future
  4184. * - 0 - OFF
  4185. * - 1 - ON
  4186. * - 2 - DONTKNOW
  4187. * \var UBXMON_HW::flags
  4188. * Flags
  4189. * \see #UBXHWFlags to fill this field
  4190. * \var UBXMON_HW::reserved1
  4191. * Reserved
  4192. * \var UBXMON_HW::usedMask
  4193. * Mask of Pins that are used by the Virtual Pin
  4194. * Manager
  4195. * \var UBXMON_HW::VP[17]
  4196. * Array of Pin Mappings for each of the 17
  4197. * Physical Pins
  4198. * \var UBXMON_HW::jamInd
  4199. * CW Jamming indicator, scaled
  4200. * \todo Following values will be covered with enum in future
  4201. * - 0 - no CW jamming
  4202. * - 255 - strong CW jamming)
  4203. * \var UBXMON_HW::reserved3
  4204. * Reserved
  4205. * \var UBXMON_HW::pinIrq
  4206. * Mask of Pins Value using the PIO Irq
  4207. * \var UBXMON_HW::pullH
  4208. * Mask of Pins Value using the PIO Pull High Resistor
  4209. * \var UBXMON_HW::pullL
  4210. * Mask of Pins Value using the PIO Pull Low Resistor
  4211. */
  4212. /*!
  4213. * \struct UBXMON_IO_PART
  4214. * This message is part of #UBXMON_IO
  4215. * \brief I/O port status
  4216. * \var UBXMON_IO_PART::rxBytes
  4217. * Number of bytes ever received
  4218. * \var UBXMON_IO_PART::txBytes
  4219. * Number of bytes ever sent
  4220. * \var UBXMON_IO_PART::parityErrs
  4221. * Number of 100ms timeslots with parity errors
  4222. * \var UBXMON_IO_PART::framingErrs
  4223. * Number of 100ms timeslots with framing errors
  4224. * \var UBXMON_IO_PART::overrunErrs
  4225. * Number of 100ms timeslots with overrun errors
  4226. * \var UBXMON_IO_PART::breakCond
  4227. * Number of 100ms timeslots with break conditions
  4228. * \var UBXMON_IO_PART::rxBusy
  4229. * Flag is receiver is busy
  4230. * \var UBXMON_IO_PART::txBusy
  4231. * Flag is transmitter is busy
  4232. * \var UBXMON_IO_PART::reserved1
  4233. * Reserved
  4234. */
  4235. /*!
  4236. * \struct UBXMON_IO
  4237. * \note The size of the message is determined by the number of ports 'N' the receiver supports, i.e.
  4238. * on u-blox 5 the number of ports is 6.
  4239. * \note this message has variable payload of #UBXMON_IO_PART type.
  4240. * It depends of UBX_IO_PORTS_NUM macro that is 6 by default.
  4241. * Redefine this macro otherwise.
  4242. * \brief I/O Subsystem Status
  4243. * \var UBXMON_IO::ioPortInfo
  4244. * I/O ports information scope
  4245. * \see #UBXMON_IO_PART to fill this filed
  4246. */
  4247. /*!
  4248. * \struct UBXMON_MSGPP
  4249. * \brief Message Parse and Process Status
  4250. *
  4251. * \var UBXMON_MSGPP::msg1[8]
  4252. * Number of successfully parsed messages for
  4253. * each protocol on port 0
  4254. * \var UBXMON_MSGPP::msg2[8]
  4255. * Number of successfully parsed messages for
  4256. * each protocol on port 1
  4257. * \var UBXMON_MSGPP::msg3[8]
  4258. * Number of successfully parsed messages for
  4259. * each protocol on port 2
  4260. * \var UBXMON_MSGPP::msg4[8]
  4261. * Number of successfully parsed messages for
  4262. * each protocol on port 3
  4263. * \var UBXMON_MSGPP::msg5[8]
  4264. * Number of successfully parsed messages for
  4265. * each protocol on port 4
  4266. * \var UBXMON_MSGPP::msg6[8]
  4267. * Number of successfully parsed messages for
  4268. * each protocol on port 5
  4269. * \var UBXMON_MSGPP::skipped[6]
  4270. * Number skipped bytes for each port
  4271. */
  4272. /*!
  4273. * \struct UBXMON_RXBUF
  4274. * \brief Receiver Buffer Status
  4275. *
  4276. * \var UBXMON_RXBUF::pending[6]
  4277. * Number of bytes pending in receiver buffer for each target
  4278. * \var UBXMON_RXBUF::usage[6]
  4279. * Maximum usage receiver buffer during the last sysmon period for each target
  4280. * \note Units %
  4281. * \var UBXMON_RXBUF::peakUsage[6]
  4282. * Maximum usage receiver buffer for each target
  4283. * \note Units %
  4284. */
  4285. /*!
  4286. * \struct UBXMON_RXR
  4287. * The receiver ready message is sent when the receiver changes from or to backup mode.
  4288. * \brief Receiver Status Information
  4289. *
  4290. * \var UBXMON_RXR::flags
  4291. * Receiver status flags
  4292. * \see #UBXRXRFlags to fill this field
  4293. */
  4294. /*!
  4295. * \struct UBXMON_TXBUF
  4296. * \brief Transmitter Buffer Status
  4297. *
  4298. * \var UBXMON_TXBUF::pending[6]
  4299. * Number of bytes pending in transmitter buffefor each target
  4300. * \var UBXMON_TXBUF::usage[6]
  4301. * Maximum usage transmitter buffer during the
  4302. * last sysmon period for each target
  4303. * \note Units %
  4304. * \var UBXMON_TXBUF::peakUsage[6]
  4305. * Maximum usage transmitter buffer for each
  4306. * target
  4307. * \note Units %
  4308. * \var UBXMON_TXBUF::tUsage
  4309. * Maximum usage of transmitter buffer during
  4310. * the last sysmon period for all targets
  4311. * \note Units %
  4312. * \var UBXMON_TXBUF::tPeakusage
  4313. * Maximum usage of transmitter buffer for all
  4314. * targets
  4315. * \var UBXMON_TXBUF::errors
  4316. * Error bitmask
  4317. * \todo Bitmask will be implemented in future
  4318. * \var UBXMON_TXBUF::reserved1
  4319. * Reserved
  4320. */
  4321. /*!
  4322. * \struct UBXMON_VER_POLL
  4323. * \note No payload
  4324. * \brief Poll Receiver/Software Version
  4325. */
  4326. /*!
  4327. * \struct UBXMON_VER
  4328. * \brief Receiver Software Version
  4329. * \note Variable payload of #UBXMON_VER_PART type
  4330. * \var UBXMON_VER::swVersion[30]
  4331. * Zero-terminated Software Version String
  4332. * \var UBXMON_VER::hwVersion[10]
  4333. * Zero-terminated Hardware Version String
  4334. */
  4335. /*!
  4336. * \struct UBXMON_VER_PART
  4337. * Extended receiver/software information.
  4338. * If the receiver's firmware is running from flash,
  4339. * the first extension field will contain the Software
  4340. * Version String of the underlying ROM.
  4341. * Additional fields may also indicate the
  4342. * supported protocol version and any product
  4343. * variants, capabilities or extensions.
  4344. * \brief This structure is variable payload for #UBXMON_VER
  4345. * \var UBXMON_VER_PART::extension[30]
  4346. * See structure descruption
  4347. */
  4348. /*!
  4349. * \struct UBXNAV_AOPSTATUS
  4350. * This message provides information on the current availability of AssistNow Autonomous
  4351. * data and the current state of the subsystem on the receiver. For example, a host application
  4352. * can determine the optimal time to shut down the receiver by monitoring the status field
  4353. * for a steady 0. See the chapter "AssistNow Autonomous"(u-blox© official documentation) in the receiver description for
  4354. * details on this feature.
  4355. * \brief AssistNow Autonomous Status
  4356. * \var UBXNAV_AOPSTATUS::iTOW
  4357. * GPS time of week of the navigation epoch.
  4358. * See the description of iTOW (u-blox© official documentation) for details.
  4359. * \var UBXNAV_AOPSTATUS::aopCfg
  4360. * AssistNow Autonomous configuration
  4361. * \see #UBXAOPCfg to fill this field
  4362. * \var UBXNAV_AOPSTATUS::status
  4363. * AssistNow Autonomous subsystem is idle or running
  4364. * \see #UBXAOPStatus to fill this field
  4365. * \var UBXNAV_AOPSTATUS::reserved0
  4366. * Reserved
  4367. * \note Set to 0
  4368. * \var UBXNAV_AOPSTATUS::reserved1
  4369. * Reserved
  4370. * \note Set to 0
  4371. * \var UBXNAV_AOPSTATUS::availGPS
  4372. * data availability mask for GPS SVs
  4373. * \note bits 0-31 correspond to GPS PRN 1-32
  4374. * \var UBXNAV_AOPSTATUS::reserved2
  4375. * Reserved
  4376. * \note Set to 0
  4377. * \var UBXNAV_AOPSTATUS::reserved3
  4378. * Reserved
  4379. * \note Set to 0
  4380. */
  4381. /*!
  4382. * \struct UBXNAV_CLOCK
  4383. * \brief Clock Solution
  4384. *
  4385. * \var UBXNAV_CLOCK::iTOW
  4386. * GPS time of week of the navigation epoch.
  4387. * See the description of iTOW (u-blox© official documentation) for details.
  4388. * \var UBXNAV_CLOCK::clkB
  4389. * Clock bias
  4390. * \var UBXNAV_CLOCK::clkD
  4391. * Clock drift
  4392. * \var UBXNAV_CLOCK::tAcc
  4393. * Time accuracy estimate
  4394. * \var UBXNAV_CLOCK::fAcc
  4395. * Frequency accuracy estimate
  4396. */
  4397. /*!
  4398. * \struct UBXNAV_DGPS
  4399. * This message outputs the DGPS correction data that has been applied to the current NAV
  4400. * Solution. See also the notes on the "RTCM protocol"(u-blox© official documentation).
  4401. * \note This message has variable payload of #UBXNAV_DGPS_PART type
  4402. * \brief DGPS Data Used for NAV
  4403. *
  4404. * \var UBXNAV_DGPS::iTOW
  4405. * GPS time of week of the navigation epoch.
  4406. * See the description of iTOW (u-blox© official documentation) for details.
  4407. * \var UBXNAV_DGPS::age
  4408. * Age of newest correction data
  4409. * \var UBXNAV_DGPS::baseId
  4410. * DGPS basestation identifier
  4411. * \var UBXNAV_DGPS::baseHealth
  4412. * DGPS basestation health status
  4413. * \var UBXNAV_DGPS::numCh
  4414. * Number of channels for which correction data is following
  4415. * \var UBXNAV_DGPS::status
  4416. * DGPS correction type status
  4417. * \todo Following values will be covered with enum in future
  4418. * - 0x00 - none
  4419. * - 0x01 - PR+PRR correction
  4420. * \var UBXNAV_DGPS::reserved1
  4421. * Reserved
  4422. */
  4423. /*!
  4424. * \struct UBXDGPSFlags
  4425. * This structure implemets UBXNAV_DGPS_PART::flags
  4426. * \brief #UBXNAV_DGPS_PART flags
  4427. * \var UBXDGPSFlags::channel
  4428. * GPS channel number this SV is on
  4429. * \var UBXDGPSFlags::dgpsUsed
  4430. * DGPS used for this SV
  4431. */
  4432. /*!
  4433. * \struct UBXNAV_DGPS_PART
  4434. * \brief This sturcture implements variable payload for #UBXNAV_DGPS
  4435. *
  4436. * \var UBXNAV_DGPS_PART::svid
  4437. * Satellite ID
  4438. * \var UBXNAV_DGPS_PART::flags
  4439. * Channel number and usage
  4440. * \var UBXNAV_DGPS_PART::ageC
  4441. * Age of latest correction data
  4442. * \var UBXNAV_DGPS_PART::prc
  4443. * Pseudorange correction
  4444. * \var UBXNAV_DGPS_PART::prrc
  4445. * Pseudorange rate correction
  4446. */
  4447. /*!
  4448. * \struct UBXNAV_DOP
  4449. * - DOP values are dimensionless.
  4450. * - All DOP values are scaled by a factor of 100. If the unit transmits a value of e.g. 156, the
  4451. * DOP value is 1.56.
  4452. * \brief Dilution of precision
  4453. *
  4454. * \var UBXNAV_DOP::iTOW
  4455. * GPS time of week of the navigation epoch.
  4456. * See the description of iTOW (u-blox© official documentation) for details.
  4457. * \var UBXNAV_DOP::gDOP
  4458. * Geometric DOP
  4459. * \var UBXNAV_DOP::pDOP
  4460. * Position DOP
  4461. * \var UBXNAV_DOP::tDOP
  4462. * Time DOP
  4463. * \var UBXNAV_DOP::vDOP
  4464. * Vertical DOP
  4465. * \var UBXNAV_DOP::hDOP
  4466. * Horizontal DOP
  4467. * \var UBXNAV_DOP::nDOP
  4468. * Northing DOP
  4469. * \var UBXNAV_DOP::eDOP
  4470. * Easting DOP
  4471. */
  4472. /*!
  4473. * \struct UBXNAV_POSECEF
  4474. * \brief Position Solution in ECEF
  4475. * \var UBXNAV_POSECEF::iTOW
  4476. * GPS time of week of the navigation epoch.
  4477. * See the description of iTOW (u-blox© official documentation) for details.
  4478. * \var UBXNAV_POSECEF::ecefX
  4479. * ECEF X coordinate
  4480. * \var UBXNAV_POSECEF::ecefY
  4481. * ECEF Y coordinate
  4482. * \var UBXNAV_POSECEF::ecefZ
  4483. * ECEF Z coordinate
  4484. * \var UBXNAV_POSECEF::pAcc
  4485. * Position Accuracy Estimate
  4486. */
  4487. /*!
  4488. * \struct UBXNAV_POSLLH
  4489. * This message outputs the Geodetic position in the currently selected ellipsoid. The default is
  4490. * the WGS84 Ellipsoid, but can be changed with the message CFG-DAT.
  4491. * \warning See important comments concerning validity of position given in section
  4492. * Navigation Output Filters(u-blox© official documentation).
  4493. * \brief Geodetic Position Solution
  4494. * GPS time of week of the navigation epoch.
  4495. * See the description of iTOW (u-blox© official documentation) for details.
  4496. * \var UBXNAV_POSLLH::iTOW
  4497. * GPS time of week of the navigation epoch.
  4498. * See the description of iTOW (u-blox© official documentation) for details.
  4499. * \var UBXNAV_POSLLH::lon
  4500. * Longitude
  4501. * \var UBXNAV_POSLLH::lat
  4502. * Latitude
  4503. * \var UBXNAV_POSLLH::height
  4504. * Height above ellipsoid
  4505. * \var UBXNAV_POSLLH::hMSL
  4506. * Height above mean sea level
  4507. * \var UBXNAV_POSLLH::hAcc
  4508. * Horizontal accuracy estimate
  4509. * \var UBXNAV_POSLLH::vAcc
  4510. * Vertical accuracy estimate
  4511. */
  4512. /*!
  4513. * \struct UBXPVTFlags
  4514. * \brief this structure implements UBXNAV_PVT::flags
  4515. * \var gnssFixOk
  4516. * A valid fix (i.e within DOP & accuracy masks)
  4517. * \var diffSoln:1
  4518. * 1 if differential corrections were applied
  4519. * \var psmState:3
  4520. * Power Save Mode state
  4521. * \see #UBXPVTPSMStates to fill this field
  4522. */
  4523. /*!
  4524. * \struct UBXNAV_PVT
  4525. * This message combines position, velocity and time solution, including accuracy figures
  4526. * \brief Navigation Position Velocity Time Solution
  4527. * \note that during a leap second there may be more (or less) than 60 seconds in a
  4528. * minute.\n
  4529. * See the description of leap seconds(u-blox© official documentation) for details.
  4530. * \var UBXNAV_PVT::iTOW
  4531. * GPS time of week of the navigation epoch.
  4532. * See the description of iTOW (u-blox© official documentation) for details.
  4533. * \var UBXNAV_PVT::year
  4534. * Year (UTC)
  4535. * \note Range 1-65635
  4536. * \var UBXNAV_PVT::month
  4537. * Month
  4538. * \note Range 1-12
  4539. * \var UBXNAV_PVT::day
  4540. * Day
  4541. * \note Range 1-31
  4542. * \var UBXNAV_PVT::hour
  4543. * Hour
  4544. * \note Range 0-23
  4545. * \var UBXNAV_PVT::minute
  4546. * Minute
  4547. * \note Range 0-59
  4548. * \var UBXNAV_PVT::second
  4549. * Second
  4550. * \note Range 0-60
  4551. * \var UBXNAV_PVT::valid
  4552. * Validity Flags
  4553. * \see #UBXPVTValid to fill this field
  4554. * \var UBXNAV_PVT::tAcc
  4555. * Time accuracy estimate
  4556. * \var UBXNAV_PVT::nano
  4557. * Fraction of second
  4558. * \note Range -1e9 .. 1e9
  4559. * \var UBXNAV_PVT::fixType
  4560. * GNSSfix Type
  4561. * \see #UBXGPSFix to fill this field
  4562. * \var UBXNAV_PVT::flags
  4563. * Fix Status Flags
  4564. * \see #UBXPVTFlags to fill this field
  4565. * \var UBXNAV_PVT::reserved1
  4566. * Reserved
  4567. * \var UBXNAV_PVT::numSV
  4568. * Number of satellites used in Nav Solution
  4569. * \var UBXNAV_PVT::lon
  4570. * Longitude
  4571. * \var UBXNAV_PVT::lat
  4572. * Latitude
  4573. * \var UBXNAV_PVT::height
  4574. * Height above Ellipsoid
  4575. * \var UBXNAV_PVT::hMSL
  4576. * Height above mean sea level
  4577. * \var UBXNAV_PVT::hAcc
  4578. * Horizontal Accuracy Estimate
  4579. * \var UBXNAV_PVT::vAcc
  4580. * Vertical Accuracy Estimate
  4581. * \var UBXNAV_PVT::velN
  4582. * NED north velocity
  4583. * \var UBXNAV_PVT::velE
  4584. * NED east velocity
  4585. * \var UBXNAV_PVT::velD
  4586. * NED down velocity
  4587. * \var UBXNAV_PVT::gSpeed
  4588. * Ground Speed (2-D)
  4589. * \var UBXNAV_PVT::heading
  4590. * Heading of motion 2-D
  4591. * \var UBXNAV_PVT::sAcc
  4592. * Speed Accuracy Estimate
  4593. * \var UBXNAV_PVT::headingAcc
  4594. * Heading Accuracy Estimate
  4595. * \var UBXNAV_PVT::pDOP
  4596. * Position DOP
  4597. * \var UBXNAV_PVT::reserved2
  4598. * Reserved
  4599. * \var UBXNAV_PVT::reserved3
  4600. * Reserved
  4601. */
  4602. /*!
  4603. * \struct UBXNAV_SBAS
  4604. * This message outputs the status of the SBAS sub system
  4605. * \note this message has variable payload of #UBXNAV_SBAS_PART type
  4606. * \brief SBAS Status Data
  4607. *
  4608. * \var UBXNAV_SBAS::iTOW
  4609. * GPS time of week of the navigation epoch.
  4610. * See the description of iTOW (u-blox© official documentation) for details.
  4611. * \var UBXNAV_SBAS::geo
  4612. * PRN Number of the GEO where correction and
  4613. * integrity data is used from
  4614. * \var UBXNAV_SBAS::mode
  4615. * SBAS Mode
  4616. * \todo Following values will be covered with enum in future
  4617. * - 0 Disabled
  4618. * - 1 Enabled Integrity
  4619. * - 3 Enabled Testmode
  4620. * \var UBXNAV_SBAS::sys
  4621. * SBAS System (WAAS/EGNOS/...)
  4622. * \todo Following values will be covered with enum in future
  4623. * - -1 Unknown
  4624. * - 0 WAAS
  4625. * - 1 EGNOS
  4626. * - 2 MSAS
  4627. * - 16 GPS
  4628. * \var UBXNAV_SBAS::service
  4629. * SBAS Services available
  4630. * \see #UBXSBASService to fill this field
  4631. * \var UBXNAV_SBAS::cnt
  4632. * Number of SV data following
  4633. * \var UBXNAV_SBAS::reserved0[3]
  4634. * Reserved
  4635. */
  4636. /*!
  4637. * \struct UBXNAV_SBAS_PART
  4638. * \brief Variable payload for #UBXNAV_SBAS
  4639. *
  4640. * \var UBXNAV_SBAS_PART::svid
  4641. * SV Id
  4642. * \var UBXNAV_SBAS_PART::flags
  4643. * Flags for this SV
  4644. * \var UBXNAV_SBAS_PART::udre
  4645. * Monitoring status
  4646. * \var UBXNAV_SBAS_PART::svSys
  4647. * System (WAAS/EGNOS/...) same as UBXNAV_SBAS::sys
  4648. * \var UBXNAV_SBAS_PART::svService
  4649. * Services available same as UBXNAV_SBAS::service
  4650. * \var UBXNAV_SBAS_PART::reserved1
  4651. * Reserved
  4652. * \var UBXNAV_SBAS_PART::prc
  4653. * Pseudo Range correction
  4654. * \var UBXNAV_SBAS_PART::reserved2
  4655. * Reserved
  4656. * \var UBXNAV_SBAS_PART::ic
  4657. * Ionosphere correction
  4658. */
  4659. /*!
  4660. * \struct UBXNAV_SOL
  4661. * This message combines position, velocity and time solution in ECEF, including accuracy figures.
  4662. * This message has only been retained for backwards compatibility; users are recommended
  4663. * to use the UBX-NAV-PVT message in preference.
  4664. * \brief Navigation Solution Information
  4665. *
  4666. * \var UBXNAV_SOL::iTOW
  4667. * GPS time of week of the navigation epoch.
  4668. * See the description of iTOW (u-blox© official documentation) for details.
  4669. * \var UBXNAV_SOL::fTOW
  4670. * Fractional part of iTOW
  4671. * The precise GPS time of week in seconds is:
  4672. * (UBXNAV_SOL::iTOW * 1e-3) + (UBXNAV_SOL::fTOW * 1e-9)
  4673. * \note Range +/-500000
  4674. * \var UBXNAV_SOL::week
  4675. * GPS week number of the navigation epoch
  4676. * \var UBXNAV_SOL::gpsFix
  4677. * GPS fix type
  4678. * \see #UBXGPSFix to fill this field
  4679. * \var UBXNAV_SOL::flags
  4680. * Fix Status Flags
  4681. * \see #UBXSBASSOLFlags to fill this field
  4682. * \var UBXNAV_SOL::ecefX
  4683. * ECEF X coordinate
  4684. * \var UBXNAV_SOL::ecefY
  4685. * ECEF Y coordinate
  4686. * \var UBXNAV_SOL::ecefZ
  4687. * ECEF Z coordinate
  4688. * \var UBXNAV_SOL::pAcc
  4689. * 3D Position Accuracy Estimate
  4690. * \var UBXNAV_SOL::ecefVX
  4691. * ECEF X velocity
  4692. * \var UBXNAV_SOL::ecefVY
  4693. * ECEF Y velocity
  4694. * \var UBXNAV_SOL::ecefVZ
  4695. * ECEF Z velocity
  4696. * \var UBXNAV_SOL::sAcc
  4697. * Speed Accuracy Estimate
  4698. * \var UBXNAV_SOL::pDOP
  4699. * Position DOP
  4700. * \var UBXNAV_SOL::reserved1
  4701. * Reserved
  4702. * \var UBXNAV_SOL::numSV
  4703. * Number of SVs used in Nav Solution
  4704. * \var UBXNAV_SOL::reserved2
  4705. * Reserved
  4706. */
  4707. /*!
  4708. * \struct UBXNAV_STATUS
  4709. * Validity of position and velocity given in.
  4710. * \warning See important comments concerningsection Navigation Output Filters(u-blox© official documentation).
  4711. * \brief Receiver Navigation Status
  4712. * \var UBXNAV_STATUS::iTOW
  4713. * GPS time of week of the navigation epoch.
  4714. * See the description of iTOW (u-blox© official documentation) for details.
  4715. * \var UBXNAV_STATUS::gpsFix
  4716. * GPSfix Type, this value does not qualify a fix as
  4717. * valid and within the limits
  4718. * \see #UBXGPSFix to fill this field
  4719. * \var UBXNAV_STATUS::flags
  4720. * Navigation Status Flags
  4721. * \see #UBXGPSFix to fill this field
  4722. * \var UBXNAV_STATUS::fixStat
  4723. * Fix Status Information
  4724. * \see #UBXSBASSOLFlags to fill this field
  4725. * \var UBXNAV_STATUS::flags2
  4726. * Further information about navigation output
  4727. * \todo Structure to fill this field will be implemtened in future
  4728. * - 0 -ACQUISITION [or when psm disabled]
  4729. * - 1 - TRACKING
  4730. * - 2 - POWER OPTIMIZED TRACKING
  4731. * - 3 - INACTIVE
  4732. * \var UBXNAV_STATUS::ttff
  4733. * Time to first fix (millisecond time tag)
  4734. * \var UBXNAV_STATUS::msss
  4735. * Milliseconds since Startup / Reset
  4736. */
  4737. /*!
  4738. * \struct UBXSVINFOGlobalFlags
  4739. * \brief Implements UBXNAV_SVINFO::globalFlags
  4740. * \var UBXSVINFOGlobalFlags::chipGen:3
  4741. * Chip hardware generation
  4742. * \see #UBXSVINFOChipGen to fill this field
  4743. */
  4744. /*!
  4745. * \struct UBXNAV_SVINFO
  4746. * \note this message has variable payload of #UBXNAV_SVINFO_PART type
  4747. * \brief Space Vehicle Information
  4748. *
  4749. * \var UBXNAV_SVINFO::iTOW
  4750. * GPS time of week of the navigation epoch.
  4751. * See the description of iTOW (u-blox© official documentation) for details.
  4752. * \var UBXNAV_SVINFO::numCh
  4753. * Number of channels
  4754. * \var UBXNAV_SVINFO::globalFlags
  4755. * Bitmask
  4756. * \var UBXNAV_SVINFO::reserved2
  4757. * Reserved
  4758. */
  4759. /*!
  4760. * \struct UBXSVINFOQuality
  4761. * \brief Implements UBXNAV_SVINFO_PART::quality
  4762. * \var UBXSVINFOQuality::qualityInd
  4763. * Signal Quality indicator
  4764. * \see #UBXSVINFOQualityId to fill this field
  4765. */
  4766. /*!
  4767. * \struct UBXNAV_SVINFO_PART
  4768. * \brief Variable payload for #UBXNAV_SVINFO
  4769. *
  4770. * \var UBXNAV_SVINFO_PART::chn
  4771. * Channel number, 255 for SVs not assigned to a channel
  4772. * \var UBXNAV_SVINFO_PART::svid
  4773. * Satellite ID, see Satellite numbering(u-blox© official documentation) for
  4774. * assignment
  4775. * \var UBXNAV_SVINFO_PART::flags
  4776. * Bitmask
  4777. * \see #UBXSVINFOFlags to fill this field
  4778. * \var UBXNAV_SVINFO_PART::quality
  4779. * Bitfield
  4780. * \see #UBXSVINFOQuality to fill this field
  4781. * \var UBXNAV_SVINFO_PART::cno
  4782. * Carrier to Noise Ratio (Signal Strength)
  4783. * \var UBXNAV_SVINFO_PART::elev
  4784. * Elevation in integer degrees
  4785. * \var UBXNAV_SVINFO_PART::azim
  4786. * Azimuth in integer degrees
  4787. * \var UBXNAV_SVINFO_PART::prRes
  4788. * Pseudo range residual in centimetres
  4789. */
  4790. /*!
  4791. * \struct UBXNAV_TIMEGPS
  4792. * This message reports the precise GPS time of the most recent navigation solution including
  4793. * validity falgs and an accuracy estimate.
  4794. * \brief GPS Time Solution
  4795. *
  4796. * \var UBXNAV_TIMEGPS::iTOW
  4797. * GPS time of week of the navigation epoch.
  4798. * See the description of iTOW (u-blox© official documentation) for details.
  4799. * \var UBXNAV_TIMEGPS::fTOW
  4800. * Fractional part of iTOW
  4801. * The precise GPS time of week in seconds is:
  4802. * (UBXNAV_SOL::iTOW * 1e-3) + (UBXNAV_SOL::fTOW * 1e-9)
  4803. * \var UBXNAV_TIMEGPS::week
  4804. * GPS week number of the navigation epoch
  4805. * \var UBXNAV_TIMEGPS::leapS
  4806. * GPS leap seconds
  4807. * \var UBXNAV_TIMEGPS::valid
  4808. * Validity Flags
  4809. * \see #UBXTIMEGPSValidityFlags to fill this field
  4810. * \var UBXNAV_TIMEGPS::tAcc
  4811. * Time Accuracy Estimate
  4812. */
  4813. /*!
  4814. * \struct UBXNAV_TIMEUTC
  4815. * Note that during a leap second there may be more (or less) than 60 seconds in a
  4816. * minute; see the description of leap seconds(u-blox© official documentation) for details.
  4817. * \brief UTC Time Solution
  4818. * \var UBXNAV_TIMEUTC::iTOW
  4819. * GPS time of week of the navigation epoch.
  4820. * See the description of iTOW (u-blox© official documentation) for details.
  4821. * \var UBXNAV_TIMEUTC::tAcc
  4822. * Time accuracy estimate (UTC)
  4823. * \var UBXNAV_TIMEUTC::nano
  4824. * Fraction of second
  4825. * \note Range -1e9 .. 1e9 (UTC)
  4826. * \var UBXNAV_TIMEUTC::year
  4827. * Year (UTC)
  4828. * \note Range 1-65635
  4829. * \var UBXNAV_TIMEUTC::month
  4830. * Month
  4831. * \note Range 1-12
  4832. * \var UBXNAV_TIMEUTC::day
  4833. * Day
  4834. * \note Range 1-31
  4835. * \var UBXNAV_TIMEUTC::hour
  4836. * Hour
  4837. * \note Range 0-23
  4838. * \var UBXNAV_TIMEUTC::minute
  4839. * Minute
  4840. * \note Range 0-59
  4841. * \var UBXNAV_TIMEUTC::second
  4842. * Second
  4843. * \var valid
  4844. * Validity Flags
  4845. * \see #UBXTIMEUTCValidityFlags to fill this field
  4846. */
  4847. /*!
  4848. * \struct UBXNAV_VELECEF
  4849. * See important comments concerning validity of velocity given in section
  4850. * Navigation Output Filters(u-blox© official documentation).
  4851. * \brief Velocity Solution in ECEF
  4852. * \var UBXNAV_VELECEF::iTOW
  4853. * GPS time of week of the navigation epoch.
  4854. * See the description of iTOW (u-blox© official documentation) for details.
  4855. * \var UBXNAV_VELECEF::ecefVX
  4856. * ECEF X velocity
  4857. * \var UBXNAV_VELECEF::ecefVY
  4858. * ECEF Y velocity
  4859. * \var UBXNAV_VELECEF::ecefVZ
  4860. * ECEF Z velocity
  4861. * \var UBXNAV_VELECEF::sAcc
  4862. * Speed accuracy estimate
  4863. */
  4864. /*!
  4865. * \struct UBXNAV_VELNED
  4866. * See important comments concerning validity of velocity given in section
  4867. * Navigation Output Filters(u-blox© official documentation).
  4868. * \brief Velocity Solution in NED
  4869. *
  4870. * \var UBXNAV_VELNED::iTOW
  4871. * GPS time of week of the navigation epoch.
  4872. * See the description of iTOW (u-blox© official documentation) for details.
  4873. * \var UBXNAV_VELNED::velN
  4874. * North velocity component
  4875. * \var UBXNAV_VELNED::velE
  4876. * East velocity component
  4877. * \var UBXNAV_VELNED::velD
  4878. * Down velocity component
  4879. * \var UBXNAV_VELNED::speed
  4880. * Speed (3-D)
  4881. * \var UBXNAV_VELNED::gSpeed
  4882. * Ground speed (2-D)
  4883. * \var UBXNAV_VELNED::heading
  4884. * Heading of motion 2-D
  4885. * \var UBXNAV_VELNED::sAcc
  4886. * Speed accuracy Estimate
  4887. * \var UBXNAV_VELNED::cAcc
  4888. * Course / Heading accuracy estimate
  4889. */
  4890. /*!
  4891. * \struct UBXRXM_ALM_POLL
  4892. * \note No payload
  4893. * \brief Poll GPS Constellation Almanac Data
  4894. */
  4895. /*!
  4896. * \struct UBXRXM_ALM_POLL_OPT
  4897. * \brief Poll GPS Constellation Almanac Data for a SV
  4898. *
  4899. * \var UBXRXM_ALM_POLL_OPT::svid
  4900. * SV ID for which the receiver shall return its Almanac Data
  4901. * \note Valid Range: 1..32
  4902. */
  4903. /*!
  4904. * \struct UBXRXM_ALM
  4905. * - If the WEEK Value is 0, DWRD0 to DWRD7 are not sent as the Almanac is not available
  4906. * for the given SV.
  4907. * - DWORD0 to DWORD7 contain the 8 words following the Hand-Over Word ( HOW )
  4908. * from the GPS navigation message, either pages 1 to 24 of sub-frame 5 or pages 2 to 10
  4909. * of subframe 4. See IS-GPS-200 for a full description of the contents of the Almanac
  4910. * pages.
  4911. * - In DWORD0 to DWORD7, the parity bits have been removed, and the 24 bits of data are
  4912. * located in Bits 0 to 23. Bits 24 to 31 shall be ignored.
  4913. * - Example: Parameter e (Eccentricity) from Almanac Subframe 4/5, Word 3, Bits 69-84
  4914. * within the subframe can be found in DWRD0, Bits 15-0 whereas Bit 0 is the LSB.
  4915. * \brief GPS Aiding Almanac Input/Output Message
  4916. *
  4917. * \deprecated This RMX messages marked as obsolete API use AID instead
  4918. * \var UBXRXM_ALM::svid
  4919. * SV ID for which this Almanac Data
  4920. * \note Valid Range: 1 .. 32 or 51, 56, 63.
  4921. * \var UBXRXM_ALM::week
  4922. * Issue Date of Almanac (GPS week number)
  4923. */
  4924. /*!
  4925. * \struct UBXRXM_ALM_OPT
  4926. * - If the WEEK Value is 0, DWRD0 to DWRD7 are not sent as the Almanac is not available
  4927. * for the given SV.
  4928. * - DWORD0 to DWORD7 contain the 8 words following the Hand-Over Word ( HOW )
  4929. * from the GPS navigation message, either pages 1 to 24 of sub-frame 5 or pages 2 to 10
  4930. * of subframe 4. See IS-GPS-200 for a full description of the contents of the Almanac
  4931. * pages.
  4932. * - In DWORD0 to DWORD7, the parity bits have been removed, and the 24 bits of data are
  4933. * located in Bits 0 to 23. Bits 24 to 31 shall be ignored.
  4934. * - Example: Parameter e (Eccentricity) from Almanac Subframe 4/5, Word 3, Bits 69-84
  4935. * within the subframe can be found in DWRD0, Bits 15-0 whereas Bit 0 is the LSB.
  4936. * \brief GPS Aiding Almanac Input/Output Message
  4937. * \deprecated This RMX messages marked as obsolete API use AID instead
  4938. * \var UBXRXM_ALM_OPT::svid
  4939. * SV ID for which this Almanac Data
  4940. * \note Valid Range: 1 .. 32 or 51, 56, 63.
  4941. * \var UBXRXM_ALM_OPT::week
  4942. * Issue Date of Almanac (GPS week number)
  4943. * \var UBXRXM_ALM_OPT::dwrd[8]
  4944. * Almanac Words
  4945. */
  4946. /*!
  4947. * \struct UBXRXM_EPH_POLL
  4948. * Poll GPS Constellation Data (Ephemeris) for all 32 SVs by sending this message to the
  4949. * receiver without any payload.
  4950. * \note No payload
  4951. * \brief Poll GPS Constellation Ephemeris Data
  4952. */
  4953. /*!
  4954. * \struct UBXRXM_EPH_POLL_OPT
  4955. * Poll GPS Constellation Data (Ephemeris) for an SV by sending this message to the receiver.
  4956. * \brief Poll GPS Constellation Ephemeris Data for a SV
  4957. *
  4958. * \var UBXRXM_EPH_POLL_OPT::svid
  4959. * SV ID for which this Almanac Data
  4960. * \note Valid Range: 1 .. 32 or 51, 56, 63.
  4961. */
  4962. /*!
  4963. * \struct UBXRXM_EPH
  4964. * - SF1D0 to SF3D7 is only sent if ephemeris is available for this SV. If not, the payload may
  4965. * be reduced to 8 Bytes, or all bytes are set to zero, indicating that this SV Number does
  4966. * not have valid ephemeris for the moment.
  4967. * - SF1D0 to SF3D7 contain the 24 words following the Hand-Over Word ( HOW ) from the
  4968. * GPS navigation message, subframes 1 to 3. See IS-GPS-200 for a full description of the
  4969. * contents of the Subframes.
  4970. * - In SF1D0 to SF3D7, the parity bits have been removed, and the 24 bits of data are
  4971. * located in Bits 0 to 23. Bits 24 to 31 shall be ignored.
  4972. * \brief GPS Aiding Ephemeris Input/Output Message
  4973. *
  4974. * \deprecated This RMX messages marked as obsolete API use AID instead
  4975. * \var UBXRXM_EPH::svid
  4976. * SV ID for which this Almanac Data
  4977. * \var UBXRXM_EPH::how
  4978. * Hand-Over Word of first Subframe. This is
  4979. * required if data is sent to the receiver.
  4980. * 0 indicates that no Ephemeris Data is following.
  4981. */
  4982. /*!
  4983. * \struct UBXRXM_EPH_OPT
  4984. * - SF1D0 to SF3D7 is only sent if ephemeris is available for this SV. If not, the payload may
  4985. * be reduced to 8 Bytes, or all bytes are set to zero, indicating that this SV Number does
  4986. * not have valid ephemeris for the moment.
  4987. * - SF1D0 to SF3D7 contain the 24 words following the Hand-Over Word ( HOW ) from the
  4988. * GPS navigation message, subframes 1 to 3. See IS-GPS-200 for a full description of the
  4989. * contents of the Subframes.
  4990. * - In SF1D0 to SF3D7, the parity bits have been removed, and the 24 bits of data are
  4991. * located in Bits 0 to 23. Bits 24 to 31 shall be ignored.
  4992. * \brief GPS Aiding Ephemeris Input/Output Message
  4993. *
  4994. * \deprecated This RMX messages marked as obsolete API use AID instead
  4995. * \var UBXRXM_EPH_OPT::svid
  4996. * SV ID for which this Almanac Data
  4997. * \var UBXRXM_EPH_OPT::how
  4998. * \var UBXRXM_EPH_OPT::sf1d[8]
  4999. * Subframe 1 Words 3..10 (SF1D0..SF1D7)
  5000. * \var UBXRXM_EPH_OPT::sf2d[8]
  5001. * Subframe 2 Words 3..10 (SF2D0..SF2D7)
  5002. * \var UBXRXM_EPH_OPT::sf3d[8]
  5003. * Subframe 3 Words 3..10 (SF3D0..SF3D7)
  5004. */
  5005. /*!
  5006. * \struct UBXRXM_PMREQ
  5007. * Request of a Power Management related task of the receiver.
  5008. * \brief Requests a Power Management task
  5009. * \var UBXRXM_PMREQ::duration
  5010. * Duration of the requested task
  5011. * \note Set to 0 for infinite duration
  5012. * \var UBXRXM_PMREQ::flags
  5013. * Task flags
  5014. * \see #UBXPMREQFlags to fill this field
  5015. */
  5016. /*!
  5017. * \struct UBXRXM_RAW
  5018. * This message contains all information needed to be able to generate a RINEX observation
  5019. * file.
  5020. * This message outputs pseudorange, doppler and carrier phase measurements for GPS
  5021. * satellites once signals have been synchronised. No other GNSS types are currently
  5022. * supported.
  5023. * \note This message has variable payload of #UBXRXM_RAW_PART type
  5024. * \brief Raw Measurement Data
  5025. *
  5026. * \var UBXRXM_RAW::rcvTow
  5027. * Measurement time of week in receiver local
  5028. * time
  5029. * \var UBXRXM_RAW::week
  5030. * Measurement week number in receiver local
  5031. * time
  5032. * \var UBXRXM_RAW::numSV
  5033. * Number of satellites following
  5034. * \var UBXRXM_RAW::reserved1
  5035. * Reserved
  5036. */
  5037. /*!
  5038. * \struct UBXRXM_RAW_PART
  5039. * \brief Variable payload for #UBXRXM_RAW
  5040. * \var UBXRXM_RAW_PART::cpMes
  5041. * Carrier phase measurement
  5042. * \var UBXRXM_RAW_PART::prMes
  5043. * Pseudorange measurement
  5044. * \var UBXRXM_RAW_PART::doMes
  5045. * Doppler measurement (positive sign for approaching satellites)
  5046. * \var UBXRXM_RAW_PART::sv
  5047. * Space Vehicle number
  5048. * \var UBXRXM_RAW_PART::mesQI
  5049. * Nav Measurements Quality Indicator:
  5050. * \note
  5051. * - >=4 - PR+DO OK
  5052. * - >=5 - PR+DO+CP OK
  5053. * - <6 - likely loss of carrier lock in previous interval
  5054. * \var UBXRXM_RAW_PART::cno
  5055. * Signal strength C/No
  5056. * \var UBXRXM_RAW_PART::lli
  5057. * Loss of lock indicator (RINEX definition)
  5058. */
  5059. /*!
  5060. * \struct UBXRXM_SFRB
  5061. * The content of one single subframe buffer
  5062. * For GPS satellites, the 10 dwrd values contain the parity checked subframe data for 10
  5063. * Words. Each dwrd has 24 Bits with valid data (Bits 23 to 0). The remaining 8 bits (31 to 24)
  5064. * have an undefined value. The direction within the Word is that the higher order bits are
  5065. * received from the SV first. Example: The Preamble can be found in dwrd[0], at bit position
  5066. * 23 down to 16. For more details on the data format please refer to the ICD-GPS-200C
  5067. * Interface document.
  5068. * For SBAS satellites, the 250 Bit message block can be found in dwrd[0] to dwrd[6] for the
  5069. * first 224 bits. The remaining 26 bits are in dwrd[7], whereas Bits 25 and 24 are the last two
  5070. * data bits, and Bits 23 down to 0 are the parity bits. For more information on SBAS data
  5071. * format, please refer to RTCA/DO-229C (MOPS), Appendix A.
  5072. * No other GNSS types are currently supported.
  5073. * \brief Subframe Buffer
  5074. * \var UBXRXM_SFRB::chn
  5075. * Channel Number
  5076. * \var UBXRXM_SFRB::svid
  5077. * ID of Satellite transmitting Subframe
  5078. * \var UBXRXM_SFRB::dwrd[10]
  5079. * Words of Data
  5080. */
  5081. /*!
  5082. * \struct UBXRXM_SVSI
  5083. * Status of the receiver manager knowledge about GPS Orbit Validity
  5084. * \note This message has variable payload of #UBXRXM_SVSI_PART type
  5085. * \brief SV Status Info
  5086. *
  5087. * \var UBXRXM_SVSI::iTOW
  5088. * GPS time of week of the navigation epoch.
  5089. * See the description of iTOW (u-blox© official documentation) for details.
  5090. * \var UBXRXM_SVSI::week
  5091. * GPS week number of the navigation epoch
  5092. * \var UBXRXM_SVSI::numVis
  5093. * Number of visible satellites
  5094. * \var UBXRXM_SVSI::numSV
  5095. * Number of per-SV data blocks following
  5096. */
  5097. /*!
  5098. * \struct UBXSVSISVFlags
  5099. * \brief Implements UBXRXM_SVSI_PART::svFlag
  5100. * \var UBXSVSISVFlags::ura
  5101. * Figure of Merit (URA)
  5102. * \note Range 0..15
  5103. * \var UBXSVSISVFlags::healthy
  5104. * SV healthy flag
  5105. * \var UBXSVSISVFlags::ephVal
  5106. * Ephemeris valid
  5107. * \var UBXSVSISVFlags::almVal
  5108. * Almanac valid
  5109. * \var UBXSVSISVFlags::notAvail
  5110. * SV not available
  5111. */
  5112. /*!
  5113. * \struct UBXSVSIAge
  5114. * \brief Implements UBXRXM_SVSI_PART::age
  5115. * \var UBXSVSIAge::almAge
  5116. * Age of ALM in days offset by 4
  5117. * i.e. the reference time may be in the future:
  5118. * ageOfAlm = (age & 0x0f) - 4
  5119. * \var UBXSVSIAge::ephAge
  5120. * Age of EPH in hours offset by 4.
  5121. * i.e. the reference time may be in the future:
  5122. * ageOfEph = ((age & 0xf0) >> 4) - 4
  5123. */
  5124. /*!
  5125. * \struct UBXRXM_SVSI_PART
  5126. * \brief Variable payload for #UBXRXM_SVSI
  5127. * \var UBXRXM_SVSI_PART::svid
  5128. * Satellite ID
  5129. * \var UBXRXM_SVSI_PART::svFlag
  5130. * Information Flags
  5131. * \see #UBXSVSISVFlags to fill this field
  5132. * \var UBXRXM_SVSI_PART::azim
  5133. * Azimuth
  5134. * \var UBXRXM_SVSI_PART::elev
  5135. * Elevation
  5136. * \var UBXRXM_SVSI_PART::age
  5137. * Age of Almanac and Ephemeris
  5138. * \see UBXSVSIAge to fill this field
  5139. */
  5140. /*!
  5141. * \struct UBXTM2Flags
  5142. * \brief Implements UBXTIM_TM2::flags
  5143. * \var UBXTM2Flags::mode
  5144. * Mode bitmask
  5145. * \see #UBXTM2FlagsMode to fill this field
  5146. * \var UBXTM2Flags::run
  5147. * Run state
  5148. * \see #UBXTM2FlagsRun to fill this field
  5149. * \var UBXTM2Flags::newFallingEdge
  5150. * New falling edge detected
  5151. * \var UBXTM2Flags::timeBase
  5152. * Time base
  5153. * \see #UBXTM2FlagsTimeBase to fill this field
  5154. * \var UBXTM2Flags::utc
  5155. * UTC availability
  5156. * \see #UBXTM2FlagsUTC to fill this field
  5157. * \var UBXTM2Flags::time
  5158. * Time is valid
  5159. * \see #UBXTM2FlagsTime to fill this field
  5160. * \var UBXTM2Flags::newRisingEdge
  5161. * New rising edge detected
  5162. */
  5163. /*!
  5164. * \struct UBXTIM_TM2
  5165. * This message contains information for high precision time stamping / pulse counting.
  5166. * The delay figures and timebase given in UBXCFG_TP5 are also applied to the time results
  5167. * output in this message.
  5168. * \brief Time mark data
  5169. *
  5170. * \var UBXTIM_TM2::ch
  5171. * Marker channel 0 or 1
  5172. * \var UBXTIM_TM2::flags
  5173. * Flags
  5174. * \see #UBXTM2Flags to fill this field
  5175. * \var UBXTIM_TM2::count
  5176. * Rising edge counter
  5177. * \var UBXTIM_TM2::wnR
  5178. * week number of last rising edge
  5179. * \var UBXTIM_TM2::wnF
  5180. * week number of last falling edge
  5181. * \var UBXTIM_TM2::towMsR
  5182. * tow of rising edge
  5183. * \var UBXTIM_TM2::towSubMsR
  5184. * millisecond fraction of tow of rising edge in
  5185. * nanoseconds
  5186. * \var UBXTIM_TM2::towMsF
  5187. * tow of falling edge
  5188. * \var UBXTIM_TM2::towSubMsF
  5189. * millisecond fraction of tow of falling edge in
  5190. * nanoseconds
  5191. * \var UBXTIM_TM2::accEst
  5192. * Accuracy estimate
  5193. */
  5194. /*!
  5195. * \struct UBXTIM_TP
  5196. * This message contains information for high precision timing. The recommended
  5197. * configuration when using this message is to set both the measurement rate (CFG-RATE)
  5198. * and the timepulse frequency (CFG-TP5) to 1Hz. For more information see section Time
  5199. * pulse.
  5200. * \brief Time Pulse Timedata
  5201. *
  5202. * \var UBXTIM_TP::towMS
  5203. * Time pulse time of week according to time base
  5204. * \var UBXTIM_TP::towSubMS
  5205. * Submillisecond part of TOWMS
  5206. * \var UBXTIM_TP::qErr
  5207. * Quantization error of time pulse.
  5208. * \var UBXTIM_TP::week
  5209. * Time pulse week number according to time
  5210. * base
  5211. * \var UBXTIM_TP::flags
  5212. * \see UBXTPFlags to fill this field
  5213. * \var UBXTIM_TP::reserved1
  5214. * Reserved
  5215. */
  5216. /*!
  5217. * \struct UBXVRFYFlags
  5218. * \brief Implements UBXTIM_VRFY::flags
  5219. *
  5220. * \var UBXVRFYFlags::src
  5221. * Aiding time source
  5222. * \see #UBXVRFYFlagsSource to fill this field
  5223. */
  5224. /*!
  5225. * \struct UBXTIM_VRFY
  5226. * \brief Sourced Time Verification
  5227. *
  5228. * \var UBXTIM_VRFY::itow
  5229. * Integer millisecond tow received by source
  5230. * \var UBXTIM_VRFY::frac
  5231. * Sub-millisecond part of tow
  5232. * \var UBXTIM_VRFY::deltaMs
  5233. * Integer milliseconds of delta time (current time minus sourced time)
  5234. * \var UBXTIM_VRFY::deltaNs
  5235. * Sub-millisecond part of delta time
  5236. * \var UBXTIM_VRFY::wno
  5237. * Week number
  5238. * \var UBXTIM_VRFY::flags
  5239. * Information flags
  5240. * \see #UBXVRFYFlags to fill this field
  5241. * \var UBXTIM_VRFY::reserved1
  5242. * Reserved
  5243. */
  5244. /*! \addtogroup Types
  5245. * @{
  5246. */
  5247. /*!
  5248. * \typedef UBXU1_t
  5249. * Unsigned char
  5250. * \note Size: 1 byte\n
  5251. * Range: 0..255
  5252. *
  5253. * \typedef UBXI1_t
  5254. * Signed char
  5255. * \note Size: 1 byte\n
  5256. * Range: -128..127
  5257. *
  5258. * \typedef UBXX1_t
  5259. * Bitfield
  5260. * \note Size: 1 byte\n
  5261. * Range: 0b00000000..0b11111111
  5262. *
  5263. * \typedef UBXU2_t
  5264. * Unsigned short
  5265. * \note Size: 2 bytes\n
  5266. * Range: 0..65535
  5267. *
  5268. * \typedef UBXI2_t
  5269. * Signed short
  5270. * \note Size: 2 bytes\n
  5271. * Range: -32768..32767
  5272. *
  5273. * \typedef UBXX2_t
  5274. * Bitfield
  5275. * \note Size: 2 bytes\n
  5276. * Range: 0b0000000000000000..0b1111111111111111
  5277. *
  5278. * \typedef UBXU4_t
  5279. * Unsigned Long
  5280. * \note Size: 4 bytes\n
  5281. * Range: 0..4294967295
  5282. *
  5283. * \typedef UBXI4_t
  5284. * Unsigned Long
  5285. * \note Size: 4 bytes\n
  5286. * Range: -2147483648..2147483647
  5287. *
  5288. * \typedef UBXX4_t
  5289. * Bitfield
  5290. * \note Size: 4 bytes\n
  5291. * Range: 0b00000000000000000000000000000000..0b11111111111111111111111111111111
  5292. *
  5293. * \typedef UBXR4_t
  5294. * IEEE 754 Single Precision
  5295. * \note Size: 4 bytes\n
  5296. * Range: -1*2^+127..2^+127
  5297. *
  5298. * \typedef UBXR8_t
  5299. * IEEE 754 Double Precision
  5300. * \note Size: 8 bytes\n
  5301. * Range: -1*2^+1023..2^+1023
  5302. *
  5303. * \typedef UBXCH_t;
  5304. * ASCII / ISO 8859.1 Encoding
  5305. * \note Size: 1 byte\n
  5306. */
  5307. /*! @} */
  5308. /*! \addtogroup Functions
  5309. * @{
  5310. */
  5311. /*!
  5312. * \fn struct UBXMsgBuffer getAID_ALPSRV(struct UBXMsg* clientMgs, const struct UBXAlpFileInfo *fileInfo)
  5313. * \brief Getter for #UBXAID_ALPSRV message
  5314. * \param clientMgs
  5315. * u-blox module original request
  5316. * \param fileInfo
  5317. * full ALP file data
  5318. * \return
  5319. * Returns full UBXMsgBuffer including header and checksum
  5320. */
  5321. /*!
  5322. * \fn struct UBXMsgBuffer getCFG_MSG_POLL(enum UBXMessageClass msgClass, enum UBXMessageId msgId)
  5323. * This function construct full buffer for #UBXCFG_MSG_POLL message.
  5324. * \brief Getter for #UBXCFG_MSG_POLL
  5325. * \param msgClass
  5326. * Message Class
  5327. * \see #UBXMessageClass to fill this field
  5328. * \param msgId
  5329. * Message Id
  5330. * \see #UBXMessageId to fill this field
  5331. * \return
  5332. * Returns full UBXMsgBuffer including header and checksum
  5333. */
  5334. /*!
  5335. * \fn struct UBXMsgBuffer getCFG_MSG_RATE(enum UBXMessageClass msgClass, enum UBXMessageId msgId, UBXU1_t rate)
  5336. * This function construct full buffer for #UBXCFG_MSG_RATE message.
  5337. * \brief Getter for #UBXCFG_MSG_RATE
  5338. * \param msgClass
  5339. * Message Class
  5340. * \see #UBXMessageClass to fill this field
  5341. * \param msgId
  5342. * Message Id
  5343. * \see #UBXMessageId to fill this field
  5344. * \param rate
  5345. * Send rate on current Port
  5346. * \return
  5347. * Returns full UBXMsgBuffer including header and checksum
  5348. */
  5349. /*!
  5350. * \fn struct UBXMsgBuffer getCFG_MSG_RATES(enum UBXMessageClass msgClass, enum UBXMessageId msgId, UBXU1_t rate[])
  5351. * This function construct full buffer for #UBXCFG_MSG_RATES message.
  5352. * \brief Getter for #UBXCFG_MSG_RATES
  5353. * \param msgClass
  5354. * Message Class
  5355. * \see #UBXMessageClass to fill this field
  5356. * \param msgId
  5357. * Message Id
  5358. * \see #UBXMessageId to fill this field
  5359. * \param rate
  5360. * Send rate on I/O Port (6 Ports)
  5361. * \return
  5362. * Returns full UBXMsgBuffer including header and checksum
  5363. */
  5364. /*!
  5365. * \fn struct UBXMsgBuffer getCFG_RST(int mode, UBXU2_t mask)
  5366. * This function construct full buffer for #UBXCFG_RST message.
  5367. * \brief Getter for #UBXCFG_RST
  5368. * \param mode
  5369. * Mode bitmask
  5370. * \see UBXResetMode to fill this field
  5371. * \param mask
  5372. * BBR Sections to clear.
  5373. * \see #UBXBBRMask to fill this field manually
  5374. * \return
  5375. * Returns full UBXMsgBuffer including header and checksum
  5376. */
  5377. /*!
  5378. * \fn struct UBXMsgBuffer getCFG_RST_OPT(int mode, enum UBXBBRSpecialSets special)
  5379. * This function construct full buffer for #UBXCFG_RST_OPT message.
  5380. * \brief Getter for #UBXCFG_RST_OPT
  5381. * \param mode
  5382. * Mode bitmask
  5383. * \see UBXResetMode to fill this field
  5384. * \param special
  5385. * BBR Sections to clear.
  5386. * \see #UBXBBRSpecialSets for special sets
  5387. * \return
  5388. * Returns full UBXMsgBuffer including header and checksum
  5389. */
  5390. /*!
  5391. * \fn struct UBXMsgBuffer getCFG_TP5_POLL_OPT(enum UBXCFGTimepulses tpIdx)
  5392. * This function construct full buffer for #UBXCFG_TP5_POLL_OPT message.
  5393. * \brief Getter for #UBXCFG_TP5_POLL_OPT
  5394. * \param tpIdx
  5395. * Time pulse selection
  5396. * \see #UBXCFGTimepulses to fill this field
  5397. * \return
  5398. * Returns full UBXMsgBuffer including header and checksum
  5399. */
  5400. /*!
  5401. * \fn struct UBXMsgBuffer getCFG_TP5(enum UBXCFGTimepulses tpIdx, int16_t antCableDelay, int16_t rfGroupDelay,
  5402. u_int32_t freqPeriod, u_int32_t freqPeriodLock, u_int32_t pulseLenRatio,
  5403. u_int32_t pulseLenRatioLock, int32_t userConfigDelay, int32_t flags)
  5404. * This function construct full buffer for #UBXCFG_TP5 message.
  5405. * \brief Getter for #UBXCFG_TP5
  5406. * \param tpIdx
  5407. * Time pulse selection
  5408. * \see #UBXCFGTimepulses to fill this field
  5409. * \param antCableDelay
  5410. * Antenna cable delay
  5411. * \param rfGroupDelay
  5412. * RF group delay
  5413. * \param freqPeriod
  5414. * Frequency or period time
  5415. * \note Depending on setting of bit 'isFreq'
  5416. * \param freqPeriodLock
  5417. * Frequency or period time when locked to GPS
  5418. * time
  5419. * \note Only used if 'lockedOtherSet' is set
  5420. * \param pulseLenRatio
  5421. * Pulse length or duty cycle
  5422. * \note Depending on 'isLength'
  5423. * \param pulseLenRatioLock
  5424. * Pulse length or duty cycle when locked to GPS
  5425. * time
  5426. * \note only used if 'lockedOtherSet' is set
  5427. * \param userConfigDelay
  5428. * User configurable time pulse delay
  5429. * \param flags
  5430. * Configuration flags
  5431. * \return
  5432. * Returns full UBXMsgBuffer including header and checksum
  5433. */
  5434. /*!
  5435. * \fn getAID_ALM_POLL
  5436. * This function construct full buffer for #UBXAID_ALM_POLL message.
  5437. * \brief Getter for #UBXAID_ALM_POLL
  5438. * \return
  5439. * Returns full UBXMsgBuffer including header and checksum
  5440. */
  5441. /*!
  5442. * \fn struct UBXMsgBuffer getAID_ALM_POLL_OPT(UBXU1_t svid)
  5443. * This function construct full buffer for #UBXAID_ALM_POLL_OPT message.
  5444. * \brief Getter for #UBXAID_ALM_POLL_OPT
  5445. * \param svid
  5446. * SV ID for which the receiver shall return its
  5447. * Almanac Data (Valid Range: 1 .. 32 or 51, 56,
  5448. * 63).
  5449. * \return
  5450. * Returns full UBXMsgBuffer including header and checksum
  5451. */
  5452. /*!
  5453. * \fn struct UBXMsgBuffer getAID_ALM(UBXU4_t svid, UBXU4_t week)
  5454. * This function construct full buffer for #UBXAID_ALM message.
  5455. * \brief Getter for #UBXAID_ALM
  5456. * \param svid
  5457. * SV ID for which the receiver shall return its
  5458. * Almanac Data (Valid Range: 1 .. 32 or 51, 56,
  5459. * 63).
  5460. * \param week
  5461. * Issue Date of Almanac (GPS week number)
  5462. * \return
  5463. * Returns full UBXMsgBuffer including header and checksum
  5464. */
  5465. /*!
  5466. * \fn struct UBXMsgBuffer getAID_ALM_OPT(UBXU4_t svid, UBXU4_t week, UBXU4_t dwrd[8])
  5467. * This function construct full buffer for #UBXAID_ALM_OPT message.
  5468. * \brief Getter for #UBXAID_ALM_OPT
  5469. * \param svid
  5470. * SV ID for which the receiver shall return its
  5471. * Almanac Data (Valid Range: 1 .. 32 or 51, 56,
  5472. * 63).
  5473. * \param week
  5474. * Issue Date of Almanac (GPS week number)
  5475. * \param dwrd
  5476. * Almanac Words
  5477. * \return
  5478. * Returns full UBXMsgBuffer including header and checksum
  5479. */
  5480. /*!
  5481. * \fn struct UBXMsgBuffer getAID_ALP_POLL(UBXU4_t predTow,
  5482. UBXU4_t predDur,
  5483. UBXI4_t age,
  5484. UBXU2_t predWno,
  5485. UBXU2_t almWno,
  5486. UBXU1_t svs)
  5487. * This function construct full buffer for #UBXAID_ALP_POLL message.
  5488. * \brief Getter for #UBXAID_ALP_POLL
  5489. * \param predTow
  5490. * Prediction start time of week
  5491. * \param predDur
  5492. * Prediction duration from start of first data set to
  5493. * end of last data set
  5494. * \param age
  5495. * Current age of ALP data
  5496. * \param predWno
  5497. * Prediction start week number
  5498. * \param almWno
  5499. * Truncated week number of reference almanac
  5500. * \param svs
  5501. * Number of satellite data sets contained in the
  5502. * ALP UBXAID_ALP_POLL::data
  5503. * \return
  5504. * Returns full UBXMsgBuffer including header and checksum
  5505. */
  5506. /*!
  5507. * \fn getAID_ALP_END
  5508. * This function construct full buffer for #UBXAID_ALP_END message.
  5509. * \brief Getter for #UBXAID_ALP_END
  5510. * \return
  5511. * Returns full UBXMsgBuffer including header and checksum
  5512. */
  5513. /*!
  5514. * \fn struct UBXMsgBuffer getAID_ALP(UBXU2_t* chunk, int chunkSize)
  5515. * This function construct full buffer for #UBXAID_ALP message.
  5516. * \brief Getter for #UBXAID_ALP
  5517. * \param chunk
  5518. * ALP data chunk
  5519. * \param chunkSize
  5520. * size of chunk
  5521. * \return
  5522. * Returns full UBXMsgBuffer including header and checksum
  5523. */
  5524. /*!
  5525. * \fn getAID_AOP_POLL
  5526. * This function construct full buffer for #UBXAID_AOP_POLL message.
  5527. * \brief Getter for #UBXAID_AOP_POLL
  5528. * \return
  5529. * Returns full UBXMsgBuffer including header and checksum
  5530. */
  5531. /*!
  5532. * \fn struct UBXMsgBuffer getAID_AOP_POLL_OPT(UBXU1_t svid)
  5533. * This function construct full buffer for #UBXAID_AOP_POLL_OPT message.
  5534. * \brief Getter for #UBXAID_AOP_POLL_OPT
  5535. * \param svid
  5536. * GPS SV id for which the data is requested (valid range: 1..32).
  5537. * \return
  5538. * Returns full UBXMsgBuffer including header and checksum
  5539. */
  5540. /*!
  5541. * \fn struct UBXMsgBuffer getAID_AOP(UBXU1_t svid, UBXU1_t data[59])
  5542. * This function construct full buffer for #UBXAID_AOP message.
  5543. * \brief Getter for #UBXAID_AOP
  5544. * \param svid
  5545. * GPS SV id
  5546. * \param data
  5547. * AssistNow Autonomous data
  5548. * \return
  5549. * Returns full UBXMsgBuffer including header and checksum
  5550. */
  5551. /*!
  5552. * \fn struct UBXMsgBuffer getAID_AOP_OPT(UBXU1_t svid, UBXU1_t data[59], UBXU1_t optional0[48], UBXU1_t optional1[48], UBXU1_t optional2[48])
  5553. * This function construct full buffer for #UBXAID_AOP_OPT message.
  5554. * \brief Getter for #UBXAID_AOP_OPT
  5555. * \param svid
  5556. * GPS SV id
  5557. * \param data
  5558. * AssistNow Autonomous data
  5559. * \param optional0
  5560. * Optional data chunk 1/3
  5561. * \param optional1
  5562. * Optional data chunk 2/3
  5563. * \param optional2
  5564. * Optional data chunk 3/3
  5565. * \return
  5566. * Returns full UBXMsgBuffer including header and checksum
  5567. */
  5568. /*!
  5569. * \fn getAID_DATA_POLL
  5570. * This function construct full buffer for #UBXAID_DATA_POLL message.
  5571. * \brief Getter for #UBXAID_DATA_POLL
  5572. * \return
  5573. * Returns full UBXMsgBuffer including header and checksum
  5574. */
  5575. /*!
  5576. * \fn getAID_EPH_POLL
  5577. * This function construct full buffer for #UBXAID_EPH_POLL message.
  5578. * \brief Getter for #UBXAID_EPH_POLL
  5579. * \return
  5580. * Returns full UBXMsgBuffer including header and checksum
  5581. */
  5582. /*!
  5583. * \fn struct UBXMsgBuffer getAID_EPH_POLL_OPT(UBXU1_t svid)
  5584. * This function construct full buffer for #UBXAID_EPH_POLL_OPT message.
  5585. * \brief Getter for #UBXAID_EPH_POLL_OPT
  5586. * \param svid
  5587. * SV ID for which the receiver shall return its
  5588. * Ephemeris Data (Valid Range: 1 .. 32).
  5589. * \return
  5590. * Returns full UBXMsgBuffer including header and checksum
  5591. */
  5592. /*!
  5593. * \fn struct UBXMsgBuffer getAID_EPH(UBXU4_t svid, UBXU4_t how)
  5594. * This function construct full buffer for #UBXAID_EPH message.
  5595. * \brief Getter for #UBXAID_EPH
  5596. * \param svid
  5597. * SV ID for which this ephemeris data is
  5598. * \note Range: 1..32
  5599. * \param how
  5600. * Hand-Over Word of first Subframe. This is
  5601. * required if data is sent to the receiver.
  5602. * 0 indicates that no Ephemeris Data is following.
  5603. * \return
  5604. * Returns full UBXMsgBuffer including header and checksum
  5605. */
  5606. /*!
  5607. * \fn struct UBXMsgBuffer getAID_EPH_OPT(UBXU4_t svid, UBXU4_t how, UBXU4_t sf1d[8], UBXU4_t sf2d[8], UBXU4_t sf3d[8])
  5608. * This function construct full buffer for #UBXAID_EPH_OPT message.
  5609. * \brief Getter for #UBXAID_EPH_OPT
  5610. * \param svid
  5611. * SV ID for which this ephemeris data is
  5612. * \note Range: 1..32
  5613. * \param how
  5614. * Hand-Over Word of first Subframe. This is
  5615. * required if data is sent to the receiver.
  5616. * 0 indicates that no Ephemeris Data is following.
  5617. * \param sf1d
  5618. * Subframe 1 Words 3..10 (SF1D0..SF1D7)
  5619. * \param sf2d
  5620. * Subframe 2 Words 3..10 (SF1D0..SF1D7)
  5621. * \param sf3d
  5622. * Subframe 3 Words 3..10 (SF1D0..SF1D7)
  5623. * \return
  5624. * Returns full UBXMsgBuffer including header and checksum
  5625. */
  5626. /*!
  5627. * \fn getAID_HUI_POLL
  5628. * This function construct full buffer for #UBXAID_HUI_POLL message.
  5629. * \brief Getter for #UBXAID_HUI_POLL
  5630. * \return
  5631. * Returns full UBXMsgBuffer including header and checksum
  5632. */
  5633. /*!
  5634. * \fn struct UBXMsgBuffer getAID_HUI(UBXI4_t health, UBXR4_t utcA0, UBXR4_t utcA1,
  5635. UBXI4_t utcTOW, UBXI2_t utcWNT, UBXI2_t utcLS,
  5636. UBXI2_t utcWNF, UBXI2_t utcDN, UBXI2_t utcLSF,
  5637. UBXI2_t utcSpare, UBXR4_t klobA0, UBXR4_t klobA1,
  5638. UBXR4_t klobA2, UBXR4_t klobA3, UBXR4_t klobB0,
  5639. UBXR4_t klobB1, UBXR4_t klobB2, UBXR4_t klobB3,
  5640. UBXX2_t flags)
  5641. * This function construct full buffer for #UBXAID_HUI message.
  5642. * \brief Getter for #UBXAID_HUI
  5643. * \param health
  5644. * Bitmask, every bit represenst a GPS SV (1-32). If
  5645. * the bit is set the SV is healthy.
  5646. * \param utcA0
  5647. * UTC - parameter A0
  5648. * \param utcA1
  5649. * UTC - parameter A1
  5650. * \param utcTOW
  5651. * UTC - reference time of week
  5652. * \param utcWNT
  5653. * UTC - reference week number
  5654. * \param utcLS
  5655. * UTC - time difference due to leap seconds before event
  5656. * \param utcWNF
  5657. * UTC - week number when next leap second event occurs
  5658. * \param utcDN
  5659. * UTC - day of week when next leap second event occurs
  5660. * \param utcLSF
  5661. * UTC - time difference due to leap seconds after event
  5662. * \param utcSpare
  5663. * UTC - Spare to ensure structure is a multiple of 4 bytes
  5664. * \param klobA0
  5665. * Klobuchar - alpha 0
  5666. * \param klobA1
  5667. * Klobuchar - alpha 1
  5668. * \param klobA2
  5669. * Klobuchar - alpha 2
  5670. * \param klobA3
  5671. * Klobuchar - alpha 3
  5672. * \param klobB0
  5673. * Klobuchar - beta 0
  5674. * \param klobB1
  5675. * Klobuchar - beta 1
  5676. * \param klobB2
  5677. * Klobuchar - beta 2
  5678. * \param klobB3
  5679. * Klobuchar - beta 3
  5680. * \param flags
  5681. * Flags.
  5682. * \see #UBXHUIFlags to fill this field
  5683. * \return
  5684. * Returns full UBXMsgBuffer including header and checksum
  5685. */
  5686. /*!
  5687. * \fn getAID_INI_POLL
  5688. * This function construct full buffer for #UBXAID_INI_POLL message.
  5689. * \brief Getter for #UBXAID_INI_POLL
  5690. * \return
  5691. * Returns full UBXMsgBuffer including header and checksum
  5692. */
  5693. /*!
  5694. * \fn struct UBXMsgBuffer getAID_INI(UBXI1_t ecefXOrLat,
  5695. UBXI1_t ecefYOrLat,
  5696. UBXI1_t ecefZOrLat,
  5697. UBXU1_t posAcc,
  5698. UBXI1_t tmCfg,
  5699. UBXU2_t wnoOrDate,
  5700. UBXU4_t towOrDate,
  5701. UBXI4_t towNs,
  5702. UBXU4_t tAccMS,
  5703. UBXU4_t tAccNS,
  5704. UBXI4_t clkDOrFreq,
  5705. UBXU4_t clkDAccOrFreqAcc,
  5706. UBXX4_t flags)
  5707. * This function construct full buffer for #UBXAID_INI message.
  5708. * \brief Getter for #UBXAID_INI
  5709. * \param ecefXOrLat
  5710. * WGS84 ECEF X coordinate or latitude
  5711. * \param ecefYOrLat
  5712. * WGS84 ECEF Y coordinate or latitude
  5713. * \param ecefZOrLat
  5714. * WGS84 ECEF Z coordinate or latitude
  5715. * \param posAcc
  5716. * Position accuracy
  5717. * \param tmCfg
  5718. * Time mark configuration
  5719. * \see #UBXINItmCfg to fill this field
  5720. * \param wnoOrDate
  5721. * Actual week number or yearSince2000/Month (YYMM), depending on UBXAID_INI::flags
  5722. * \param towOrDate
  5723. * Actual time of week or
  5724. * DayOfMonth/Hour/Minute/Second
  5725. * (DDHHMMSS), depending on UBXAID_INI::flags
  5726. * \param towNs
  5727. * Fractional part of time of week
  5728. * \param tAccMS
  5729. * Milliseconds part of time accuracy
  5730. * \param tAccNS
  5731. * Nanoseconds part of time accuracy
  5732. * \param clkDOrFreq
  5733. * Clock drift or frequency, depending on UBXAID_INI::flags
  5734. * \param clkDAccOrFreqAcc
  5735. * Accuracy of clock drift or frequency, depending on UBXAID_INI::flags
  5736. * \param flags
  5737. * Bitmask with the flags
  5738. * \return
  5739. * Returns full UBXMsgBuffer including header and checksum
  5740. */
  5741. /*!
  5742. * \fn struct UBXMsgBuffer getCFG_ANT(UBXX2_t flags, struct UBXANTPins pins)
  5743. * This function construct full buffer for #UBXCFG_ANT message.
  5744. * \brief Getter for #UBXCFG_ANT
  5745. * \param flags
  5746. * Antenna flag mask
  5747. * \see #UBXANTFlags to fill this field
  5748. * \param pins
  5749. * Antenna Pin Configuration
  5750. * \return
  5751. * Returns full UBXMsgBuffer including header and checksum
  5752. */
  5753. /*!
  5754. * \fn getCFG_ANT_POLL
  5755. * This function construct full buffer for #UBXCFG_ANT_POLL message.
  5756. * \brief Getter for #UBXCFG_ANT_POLL
  5757. * \return
  5758. * Returns full UBXMsgBuffer including header and checksum
  5759. */
  5760. /*!
  5761. * \fn struct UBXMsgBuffer getCFG_CFG(UBXX4_t clearMask, UBXX4_t saveMask, UBXX4_t loadMask)
  5762. * This function construct full buffer for #UBXCFG_CFG message.
  5763. * \brief Getter for #UBXCFG_CFG
  5764. * \param clearMask
  5765. * Mask with configuration sub-sections to Clear
  5766. * \note Load Default Configurations to Permanent
  5767. * Configurations in non-volatile memory
  5768. * \see #UBXCFGMask to fill this field
  5769. * \param saveMask
  5770. * Mask with configuration sub-section to Save
  5771. * \note Save Current Configuration to Non-volatile
  5772. * Memory
  5773. * \see #UBXCFGMask to fill this field
  5774. * \param loadMask
  5775. * Mask with configuration sub-sections to Load
  5776. * \note Load Permanent Configurations from
  5777. * Non-volatile Memory to Current
  5778. * Configurations
  5779. * \see #UBXCFGMask to fill this field
  5780. * \return
  5781. * Returns full UBXMsgBuffer including header and checksum
  5782. */
  5783. /*!
  5784. * \fn struct UBXMsgBuffer getCFG_CFG_OPT(UBXX4_t clearMask, UBXX4_t saveMask, UBXX4_t loadMask, UBXX1_t deviceMask)
  5785. * This function construct full buffer for #UBXCFG_CFG_OPT message.
  5786. * \brief Getter for #UBXCFG_CFG_OPT
  5787. * \param clearMask
  5788. * Mask with configuration sub-sections to Clear
  5789. * \note Load Default Configurations to Permanent
  5790. * Configurations in non-volatile memory
  5791. * \see #UBXCFGMask to fill this field
  5792. * \param saveMask
  5793. * Mask with configuration sub-section to Save
  5794. * \note Save Current Configuration to Non-volatile
  5795. * Memory
  5796. * \see #UBXCFGMask to fill this field
  5797. * \param loadMask
  5798. * Mask with configuration sub-sections to Load
  5799. * \note Load Permanent Configurations from
  5800. * Non-volatile Memory to Current
  5801. * Configurations
  5802. * \see #UBXCFGMask to fill this field
  5803. * \param deviceMask
  5804. * Mask which selects the devices for this
  5805. * command
  5806. * \see #UBXCFGDeviceMask to fill this field
  5807. * \return
  5808. * Returns full UBXMsgBuffer including header and checksum
  5809. */
  5810. /*!
  5811. * \fn 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)
  5812. * This function construct full buffer for #UBXCFG_DAT_IN message.
  5813. * \brief Getter for #UBXCFG_DAT_IN
  5814. * \param majA
  5815. * Semi-major Axis
  5816. * \note accepted range = 6,300,000.0 to 6,500,000.0 metres
  5817. * \param flat
  5818. * 1.0 / Flattening
  5819. * \note accepted range is 0.0 to 500.0
  5820. * \param dX
  5821. * X Axis shift at the origin
  5822. * \note accepted range is +/-5000.0 metres
  5823. * \param dY
  5824. * Y Axis shift at the origin
  5825. * \note accepted range is +/-5000.0 metres
  5826. * \param dZ
  5827. * Z Axis shift at the origin
  5828. * \note accepted range is +/-5000.0 metres
  5829. * \param rotX
  5830. * Rotation about the X Axis
  5831. * \note accepted range is +/-20.0 milli-arc seconds
  5832. * \param rotY
  5833. * Rotation about the Y Axis
  5834. * \note accepted range is +/-20.0 milli-arc seconds
  5835. * \param rotZ
  5836. * Rotation about the Z Axis
  5837. * \note accepted range is +/-20.0 milli-arc seconds
  5838. * \param scale
  5839. * Scale change
  5840. * \note accepted range is 0.0 to 50.0 parts per million
  5841. * \return
  5842. * Returns full UBXMsgBuffer including header and checksum
  5843. */
  5844. /*!
  5845. * \fn getCFG_DAT_POLL
  5846. * This function construct full buffer for #UBXCFG_DAT_POLL message.
  5847. * \brief Getter for #UBXCFG_DAT_POLL
  5848. * \return
  5849. * Returns full UBXMsgBuffer including header and checksum
  5850. */
  5851. /*!
  5852. * \fn getCFG_GNSS_POLL
  5853. * This function construct full buffer for #UBXCFG_GNSS_POLL message.
  5854. * \brief Getter for #UBXCFG_GNSS_POLL
  5855. * \return
  5856. * Returns full UBXMsgBuffer including header and checksum
  5857. */
  5858. /*!
  5859. * \fn struct UBXMsgBuffer getCFG_GNSS(UBXU1_t msgVer,
  5860. UBXU1_t numTrkChHw,
  5861. UBXU1_t numTrkChUse,
  5862. UBXU1_t numConfigBlocks,
  5863. struct UBXCFG_GNSS_PART* gnssPart)
  5864. * This function construct full buffer for #UBXCFG_GNSS message.
  5865. * \brief Getter for #UBXCFG_GNSS
  5866. * \param msgVer
  5867. * Message version
  5868. * \param numTrkChHw
  5869. * Number of tracking channels available in
  5870. * hardware
  5871. * \note Read only
  5872. * \param numTrkChUse
  5873. * Number of tracking channels to use
  5874. * \note Should be <= UBXCFG_GNSS::numTrkChHw
  5875. * \param numConfigBlocks
  5876. * Number of configuration blocks following
  5877. * \param gnssPart
  5878. * Variable payload part
  5879. * \return
  5880. * Returns full UBXMsgBuffer including header and checksum
  5881. */
  5882. /*!
  5883. * \fn struct UBXMsgBuffer getCFG_INF_POLL(UBXU1_t protocolId)
  5884. * This function construct full buffer for #UBXCFG_INF_POLL message.
  5885. * \brief Getter for #UBXCFG_INF_POLL
  5886. * \param protocolId
  5887. * Protocol Identifier, identifying the output
  5888. * protocol for this Poll Request.
  5889. * \see #UBXCFGProtocolIds to fill this field
  5890. * \return
  5891. * Returns full UBXMsgBuffer including header and checksum
  5892. */
  5893. /*!
  5894. * \fn struct UBXMsgBuffer getCFG_INF(struct UBXCFG_INF_PART* infPart, int infPartCount)
  5895. * This function construct full buffer for #UBXCFG_INF message.
  5896. * \brief Getter for #UBXCFG_INF
  5897. * \param infPart
  5898. * Variable payload
  5899. * \param infPartCount
  5900. * Variable payload count
  5901. * \return
  5902. * Returns full UBXMsgBuffer including header and checksum
  5903. */
  5904. /*!
  5905. * \fn getCFG_ITFM_POLL
  5906. * This function construct full buffer for #UBXCFG_ITFM_POLL message.
  5907. * \brief Getter for #UBXCFG_ITFM_POLL
  5908. * \return
  5909. * Returns full UBXMsgBuffer including header and checksum
  5910. */
  5911. /*!
  5912. * \fn struct UBXMsgBuffer getCFG_ITFM(struct UBXITFMConfig config,
  5913. struct UBXITFMConfig2 config2)
  5914. * This function construct full buffer for #UBXCFG_ITFM message.
  5915. * \brief Getter for #UBXCFG_ITFM
  5916. * \param config
  5917. * Interference config word
  5918. * \see #UBXITFMConfig to fill this field
  5919. * \param config2
  5920. * Extra settings for jamming/interference monitor
  5921. * \see #UBXITFMConfig2 to fill this field
  5922. * \return
  5923. * Returns full UBXMsgBuffer including header and checksum
  5924. */
  5925. /*!
  5926. * \fn getCFG_LOGFILTER_POLL
  5927. * This function construct full buffer for #UBXCFG_LOGFILTER_POLL message.
  5928. * \brief Getter for #UBXCFG_LOGFILTER_POLL
  5929. * \return
  5930. * Returns full UBXMsgBuffer including header and checksum
  5931. */
  5932. /*!
  5933. * \fn struct UBXMsgBuffer getCFG_LOGFILTER(UBXU1_t version,
  5934. UBXX1_t flags,
  5935. UBXU2_t minIterval,
  5936. UBXU2_t timeThreshold,
  5937. UBXU2_t speedThreshold,
  5938. UBXU4_t positionThreshold)
  5939. * This function construct full buffer for #UBXCFG_LOGFILTER message.
  5940. * \brief Getter for #UBXCFG_LOGFILTER
  5941. * \param version
  5942. * The version of this message
  5943. * \note Set to 1
  5944. * \param flags
  5945. * Flags
  5946. * \see #UBXLOGFILTERFlags to fill this field
  5947. * \param minIterval
  5948. * Minimum time interval between logged
  5949. * positions
  5950. * \note This is only applied in
  5951. * combination with the speed and/or
  5952. * position thresholds
  5953. * \note 0 - not set
  5954. * \param timeThreshold
  5955. * If the time difference is greater than the
  5956. * threshold then the position is logged
  5957. * \note 0 - not set
  5958. * \param speedThreshold
  5959. * If the current speed is greater than the
  5960. * threshold then the position is logged
  5961. * \note 0 - not set
  5962. * \note UBXCFG_LOGFILTER::minInterval also applies
  5963. * \param positionThreshold
  5964. * If the 3D position difference is greater than the
  5965. * threshold then the position is logged
  5966. * \note 0 - not set
  5967. * \note minInterval also applies
  5968. * \return
  5969. * Returns full UBXMsgBuffer including header and checksum
  5970. */
  5971. /*!
  5972. * \fn getCFG_NAV5_POLL
  5973. * This function construct full buffer for #UBXCFG_NAV5_POLL message.
  5974. * \brief Getter for #UBXCFG_NAV5_POLL
  5975. * \return
  5976. * Returns full UBXMsgBuffer including header and checksum
  5977. */
  5978. /*!
  5979. * \fn struct UBXMsgBuffer getCFG_NAV5(UBXX2_t mask,
  5980. enum UBXNAV5Model dynModel,
  5981. enum UBXNAV5FixMode fixMode,
  5982. UBXI4_t fixedAlt,
  5983. UBXU4_t fixedAltVar,
  5984. UBXI1_t minElev,
  5985. UBXU2_t pDop,
  5986. UBXU2_t tDop,
  5987. UBXU2_t pAcc,
  5988. UBXU2_t tAcc,
  5989. UBXU1_t staticHoldThresh,
  5990. UBXU1_t dgpsTimeOut,
  5991. UBXU1_t cnoThreshNumSVs,
  5992. UBXU1_t cnoThresh)
  5993. * This function construct full buffer for #UBXCFG_NAV5 message.
  5994. * \brief Getter for #UBXCFG_NAV5
  5995. * \param mask
  5996. * Parameters Bitmask. Only the masked parameters will be applied.
  5997. * \see #UBXNAV5Mask to fill this field
  5998. * \param dynModel
  5999. * Dynamic Platform model
  6000. * \see #UBXNAV5Model to fill this field
  6001. * \param fixMode
  6002. * Position Fixing Mode
  6003. * \see #UBXNAV5FixMode to fill this field
  6004. * \param fixedAlt
  6005. * Fixed altitude (mean sea level) for 2D fix mode
  6006. * \param fixedAltVar
  6007. * Fixed altitude variance for 2D mode
  6008. * \param minElev
  6009. * Minimum Elevation for a GNSS satellite to be
  6010. * used in NAV
  6011. * \param pDop
  6012. * Position DOP Mask to use
  6013. * \param tDop
  6014. * Time DOP Mask to use
  6015. * \param pAcc
  6016. * Position Accuracy Mask
  6017. * \param tAcc
  6018. * Time Accuracy Mask
  6019. * \param staticHoldThresh
  6020. * Static hold threshold
  6021. * \param dgpsTimeOut
  6022. * DGPS timeout
  6023. * \param cnoThreshNumSVs
  6024. * Number of satellites required to have C/N0
  6025. * above cnoThresh for a fix to be attempted
  6026. * \param cnoThresh
  6027. * C/N0 threshold for deciding whether to attempt
  6028. * a fix
  6029. * \return
  6030. * Returns full UBXMsgBuffer including header and checksum
  6031. */
  6032. /*!
  6033. * \fn getCFG_NAVX5_POLL
  6034. * This function construct full buffer for #UBXCFG_NAVX5_POLL message.
  6035. * \brief Getter for #UBXCFG_NAVX5_POLL
  6036. * \return
  6037. * Returns full UBXMsgBuffer including header and checksum
  6038. */
  6039. /*!
  6040. * \fn struct UBXMsgBuffer getCFG_NAVX5(UBXU2_t version,
  6041. UBXX2_t mask1,
  6042. UBXU1_t minSVs,
  6043. UBXU1_t maxSVs,
  6044. UBXU1_t minCNO,
  6045. UBXU1_t iniFix3D,
  6046. UBXU2_t wknRollover,
  6047. UBXU1_t usePPP,
  6048. UBXU1_t aopCFG,
  6049. UBXU1_t aopOrbMaxErr)
  6050. * This function construct full buffer for #UBXCFG_NAVX5 message.
  6051. * \brief Getter for #UBXCFG_NAVX5
  6052. * \param version
  6053. * Message version
  6054. * \note 0 for this version
  6055. * \param mask1
  6056. * First Parameters Bitmask. Only the flagged
  6057. * parameters will be applied, unused bits must be
  6058. * set to 0
  6059. * \see #UBXNAVX5Mask to fill this field
  6060. * \param minSVs
  6061. * Minimum number of satellites for navigation
  6062. * \param maxSVs
  6063. * Maximum number of satellites for navigation
  6064. * \param minCNO
  6065. * Minimum satellite signal level for navigation
  6066. * \param iniFix3D
  6067. * Initial Fix must be 3D flag
  6068. * \note
  6069. * - 0 - false
  6070. * - 1 - true
  6071. * \param wknRollover
  6072. * GPS week rollover number; GPS week numbers
  6073. * will be set correctly from this week up to 1024
  6074. * weeks after this week.
  6075. * \note 0 reverts to firmware default.
  6076. * \param usePPP
  6077. * Use Precise Point Positioning flag
  6078. * \note Only supported on certain product variants
  6079. * \note
  6080. * - 0 - false
  6081. * - 1 - true
  6082. * \param aopCFG
  6083. * AssistNow Autonomous configuration
  6084. * /note
  6085. * - 0 - disabled
  6086. * - 1 - enabled
  6087. * \param aopOrbMaxErr
  6088. * maximum acceptable (modelled) AssistNow
  6089. * Autonomous orbit error
  6090. * \note valid range = 5..1000,
  6091. * \note 0 - reset to firmware default
  6092. * \return
  6093. * Returns full UBXMsgBuffer including header and checksum
  6094. */
  6095. /*!
  6096. * \fn getCFG_NMEA_POLL
  6097. * This function construct full buffer for #UBXCFG_NMEA_POLL message.
  6098. * \brief Getter for #UBXCFG_NMEA_POLL
  6099. * \return
  6100. * Returns full UBXMsgBuffer including header and checksum
  6101. */
  6102. /*!
  6103. * \fn struct UBXMsgBuffer getCFG_NMEA(UBXX1_t filter,
  6104. UBXU1_t nmeaVersion,
  6105. UBXU1_t numSV,
  6106. UBXX1_t flags,
  6107. UBXX4_t gnssToFilter,
  6108. enum UBXNMEASVNumbering svNumbering,
  6109. enum UBXNMEATalkerIds mainTalkerId,
  6110. enum UBXNMEAGSVTalkerIds gsvTalkerId)
  6111. * This function construct full buffer for #UBXCFG_NMEA message.
  6112. * \brief Getter for #UBXCFG_NMEA
  6113. * \param filter
  6114. * Filter flags
  6115. * \see #UBXNMEAFilter to fill this field
  6116. * \param nmeaVersion
  6117. * NMEA version
  6118. * \see #UBXNMEAVersion to fill this field
  6119. * \param numSV
  6120. * Maximum Number of SVs to report in NMEA
  6121. * protocol.\n
  6122. * This does not affect the receiver's operation.
  6123. * It only limits the number of SVs reported in
  6124. * NMEA mode (this might be needed with older
  6125. * mapping applications which only support 8- or
  6126. * 12-channel receivers).
  6127. * \param flags
  6128. * Flags
  6129. * \see #UBXNMEAFlags to fill this field
  6130. * \param gnssToFilter
  6131. * Filters out satellites based on their GNSS. If a
  6132. * bitfield is enabled, the corresponding satellites
  6133. * will be not output.
  6134. * \see #UBXNMEAGNSSToFilter to fill this field
  6135. * \param svNumbering
  6136. * Configures the display of satellites that do not
  6137. * have an NMEA-defined value.
  6138. * \note This does not apply to satellites with an
  6139. * unknown ID.
  6140. * \param mainTalkerId
  6141. * By default the main Talker ID (i.e. the Talker ID
  6142. * used for all messages other than GSV) is
  6143. * determined by the GNSS assignment of the
  6144. * receiver's channels (see #UBXCFG_GNSS).
  6145. * This field enables the main Talker ID to be
  6146. * overridden.
  6147. * \param gsvTalkerId
  6148. * By default the Talker ID for GSV messages is
  6149. * GNSS specific (as defined by NMEA).
  6150. * This field enables the GSV Talker ID to be
  6151. * overridden.
  6152. * \return
  6153. * Returns full UBXMsgBuffer including header and checksum
  6154. */
  6155. /*!
  6156. * \fn struct UBXMsgBuffer getCFG_NVS(UBXX4_t clearMask,
  6157. UBXX4_t saveMask,
  6158. UBXX4_t loadMask,
  6159. UBXX1_t deviceMask)
  6160. * This function construct full buffer for #UBXCFG_NVS message.
  6161. * \brief Getter for #UBXCFG_NVS
  6162. * \param clearMask
  6163. * Mask of data to be cleared
  6164. * \see #UBXCFGMask CFG_NVS section to fill this field
  6165. * \param saveMask
  6166. * Mask of data to be saved
  6167. * \see #UBXCFGMask CFG_NVS section to fill this field
  6168. * \param loadMask
  6169. * Mask of data to be loaded,
  6170. * \see #UBXCFGMask CFG_NVS section to fill this field
  6171. * \param deviceMask
  6172. * Mask of devices to consider
  6173. * \note Default: all devices
  6174. * \see #UBXCFGDeviceMask to fill this field
  6175. * \return
  6176. * Returns full UBXMsgBuffer including header and checksum
  6177. */
  6178. /*!
  6179. * \fn getCFG_PM2_POLL
  6180. * This function construct full buffer for #UBXCFG_PM2_POLL message.
  6181. * \brief Getter for #UBXCFG_PM2_POLL
  6182. * \return
  6183. * Returns full UBXMsgBuffer including header and checksum
  6184. */
  6185. /*!
  6186. * \fn struct UBXMsgBuffer getCFG_PM2(struct UBXCFG_PM2Flags flags, UBXU4_t updatePeriod, UBXU4_t searchPeriod, UBXU4_t gridOffset, UBXU2_t onTime, UBXU2_t minAcqTime)
  6187. * This function construct full buffer for #UBXCFG_PM2 message.
  6188. * \brief Getter for #UBXCFG_PM2
  6189. * \param flags
  6190. * PSM configuration flags
  6191. * \note See UBXCFG_PM2Flags to fill this field
  6192. * \param updatePeriod
  6193. * Position update period.
  6194. * \note If set to 0, the receiver will never retry a fix
  6195. * \param searchPeriod
  6196. * Acquisition retry period
  6197. * \note If set to 0, the receiver will never retry a startup
  6198. * \param gridOffset
  6199. * Grid offset relative to GPS start of week
  6200. * \param onTime
  6201. * On time after first successful fix
  6202. * \param minAcqTime
  6203. * Minimal search time
  6204. * \return
  6205. * Returns full UBXMsgBuffer including header and checksum
  6206. */
  6207. /*!
  6208. * \fn getCFG_PRT_POLL
  6209. * This function construct full buffer for #UBXCFG_PRT_POLL message.
  6210. * \brief Getter for #UBXCFG_PRT_POLL
  6211. * \return
  6212. * Returns full UBXMsgBuffer including header and checksum
  6213. */
  6214. /*!
  6215. * \fn struct UBXMsgBuffer getCFG_PRT_POLL_OPT(UBXU1_t portId)
  6216. * This function construct full buffer for #UBXCFG_PRT_POLL_OPT message.
  6217. * \brief Getter for #UBXCFG_PRT_POLL_OPT
  6218. * \param portId
  6219. * Port Identifier Number
  6220. * \see #UBXCFG_PRT for valid values
  6221. * \return
  6222. * Returns full UBXMsgBuffer including header and checksum
  6223. */
  6224. /*!
  6225. * \fn getCFG_PRT_UART
  6226. * This function construct full buffer for #UBXCFG_PRT_UART message.
  6227. * \brief Getter for #UBXCFG_PRT_UART
  6228. * \todo Getter is not complete
  6229. * \return
  6230. * Returns full UBXMsgBuffer including header and checksum
  6231. */
  6232. /*!
  6233. * \fn getCFG_PRT_USB
  6234. * This function construct full buffer for #UBXCFG_PRT_USB message.
  6235. * \brief Getter for #UBXCFG_PRT_USB
  6236. * \todo Getter is not complete
  6237. * \return
  6238. * Returns full UBXMsgBuffer including header and checksum
  6239. */
  6240. /*!
  6241. * \fn getCFG_PRT_SPI
  6242. * This function construct full buffer for #UBXCFG_PRT_SPI message.
  6243. * \brief Getter for #UBXCFG_PRT_SPI
  6244. * \todo Getter is not complete
  6245. * \return
  6246. * Returns full UBXMsgBuffer including header and checksum
  6247. */
  6248. /*!
  6249. * \fn getCFG_PRT_DDC
  6250. * This function construct full buffer for #UBXCFG_PRT_DDC message.
  6251. * \brief Getter for #UBXCFG_PRT_DDC
  6252. * \todo Getter is not complete
  6253. * \return
  6254. * Returns full UBXMsgBuffer including header and checksum
  6255. */
  6256. /*!
  6257. * \fn getCFG_RATE_POLL
  6258. * This function construct full buffer for #UBXCFG_RATE_POLL message.
  6259. * \brief Getter for #UBXCFG_RATE_POLL
  6260. * \return
  6261. * Returns full UBXMsgBuffer including header and checksum
  6262. */
  6263. /*!
  6264. * \fn struct UBXMsgBuffer getCFG_RATE(UBXU2_t measRate, UBXU2_t navRate, UBXU2_t timeRef)
  6265. * This function construct full buffer for #UBXCFG_RATE message.
  6266. * \brief Getter for #UBXCFG_RATE
  6267. * \param measRate
  6268. * Measurement Rate, GPS measurements are
  6269. * taken every measRate milliseconds
  6270. * \param navRate
  6271. * Navigation Rate, in number of measurement
  6272. * cycles.
  6273. * \note This parameter cannot be changed, and
  6274. * must be set to 1.
  6275. * \param timeRef
  6276. * Alignment to reference time.
  6277. * \note
  6278. * - 0 - UTC time
  6279. * - 1 - GPS time
  6280. * \return
  6281. * Returns full UBXMsgBuffer including header and checksum
  6282. */
  6283. /*!
  6284. * \fn struct UBXMsgBuffer getCFG_RINV(UBXX1_t flags, UBXU1_t* data, int dataSize)
  6285. * This function construct full buffer for #UBXCFG_RINV message.
  6286. * \brief Getter for #UBXCFG_RINV
  6287. * \param flags
  6288. * Flags
  6289. * \see #UBXRINVFlags to fill this field
  6290. * \param data
  6291. * Pointer to variable payload data
  6292. * \param dataSize
  6293. * Data size
  6294. * \return
  6295. * Returns full UBXMsgBuffer including header and checksum
  6296. */
  6297. /*!
  6298. * \fn getCFG_RINV_POLL
  6299. * This function construct full buffer for #UBXCFG_RINV_POLL message.
  6300. * \brief Getter for #UBXCFG_RINV_POLL
  6301. * \return
  6302. * Returns full UBXMsgBuffer including header and checksum
  6303. */
  6304. /*!
  6305. * \fn struct UBXMsgBuffer getCFG_RXM(UBXU1_t lpMode)
  6306. * This function construct full buffer for #UBXCFG_RXM message.
  6307. * \brief Getter for #UBXCFG_RXM
  6308. * \param lpMode
  6309. * Low power mode
  6310. * \see #UBXRXMLowPowerModes to fill this field
  6311. * \return
  6312. * Returns full UBXMsgBuffer including header and checksum
  6313. */
  6314. /*!
  6315. * \fn getCFG_RXM_POLL
  6316. * This function construct full buffer for #UBXCFG_RXM_POLL message.
  6317. * \brief Getter for #UBXCFG_RXM_POLL
  6318. * \return
  6319. * Returns full UBXMsgBuffer including header and checksum
  6320. */
  6321. /*!
  6322. * \fn struct UBXMsgBuffer getCFG_SBAS(UBXX1_t mode, UBXX1_t usage, UBXU1_t maxSBAS, UBXX1_t scanmode2, UBXX4_t scanmode1)
  6323. * This function construct full buffer for #UBXCFG_SBAS message.
  6324. * \brief Getter for #UBXCFG_SBAS
  6325. * \param mode
  6326. * SBAS Mode
  6327. * \see #UBXSBASModes to fill this field
  6328. * \param usage
  6329. * SBAS Usage
  6330. * \see #UBXSBASUsage to fill this field
  6331. * \param maxSBAS
  6332. * Maximum Number of SBAS prioritized tracking
  6333. * channels to use
  6334. * \note valid range: 0 - 3
  6335. * \deprecated obsolete and superseeded by #UBXCFG_GNSS in protocol
  6336. * versions 14.00+.
  6337. * \param scanmode2
  6338. * Continuation of scanmode bitmask below
  6339. * \see #UBXSBASScanModes2 to fill this field
  6340. * \param scanmode1
  6341. * Which SBAS PRN numbers to search for (Bitmask)
  6342. * If all Bits are set to zero, auto-scan (i.e. all valid
  6343. * PRNs) are searched.
  6344. * Every bit corresponds to a PRN number
  6345. * \see #UBXSBASScanModes1 to fill this field
  6346. * \return
  6347. * Returns full UBXMsgBuffer including header and checksum
  6348. */
  6349. /*!
  6350. * \fn getCFG_SBAS_POLL
  6351. * This function construct full buffer for #UBXCFG_SBAS_POLL message.
  6352. * \brief Getter for #UBXCFG_SBAS_POLL
  6353. * \return
  6354. * Returns full UBXMsgBuffer including header and checksum
  6355. */
  6356. /*!
  6357. * \fn getCFG_TP5_POLL
  6358. * This function construct full buffer for #UBXCFG_TP5_POLL message.
  6359. * \brief Getter for #UBXCFG_TP5_POLL
  6360. * \return
  6361. * Returns full UBXMsgBuffer including header and checksum
  6362. */
  6363. /*!
  6364. * \fn getCFG_USB_POLL
  6365. * This function construct full buffer for #UBXCFG_USB_POLL message.
  6366. * \brief Getter for #UBXCFG_USB_POLL
  6367. * \return
  6368. * Returns full UBXMsgBuffer including header and checksum
  6369. */
  6370. /*!
  6371. * \fn struct UBXMsgBuffer getCFG_USB(UBXU2_t vendorId,
  6372. UBXU2_t productId,
  6373. UBXU2_t powerConsumption,
  6374. UBXX2_t flags,
  6375. UBXCH_t* vendorString,
  6376. UBXCH_t* productString,
  6377. UBXCH_t* serialNumber)
  6378. * This function construct full buffer for #UBXCFG_USB message.
  6379. * \brief Getter for #UBXCFG_USB
  6380. * \param vendorId
  6381. * Vendor ID. This field shall only be set to
  6382. * registered Vendor IDs.
  6383. * \note Changing this field
  6384. * requires special Host drivers.
  6385. * \param productId
  6386. * Product ID.
  6387. * \note Changing this field requires special
  6388. * Host drivers.
  6389. * \param powerConsumption
  6390. * Power consumed by the device
  6391. * \param flags
  6392. * Various configuration flags
  6393. * \see #UBXUSBFlags to fill this field
  6394. * \param vendorString
  6395. * String containing the vendor name. 32 ASCII bytes
  6396. * including 0-termination.
  6397. * \param productString
  6398. * String containing the product name. 32 ASCI bytes
  6399. * including 0-termination.
  6400. * \param serialNumber
  6401. * String containing the serial number. 32 ASCII
  6402. * bytes including 0-termination.
  6403. * \note Changing the String fields requires special Host
  6404. * drivers.
  6405. * \return
  6406. * Returns full UBXMsgBuffer including header and checksum
  6407. */
  6408. /*!
  6409. * \fn struct UBXMsgBuffer getLOG_CREATE(UBXU1_t version, UBXX1_t logCfg, UBXU1_t logSize, UBXU4_t userDefinedSize)
  6410. * This function construct full buffer for #UBXLOG_CREATE message.
  6411. * \brief Getter for #UBXLOG_CREATE
  6412. * \param logCfg
  6413. * Config flags
  6414. * \see #UBXLOGCfg to fill this field
  6415. * \param logSize
  6416. * Indicates the size of the log
  6417. * \see #UBXLOGSize to fill this field
  6418. * \param userDefinedSize
  6419. * Sets the maximum amount of space in the
  6420. * filestore that can be used by the logging task
  6421. * \note This field is only applicable if logSize is set to user defined.
  6422. * \return
  6423. * Returns full UBXMsgBuffer including header and checksum
  6424. */
  6425. /*!
  6426. * \fn getLOG_ERASE
  6427. * This function construct full buffer for #UBXLOG_ERASE message.
  6428. * \brief Getter for #UBXLOG_ERASE
  6429. * \return
  6430. * Returns full UBXMsgBuffer including header and checksum
  6431. */
  6432. /*!
  6433. * \fn struct UBXMsgBuffer getLOG_FINDTIME_IN(UBXU2_t year, UBXU1_t month, UBXU1_t day, UBXU1_t hour, UBXU1_t minute, UBXU1_t second)
  6434. * This function construct full buffer for #UBXLOG_FINDTIME_IN message.
  6435. * \brief Getter for #UBXLOG_FINDTIME_IN
  6436. * \param year
  6437. * Year of UTC time
  6438. * \note Range 1-65635
  6439. * \param month
  6440. * Month of UTC time
  6441. * \note Range 1-12
  6442. * \param day
  6443. * Day of UTC time
  6444. * \note Range 1-31
  6445. * \param hour
  6446. * Hour of UTC time
  6447. * \note Range 0-23
  6448. * \param minute
  6449. * Minute of UTC time
  6450. * \note Range 0-59
  6451. * \param second
  6452. * Second of UTC time
  6453. * \note Range 0-60 - looks like mistake in official documentation
  6454. * \return
  6455. * Returns full UBXMsgBuffer including header and checksum
  6456. */
  6457. /*!
  6458. * \fn getLOG_INFO_POLL
  6459. * This function construct full buffer for #UBXLOG_INFO_POLL message.
  6460. * \brief Getter for #UBXLOG_INFO_POLL
  6461. * \return
  6462. * Returns full UBXMsgBuffer including header and checksum
  6463. */
  6464. /*!
  6465. * \fn struct UBXMsgBuffer getLOG_RETRIEVE(UBXU4_t startNumber,
  6466. UBXU4_t entryCount,
  6467. UBXU1_t version)
  6468. * This function construct full buffer for #UBXLOG_RETRIEVE message.
  6469. * \brief Getter for #UBXLOG_RETRIEVE
  6470. * \param startNumber
  6471. * Index of first entry to be transferred
  6472. * \param entryCount
  6473. * Number of log entries to transfer. The maximum
  6474. * is 256
  6475. * \param version
  6476. * The version of this message
  6477. * \note Set to 0
  6478. * \return
  6479. * Returns full UBXMsgBuffer including header and checksum
  6480. */
  6481. /*!
  6482. * \fn getLOG_STRING
  6483. * This function construct full buffer for #UBXLOG_STRING message.
  6484. * \brief Getter for #UBXLOG_STRING
  6485. * \return
  6486. * Returns full UBXMsgBuffer including header and checksum
  6487. */
  6488. /*!
  6489. * \fn getMON_VER_POLL
  6490. * This function construct full buffer for #UBXMON_VER_POLL message.
  6491. * \brief Getter for #UBXMON_VER_POLL
  6492. * \return
  6493. * Returns full UBXMsgBuffer including header and checksum
  6494. */
  6495. /*!
  6496. * \fn getRXM_ALM_POLL
  6497. * This function construct full buffer for #UBXRXM_ALM_POLL message.
  6498. * \brief Getter for #UBXRXM_ALM_POLL
  6499. * \return
  6500. * Returns full UBXMsgBuffer including header and checksum
  6501. */
  6502. /*!
  6503. * \fn struct UBXMsgBuffer getRXM_ALM_POLL_OPT(UBXU1_t svid)
  6504. * This function construct full buffer for #UBXRXM_ALM_POLL_OPT message.
  6505. * \brief Getter for #UBXRXM_ALM_POLL_OPT
  6506. * \param svid
  6507. * SV ID for which the receiver shall return its Almanac Data
  6508. * \note Valid Range: 1..32
  6509. * \return
  6510. * Returns full UBXMsgBuffer including header and checksum
  6511. */
  6512. /*!
  6513. * \fn getRXM_EPH_POLL
  6514. * This function construct full buffer for #UBXRXM_EPH_POLL message.
  6515. * \brief Getter for #UBXRXM_EPH_POLL
  6516. * \return
  6517. * Returns full UBXMsgBuffer including header and checksum
  6518. */
  6519. /*!
  6520. * \fn struct UBXMsgBuffer getRXM_EPH_POLL_OPT(UBXU1_t svid)
  6521. * This function construct full buffer for #UBXRXM_EPH_POLL_OPT message.
  6522. * \brief Getter for #UBXRXM_EPH_POLL_OPT
  6523. * \param svid
  6524. * SV ID for which this Almanac Data
  6525. * \note Valid Range: 1 .. 32 or 51, 56, 63.
  6526. * \return
  6527. * Returns full UBXMsgBuffer including header and checksum
  6528. */
  6529. /*!
  6530. * \fn struct UBXMsgBuffer getRXM_PMREQ(UBXU4_t duration, UBXX4_t flags)
  6531. * This function construct full buffer for #UBXRXM_PMREQ message.
  6532. * \brief Getter for #UBXRXM_PMREQ
  6533. * \param duration
  6534. * Duration of the requested task
  6535. * \note Set to 0 for infinite duration
  6536. * \param flags
  6537. * Task flags
  6538. * \see #UBXPMREQFlags to fill this field
  6539. * \return
  6540. * Returns full UBXMsgBuffer including header and checksum
  6541. */
  6542. /*!
  6543. * \fn struct UBXMsgBuffer getRXM_SVSI(UBXU4_t iTOW,
  6544. UBXI2_t week,
  6545. UBXU1_t numVis,
  6546. UBXU1_t numSV,
  6547. struct UBXRXM_SVSI_PART* svsiPart,
  6548. int svsiPartCount)
  6549. * This function construct full buffer for #UBXRXM_SVSI message.
  6550. * \brief Getter for #UBXRXM_SVSI
  6551. * \param iTOW
  6552. * GPS time of week of the navigation epoch.
  6553. * See the description of iTOW (u-blox© official documentation) for details.
  6554. * \param week
  6555. * GPS week number of the navigation epoch
  6556. * \param numVis
  6557. * Number of visible satellites
  6558. * \param numSV
  6559. * Number of per-SV data blocks following
  6560. * \param svsiPart
  6561. * Pointer to variabl payload part
  6562. * \param svsiPartCount
  6563. * variabl payload parts count
  6564. * \return
  6565. * Returns full UBXMsgBuffer including header and checksum
  6566. */
  6567. /*! @} */