Alexey Edelev vor 5 Jahren
Ursprung
Commit
52e88a3e6d
3 geänderte Dateien mit 74 neuen und 6 gelöschten Zeilen
  1. 27 2
      ubx.c
  2. 7 1
      ubxcfg.h
  3. 40 3
      ubxmessage.h

+ 27 - 2
ubx.c

@@ -634,7 +634,32 @@ extern UBXMsgBuffer getCFG_DOSC(UBXU1_t version, UBXU1_t numOsc, UBXCFG_DOSC_CFG
     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));
+    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;
 }
@@ -685,7 +710,7 @@ UBXMsgBuffer getCFG_INF(UBXCFG_INF_PART* infPart, int 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));
+    memcpy(msg->payload.CFG_INF.inf, infPart, infPartCount * sizeof(UBXCFG_INF_PART));
     completeMsg(&buffer, payloadSize);
     return buffer;
 }

+ 7 - 1
ubxcfg.h

@@ -65,7 +65,13 @@ extern UBXMsgBuffer getCFG_DAT_POLL();
 extern UBXMsgBuffer getCFG_DGNSS_POLL();
 extern UBXMsgBuffer getCFG_DGNSS(UBXU1_t dgnssMode);
 extern UBXMsgBuffer getCFG_DOSC_POLL();
-extern UBXMsgBuffer getCFG_DOSC(UBXU1_t version, UBXU1_t numOsc, UBXCFG_DOSC_CFG* oscCfg);
+extern UBXMsgBuffer getCFG_DOSC(UBXU1_t version,
+                                UBXU1_t numOsc,
+                                UBXCFG_DOSC_CFG* oscCfg);
+extern UBXMsgBuffer getCFG_ESRC_POLL();
+extern UBXMsgBuffer getCFG_ESRC(UBXU1_t version,
+                                UBXU1_t numSources,
+                                UBXCFG_ESRC_CFG* esrcCfg);
 extern UBXMsgBuffer getCFG_GNSS_POLL();
 extern UBXMsgBuffer getCFG_GNSS(UBXU1_t msgVer,
                                 UBXU1_t numTrkChHw,

+ 40 - 3
ubxmessage.h

@@ -348,7 +348,7 @@ typedef enum
 
 typedef enum
 {
-    isCalibrated = 1
+    UBXCFGDOSCisCalibrated = 1
 } UBXCFGDOSCFlags;
 
 typedef enum
@@ -367,6 +367,20 @@ typedef enum
     UBXCFGDOSC16bitDAC = 15
 } UBXCFGDOSCControlInterface;
 
+typedef enum
+{
+    UBXCFGESRCNone = 0,
+    UBXCFGESRCFrequency = 1,
+    UBXCFGESRCTime = 2,
+    UBXCFGESRCOscillatorFeedback = 3
+} UBXCFGESRCType;
+
+typedef enum
+{
+    UBXCFGESRCpolarity = 1,
+    UBXCFGESRCgnssUtc = 1 << 1
+} UBXCFGESRCFlags;
+
 typedef enum
 {
     //CFG_CFG message
@@ -455,7 +469,7 @@ typedef enum
     UBXNAV5PosMask = 1 << 4,
     UBXNAV5TimeMask = 1 << 5,
     UBXNAV5StaticHoldMask = 1 << 6,
-    UBXNAV5DgpsMask = 1 << 7,
+    UBXNAV5DgpsMask = 1 << 7
 } UBXNAV5Mask;
 
 typedef enum
@@ -669,7 +683,7 @@ typedef enum
     UBXSBASScanModePRN148 = 1 << 28,
     UBXSBASScanModePRN149 = 1 << 29,
     UBXSBASScanModePRN150 = 1 << 30,
-    UBXSBASScanModePRN151 = 1 << 31,
+    UBXSBASScanModePRN151 = 1 << 31
 } UBXSBASScanModes1;
 
 typedef enum
@@ -1119,6 +1133,28 @@ typedef struct {
     UBXCFG_DOSC_CFG cfg[0];
 } UBXCFG_DOSC;
 
+typedef struct {
+    UBXU1_t extInt;
+    UBXU1_t sourceType; //See UBXCFGESRCType to fill this field
+    UBXX2_t flags; //See UBXCFGESRCFlags to fill this field
+    UBXU4_t freq;
+    UBXU1_t reserved2[4];
+    UBXU4_t withTemp;
+    UBXU4_t withAge;
+    UBXU2_t timeToTemp;
+    UBXU2_t maxDevLifeTime;
+    UBXI4_t offset;
+    UBXU4_t offsetUncertainty;
+    UBXU4_t jitter;
+} UBXCFG_ESRC_CFG;
+
+typedef struct {
+    UBXU1_t version;
+    UBXU1_t numSources;
+    UBXU1_t reserved1[2];
+    UBXCFG_ESRC_CFG cfg[0];
+} UBXCFG_ESRC;
+
 //typedef struct {
     //No payload
 //} UBXCFG_GNSS_POLL;
@@ -2168,6 +2204,7 @@ typedef union
     UBXCFG_DAT_OUT CFG_DAT_OUT;
     UBXCFG_DGNSS CFG_DGNSS;
     UBXCFG_DOSC CFG_DOSC;
+    UBXCFG_ESRC CFG_ESRC;
     UBXCFG_GNSS CFG_GNSS;
     UBXCFG_INF_POLL CFG_INF_POLL;
     UBXCFG_INF CFG_INF;