ubx.c 219 KB

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