Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: oldheating gps motorhome heating
Diff: udp/ntp/ntphdr.c
- Revision:
- 138:5ff0c7069300
diff -r cf6e7db0e985 -r 5ff0c7069300 udp/ntp/ntphdr.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/udp/ntp/ntphdr.c Sun Apr 07 18:36:42 2019 +0000
@@ -0,0 +1,43 @@
+#include <stdint.h>
+
+#include "net.h"
+
+static char* hdrPtrFlags (char* pPacket) { return pPacket + 0; } //1
+static char* hdrPtrStratum (char* pPacket) { return pPacket + 1; } //1
+static char* hdrPtrPoll (char* pPacket) { return pPacket + 2; } //1
+static char* hdrPtrPrecision (char* pPacket) { return pPacket + 3; } //1
+static char* hdrPtrRootDelay (char* pPacket) { return pPacket + 4; } //4
+static char* hdrPtrDispersion (char* pPacket) { return pPacket + 8; } //4
+ char* NtpHdrPtrRefIdentifier(char* pPacket) { return pPacket + 12; } //4
+static char* hdrPtrRefTimeStamp (char* pPacket) { return pPacket + 16; } //8
+static char* hdrPtrOriTimeStamp (char* pPacket) { return pPacket + 24; } //8
+static char* hdrPtrRecTimeStamp (char* pPacket) { return pPacket + 32; } //8
+static char* hdrPtrTraTimeStamp (char* pPacket) { return pPacket + 40; } //8
+const int NTP_HEADER_LENGTH = 48;
+
+
+uint8_t NtpHdrGetLI (char* pPacket) { return *hdrPtrFlags (pPacket) >> 6 ; }
+uint8_t NtpHdrGetVersion (char* pPacket) { return (*hdrPtrFlags (pPacket) >> 3) & 0x7; }
+uint8_t NtpHdrGetMode (char* pPacket) { return *hdrPtrFlags (pPacket) & 0x7; }
+uint8_t NtpHdrGetStratum (char* pPacket) { return *hdrPtrStratum (pPacket); }
+ int8_t NtpHdrGetPoll (char* pPacket) { return *hdrPtrPoll (pPacket); }
+ int8_t NtpHdrGetPrecision (char* pPacket) { return *hdrPtrPrecision (pPacket); }
+uint32_t NtpHdrGetRootDelay (char* pPacket) { uint32_t r; NetInvert32(&r, hdrPtrRootDelay (pPacket)); return r; }
+uint32_t NtpHdrGetDispersion (char* pPacket) { uint32_t r; NetInvert32(&r, hdrPtrDispersion (pPacket)); return r; }
+uint64_t NtpHdrGetRefTimeStamp(char* pPacket) { uint64_t r; NetInvert64(&r, hdrPtrRefTimeStamp(pPacket)); return r; }
+uint64_t NtpHdrGetOriTimeStamp(char* pPacket) { uint64_t r; NetInvert64(&r, hdrPtrOriTimeStamp(pPacket)); return r; }
+uint64_t NtpHdrGetRecTimeStamp(char* pPacket) { uint64_t r; NetInvert64(&r, hdrPtrRecTimeStamp(pPacket)); return r; }
+uint64_t NtpHdrGetTraTimeStamp(char* pPacket) { uint64_t r; NetInvert64(&r, hdrPtrTraTimeStamp(pPacket)); return r; }
+
+void NtpHdrSetLI (char* pPacket, uint8_t value) { char* p = hdrPtrFlags (pPacket); *p &= 0x3F; *p |= (value << 6); }
+void NtpHdrSetVersion (char* pPacket, uint8_t value) { char* p = hdrPtrFlags (pPacket); *p &= 0xC7; *p |= (value << 3); }
+void NtpHdrSetMode (char* pPacket, uint8_t value) { char* p = hdrPtrFlags (pPacket); *p &= 0xF8; *p |= value; }
+void NtpHdrSetStratum (char* pPacket, uint8_t value) { *hdrPtrStratum (pPacket) = value; }
+void NtpHdrSetPoll (char* pPacket, int8_t value) { *hdrPtrPoll (pPacket) = value; }
+void NtpHdrSetPrecision (char* pPacket, int8_t value) { *hdrPtrPrecision (pPacket) = value; }
+void NtpHdrSetRootDelay (char* pPacket, uint32_t value) { NetInvert32(hdrPtrRootDelay (pPacket), &value); }
+void NtpHdrSetDispersion (char* pPacket, uint32_t value) { NetInvert32(hdrPtrDispersion (pPacket), &value); }
+void NtpHdrSetRefTimeStamp(char* pPacket, uint64_t value) { NetInvert64(hdrPtrRefTimeStamp(pPacket), &value); }
+void NtpHdrSetOriTimeStamp(char* pPacket, uint64_t value) { NetInvert64(hdrPtrOriTimeStamp(pPacket), &value); }
+void NtpHdrSetRecTimeStamp(char* pPacket, uint64_t value) { NetInvert64(hdrPtrRecTimeStamp(pPacket), &value); }
+void NtpHdrSetTraTimeStamp(char* pPacket, uint64_t value) { NetInvert64(hdrPtrTraTimeStamp(pPacket), &value); }
\ No newline at end of file