/* * ubxproto * Copyright (c) 2014, Alexey Edelev aka semlanik, All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. * * Additionally to GNU Lesser General Public License you MUST NOT * static link this library and MUST add link to author * and source of this library in your application. * * Actual LGPL text https://www.gnu.org/licenses/lgpl.html * * File: ubx.c */ #include "portable_endian.h" #include "ubxmessage.h" #include "ubx.h" #include "malloc.h" #include "memory.h" void fletcherChecksum(unsigned char* buffer, int size, unsigned char* checkSumA, unsigned char* checkSumB) { int i = 0; *checkSumA = 0; *checkSumB = 0; for(; i < size; i++) { *checkSumA += buffer[i]; *checkSumB += *checkSumA; } } extern void clearUBXMsgBuffer(const UBXMsgBuffer* buffer) { free(buffer->data); } void completeMsg(UBXMsgBuffer* buffer, int payloadSize) { unsigned char* checkSumA = (unsigned char*)(buffer->data + UBX_HEADER_SIZE + payloadSize); unsigned char* checkSumB = (unsigned char*)(buffer->data + UBX_HEADER_SIZE + payloadSize + 1); fletcherChecksum((unsigned char*)(buffer->data + sizeof(UBX_PREAMBLE)), payloadSize + 4, checkSumA, checkSumB); } void initMsg(UBXMsg* msg, int payloadSize, UBXMessageClass msgClass, UBXMessageId msgId) { msg->preamble = htobe16(UBX_PREAMBLE); msg->hdr.msgClass = msgClass; msg->hdr.msgId = msgId; msg->hdr.length = payloadSize; } UBXMsgBuffer createBuffer(int payloadSize) { UBXMsgBuffer buffer = {0, 0}; buffer.size = UBX_HEADER_SIZE + payloadSize + UBX_CHECKSUM_SIZE; buffer.data = (char*)malloc(buffer.size); memset(buffer.data, 0, buffer.size); return buffer; } UBXMsgBuffer getAID_ALPSRV(UBXMsg* clientMgs, const UBXAlpFileInfo *fileInfo) { int requestedAlpSize = (clientMgs->payload.AID_ALPSRV.size << 1); int alpMsgSize = 0; int payloadSize = 0; UBXMsgBuffer buffer; UBXMsg* msg = 0; if(fileInfo->dataSize < (clientMgs->payload.AID_ALPSRV.offset + requestedAlpSize)) { requestedAlpSize = fileInfo->dataSize - clientMgs->payload.AID_ALPSRV.offset - 1; } alpMsgSize = sizeof(UBXAID_ALPSRV); payloadSize = alpMsgSize + requestedAlpSize; buffer = createBuffer(payloadSize); msg = (UBXMsg*) buffer.data; if(requestedAlpSize < 0) { return buffer; } initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALPSRV); msg->payload.AID_ALPSRV.idSize = clientMgs->payload.AID_ALPSRV.idSize; msg->payload.AID_ALPSRV.type = clientMgs->payload.AID_ALPSRV.type; msg->payload.AID_ALPSRV.offset = clientMgs->payload.AID_ALPSRV.offset; msg->payload.AID_ALPSRV.size = clientMgs->payload.AID_ALPSRV.size; msg->payload.AID_ALPSRV.fileId = fileInfo->fileId; msg->payload.AID_ALPSRV.dataSize = requestedAlpSize; msg->payload.AID_ALPSRV.id1 = clientMgs->payload.AID_ALPSRV.id1; msg->payload.AID_ALPSRV.id2 = clientMgs->payload.AID_ALPSRV.id2; msg->payload.AID_ALPSRV.id3 = clientMgs->payload.AID_ALPSRV.id3; memcpy(buffer.data + UBX_HEADER_SIZE + alpMsgSize, fileInfo->alpData + msg->payload.AID_ALPSRV.offset, requestedAlpSize); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_MSG_POLL(UBXMessageClass msgClass, UBXMessageId msgId) { int payloadSize = sizeof(UBXCFG_MSG_POLL); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_MSG); msg->payload.CFG_MSG_POLL.msgClass = msgClass; msg->payload.CFG_MSG_POLL.msgId = msgId; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_MSG_RATE(UBXMessageClass msgClass, UBXMessageId msgId, UBXU1_t rate) { int payloadSize = sizeof(UBXCFG_MSG_RATE); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_MSG); msg->payload.CFG_MSG_RATE.msgClass = msgClass; msg->payload.CFG_MSG_RATE.msgId = msgId; msg->payload.CFG_MSG_RATE.rate = rate; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_MSG_RATES(UBXMessageClass msgClass, UBXMessageId msgId, UBXU1_t rate[]) { int payloadSize = sizeof(UBXCFG_MSG_RATES); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_MSG); msg->payload.CFG_MSG_RATES.msgClass = msgClass; msg->payload.CFG_MSG_RATES.msgId = msgId; memcpy(msg->payload.CFG_MSG_RATES.rate, rate, 6 * sizeof(UBXU1_t)); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_RST(int mode, UBXU2_t mask) { int payloadSize = sizeof(UBXCFG_RST); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RST); msg->payload.CFG_RST.resetMode = mode; msg->payload.CFG_RST.navBBRMask = mask; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_RST_OPT(int mode, UBXBBRSpecialSets special) { int payloadSize = sizeof(UBXCFG_RST); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RST); msg->payload.CFG_RST.resetMode = mode; msg->payload.CFG_RST.navBBRMask = special; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_TP5_POLL_OPT(UBXCFGTimepulses tpIdx) { int payloadSize = sizeof(UBXCFG_TP5_POLL_OPT); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_TP5); msg->payload.CFG_TP5_POLL_OPT.tpIdx = tpIdx; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_TP5(UBXCFGTimepulses tpIdx, UBXI2_t antCableDelay, UBXI2_t rfGroupDelay, UBXU4_t freqPeriod, UBXU4_t freqPeriodLock, UBXU4_t pulseLenRatio, UBXU4_t pulseLenRatioLock, UBXI4_t userConfigDelay, UBXU4_t flags) { int payloadSize = sizeof(UBXCFG_TP5); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_TP5); msg->payload.CFG_TP5.tpIdx = tpIdx; msg->payload.CFG_TP5.antCableDelay = antCableDelay; msg->payload.CFG_TP5.rfGroupDelay = rfGroupDelay; msg->payload.CFG_TP5.freqPeriod = freqPeriod; msg->payload.CFG_TP5.freqPeriodLock = freqPeriodLock; msg->payload.CFG_TP5.pulseLenRatio = pulseLenRatio; msg->payload.CFG_TP5.pulseLenRatioLock = pulseLenRatioLock; msg->payload.CFG_TP5.userConfigDelay = userConfigDelay; msg->payload.CFG_TP5.flags = flags; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_ALM_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_ALM_POLL_OPT(UBXU1_t svid) { int payloadSize = sizeof(UBXAID_ALM_POLL_OPT); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP); msg->payload.AID_ALM_POLL_OPT.svid = svid; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_ALM(UBXU4_t svid, UBXU4_t week) { int payloadSize = sizeof(UBXAID_ALM); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALM); msg->payload.AID_ALM.svid = svid; msg->payload.AID_ALM.week = week; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_ALM_OPT(UBXU4_t svid, UBXU4_t week, UBXU4_t dwrd[8]) { int payloadSize = sizeof(UBXAID_ALM_OPT); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALM); msg->payload.AID_ALM_OPT.svid = svid; msg->payload.AID_ALM_OPT.week = week; memcpy(msg->payload.AID_ALM_OPT.dwrd, dwrd, 8 * sizeof(UBXU4_t)); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_ALP_POLL(UBXU4_t predTow, UBXU4_t predDur, UBXI4_t age, UBXU2_t predWno, UBXU2_t almWno, UBXU1_t svs) { int payloadSize = sizeof(UBXAID_ALP_POLL); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP); msg->payload.AID_ALP_POLL.predTow = predTow; msg->payload.AID_ALP_POLL.predDur = predDur; msg->payload.AID_ALP_POLL.age = age; msg->payload.AID_ALP_POLL.predWno = predWno; msg->payload.AID_ALP_POLL.almWno = almWno; msg->payload.AID_ALP_POLL.svs = svs; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_ALP_END() { int payloadSize = sizeof(UBXAID_ALP_END); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP); msg->payload.AID_ALP_END.dummy = 0xAA; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_ALP(UBXU2_t* chunk, int chunkSize) { int payloadSize = chunkSize; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_ALP); memcpy(((char*)&(msg->payload)) + sizeof(UBXAID_ALP), chunk, chunkSize); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_AOP_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_AOP_POLL_OPT(UBXU1_t svid) { int payloadSize = sizeof(UBXAID_AOP_POLL_OPT); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP); msg->payload.AID_AOP_POLL_OPT.svid = svid; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_AOP(UBXU1_t svid, UBXU1_t data[59]) { int payloadSize = sizeof(UBXAID_AOP); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP); msg->payload.AID_AOP.svid = svid; memcpy(msg->payload.AID_AOP.data, data, 59 * sizeof(UBXU1_t)); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_AOP_OPT(UBXU1_t svid, UBXU1_t data[59], UBXU1_t optional0[48], UBXU1_t optional1[48], UBXU1_t optional2[48]) { int payloadSize = sizeof(UBXAID_AOP_OPT); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_AOP); msg->payload.AID_AOP_OPT.svid = svid; memcpy(msg->payload.AID_AOP_OPT.data, data, 59 * sizeof(UBXU1_t)); memcpy(msg->payload.AID_AOP_OPT.optional0, optional0, 48 * sizeof(UBXU1_t)); memcpy(msg->payload.AID_AOP_OPT.optional1, optional1, 48 * sizeof(UBXU1_t)); memcpy(msg->payload.AID_AOP_OPT.optional2, optional2, 48 * sizeof(UBXU1_t)); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_DATA_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_DATA); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_EPH_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_EPH_POLL_OPT(UBXU1_t svid) { int payloadSize = sizeof(UBXAID_EPH_POLL_OPT); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH); msg->payload.AID_EPH_POLL_OPT.svid = svid; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_EPH(UBXU4_t svid, UBXU4_t how) { int payloadSize = sizeof(UBXAID_EPH); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH); msg->payload.AID_EPH.svid = svid; msg->payload.AID_EPH.how = how; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_EPH_OPT(UBXU4_t svid, UBXU4_t how, UBXU4_t sf1d[8], UBXU4_t sf2d[8], UBXU4_t sf3d[8]) { int payloadSize = sizeof(UBXAID_EPH_OPT); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_EPH); msg->payload.AID_EPH_OPT.svid = svid; msg->payload.AID_EPH_OPT.how = how; memcpy(msg->payload.AID_EPH_OPT.sf1d, sf1d, 8 * sizeof(UBXU4_t)); memcpy(msg->payload.AID_EPH_OPT.sf2d, sf2d, 8 * sizeof(UBXU4_t)); memcpy(msg->payload.AID_EPH_OPT.sf3d, sf3d, 8 * sizeof(UBXU4_t)); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_HUI_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_HUI); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_HUI(UBXI4_t health, UBXR4_t utcA0, UBXR4_t utcA1, UBXI4_t utcTOW, UBXI2_t utcWNT, UBXI2_t utcLS, UBXI2_t utcWNF, UBXI2_t utcDN, UBXI2_t utcLSF, UBXI2_t utcSpare, UBXR4_t klobA0, UBXR4_t klobA1, UBXR4_t klobA2, UBXR4_t klobA3, UBXR4_t klobB0, UBXR4_t klobB1, UBXR4_t klobB2, UBXR4_t klobB3, UBXX2_t flags) { int payloadSize = sizeof(UBXAID_HUI); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_HUI); msg->payload.AID_HUI.health = health; msg->payload.AID_HUI.utcA0 = utcA0; msg->payload.AID_HUI.utcA1 = utcA1; msg->payload.AID_HUI.utcTOW = utcTOW; msg->payload.AID_HUI.utcWNT = utcWNT; msg->payload.AID_HUI.utcLS = utcLS; msg->payload.AID_HUI.utcWNF = utcWNF; msg->payload.AID_HUI.utcDN = utcDN; msg->payload.AID_HUI.utcLSF = utcLSF; msg->payload.AID_HUI.utcSpare = utcSpare; msg->payload.AID_HUI.klobA0 = klobA0; msg->payload.AID_HUI.klobA1 = klobA1; msg->payload.AID_HUI.klobA2 = klobA2; msg->payload.AID_HUI.klobA3 = klobA3; msg->payload.AID_HUI.klobA0 = klobB0; msg->payload.AID_HUI.klobA1 = klobB1; msg->payload.AID_HUI.klobA2 = klobB2; msg->payload.AID_HUI.klobA3 = klobB3; msg->payload.AID_HUI.flags = flags; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_INI_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_INI); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getAID_INI(UBXI1_t ecefXOrLat, UBXI1_t ecefYOrLat, UBXI1_t ecefZOrLat, UBXU1_t posAcc, UBXI1_t tmCfg, UBXU2_t wnoOrDate, UBXU4_t towOrDate, UBXI4_t towNs, UBXU4_t tAccMS, UBXU4_t tAccNS, UBXI4_t clkDOrFreq, UBXU4_t clkDAccOrFreqAcc, UBXX4_t flags) { int payloadSize = sizeof(UBXAID_INI); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassAID, UBXMsgIdAID_INI); msg->payload.AID_INI.ecefXOrLat = ecefXOrLat; msg->payload.AID_INI.ecefYOrLat = ecefYOrLat; msg->payload.AID_INI.ecefZOrLat = ecefZOrLat; msg->payload.AID_INI.posAcc = posAcc; msg->payload.AID_INI.tmCfg = tmCfg; msg->payload.AID_INI.wnoOrDate = wnoOrDate; msg->payload.AID_INI.towOrDate = towOrDate; msg->payload.AID_INI.towNs = towNs; msg->payload.AID_INI.tAccMS = tAccMS; msg->payload.AID_INI.tAccNS = tAccNS; msg->payload.AID_INI.clkDOrFreq = clkDOrFreq; msg->payload.AID_INI.clkDAccOrFreqAcc = clkDAccOrFreqAcc; msg->payload.AID_INI.flags = flags; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_ANT(UBXX2_t flags, UBXANTPins pins) { int payloadSize = sizeof(UBXCFG_ANT); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ANT); msg->payload.CFG_ANT.flags = flags; msg->payload.CFG_ANT.pins = pins; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_ANT_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ANT); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_BATCH(UBXU1_t version, UBXX1_t flags, UBXU2_t bufSize, UBXU2_t notifThrs, UBXU1_t pioId) { int payloadSize = sizeof(UBXCFG_BATCH); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_BATCH); msg->payload.CFG_BATCH.version = version; msg->payload.CFG_BATCH.flags = flags; msg->payload.CFG_BATCH.bufSize = bufSize; msg->payload.CFG_BATCH.notifThrs = notifThrs; msg->payload.CFG_BATCH.pioId = pioId; msg->payload.CFG_BATCH.reserved1 = 0; completeMsg(&buffer, payloadSize); return buffer; } extern UBXMsgBuffer getCFG_BATCH_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_BATCH); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_CFG(UBXX4_t clearMask, UBXX4_t saveMask, UBXX4_t loadMask) { int payloadSize = sizeof(UBXCFG_CFG); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_CFG); msg->payload.CFG_CFG.clearMask = clearMask; msg->payload.CFG_CFG.saveMask = saveMask; msg->payload.CFG_CFG.loadMask = loadMask; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_CFG_OPT(UBXX4_t clearMask, UBXX4_t saveMask, UBXX4_t loadMask, UBXX1_t deviceMask) { int payloadSize = sizeof(UBXCFG_CFG_OPT); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_CFG); msg->payload.CFG_CFG_OPT.clearMask = clearMask; msg->payload.CFG_CFG_OPT.saveMask = saveMask; msg->payload.CFG_CFG_OPT.loadMask = loadMask; msg->payload.CFG_CFG_OPT.deviceMask = deviceMask; completeMsg(&buffer, payloadSize); return buffer; } 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) { int payloadSize = sizeof(UBXCFG_DAT_IN); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_CFG); msg->payload.CFG_DAT_IN.majA = majA; msg->payload.CFG_DAT_IN.flat = flat; msg->payload.CFG_DAT_IN.dX = dX; msg->payload.CFG_DAT_IN.dY = dY; msg->payload.CFG_DAT_IN.dZ = dZ; msg->payload.CFG_DAT_IN.rotX = rotX; msg->payload.CFG_DAT_IN.rotY = rotY; msg->payload.CFG_DAT_IN.rotZ = rotZ; msg->payload.CFG_DAT_IN.scale = scale; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_DAT_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_DAT); completeMsg(&buffer, payloadSize); return buffer; } extern UBXMsgBuffer getCFG_DGNSS_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_DGNSS); completeMsg(&buffer, payloadSize); return buffer; } extern UBXMsgBuffer getCFG_DGNSS(UBXU1_t dgnssMode) { int payloadSize = sizeof(UBXCFG_DGNSS); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_DGNSS); msg->payload.CFG_DGNSS.dgnssMode = dgnssMode; memset(msg->payload.CFG_DGNSS.reserved1, 0, sizeof(msg->payload.CFG_DGNSS)); completeMsg(&buffer, payloadSize); return buffer; } extern UBXMsgBuffer getCFG_DOSC_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_DOSC); completeMsg(&buffer, payloadSize); return buffer; } extern UBXMsgBuffer getCFG_DOSC(UBXU1_t version, UBXU1_t numOsc, UBXCFG_DOSC_CFG* oscCfg) { int payloadSize = sizeof(UBXCFG_DOSC) + sizeof(UBXCFG_DOSC_CFG) * numOsc; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_DOSC); msg->payload.CFG_DOSC.version = version; msg->payload.CFG_DOSC.numOsc = numOsc; memcpy(msg->payload.CFG_DOSC.cfg, oscCfg, numOsc * sizeof(UBXCFG_DOSC_CFG)); completeMsg(&buffer, payloadSize); return buffer; } extern UBXMsgBuffer getCFG_ESRC_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ESRC); completeMsg(&buffer, payloadSize); return buffer; } extern UBXMsgBuffer getCFG_ESRC(UBXU1_t version, UBXU1_t numSources, UBXCFG_ESRC_CFG* esrcCfg) { int payloadSize = sizeof(UBXCFG_ESRC) + sizeof(UBXCFG_ESRC_CFG) * numSources; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ESRC); msg->payload.CFG_ESRC.version = version; msg->payload.CFG_ESRC.numSources = numSources; memcpy(msg->payload.CFG_ESRC.cfg, esrcCfg, numSources * sizeof(UBXCFG_ESRC_CFG)); completeMsg(&buffer, payloadSize); return buffer; } extern UBXMsgBuffer getCFG_GEOFENCE_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_GEOFENCE); completeMsg(&buffer, payloadSize); return buffer; } extern UBXMsgBuffer getCFG_GEOFENCE(UBXU1_t version, UBXU1_t numFences, UBXCFGGEOFENCEConfidenceLevel confLvl, UBXCFGGEOFENCEPIOState pioEnabled, UBXCFGGEOFENCEPinPolarity pinPolarity, UBXU1_t pin, UBXCFG_GEOFENCE_PART* fences) { int payloadSize = sizeof(UBXCFG_GEOFENCE) + sizeof(UBXCFG_GEOFENCE_PART) * numFences; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ESRC); msg->payload.CFG_GEOFENCE.version = version; msg->payload.CFG_GEOFENCE.numFences = numFences; msg->payload.CFG_GEOFENCE.confLvl = confLvl; memset(msg->payload.CFG_GEOFENCE.reserved1, 0, sizeof(msg->payload.CFG_GEOFENCE.reserved1)); msg->payload.CFG_GEOFENCE.pioEnabled = pioEnabled; msg->payload.CFG_GEOFENCE.pinPolarity = pinPolarity; msg->payload.CFG_GEOFENCE.pin = pin; memset(msg->payload.CFG_GEOFENCE.reserved2, 0, sizeof(msg->payload.CFG_GEOFENCE.reserved2)); memcpy(msg->payload.CFG_GEOFENCE.fence, fences, numFences * sizeof(UBXCFG_GEOFENCE_PART)); completeMsg(&buffer, payloadSize); return buffer; } extern UBXMsgBuffer getCFG_HNR_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_HNR); completeMsg(&buffer, payloadSize); return buffer; } extern UBXMsgBuffer getCFG_HNR(UBXU1_t highNavRate) { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_HNR); msg->payload.CFG_HNR.highNavRate = highNavRate; memset(msg->payload.CFG_HNR.reserved1, 0, sizeof(msg->payload.CFG_HNR.reserved1)); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_GNSS_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_GNSS); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_GNSS(UBXU1_t msgVer, UBXU1_t numTrkChHw, UBXU1_t numTrkChUse, UBXU1_t numConfigBlocks, UBXCFG_GNSS_PART* gnssPart) { int payloadSize = sizeof(UBXCFG_GNSS) + numConfigBlocks*sizeof(UBXCFG_GNSS_PART); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_GNSS); msg->payload.CFG_GNSS.msgVer = msgVer; msg->payload.CFG_GNSS.numTrkChHw = numTrkChHw; msg->payload.CFG_GNSS.numTrkChUse = numTrkChUse; msg->payload.CFG_GNSS.numConfigBlocks = numConfigBlocks; memcpy(((char*)&(msg->payload.CFG_GNSS)) + sizeof(UBXCFG_GNSS), gnssPart, numConfigBlocks * sizeof(UBXCFG_GNSS_PART)); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_INF_POLL(UBXU1_t protocolId) { int payloadSize = sizeof(UBXCFG_INF_POLL); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_INF); msg->payload.CFG_INF_POLL.protocolId = protocolId; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_INF(UBXCFG_INF_PART* infPart, int infPartCount) { int payloadSize = sizeof(UBXCFG_INF_PART) * infPartCount; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_INF); memcpy(msg->payload.CFG_INF.inf, infPart, infPartCount * sizeof(UBXCFG_INF_PART)); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_ITFM_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ITFM); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_ITFM(UBXITFMConfig config, UBXITFMConfig2 config2) { int payloadSize = sizeof(UBXCFG_ITFM); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_ITFM); msg->payload.CFG_ITFM.config = config; msg->payload.CFG_ITFM.config2 = config2; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_LOGFILTER_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_LOGFILTER); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_LOGFILTER(UBXU1_t version, UBXX1_t flags, UBXU2_t minIterval, UBXU2_t timeThreshold, UBXU2_t speedThreshold, UBXU4_t positionThreshold) { int payloadSize = sizeof(UBXCFG_LOGFILTER); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_LOGFILTER); msg->payload.CFG_LOGFILTER.version = version; msg->payload.CFG_LOGFILTER.flags = flags; msg->payload.CFG_LOGFILTER.minIterval = minIterval; msg->payload.CFG_LOGFILTER.timeThreshold = timeThreshold; msg->payload.CFG_LOGFILTER.speedThreshold = speedThreshold; msg->payload.CFG_LOGFILTER.positionThreshold = positionThreshold; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_NAV5_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAV5); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_NAV5(UBXX2_t mask, UBXNAV5Model dynModel, UBXNAV5FixMode fixMode, UBXI4_t fixedAlt, UBXU4_t fixedAltVar, UBXI1_t minElev, UBXU2_t pDop, UBXU2_t tDop, UBXU2_t pAcc, UBXU2_t tAcc, UBXU1_t staticHoldThresh, UBXU1_t dgpsTimeOut, UBXU1_t cnoThreshNumSVs, UBXU1_t cnoThresh) { int payloadSize = sizeof(UBXCFG_NAV5); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAV5); msg->payload.CFG_NAV5.mask = mask; msg->payload.CFG_NAV5.dynModel = dynModel; msg->payload.CFG_NAV5.fixMode = fixMode; msg->payload.CFG_NAV5.fixedAlt = fixedAlt; msg->payload.CFG_NAV5.fixedAltVar = fixedAltVar; msg->payload.CFG_NAV5.minElev = minElev; msg->payload.CFG_NAV5.pDop = pDop; msg->payload.CFG_NAV5.tDop = tDop; msg->payload.CFG_NAV5.pAcc = pAcc; msg->payload.CFG_NAV5.tAcc = tAcc; msg->payload.CFG_NAV5.staticHoldThresh = staticHoldThresh; msg->payload.CFG_NAV5.dgpsTimeOut = dgpsTimeOut; msg->payload.CFG_NAV5.cnoThreshNumSVs = cnoThreshNumSVs; msg->payload.CFG_NAV5.cnoThresh = cnoThresh; msg->payload.CFG_NAV5.reserved2 = 0; msg->payload.CFG_NAV5.reserved3 = 0; msg->payload.CFG_NAV5.reserved4 = 0; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_NAVX5_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAVX5); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_NAVX5(UBXU2_t version, UBXX2_t mask1, UBXU1_t minSVs, UBXU1_t maxSVs, UBXU1_t minCNO, UBXU1_t iniFix3D, UBXU2_t wknRollover, UBXU1_t usePPP, UBXU1_t aopCFG, UBXU1_t aopOrbMaxErr) { int payloadSize = sizeof(UBXCFG_NAVX5); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NAVX5); msg->payload.CFG_NAVX5.version = version; msg->payload.CFG_NAVX5.mask1 = mask1; msg->payload.CFG_NAVX5.reserved0 = 0; msg->payload.CFG_NAVX5.reserved1 = 0; msg->payload.CFG_NAVX5.reserved2 = 0; msg->payload.CFG_NAVX5.minSVs = minSVs; msg->payload.CFG_NAVX5.maxSVs = maxSVs; msg->payload.CFG_NAVX5.minCNO = minCNO; msg->payload.CFG_NAVX5.reserved5 = 0; msg->payload.CFG_NAVX5.iniFix3D = iniFix3D; msg->payload.CFG_NAVX5.reserved6 = 0; msg->payload.CFG_NAVX5.reserved7 = 0; msg->payload.CFG_NAVX5.reserved8 = 0; msg->payload.CFG_NAVX5.wknRollover = wknRollover; msg->payload.CFG_NAVX5.reserved9 = 0; msg->payload.CFG_NAVX5.reserved10 = 0; msg->payload.CFG_NAVX5.reserved11 = 0; msg->payload.CFG_NAVX5.usePPP = usePPP; msg->payload.CFG_NAVX5.aopCFG = aopCFG; msg->payload.CFG_NAVX5.reserved12 = 0; msg->payload.CFG_NAVX5.reserved13 = 0; msg->payload.CFG_NAVX5.aopOrbMaxErr = aopOrbMaxErr; msg->payload.CFG_NAVX5.reserved14 = 0; msg->payload.CFG_NAVX5.reserved15 = 0; msg->payload.CFG_NAVX5.reserved3 = 0; msg->payload.CFG_NAVX5.reserved4 = 0; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_NMEA_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NMEA); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_NMEA(UBXX1_t filter, UBXU1_t nmeaVersion, UBXU1_t numSV, UBXX1_t flags, UBXX4_t gnssToFilter, UBXNMEASVNumbering svNumbering, UBXNMEATalkerIds mainTalkerId, UBXNMEAGSVTalkerIds gsvTalkerId) { int payloadSize = sizeof(UBXCFG_NMEA); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NMEA); msg->payload.CFG_NMEA.filter = filter; msg->payload.CFG_NMEA.nmeaVersion = nmeaVersion; msg->payload.CFG_NMEA.numSV = numSV; msg->payload.CFG_NMEA.flags = flags; msg->payload.CFG_NMEA.gnssToFilter = gnssToFilter; msg->payload.CFG_NMEA.svNumbering = svNumbering; msg->payload.CFG_NMEA.mainTalkerId = mainTalkerId; msg->payload.CFG_NMEA.gsvTalkerId = gsvTalkerId; msg->payload.CFG_NMEA.reserved = 0; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_NVS(UBXX4_t clearMask, UBXX4_t saveMask, UBXX4_t loadMask, UBXX1_t deviceMask) { int payloadSize = sizeof(UBXCFG_NVS); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_NVS); msg->payload.CFG_NVS.clearMask = clearMask; msg->payload.CFG_NVS.saveMask = saveMask; msg->payload.CFG_NVS.loadMask = loadMask; msg->payload.CFG_NVS.deviceMask = deviceMask; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_PM2_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PM2); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_PM2(UBXCFG_PM2Flags flags, UBXU4_t updatePeriod, UBXU4_t searchPeriod, UBXU4_t gridOffset, UBXU2_t onTime, UBXU2_t minAcqTime) { int payloadSize = sizeof(UBXCFG_PM2); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PM2); msg->payload.CFG_PM2.flags = flags; msg->payload.CFG_PM2.updatePeriod = updatePeriod; msg->payload.CFG_PM2.searchPeriod = searchPeriod; msg->payload.CFG_PM2.gridOffset = gridOffset; msg->payload.CFG_PM2.onTime = onTime; msg->payload.CFG_PM2.minAcqTime = minAcqTime; completeMsg(&buffer, payloadSize); return buffer; } extern UBXMsgBuffer getCFG_PMS_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PMS); completeMsg(&buffer, payloadSize); return buffer; } extern UBXMsgBuffer getCFG_PMS(UBXU1_t version, UBXPMSValue powerSetupValue, UBXU2_t period, UBXU2_t onTime) { int payloadSize = sizeof(UBXCFG_PMS); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PMS); msg->payload.CFG_PMS.version = version; msg->payload.CFG_PMS.powerSetupValue = powerSetupValue; msg->payload.CFG_PMS.period = period; msg->payload.CFG_PMS.onTime = onTime; memset(msg->payload.CFG_PMS.reserved1, 0, sizeof(msg->payload.CFG_PMS)); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_PRT_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PRT); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_PRT_POLL_OPT(UBXU1_t portId) { int payloadSize = sizeof(UBXCFG_PRT_POLL_OPT); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_PRT); msg->payload.CFG_PRT_POLL_OPT.portId = portId; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_PRT_UART() { //TODO UBXMsgBuffer buffer = createBuffer(0); return buffer; } UBXMsgBuffer getCFG_PRT_USB() { //TODO UBXMsgBuffer buffer = createBuffer(0); return buffer; } UBXMsgBuffer getCFG_PRT_SPI() { //TODO UBXMsgBuffer buffer = createBuffer(0); return buffer; } UBXMsgBuffer getCFG_PRT_DDC() { //TODO UBXMsgBuffer buffer = createBuffer(0); return buffer; } UBXMsgBuffer getCFG_RATE_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RATE); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_RATE(UBXU2_t measRate, UBXU2_t navRate, UBXU2_t timeRef) { int payloadSize = sizeof(UBXCFG_RATE); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RATE); msg->payload.CFG_RATE.measRate = measRate; msg->payload.CFG_RATE.navRate = navRate; msg->payload.CFG_RATE.timeRef = timeRef; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_RINV(UBXX1_t flags, UBXU1_t* data, int dataSize) { int payloadSize = sizeof(UBXCFG_RINV) + dataSize * sizeof(UBXU1_t); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RINV); msg->payload.CFG_RINV.flags = flags; memcpy(((char*)&(msg->payload.CFG_RINV)) + sizeof(UBXCFG_RINV), data, dataSize * sizeof(UBXU1_t)); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_RINV_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RINV); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_RXM(UBXU1_t lpMode) { int payloadSize = sizeof(UBXCFG_RXM); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RXM); msg->payload.CFG_RXM.reserved1 = 8; msg->payload.CFG_RXM.lpMode = lpMode; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_RXM_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_RXM); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_SBAS(UBXX1_t mode, UBXX1_t usage, UBXU1_t maxSBAS, UBXX1_t scanmode2, UBXX4_t scanmode1) { int payloadSize = sizeof(UBXCFG_SBAS); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_SBAS); msg->payload.CFG_SBAS.mode = mode; msg->payload.CFG_SBAS.usage = usage; msg->payload.CFG_SBAS.maxSBAS = maxSBAS; msg->payload.CFG_SBAS.scanmode2 = scanmode2; msg->payload.CFG_SBAS.scanmode1 = scanmode1; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_SBAS_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_SBAS); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_TP5_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_TP5); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_USB_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_USB); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getCFG_USB(UBXU2_t vendorId, UBXU2_t productId, UBXU2_t powerConsumption, UBXX2_t flags, UBXCH_t* vendorString, UBXCH_t* productString, UBXCH_t* serialNumber) { int payloadSize = sizeof(UBXCFG_USB); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; int vendorStringSize = 0; int productStringSize = 0; int serialNumberSize = 0; initMsg(msg, payloadSize, UBXMsgClassCFG, UBXMsgIdCFG_USB); msg->payload.CFG_USB.vendorId = vendorId; msg->payload.CFG_USB.productId = productId; msg->payload.CFG_USB.reserved1 = 0; msg->payload.CFG_USB.reserved2 = 1; msg->payload.CFG_USB.powerConsumption = powerConsumption; msg->payload.CFG_USB.flags = flags; vendorStringSize = strlen(vendorString) > 32 ? 32 : strlen(vendorString); memcpy(msg->payload.CFG_USB.vendorString, vendorString, vendorStringSize); productStringSize = strlen(productString) > 32 ? 32 : strlen(productString); memcpy(msg->payload.CFG_USB.productString, productString, productStringSize); serialNumberSize = strlen(serialNumber) > 32 ? 32 : strlen(serialNumber); memcpy(msg->payload.CFG_USB.serialNumber, serialNumber, serialNumberSize); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getLOG_CREATE(UBXX1_t logCfg, UBXU1_t logSize, UBXU4_t userDefinedSize) { int payloadSize = sizeof(UBXLOG_CREATE); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_CREATE); msg->payload.LOG_CREATE.version = 0; msg->payload.LOG_CREATE.logCfg = logCfg; msg->payload.LOG_CREATE.reserved = 0; msg->payload.LOG_CREATE.logSize = logSize; msg->payload.LOG_CREATE.userDefinedSize = userDefinedSize; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getLOG_ERASE() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_ERASE); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getLOG_FINDTIME_IN(UBXU2_t year, UBXU1_t month, UBXU1_t day, UBXU1_t hour, UBXU1_t minute, UBXU1_t second) { int payloadSize = sizeof(UBXLOG_FINDTIME_IN); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_FINDTIME); msg->payload.LOG_FINDTIME_IN.version = 0; msg->payload.LOG_FINDTIME_IN.type = 0; msg->payload.LOG_FINDTIME_IN.year = year; msg->payload.LOG_FINDTIME_IN.month = month; msg->payload.LOG_FINDTIME_IN.day = day; msg->payload.LOG_FINDTIME_IN.hour = hour; msg->payload.LOG_FINDTIME_IN.minute = minute; msg->payload.LOG_FINDTIME_IN.second = second; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getLOG_INFO_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_INFO); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getLOG_RETRIEVE(UBXU4_t startNumber, UBXU4_t entryCount, UBXU1_t version) { int payloadSize = sizeof(UBXLOG_RETRIEVE); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_RETRIEVE); msg->payload.LOG_RETRIEVE.startNumber = startNumber; msg->payload.LOG_RETRIEVE.entryCount = entryCount; msg->payload.LOG_RETRIEVE.version = version; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getLOG_STRING(UBXCH_t* str) { int payloadSize = strlen(str); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassLOG, UBXMsgIdLOG_STRING); memcpy(&(msg->payload.LOG_STRING), str, payloadSize); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getMON_VER_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassMON, UBXMsgIdMON_VER); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getRXM_ALM_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_ALM); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getRXM_ALM_POLL_OPT(UBXU1_t svid) { int payloadSize = sizeof(UBXRXM_ALM_POLL_OPT); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_ALM); msg->payload.RXM_ALM_POLL_OPT.svid = svid; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getRXM_EPH_POLL() { int payloadSize = 0; UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_EPH); completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getRXM_EPH_POLL_OPT(UBXU1_t svid) { int payloadSize = sizeof(UBXRXM_EPH_POLL_OPT); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_ALM); msg->payload.RXM_ALM_POLL_OPT.svid = svid; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getRXM_PMREQ(UBXU4_t duration, UBXX4_t flags) { int payloadSize = sizeof(UBXRXM_PMREQ); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_PMREQ); msg->payload.RXM_PMREQ.duration = duration; msg->payload.RXM_PMREQ.flags = flags; completeMsg(&buffer, payloadSize); return buffer; } UBXMsgBuffer getRXM_SVSI(UBXU4_t iTOW, UBXI2_t week, UBXU1_t numVis, UBXU1_t numSV, UBXRXM_SVSI_PART* svsiPart, int svsiPartCount) { int payloadSize = sizeof(UBXRXM_SVSI) + svsiPartCount * sizeof(UBXRXM_SVSI_PART); UBXMsgBuffer buffer = createBuffer(payloadSize); UBXMsg* msg = (UBXMsg*)buffer.data; initMsg(msg, payloadSize, UBXMsgClassRXM, UBXMsgIdRXM_SVSI); msg->payload.RXM_SVSI.iTOW = iTOW; msg->payload.RXM_SVSI.week = week; msg->payload.RXM_SVSI.numVis = numVis; msg->payload.RXM_SVSI.numSV = numSV; memcpy(((char*)&(msg->payload.RXM_SVSI)) + sizeof(UBXRXM_SVSI), svsiPart, svsiPartCount * sizeof(UBXRXM_SVSI_PART)); completeMsg(&buffer, payloadSize); return buffer; } /*! * \defgroup Functions */ /*! * \defgroup Enumerations */ /*! * \defgroup Types */ /*! \addtogroup Enumerations * @{ */ /*! * \enum UBXMessageClass * \brief UBXMessageClass is a grouping of messages which are related to each other. * The following table lists all the current message classes. * \var UBXMsgClassNAV * Navigation Results: Position, Speed, Time, Acc, Heading, DOP, SVs used * \var UBXMsgClassRXM * Receiver Manager Messages: Satellite Status, RTC Status * \var UBXMsgClassINF * Information Messages: Printf-Style Messages, with IDs such as Error, Warning, Notice * \var UBXMsgClassACK * Ack/Nack Messages: as replies to CFG Input Messages * \var UBXMsgClassCFG * Configuration Input Messages: Set Dynamic Model, Set DOP Mask, Set Baud Rate, etc. * \var UBXMsgClassUPD * Firmware Update Messages: Memory/Flash erase/write, Reboot, Flash identification, etc. * \var UBXMsgClassMON * Monitoring Messages: Comunication Status, CPU Load, Stack Usage, Task Status * \var UBXMsgClassAID * AssistNow Aiding Messages: Ephemeris, Almanac, other A-GPS data input * \var UBXMsgClassTIM * Timing Messages: Time Pulse Output, Timemark Results * \var UBXMsgClassESF * External Sensor Fusion Messages: External Sensor Measurements and Status Information * \var UBXMsgClassMGA * Multiple GNSS Assistance Messages: Assistance data for various GNSS * \var UBXMsgClassLOG * Logging Messages: Log creation, deletion, info and retrieval * \var UBXMsgClassSEC * Security Feature Messages * \var UBXMsgClassHNR * High Rate Navigation Results Messages: High rate time, position, speed, heading * \var UBXMsgClassInvalid * Default invalid message class */ /*! * \enum UBXMessageId * \brief UBXMessageId is a type of messages * \var UBXMsgIdACK_NACK * Message Acknowledged * \var UBXMsgIdACK_ACK * Message Not-Acknowledged * * \var UBXMsgIdAID_ALM * GPS Aiding Almanac Data * \var UBXMsgIdAID_ALPSRV * AlmanacPlus data * \var UBXMsgIdAID_ALP * ALP file data transfer * \var UBXMsgIdAID_AOP * AssistNow Autonomous data * \var UBXMsgIdAID_DATA * GPS Initial Aiding Data * \var UBXMsgIdAID_EPH * GPS Aiding Ephemeris Data * \var UBXMsgIdAID_HUI * GPS Health, UTC and ionosphere parameters * \var UBXMsgIdAID_INI * Aiding position, time, frequency, clock drift * \var UBXMsgIdAID_REQ * Sends a poll (AID-DATA) for all GPS Aiding Data * * \var UBXMsgIdCFG_ANT * Antenna Control Settings * \var UBXMsgIdCFG_CFG * Clear, Save and Load configurations * \var UBXMsgIdCFG_DAT * Datum Setting * \var UBXMsgIdCFG_GNSS * GNSS system configuration * \var UBXMsgIdCFG_INF * Information message configuration * \var UBXMsgIdCFG_ITFM * Jamming/Interference Monitor configuration. * \var UBXMsgIdCFG_LOGFILTER * Data Logger Configuration * \var UBXMsgIdCFG_MSG * Message Configuration * \var UBXMsgIdCFG_NAV5 * Navigation Engine Settings * \var UBXMsgIdCFG_NAVX5 * Navigation Engine Expert Settings * \var UBXMsgIdCFG_NMEA * NMEA protocol configuration * \var UBXMsgIdCFG_NVS * Clear, Save and Load non-volatile storage data * \var UBXMsgIdCFG_PM2 * Extended Power Management configuration * \var UBXMsgIdCFG_PRT * Ports Configuration * \var UBXMsgIdCFG_RATE * Navigation/Measurement Rate Settings * \var UBXMsgIdCFG_RINV * Contents of Remote Inventory * \var UBXMsgIdCFG_RST * Reset Receiver / Clear Backup Data Structures * \var UBXMsgIdCFG_RXM * RXM configuration * \var UBXMsgIdCFG_SBAS * SBAS Configuration * \var UBXMsgIdCFG_TP5 * Time Pulse Parameters * \var UBXMsgIdCFG_USB * USB Configuration * * \var UBXMsgIdINF_DEBUG * ASCII String output, indicating debug output * \var UBXMsgIdINF_ERROR * ASCII String output, indicating an error * \var UBXMsgIdINF_NOTICE * ASCII String output, with informational contents * \var UBXMsgIdINF_TEST * ASCII String output, indicating test output * \var UBXMsgIdINF_WARNING * ASCII String output, indicating a warning * * \var UBXMsgIdLOG_CREATE * Create Log File * \var UBXMsgIdLOG_ERASE * Erase Logged Data * \var UBXMsgIdLOG_FINDTIME * Find the index of the first log entry <= given time * \var UBXMsgIdLOG_INFO * Log information * \var UBXMsgIdLOG_RETRIEVEPOS * Position fix log entry * \var UBXMsgIdLOG_RETRIEVESTRING * Byte string log entry * \var UBXMsgIdLOG_RETRIEVE * Request log data * \var UBXMsgIdLOG_STRING * Store arbitrary string in on-board Flash memory * * \var UBXMsgIdMON_HW2 * Extended Hardware Status * \var UBXMsgIdMON_HW * Hardware Status * \var UBXMsgIdMON_IO * I/O Subsystem Status * \var UBXMsgIdMON_MSGPP * Message Parse and Process Status * \var UBXMsgIdMON_RXBUF * Receiver Buffer Status * \var UBXMsgIdMON_RXR * Receiver Status Information * \var UBXMsgIdMON_TXBUF * Transmitter Buffer Status * \var UBXMsgIdMON_VER * Receiver/Software Version * * \var UBXMsgIdNAV_AOPSTATUS * AssistNow Autonomous Status * \var UBXMsgIdNAV_CLOCK * Clock Solution * \var UBXMsgIdNAV_DGPS * DGPS Data Used for NAV * \var UBXMsgIdNAV_DOP * Dilution of precision * \var UBXMsgIdNAV_POSECEF * Position Solution in ECEF * \var UBXMsgIdNAV_POSLLH * Geodetic Position Solution * \var UBXMsgIdNAV_PVT * Navigation Position Velocity Time Solution * \var UBXMsgIdNAV_SBAS * SBAS Status Data * \var UBXMsgIdNAV_SOL * Navigation Solution Information * \var UBXMsgIdNAV_STATUS * Receiver Navigation Status * \var UBXMsgIdNAV_SVINFO * Space Vehicle Information * \var UBXMsgIdNAV_TIMEGPS * GPS Time Solution * \var UBXMsgIdNAV_TIMEUTC * UTC Time Solution * \var UBXMsgIdNAV_VELECEF * Velocity Solution in ECEF * \var UBXMsgIdNAV_VELNED * Velocity Solution in NED * * \var UBXMsgIdRXM_ALM * GPS Constellation Almanac Data * \var UBXMsgIdRXM_EPH * GPS Constellation Ephemeris Data * \var UBXMsgIdRXM_PMREQ * Requests a Power Management task * \var UBXMsgIdRXM_RAW * Raw Measurement Data * \var UBXMsgIdRXM_SFRB * Subframe Buffer * \var UBXMsgIdRXM_SVSI * SV Status Info * * \var UBXMsgIdTIM_TM2 * Time mark data * \var UBXMsgIdTIM_TP * Time Pulse Timedata * \var UBXMsgIdTIM_VRFY * Sourced Time Verification * * \var UBXMsgIdInvalid * Default invalid message identificator */ /*! * \enum UBXResetMode * \brief UBXResetMode describes possible reset modes * for #UBXCFG_RST message. * \var UBXHardwareReset * Hardware reset (Watchdog) immediately * \var UBXControlledReset * Controlled Software reset * \var UBXControlledResetGNSSOnly * Controlled Software reset (GNSS only) * \var UBXHardwareResetAfterShutdown * Hardware reset (Watchdog) after * \var UBXControlledGNSSStop * Controlled GNSS stop * \var UBXControlledGNSSStart * Controlled GNSS start */ /*! * \enum UBXBBRSpecialSets * \brief UBXBBRSpecialSets implements special sets for * #UBXCFG_RST message. * \var UBXBBRHotstart * Hotstart * \var UBXBBRWarmstart * Warmstart * \var UBXBBRColdstart * Coldstart */ /*! * \enum UBXBBRMask * \brief UBXBBRMask implements members for BBR(built-in battery-backed RAM) bitmask * for #UBXCFG_RST message. * \var UBXBBReph * Ephemeris * \var UBXBBRalm * Almanac * \var UBXBBRhealth * Health * \var UBXBBRklob * Klobuchar parameters * \var UBXBBRpos * Position * \var UBXBBRclkd * Clock Drift * \var UBXBBRosc * Oscillator Parameter * \var UBXBBRutc * UTC Correction + GPS Leap Seconds Parameters * \var UBXBBRrtc * RTC * \var UBXBBRsfdr * SFDR Parameters * \var UBXBBRvmon * SFDR Vehicle Monitoring Parameters * \var UBXBBRtct * TCT Parameters * \var UBXBBRaop * Autonomous Orbit Parameters */ /*! * \enum UBXHUIFlags * \brief UBXHUIFlags implements HUI flags bitmask * for #UBXAID_HUI message. * \var UBXHUIHealthValid * Healthmask field in this message is valid * \var UBXHUIUTCValid * UTC parameter fields in this message are valid * \var UBXHUIKlobValid * Klobuchar parameter fields in this message are valid */ /*! * \enum UBXINItmCfg * \brief UBXINItmCfg implements Time mark configuration bitmask * for #UBXAID_INI message. * \var UBXINIfEdge * Use falling edge (default rising) * \var UBXINItm1 * Time mark on extint 1 (default extint 0) * \var UBXINIf1 * Frequency on extint 1 (default extint 0) */ /*! * \enum UBXINIFlags * \brief UBXINIFlags implements INI flags bitmask * for #UBXAID_INI message. * \var UBXINIpos * Position is valid * \var UBXINItime * Time is valid * \var UBXINIclockD * Clock drift data contains valid clock drift, must not be set together with clockF * \var UBXINItp * Use time pulse * \var UBXINIclockF * Clock drift data contains valid frequency, must not be set together with clockD * \var UBXINIlla * Position is given in lat/long/alt (default is ECEF) * \var UBXINIaltInv * Altitude is not valid, in case lla was set * \var UBXINIprevTm * Use time mark received before AID-INI message (default uses mark received after message) * \var UBXINIutc * Time is given as UTC date/time (default is GPS wno/tow) */ /*! * \enum UBXANTFlags * \brief UBXANTFlags implements ANT flags bitmask * for #UBXCFG_ANT message. * \var UBXANTsvcs * Enable Antenna Supply Voltage Control Signal * \var UBXANTscd * Enable Short Circuit Detection * \var UBXANTocd * Enable Open Circuit Detection * \var UBXANTpdwnOnSCD * Power Down Antenna supply if Short Circuit is detected. (only in combination with Bit 1) * \var UBXANTrecovery * Enable automatic recovery from short state */ /*! * \enum UBXCFGMask * \brief UBXCFGMask implements CFG flags bitmask * for #UBXCFG_CFG message and #UBXCFG_NVS. * \var UBXCFGioPort * Port Settings\n * \note #UBXCFG_CFG only * \var UBXCFGmsgConf * Message Configuration\n * \note#UBXCFG_CFG only * \var UBXCFGinfMsg * INF Message Configuration\n * \note#UBXCFG_CFG only * \var UBXCFGnavConf * Navigation Configuration\n * \note#UBXCFG_CFG only * \var UBXCFGrxmConf * Receiver Manager Configuration\n * \note#UBXCFG_CFG only * \var UBXCFGrinvConf * Remote Inventory Configuration\n * \note#UBXCFG_CFG only * \var UBXCFGantConf * Antenna Configuration\n * \note#UBXCFG_CFG only * \var UBXCFGalm * GPS Almanac data\n * \note#UBXCFG_NVS only * \var UBXCFGaopConf * AOP data\n * \note#UBXCFG_NVS only */ /*! * \enum UBXCFGMask * \brief UBXCFGMask implements CFG flags bitmask * for #UBXCFG_CFG message and #UBXCFG_NVS. * Mask selects the devices for #UBXCFG_CFG * and #UBXCFG_NVS commands. * \var UBXCFGdevBBR * built-in battery-backed RAM * \var UBXCFGdevFlash * external flash memory * \var UBXCFGdevEEPROM * external EEPROM * \var UBXCFGdevSpiFlash * external SPI Flash */ /*! * \enum UBXCFGTimepulses * \brief UBXCFGTimepulses contains possible timepulse * selections for #UBXCFG_TP5 message. * \var UBXCFGTimepulse * TIMEPULSE selection * \var UBXCFGTimepulse2 * TIMEPULSE2 selection */ /*! * \enum UBXCFGTimepulseFlags * \brief UBXCFGTimepulseFlags implements timepulse flags * for #UBXCFG_TP5 message. * \var UBXCFGTimepulseActive * if set enable time pulse; if pin assigned to another function, other function takes precedence * \var UBXCFGTimepulseLockGpsFreq * if set synchronize time pulse to GPS as soon as GPS time is valid, otherwise use local clock * \var UBXCFGTimepulseLockedOtherSet * if set use 'freqPeriodLock' and 'pulseLenRatioLock' as soon as GPS time is valid and 'freqPeriod' and * 'pulseLenRatio' if GPS time is invalid, * if flag is cleared 'freqPeriod' and 'pulseLenRatio' used regardless of GPS time * \var UBXCFGTimepulseIsFreq * if set 'freqPeriodLock' and 'freqPeriod' interpreted as frequency, otherwise interpreted as period * \var UBXCFGTimepulseIsLenght * if set 'pulseLenRatioLock' and 'pulseLenRatio' interpreted as pulse length, otherwise interpreted as duty cycle * \var UBXCFGTimepulseAlignToTow * align pulse to top of second (period time must be integer fraction of 1s) * \var UBXCFGTimepulsePolarity * pulse polarity:\n * 0 = falling edge at top of second\n * 1 = rising edge at top of second * \var UBXCFGTimepulseGridUTSGPS * timegrid to use:\n * 0 = UTC\n * 1 = GPS */ /*! * \enum UBXCFGProtocolIds * \brief UBXCFGProtocolIds * Protocol Identifiers, identifying the output * protocol for #UBXCFG_INF. * \var UBXProtocol * UBX Protocol * \var UBXNMEAProtocol * NMEA Protocol */ /*! * \enum UBXGNSSIds * \brief UBXGNSSIds * GNSS identificators used for #UBXCFG_GNSS in #UBXCFG_GNSS_PART * \var UBXGPS * GPS * \var UBXSBAS * SBAS * \var UBXQZSS * QZSS * \var UBXGLONASS * GLONASS */ /*! * \enum UBXCFGInfMsgMask * \brief UBXCFGInfMsgMask implements * bit mask, saying which information messages are enabled on each I/O port * \var UBXInfError * Error * \var UBXInfWarning * Warning * \var UBXInfNotice * Notice * \var UBXInfDebug * Debug * \var UBXInfTest * Test */ /*! * \enum UBXITFMAntSetting * \brief UBXITFMAntSetting implements possible antenna settings for * #UBXCFG_ITFM in UBXCFG_ITFM::config2 part. * \var UBXITFMAntUnknown * Unknown * \var UBXITFMAntPassive * Passive * \var UBXITFMAntActive * Active */ /*! * \enum UBXLOGFILTERFlags * \brief UBXLOGFILTERFlags implements log filter flags bitmask for * #UBXCFG_LOGFILTER * \var UBXLOGFILTERRecordEnabled * 1 = enable recording\n * 0 = disable recording * \var UBXLOGFILTERPsmOncePerWakupEnabled * 1 = enable recording only one single position per PSM on/off mode wake up period\n * 0 = disable once per wake up * \var UBXLOGFILTERApplyAllFilterSettings * 1 = apply all filter settings\n * 0 = only apply recordEnabled */ /*! * \enum UBXNAV5Mask * \brief UBXNAV5Mask implements flags bitmask * for #UBXCFG_NAV5 message * \var UBXNAV5Dyn * Apply dynamic model settings * \var UBXNAV5MinEl * Apply minimum elevation settings * \var UBXNAV5PosFixMode * Apply fix mode settings * \var UBXNAV5DrLim * Reserved * \var UBXNAV5PosMask * Apply position mask settings * \var UBXNAV5TimeMask * Apply time mask settings * \var UBXNAV5StaticHoldMask * Apply static hold settings * \var UBXNAV5DgpsMask * Apply DGPS settings. */ /*! * \enum UBXNAV5Model * \brief UBXNAV5Model * enum describes dynamic platform models * for #UBXCFG_NAV5 message * \var UBXNAV5ModelPortable * Portable * \var UBXNAV5ModelStationary * Stationary * \var UBXNAV5ModelPedestrian * Pedestrian * \var UBXNAV5ModelAutomotive * Automotive * \var UBXNAV5ModelSea * Sea * \var UBXNAV5ModelAirborne1g * Airborne1g * \var UBXNAV5ModelAirborne2g * Airborne2g * \var UBXNAV5ModelAirborne4g * Airborne4g */ /*! * \enum UBXNAV5FixMode * \brief UBXNAV5FixMode * enum describes position fixing mode * for #UBXCFG_NAV5 message * \var UBXNAV5Fix2DOnly * 2D Only * \var UBXNAV5Fix3DOnly * 3D Only * \var UBXNAV5FixAuto2D3D * Auto 2D/3D */ /*! * \enum UBXNAVX5Mask * \brief UBXNAVX5Mask * implements flags bitmask * for #UBXCFG_NAVX5 message * \var UBXNAVX5AopMinMax * Apply min/max SVs settings * \var UBXNAVX5AopMinCno * Apply minimum C/N0 setting * \var UBXNAVX5AopInitial3dfix * Apply initial 3D fix settings * \var UBXNAVX5AopWknRoll * Apply GPS weeknumber rollover settings * \var UBXNAVX5AopPPP * Apply PPP flag\n * \note Only supported on certain product variants * \var UBXNAVX5Aop * Apply useAOP flag and aopOrbMaxErr setting (AssistNow Autonomous) */ /*! * \enum UBXNMEAFilter * \brief UBXNMEAFilter * implements NMEA message filter bitmask * for #UBXCFG_NMEA * \var UBXNMEAPosFilter * Enable position output for failed or invalid fixes * \var UBXNMEAMskPosFilter * Enable position output for invalid fixes * \var UBXNMEATimeFilter * Enable time output for invalid times * \var UBXNMEADateFilter * Enable date output for invalid dates * \var UBXNMEAGPSOnlyFilter * Restrict output to GPS satellites only * \var UBXNMEATrackFilter * Enable COG output even if COG is frozen */ /*! * \enum UBXNMEAVersion * \brief UBXNMEAVersion * describes supported NMEA protocol version * \var UBXNMEAVersion23 * NMEA version 2.3 * \var UBXNMEAVersion21 * NMEA version 2.1 */ /*! * \enum UBXNMEAFlags * \brief UBXNMEAFlags * implements flags bitmask for #UBXCFG_NMEA * \var UBXNMEACompatFlag * enable compatibility mode.\n * This might be needed for certain applications when customer's NMEA parser expects a fixed number of digits in * position coordinates * \var UBXNMEAConsiderFlag * enable considering mode. */ /*! * \enum UBXNMEAGNSSToFilter * \brief UBXNMEAGNSSToFilter * implements bitmask to filters out satellites based * on their GNSS. * \var UBXNMEAGPSFilter * Disable reporting of GPS satellites * \var UBXNMEASBASFilter * Disable reporting of SBAS satellites * \var UBXNMEAQZSSFilter * Disable reporting of QZSS satellites * \var UBXNMEAGLONASSFilter * Disable reporting of GLONASS satellites */ /*! * \enum UBXNMEASVNumbering * \brief UBXNMEASVNumbering * * \var UBXNMEASVNumStrict * Satellites are not output * \var UBXNMEASVNumExtended * Use UBX proprietary numbering */ /*! * \enum UBXNMEATalkerIds * \brief UBXNMEATalkerIds * * \var UBXNMEATalkerNotOverriden * Main Talker ID is not overridden * \var UBXNMEATalkerGP * Set main Talker ID to 'GP' * \var UBXNMEATalkerGL * Set main Talker ID to 'GL' * \var UBXNMEATalkerGN * Set main Talker ID to 'GN' */ /*! * \enum UBXNMEAGSVTalkerIds * \brief UBXNMEAGSVTalkerIds * * \var UBXNMEAGSVTalkerGNSSSpecific * Use GNSS specific Talker ID (as defined by NMEA) * \var UBXNMEAGSVTalkerMain * Use the main Talker ID */ /*! * \enum UBXPM2LimitPeakCurrent * \brief UBXPM2LimitPeakCurrent * * \var UBXPM2LimitCurrentDisabled * disabled * \var UBXPM2LimitCurrentEnabled * enabled, peak current is limited */ /*! * \enum UBXPM2Mode * \brief UBXPM2Mode * * \var UBXPM2OnOffOperation * ON/OFF operation * \var UBXPM2CyclicTrackOperation * Cyclic tracking operation */ /*! * \enum UBXPRTModeCharLen * \brief UBXPRTModeCharLen used for #UBXCFG_PRT * * \var UBXPRTMode5BitCharLen * 5bit \n * \note Not supported * \var UBXPRTMode6BitCharLen * 6bit\n * \note Not supported * \var UBXPRTMode7BitCharLen * 7bit\n * \note Supported only with parity * \var UBXPRTMode8BitCharLen * 8bit */ /*! * \enum UBXPRTModeParity * \brief UBXPRTModeParity used for #UBXCFG_PRT * * \var UBXPRTModeEvenParity * Even Parity * \var UBXPRTModeOddParity * Odd Parity * \var UBXPRTModeNoParity * No Parity * \var UBXPRTModeReserved * Reserved\n * \note Exclude this member from target value */ /*! * \enum UBXPRTModeStopBits * \brief UBXPRTModeStopBits used for #UBXCFG_PRT * * \var UBXPRTMode1StopBit * 1 Stop Bit * \var UBXPRTMode1dot5StopBit * 1.5 Stop Bit * \var UBXPRTMode2StopBit * 2 Stop Bit * \var UBXPRTMode0dot5StopBit * 0.5 Stop Bit */ /*! * \enum UBXPRTInProtoMask * \brief UBXPRTInProtoMask used for #UBXCFG_PRT * * \var UBXPRTInProtoInUBX * UBX protocol * \var UBXPRTInProtoInNMEA * NMEA protocol * \var UBXPRTInProtoInRTCM * RTCM protocol */ /*! * \enum UBXPRTOutProtoMask * \brief UBXPRTOutProtoMask used for #UBXCFG_PRT * * \var UBXPRTOutProtoOutUBX * UBX protocol * \var UBXPRTOutProtoOutNMEA * NMEA protocol */ /*! * \enum UBXPRTFlags * \brief UBXPRTFlags used for #UBXCFG_PRT * * \var UBXPRTExtendedTxTimeout * Extended TX timeout: if set, the port will timeout if allocated TX memory >=4 kB and no activity for 1.5s */ /*! * \enum UBXPRTSPIMode * \brief UBXPRTSPIMode used for #UBXCFG_PRT * * \var UBXPRTSPIMode0 * 0 SPI Mode 0: CPOL = 0, CPHA = 0 * \var UBXPRTSPIMode1 * SPI Mode 1: CPOL = 0, CPHA = 1 * \var UBXPRTSPIMode2 * SPI Mode 2: CPOL = 1, CPHA = 0 * \var UBXPRTSPIMode3 * SPI Mode 3: CPOL = 1, CPHA = 1 */ /*! * \enum UBXRINVFlags * \brief UBXRINVFlags used for #UBXCFG_RINV * * \var UBXRINVDump * Dump data at startup. Does not work if flag binary is set. * \var UBXRINVBinary * Data is binary */ /*! * \enum UBXRXMLowPowerModes * \brief UBXRXMLowPowerModes used for #UBXCFG_RXM * * \var UBXRXMContinousMode * Continous Mode * \var UBXRXMPowerSaveMode * Power Save Mode */ /*! * \enum UBXSBASModes * \brief UBXSBASModes used for #UBXCFG_SBAS * * \var UBXSBASModeEnabled * SBAS Enabled (1) / Disabled (0) * \var UBXSBASModeTest * SBAS Testbed: Use data anyhow (1) / Ignore data when in Test Mode (SBAS Msg 0) */ /*! * \enum UBXSBASUsage * \brief UBXSBASUsage * * \var UBXSBASUsageRange * Use SBAS GEOs as a ranging source (for navigation) * \var UBXSBASUsageDiffCorr * Use SBAS Differential Corrections * \var UBXSBASUsageIntegrity * Use SBAS Integrity Information */ /*! * \enum UBXSBASScanModes2 * \brief UBXSBASScanModes2 * * \var UBXSBASScanModePRN152 * \var UBXSBASScanModePRN153 * \var UBXSBASScanModePRN154 * \var UBXSBASScanModePRN155 * \var UBXSBASScanModePRN156 * \var UBXSBASScanModePRN157 * \var UBXSBASScanModePRN158 */ /*! * \enum UBXSBASScanModes1 * \brief UBXSBASScanModes1 * * \var UBXSBASScanModePRN120 * \var UBXSBASScanModePRN121 * \var UBXSBASScanModePRN122 * \var UBXSBASScanModePRN123 * \var UBXSBASScanModePRN124 * \var UBXSBASScanModePRN125 * \var UBXSBASScanModePRN126 * \var UBXSBASScanModePRN127 * \var UBXSBASScanModePRN128 * \var UBXSBASScanModePRN129 * \var UBXSBASScanModePRN130 * \var UBXSBASScanModePRN131 * \var UBXSBASScanModePRN132 * \var UBXSBASScanModePRN133 * \var UBXSBASScanModePRN134 * \var UBXSBASScanModePRN135 * \var UBXSBASScanModePRN136 * \var UBXSBASScanModePRN137 * \var UBXSBASScanModePRN138 * \var UBXSBASScanModePRN139 * \var UBXSBASScanModePRN140 * \var UBXSBASScanModePRN141 * \var UBXSBASScanModePRN142 * \var UBXSBASScanModePRN143 * \var UBXSBASScanModePRN144 * \var UBXSBASScanModePRN145 * \var UBXSBASScanModePRN146 * \var UBXSBASScanModePRN147 * \var UBXSBASScanModePRN148 * \var UBXSBASScanModePRN149 * \var UBXSBASScanModePRN150 * \var UBXSBASScanModePRN151 */ /*! * \enum UBXUSBFlags * \brief UBXUSBFlags * * \var USBFlagReEnum * force re-enumeration * \var USBFlagPowerMode * self-powered (1), bus-powered (0) */ /*! * \enum UBXLOGCfg * \brief UBXLOGCfg * \var UBXLOGCfgCircular * Log is circular (new entries overwrite old ones in a full log) if this bit set */ /*! * \enum UBXLOGSize * \brief UBXLOGSize * * \var UBXLOGMaximumSafeSize * Maximum safe size\n * \note Ensures that logging will not be interupted and enough space * will be left avaiable for all other uses of the filestore * \var UBXLOGMinimunSize * Minimun size * \var UBXLOGUserDefined * User defined\n * \note See UBXLOG_CREATE::userDefinedSize */ /*! * \enum UBXLOGStatus * \brief UBXLOGStatus * * \var UBXLOGStatusRecording * Log entry recording is currently turned on * \var UBXLOGStatusInactive * Logging system not active - no log present * \var UBXLOGStatusCircular * The current log is circular */ /*! * \enum UBXRETRIEVEPOSFixType * \brief UBXRETRIEVEPOSFixType * * \var UBXRETRIEVEPOS2DFix * 2D-Fix * \var UBXRETRIEVEPOS3DFix * 3D-Fix */ /*! * \enum UBXRXRFlags * \brief UBXRXRFlags * * \var UBXRXRAwake * not in Backup mode */ /*! * \enum UBXAOPStatus * \brief UBXAOPStatus * * \var UBXAOPStatusIdle * AOP idle * \var UBXAOPStatusRunning * AOP running */ /*! * \enum UBXAOPCfg * \brief UBXAOPCfg * * \var UBXAOPCfgUseAOP * AOP enabled flag */ /*! * \enum UBXGPSFix * \brief UBXGPSFix * * \var UBXGPSNoFix * No Fix * \var UBXGPSDeadReckoning * Dead Reckoning only * \var UBXGPS2DFix * 2D-Fix * \var UBXGPS3DFix * 3D-Fix * \var UBXGPSGNSSDeadReckoning * GNSS + dead reckoning combined * \var UBXGPSTimeOnlyFix * Time only fix */ /*! * \enum UBXPVTValid * \brief UBXPVTValid * * \var UBXPVTValidDate * Valid UTC Date * \var UBXPVTValidTime * Valid UTC Time of Day * \var UBXPVTFullyResolved * UTC Time of Day has been fully resolved (no seconds uncertainty) */ /*! * \enum UBXPVTPSMStates * \brief UBXPVTPSMStates * * \var UBXPVTPSMStateNA * n/a (i.e no PSM is active) * \var UBXPVTPSMStateEnabled * Enabled (an intermediate state before Acquisition state) * \var UBXPVTPSMStateAcquisition * Acquisition * \var UBXPVTPSMStateTracking * Tracking * \var UBXPVTPSMStatePowerOptim * Power optimized tracking * \var UBXPVTPSMStateInactive * Inactive */ /*! * \enum UBXSBASService * \brief UBXSBASService * * \var UBXSBASServiceRanging * Service ranging * \var UBXSBASServiceCorrections * Service corrections * \var UBXSBASServiceIntegrity * Service integrity * \var UBXSBASServiceTestmode * Service in testmode */ /*! * \enum UBXSBASSOLFlags * \brief UBXSBASSOLFlags * { * \var UBXSBASSOLGPSfixOK * Fix within limits. Position and velocity valid and within DOP and ACC Masks. * \var UBXSBASSOLDiffSoln * DGPS used * \var UBXSBASSOLWKNSet * Valid GPS week number * \var UBXSBASSOLTOWSet * Valid GPS time of week (iTOW & fTOW) */ /*! * \enum UBXSVINFOChipGen * \brief UBXSVINFOChipGen * * \var UBXSVINFOAntarisChip * Antaris, Antaris 4 * \var UBXSVINFOUBlox5Chip * u-blox© 5 * \var UBXSVINFOUBlox6Chip * u-blox© 6 */ /*! * \enum UBXSVINFOFlags * \brief UBXSVINFOFlags * { * \var UBXSVINFOFlagsSVUsed * SV is used for navigation * \var UBXSVINFOFlagsDiffCorr * Differential correction data is available for this SV * \var UBXSVINFOFlagsOrbitAvail * Orbit information is available for this SV (Ephemeris or Almanac) * \var UBXSVINFOFlagsOrbitEph * Orbit information is Ephemeris * \var UBXSVINFOFlagsUnhealthy * SV is unhealthy / shall not be used * \var UBXSVINFOFlagsOrbitAlm * Orbit information is Almanac Plus * \var UBXSVINFOFlagsOrbitAop * Orbit information is AssistNow Autonomous * \var UBXSVINFOFlagsSmoothed * Carrier smoothed pseudorange used */ /*! * \enum UBXSVINFOQualityId * \brief UBXSVINFOQualityId * * \var UBXSVINFOQualityChannelIdle * This channel is idle * \var UBXSVINFOQualityChannelSearching * Channel is searching * \var UBXSVINFOQualitySignalAquired * Signal aquired * \var UBXSVINFOQualitySignalDetected * Signal detected but unusable * \var UBXSVINFOQualityCodeLockOnSignal * Code Lock on Signal * \var UBXSVINFOQualityCodeCarrierLocked * Code and Carrier locked */ /*! * \enum UBXTIMEGPSValidityFlags * \brief UBXTIMEGPSValidityFlags * * \var UBXTIMEGPSTowValid * Valid GPS time of week (iTOW & fTOW) * \var UBXTIMEGPSWeekValid * Valid GPS week number * \var UBXTIMEGPSLeapSValid * Valid GPS leap seconds */ /*! * \enum UBXTIMEUTCValidityFlags * \brief UBXTIMEUTCValidityFlags * * \var UBXTIMEUTCValidTOW * Valid Time of Week * \var UBXTIMEUTCValidWKN * Valid Week Number * \var UBXTIMEUTCValidUTC * Valid UTC Time */ /*! * \enum UBXPMREQFlags * \brief UBXPMREQFlags * * \var UBXPMREQBackup * The receiver goes into backup mode for a time period defined by duration */ /*! * \enum UBXTM2FlagsMode * \brief UBXTM2FlagsMode * * \var UBXTM2FlagsModeSingle * Single mode * \var UBXTM2FlagsModeRunning * Running mode */ /*! * \enum UBXTM2FlagsRun * \brief UBXTM2FlagsRun * * \var UBXTM2FlagsRunArmed * Armed * \var UBXTM2FlagsRunStopped * Stopped */ /*! * \enum UBXTM2FlagsTimeBase * \brief UBXTM2FlagsTimeBase * * \var UBXTM2FlagsTimeBaseReceiverTime * Time base is Receiver Time * \var UBXTM2FlagsTimeBaseGPS * Time base is GPS * \var UBXTM2FlagsTimeBaseUTC * Time base is UTC */ /*! * \enum UBXTM2FlagsUTC * \brief UBXTM2FlagsUTC * * \var UBXTM2FlagsUTCNotAvailable * UTC not available * \var UBXTM2FlagsUTCAvailable * UTC available */ /*! * \enum UBXTM2FlagsTime * \brief UBXTM2FlagsTime * * \var UBXTM2FlagsTimeInvalid * Time is not valid * \var UBXTM2FlagsTimeValid * Time is valid (Valid GPS fix) */ /*! * \enum UBXTPFlags * \brief UBXTPFlags * * \var UBXTPTimeBaseUTC * If is set time base is UTC. If not set time base is GPS * \var UBXTPUTCAvailable * UTC available */ /*! * \enum UBXVRFYFlagsSource * \brief UBXVRFYFlagsSource * * \var UBXVRFYNoTimeAidingDone * No time aiding done * \var UBXVRFYSourceRTC * Source was RTC * \var UBXVRFYSourceAID_INI * Source was AID-INI */ /*! @} */ /*! \struct UBXHdr * \brief This structure is UBX message header * \var UBXHdr::msgClass * Message class. A class is a grouping of messages which are related to each other. * See #UBXMessageClass * \var UBXHdr::msgId * Message identificator. See #UBXMessageId * \var UBXHdr::length * Length is defined as being the length of the payload, only. It does not include * Sync Chars, Length Field, Class, ID or CRC fields. The number format of the * length field is an unsigned 16-Bit integer in Little Endian Format. */ /*! \struct UBXMsg * \brief This structure is base for every message in * UBX protocol * \var UBXMsg::preamble * preable of UBX message is allways 0xB562 * \var UBXMsg::hdr * UBX message header of #UBXHdr type. * \var UBXMsg::payload * Union of #UBXMsgs type that contains all possible payloads * for current protocol version */ /*! \struct UBXMsgBuffer * \brief This structure is used by every message getters * to wrap returned message data. * \var UBXMsgBuffer::size * size of buffer * \var UBXMsgBuffer::data * pointer to data heap */ /*! \union UBXMsgs * \brief This union contains all possible payloads * in current protocol version */ /*! \struct UBXAlpFileInfo * \brief This structure contains data of alpfile * It's simple wrapper on byte array with file id * specification * \var UBXAlpFileInfo::fileId * File id used to indetificate part appurtenance * \var UBXMsg::alpData * Part of file data * \var UBXMsg::dataSize * Size of part in bytes */ /*! * \struct UBXAID_ALPSRV * This message is sent by the ALP client to the ALP server in order to request data. The given * identifier must be prepended to the requested data when submitting the data. * \brief ALP client requests AlmanacPlus data from server * \var UBXAID_ALPSRV::idSize * Identifier size. This data, beginning at message start, must prepend the returned data. * \var UBXAID_ALPSRV::type * Requested data type. Must be different from 0xff, otherwise this is not a data request. * \var UBXAID_ALPSRV::offset * Requested data offset [16bit words] * \var UBXAID_ALPSRV::size * Requested data size [16bit words] * \var UBXAID_ALPSRV::fileId * Unused when requesting data, filled in when sending back the data * \var UBXAID_ALPSRV::dataSize * Actual data size. Unused when requesting data, filled in when sending back the data. * \var UBXAID_ALPSRV::id1 * Identifier data * \var UBXAID_ALPSRV::id2 * Identifier data * \var UBXAID_ALPSRV::id3 * Identifier data */ /*! * \struct UBXACK_ACK * Output upon processing of an input message * \brief Message acknowledged * \var UBXACK_ACK::msgClass * Class ID of the Acknowledged Message * \see #UBXMessageClass to fill this field * \var UBXACK_ACK::msgId * Message ID of the Acknowledged Message * \see #UBXMessageId to fill this field */ /*! * \struct UBXACK_NACK * Output upon processing of an input message * \brief Message Not-Acknowledged * \var UBXACK_NACK::msgClass * Class ID of the Acknowledged Message * \see #UBXMessageClass to fill this field * \var UBXACK_NACK::msgId * Message ID of the Acknowledged Message * \see #UBXMessageId to fill this field */ /*! * \struct UBXAID_ALM_POLL * Poll GPS Aiding Data (Almanac) for all 32 SVs by sending this message to the receiver * without any payload. The receiver will return 32 messages of type AID-ALM as defined * below. * \note No payload * \brief Poll GPS Aiding Almanac Data */ /*! * \struct UBXAID_ALM_POLL_OPT * Poll GPS Aiding Data (Almanac) for an SV by sending this message to the receiver. The * receiver will return one message of type AID-ALM as defined below. * \brief Poll GPS Aiding Almanac Data for a SV * * \var UBXAID_ALM_POLL_OPT::svid * SV ID for which the receiver shall return its * Almanac Data (Valid Range: 1 .. 32 or 51, 56, * 63). */ /*! * \struct UBXAID_ALM * - If the WEEK Value is 0, DWRD0 to DWRD7 are not sent as the Almanac is not available * for the given SV. This may happen even if NAV-SVINFO and RXM-SVSI are indicating * almanac availability as the internal data may not represent the content of an original * broadcast almanac (or only parts thereof). * - DWORD0 to DWORD7 contain the 8 words following the Hand-Over Word ( HOW ) * from the GPS navigation message, either pages 1 to 24 of sub-frame 5 or pages 2 to 10 * of subframe 4. See IS-GPS-200 for a full description of the contents of the Almanac * pages. * - In DWORD0 to DWORD7, the parity bits have been removed, and the 24 bits of data are * located in Bits 0 to 23. Bits 24 to 31 shall be ignored. * - Example: Parameter e (Eccentricity) from Almanac Subframe 4/5, Word 3, Bits 69-84 * within the subframe can be found in DWRD0, Bits 15-0 whereas Bit 0 is the LSB. * \brief GPS Aiding Almanac Input/Output Message * * \var UBXAID_ALM::svid * SV ID for which this * Almanac Data is (Valid Range: 1 .. 32 or 51, 56, * 63). * \var UBXAID_ALM::week * Issue Date of Almanac (GPS week number) */ /*! * \struct UBXAID_ALM_OPT * - If the WEEK Value is 0, DWRD0 to DWRD7 are not sent as the Almanac is not available * for the given SV. This may happen even if NAV-SVINFO and RXM-SVSI are indicating * almanac availability as the internal data may not represent the content of an original * broadcast almanac (or only parts thereof). * - DWORD0 to DWORD7 contain the 8 words following the Hand-Over Word ( HOW ) * from the GPS navigation message, either pages 1 to 24 of sub-frame 5 or pages 2 to 10 * of subframe 4. See IS-GPS-200 for a full description of the contents of the Almanac * pages. * - In DWORD0 to DWORD7, the parity bits have been removed, and the 24 bits of data are * located in Bits 0 to 23. Bits 24 to 31 shall be ignored. * - Example: Parameter e (Eccentricity) from Almanac Subframe 4/5, Word 3, Bits 69-84 * within the subframe can be found in DWRD0, Bits 15-0 whereas Bit 0 is the LSB. * \brief GPS Aiding Almanac Input/Output Message * * \var UBXAID_ALM_OPT::svid * SV ID for which this * Almanac Data is (Valid Range: 1 .. 32 or 51, 56, * 63). * \var UBXAID_ALM_OPT::week * Issue Date of Almanac (GPS week number) * \var UBXAID_ALM_OPT::dwrd[8] * Almanac Words */ /*! * \struct UBXAID_ALP * This message is used to transfer a chunk of data from the AlmanacPlus file to the receiver. * Upon reception of this message, the receiver will write the payload data to its internal * non-volatile memory, eventually also erasing that part of the memory first. Make sure that * the payload size is even sized (i.e. always a multiple of 2). Do not use payloads larger than * ~ 700 bytes, as this would exceed the receiver's internal buffering capabilities. The receiver * will (not-) acknowledge this message using the message alternatives given below. The host * shall wait for an acknowledge message before sending the next chunk. * \note This structure contains variable payload:\n * UBXU2_t alpData ALP file data * \brief ALP file data transfer to the receiver */ /*! * \struct UBXAID_ALP_END * This message is used to indicate that all chunks have been transferred, and normal receiver * operation can resume. Upon reception of this message, the receiver will verify all chunks * received so far, and enable AssistNow Offline and GPS receiver operation if successful. This * message could also be sent to cancel an incomplete download. * \brief Mark end of data transfer * \var UBXAID_ALP_END::dummy * - Value is ignored if it's end of data transfer * - If value is set to 0x01 message acknowledges a data transfer * - If value is set to 0x00 message indicates problems with a data transfer */ /*! * \struct UBXAID_ALP_POLL * \brief Poll the AlmanacPlus status * * \var UBXAID_ALP_POLL::predTow * Prediction start time of week * \var UBXAID_ALP_POLL::predDur * Prediction duration from start of first data set to * end of last data set * \var UBXAID_ALP_POLL::age * Current age of ALP data * \var UBXAID_ALP_POLL::predWno * Prediction start week number * \var UBXAID_ALP_POLL::almWno * Truncated week number of reference almanac * \var UBXAID_ALP_POLL::reserved1 * Reserved * \var UBXAID_ALP_POLL::svs * Number of satellite data sets contained in the * ALP UBXAID_ALP_POLL::data * \var UBXAID_ALP_POLL::reserved2 * Reserved * \var UBXAID_ALP_POLL::reserved3 * Reserved */ /*! * \struct UBXAID_AOP_POLL * Poll AssistNow Autonomous aiding data for all satellits by sending this empty message. The * receiver will return an AID-AOP message (see definition below) for each satellite for which * data is available. For satellites for which no data is available it will return a corresponding * AID-AOP poll request message. * \note No payload * \brief Poll AssistNow Autonomous data */ /*! * \struct UBXAID_AOP_POLL_OPT * Poll the AssistNow Autonomous data for the specified satellite. The receiver will return a * AID-AOP message (see definition below) if data is available for the requested satellite. If no * data is available it will return corresponding AID-AOP poll request message (i.e. this * message). * \brief Poll AssistNow Autonomous data for one satellite * \var UBXAID_AOP_POLL_OPT::svid * GPS SV id for which the data is requested * \note Range: 1..32 */ /*! * \struct UBXAID_AOP * If enabled, this message is output at irregular intervals. It is output whenever AssistNow * Autonomous has produced new data for a satellite. Depending on the availability of the * optional data the receiver will output either version of the message. If this message is * polled using one of the two poll requests described above the receiver will send this * message if AOP data is available or the corresponding poll request message if no AOP data * is available for each satellite (i.e. svid 1..32). At the user's choice the optional data may be * chopped from the payload of a previously polled message when sending the message back * to the receiver. Sending a valid AID-AOP message to the receiver will automatically enable * the AssistNow Autonomous feature on the receiver. See the section AssistNow * Autonomous in the receiver description for details on this feature. * \brief AssistNow Autonomous data * \var UBXAID_AOP::svid * GPS SV id * \var UBXAID_AOP::data[59] * AssistNow Autonomous data */ /*! * \struct UBXAID_AOP_OPT * If enabled, this message is output at irregular intervals. It is output whenever AssistNow * Autonomous has produced new data for a satellite. Depending on the availability of the * optional data the receiver will output either version of the message. If this message is * polled using one of the two poll requests described above the receiver will send this * message if AOP data is available or the corresponding poll request message if no AOP data * is available for each satellite (i.e. svid 1..32). At the user's choice the optional data may be * chopped from the payload of a previously polled message when sending the message back * to the receiver. Sending a valid AID-AOP message to the receiver will automatically enable * the AssistNow Autonomous feature on the receiver. See the section AssistNow * Autonomous in the receiver description for details on this feature. * \brief AssistNow Autonomous data * \var UBXAID_AOP_OPT::svid * GPS SV id * \var UBXAID_AOP_OPT::data[59] * AssistNow Autonomous data * \var UBXAID_AOP_OPT::optional0[48] * Optional data chunk 1/3 * \var UBXAID_AOP_OPT::optional1[48] * Optional data chunk 2/3 * \var UBXAID_AOP_OPT::optional2[48] * Optional data chunk 3/3 */ /*! * \struct UBXAID_DATA_POLL * If this poll is received, the messages AID-INI, AID-HUI, AID-EPH and AID-ALM are sent. * \note No payload * \brief Polls all GPS Initial Aiding Data */ /*! * \struct UBXAID_EPH_POLL * This message has an empty payload! * Poll GPS Aiding Data (Ephemeris) for all 32 SVs by sending this message to the receivewithout any payload. * The receiver will return 32 messages of type #UBXAID_EPH * \note No payload * \brief Poll GPS Aiding Ephemeris Data * */ /*! * \struct UBXAID_EPH_POLL_OPT * Poll GPS Constellation Data (Ephemeris) for an SV by sending this message to the receiver. * The receiver will return 32 messages of type #UBXAID_EPH * \brief Poll GPS Aiding Ephemeris Data for a SV * * \var UBXAID_EPH_POLL_OPT::svid * SV ID for which the receiver shall return its * Ephemeris Data (Valid Range: 1 .. 32). */ /*! * \struct UBXAID_EPH * - SF1D0 to SF3D7 is only sent if ephemeris is available for this SV. If not, the payload may * be reduced to 8 Bytes, or all bytes are set to zero, indicating that this SV Number does * not have valid ephemeris for the moment. This may happen even if NAV-SVINFO and * RXM-SVSI are indicating ephemeris availability as the internal data may not represent the * content of an original broadcast ephemeris (or only parts thereof). * - SF1D0 to SF3D7 contain the 24 words following the Hand-Over Word ( HOW ) from the * GPS navigation message, subframes 1 to 3. The Truncated TOW Count is not valid and * cannot be used. See IS-GPS-200 for a full description of the contents of the Subframes. * - In SF1D0 to SF3D7, the parity bits have been removed, and the 24 bits of data are * located in Bits 0 to 23. Bits 24 to 31 shall be ignored. * - When polled, the data contained in this message does not represent the full original * ephemeris broadcast. Some fields that are irrelevant to u-blox© receivers may be missing. * The week number in Subframe 1 has already been modified to match the Time Of * Ephemeris (TOE). * \brief GPS Aiding Ephemeris Input/Output Message * \var UBXAID_EPH::svid * SV ID for which this ephemeris data is * \note Range: 1..32 * \var UBXAID_EPH::how * Hand-Over Word of first Subframe. This is * required if data is sent to the receiver. * 0 indicates that no Ephemeris Data is following. */ /*! * \struct UBXAID_EPH_OPT * - SF1D0 to SF3D7 is only sent if ephemeris is available for this SV. If not, the payload may * be reduced to 8 Bytes, or all bytes are set to zero, indicating that this SV Number does * not have valid ephemeris for the moment. This may happen even if NAV-SVINFO and * RXM-SVSI are indicating ephemeris availability as the internal data may not represent the * content of an original broadcast ephemeris (or only parts thereof). * - SF1D0 to SF3D7 contain the 24 words following the Hand-Over Word ( HOW ) from the * GPS navigation message, subframes 1 to 3. The Truncated TOW Count is not valid and * cannot be used. See IS-GPS-200 for a full description of the contents of the Subframes. * - In SF1D0 to SF3D7, the parity bits have been removed, and the 24 bits of data are * located in Bits 0 to 23. Bits 24 to 31 shall be ignored. * - When polled, the data contained in this message does not represent the full original * ephemeris broadcast. Some fields that are irrelevant to u-blox© receivers may be missing. * The week number in Subframe 1 has already been modified to match the Time Of * Ephemeris (TOE). * \brief GPS Aiding Ephemeris Input/Output Message * \var UBXAID_EPH_OPT::svid * SV ID for which this ephemeris data is * \note Range: 1..32 * \var UBXAID_EPH_OPT::how * Hand-Over Word of first Subframe. This is * required if data is sent to the receiver. * 0 indicates that no Ephemeris Data is following. * \var UBXAID_EPH_OPT::sf1d[8] * Subframe 1 Words 3..10 (SF1D0..SF1D7) * \var UBXAID_EPH_OPT::sf2d[8] * Subframe 2 Words 3..10 (SF1D0..SF1D7) * \var UBXAID_EPH_OPT::sf3d[8] * Subframe 3 Words 3..10 (SF1D0..SF1D7) */ /*! * \struct UBXAID_HUI_POLL * \note No payload * \brief Poll GPS Health, UTC and ionosphere parameters */ /*! * \struct UBXAID_HUI * This message contains a health bit mask, UTC time and Klobuchar parameters. For more * information on these parameters, please see the ICD-GPS-200 documentation. * \brief GPS Health, UTC and ionosphere parameters * \var UBXAID_HUI::health * Bitmask, every bit represenst a GPS SV (1-32). If * the bit is set the SV is healthy. * \var UBXAID_HUI::utcA0 * UTC - parameter A0 * \var UBXAID_HUI::utcA1 * UTC - parameter A1 * \var UBXAID_HUI::utcTOW * UTC - reference time of week * \var UBXAID_HUI::utcWNT * UTC - reference week number * \var UBXAID_HUI::utcLS * UTC - time difference due to leap seconds before event * \var UBXAID_HUI::utcWNF * UTC - week number when next leap second event occurs * \var UBXAID_HUI::utcDN * UTC - day of week when next leap second event occurs * \var UBXAID_HUI::utcLSF * UTC - time difference due to leap seconds after event * \var UBXAID_HUI::utcSpare * UTC - Spare to ensure structure is a multiple of 4 bytes * \var UBXAID_HUI::klobA0 * Klobuchar - alpha 0 * \var UBXAID_HUI::klobA1 * Klobuchar - alpha 1 * \var UBXAID_HUI::klobA2 * Klobuchar - alpha 2 * \var UBXAID_HUI::klobA3 * Klobuchar - alpha 3 * \var UBXAID_HUI::klobB0 * Klobuchar - beta 0 * \var UBXAID_HUI::klobB1 * Klobuchar - beta 1 * \var UBXAID_HUI::klobB2 * Klobuchar - beta 2 * \var UBXAID_HUI::klobB3 * Klobuchar - beta 3 * \var UBXAID_HUI::flags * Flags. * \see #UBXHUIFlags to fill this field */ /*! * \struct UBXAID_INI_POLL * \note No payload * \brief Poll GPS Initial Aiding Data */ /*! * \struct UBXAID_INI * This message contains position, time and clock drift information. The position can be input * in either the ECEF X/Y/Z coordinate system or as lat/lon/height. The time can either be input * as inexact value via the standard communication interface, suffering from latency * depending on the baudrate, or using harware time synchronization where an accuracte * time pulse is input on the external interrupts. It is also possible to supply hardware * frequency aiding by connecting a continuous signal to an external interrupt. * \brief Aiding position, time, frequency, clock drift * * \var UBXAID_INI::ecefXOrLat * WGS84 ECEF X coordinate or latitude, depending on UBXAID_INI::flags * \var UBXAID_INI::ecefYOrLat * WGS84 ECEF Y coordinate or longitude, depending on UBXAID_INI::flags * \var UBXAID_INI::ecefZOrLat * WGS84 ECEF Z coordinate or altitude, depending on UBXAID_INI::flags * \var UBXAID_INI::posAcc * Position accuracy * \var UBXAID_INI::tmCfg * Time mark configuration * \see #UBXINItmCfg to fill this field * \var UBXAID_INI::wnoOrDate * Actual week number or yearSince2000/Month (YYMM), depending on UBXAID_INI::flags * \var UBXAID_INI::towOrDate * Actual time of week or * DayOfMonth/Hour/Minute/Second * (DDHHMMSS), depending on UBXAID_INI::flags * \var UBXAID_INI::towNs * Fractional part of time of week * \var UBXAID_INI::tAccMS * Milliseconds part of time accuracy * \var UBXAID_INI::tAccNS * Nanoseconds part of time accuracy * \var UBXAID_INI::clkDOrFreq * Clock drift or frequency, depending on UBXAID_INI::flags * \var UBXAID_INI::clkDAccOrFreqAcc * Accuracy of clock drift or frequency, depending on UBXAID_INI::flags * \var UBXAID_INI::flags * Bitmask with the flags * \see #UBXINIFlags to fill this field */ /*! * \struct UBXAID_REQ * AID-REQ is not a message but a placeholder for configuration purposes. * If the virtual AID-REQ is configured to be output (see CFG-MSG), the receiver will output a * request for aiding data (AID-DATA) after a start-up if its internally stored data (position, * time) don't allow it to perform a hot start. If position and time information could be * retrieved from internal storage, no AID-REQ will be sent, even when the receiver is missing * valid ephemeris data. Only GPS orbits are supported for GNSS. * \note No payload * \brief Sends a poll UXBAID_DATA for all GPS Aiding Data */ /*! * \struct UBXCFG_ANT_POLL * Sending this (empty / no-payload) message to the receiver results in the receiver returning a * message of type #UBXCFG_ANT * \note No payload * \brief Poll Antenna Control Settings */ /*! * \struct UBXANTPins * It describes antenna pin configuration * \brief This sturcture is a part of #UBXCFG_ANT message * \var UBXANTPins::UBXANTpinSwitch * PIO-Pin used for switching antenna supply (internal to TIM-LP/TIM-LF) * \var UBXANTPins::UBXANTpinSCD * PIO-Pin used for detecting a short in the antenna supply * \var UBXANTPins::UBXANTpinOCD * PIO-Pin used for detecting open/not connected antenna * \var UBXANTPins::UBXANTreconfig * If set to one, and this command is sent to the receiver, the receiver will reconfigure the pins as specified */ /*! * \struct UBXCFG_ANT * \brief Antenna Control Settings * \var UBXCFG_ANT::flags * Antenna flag mask * \see #UBXANTFlags to fill this field * \var UBXCFG_ANT::pins * Antenna Pin Configuration */ /*! * \struct UBXCFG_CFG * See the Receiver Configuration chapter(u-blox© official documentation) for a detailed description on how Receiver * Configuration should be used. The three masks are made up of individual bits, each bit * indicating the sub-section of all configurations on which the corresponding action shall be * carried out. The reserved bits in the masks must be set to '0'. For detailed information * please refer to the Organization of the Configuration Sections (u-blox© official documentation). Please note that commands * can be combined. The sequence of execution is Clear, Save, Load * \brief Clear, Save and Load configurations * * \var UBXCFG_CFG::clearMask * Mask with configuration sub-sections to Clear * \note Load Default Configurations to Permanent * Configurations in non-volatile memory * \see #UBXCFGMask to fill this field * \var UBXCFG_CFG::saveMask * Mask with configuration sub-section to Save * \note Save Current Configuration to Non-volatile * Memory * \see #UBXCFGMask to fill this field * \var UBXCFG_CFG::loadMask * Mask with configuration sub-sections to Load * \note Load Permanent Configurations from * Non-volatile Memory to Current * Configurations * \see #UBXCFGMask to fill this field */ /*! * \struct UBXCFG_CFG_OPT * See the Receiver Configuration chapter(u-blox© official documentation) for a detailed description on how Receiver * Configuration should be used. The three masks are made up of individual bits, each bit * indicating the sub-section of all configurations on which the corresponding action shall be * carried out. The reserved bits in the masks must be set to '0'. For detailed information * please refer to the Organization of the Configuration Sections (u-blox© official documentation). Please note that commands * can be combined. The sequence of execution is Clear, Save, Load * \brief Clear, Save and Load configurations * * \var UBXCFG_CFG_OPT::clearMask * Mask with configuration sub-sections to Clear * \note Load Default Configurations to Permanent * Configurations in non-volatile memory * \see #UBXCFGMask to fill this field * \var UBXCFG_CFG_OPT::saveMask * Mask with configuration sub-section to Save * \note Save Current Configuration to Non-volatile * Memory * \see #UBXCFGMask to fill this field * \var UBXCFG_CFG_OPT::loadMask * Mask with configuration sub-sections to Load * \note Load Permanent Configurations from * Non-volatile Memory to Current * Configurations * \see #UBXCFGMask to fill this field * \var UBXCFG_CFG_OPT::deviceMask * Mask which selects the devices for this * command * \see #UBXCFGDeviceMask to fill this field */ /*! * \struct UBXCFG_DAT_POLL * Upon sending of this message, the receiver returns UBXCFG_DAT * \note No payload * \brief Poll Datum Setting */ /*! * \struct UBXCFG_DAT_IN * \brief Set User-defined Datum * * \var UBXCFG_DAT_IN::majA * Semi-major Axis * \note accepted range = 6,300,000.0 * to 6,500,000.0 metres * \var UBXCFG_DAT_IN::flat * 1.0 / Flattening * \note accepted range is 0.0 to 500.0 * \var UBXCFG_DAT_IN::dX * X Axis shift at the origin * \note accepted range is +/-5000.0 metres * \var UBXCFG_DAT_IN::dY * Y Axis shift at the origin * \note accepted range is +/-5000.0 metres * \var UBXCFG_DAT_IN::dZ * Z Axis shift at the origin * \note accepted range is +/-5000.0 metres * \var UBXCFG_DAT_IN::rotX * Rotation about the X Axis * \note accepted range is +/-20.0 milli-arc seconds * \var UBXCFG_DAT_IN::rotY * Rotation about the Y Axis * \note accepted range is +/-20.0 milli-arc seconds * \var UBXCFG_DAT_IN::rotZ * Rotation about the Z Axis * \note accepted range is +/-20.0 milli-arc seconds * \var UBXCFG_DAT_IN::scale * Scale change * \note accepted range is 0.0 to 50.0 parts per million */ /*! * \struct UBXCFG_DAT_OUT * Returns the parameters of the currently defined datum. If no user-defined datum has been * set, this will default to WGS84. * \brief The currently defined Datum * \var UBXCFG_DAT_OUT::datumNum * Datum Number: 0 = WGS84, -1 = user-defined * \var UBXCFG_DAT_OUT::datumName[6] * ASCII String: WGS84 or USER * \var UBXCFG_DAT_OUT::majA * Semi-major Axis * \note accepted range = 6,300,000.0 * to 6,500,000.0 metres * \var UBXCFG_DAT_OUT::flat * 1.0 / Flattening * \note accepted range is 0.0 to 500.0 * \var UBXCFG_DAT_OUT::dX * X Axis shift at the origin * \note accepted range is +/-5000.0 metres * \var UBXCFG_DAT_OUT::dY * Y Axis shift at the origin * \note accepted range is +/-5000.0 metres * \var UBXCFG_DAT_OUT::dZ * Z Axis shift at the origin * \note accepted range is +/-5000.0 metres * \var UBXCFG_DAT_OUT::rotX * Rotation about the X Axis * \note accepted range is +/-20.0 milli-arc seconds * \var UBXCFG_DAT_OUT::rotY * Rotation about the Y Axis * \note accepted range is +/-20.0 milli-arc seconds * \var UBXCFG_DAT_OUT::rotZ * Rotation about the Z Axis * \note accepted range is +/-20.0 milli-arc seconds * \var UBXCFG_DAT_OUT::scale * Scale change * \note accepted range is 0.0 to 50.0 parts per million */ /*! * \struct UBXCFG_GNSS_POLL * Polls the configuration of the GNSS system configuration\ * \note No payload * \brief Polls the configuration of the GNSS system configuration */ /*! * \struct UBXCFG_GNSS * Gets or sets the GNSS system channel sharing configuration. The receiver will send an * #UBXACK_ACK message if the configuration is valid, an #UBXACK_NACK if any configuration * parameter is invalid. * The number of tracking channels in use must not exceed the number of tracking channels * available on hardware, and the sum of all reserved tracking channels needs to be smaller or * equal the number of tracking channels in use. Additionally, the maximum number of * tracking channels used for the specific GNSS system must be greater or equal to the * number of reserved tracking channels. * See section GNSS Configuration for a discussion of the use of this message and section * Satellite Numbering for a description of the GNSS IDs available. * Configuration specific to the GNSS system can be done via other messages. Configuration * specific to SBAS can be done with #UBXCFG_SBAS. * Note that GLONASS operation cannot be selected when the receiver is configured to * operate in Power Save Mode (using #UBXCFG_RXM). * \note This message contains variable payload. See #UBXCFG_GNSS_PART to add variable payload. * \brief GNSS system configuration * * \var UBXCFG_GNSS::msgVer * Message version * \var UBXCFG_GNSS::numTrkChHw * Number of tracking channels available in * hardware * \note Read only * \var UBXCFG_GNSS::numTrkChUse * Number of tracking channels to use * \note Should be <= UBXCFG_GNSS::numTrkChHw * \var UBXCFG_GNSS::numConfigBlocks * Number of configuration blocks following */ /*! * \struct UBXCFG_GNSS_PART * \brief This structure is variable payload for #UBXCFG_GNSS * \var UBXCFG_GNSS_PART::gnssId * GNSS identifier * \see #UBXGNSSIds to fill this field * \var UBXCFG_GNSS_PART::resTrkCh * Number of reserved (minimum) tracking * channels for this GNSS system * \var UBXCFG_GNSS_PART::maxTrkCh * Maximum number of tracking channels used for * this GNSS system * \note should be >= UBXCFG_GNSS_PART::resTrkCh * \var UBXCFG_GNSS_PART::reserved1 * Reserved * \var UBXCFG_GNSS_PART::flags * Bitfield of flags.\n * The only acceptable values:\n * - 0 - disabled * - 1 - enabled */ /*! * \struct UBXCFG_INF_POLL * \brief Poll INF message configuration for one protocol * * \var protocolId * Protocol Identifier, identifying the output * protocol for this Poll Request. * \see #UBXCFGProtocolIds to fill this field */ /*! * \struct UBXCFG_INF * The value of infMsgMask[x] below are that each bit represents one of the INF class * messages (Bit 0 for ERROR, Bit 1 for WARNING and so on.). For a complete list, please see * the Message Class INF(). Several configurations can be concatenated to one input * message. In this case the payload length can be a multiple of the normal length. Output * messages from the module contain only one configuration unit. Please note that I/O Ports 1 * 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 * SPI. I/O port 5 is reserved for future use. * \note This message has variable payload of #UBXCFG_INF_PART type * \brief Information message configuration */ /*! * \struct UBXCFG_INF_PART * \brief The UBXCFG_INF_PART structure is variable payload for #UBXCFG_INF message * * \var protocolId * Protocol Identifier, identifying for which * protocol the configuration is set/get * \see #UBXCFGProtocolIds to fill this field * \var reserved0 * Reserved * \var reserved1 * Reserved * \var infMsgMask[6] * A bit mask, saying which information messages * are enabled on each I/O port * \see #UBXCFGInfMsgMask to fill this field */ /*! * \struct UBXCFG_ITFM_POLL * \note No payload * \brief Polls the Jamming/Interference Monitor configuration. */ /*! * \struct UBXITFMConfig * \brief This structure describes bitfields of UBXCFG_ITFM::config field * \var UBXITFMConfig::bbThreshold * Broadband jamming detection threshold * \note unit - dB * \var UBXITFMConfig::cwThreshold * CW jamming detection threshold * \note unit - dB * \var UBXITFMConfig::reserved1 * Reserved algorithm settings * \note should be set to 0x16B156 * \var UBXITFMConfig::enbled * Enable interference detection */ /*! * \struct UBXITFMConfig2 * \brief This structure describes bitfields of UBXCFG_ITFM::config2 field * \var UBXITFMConfig2::reserved2 * Reserved * \note Should be 0x31E * \var UBXITFMConfig2::antSetting * Antenna setting * \see #UBXITFMAntSetting to fill this field * \var UBXITFMConfig2::reserved3 * Reserved * \note Should be 0x00 */ /*! * \struct UBXCFG_ITFM * \brief Jamming/Interference Monitor configuration * * \var UBXCFG_ITFM::config * Interference config word * \see #UBXITFMConfig to fill this field * \var UBXCFG_ITFM::config2 * Extra settings for jamming/interference monitor * \see #UBXITFMConfig2 to fill this field */ /*! * \struct UBXCFG_LOGFILTER_POLL * Upon sending of this message, the receiver returns CFG-LOGFILTER as defined below * \note No payload * \brief Poll Data Logger filter Configuration */ /*! * \struct UBXCFG_LOGFILTER * This message is used to enable/disable logging and to get or set the position entry filter * settings. * Position entries can be filtered based on time difference, position difference or current * speed thresholds. Position and speed filtering also have a minimum time interval. * A position is logged if any of the thresholds are exceeded. If a threshold is set to zero it is * ignored. The maximum rate of position logging is 1Hz. * The filter settings will only be applied if the 'applyAllFilterSettings' flag is set. This enables * recording to be enabled/disabled without affecting the other settings. * \brief Data Logger Configuration * * \var UBXCFG_LOGFILTER::version * The version of this message * \note Set to 1 * \var UBXCFG_LOGFILTER::flags * Flags * \see #UBXLOGFILTERFlags to fill this field * \var UBXCFG_LOGFILTER::minIterval * Minimum time interval between logged * positions * \note This is only applied in * combination with the speed and/or * position thresholds * \note 0 - not set * \var UBXCFG_LOGFILTER::timeThreshold * If the time difference is greater than the * threshold then the position is logged * \note 0 - not set * \var UBXCFG_LOGFILTER::speedThreshold * If the current speed is greater than the * threshold then the position is logged * \note 0 - not set * \note UBXCFG_LOGFILTER::minInterval also applies * \var UBXCFG_LOGFILTER::positionThreshold * If the 3D position difference is greater than the * threshold then the position is logged * \note 0 - not set * \note minInterval also applies */ /*! * \struct UBXCFG_MSG_POLL * \brief Poll a message configuration * * \var UBXCFG_MSG_POLL::msgClass * Message Class * \see #UBXMessageClass to fill this field * \var UBXCFG_MSG_POLL::msgId * Message Id * \see #UBXMessageId to fill this field */ /*! * \struct UBXCFG_MSG_RATES * Set/Get message rate configurations to/from the receiver. See also section "How to change * between protocols" (u-blox© official documentation). * - Send rate is relative to the event a message is registered on. For example, if the rate of a * navigation message is set to 2, the message is sent every second navigation solution. For * configuring NMEA messages, the section "NMEA Messages Overview" (u-blox© official documentation describes Class and * Identifier numbers used. * \brief Set Message Rates * \var UBXCFG_MSG_RATES::msgClass * Message Class * \see #UBXMessageClass to fill this field * \var UBXCFG_MSG_RATES::msgId * Message Id * \see #UBXMessageId to fill this field * \var UBXCFG_MSG_RATES::rate[6] * Send rate on I/O Port (6 Ports) */ /*! * \struct UBXCFG_MSG_RATE * Set/Get message rate configurations to/from the receiver. See also section "How to change * between protocols" (u-blox© official documentation). * \brief Set Message Rate * \var UBXCFG_MSG_RATE::msgClass * Message Class * \see #UBXMessageClass to fill this field * \var UBXCFG_MSG_RATE::msgId * Message Id * \see #UBXMessageId to fill this field * \var UBXCFG_MSG_RATE::rate * Send rate on current Port */ /*! * \struct UBXCFG_NAV5_POLL * \note No payload * \brief Poll Navigation Engine Settings */ /*! * \struct UBXCFG_NAV5 * See the Navigation "Configuration Settings Description" (u-blox© official documentation) for a detailed description of how * these settings affect receiver operation. * \brief Navigation Engine Settings * * \var mask * Parameters Bitmask. Only the masked parameters will be applied. * \see #UBXNAV5Mask to fill this field * \var UBXCFG_NAV5::dynModel * Dynamic Platform model * \see #UBXNAV5Model to fill this field * \var UBXCFG_NAV5::fixMode * Position Fixing Mode * \see #UBXNAV5FixMode to fill this field * \var UBXCFG_NAV5::fixedAlt * Fixed altitude (mean sea level) for 2D fix mode * \var UBXCFG_NAV5::fixedAltVar * Fixed altitude variance for 2D mode * \var UBXCFG_NAV5::minElev * Minimum Elevation for a GNSS satellite to be * used in NAV * \var UBXCFG_NAV5::drLimit * Reserved * \var UBXCFG_NAV5::pDop * Position DOP Mask to use * \var UBXCFG_NAV5::tDop * Time DOP Mask to use * \var UBXCFG_NAV5::pAcc * Position Accuracy Mask * \var UBXCFG_NAV5::tAcc * Time Accuracy Mask * \var UBXCFG_NAV5::staticHoldThresh * Static hold threshold * \var UBXCFG_NAV5::dgpsTimeOut * DGPS timeout * \var UBXCFG_NAV5::cnoThreshNumSVs * Number of satellites required to have C/N0 * above cnoThresh for a fix to be attempted * \var UBXCFG_NAV5::cnoThresh * C/N0 threshold for deciding whether to attempt * a fix * \var UBXCFG_NAV5::reserved2 * Reserved * \note Set to 0 * \var UBXCFG_NAV5::reserved3 * Reserved * \note Set to 0 * \var UBXCFG_NAV5::reserved4 * Reserved * \note Set to 0 */ /*! * \struct UBXCFG_NAVX5_POLL * Sending this (empty / no-payload) message to the receiver results in the receiver returning a * message of type CFG-NAVX5 with a payload as defined below. * \note No payload * \brief Poll Navigation Engine Expert Settings */ /*! * \struct UBXCFG_NAVX5 * \brief Navigation Engine Expert Settings * * \var UBXCFG_NAVX5::version * Message version * \note 0 for this version * \var UBXCFG_NAVX5::mask1 * First Parameters Bitmask. Only the flagged * parameters will be applied, unused bits must be * set to 0 * \see #UBXNAVX5Mask to fill this field * \var UBXCFG_NAVX5::reserved0 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::reserved1 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::reserved2 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::minSVs * Minimum number of satellites for navigation * \var UBXCFG_NAVX5::maxSVs * Maximum number of satellites for navigation * \var UBXCFG_NAVX5::minCNO * Minimum satellite signal level for navigation * \var UBXCFG_NAVX5::reserved5 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::iniFix3D * Initial Fix must be 3D flag * \note * - 0 - false * - 1 - true * \var UBXCFG_NAVX5::reserved6 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::reserved7 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::reserved8 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::wknRollover * GPS week rollover number; GPS week numbers * will be set correctly from this week up to 1024 * weeks after this week. * \note 0 reverts to firmware default. * \var UBXCFG_NAVX5::reserved9 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::reserved10 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::reserved11 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::usePPP * Use Precise Point Positioning flag * \note Only supported on certain product variants * \note * - 0 - false * - 1 - true * \var UBXCFG_NAVX5::aopCFG * AssistNow Autonomous configuration * /note * - 0 - disabled * - 1 - enabled * \var UBXCFG_NAVX5::reserved12 * \note Set to 0 * \var UBXCFG_NAVX5::reserved13 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::aopOrbMaxErr * maximum acceptable (modelled) AssistNow * Autonomous orbit error * \note valid range = 5..1000, * \note 0 - reset to firmware default * \var UBXCFG_NAVX5::reserved14 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::reserved15 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::reserved3 * Reserved * \note Set to 0 * \var UBXCFG_NAVX5::reserved4 * Reserved * \note Set to 0 */ /*! * \struct UBXCFG_NMEA_POLL * \note No payload * \brief Poll the NMEA protocol configuration */ /*! * \struct UBXCFG_NMEA * Set/Get the NMEA protocol configuration. See section "NMEA Protocol Configuration" (u-blox© official documentation) for a * detailed description of the configuration effects on NMEA output. * \brief NMEA protocol configuration * * \var UBXCFG_NMEA::filter * Filter flags * \see #UBXNMEAFilter to fill this field * \var UBXCFG_NMEA::nmeaVersion * NMEA version * \see #UBXNMEAVersion to fill this field * \var UBXCFG_NMEA::numSV * Maximum Number of SVs to report in NMEA * protocol.\n * This does not affect the receiver's operation. * It only limits the number of SVs reported in * NMEA mode (this might be needed with older * mapping applications which only support 8- or * 12-channel receivers). * \var UBXCFG_NMEA::flags * Flags * \see #UBXNMEAFlags to fill this field * \var UBXCFG_NMEA::gnssToFilter * Filters out satellites based on their GNSS. If a * bitfield is enabled, the corresponding satellites * will be not output. * \see #UBXNMEAGNSSToFilter to fill this field * \var UBXCFG_NMEA::svNumbering * Configures the display of satellites that do not * have an NMEA-defined value. * \note This does not apply to satellites with an * unknown ID. * \var UBXCFG_NMEA::mainTalkerId * By default the main Talker ID (i.e. the Talker ID * used for all messages other than GSV) is * determined by the GNSS assignment of the * receiver's channels (see #UBXCFG_GNSS). * This field enables the main Talker ID to be * overridden. * \var UBXCFG_NMEA::gsvTalkerId * By default the Talker ID for GSV messages is * GNSS specific (as defined by NMEA). * This field enables the GSV Talker ID to be * overridden. * \var UBXCFG_NMEA::reserved * Reserved * \note Set to 0 */ /*! * \struct UBXCFG_NVS * Three masks are made up of individual bits that indicate which data is to be cleared, saved * and/or loaded. The fourth mask defines on which devices the corresponding action shall be * carried out. Please note that only one command should be flagged at once. Otherwise all * commands are processed in the order Clear, Save, and Load. All reserved bits must be set * to zero. * \brief Clear, Save and Load non-volatile storage data * \var UBXCFG_NVS::clearMask * Mask of data to be cleared * \see #UBXCFGMask CFG_NVS section to fill this field * \var UBXCFG_NVS::saveMask * Mask of data to be saved * \see #UBXCFGMask CFG_NVS section to fill this field * \var UBXCFG_NVS::loadMask * Mask of data to be loaded, * \see #UBXCFGMask CFG_NVS section to fill this field * \var UBXCFG_NVS::deviceMask * Mask of devices to consider * \note Default: all devices * \see #UBXCFGDeviceMask to fill this field */ /*! * \struct UBXCFG_PM2_POLL * \note No payload * \brief Poll extended Power Management configuration */ /*! * \struct UBXCFG_PM2Flags * \brief Implements bitmask for UBXCFG_PM2::flags * \var UBXCFG_PM2Flags::blank1 * Stub to make gap * \var UBXCFG_PM2Flags::reserved * Reserved * \note Must be set to '000' * \var UBXCFG_PM2Flags::extIntSelect * EXTINT Pin Select * \note * - 0 - EXTINT0 * - 1 - EXTINT1 * \var UBXCFG_PM2Flags::extIntWake * EXTINT Pin Control * \note * - 0 - disabled * - 1 - enabled, force receiver into BACKUP mode when selected EXTINT pin is 'low' * \var UBXCFG_PM2Flags::extIntBackup * EXTINT Pin Control * - 0 - disabled * - 1 - enabled, force receiver into BACKUP mode when selected EXTINT pin is 'low' * \var UBXCFG_PM2Flags::blank2 * Stub to make gap * \var UBXCFG_PM2Flags::limitPeakCurr * Limit Peak Current * \see #UBXPM2LimitPeakCurrent to fill this field * \var UBXCFG_PM2Flags::waitTimeFix * Wait for Timefix * \note * - 0 - wait for normal Fix ok, before starting on-time * - 1 - wait for time fix ok, before starting on-time * \var UBXCFG_PM2Flags::updateRTC * Update Real Time Clock * - 0 - Do not wake-up to update RTC. RTC is updated during normal on-time. * - 1 - Update RTC. The receiver adds extra wake-up cycles to update the RTC. * \var UBXCFG_PM2Flags::updateEPH * Update Ephemeris * - 0 - Do not wake-up to update Ephemeris data * - 1 - Update Ephemeris. The receiver adds extra wake-up cycles to update the Ephemeris data * \var UBXCFG_PM2Flags::blank3 * Stub to make gap * \var UBXCFG_PM2Flags::doNotEnterOff * Behavior of receiver in case of no fix * - 0 - receiver enters inactive for search state * - 1 - receiver does not enter inactive for search state but keeps trying to acquire a fix instead * \var UBXCFG_PM2Flags::mode * Mode of operation * \see #UBXPM2Mode to fill this field */ /*! * \struct UBXCFG_PM2 * \brief Extended Power Management configuration * \var UBXCFG_PM2::version * Message version * \note 1 for this version * \var UBXCFG_PM2::reserved1 * Reserved * \var UBXCFG_PM2::reserved2 * Reserved * \var UBXCFG_PM2::reserved3 * Reserved * \var UBXCFG_PM2::flags * PSM configuration flags * \note See UBXCFG_PM2Flags to fill this field * \var UBXCFG_PM2::updatePeriod * Position update period. * \note If set to 0, the receiver will never retry a fix * \var UBXCFG_PM2::searchPeriod * Acquisition retry period * \note If set to 0, the receiver will never retry a startup * \var UBXCFG_PM2::gridOffset * Grid offset relative to GPS start of week * \var UBXCFG_PM2::onTime * On time after first successful fix * \var UBXCFG_PM2::minAcqTime * Minimal search time * \var UBXCFG_PM2::reserved4 * Reserved * \var UBXCFG_PM2::reserved5 * Reserved * \var UBXCFG_PM2::reserved6 * Reserved * \var UBXCFG_PM2::reserved7 * Reserved * \var UBXCFG_PM2::reserved8 * Reserved * \var UBXCFG_PM2::reserved9 * Reserved * \var UBXCFG_PM2::reserved10 * Reserved * \var UBXCFG_PM2::reserved11 * Reserved */ /*! * \struct UBXCFG_PRT_POLL * \note No payload * \brief Polls the configuration of the used I/O Port */ /*! * \struct UBXCFG_PRT_POLL_OPT * \brief Polls the configuration for one I/O Port * * \var UBXCFG_PRT_POLL_OPT::portId * Port Identifier Number * \see #UBXCFG_PRT for valid values */ /*! * \struct UBXCFG_PRTTxReady * \brief This structure described TX ready PIN configuration for UBXCFG_PRT::txReady * \var UBXCFG_PRTTxReady::en * Enable TX ready feature for this port * \note * - 0 - disable * - 1 - enabled * \var UBXCFG_PRTTxReady::pol * Polarity * - 0 - High-active * - 1 - Low-active * \var UBXCFG_PRTTxReady::pin * PIO to be used * \note must not be in use already by another function * \var UBXCFG_PRTTxReady::thres * Threshold * The TX ready PIN goes active after >= thres*8 bytes are pending for the port and going inactive after the last * pending bytes have been written to hardware (0-4 bytes before end of stream). * \note Given value is multiplied by 8 bytes */ /*! * \struct UBXCFG_PRTUARTMode * It is part of #UBXCFG_PRTMode union * \brief This structure describes port settings for UART * \var UBXCFG_PRTUARTMode::blank0 * Stub for gap * \var UBXCFG_PRTUARTMode::reserved1 * Reserved * \note Set to 1 for compatibility with A4 * \var UBXCFG_PRTUARTMode::blank1 * Stub for gap * \var UBXCFG_PRTUARTMode::charLen * Character Length * \see #UBXPRTModeCharLen to fill this field * \var UBXCFG_PRTUARTMode::blank2 * Stub for gap * \var UBXCFG_PRTUARTMode::parity * Parity * \see #UBXPRTModeParity to fill this field * \var UBXCFG_PRTUARTMode::nStopBits * Number of Stop Bits * \see #UBXPRTModeStopBits to fill this field * \var UBXCFG_PRTUARTMode::blank3 * Stub for gap */ /*! * \struct UBXCFG_PRTSPIMode * It is part of #UBXCFG_PRTMode union * \brief This structure describes port settings for SPI * \var UBXCFG_PRTSPIMode::blank0 * Stub for gap * \var UBXCFG_PRTSPIMode::spiMode * Mode * \see #UBXPRTSPIMode to fill this field * \var UBXCFG_PRTSPIMode::blank1 * Stub for gap * \var UBXCFG_PRTSPIMode::flowControl * Flow control * \note * - 0 - disabled * - 1 - enabled * \var UBXCFG_PRTSPIMode::blank2 * Stub for gap * \var UBXCFG_PRTSPIMode::ffCnt * Number of bytes containing 0xFF to receive before switching off reception. * \note Range: 0(mechanism off)-255 * \var UBXCFG_PRTSPIMode::blank3 * Stub for gap */ /*! * \struct UBXCFG_PRTDDCMode * It is part of #UBXCFG_PRTMode union * \brief This structure describes port settings for DDC(I2C) * \var UBXCFG_PRTDDCMode::blank0 * Stub for gap * \var UBXCFG_PRTDDCMode::slaveAddr * Slave address * \note Range: 0x07 < slaveAddr < 0x78. Bit 0 shall be 0 * \var UBXCFG_PRTDDCMode::blank1 * Stub for gap */ /*! * \union UBXCFG_PRTMode * It is used to fill UBXCFG_PRT::mode field * \brief This union contains mode settings for all ports * \var UBXCFG_PRTMode::UART * UART mode settings * \var UBXCFG_PRTMode::SPI * SPI mode settings * \var UBXCFG_PRTMode::DDC * DDC mode settings * \var UBXCFG_PRTMode::USB * Reserved * \note for USB port there are no mode settings */ /*! * \union UBXCFG_PRT5Option * \brief This union used as 5-th option of #UBXCFG_PRT * \var UBXCFG_PRT5Option::UARTbaudRate * Setup baudrate for UART ports * \var UBXCFG_PRT5Option::OtherReserved * Setting is reserved for all ports except UART */ /*! * \struct UBXCFG_PRT * For more detailed description please look at official u-blox© documentation * \brief Port Configuration message scope for all ports * \var UBXCFG_PRT::portID * Port Identifier Number * \var UBXCFG_PRT::reserved0 * Reserved for all ports * \var UBXCFG_PRT::txReady * \see #UBXCFG_PRTTxReady to fill this field * TX ready PIN configuration * \var UBXCFG_PRT::mode; * A bit mask describing port mode * \see #UBXCFG_PRTMode to fille this field * \var UBXCFG_PRT::option; * Optional block * \see #UBXCFG_PRT5Option to fill this field * \var UBXCFG_PRT::inProtoMask * A mask describing which input protocols are * active. * Each bit of this mask is used for a protocol. * \note Multiple protocols can be defined * on a single port. * \see #UBXPRTInProtoMask to fill this field * \var UBXCFG_PRT::outProtoMask * A mask describing which output protocols are * active. * Each bit of this mask is used for a protocol. * \note Multiple protocols can be defined * on a single port * \see #UBXPRTOutProtoMask to fill this field * \var UBXCFG_PRT::flags * Flags bit mask * \see #UBXPRTFlags to fill this field * \note Shall be 0 for USB * \var UBXCFG_PRT::reserved5 * Reserved * \note Always set to 0 */ /*! * \struct UBXCFG_RATE_POLL * Sending this message to the receiver results in the receiver returning a message of type #UBXCFG_RATE * \note No payload * \brief Poll Navigation/Measurement Rate Settings */ /*! * \struct UBXCFG_RATE * The u-blox© positioning technology supports navigation update rates higher or lower than 1 * update per second. The calculation of the navigation solution will always be aligned to the * top of a second. * - The update rate has a direct influence on the power consumption. The more fixes that * are required, the more CPU power and communication resources are required. * - For most applications a 1 Hz update rate would be sufficient. * - When using Power Save Mode, measurement and navigation rate can differ from the * values configured here. See "Measurement and navigation rate with Power Save Mode" (u-blox© official documentation) * for details. * \brief Navigation/Measurement Rate Settings * * \var UBXCFG_RATE::measRate * Measurement Rate, GPS measurements are * taken every measRate milliseconds * \var UBXCFG_RATE::navRate * Navigation Rate, in number of measurement * cycles. * \note This parameter cannot be changed, and * must be set to 1. * \var UBXCFG_RATE::timeRef * Alignment to reference time. * \note * - 0 - UTC time * - 1 - GPS time */ /*! * \struct UBXCFG_RINV_POLL * \note No payload * \brief Poll contents of Remote Inventory */ /*! * \struct UBXCFG_RINV * \note This message has variable payload * If size of variable payload is greater than 30, the excess bytes are discarded. In future firmware versions, this limit * may change. * \brief Contents of Remote Inventory * \var UBXCFG_RINV::flags * Flags * \see #UBXRINVFlags to fill this field */ /*! * \struct UBXCFG_RST * \brief Reset Receiver / Clear Backup Data Structures * * \var UBXCFG_RST::navBBRMask * BBR Sections to clear. * \see #UBXBBRSpecialSets for special sets * \see #UBXBBRMask to fill this field manually * \var UBXCFG_RST::resetMode * Reset Type * \see #UBXResetMode to fill this field * \var UBXCFG_RST::reserved1 * Reserved */ /*! * \struct UBXCFG_RXM_POLL * \note No payload * \brief Poll RXM configuration */ /*! * \struct UBXCFG_RXM * For a detailed description see section "Power Management"(u-blox© official documentation) * \note Power Save Mode cannot be selected when the receiver is configured to process * GLONASS signals using #UBXCFG_GNSS. * \brief RXM configuration * * \var UBXCFG_RXM::reserved1 * Reserved * \note Shall be set to 8 * \var UBXCFG_RXM::lpMode * Low power mode * \see #UBXRXMLowPowerModes to fill this field */ /*! * \struct UBXCFG_SBAS_POLL * \note No payload * \brief Poll contents of SBAS Configuration * */ /*! * \struct UBXCFG_SBAS * This message configures the SBAS receiver subsystem (i.e. WAAS, EGNOS, MSAS) * \see "SBAS Configuration Settings Description" (u-blox© official documentation) * for a detailed description of how these settings affect receiver operation. * \brief SBAS Configuration * * \var UBXCFG_SBAS::mode * SBAS Mode * \see #UBXSBASModes to fill this field * \var UBXCFG_SBAS::usage * SBAS Usage * \see #UBXSBASUsage to fill this field * \var UBXCFG_SBAS::maxSBAS * Maximum Number of SBAS prioritized tracking * channels to use * \note valid range: 0 - 3 * \deprecated obsolete and superseeded by #UBXCFG_GNSS in protocol * versions 14.00+. * \var UBXCFG_SBAS::scanmode2 * Continuation of scanmode bitmask below * \see #UBXSBASScanModes2 to fill this field * \var UBXCFG_SBAS::scanmode1 * Which SBAS PRN numbers to search for (Bitmask) * If all Bits are set to zero, auto-scan (i.e. all valid * PRNs) are searched. * Every bit corresponds to a PRN number * \see #UBXSBASScanModes1 to fill this field */ /*! * \struct UBXCFG_TP5_POLL * Sending this message to the receiver results in the receiver returning a * message of type #UBXCFG_TP5 with a payload for timepulse 0. * \note No payload * \brief Poll Time Pulse Parameters */ /*! * \struct UBXCFG_TP5_POLL_OPT * Sending this message to the receiver results in the receiver returning a message of type * #UBXCFG_TP5 with a payload for the specified time pulse. * \brief Poll Time Pulse Parameters * \var UBXCFG_TP5_POLL_OPT::tpIdx * Time pulse selection * \see #UBXCFGTimepulses to fill this field */ /*! * \struct UBXCFG_TP5 * This message is used to get/set time pulse parameters. For more information see section * "Time pulse" (u-blox© official documentation). * \brief The UBXCFG_TP5 structure is * * \var UBXCFG_TP5::tpIdx * Time pulse selection * \see #UBXCFGTimepulses to fill this field * \var UBXCFG_TP5::reserved0 * Reserved * \var UBXCFG_TP5::reserved1 * Reserved * \var UBXCFG_TP5::antCableDelay * Antenna cable delay * \var UBXCFG_TP5::rfGroupDelay * RF group delay * \var UBXCFG_TP5::freqPeriod * Frequency or period time * \note Depending on setting of bit 'isFreq' * \var UBXCFG_TP5::freqPeriodLock * Frequency or period time when locked to GPS * time * \note Only used if 'lockedOtherSet' is set * \var UBXCFG_TP5::pulseLenRatio * Pulse length or duty cycle * \note Depending on 'isLength' * \var UBXCFG_TP5::pulseLenRatioLock * Pulse length or duty cycle when locked to GPS * time * \note only used if 'lockedOtherSet' is set * \var UBXCFG_TP5::userConfigDelay * User configurable time pulse delay * \var UBXCFG_TP5::flags * Configuration flags * \see #UBXCFGTimepulseFlags to fill this field */ /*! * \struct UBXCFG_USB_POLL * \note No payload * \brief Poll a USB configuration */ /*! * \struct UBXCFG_USB * \brief USB Configuration * * \var UBXCFG_USB::vendorId * Vendor ID. This field shall only be set to * registered Vendor IDs. * \note Changing this field * requires special Host drivers. * \var UBXCFG_USB::productId * Product ID. * \note Changing this field requires special * Host drivers. * \var UBXCFG_USB::reserved1 * Reserved * \note Set to 0 * \var UBXCFG_USB::reserved2 * Reserved * \note Set to 1 * \var UBXCFG_USB::powerConsumption * Power consumed by the device * \var UBXCFG_USB::flags * Various configuration flags * \see #UBXUSBFlags to fill this field * \var UBXCFG_USB::vendorString[32] * String containing the vendor name. 32 ASCII bytes * including 0-termination. * \var UBXCFG_USB::productString[32] * String containing the product name. 32 ASCI bytes * including 0-termination. * \var UBXCFG_USB::serialNumber[32] * String containing the serial number. 32 ASCII * bytes including 0-termination. * \note Changing the String fields requires special Host * drivers. */ /*! * \struct UBXINF_DEBUG * This message has a variable length payload, representing an ASCII string. * \note This message has a variable length payload * \brief ASCII String output, indicating debug output */ /*! * \struct UBXINF_ERROR * This message has a variable length payload, representing an ASCII string. * \note This message has a variable length payload * \brief ASCII String output, indicating an error */ /*! * \struct UBXINF_NOTICE * This message has a variable length payload, representing an ASCII string. * \note This message has a variable length payload * \brief ASCII String output, with informational contents */ /*! * \struct UBXINF_TEST * This message has a variable length payload, representing an ASCII string. * \note This message has a variable length payload * \brief ASCII String output, indicating test output */ /*! * \struct UBXINF_WARNING * This message has a variable length payload, representing an ASCII string. * \note This message has a variable length payload * \brief ASCII String output, indicating a warning */ /*! * \struct UBXLOG_CREATE * This message is used to create an initial logging file and activate the logging subsystem. * #UBXACK_ACK or #UBXACK_NACK are returned to indicate success or failure. * This message does not handle activation of recording or filtering of log entries * \see #UBXCFG_LOGFILTER * \brief Create Log File * \var UBXLOG_CREATE::version * The version of this message. * \note Set to 0 * \var UBXLOG_CREATE::logCfg * Config flags * \see #UBXLOGCfg to fill this field * \var UBXLOG_CREATE::reserved * Reserved * \note Set to 0 * \var UBXLOG_CREATE::logSize * Indicates the size of the log * \see #UBXLOGSize to fill this field * \var UBXLOG_CREATE::userDefinedSize * Sets the maximum amount of space in the * filestore that can be used by the logging task * \note This field is only applicable if logSize is set to user defined. */ /*! * \struct UBXLOG_ERASE * This message deactivates the logging system and erases all logged data. * #UBXACK_ACK or #UBXACK_NACK are returned to indicate success or failure. * \note No payload * \brief Erase Logged Data */ /*! * \struct UBXLOG_FINDTIME_IN * This message can be used to search a log for the index of the first entry less than or equal * to the given time. This index can then be used with the #UBXLOG_RETRIEVE message to * provide time-based retrieval of log entries. * \brief Finds the index of the first log entry <= given time * * \var UBXLOG_FINDTIME_IN::version * Message version * \note Set to 0 * \var UBXLOG_FINDTIME_IN::type * Message type * \note 0 for request * \var UBXLOG_FINDTIME_IN::reserved1 * Reserved * \var UBXLOG_FINDTIME_IN::year * Year of UTC time * \note Range 1-65635 * \var UBXLOG_FINDTIME_IN::month * Month of UTC time * \note Range 1-12 * \var UBXLOG_FINDTIME_IN::day * Day of UTC time * \note Range 1-31 * \var UBXLOG_FINDTIME_IN::hour * Hour of UTC time * \note Range 0-23 * \var UBXLOG_FINDTIME_IN::minute * Minute of UTC time * \note Range 0-59 * \var UBXLOG_FINDTIME_IN::second * Second of UTC time * \note Range 0-60 - looks like mistake in official documentation * \var UBXLOG_FINDTIME_IN::reserved2 * Reserved */ /*! * \struct UBXLOG_FINDTIME_OUT * \brief This message is the response to FINDTIME request. * * \var UBXLOG_FINDTIME_OUT::version * Message version * \note Set to 1 * \var UBXLOG_FINDTIME_OUT::type * \note Is set to 1 for response * \var UBXLOG_FINDTIME_OUT::reserved1 * Reserved * \var UBXLOG_FINDTIME_OUT::entryNumber * Index of the most recent entry with time <= specified */ /*! * \struct UBXLOG_INFO_POLL * \note No payload * \brief Poll for log information */ /*! * \struct UBXLOG_INFO * This message is used to report information about the logging subsystem. * \note * - The reported maximum log size will be smaller than that originally specified in * LOG-CREATE due to logging and filestore implementation overheads. * - Log entries are compressed in a variable length fashion, so it may be difficult to predict * log space usage with any precision. * - There may be times when the receiver does not have an accurate time (e.g. if the week * number is not yet known), in which case some entries will not have a timestamp - this * may result in the oldest/newest entry time values not taking account of these entries. * \brief Log information * \var UBXLOG_INFO::version * The version of this message * \note Set to 1 * \var UBXLOG_INFO::reserved1[3] * Reserved * \var UBXLOG_INFO::filestoreCapacity * The capacity of the filestore * \var UBXLOG_INFO::reserved2 * Reserved * \var UBXLOG_INFO::reserved3 * Reserved * \var UBXLOG_INFO::currentMaxLogSize * The maximum size the current log is allowed to grow to * \var UBXLOG_INFO::currentLogSize * Approximate amount of space in log currently occupied * \var UBXLOG_INFO::entryCount * Number of entries in the log. * \note For circular logs this value will decrease * when a group of entries is deleted to make * space for new ones. * \var UBXLOG_INFO::oldestYear * Oldest entry UTC year. * \note Range 1-65635 or zero if * there are no entries with known time * \var UBXLOG_INFO::oldestMonth * Oldest month * \note Range 1-12 * \var UBXLOG_INFO::oldestDay * Oldest day * \note Range 1-31 * \var UBXLOG_INFO::oldestHour * Oldest hour * \note Range 0-23 * \var UBXLOG_INFO::oldestMinute * Oldest minute * \note Range 0-59 * \var UBXLOG_INFO::oldestSecond * Oldest second * \note Range 0-60 * \var UBXLOG_INFO::reserved4 * Reserved * \var UBXLOG_INFO::newestYear * Newest entry UTC year year. * \note Range 1-65635 or zero if * there are no entries with known time * \var UBXLOG_INFO::newestMonth * Newest month * \note Range 1-12 * \var UBXLOG_INFO::newestDay * Newest day * \note Range 1-31 * \var UBXLOG_INFO::newestHour * Newest hour * \note Range 0-23 * \var UBXLOG_INFO::newestMinute * Newest minute * \note Range 0-59 * \var UBXLOG_INFO::newestSecond * Newest second * \note Range 0-60 * \var UBXLOG_INFO::reserved5 * Reserved * \var UBXLOG_INFO::status * Log status flags * \see #UBXLOGStatus to fill this field * \var UBXLOG_INFO::reserved6[3] * Reserved */ /*! * \struct UBXLOG_RETRIEVEPOS * This message is used to report a position fix log entry * \brief Position fix log entry * \var UBXLOG_RETRIEVEPOS::entryIndex * The index of this log entry * \var UBXLOG_RETRIEVEPOS::lon * Longitude * \var UBXLOG_RETRIEVEPOS::lat * Latitude * \var UBXLOG_RETRIEVEPOS::hMSL * Height above mean sea level * \var UBXLOG_RETRIEVEPOS::hAcc * Horizontal accuracy estimate * \var UBXLOG_RETRIEVEPOS::gSpeed * Ground speed (2-D) * \var UBXLOG_RETRIEVEPOS::heading * Heading * \var UBXLOG_RETRIEVEPOS::version * The version of this message. * \note Set to 0 * \var UBXLOG_RETRIEVEPOS::fixType * Fix type * \see #UBXRETRIEVEPOSFixType to fill this field * \var UBXLOG_RETRIEVEPOS::year * Year * \note Range 1-65635 * \var UBXLOG_RETRIEVEPOS::month * Month * \note Range 1-12 * \var UBXLOG_RETRIEVEPOS::day * Day * \note Range 1-31 * \var UBXLOG_RETRIEVEPOS::hour * Hour * \note Range 0-23 * \var UBXLOG_RETRIEVEPOS::minute * Minute * \note Range 0-59 * \var UBXLOG_RETRIEVEPOS::second * Second * \note Range 0-60 * \var UBXLOG_RETRIEVEPOS::reserved1 * Reserved * \var UBXLOG_RETRIEVEPOS::numSV * Number of satellites used in the position fix * \var UBXLOG_RETRIEVEPOS::reserved2 * Reserved */ /*! * \struct UBXLOG_RETRIEVESTRING * This message is used to report a byte string log entry * \note this message contains variable payload of UBXLOG_RETRIEVESTRING::byteCount size * \brief Byte string log entry * \var UBXLOG_RETRIEVESTRING::entryIndex * The index of this log entry * \var UBXLOG_RETRIEVESTRING::version * \note Set to 0 * \var UBXLOG_RETRIEVESTRING::reserved1 * Reserved * \var UBXLOG_RETRIEVESTRING::year * Year * \note Range 1-65635 * \var UBXLOG_RETRIEVESTRING::month * Month * \note Range 1-12 * \var UBXLOG_RETRIEVESTRING::day * Day * \note Range 1-31 * \var UBXLOG_RETRIEVESTRING::hour * Hour * \note Range 0-23 * \var UBXLOG_RETRIEVESTRING::minute * Minute * \note Range 0-59 * \var UBXLOG_RETRIEVESTRING::second * Second * \note Range 0-60 * \var UBXLOG_RETRIEVESTRING::reserved2 * Reserved * \var UBXLOG_RETRIEVESTRING::byteCount * Size of string in bytes */ /*! * \struct UBXLOG_RETRIEVE * This message is used to request logged data. * Log entries are returned in chronological order, using the messages * #UBXLOG_RETRIEVEPOS and #UBXLOG_RETRIEVESTRING. The maximum number of * entries that can be returned in response to a single UBX-LOG-RETRIEVE message is 256. If * more entries than this are required the mesage will need to be sent multiple times with * different startNumbers. The retrieve will be stopped if any UBX-LOG message is received. * \note The speed of transfer can be maximised by using a high data rate and temporarily stopping * the GPS processing see #UBXCFG_RST * \note log recording must first be disabled see #UBXCFG_LOGFILTER * \brief Request log data * \var UBXLOG_RETRIEVE::startNumber * Index of first entry to be transferred * \var UBXLOG_RETRIEVE::entryCount * Number of log entries to transfer. The maximum * is 256 * \var UBXLOG_RETRIEVE::version * The version of this message * \note Set to 0 * \var UBXLOG_RETRIEVE::reserved[3] * Reserved */ /*! * \struct UBXLOG_STRING * This message can be used to store an arbitrary byte string in the on-board flash memory. * The maximum length that can be stored is 256 bytes. * \note this message has variable payload * \brief Store arbitrary string in on-board Flash memory */ /*! * \struct UBXMON_HW2 * Status of different aspects of the hardware such as Imbalance, Low-Level Configuration * and POST Results. * The first four parameters of this message represent the complex signal from the RF front * end. The following rules of thumb apply: * - The smaller the absolute value of the variable ofsI and ofsQ respectively, the better. * - Ideally, the magnitude of the I-part (UBXMON_HW2::magI) and the Q-part (UBXMON_HW2::magQ) of the complex signal * should be the same. * \brief Extended Hardware Status * * \var UBXMON_HW2::ofsI * Imbalance of I-part of complex signal, scaled. * \note * - -128 - max. negative imbalance * - 127 - max. positive imbalance * \var UBXMON_HW2::magI * Magnitude of I-part of complex signal, scaled * \note * - 0 - no signal * - 255 = max. magnitude * \var UBXMON_HW2::ofsQ * Imbalance of Q-part of complex signal, scaled. * \note * - -128 = max. negative imbalance * - 127 = max. positive imbalance * \var UBXMON_HW2::magQ * Magnitude of Q-part of complex signal, scaled * \note * - 0 - no signal * - 255 = max. magnitude * \var UBXMON_HW2::cfgSource * Source of low-level configuration * \todo Following values will be covered with enum in future * - 114 - ROM * - 111 - OTP * - 112 - config pins * - 102 - flash image) * \var UBXMON_HW2::reserved0[3] * Reserved * \var UBXMON_HW2::lowLevCfg * Low-level configuration * \var UBXMON_HW2::reserved1[2] * Reserved * \var UBXMON_HW2::postStatus * POST status word * \var UBXMON_HW2::reserved2 * Reserved */ /*! * \struct UBXHWFlags * \brief This structure describes UBXMON_HW::flags value * \var UBXHWFlags::UBXHWFlagsRTCCalib * RTC is calibrated * \var UBXHWFlags::UBXHWFlagsSafeBoot * SafeBoot mode * - 0 - inactive * - 1 - active * \var UBXHWFlags::UBXHWFlagsJammingState * Output from Jamming/Interference Monitor * \todo Following values will be covered with enum in future * - 0 - unknown or feature disabled * - 1 - ok - no significant jamming * - 2 - warning - interference visible but fix OK * - 3 - critical - interference visible and no fix */ /*! * \struct UBXMON_HW * Status of different aspect of the hardware, such as Antenna, PIO/Peripheral Pins, Noise * Level, Automatic Gain Control (AGC) * \brief Hardware Status * * \var UBXMON_HW::pinSel * Mask of Pins Set as Peripheral/PIO * \var UBXMON_HW::pinBank * Mask of Pins Set as Bank A/B * \var UBXMON_HW::pinDir * Mask of Pins Set as Input/Output * \var UBXMON_HW::pinVal * Mask of Pins Value Low/High * \var UBXMON_HW::noisePerMS * Noise Level as measured by the GPS Core * \var UBXMON_HW::agcCnt * AGC Monitor * \note counts SIGHI xor SIGLO * \note Range 0 to 8191 * \var UBXMON_HW::aStatus * Status of the Antenna Supervisor State Machine * \todo Following values will be covered with enum in future * - 0 - INIT * - 1 - DONTKNOW * - 2 - OK * - 3 - SHORT * - 4 - OPEN * \var UBXMON_HW::aPower * Current PowerStatus of Antenna * \todo Following values will be covered with enum in future * - 0 - OFF * - 1 - ON * - 2 - DONTKNOW * \var UBXMON_HW::flags * Flags * \see #UBXHWFlags to fill this field * \var UBXMON_HW::reserved1 * Reserved * \var UBXMON_HW::usedMask * Mask of Pins that are used by the Virtual Pin * Manager * \var UBXMON_HW::VP[17] * Array of Pin Mappings for each of the 17 * Physical Pins * \var UBXMON_HW::jamInd * CW Jamming indicator, scaled * \todo Following values will be covered with enum in future * - 0 - no CW jamming * - 255 - strong CW jamming) * \var UBXMON_HW::reserved3 * Reserved * \var UBXMON_HW::pinIrq * Mask of Pins Value using the PIO Irq * \var UBXMON_HW::pullH * Mask of Pins Value using the PIO Pull High Resistor * \var UBXMON_HW::pullL * Mask of Pins Value using the PIO Pull Low Resistor */ /*! * \struct UBXMON_IO_PART * This message is part of #UBXMON_IO * \brief I/O port status * \var UBXMON_IO_PART::rxBytes * Number of bytes ever received * \var UBXMON_IO_PART::txBytes * Number of bytes ever sent * \var UBXMON_IO_PART::parityErrs * Number of 100ms timeslots with parity errors * \var UBXMON_IO_PART::framingErrs * Number of 100ms timeslots with framing errors * \var UBXMON_IO_PART::overrunErrs * Number of 100ms timeslots with overrun errors * \var UBXMON_IO_PART::breakCond * Number of 100ms timeslots with break conditions * \var UBXMON_IO_PART::rxBusy * Flag is receiver is busy * \var UBXMON_IO_PART::txBusy * Flag is transmitter is busy * \var UBXMON_IO_PART::reserved1 * Reserved */ /*! * \struct UBXMON_IO * \note The size of the message is determined by the number of ports 'N' the receiver supports, i.e. * on u-blox 5 the number of ports is 6. * \note this message has variable payload of #UBXMON_IO_PART type. * It depends of UBX_IO_PORTS_NUM macro that is 6 by default. * Redefine this macro otherwise. * \brief I/O Subsystem Status * \var UBXMON_IO::ioPortInfo * I/O ports information scope * \see #UBXMON_IO_PART to fill this filed */ /*! * \struct UBXMON_MSGPP * \brief Message Parse and Process Status * * \var UBXMON_MSGPP::msg1[8] * Number of successfully parsed messages for * each protocol on port 0 * \var UBXMON_MSGPP::msg2[8] * Number of successfully parsed messages for * each protocol on port 1 * \var UBXMON_MSGPP::msg3[8] * Number of successfully parsed messages for * each protocol on port 2 * \var UBXMON_MSGPP::msg4[8] * Number of successfully parsed messages for * each protocol on port 3 * \var UBXMON_MSGPP::msg5[8] * Number of successfully parsed messages for * each protocol on port 4 * \var UBXMON_MSGPP::msg6[8] * Number of successfully parsed messages for * each protocol on port 5 * \var UBXMON_MSGPP::skipped[6] * Number skipped bytes for each port */ /*! * \struct UBXMON_RXBUF * \brief Receiver Buffer Status * * \var UBXMON_RXBUF::pending[6] * Number of bytes pending in receiver buffer for each target * \var UBXMON_RXBUF::usage[6] * Maximum usage receiver buffer during the last sysmon period for each target * \note Units % * \var UBXMON_RXBUF::peakUsage[6] * Maximum usage receiver buffer for each target * \note Units % */ /*! * \struct UBXMON_RXR * The receiver ready message is sent when the receiver changes from or to backup mode. * \brief Receiver Status Information * * \var UBXMON_RXR::flags * Receiver status flags * \see #UBXRXRFlags to fill this field */ /*! * \struct UBXMON_TXBUF * \brief Transmitter Buffer Status * * \var UBXMON_TXBUF::pending[6] * Number of bytes pending in transmitter buffefor each target * \var UBXMON_TXBUF::usage[6] * Maximum usage transmitter buffer during the * last sysmon period for each target * \note Units % * \var UBXMON_TXBUF::peakUsage[6] * Maximum usage transmitter buffer for each * target * \note Units % * \var UBXMON_TXBUF::tUsage * Maximum usage of transmitter buffer during * the last sysmon period for all targets * \note Units % * \var UBXMON_TXBUF::tPeakusage * Maximum usage of transmitter buffer for all * targets * \var UBXMON_TXBUF::errors * Error bitmask * \todo Bitmask will be implemented in future * \var UBXMON_TXBUF::reserved1 * Reserved */ /*! * \struct UBXMON_VER_POLL * \note No payload * \brief Poll Receiver/Software Version */ /*! * \struct UBXMON_VER * \brief Receiver Software Version * \note Variable payload of #UBXMON_VER_PART type * \var UBXMON_VER::swVersion[30] * Zero-terminated Software Version String * \var UBXMON_VER::hwVersion[10] * Zero-terminated Hardware Version String */ /*! * \struct UBXMON_VER_PART * Extended receiver/software information. * If the receiver's firmware is running from flash, * the first extension field will contain the Software * Version String of the underlying ROM. * Additional fields may also indicate the * supported protocol version and any product * variants, capabilities or extensions. * \brief This structure is variable payload for #UBXMON_VER * \var UBXMON_VER_PART::extension[30] * See structure descruption */ /*! * \struct UBXNAV_AOPSTATUS * This message provides information on the current availability of AssistNow Autonomous * data and the current state of the subsystem on the receiver. For example, a host application * can determine the optimal time to shut down the receiver by monitoring the status field * for a steady 0. See the chapter "AssistNow Autonomous"(u-blox© official documentation) in the receiver description for * details on this feature. * \brief AssistNow Autonomous Status * \var UBXNAV_AOPSTATUS::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_AOPSTATUS::aopCfg * AssistNow Autonomous configuration * \see #UBXAOPCfg to fill this field * \var UBXNAV_AOPSTATUS::status * AssistNow Autonomous subsystem is idle or running * \see #UBXAOPStatus to fill this field * \var UBXNAV_AOPSTATUS::reserved0 * Reserved * \note Set to 0 * \var UBXNAV_AOPSTATUS::reserved1 * Reserved * \note Set to 0 * \var UBXNAV_AOPSTATUS::availGPS * data availability mask for GPS SVs * \note bits 0-31 correspond to GPS PRN 1-32 * \var UBXNAV_AOPSTATUS::reserved2 * Reserved * \note Set to 0 * \var UBXNAV_AOPSTATUS::reserved3 * Reserved * \note Set to 0 */ /*! * \struct UBXNAV_CLOCK * \brief Clock Solution * * \var UBXNAV_CLOCK::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_CLOCK::clkB * Clock bias * \var UBXNAV_CLOCK::clkD * Clock drift * \var UBXNAV_CLOCK::tAcc * Time accuracy estimate * \var UBXNAV_CLOCK::fAcc * Frequency accuracy estimate */ /*! * \struct UBXNAV_DGPS * This message outputs the DGPS correction data that has been applied to the current NAV * Solution. See also the notes on the "RTCM protocol"(u-blox© official documentation). * \note This message has variable payload of #UBXNAV_DGPS_PART type * \brief DGPS Data Used for NAV * * \var UBXNAV_DGPS::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_DGPS::age * Age of newest correction data * \var UBXNAV_DGPS::baseId * DGPS basestation identifier * \var UBXNAV_DGPS::baseHealth * DGPS basestation health status * \var UBXNAV_DGPS::numCh * Number of channels for which correction data is following * \var UBXNAV_DGPS::status * DGPS correction type status * \todo Following values will be covered with enum in future * - 0x00 - none * - 0x01 - PR+PRR correction * \var UBXNAV_DGPS::reserved1 * Reserved */ /*! * \struct UBXDGPSFlags * This structure implemets UBXNAV_DGPS_PART::flags * \brief #UBXNAV_DGPS_PART flags * \var UBXDGPSFlags::channel * GPS channel number this SV is on * \var UBXDGPSFlags::dgpsUsed * DGPS used for this SV */ /*! * \struct UBXNAV_DGPS_PART * \brief This sturcture implements variable payload for #UBXNAV_DGPS * * \var UBXNAV_DGPS_PART::svid * Satellite ID * \var UBXNAV_DGPS_PART::flags * Channel number and usage * \var UBXNAV_DGPS_PART::ageC * Age of latest correction data * \var UBXNAV_DGPS_PART::prc * Pseudorange correction * \var UBXNAV_DGPS_PART::prrc * Pseudorange rate correction */ /*! * \struct UBXNAV_DOP * - DOP values are dimensionless. * - All DOP values are scaled by a factor of 100. If the unit transmits a value of e.g. 156, the * DOP value is 1.56. * \brief Dilution of precision * * \var UBXNAV_DOP::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_DOP::gDOP * Geometric DOP * \var UBXNAV_DOP::pDOP * Position DOP * \var UBXNAV_DOP::tDOP * Time DOP * \var UBXNAV_DOP::vDOP * Vertical DOP * \var UBXNAV_DOP::hDOP * Horizontal DOP * \var UBXNAV_DOP::nDOP * Northing DOP * \var UBXNAV_DOP::eDOP * Easting DOP */ /*! * \struct UBXNAV_POSECEF * \brief Position Solution in ECEF * \var UBXNAV_POSECEF::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_POSECEF::ecefX * ECEF X coordinate * \var UBXNAV_POSECEF::ecefY * ECEF Y coordinate * \var UBXNAV_POSECEF::ecefZ * ECEF Z coordinate * \var UBXNAV_POSECEF::pAcc * Position Accuracy Estimate */ /*! * \struct UBXNAV_POSLLH * This message outputs the Geodetic position in the currently selected ellipsoid. The default is * the WGS84 Ellipsoid, but can be changed with the message CFG-DAT. * \warning See important comments concerning validity of position given in section * Navigation Output Filters(u-blox© official documentation). * \brief Geodetic Position Solution * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_POSLLH::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_POSLLH::lon * Longitude * \var UBXNAV_POSLLH::lat * Latitude * \var UBXNAV_POSLLH::height * Height above ellipsoid * \var UBXNAV_POSLLH::hMSL * Height above mean sea level * \var UBXNAV_POSLLH::hAcc * Horizontal accuracy estimate * \var UBXNAV_POSLLH::vAcc * Vertical accuracy estimate */ /*! * \struct UBXPVTFlags * \brief this structure implements UBXNAV_PVT::flags * \var gnssFixOk * A valid fix (i.e within DOP & accuracy masks) * \var diffSoln:1 * 1 if differential corrections were applied * \var psmState:3 * Power Save Mode state * \see #UBXPVTPSMStates to fill this field */ /*! * \struct UBXNAV_PVT * This message combines position, velocity and time solution, including accuracy figures * \brief Navigation Position Velocity Time Solution * \note that during a leap second there may be more (or less) than 60 seconds in a * minute.\n * See the description of leap seconds(u-blox© official documentation) for details. * \var UBXNAV_PVT::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_PVT::year * Year (UTC) * \note Range 1-65635 * \var UBXNAV_PVT::month * Month * \note Range 1-12 * \var UBXNAV_PVT::day * Day * \note Range 1-31 * \var UBXNAV_PVT::hour * Hour * \note Range 0-23 * \var UBXNAV_PVT::minute * Minute * \note Range 0-59 * \var UBXNAV_PVT::second * Second * \note Range 0-60 * \var UBXNAV_PVT::valid * Validity Flags * \see #UBXPVTValid to fill this field * \var UBXNAV_PVT::tAcc * Time accuracy estimate * \var UBXNAV_PVT::nano * Fraction of second * \note Range -1e9 .. 1e9 * \var UBXNAV_PVT::fixType * GNSSfix Type * \see #UBXGPSFix to fill this field * \var UBXNAV_PVT::flags * Fix Status Flags * \see #UBXPVTFlags to fill this field * \var UBXNAV_PVT::reserved1 * Reserved * \var UBXNAV_PVT::numSV * Number of satellites used in Nav Solution * \var UBXNAV_PVT::lon * Longitude * \var UBXNAV_PVT::lat * Latitude * \var UBXNAV_PVT::height * Height above Ellipsoid * \var UBXNAV_PVT::hMSL * Height above mean sea level * \var UBXNAV_PVT::hAcc * Horizontal Accuracy Estimate * \var UBXNAV_PVT::vAcc * Vertical Accuracy Estimate * \var UBXNAV_PVT::velN * NED north velocity * \var UBXNAV_PVT::velE * NED east velocity * \var UBXNAV_PVT::velD * NED down velocity * \var UBXNAV_PVT::gSpeed * Ground Speed (2-D) * \var UBXNAV_PVT::heading * Heading of motion 2-D * \var UBXNAV_PVT::sAcc * Speed Accuracy Estimate * \var UBXNAV_PVT::headingAcc * Heading Accuracy Estimate * \var UBXNAV_PVT::pDOP * Position DOP * \var UBXNAV_PVT::reserved2 * Reserved * \var UBXNAV_PVT::reserved3 * Reserved */ /*! * \struct UBXNAV_SBAS * This message outputs the status of the SBAS sub system * \note this message has variable payload of #UBXNAV_SBAS_PART type * \brief SBAS Status Data * * \var UBXNAV_SBAS::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_SBAS::geo * PRN Number of the GEO where correction and * integrity data is used from * \var UBXNAV_SBAS::mode * SBAS Mode * \todo Following values will be covered with enum in future * - 0 Disabled * - 1 Enabled Integrity * - 3 Enabled Testmode * \var UBXNAV_SBAS::sys * SBAS System (WAAS/EGNOS/...) * \todo Following values will be covered with enum in future * - -1 Unknown * - 0 WAAS * - 1 EGNOS * - 2 MSAS * - 16 GPS * \var UBXNAV_SBAS::service * SBAS Services available * \see #UBXSBASService to fill this field * \var UBXNAV_SBAS::cnt * Number of SV data following * \var UBXNAV_SBAS::reserved0[3] * Reserved */ /*! * \struct UBXNAV_SBAS_PART * \brief Variable payload for #UBXNAV_SBAS * * \var UBXNAV_SBAS_PART::svid * SV Id * \var UBXNAV_SBAS_PART::flags * Flags for this SV * \var UBXNAV_SBAS_PART::udre * Monitoring status * \var UBXNAV_SBAS_PART::svSys * System (WAAS/EGNOS/...) same as UBXNAV_SBAS::sys * \var UBXNAV_SBAS_PART::svService * Services available same as UBXNAV_SBAS::service * \var UBXNAV_SBAS_PART::reserved1 * Reserved * \var UBXNAV_SBAS_PART::prc * Pseudo Range correction * \var UBXNAV_SBAS_PART::reserved2 * Reserved * \var UBXNAV_SBAS_PART::ic * Ionosphere correction */ /*! * \struct UBXNAV_SOL * This message combines position, velocity and time solution in ECEF, including accuracy figures. * This message has only been retained for backwards compatibility; users are recommended * to use the UBX-NAV-PVT message in preference. * \brief Navigation Solution Information * * \var UBXNAV_SOL::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_SOL::fTOW * Fractional part of iTOW * The precise GPS time of week in seconds is: * (UBXNAV_SOL::iTOW * 1e-3) + (UBXNAV_SOL::fTOW * 1e-9) * \note Range +/-500000 * \var UBXNAV_SOL::week * GPS week number of the navigation epoch * \var UBXNAV_SOL::gpsFix * GPS fix type * \see #UBXGPSFix to fill this field * \var UBXNAV_SOL::flags * Fix Status Flags * \see #UBXSBASSOLFlags to fill this field * \var UBXNAV_SOL::ecefX * ECEF X coordinate * \var UBXNAV_SOL::ecefY * ECEF Y coordinate * \var UBXNAV_SOL::ecefZ * ECEF Z coordinate * \var UBXNAV_SOL::pAcc * 3D Position Accuracy Estimate * \var UBXNAV_SOL::ecefVX * ECEF X velocity * \var UBXNAV_SOL::ecefVY * ECEF Y velocity * \var UBXNAV_SOL::ecefVZ * ECEF Z velocity * \var UBXNAV_SOL::sAcc * Speed Accuracy Estimate * \var UBXNAV_SOL::pDOP * Position DOP * \var UBXNAV_SOL::reserved1 * Reserved * \var UBXNAV_SOL::numSV * Number of SVs used in Nav Solution * \var UBXNAV_SOL::reserved2 * Reserved */ /*! * \struct UBXNAV_STATUS * Validity of position and velocity given in. * \warning See important comments concerningsection Navigation Output Filters(u-blox© official documentation). * \brief Receiver Navigation Status * \var UBXNAV_STATUS::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_STATUS::gpsFix * GPSfix Type, this value does not qualify a fix as * valid and within the limits * \see #UBXGPSFix to fill this field * \var UBXNAV_STATUS::flags * Navigation Status Flags * \see #UBXGPSFix to fill this field * \var UBXNAV_STATUS::fixStat * Fix Status Information * \see #UBXSBASSOLFlags to fill this field * \var UBXNAV_STATUS::flags2 * Further information about navigation output * \todo Structure to fill this field will be implemtened in future * - 0 -ACQUISITION [or when psm disabled] * - 1 - TRACKING * - 2 - POWER OPTIMIZED TRACKING * - 3 - INACTIVE * \var UBXNAV_STATUS::ttff * Time to first fix (millisecond time tag) * \var UBXNAV_STATUS::msss * Milliseconds since Startup / Reset */ /*! * \struct UBXSVINFOGlobalFlags * \brief Implements UBXNAV_SVINFO::globalFlags * \var UBXSVINFOGlobalFlags::chipGen:3 * Chip hardware generation * \see #UBXSVINFOChipGen to fill this field */ /*! * \struct UBXNAV_SVINFO * \note this message has variable payload of #UBXNAV_SVINFO_PART type * \brief Space Vehicle Information * * \var UBXNAV_SVINFO::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_SVINFO::numCh * Number of channels * \var UBXNAV_SVINFO::globalFlags * Bitmask * \var UBXNAV_SVINFO::reserved2 * Reserved */ /*! * \struct UBXSVINFOQuality * \brief Implements UBXNAV_SVINFO_PART::quality * \var UBXSVINFOQuality::qualityInd * Signal Quality indicator * \see #UBXSVINFOQualityId to fill this field */ /*! * \struct UBXNAV_SVINFO_PART * \brief Variable payload for #UBXNAV_SVINFO * * \var UBXNAV_SVINFO_PART::chn * Channel number, 255 for SVs not assigned to a channel * \var UBXNAV_SVINFO_PART::svid * Satellite ID, see Satellite numbering(u-blox© official documentation) for * assignment * \var UBXNAV_SVINFO_PART::flags * Bitmask * \see #UBXSVINFOFlags to fill this field * \var UBXNAV_SVINFO_PART::quality * Bitfield * \see #UBXSVINFOQuality to fill this field * \var UBXNAV_SVINFO_PART::cno * Carrier to Noise Ratio (Signal Strength) * \var UBXNAV_SVINFO_PART::elev * Elevation in integer degrees * \var UBXNAV_SVINFO_PART::azim * Azimuth in integer degrees * \var UBXNAV_SVINFO_PART::prRes * Pseudo range residual in centimetres */ /*! * \struct UBXNAV_TIMEGPS * This message reports the precise GPS time of the most recent navigation solution including * validity falgs and an accuracy estimate. * \brief GPS Time Solution * * \var UBXNAV_TIMEGPS::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_TIMEGPS::fTOW * Fractional part of iTOW * The precise GPS time of week in seconds is: * (UBXNAV_SOL::iTOW * 1e-3) + (UBXNAV_SOL::fTOW * 1e-9) * \var UBXNAV_TIMEGPS::week * GPS week number of the navigation epoch * \var UBXNAV_TIMEGPS::leapS * GPS leap seconds * \var UBXNAV_TIMEGPS::valid * Validity Flags * \see #UBXTIMEGPSValidityFlags to fill this field * \var UBXNAV_TIMEGPS::tAcc * Time Accuracy Estimate */ /*! * \struct UBXNAV_TIMEUTC * Note that during a leap second there may be more (or less) than 60 seconds in a * minute; see the description of leap seconds(u-blox© official documentation) for details. * \brief UTC Time Solution * \var UBXNAV_TIMEUTC::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_TIMEUTC::tAcc * Time accuracy estimate (UTC) * \var UBXNAV_TIMEUTC::nano * Fraction of second * \note Range -1e9 .. 1e9 (UTC) * \var UBXNAV_TIMEUTC::year * Year (UTC) * \note Range 1-65635 * \var UBXNAV_TIMEUTC::month * Month * \note Range 1-12 * \var UBXNAV_TIMEUTC::day * Day * \note Range 1-31 * \var UBXNAV_TIMEUTC::hour * Hour * \note Range 0-23 * \var UBXNAV_TIMEUTC::minute * Minute * \note Range 0-59 * \var UBXNAV_TIMEUTC::second * Second * \var valid * Validity Flags * \see #UBXTIMEUTCValidityFlags to fill this field */ /*! * \struct UBXNAV_VELECEF * See important comments concerning validity of velocity given in section * Navigation Output Filters(u-blox© official documentation). * \brief Velocity Solution in ECEF * \var UBXNAV_VELECEF::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_VELECEF::ecefVX * ECEF X velocity * \var UBXNAV_VELECEF::ecefVY * ECEF Y velocity * \var UBXNAV_VELECEF::ecefVZ * ECEF Z velocity * \var UBXNAV_VELECEF::sAcc * Speed accuracy estimate */ /*! * \struct UBXNAV_VELNED * See important comments concerning validity of velocity given in section * Navigation Output Filters(u-blox© official documentation). * \brief Velocity Solution in NED * * \var UBXNAV_VELNED::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXNAV_VELNED::velN * North velocity component * \var UBXNAV_VELNED::velE * East velocity component * \var UBXNAV_VELNED::velD * Down velocity component * \var UBXNAV_VELNED::speed * Speed (3-D) * \var UBXNAV_VELNED::gSpeed * Ground speed (2-D) * \var UBXNAV_VELNED::heading * Heading of motion 2-D * \var UBXNAV_VELNED::sAcc * Speed accuracy Estimate * \var UBXNAV_VELNED::cAcc * Course / Heading accuracy estimate */ /*! * \struct UBXRXM_ALM_POLL * \note No payload * \brief Poll GPS Constellation Almanac Data */ /*! * \struct UBXRXM_ALM_POLL_OPT * \brief Poll GPS Constellation Almanac Data for a SV * * \var UBXRXM_ALM_POLL_OPT::svid * SV ID for which the receiver shall return its Almanac Data * \note Valid Range: 1..32 */ /*! * \struct UBXRXM_ALM * - If the WEEK Value is 0, DWRD0 to DWRD7 are not sent as the Almanac is not available * for the given SV. * - DWORD0 to DWORD7 contain the 8 words following the Hand-Over Word ( HOW ) * from the GPS navigation message, either pages 1 to 24 of sub-frame 5 or pages 2 to 10 * of subframe 4. See IS-GPS-200 for a full description of the contents of the Almanac * pages. * - In DWORD0 to DWORD7, the parity bits have been removed, and the 24 bits of data are * located in Bits 0 to 23. Bits 24 to 31 shall be ignored. * - Example: Parameter e (Eccentricity) from Almanac Subframe 4/5, Word 3, Bits 69-84 * within the subframe can be found in DWRD0, Bits 15-0 whereas Bit 0 is the LSB. * \brief GPS Aiding Almanac Input/Output Message * * \deprecated This RMX messages marked as obsolete API use AID instead * \var UBXRXM_ALM::svid * SV ID for which this Almanac Data * \note Valid Range: 1 .. 32 or 51, 56, 63. * \var UBXRXM_ALM::week * Issue Date of Almanac (GPS week number) */ /*! * \struct UBXRXM_ALM_OPT * - If the WEEK Value is 0, DWRD0 to DWRD7 are not sent as the Almanac is not available * for the given SV. * - DWORD0 to DWORD7 contain the 8 words following the Hand-Over Word ( HOW ) * from the GPS navigation message, either pages 1 to 24 of sub-frame 5 or pages 2 to 10 * of subframe 4. See IS-GPS-200 for a full description of the contents of the Almanac * pages. * - In DWORD0 to DWORD7, the parity bits have been removed, and the 24 bits of data are * located in Bits 0 to 23. Bits 24 to 31 shall be ignored. * - Example: Parameter e (Eccentricity) from Almanac Subframe 4/5, Word 3, Bits 69-84 * within the subframe can be found in DWRD0, Bits 15-0 whereas Bit 0 is the LSB. * \brief GPS Aiding Almanac Input/Output Message * \deprecated This RMX messages marked as obsolete API use AID instead * \var UBXRXM_ALM_OPT::svid * SV ID for which this Almanac Data * \note Valid Range: 1 .. 32 or 51, 56, 63. * \var UBXRXM_ALM_OPT::week * Issue Date of Almanac (GPS week number) * \var UBXRXM_ALM_OPT::dwrd[8] * Almanac Words */ /*! * \struct UBXRXM_EPH_POLL * Poll GPS Constellation Data (Ephemeris) for all 32 SVs by sending this message to the * receiver without any payload. * \note No payload * \brief Poll GPS Constellation Ephemeris Data */ /*! * \struct UBXRXM_EPH_POLL_OPT * Poll GPS Constellation Data (Ephemeris) for an SV by sending this message to the receiver. * \brief Poll GPS Constellation Ephemeris Data for a SV * * \var UBXRXM_EPH_POLL_OPT::svid * SV ID for which this Almanac Data * \note Valid Range: 1 .. 32 or 51, 56, 63. */ /*! * \struct UBXRXM_EPH * - SF1D0 to SF3D7 is only sent if ephemeris is available for this SV. If not, the payload may * be reduced to 8 Bytes, or all bytes are set to zero, indicating that this SV Number does * not have valid ephemeris for the moment. * - SF1D0 to SF3D7 contain the 24 words following the Hand-Over Word ( HOW ) from the * GPS navigation message, subframes 1 to 3. See IS-GPS-200 for a full description of the * contents of the Subframes. * - In SF1D0 to SF3D7, the parity bits have been removed, and the 24 bits of data are * located in Bits 0 to 23. Bits 24 to 31 shall be ignored. * \brief GPS Aiding Ephemeris Input/Output Message * * \deprecated This RMX messages marked as obsolete API use AID instead * \var UBXRXM_EPH::svid * SV ID for which this Almanac Data * \var UBXRXM_EPH::how * Hand-Over Word of first Subframe. This is * required if data is sent to the receiver. * 0 indicates that no Ephemeris Data is following. */ /*! * \struct UBXRXM_EPH_OPT * - SF1D0 to SF3D7 is only sent if ephemeris is available for this SV. If not, the payload may * be reduced to 8 Bytes, or all bytes are set to zero, indicating that this SV Number does * not have valid ephemeris for the moment. * - SF1D0 to SF3D7 contain the 24 words following the Hand-Over Word ( HOW ) from the * GPS navigation message, subframes 1 to 3. See IS-GPS-200 for a full description of the * contents of the Subframes. * - In SF1D0 to SF3D7, the parity bits have been removed, and the 24 bits of data are * located in Bits 0 to 23. Bits 24 to 31 shall be ignored. * \brief GPS Aiding Ephemeris Input/Output Message * * \deprecated This RMX messages marked as obsolete API use AID instead * \var UBXRXM_EPH_OPT::svid * SV ID for which this Almanac Data * \var UBXRXM_EPH_OPT::how * \var UBXRXM_EPH_OPT::sf1d[8] * Subframe 1 Words 3..10 (SF1D0..SF1D7) * \var UBXRXM_EPH_OPT::sf2d[8] * Subframe 2 Words 3..10 (SF2D0..SF2D7) * \var UBXRXM_EPH_OPT::sf3d[8] * Subframe 3 Words 3..10 (SF3D0..SF3D7) */ /*! * \struct UBXRXM_PMREQ * Request of a Power Management related task of the receiver. * \brief Requests a Power Management task * \var UBXRXM_PMREQ::duration * Duration of the requested task * \note Set to 0 for infinite duration * \var UBXRXM_PMREQ::flags * Task flags * \see #UBXPMREQFlags to fill this field */ /*! * \struct UBXRXM_RAW * This message contains all information needed to be able to generate a RINEX observation * file. * This message outputs pseudorange, doppler and carrier phase measurements for GPS * satellites once signals have been synchronised. No other GNSS types are currently * supported. * \note This message has variable payload of #UBXRXM_RAW_PART type * \brief Raw Measurement Data * * \var UBXRXM_RAW::rcvTow * Measurement time of week in receiver local * time * \var UBXRXM_RAW::week * Measurement week number in receiver local * time * \var UBXRXM_RAW::numSV * Number of satellites following * \var UBXRXM_RAW::reserved1 * Reserved */ /*! * \struct UBXRXM_RAW_PART * \brief Variable payload for #UBXRXM_RAW * \var UBXRXM_RAW_PART::cpMes * Carrier phase measurement * \var UBXRXM_RAW_PART::prMes * Pseudorange measurement * \var UBXRXM_RAW_PART::doMes * Doppler measurement (positive sign for approaching satellites) * \var UBXRXM_RAW_PART::sv * Space Vehicle number * \var UBXRXM_RAW_PART::mesQI * Nav Measurements Quality Indicator: * \note * - >=4 - PR+DO OK * - >=5 - PR+DO+CP OK * - <6 - likely loss of carrier lock in previous interval * \var UBXRXM_RAW_PART::cno * Signal strength C/No * \var UBXRXM_RAW_PART::lli * Loss of lock indicator (RINEX definition) */ /*! * \struct UBXRXM_SFRB * The content of one single subframe buffer * For GPS satellites, the 10 dwrd values contain the parity checked subframe data for 10 * Words. Each dwrd has 24 Bits with valid data (Bits 23 to 0). The remaining 8 bits (31 to 24) * have an undefined value. The direction within the Word is that the higher order bits are * received from the SV first. Example: The Preamble can be found in dwrd[0], at bit position * 23 down to 16. For more details on the data format please refer to the ICD-GPS-200C * Interface document. * For SBAS satellites, the 250 Bit message block can be found in dwrd[0] to dwrd[6] for the * first 224 bits. The remaining 26 bits are in dwrd[7], whereas Bits 25 and 24 are the last two * data bits, and Bits 23 down to 0 are the parity bits. For more information on SBAS data * format, please refer to RTCA/DO-229C (MOPS), Appendix A. * No other GNSS types are currently supported. * \brief Subframe Buffer * \var UBXRXM_SFRB::chn * Channel Number * \var UBXRXM_SFRB::svid * ID of Satellite transmitting Subframe * \var UBXRXM_SFRB::dwrd[10] * Words of Data */ /*! * \struct UBXRXM_SVSI * Status of the receiver manager knowledge about GPS Orbit Validity * \note This message has variable payload of #UBXRXM_SVSI_PART type * \brief SV Status Info * * \var UBXRXM_SVSI::iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \var UBXRXM_SVSI::week * GPS week number of the navigation epoch * \var UBXRXM_SVSI::numVis * Number of visible satellites * \var UBXRXM_SVSI::numSV * Number of per-SV data blocks following */ /*! * \struct UBXSVSISVFlags * \brief Implements UBXRXM_SVSI_PART::svFlag * \var UBXSVSISVFlags::ura * Figure of Merit (URA) * \note Range 0..15 * \var UBXSVSISVFlags::healthy * SV healthy flag * \var UBXSVSISVFlags::ephVal * Ephemeris valid * \var UBXSVSISVFlags::almVal * Almanac valid * \var UBXSVSISVFlags::notAvail * SV not available */ /*! * \struct UBXSVSIAge * \brief Implements UBXRXM_SVSI_PART::age * \var UBXSVSIAge::almAge * Age of ALM in days offset by 4 * i.e. the reference time may be in the future: * ageOfAlm = (age & 0x0f) - 4 * \var UBXSVSIAge::ephAge * Age of EPH in hours offset by 4. * i.e. the reference time may be in the future: * ageOfEph = ((age & 0xf0) >> 4) - 4 */ /*! * \struct UBXRXM_SVSI_PART * \brief Variable payload for #UBXRXM_SVSI * \var UBXRXM_SVSI_PART::svid * Satellite ID * \var UBXRXM_SVSI_PART::svFlag * Information Flags * \see #UBXSVSISVFlags to fill this field * \var UBXRXM_SVSI_PART::azim * Azimuth * \var UBXRXM_SVSI_PART::elev * Elevation * \var UBXRXM_SVSI_PART::age * Age of Almanac and Ephemeris * \see UBXSVSIAge to fill this field */ /*! * \struct UBXTM2Flags * \brief Implements UBXTIM_TM2::flags * \var UBXTM2Flags::mode * Mode bitmask * \see #UBXTM2FlagsMode to fill this field * \var UBXTM2Flags::run * Run state * \see #UBXTM2FlagsRun to fill this field * \var UBXTM2Flags::newFallingEdge * New falling edge detected * \var UBXTM2Flags::timeBase * Time base * \see #UBXTM2FlagsTimeBase to fill this field * \var UBXTM2Flags::utc * UTC availability * \see #UBXTM2FlagsUTC to fill this field * \var UBXTM2Flags::time * Time is valid * \see #UBXTM2FlagsTime to fill this field * \var UBXTM2Flags::newRisingEdge * New rising edge detected */ /*! * \struct UBXTIM_TM2 * This message contains information for high precision time stamping / pulse counting. * The delay figures and timebase given in UBXCFG_TP5 are also applied to the time results * output in this message. * \brief Time mark data * * \var UBXTIM_TM2::ch * Marker channel 0 or 1 * \var UBXTIM_TM2::flags * Flags * \see #UBXTM2Flags to fill this field * \var UBXTIM_TM2::count * Rising edge counter * \var UBXTIM_TM2::wnR * week number of last rising edge * \var UBXTIM_TM2::wnF * week number of last falling edge * \var UBXTIM_TM2::towMsR * tow of rising edge * \var UBXTIM_TM2::towSubMsR * millisecond fraction of tow of rising edge in * nanoseconds * \var UBXTIM_TM2::towMsF * tow of falling edge * \var UBXTIM_TM2::towSubMsF * millisecond fraction of tow of falling edge in * nanoseconds * \var UBXTIM_TM2::accEst * Accuracy estimate */ /*! * \struct UBXTIM_TP * This message contains information for high precision timing. The recommended * configuration when using this message is to set both the measurement rate (CFG-RATE) * and the timepulse frequency (CFG-TP5) to 1Hz. For more information see section Time * pulse. * \brief Time Pulse Timedata * * \var UBXTIM_TP::towMS * Time pulse time of week according to time base * \var UBXTIM_TP::towSubMS * Submillisecond part of TOWMS * \var UBXTIM_TP::qErr * Quantization error of time pulse. * \var UBXTIM_TP::week * Time pulse week number according to time * base * \var UBXTIM_TP::flags * \see UBXTPFlags to fill this field * \var UBXTIM_TP::reserved1 * Reserved */ /*! * \struct UBXVRFYFlags * \brief Implements UBXTIM_VRFY::flags * * \var UBXVRFYFlags::src * Aiding time source * \see #UBXVRFYFlagsSource to fill this field */ /*! * \struct UBXTIM_VRFY * \brief Sourced Time Verification * * \var UBXTIM_VRFY::itow * Integer millisecond tow received by source * \var UBXTIM_VRFY::frac * Sub-millisecond part of tow * \var UBXTIM_VRFY::deltaMs * Integer milliseconds of delta time (current time minus sourced time) * \var UBXTIM_VRFY::deltaNs * Sub-millisecond part of delta time * \var UBXTIM_VRFY::wno * Week number * \var UBXTIM_VRFY::flags * Information flags * \see #UBXVRFYFlags to fill this field * \var UBXTIM_VRFY::reserved1 * Reserved */ /*! \addtogroup Types * @{ */ /*! * \typedef UBXU1_t * Unsigned char * \note Size: 1 byte\n * Range: 0..255 * * \typedef UBXI1_t * Signed char * \note Size: 1 byte\n * Range: -128..127 * * \typedef UBXX1_t * Bitfield * \note Size: 1 byte\n * Range: 0b00000000..0b11111111 * * \typedef UBXU2_t * Unsigned short * \note Size: 2 bytes\n * Range: 0..65535 * * \typedef UBXI2_t * Signed short * \note Size: 2 bytes\n * Range: -32768..32767 * * \typedef UBXX2_t * Bitfield * \note Size: 2 bytes\n * Range: 0b0000000000000000..0b1111111111111111 * * \typedef UBXU4_t * Unsigned Long * \note Size: 4 bytes\n * Range: 0..4294967295 * * \typedef UBXI4_t * Unsigned Long * \note Size: 4 bytes\n * Range: -2147483648..2147483647 * * \typedef UBXX4_t * Bitfield * \note Size: 4 bytes\n * Range: 0b00000000000000000000000000000000..0b11111111111111111111111111111111 * * \typedef UBXR4_t * IEEE 754 Single Precision * \note Size: 4 bytes\n * Range: -1*2^+127..2^+127 * * \typedef UBXR8_t * IEEE 754 Double Precision * \note Size: 8 bytes\n * Range: -1*2^+1023..2^+1023 * * \typedef UBXCH_t; * ASCII / ISO 8859.1 Encoding * \note Size: 1 byte\n */ /*! @} */ /*! \addtogroup Functions * @{ */ /*! * \fn struct UBXMsgBuffer getAID_ALPSRV(struct UBXMsg* clientMgs, const struct UBXAlpFileInfo *fileInfo) * \brief Getter for #UBXAID_ALPSRV message * \param clientMgs * u-blox module original request * \param fileInfo * full ALP file data * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_MSG_POLL(enum UBXMessageClass msgClass, enum UBXMessageId msgId) * This function construct full buffer for #UBXCFG_MSG_POLL message. * \brief Getter for #UBXCFG_MSG_POLL * \param msgClass * Message Class * \see #UBXMessageClass to fill this field * \param msgId * Message Id * \see #UBXMessageId to fill this field * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_MSG_RATE(enum UBXMessageClass msgClass, enum UBXMessageId msgId, UBXU1_t rate) * This function construct full buffer for #UBXCFG_MSG_RATE message. * \brief Getter for #UBXCFG_MSG_RATE * \param msgClass * Message Class * \see #UBXMessageClass to fill this field * \param msgId * Message Id * \see #UBXMessageId to fill this field * \param rate * Send rate on current Port * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_MSG_RATES(enum UBXMessageClass msgClass, enum UBXMessageId msgId, UBXU1_t rate[]) * This function construct full buffer for #UBXCFG_MSG_RATES message. * \brief Getter for #UBXCFG_MSG_RATES * \param msgClass * Message Class * \see #UBXMessageClass to fill this field * \param msgId * Message Id * \see #UBXMessageId to fill this field * \param rate * Send rate on I/O Port (6 Ports) * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_RST(int mode, UBXU2_t mask) * This function construct full buffer for #UBXCFG_RST message. * \brief Getter for #UBXCFG_RST * \param mode * Mode bitmask * \see UBXResetMode to fill this field * \param mask * BBR Sections to clear. * \see #UBXBBRMask to fill this field manually * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_RST_OPT(int mode, enum UBXBBRSpecialSets special) * This function construct full buffer for #UBXCFG_RST_OPT message. * \brief Getter for #UBXCFG_RST_OPT * \param mode * Mode bitmask * \see UBXResetMode to fill this field * \param special * BBR Sections to clear. * \see #UBXBBRSpecialSets for special sets * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_TP5_POLL_OPT(enum UBXCFGTimepulses tpIdx) * This function construct full buffer for #UBXCFG_TP5_POLL_OPT message. * \brief Getter for #UBXCFG_TP5_POLL_OPT * \param tpIdx * Time pulse selection * \see #UBXCFGTimepulses to fill this field * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_TP5(enum UBXCFGTimepulses tpIdx, int16_t antCableDelay, int16_t rfGroupDelay, u_int32_t freqPeriod, u_int32_t freqPeriodLock, u_int32_t pulseLenRatio, u_int32_t pulseLenRatioLock, int32_t userConfigDelay, int32_t flags) * This function construct full buffer for #UBXCFG_TP5 message. * \brief Getter for #UBXCFG_TP5 * \param tpIdx * Time pulse selection * \see #UBXCFGTimepulses to fill this field * \param antCableDelay * Antenna cable delay * \param rfGroupDelay * RF group delay * \param freqPeriod * Frequency or period time * \note Depending on setting of bit 'isFreq' * \param freqPeriodLock * Frequency or period time when locked to GPS * time * \note Only used if 'lockedOtherSet' is set * \param pulseLenRatio * Pulse length or duty cycle * \note Depending on 'isLength' * \param pulseLenRatioLock * Pulse length or duty cycle when locked to GPS * time * \note only used if 'lockedOtherSet' is set * \param userConfigDelay * User configurable time pulse delay * \param flags * Configuration flags * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getAID_ALM_POLL * This function construct full buffer for #UBXAID_ALM_POLL message. * \brief Getter for #UBXAID_ALM_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getAID_ALM_POLL_OPT(UBXU1_t svid) * This function construct full buffer for #UBXAID_ALM_POLL_OPT message. * \brief Getter for #UBXAID_ALM_POLL_OPT * \param svid * SV ID for which the receiver shall return its * Almanac Data (Valid Range: 1 .. 32 or 51, 56, * 63). * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getAID_ALM(UBXU4_t svid, UBXU4_t week) * This function construct full buffer for #UBXAID_ALM message. * \brief Getter for #UBXAID_ALM * \param svid * SV ID for which the receiver shall return its * Almanac Data (Valid Range: 1 .. 32 or 51, 56, * 63). * \param week * Issue Date of Almanac (GPS week number) * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getAID_ALM_OPT(UBXU4_t svid, UBXU4_t week, UBXU4_t dwrd[8]) * This function construct full buffer for #UBXAID_ALM_OPT message. * \brief Getter for #UBXAID_ALM_OPT * \param svid * SV ID for which the receiver shall return its * Almanac Data (Valid Range: 1 .. 32 or 51, 56, * 63). * \param week * Issue Date of Almanac (GPS week number) * \param dwrd * Almanac Words * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getAID_ALP_POLL(UBXU4_t predTow, UBXU4_t predDur, UBXI4_t age, UBXU2_t predWno, UBXU2_t almWno, UBXU1_t svs) * This function construct full buffer for #UBXAID_ALP_POLL message. * \brief Getter for #UBXAID_ALP_POLL * \param predTow * Prediction start time of week * \param predDur * Prediction duration from start of first data set to * end of last data set * \param age * Current age of ALP data * \param predWno * Prediction start week number * \param almWno * Truncated week number of reference almanac * \param svs * Number of satellite data sets contained in the * ALP UBXAID_ALP_POLL::data * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getAID_ALP_END * This function construct full buffer for #UBXAID_ALP_END message. * \brief Getter for #UBXAID_ALP_END * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getAID_ALP(UBXU2_t* chunk, int chunkSize) * This function construct full buffer for #UBXAID_ALP message. * \brief Getter for #UBXAID_ALP * \param chunk * ALP data chunk * \param chunkSize * size of chunk * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getAID_AOP_POLL * This function construct full buffer for #UBXAID_AOP_POLL message. * \brief Getter for #UBXAID_AOP_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getAID_AOP_POLL_OPT(UBXU1_t svid) * This function construct full buffer for #UBXAID_AOP_POLL_OPT message. * \brief Getter for #UBXAID_AOP_POLL_OPT * \param svid * GPS SV id for which the data is requested (valid range: 1..32). * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getAID_AOP(UBXU1_t svid, UBXU1_t data[59]) * This function construct full buffer for #UBXAID_AOP message. * \brief Getter for #UBXAID_AOP * \param svid * GPS SV id * \param data * AssistNow Autonomous data * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \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]) * This function construct full buffer for #UBXAID_AOP_OPT message. * \brief Getter for #UBXAID_AOP_OPT * \param svid * GPS SV id * \param data * AssistNow Autonomous data * \param optional0 * Optional data chunk 1/3 * \param optional1 * Optional data chunk 2/3 * \param optional2 * Optional data chunk 3/3 * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getAID_DATA_POLL * This function construct full buffer for #UBXAID_DATA_POLL message. * \brief Getter for #UBXAID_DATA_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getAID_EPH_POLL * This function construct full buffer for #UBXAID_EPH_POLL message. * \brief Getter for #UBXAID_EPH_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getAID_EPH_POLL_OPT(UBXU1_t svid) * This function construct full buffer for #UBXAID_EPH_POLL_OPT message. * \brief Getter for #UBXAID_EPH_POLL_OPT * \param svid * SV ID for which the receiver shall return its * Ephemeris Data (Valid Range: 1 .. 32). * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getAID_EPH(UBXU4_t svid, UBXU4_t how) * This function construct full buffer for #UBXAID_EPH message. * \brief Getter for #UBXAID_EPH * \param svid * SV ID for which this ephemeris data is * \note Range: 1..32 * \param how * Hand-Over Word of first Subframe. This is * required if data is sent to the receiver. * 0 indicates that no Ephemeris Data is following. * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getAID_EPH_OPT(UBXU4_t svid, UBXU4_t how, UBXU4_t sf1d[8], UBXU4_t sf2d[8], UBXU4_t sf3d[8]) * This function construct full buffer for #UBXAID_EPH_OPT message. * \brief Getter for #UBXAID_EPH_OPT * \param svid * SV ID for which this ephemeris data is * \note Range: 1..32 * \param how * Hand-Over Word of first Subframe. This is * required if data is sent to the receiver. * 0 indicates that no Ephemeris Data is following. * \param sf1d * Subframe 1 Words 3..10 (SF1D0..SF1D7) * \param sf2d * Subframe 2 Words 3..10 (SF1D0..SF1D7) * \param sf3d * Subframe 3 Words 3..10 (SF1D0..SF1D7) * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getAID_HUI_POLL * This function construct full buffer for #UBXAID_HUI_POLL message. * \brief Getter for #UBXAID_HUI_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getAID_HUI(UBXI4_t health, UBXR4_t utcA0, UBXR4_t utcA1, UBXI4_t utcTOW, UBXI2_t utcWNT, UBXI2_t utcLS, UBXI2_t utcWNF, UBXI2_t utcDN, UBXI2_t utcLSF, UBXI2_t utcSpare, UBXR4_t klobA0, UBXR4_t klobA1, UBXR4_t klobA2, UBXR4_t klobA3, UBXR4_t klobB0, UBXR4_t klobB1, UBXR4_t klobB2, UBXR4_t klobB3, UBXX2_t flags) * This function construct full buffer for #UBXAID_HUI message. * \brief Getter for #UBXAID_HUI * \param health * Bitmask, every bit represenst a GPS SV (1-32). If * the bit is set the SV is healthy. * \param utcA0 * UTC - parameter A0 * \param utcA1 * UTC - parameter A1 * \param utcTOW * UTC - reference time of week * \param utcWNT * UTC - reference week number * \param utcLS * UTC - time difference due to leap seconds before event * \param utcWNF * UTC - week number when next leap second event occurs * \param utcDN * UTC - day of week when next leap second event occurs * \param utcLSF * UTC - time difference due to leap seconds after event * \param utcSpare * UTC - Spare to ensure structure is a multiple of 4 bytes * \param klobA0 * Klobuchar - alpha 0 * \param klobA1 * Klobuchar - alpha 1 * \param klobA2 * Klobuchar - alpha 2 * \param klobA3 * Klobuchar - alpha 3 * \param klobB0 * Klobuchar - beta 0 * \param klobB1 * Klobuchar - beta 1 * \param klobB2 * Klobuchar - beta 2 * \param klobB3 * Klobuchar - beta 3 * \param flags * Flags. * \see #UBXHUIFlags to fill this field * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getAID_INI_POLL * This function construct full buffer for #UBXAID_INI_POLL message. * \brief Getter for #UBXAID_INI_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getAID_INI(UBXI1_t ecefXOrLat, UBXI1_t ecefYOrLat, UBXI1_t ecefZOrLat, UBXU1_t posAcc, UBXI1_t tmCfg, UBXU2_t wnoOrDate, UBXU4_t towOrDate, UBXI4_t towNs, UBXU4_t tAccMS, UBXU4_t tAccNS, UBXI4_t clkDOrFreq, UBXU4_t clkDAccOrFreqAcc, UBXX4_t flags) * This function construct full buffer for #UBXAID_INI message. * \brief Getter for #UBXAID_INI * \param ecefXOrLat * WGS84 ECEF X coordinate or latitude * \param ecefYOrLat * WGS84 ECEF Y coordinate or latitude * \param ecefZOrLat * WGS84 ECEF Z coordinate or latitude * \param posAcc * Position accuracy * \param tmCfg * Time mark configuration * \see #UBXINItmCfg to fill this field * \param wnoOrDate * Actual week number or yearSince2000/Month (YYMM), depending on UBXAID_INI::flags * \param towOrDate * Actual time of week or * DayOfMonth/Hour/Minute/Second * (DDHHMMSS), depending on UBXAID_INI::flags * \param towNs * Fractional part of time of week * \param tAccMS * Milliseconds part of time accuracy * \param tAccNS * Nanoseconds part of time accuracy * \param clkDOrFreq * Clock drift or frequency, depending on UBXAID_INI::flags * \param clkDAccOrFreqAcc * Accuracy of clock drift or frequency, depending on UBXAID_INI::flags * \param flags * Bitmask with the flags * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_ANT(UBXX2_t flags, struct UBXANTPins pins) * This function construct full buffer for #UBXCFG_ANT message. * \brief Getter for #UBXCFG_ANT * \param flags * Antenna flag mask * \see #UBXANTFlags to fill this field * \param pins * Antenna Pin Configuration * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_ANT_POLL * This function construct full buffer for #UBXCFG_ANT_POLL message. * \brief Getter for #UBXCFG_ANT_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_CFG(UBXX4_t clearMask, UBXX4_t saveMask, UBXX4_t loadMask) * This function construct full buffer for #UBXCFG_CFG message. * \brief Getter for #UBXCFG_CFG * \param clearMask * Mask with configuration sub-sections to Clear * \note Load Default Configurations to Permanent * Configurations in non-volatile memory * \see #UBXCFGMask to fill this field * \param saveMask * Mask with configuration sub-section to Save * \note Save Current Configuration to Non-volatile * Memory * \see #UBXCFGMask to fill this field * \param loadMask * Mask with configuration sub-sections to Load * \note Load Permanent Configurations from * Non-volatile Memory to Current * Configurations * \see #UBXCFGMask to fill this field * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_CFG_OPT(UBXX4_t clearMask, UBXX4_t saveMask, UBXX4_t loadMask, UBXX1_t deviceMask) * This function construct full buffer for #UBXCFG_CFG_OPT message. * \brief Getter for #UBXCFG_CFG_OPT * \param clearMask * Mask with configuration sub-sections to Clear * \note Load Default Configurations to Permanent * Configurations in non-volatile memory * \see #UBXCFGMask to fill this field * \param saveMask * Mask with configuration sub-section to Save * \note Save Current Configuration to Non-volatile * Memory * \see #UBXCFGMask to fill this field * \param loadMask * Mask with configuration sub-sections to Load * \note Load Permanent Configurations from * Non-volatile Memory to Current * Configurations * \see #UBXCFGMask to fill this field * \param deviceMask * Mask which selects the devices for this * command * \see #UBXCFGDeviceMask to fill this field * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \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) * This function construct full buffer for #UBXCFG_DAT_IN message. * \brief Getter for #UBXCFG_DAT_IN * \param majA * Semi-major Axis * \note accepted range = 6,300,000.0 to 6,500,000.0 metres * \param flat * 1.0 / Flattening * \note accepted range is 0.0 to 500.0 * \param dX * X Axis shift at the origin * \note accepted range is +/-5000.0 metres * \param dY * Y Axis shift at the origin * \note accepted range is +/-5000.0 metres * \param dZ * Z Axis shift at the origin * \note accepted range is +/-5000.0 metres * \param rotX * Rotation about the X Axis * \note accepted range is +/-20.0 milli-arc seconds * \param rotY * Rotation about the Y Axis * \note accepted range is +/-20.0 milli-arc seconds * \param rotZ * Rotation about the Z Axis * \note accepted range is +/-20.0 milli-arc seconds * \param scale * Scale change * \note accepted range is 0.0 to 50.0 parts per million * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_DAT_POLL * This function construct full buffer for #UBXCFG_DAT_POLL message. * \brief Getter for #UBXCFG_DAT_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_GNSS_POLL * This function construct full buffer for #UBXCFG_GNSS_POLL message. * \brief Getter for #UBXCFG_GNSS_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_GNSS(UBXU1_t msgVer, UBXU1_t numTrkChHw, UBXU1_t numTrkChUse, UBXU1_t numConfigBlocks, struct UBXCFG_GNSS_PART* gnssPart) * This function construct full buffer for #UBXCFG_GNSS message. * \brief Getter for #UBXCFG_GNSS * \param msgVer * Message version * \param numTrkChHw * Number of tracking channels available in * hardware * \note Read only * \param numTrkChUse * Number of tracking channels to use * \note Should be <= UBXCFG_GNSS::numTrkChHw * \param numConfigBlocks * Number of configuration blocks following * \param gnssPart * Variable payload part * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_INF_POLL(UBXU1_t protocolId) * This function construct full buffer for #UBXCFG_INF_POLL message. * \brief Getter for #UBXCFG_INF_POLL * \param protocolId * Protocol Identifier, identifying the output * protocol for this Poll Request. * \see #UBXCFGProtocolIds to fill this field * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_INF(struct UBXCFG_INF_PART* infPart, int infPartCount) * This function construct full buffer for #UBXCFG_INF message. * \brief Getter for #UBXCFG_INF * \param infPart * Variable payload * \param infPartCount * Variable payload count * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_ITFM_POLL * This function construct full buffer for #UBXCFG_ITFM_POLL message. * \brief Getter for #UBXCFG_ITFM_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_ITFM(struct UBXITFMConfig config, struct UBXITFMConfig2 config2) * This function construct full buffer for #UBXCFG_ITFM message. * \brief Getter for #UBXCFG_ITFM * \param config * Interference config word * \see #UBXITFMConfig to fill this field * \param config2 * Extra settings for jamming/interference monitor * \see #UBXITFMConfig2 to fill this field * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_LOGFILTER_POLL * This function construct full buffer for #UBXCFG_LOGFILTER_POLL message. * \brief Getter for #UBXCFG_LOGFILTER_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_LOGFILTER(UBXU1_t version, UBXX1_t flags, UBXU2_t minIterval, UBXU2_t timeThreshold, UBXU2_t speedThreshold, UBXU4_t positionThreshold) * This function construct full buffer for #UBXCFG_LOGFILTER message. * \brief Getter for #UBXCFG_LOGFILTER * \param version * The version of this message * \note Set to 1 * \param flags * Flags * \see #UBXLOGFILTERFlags to fill this field * \param minIterval * Minimum time interval between logged * positions * \note This is only applied in * combination with the speed and/or * position thresholds * \note 0 - not set * \param timeThreshold * If the time difference is greater than the * threshold then the position is logged * \note 0 - not set * \param speedThreshold * If the current speed is greater than the * threshold then the position is logged * \note 0 - not set * \note UBXCFG_LOGFILTER::minInterval also applies * \param positionThreshold * If the 3D position difference is greater than the * threshold then the position is logged * \note 0 - not set * \note minInterval also applies * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_NAV5_POLL * This function construct full buffer for #UBXCFG_NAV5_POLL message. * \brief Getter for #UBXCFG_NAV5_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_NAV5(UBXX2_t mask, enum UBXNAV5Model dynModel, enum UBXNAV5FixMode fixMode, UBXI4_t fixedAlt, UBXU4_t fixedAltVar, UBXI1_t minElev, UBXU2_t pDop, UBXU2_t tDop, UBXU2_t pAcc, UBXU2_t tAcc, UBXU1_t staticHoldThresh, UBXU1_t dgpsTimeOut, UBXU1_t cnoThreshNumSVs, UBXU1_t cnoThresh) * This function construct full buffer for #UBXCFG_NAV5 message. * \brief Getter for #UBXCFG_NAV5 * \param mask * Parameters Bitmask. Only the masked parameters will be applied. * \see #UBXNAV5Mask to fill this field * \param dynModel * Dynamic Platform model * \see #UBXNAV5Model to fill this field * \param fixMode * Position Fixing Mode * \see #UBXNAV5FixMode to fill this field * \param fixedAlt * Fixed altitude (mean sea level) for 2D fix mode * \param fixedAltVar * Fixed altitude variance for 2D mode * \param minElev * Minimum Elevation for a GNSS satellite to be * used in NAV * \param pDop * Position DOP Mask to use * \param tDop * Time DOP Mask to use * \param pAcc * Position Accuracy Mask * \param tAcc * Time Accuracy Mask * \param staticHoldThresh * Static hold threshold * \param dgpsTimeOut * DGPS timeout * \param cnoThreshNumSVs * Number of satellites required to have C/N0 * above cnoThresh for a fix to be attempted * \param cnoThresh * C/N0 threshold for deciding whether to attempt * a fix * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_NAVX5_POLL * This function construct full buffer for #UBXCFG_NAVX5_POLL message. * \brief Getter for #UBXCFG_NAVX5_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_NAVX5(UBXU2_t version, UBXX2_t mask1, UBXU1_t minSVs, UBXU1_t maxSVs, UBXU1_t minCNO, UBXU1_t iniFix3D, UBXU2_t wknRollover, UBXU1_t usePPP, UBXU1_t aopCFG, UBXU1_t aopOrbMaxErr) * This function construct full buffer for #UBXCFG_NAVX5 message. * \brief Getter for #UBXCFG_NAVX5 * \param version * Message version * \note 0 for this version * \param mask1 * First Parameters Bitmask. Only the flagged * parameters will be applied, unused bits must be * set to 0 * \see #UBXNAVX5Mask to fill this field * \param minSVs * Minimum number of satellites for navigation * \param maxSVs * Maximum number of satellites for navigation * \param minCNO * Minimum satellite signal level for navigation * \param iniFix3D * Initial Fix must be 3D flag * \note * - 0 - false * - 1 - true * \param wknRollover * GPS week rollover number; GPS week numbers * will be set correctly from this week up to 1024 * weeks after this week. * \note 0 reverts to firmware default. * \param usePPP * Use Precise Point Positioning flag * \note Only supported on certain product variants * \note * - 0 - false * - 1 - true * \param aopCFG * AssistNow Autonomous configuration * /note * - 0 - disabled * - 1 - enabled * \param aopOrbMaxErr * maximum acceptable (modelled) AssistNow * Autonomous orbit error * \note valid range = 5..1000, * \note 0 - reset to firmware default * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_NMEA_POLL * This function construct full buffer for #UBXCFG_NMEA_POLL message. * \brief Getter for #UBXCFG_NMEA_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_NMEA(UBXX1_t filter, UBXU1_t nmeaVersion, UBXU1_t numSV, UBXX1_t flags, UBXX4_t gnssToFilter, enum UBXNMEASVNumbering svNumbering, enum UBXNMEATalkerIds mainTalkerId, enum UBXNMEAGSVTalkerIds gsvTalkerId) * This function construct full buffer for #UBXCFG_NMEA message. * \brief Getter for #UBXCFG_NMEA * \param filter * Filter flags * \see #UBXNMEAFilter to fill this field * \param nmeaVersion * NMEA version * \see #UBXNMEAVersion to fill this field * \param numSV * Maximum Number of SVs to report in NMEA * protocol.\n * This does not affect the receiver's operation. * It only limits the number of SVs reported in * NMEA mode (this might be needed with older * mapping applications which only support 8- or * 12-channel receivers). * \param flags * Flags * \see #UBXNMEAFlags to fill this field * \param gnssToFilter * Filters out satellites based on their GNSS. If a * bitfield is enabled, the corresponding satellites * will be not output. * \see #UBXNMEAGNSSToFilter to fill this field * \param svNumbering * Configures the display of satellites that do not * have an NMEA-defined value. * \note This does not apply to satellites with an * unknown ID. * \param mainTalkerId * By default the main Talker ID (i.e. the Talker ID * used for all messages other than GSV) is * determined by the GNSS assignment of the * receiver's channels (see #UBXCFG_GNSS). * This field enables the main Talker ID to be * overridden. * \param gsvTalkerId * By default the Talker ID for GSV messages is * GNSS specific (as defined by NMEA). * This field enables the GSV Talker ID to be * overridden. * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_NVS(UBXX4_t clearMask, UBXX4_t saveMask, UBXX4_t loadMask, UBXX1_t deviceMask) * This function construct full buffer for #UBXCFG_NVS message. * \brief Getter for #UBXCFG_NVS * \param clearMask * Mask of data to be cleared * \see #UBXCFGMask CFG_NVS section to fill this field * \param saveMask * Mask of data to be saved * \see #UBXCFGMask CFG_NVS section to fill this field * \param loadMask * Mask of data to be loaded, * \see #UBXCFGMask CFG_NVS section to fill this field * \param deviceMask * Mask of devices to consider * \note Default: all devices * \see #UBXCFGDeviceMask to fill this field * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_PM2_POLL * This function construct full buffer for #UBXCFG_PM2_POLL message. * \brief Getter for #UBXCFG_PM2_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_PM2(struct UBXCFG_PM2Flags flags, UBXU4_t updatePeriod, UBXU4_t searchPeriod, UBXU4_t gridOffset, UBXU2_t onTime, UBXU2_t minAcqTime) * This function construct full buffer for #UBXCFG_PM2 message. * \brief Getter for #UBXCFG_PM2 * \param flags * PSM configuration flags * \note See UBXCFG_PM2Flags to fill this field * \param updatePeriod * Position update period. * \note If set to 0, the receiver will never retry a fix * \param searchPeriod * Acquisition retry period * \note If set to 0, the receiver will never retry a startup * \param gridOffset * Grid offset relative to GPS start of week * \param onTime * On time after first successful fix * \param minAcqTime * Minimal search time * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_PRT_POLL * This function construct full buffer for #UBXCFG_PRT_POLL message. * \brief Getter for #UBXCFG_PRT_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_PRT_POLL_OPT(UBXU1_t portId) * This function construct full buffer for #UBXCFG_PRT_POLL_OPT message. * \brief Getter for #UBXCFG_PRT_POLL_OPT * \param portId * Port Identifier Number * \see #UBXCFG_PRT for valid values * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_PRT_UART * This function construct full buffer for #UBXCFG_PRT_UART message. * \brief Getter for #UBXCFG_PRT_UART * \todo Getter is not complete * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_PRT_USB * This function construct full buffer for #UBXCFG_PRT_USB message. * \brief Getter for #UBXCFG_PRT_USB * \todo Getter is not complete * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_PRT_SPI * This function construct full buffer for #UBXCFG_PRT_SPI message. * \brief Getter for #UBXCFG_PRT_SPI * \todo Getter is not complete * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_PRT_DDC * This function construct full buffer for #UBXCFG_PRT_DDC message. * \brief Getter for #UBXCFG_PRT_DDC * \todo Getter is not complete * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_RATE_POLL * This function construct full buffer for #UBXCFG_RATE_POLL message. * \brief Getter for #UBXCFG_RATE_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_RATE(UBXU2_t measRate, UBXU2_t navRate, UBXU2_t timeRef) * This function construct full buffer for #UBXCFG_RATE message. * \brief Getter for #UBXCFG_RATE * \param measRate * Measurement Rate, GPS measurements are * taken every measRate milliseconds * \param navRate * Navigation Rate, in number of measurement * cycles. * \note This parameter cannot be changed, and * must be set to 1. * \param timeRef * Alignment to reference time. * \note * - 0 - UTC time * - 1 - GPS time * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_RINV(UBXX1_t flags, UBXU1_t* data, int dataSize) * This function construct full buffer for #UBXCFG_RINV message. * \brief Getter for #UBXCFG_RINV * \param flags * Flags * \see #UBXRINVFlags to fill this field * \param data * Pointer to variable payload data * \param dataSize * Data size * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_RINV_POLL * This function construct full buffer for #UBXCFG_RINV_POLL message. * \brief Getter for #UBXCFG_RINV_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_RXM(UBXU1_t lpMode) * This function construct full buffer for #UBXCFG_RXM message. * \brief Getter for #UBXCFG_RXM * \param lpMode * Low power mode * \see #UBXRXMLowPowerModes to fill this field * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_RXM_POLL * This function construct full buffer for #UBXCFG_RXM_POLL message. * \brief Getter for #UBXCFG_RXM_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_SBAS(UBXX1_t mode, UBXX1_t usage, UBXU1_t maxSBAS, UBXX1_t scanmode2, UBXX4_t scanmode1) * This function construct full buffer for #UBXCFG_SBAS message. * \brief Getter for #UBXCFG_SBAS * \param mode * SBAS Mode * \see #UBXSBASModes to fill this field * \param usage * SBAS Usage * \see #UBXSBASUsage to fill this field * \param maxSBAS * Maximum Number of SBAS prioritized tracking * channels to use * \note valid range: 0 - 3 * \deprecated obsolete and superseeded by #UBXCFG_GNSS in protocol * versions 14.00+. * \param scanmode2 * Continuation of scanmode bitmask below * \see #UBXSBASScanModes2 to fill this field * \param scanmode1 * Which SBAS PRN numbers to search for (Bitmask) * If all Bits are set to zero, auto-scan (i.e. all valid * PRNs) are searched. * Every bit corresponds to a PRN number * \see #UBXSBASScanModes1 to fill this field * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_SBAS_POLL * This function construct full buffer for #UBXCFG_SBAS_POLL message. * \brief Getter for #UBXCFG_SBAS_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_TP5_POLL * This function construct full buffer for #UBXCFG_TP5_POLL message. * \brief Getter for #UBXCFG_TP5_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getCFG_USB_POLL * This function construct full buffer for #UBXCFG_USB_POLL message. * \brief Getter for #UBXCFG_USB_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getCFG_USB(UBXU2_t vendorId, UBXU2_t productId, UBXU2_t powerConsumption, UBXX2_t flags, UBXCH_t* vendorString, UBXCH_t* productString, UBXCH_t* serialNumber) * This function construct full buffer for #UBXCFG_USB message. * \brief Getter for #UBXCFG_USB * \param vendorId * Vendor ID. This field shall only be set to * registered Vendor IDs. * \note Changing this field * requires special Host drivers. * \param productId * Product ID. * \note Changing this field requires special * Host drivers. * \param powerConsumption * Power consumed by the device * \param flags * Various configuration flags * \see #UBXUSBFlags to fill this field * \param vendorString * String containing the vendor name. 32 ASCII bytes * including 0-termination. * \param productString * String containing the product name. 32 ASCI bytes * including 0-termination. * \param serialNumber * String containing the serial number. 32 ASCII * bytes including 0-termination. * \note Changing the String fields requires special Host * drivers. * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getLOG_CREATE(UBXU1_t version, UBXX1_t logCfg, UBXU1_t logSize, UBXU4_t userDefinedSize) * This function construct full buffer for #UBXLOG_CREATE message. * \brief Getter for #UBXLOG_CREATE * \param logCfg * Config flags * \see #UBXLOGCfg to fill this field * \param logSize * Indicates the size of the log * \see #UBXLOGSize to fill this field * \param userDefinedSize * Sets the maximum amount of space in the * filestore that can be used by the logging task * \note This field is only applicable if logSize is set to user defined. * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getLOG_ERASE * This function construct full buffer for #UBXLOG_ERASE message. * \brief Getter for #UBXLOG_ERASE * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getLOG_FINDTIME_IN(UBXU2_t year, UBXU1_t month, UBXU1_t day, UBXU1_t hour, UBXU1_t minute, UBXU1_t second) * This function construct full buffer for #UBXLOG_FINDTIME_IN message. * \brief Getter for #UBXLOG_FINDTIME_IN * \param year * Year of UTC time * \note Range 1-65635 * \param month * Month of UTC time * \note Range 1-12 * \param day * Day of UTC time * \note Range 1-31 * \param hour * Hour of UTC time * \note Range 0-23 * \param minute * Minute of UTC time * \note Range 0-59 * \param second * Second of UTC time * \note Range 0-60 - looks like mistake in official documentation * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getLOG_INFO_POLL * This function construct full buffer for #UBXLOG_INFO_POLL message. * \brief Getter for #UBXLOG_INFO_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getLOG_RETRIEVE(UBXU4_t startNumber, UBXU4_t entryCount, UBXU1_t version) * This function construct full buffer for #UBXLOG_RETRIEVE message. * \brief Getter for #UBXLOG_RETRIEVE * \param startNumber * Index of first entry to be transferred * \param entryCount * Number of log entries to transfer. The maximum * is 256 * \param version * The version of this message * \note Set to 0 * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getLOG_STRING * This function construct full buffer for #UBXLOG_STRING message. * \brief Getter for #UBXLOG_STRING * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getMON_VER_POLL * This function construct full buffer for #UBXMON_VER_POLL message. * \brief Getter for #UBXMON_VER_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getRXM_ALM_POLL * This function construct full buffer for #UBXRXM_ALM_POLL message. * \brief Getter for #UBXRXM_ALM_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getRXM_ALM_POLL_OPT(UBXU1_t svid) * This function construct full buffer for #UBXRXM_ALM_POLL_OPT message. * \brief Getter for #UBXRXM_ALM_POLL_OPT * \param svid * SV ID for which the receiver shall return its Almanac Data * \note Valid Range: 1..32 * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn getRXM_EPH_POLL * This function construct full buffer for #UBXRXM_EPH_POLL message. * \brief Getter for #UBXRXM_EPH_POLL * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getRXM_EPH_POLL_OPT(UBXU1_t svid) * This function construct full buffer for #UBXRXM_EPH_POLL_OPT message. * \brief Getter for #UBXRXM_EPH_POLL_OPT * \param svid * SV ID for which this Almanac Data * \note Valid Range: 1 .. 32 or 51, 56, 63. * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getRXM_PMREQ(UBXU4_t duration, UBXX4_t flags) * This function construct full buffer for #UBXRXM_PMREQ message. * \brief Getter for #UBXRXM_PMREQ * \param duration * Duration of the requested task * \note Set to 0 for infinite duration * \param flags * Task flags * \see #UBXPMREQFlags to fill this field * \return * Returns full UBXMsgBuffer including header and checksum */ /*! * \fn struct UBXMsgBuffer getRXM_SVSI(UBXU4_t iTOW, UBXI2_t week, UBXU1_t numVis, UBXU1_t numSV, struct UBXRXM_SVSI_PART* svsiPart, int svsiPartCount) * This function construct full buffer for #UBXRXM_SVSI message. * \brief Getter for #UBXRXM_SVSI * \param iTOW * GPS time of week of the navigation epoch. * See the description of iTOW (u-blox© official documentation) for details. * \param week * GPS week number of the navigation epoch * \param numVis * Number of visible satellites * \param numSV * Number of per-SV data blocks following * \param svsiPart * Pointer to variabl payload part * \param svsiPartCount * variabl payload parts count * \return * Returns full UBXMsgBuffer including header and checksum */ /*! @} */